MB_W_F - запись вещественного значения

Назначение.
Функциональный блок MB_W_F применяется для записи одного вещественного значения в пару последовательных регистров на Slave-устройстве. Используется функция Modbus с кодом 16 (Preset Multiple Registers).
Входные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
RUN
|
BOOLEAN
|
Управление работой блока:
|
|
ID_DRV
|
INTEGER
|
Идентификатор задачи связи Modbus-RTU MST/Modbus-TCP MST, через которую будет выполняться запись данных.
|
|
SLAVE
|
INTEGER
|
Сетевой адрес Slave-устройства по протоколу Modbus и порядок чтения байтов при 32-разрядном режиме обмена данными задается целым числом. Правила его формирования описаны далее в настояще разделе.
|
|
ADR
|
INTEGER
|
Modbus-адрес первого регистра их пары на Slave-устройстве. Особенности назначения modbus-адресов описаны в разделе 9.9.2.1 "Блок MB_R - Чтение группы данных".
|
|
VALUE
|
REAL
|
Записываемое значение пары регистров в формате с плавающей точкой.
|
Правила формирования целочисленного значения на входе SLAVE.
В младшем байте параметра кодируется сетевой адрес (целое число от 1 до 255), а во втором байте - порядок передачи байт в соответствии со значениями параметра ORDER, описанными в разделе 9.9.1.2 "MB_RTU_SLV - конфигурация связи по протоколу Modbus-RTU Slave".
Например, для 32-х разрядного режима работы с заменой байт (1-0-3-2) и адресом устройства 1, входной параметр SLAVE=1. Его битовая маска продемонстрирована на следующем изображении.

Блок настроен на обмен данными только в 32-х разрядном режиме, когда 32-битное вещественное значение передается на Slave-устройство и записывается в 2 последовательных 16-битных регистра, начиная с адреса ADR.
Выходные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
OK
|
BOOLEAN
|
Признак завершения операции:
|
|
FAULT
|
INTEGER
|
Код завершения операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
|
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_W_F(RUN, ID_DRV, SLAVE, ADR, VALUE);
//чтение признака и кода завершения операции
OK := Block.OK;
FAULT := Block.FAULT;
|
