Пока на входе enable
значение True функция начинает прослушивание интерфейса (настройка Интерфейс).
При получении команд в протоколе ModBus RTU устройство проверяет их на соответствие настройкам Функция, Сетевой номер, Адрес данных.
Если данные в команде верны, то функция формирует ответ согласно протоклу, после чего передает на выходы valueX
полученные значения.
Если принятые данные корректны и адресованы нужному получателю (настройка Сетевой адрес), но остальные параметры некорректны, то устройство сформирует ответ с кодом ошибки согласно протоклу обмена.
При работе функции используются буферы RXD и TXD
Для работы функции, в конфигурации устройства должен быть настроен соответствующий интерфейс:
Конфигурация > RS-232/RS-485 > Устройство X > Сomplex Events (асинхронный режим).
В меню функций | На схеме |
---|---|
![]() |
![]() |
Название | Тип значения | Описание |
---|---|---|
enable |
bool | Если True, то функция готова принимать команды |
Название | Тип значения | Описание |
---|---|---|
state |
int32 | Состояние: 0 – не активен; 1 – ожидание команды; 2 – чтение команды; 3 – чтение завершено; 4 – отправка ответа; -1 – интерфейс недоступен (не настроен). |
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.
Название | Описание |
---|---|
Количество входов | Настройка регулирует количество выходных линий valueX |
Интерфейс | Цифровой интерфейс, которым управляет функция. Если выбранный интерфейс не настроен, то функция сформирует ошибку state = -1 . |
Функция | Функция ModBus, с помощью которой можно записать данные: Регистры - работа с функциями 6 ( AO ) и 16 (AO );Дискреты - работа с функциями 5 ( DO ) и 15 (DO ).Более подробно о функциях можно прочитать в стате про ModBus RTU |
Сетевой номер (dec) | Сетевой номер эмулируемого датчика. В десятичном формате. |
Адрес данных | Адрес первого значения valueX |
Тип | Тип и размер значения для чтения и вывода на каждый выход valueX :uint8 – однобайтовое число без знака; int8 – однобайтовое число со знаком; uint16 – двухбайтовое без знака; int16 – двухбайтовое со знаком; int32/float – четырехбайтовое со знаком / вещественное. |
Порядок байт | Порядок байт, который будет использован при копировании данных из RXD буфера на выходы valueX . Например, RXD = [01,02,03,04] , Тип = int32.Младшим вперед: value = 0х04030201 value = 0х01020304 value = 0х02010403 |