Spec-Zone.ru › Qt

Класс QModbusServer

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

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

QModbusRtuSerialServer и QModbusTcpServer

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

Типы публичного доступа

Перечисление Option { DiagnosticRegister, ExceptionStatusOffset, DeviceBusy, AsciiInputDelimiter, ListenOnlyMode, …, 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

Сигналы

void dataWritten(QModbusDataUnit::RegisterType table, int address, int size)

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

virtual QModbusResponse processPrivateRequest(const QModbusPdu &request)
virtual QModbusResponse processRequest(const QModbusPdu &request)
virtual bool readData(QModbusDataUnit *newData) const
virtual bool writeData(const QModbusDataUnit &newData)

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

В сетях 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::DeviceIdentification 8 Физическое и функциональное описание сервера. QModbusDeviceIdentification

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

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

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

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

QModbusServer::QModbusServer(QObject *parent = nullptr)

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

[signal] void QModbusServer::dataWritten(QModbusDataUnit::RegisterType table, int address, int size)

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

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

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

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().

[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

Возвращает адрес этого экземпляра Modbus-сервера.

См. также 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::DeviceIdentification Устанавливает физическое и функциональное описание сервера. По умолчанию дополнительных данных идентификации устройства нет.
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::DeviceIdentification Возвращает физическое и функциональное описание сервера.
QModbusServer::UserOption Возвращает значение пользовательской опции.

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

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

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

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

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

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

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

Spec-Zone.ru

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