Функция принимает на входы valueX значения и пока на входе enable значение True функция начинает прослушивание интерфейса (настройка Интерфейс).
При получении запросов в протоколе ModBus RTU устройство проверяет их на соответствие настройкам Функция, Сетевой номер, Адрес данных.
Если данные в запросе верны, то функция формирует ответ согласно протоклу и с учетом настроек Тип и Порядок байт.
Если принятые данные корректны и адресованы нужному получателю (настройка Сетевой адрес), но остальные параметры некорректны, то устройство сформирует ответ с кодом ошибки согласно протоклу обмена.
При работе функции используются буферы RXD и TXD
Для работы функции, в конфигурации устройства должен быть настроен соответствующий интерфейс:
Конфигурация > RS-232/RS-485 > Устройство X > Сomplex Events (асинхронный режим).
| В меню функций | На схеме |
|---|---|
![]() |
![]() |
| Название | Тип значения | Описание |
|---|---|---|
enable |
bool | Если True, то функция готова отвечать на запросы |
value0 |
float, int32, bool | Значение для чтения 0 |
value1 |
float, int32, bool | Значение для чтения 1 |
| ... | ... | ... |
valueX |
float, int32, bool | Значение для чтения X. Количество входных линий, регулируется настройкой "Количество входов" |
Логика работы функции зависит от типа данных:
Если ко входу
valueподключена переменная с типом Float и настройка Тип = int32/float, то функция записывает данные в буфер по стандарту IEEE754. Такой способ необходимо использовать для значений, которые хранятся в формате Float (например, значение 12.6).Иначе функция записывает данные как Int32.
Конвертация выполняется автоматически при помощи скрытых функций FROM_FLOAT и TO_FLOAT.
| Название | Тип значения | Описание |
|---|---|---|
state |
int32 | Состояние: 0 – не активен; 1 – ожидание запроса; 2 – чтение запроса; 3 – чтение завершено; 4 – отправка ответа; -1 – интерфейс недоступен (не настроен). |
| Название | Описание |
|---|---|
| Количество входов | Настройка регулирует количество входных линий valueX |
| Интерфейс | Цифровой интерфейс, которым управляет функция. Если выбранный интерфейс не настроен, то функция сформирует ошибку state = -1. |
| Функция | Функция ModBus, с помощью которой могут считываться данные: Регистры - работа с функциями 03 ( AO) и 04 (AI);Дискреты - работа с функциями 01 ( DO) и 02 (DI).Более подробно о функциях можно прочитать в стате про ModBus RTU |
| Сетевой номер (dec) | Сетевой номер эмулируемого датчика. В десятичном формате. |
| Адрес данных | Адрес первого значения valueX |
| Тип | Тип и размер значения которое будет взято со входа valueX для ответа:uint8 – однобайтовое число без знака; int8 – однобайтовое число со знаком; uint16 – двухбайтовое без знака; int16 – двухбайтовое со знаком; int32/float – четырехбайтовое со знаком / вещественное. |
| Порядок байт | Порядок байт, который будет использован при копировании значений со входов valueX в TXD буфер. Например, value0 = 0x01020304, Тип = int32/float.Младшим вперед: TXD = Старшим вперед:[04,03,02,01]TXD = Старшим вперед (2 байта):[01,02,03,04]TXD = [02,01,04,03] |