Spec-Zone.ru › Qt 5.6

Класс QModbusPdu

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

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

QModbusRequest и QModbusResponse

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

Типы

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

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

QModbusPdu() = default
virtual ~QModbusPdu() = default
QByteArray data() const
qint16 dataSize() const
void decodeData(Args &&... data) const
void encodeData(Args... data)
ExceptionCode exceptionCode() const
FunctionCode functionCode() const
bool isException() const
bool isValid() const
void setData(const QByteArray &data)
virtual void setFunctionCode(FunctionCode code)
qint16 size() const

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

const quint8 ExceptionByte = 0x80

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

QModbusPdu(FunctionCode code, const QByteArray &data)
QModbusPdu(const QModbusPdu &other) = default
QModbusPdu & operator=(const QModbusPdu &other) = default

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

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

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

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

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

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

перечисление QModbusPdu::ExceptionCode

Это перечисление описывает все возможные ошибки, как определено кодами исключений 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::FunctionCode

Определяет код функции и неявный тип действия, требуемого от сервера. Не все устройства 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 (First-In-First-Out) регистров в удалённом устройстве.
QModbusPdu::EncapsulatedInterfaceTransport 0x2B См. Приложение А спецификации Modbus.
QModbusPdu::UndefinedFunctionCode 0x100 Не использовать.

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

[default] QModbusPdu::QModbusPdu()

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

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

Создаёт QModbusPdu с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Ожидается, что данные уже хранятся в формате big-endian.

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

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

[default] QModbusPdu::~QModbusPdu()

Удаляет QModbusPdu.

QByteArray QModbusPdu::data() const

Возвращает полезную нагрузку PDU, исключая код функции. Полезная нагрузка хранится в формате big-endian.

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

qint16 QModbusPdu::dataSize() const

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

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 операторы потоков не только добавляют необработанные данные, но также, например, размер, количество и т. д. для сложных типов.

void QModbusPdu::encodeData(Args... data)

Устанавливает полезную нагрузку в data. Данные преобразуются и хранятся в формате big-endian.

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

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

ExceptionCode QModbusPdu::exceptionCode() const

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

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. Ожидается, что данные уже хранятся в формате big-endian.

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

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

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

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

qint16 QModbusPdu::size() const

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

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

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

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

const quint8 QModbusPdu::ExceptionByte = 0x80

Переменная инициализирована значением 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/archives/qt-5.6/qmodbuspdu.html

Spec-Zone.ru

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