Spec-Zone.ru › Qt 5.6

Класс QModbusServer

Класс QModbusServer — интерфейс для приема и обработки запросов Modbus. Подробнее...

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

QModbusRtuSerialSlave и QModbusTcpServer

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

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

Перечисление Option { DiagnosticRegister, ExceptionStatusOffset, DeviceBusy, AsciiInputDelimiter, ..., UserOption }

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

QModbusServer(QObject *parent = nullptr)
bool data(QModbusDataUnit *newData) const
bool data(QModbusDataUnit::RegisterType table, quint16 address, quint16 *data) const
virtual bool processesBroadcast() const
int serverAddress() const
bool setData(const QModbusDataUnit &newData)
bool setData(QModbusDataUnit::RegisterType table, quint16 address, quint16 data)
virtual bool setMap(const QModbusDataUnitMap &map)
void setServerAddress(int serverAddress)
virtual bool setValue(int option, const QVariant &newValue)
virtual QVariant value(int option) const
  • 7 открытых функций унаследовано от QModbusDevice
  • 31 открытых функций унаследовано от QObject

Сигналы

void dataWritten(QModbusDataUnit::RegisterType register, int address, int size)
  • 2 сигнала унаследовано от QModbusDevice
  • 2 сигнала унаследовано от QObject

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

virtual QModbusResponse processPrivateRequest(const QModbusPdu &request)
virtual QModbusResponse processRequest(const QModbusPdu &request)
virtual bool readData(QModbusDataUnit *newData) const
virtual bool writeData(const QModbusDataUnit &newData)
  • 4 защищенных функции унаследовано от QModbusDevice
  • 9 защищенных функций унаследовано от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследовано от QObject
  • 11 статических открытых членов унаследовано от QObject

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

Класс QModbusServer — интерфейс для приема и обработки запросов Modbus.

В сетях Modbus может быть несколько серверов Modbus. Серверы Modbus читаются/записываются клиентом Modbus, представленным QModbusClient. QModbusServer взаимодействует с бэкендом Modbus, предоставляя пользователям удобный API.

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

перечисление QModbusServer::Option

Каждый сервер Modbus имеет набор связанных с ним значений, каждое со своим собственным параметром.

Общие параметры (и соответствующие типы):

Константа Значение Описание
QModbusServer::DiagnosticRegister 0 Регистр диагностики сервера. quint16
QModbusServer::ExceptionStatusOffset 1 Смещение байта состояния исключений сервера. quint16
QModbusServer::DeviceBusy 2 Флаг, сигнализирующий о том, что сервер занят обработкой команды программы длительного выполнения. quint16
QModbusServer::AsciiInputDelimiter 3 Разделитель сообщения Modbus ASCII. char
QModbusServer::ListenOnlyMode 4 Флаг для установки режима прослушивания только сервера. Эта функция обычно поддерживается только устройствами Modbus последовательного типа. bool
QModbusServer::ServerIdentifier 5 Идентификатор сервера, а не адрес сервера. quint8
QModbusServer::RunIndicatorStatus 6 Флаг активности сервера. quint8
QModbusServer::AdditionalData 7 Дополнительные данные сервера. QByteArray

Параметры пользователя:

Константа Значение Описание
QModbusServer::UserOption 0x100 Первый параметр, который может использоваться для целей, специфичных для пользователя.

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

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

QModbusServer::QModbusServer(QObject *parent = nullptr)

Конструктор сервера Modbus со заданным parent.

bool QModbusServer::data(QModbusDataUnit *newData) const

Возвращает значения в диапазоне регистров, заданном newData.

newData должен содержать допустимый тип регистра, начальный адрес и значение количества. Возвращаемый newData будет содержать значения регистров, связанные с заданным диапазоном.

Если newData содержит допустимый тип регистра, но отрицательный начальный адрес, возвращается вся карта регистров, а newData соответствующим образом размерен.

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

bool QModbusServer::data(QModbusDataUnit::RegisterType table, quint16 address, quint16 *data) const

Считывает данные, хранящиеся на сервере Modbus. Сервер Modbus имеет четыре таблицы (table), и каждая из них имеет уникальное поле address, которое используется для чтения data из желаемого поля. См. QModbusDataUnit::RegisterType для получения дополнительной информации о разных таблицах. Возвращает false если адрес находится вне диапазона карты или тип регистра даже не определен.

См. также QModbusDataUnit::RegisterType и setData().

Возвращает значение void QModbusServer::dataWritten(QModbusDataUnit::RegisterType register, int address, int size)

Этот сигнал излучается, когда клиент Modbus записал одно или несколько полей данных в сервер Modbus. Сигнал содержит информацию о записанных полях:

  • тип регистра, который был записан,
  • адрес первого поля, которое было записано,
  • и размер последовательных полей, которые были записаны, начиная с адреса.

Сигнал не излучается, когда поля, которые должны быть записаны, не изменились из-за отсутствия изменения значения.

[virtual protected] QModbusResponse QModbusServer::processPrivateRequest(const QModbusPdu &request)

Эта функция должна быть реализована пользовательскими серверами Modbus. Она вызывается функцией processRequest() в случае, если заданная request не является стандартным запросом Modbus.

Переопределение этой функции позволяет обрабатывать дополнительные коды функций и подкоды функций, не указанные в спецификации протокола Modbus Application Protocol 1.1b. Реализации должны повторно вызвать эту функцию, чтобы гарантировать, что для всех неизвестных кодов функций, которые не обрабатываются пользовательской реализацией Modbus, возвращается ответ об исключении.

Эта реализация по умолчанию возвращает QModbusExceptionResponse с кодом функции request и кодом ошибки, установленным как «незаконная функция».

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

[virtual protected] QModbusResponse QModbusServer::processRequest(const QModbusPdu &request)

Обрабатывает запрос клиента Modbus request и возвращает ответ Modbus. Эта функция возвращает QModbusResponse или QModbusExceptionResponse в зависимости от характера запроса.

Реализация по умолчанию этой функции обрабатывает все стандартные коды функций Modbus, как определено в спецификации протокола Modbus Application Protocol 1.1b. Все остальные коды функций Modbus, не включённые в спецификацию, передаются функции processPrivateRequest().

Стандартная обработка запросов по стандартным кодам функций Modbus может быть переопределена путём пере реализации этой функции. Переопределение должно обрабатывать соответствующий тип запроса и возвращать соответствующий ответ QModbusResponse. Типичной причиной может быть фильтрация запросов кода функций для значений данных для ограничения доступа к чтению/записи и кодов функций, нежелательных в конкретных реализациях, таких как диагностика последовательного канала в сетях Ethernet или транспортных слоях Modbus Plus.

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

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

[virtual] bool QModbusServer::processesBroadcast() const

Подклассы должны реализовать эту функцию, если транспортный уровень должен обрабатывать широковещательные запросы. Тогда реализация должна вернуть true если текущий обрабатываемый запрос является широковещательным запросом; в противном случае false. Реализация по умолчанию всегда возвращает false.

Примечание: Значение возврата этой функции имеет смысл только изнутри processRequest() или processPrivateRequest(), в противном случае она может только сообщить, что последний обработанный запрос был широковещательным запросом.

[virtual protected] bool QModbusServer::readData(QModbusDataUnit *newData) const

Считывает значения в диапазоне регистров, заданном newData, и записывает данные обратно в newData. Возвращает true при успехе или false если newData 0, диапазон newData выходит за пределы диапазона карты или registerType() не существует.

Примечание: Подклассы, которые реализуют чтение из другого хранилища, отличного от стандартного, также должны реализовать setMap() и writeData().

См. также setMap() и writeData().

int QModbusServer::serverAddress() const

Возвращает адрес этой инстанции сервера Mobus.

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

bool QModbusServer::setData(const QModbusDataUnit &newData)

Записывает newData в карту сервера Modbus. Возвращает false если диапазон newData выходит за пределы диапазона карты.

Если вызов был успешным, излучается сигнал dataWritten(). Обратите внимание, что сигнал не излучается, когда адресной регистр не изменился. Это может произойти, когда newData содержит точно такие же значения, что и регистр уже. Тем не менее, эта функция возвращает true в таких случаях.

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

bool QModbusServer::setData(QModbusDataUnit::RegisterType table, quint16 address, quint16 data)

Записывает данные в сервер Modbus. Сервер Modbus имеет четыре таблицы (table) и каждая имеет уникальное поле address, которое используется для записи data в нужное поле. Возвращает false если адрес выходит за пределы диапазона карты.

Если вызов был успешным, излучается сигнал dataWritten(). Обратите внимание, что сигнал не излучается, когда data не изменилось. Тем не менее, эта функция возвращает true в таких случаях.

См. также QModbusDataUnit::RegisterType, data() и dataWritten().

[virtual] bool QModbusServer::setMap(const QModbusDataUnitMap &map)

Устанавливает зарегистрированную структуру карты для запросов от других клиентов ModBus в map. Значения регистров инициализируются нулём. Возвращает true при успехе; в противном случае false.

Если эта функция не вызывается до подключения, настраивается регистр по умолчанию с нулевыми записями.

Примечание: Вызов этой функции отбрасывает любые значения регистров, которые были установлены ранее.

void QModbusServer::setServerAddress(int serverAddress)

Устанавливает адрес для этой инстанции сервера Modbus в serverAddress.

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

[virtual] bool QModbusServer::setValue(int option, const QVariant &newValue)

Устанавливает newValue для option и возвращает true при успехе; false в противном случае.

Примечание: Если тип, связанный с параметром, quint8 или quint16 и тип newValue больше, данные будут усечены или преобразование завершится неудачей.

Ключ Описание
QModbusServer::DiagnosticRegister Устанавливает диагностический регистр сервера в кодировке, специфичной для устройства, в значение newValue. Значение по умолчанию — 0x0000. Значения битов регистра требуют документации, специфичной для устройства.
QModbusServer::ExceptionStatusOffset Устанавливает смещение байта статуса исключения сервера в значение newValue, которое представляет собой абсолютный адрес смещения в обмотках (регистр 0x). Таблица регистров Modbus начинается с 0x0000h. Значение по умолчанию — 0x0000, используя обмотки статуса исключения, аналогичные процессорам Modicon 984 (обмотки 1-8).

Функция возвращает true если регистр обмоток содержит 8 битов, необходимых для хранения и извлечения обмоток статуса, в противном случае false.

QModbusServer::DeviceBusy Устанавливает флаг, сигнализирующий о том, что сервер занят обработкой команды программы с длительной продолжительностью. Допустимые значения — 0x0000 (не занят) и 0xffff (занят). Значение по умолчанию — 0x0000.
QModbusServer::AsciiInputDelimiter Значение newValue становится разделителем конца сообщения для будущих сообщений Modbus ASCII. Значение по умолчанию — \n.
QModbusServer::ListenOnlyMode Устанавливает состояние прослушивания только сервера в значение newValue. Если режим прослушивания только установлен в true, сообщения отслеживаются, но ответ не будет отправлен. Значение по умолчанию — false.
QModbusServer::ServerIdentifier Устанавливает идентификатор производителя сервера в значение newValue. Возможные значения находятся в диапазоне от 0x00 до 0xff. Значение по умолчанию — 0x0a.
QModbusServer::RunIndicatorStatus Устанавливает статус индикатора запуска сервера в значение newValue. Эти данные используются дополнительно функцией кода QModbusPdu::ReportServerId. Допустимые значения — 0x00 (ВЫКЛ) и 0xff (ВКЛ). Значение по умолчанию — 0xff (ВКЛ).
QModbusServer::AdditionalData Устанавливает дополнительные данные сервера в значение newValue. Эти данные используются дополнительно функцией кода QModbusPdu::ReportServerId. Максимальный размер данных не должен превышать 249 байт, чтобы соответствовать ограничениям размера сообщения ответа. Значение по умолчанию — Qt Modbus Server.
QModbusServer::UserOption Устанавливает значение пользовательского параметра в newValue.

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

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

[virtual] QVariant QModbusServer::value(int option) const

Возвращает значение для option или недействительное значение QVariant, если параметр не задан.

Параметр Описание
QModbusServer::DiagnosticRegister Возвращает значение диагностического регистра сервера. Диагностический регистр содержит специфичные для устройства данные, где каждый бит имеет определенное значение.
QModbusServer::ExceptionStatusOffset Возвращает адрес смещения байта статуса исключения в регистре обмоток.
QModbusServer::DeviceBusy Возвращает флаг, сигнализирующий о том, занят ли сервер обработкой команды программы с длительной продолжительностью.
QModbusServer::AsciiInputDelimiter Возвращает разделитель конца сообщения сообщений Modbus ASCII.
QModbusServer::ListenOnlyMode Возвращает состояние прослушивания только сервера. Сообщения отслеживаются, но ответ не будет отправлен.
QModbusServer::ServerIdentifier Возвращает код идентификатора производителя сервера. Это может быть произвольное значение в диапазоне от 0x00 до 0xff.
QModbusServer::RunIndicatorStatus Возвращает статус индикатора запуска сервера. Эти данные используются дополнительно функцией кода QModbusPdu::ReportServerId.
QModbusServer::AdditionalData Возвращает дополнительные данные сервера. Эти данные используются дополнительно функцией кода QModbusPdu::ReportServerId.
QModbusServer::UserOption Возвращает значение пользовательского параметра.

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

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

[virtual protected] bool QModbusServer::writeData(const QModbusDataUnit &newData)

Записывает newData в карту сервера Modbus. Возвращает true при успехе или false если диапазон newData находится за пределами диапазона карты или registerType() не существует.

Примечание: Подклассы, которые реализуют запись в другой хранилище, отличном от стандартного, также должны реализовать setMap() и readData(). Сигнал dataWritten() также должен быть выпущен внутри реализации функций.

См. также setMap(), readData() и dataWritten().

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

Spec-Zone.ru

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