Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

MB_W_H - запись целочисленного значения


Назначение.
Функциональный блок MB_W_H применяется для записи одного целочисленного значения на Slave-устройстве. При работе в 16-разрядном режиме обмена данными используется modbus-функция с кодом 6 (Preset Single Register) для записи в один 16-битный регистр хранения, а при 32-разрядном режиме modbus-функция 16 (Preset Multiple Registers) для записи пары последовательных регистров. Выбор режима определяется входным параметром SLAVE.
 
Входные параметры:
Параметр
Тип данных
Описание
RUN
BOOLEAN
Управление работой блока:
  • RUN=TRUE - запуск блока и передача в задачу связи MB_RTU_MST/MB_TCP_MST команды на запись данных на Slave-устройство;
  • RUN=FALSE  - остановка выполнения блока.
ID_DRV
INTEGER
Идентификатор задачи связи Modbus-RTU MST/Modbus-TCP MST, через которую будет выполняться запись данных.
SLAVE
INTEGER
Сетевой адрес Slave-устройства по протоколу Modbus и порядок чтения байтов задается целым числом. Правила его формирования описаны далее в настояще разделе.
ADR
INTEGER
Modbus-адрес переменной на Slave-устройстве, в которую будет записано значение VALUE. Особенности назначения modbus-адресов описаны в разделе 9.9.2.1 "Блок MB_R - Чтение группы данных".
VALUE
REAL
Записываемое целочисленное значение.
 
Правила формирования целочисленного значения на входе SLAVE.
В младшем байте параметра кодируется сетевой адрес (целое число от 1 до 255), а во втором байте кодируется режим обмена данными (16 или 32 разрядный) в соответствии со значениями параметра ORDER, описанными в разделе 9.9.1.2 "MB_RTU_SLV - конфигурация связи по протоколу Modbus-RTU Slave".
Например, для 32-х разрядного режима работы с заменой байт (1-0-3-2) и адресом устройства 1, входной параметр SLAVE=1. Его битовая маска продемонстрирована на следующем изображении.
А для беззнакового 16-разрядного режима работы с заменой байт и адресом устройства 5, входной параметр SLAVE=1537. Его битовая маска продемонстрирована на следующем изображении.
По умолчанию установлен 32-х разрядный режим, когда 32-битное целочисленное значение передается на Slave-устройство и записывается в 2 последовательных 16-битных регистра, начиная с адреса ADR.
Если установлен 16-разрядный режим, то из 32-битной целочисленной переменной на Slave-устройство будет передано только 16 младших бит для записи в 16-битный регистр с адресом ADR. В таком случае потеря двух старших байт переменной может привести к искажению передаваемых данных.
 
Выходные параметры:
Параметр
Тип данных
Описание
OK
BOOLEAN
Признак завершения операции:
  • READY=FALSE - когда обнаружена ошибка во входных параметрах блока, запрос не направляется;
  • READY=TRUE - выставляется сразу после направления запроса, независимо от его результатов.
FAULT
INTEGER
Код завершения операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_W_H(RUN, ID_DRV, SLAVE, ADR, VALUE);
//чтение признака и кода завершения операции
OK := Block.OK;
FAULT := Block.FAULT;