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

MB_TCP_MST - конфигурация Modbus TCP Master


Назначение.
Функциональный блок MB_TCP_MST применяется для настройки и запуска задачи связи по протоколу Modbus-TCP в режиме Master.
Альтернативой использованию блока MB_TCP_MST является добавление и настройка задачи связи "Modbus-TCP Master" через дерево конфигурации. Подробнее в разделе "Управление конфигурацией → Внешние коммуникации → Задачи связи Modbus → Настройка Modbus через дерево конфигурации" документа "Unimod PRO 2. Руководство пользователя". 
 
Входные параметры:
Параметр
Тип данных
Описание
RUN
BOOLEAN
  • RUN=TRUE - запуск блока и инициализация задачи связи;
  • RUN=FALSE - остановка блока и задачи связи.
ID_DRV
INTEGER
Идентификатор задачи связи. Уникальное в пределах задач modbus-связи целое число, которое передается на соответствующий вход функциональных блоков чтения или записи для их привязки к конкретной задаче связи.
IP_REMOTE
MESSAGE
IP-адрес удаленного Slave-устройства передается в виде строки в формате Ipv4 и используется для идентификации Slave-устройства в сети при направлении запроса
PORT_REMOTE
INTEGER
Уникальный номер TCP-порта удаленного Slave-устройства в диапазоне от 502 до 65535, используется для определения входящего порта на удаленном Slave-устройстве. Должен совпадать с номером локального TCP порта в соответствующей задаче связи Slave-устройств
PARAM
INTEGER
Настройка режима синхронности выполнения операции и используемой при передаче данных кодировки:
  • 0 - асинхронный запрос в двоичном формате;
  • 1 - синхронный запрос в двоичном формате;
  • 8 - асинхронный запрос с ASCII-кодировкой;
  • 9 - синхронный запрос с ASCII-кодировкой.
TOUT
INTEGER
Время ожидания ответа от удаленного Slave-устройства в миллисекундах. При отсутствии ответа в указанный период, запрос отправляется повторно.
DELAY
INTEGER
Задержка между запросами в миллисекундах, по истечении которой будет отправлен очередной запрос на Slave-устройство. При нулевом значении, следующий запрос будет отправлен сразу после получения ответа.
 
Выходные параметры:
Параметр
Тип данных
Описание
OK
BOOLEAN
Признак завершения асинхронной операции:
  • OK=true - при успешном завершении операции и отсутствии ошибок;
  • OK=false - при возникновении ошибок.
FAULT
INTEGER
Код ошибки по результатам выполнения операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
 
Описание алгоритма.
Настройки задачи связи передаются в блок через входные параметры, а их изменение постоянно отслеживается блоком. Поэтому, для изменения настроек не требуется перезапускать выполнение блока, достаточно в процессе работы изменить значение входного параметра, и задача связи будет незамедлительно переинициализирована. При этом во взаимосвязанных блоках чтения или записи могут возникнуть ошибки обмена по протоколу Modbus, если в момент изменения настроек были прерваны передача запроса или прием ответа.
Для обмена данными со Slave-устройством совместно с блоком MB_TCP_MST необходимо использовать системные функциональные блоки чтения или записи данных. Название таких блоков начинается с префикса «MB_*», буква R в названии блока маркирует блоки чтения, буква W – блоки записи. Для взаимосвязи между блоками используется параметр ID_DRV, одинаковое значение которого передается на оба задействованных блока, как показано на следующем изображении. К одной задаче связи MB_TCP_MST может быть привязано произвольное количество блоков чтения или записи.
По умолчанию осуществляется обмен не закодированными двоичными данными в асинхронном режиме - после отправки запроса управление переходит к следующему оператору приложения, не дожидаясь ответа на запрос.
При необходимости можно закодировать передаваемые данные символами ASCII в шестнадцатеричном формате и/или обмениваться данными в синхронном режиме. Для этого передайте одно из допустимых вышеуказанных значений в параметр PARAM. В синхронном режиме вызванный функциональный блок после выполнения modbus-запроса не возвращает управление технологическому приложению до получения ответа на запрос и окончательного завершения операции.
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_TCP_MST(RUN, ID_DRV, IP_REMOTE, PORT_REMOTE, PARAM, TOUT, DELAY);
//чтение признака завершения операции и кода ошибки
OK := Block.OK;
FAULT := Block.FAULT;