MB_RTU_MST - конфигурация Modbus-RTU Master

Назначение.
Функциональный блок MB_RTU_MST применяется для настройки и запуска задачи связи по протоколу Modbus-RTU в режиме Master.
Альтернативой использованию блока MB_RTU_MST является добавление и настройка задачи связи "Modbus-RTU Master" через дерево конфигурации. Подробнее в разделе "Управление конфигурацией → Внешние коммуникации → Задачи связи Modbus → Настройка Modbus через дерево конфигурации" документа "Unimod PRO 2. Руководство пользователя".
|
Входные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
RUN
|
BOOLEAN
|
Управление работой блока:
|
|
ID_DRV
|
INTEGER
|
Уникальный идентификатор задачи связи Modbus, который передается на соответствующий вход функциональных блоков чтения или записи для их привязки к задаче связи.
|
|
PORT
|
INTEGER
|
Номер физического COM-порта на контроллере, используемого для обмена данными. Одна задача связи использует один физический COM-порт, поэтому для двусторонней передачи данных используются минимум два COM-порта: один на вход, другой на выход. Количество доступных соединений по протоколу Modbus-RTU ограничивается количеством COM-портов контроллера.
|
|
RATE
|
INTEGER
|
Поддерживается скорость передачи данных в бит/с: 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600 и 115200. Диапазон поддерживаемых значений зависит от типа мастер-модуля и описан в его руководстве по эксплуатации.
|
|
TOUT
|
INTEGER
|
Время в миллисекундах, в течение которого ожидается ответ от удаленного Slave-устройства. При отсутствии ответа в указанный период, запрос отправляется повторно.
|
|
DELAY
|
INTEGER
|
Пауза между запросами в миллисекундах, по истечении которой будет отправлен очередной запрос на Slave-устройство. При нулевом значении следующий запрос будет отправлен сразу после получения ответа.
|
|
PARITY
|
INTEGER
|
Количество стоповых битов и режим контроля четности задаются целым числом:
|
|
PARAM
|
INTEGER
|
Режим синхронности операции и используемая кодировка при передаче данных задаются целым числом:
|
Выходные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
OK
|
BOOLEAN
|
Признак завершения асинхронной операции:
|
|
FAULT
|
INTEGER
|
Код ошибки по результатам завершения операции, список возможных кодов ошибок описан в конце настоящего раздела.
|
Описание алгоритма.
Настройки задачи связи передаются в блок через входные параметры, а их изменение постоянно отслеживается блоком. Поэтому, для изменения настроек не требуется перезапускать выполнение блока, достаточно в процессе работы изменить значение входного параметра, и задача связи будет незамедлительно переинициализирована. При этом во взаимосвязанных блоках чтения или записи могут возникнуть ошибки обмена по протоколу Modbus, если в момент изменения настроек были прерваны передача запроса или прием ответа.
Для организации обмена данными со Slave-устройством совместно с блоком MB_RTU_MST необходимо использовать один из системных функциональных блоков чтения или записи данных. Название таких блоков начинается с префикса «MB_*», буква R в названии блока маркирует блоки чтения, буква W – блоки записи. Для взаимосвязи между блоками используется параметр ID_DRV, одинаковое значение которого передается на оба задействованных блока, как показано на следующем изображении. К одной задаче связи может быть привязано произвольное количество блоков чтения или записи.

По умолчанию осуществляется обмен не закодированными двоичными данными в асинхронном режиме - после отправки запроса управление переходит к следующему оператору приложения, не дожидаясь ответа на запрос.
При необходимости можно закодировать передаваемые данные символами ASCII в шестнадцатеричном формате и/или обмениваться данными в синхронном режиме. Для этого передайте одно из допустимых вышеуказанных значений в параметр PARAM. В синхронном режиме вызванный функциональный блок после выполнения modbus-запроса не возвращает управление технологическому приложению до получения ответа на запрос и окончательного завершения операции.
Скорость передачи и кодировка передаваемых данных, количество стоповых битов и режим контроля четности должны совпадать на передающем и принимающем устройствах.
|
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_RTU_MST(true, 3, 1, 115200, 0, 1, 1000, 0);
//чтение выходных параметров
OK := Block.OK;
FAULT := Block.FAULT;
|
Коды ошибок на выходе FAULT.
Коды ошибок, возникающие при инициализации задачи связи:
Когда задача связи проинициализирована успешно, но от удаленного Slave-устройства поступил ответ-исключение, код ошибки формируется сложением числа 200 с кодом ошибки по спецификации Modbus:
|
