Spec-Zone.ru › Qt

Класс QModbusPdu

QModbusPdu — это абстрактный контейнерный класс, содержащий код функции и полезную нагрузку, хранящиеся внутри Modbus ADU. Подробнее...

Заголовок: #include <QModbusPdu>
qmake: QT += serialbus
С момента: Qt 5.8
Наследуется:

QModbusRequest и QModbusResponse

  • Список всех членов, включая унаследованные

Открытые типы

перечисление КодИсключения { НезаконнаяФункция, НезаконныйАдресДанных, НезаконноеЗначениеДанных, НеисправностьУстройстваСервера, Подтверждение, …, РасширенноеИсключение }
перечисление КодФункции { Недействительный, ЧтениеОбмоток, ЧтениеДискретныхВходов, ЧтениеРегистровЗадержания, ЧтениеРегистровВхода, …, НеопределенныйКодФункции }

Открытые функции

QModbusPdu()
виртуальный ~QModbusPdu()
QByteArray data() const
qint16 размерДанных() const
void decodeData(Args &&... data) const
void encodeData(Args... data)
QModbusPdu::КодИсключения кодИсключения() const
QModbusPdu::КодФункции кодФункции() const
bool исключение() const
bool действительно() const
void установитьДанные(const QByteArray &data)
виртуальный void установитьКодФункции(QModbusPdu::КодФункции code)
qint16 размер() const

Статические открытые члены

const quint8 БайтИсключения

Защищенные функции

QModbusPdu(const QModbusPdu &other)
QModbusPdu(QModbusPdu::КодФункции code, const QByteArray &data)
QModbusPdu & operator=(const QModbusPdu &other)

Связанные нечлены

QDebug operator<<(QDebug debug, const QModbusPdu &pdu)
QDataStream & operator<<(QDataStream &stream, const QModbusPdu &pdu)

Подробное описание

Класс предоставляет доступ к сырым пакетам протокола Modbus, как определено в спецификации протокола Modbus Application Protocol 1.1b.

Документация по типам членов

перечисление QModbusPdu::КодИсключения

Это перечисление описывает все возможные ошибки, как определено кодами исключений Modbus. Они устанавливаются сервером после проверки соответствующих условий ошибки в ответе на запрос и должны быть декодированы клиентом для обработки кода исключения.

Константа Значение Описание
QModbusPdu::IllegalFunction 0x01 Код функции не поддерживается устройством.
QModbusPdu::IllegalDataAddress 0x02 Полученный адрес данных в запросе не является допустимым адресом для Modbus-сервера.
QModbusPdu::IllegalDataValue 0x03 Содержащееся значение в поле данных запроса не является допустимым значением для Modbus-сервера.
QModbusPdu::ServerDeviceFailure 0x04 Произошла невосстановимая ошибка во время попытки сервером выполнить затребованное действие.
QModbusPdu::Acknowledge 0x05 Специализированное использование в сочетании с командами программирования.
QModbusPdu::ServerDeviceBusy 0x06 Сервер занят обработкой команды программы длительного действия.
QModbusPdu::NegativeAcknowledge 0x07 Сервер не может выполнить функцию программы, полученную в запросе. Этот код возвращается для неудачного запроса программирования. Клиент должен запросить диагностическую или ошибочную информацию у сервера.
QModbusPdu::MemoryParityError 0x08 Указывает, что расширенная область файла не прошла проверку на согласованность. Используется в сочетании с кодами функций 20 и 21. Код исключения не относится к каким-либо настройкам четности линии передачи, а только к внутренней памяти сервера записей файла.
QModbusPdu::GatewayPathUnavailable 0x0A Указывает, что шлюз не смог выделить внутренний путь связи от входного порта к выходному порту для обработки запроса.
QModbusPdu::GatewayTargetDeviceFailedToRespond 0x0B Указывает, что от целевого устройства за шлюзом не получен ответ. Обычно это означает, что целевое устройство не подключено к сети.
QModbusPdu::ExtendedException 0xFF Это расширенное исключение в соответствии со спецификацией Modbus. Обычно этот код используется для описания исключения, которое в противном случае описывается более подробно.

перечисление QModbusPdu::КодФункции

Определяет код функции и неявный тип действия, требуемого от сервера. Не все Modbus-устройства могут обрабатывать тот же набор кодов функций.

Константа Значение Описание
QModbusPdu::Invalid 0x00 Установлено по умолчанию конструктором, не использовать.
QModbusPdu::ReadCoils 0x01 Запрашивает состояние одного или нескольких катушек устройства.
QModbusPdu::ReadDiscreteInputs 0x02 Запрашивает состояние одного или нескольких входных регистров устройства.
QModbusPdu::ReadHoldingRegisters 0x03 Запрашивает состояние одного или нескольких регистров хранения значений устройства.
QModbusPdu::ReadInputRegisters 0x04 Запрашивает состояние одного или нескольких входных регистров значений устройства.
QModbusPdu::WriteSingleCoil 0x05 Запрос на запись одной катушки на устройстве.
QModbusPdu::WriteSingleRegister 0x06 Запрос на запись одного регистра хранения на устройстве.
QModbusPdu::ReadExceptionStatus 0x07 Запрашивает состояние восьми выходов статуса исключений на устройстве.
QModbusPdu::Diagnostics 0x08 Используется для предоставления серии тестов для проверки системы связи клиент-сервер или проверки внутренних
QModbusPdu::GetCommEventCounter 0x0B Запрос слова состояния и счётчика событий от счётчика событий связи устройства.
QModbusPdu::GetCommEventLog 0x0C Запрос слова состояния, счётчика событий, счётчика сообщений и поля байтов событий от устройства.
QModbusPdu::WriteMultipleCoils 0x0F Запрос на запись одной или нескольких катушек на устройстве.
QModbusPdu::WriteMultipleRegisters 0x10 Запрос на запись одного или нескольких регистров хранения на устройстве.
QModbusPdu::ReportServerId 0x11 Запрашивает описание типа, текущее состояние и другую информацию, специфичную для устройства.
QModbusPdu::ReadFileRecord 0x14 Запрос чтения записи файла.
QModbusPdu::WriteFileRecord 0x15 Запрос записи записи файла.
QModbusPdu::MaskWriteRegister 0x16 Запрос изменения содержимого указанного регистра хранения с помощью комбинации маски ИЛИ или И, и текущего содержимого регистра.
QModbusPdu::ReadWriteMultipleRegisters 0x17 Запрос состояния одного или нескольких регистров хранения и одновременной записи одного или нескольких регистров хранения на устройстве.
QModbusPdu::ReadFifoQueue 0x18 Запрос чтения содержимого очереди «первый вошёл — первый вышел» (FIFO) регистра в удалённом устройстве.
QModbusPdu::EncapsulatedInterfaceTransport 0x2B См. Приложение А спецификации Modbus.
QModbusPdu::UndefinedFunctionCode 0x100 Не использовать.

Документация по функциям-членам

[protected] QModbusPdu::QModbusPdu(const QModbusPdu &other)

Создаёт QModbusPdu, являющийся копией other.

[protected] QModbusPdu::QModbusPdu(QModbusPdu::FunctionCode code, const QByteArray &data)

Создаёт QModbusPdu с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Данные предполагается уже хранятся в порядке байт большого эндиана.

QModbusPdu::QModbusPdu()

Создаёт невалидный QModbusPdu.

[protected] QModbusPdu &QModbusPdu::operator=(const QModbusPdu &other)

Создаёт копию other и присваивает её этому объекту QModbusPdu.

[virtual] QModbusPdu::~QModbusPdu()

Удаляет QModbusPdu.

QByteArray QModbusPdu::data() const

Возвращает полезную нагрузку PDU, за исключением кода функции. Полезная нагрузка хранится в порядке байт большого эндиана.

См. также setData().

qint16 QModbusPdu::dataSize() const

Возвращает размер данных PDU, за исключением кода функции.

template <typename Args> void QModbusPdu::decodeData(Args &&... data) const

Преобразует полезную нагрузку в порядок байт хоста и считывает её в data. Данные могут быть списком аргументов переменной длины.

QModbusResponsePdu response(QModbusPdu::ReportServerId);
response.encodeData(quint8(0x02), quint8(0x01), quint8(0xff));
quint8 count, id, run;
response.decodeData(&count, &id, &run);

Примечание: Использование ограничено quint8 и quint16 только. Это связано с тем, что QDataStream операторы потока не только будут добавлять сырые данные, но также, например, размер, счёт и т.д. для сложных типов.

template <typename Args> void QModbusPdu::encodeData(Args... data)

Устанавливает полезную нагрузку в data. Данные преобразуются и хранятся в порядке байт большого эндиана.

QModbusRequestPdu request(QModbusPdu::ReadCoils);
// starting address and quantity of coils
request.encodeData(quint16(0x0c), quint16(0x0a));

Примечание: Использование ограничено quint8 и quint16 только. Это связано с тем, что QDataStream операторы потока не только будут добавлять сырые данные, но также, например, размер, счёт и т.д. для сложных типов.

QModbusPdu::ExceptionCode QModbusPdu::exceptionCode() const

Возвращает код исключения ответа.

QModbusPdu::FunctionCode QModbusPdu::functionCode() const

Возвращает код функции PDU.

См. также setFunctionCode().

bool QModbusPdu::isException() const

Возвращает true, если PDU содержит код исключения; в противном случае false.

bool QModbusPdu::isValid() const

Возвращает true, если PDU валиден; в противном случае false.

PDU считается валидным, если код сообщения находится в диапазоне от 1 до 255 в десятичной системе, а составной размер PDU (код функции + данные) не превышает 253 байта. Установленный по умолчанию PDU невалиден.

void QModbusPdu::setData(const QByteArray &data)

Устанавливает полезную нагрузку функции PDU в data. Данные предполагается уже хранятся в порядке байт большого эндиана.

См. также data().

[virtual] void QModbusPdu::setFunctionCode(QModbusPdu::FunctionCode code)

Устанавливает код функции PDU в code.

См. также functionCode().

qint16 QModbusPdu::size() const

Возвращает полный размер PDU, включая код функции и размер данных.

Документация по переменным-членам

const quint8 QModbusPdu::ExceptionByte

Переменная инициализируется значением 0x80.

Исключения сообщаются в определённом формате пакета. Клиенту-запрашивателю возвращается код функции, равный исходному коду функции, за исключением того, что его старший бит установлен. Это эквивалентно добавлению 0x80 к значению исходного кода функции.

Это поле может использоваться для маскировки бита исключения в поле кода функции в сыром пакете Modbus.

Связанные нечлены

QDebug operator<<(QDebug debug, const QModbusPdu &pdu)

Записывает Modbus pdu в поток debug.

QDataStream &operator<<(QDataStream &stream, const QModbusPdu &pdu)

Записывает pdu в stream и возвращает ссылку на поток.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qmodbuspdu.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API