MB_TCP_SLV - конфигурация Modbus TCP Slave

Назначение.
Функциональный блок MB_TCP_SLV применяется для настройки и запуска задачи связи по протоколу Modbus-TCP в режиме Slave.
Альтернативой использованию блока MB_TCP_SLV является добавление и настройка задачи связи "Modbus-TCP Slave" через дерево конфигурации. Подробнее в разделе "Управление конфигурацией → Внешние коммуникации → Задачи связи Modbus → Настройка Modbus через дерево конфигурации" документа "Unimod PRO 2. Руководство пользователя".
|
Входные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
RUN
|
BOOLEAN
|
Управление работой блока:
|
|
PORT
|
INTEGER
|
Номер локального TCP-порта, через который Slave-устройство будет ожидать входящие запросы от Master-устройства. Должен совпадать с номером удаленного TCP-порта, указанным в соответствующей задачи связи Master-устройства.
|
|
SLAVE
|
INTEGER
|
Сетевой адрес Slave-устройства по протоколу Modbus задается целым числом от 1 до 255. На Master-устройстве данный адрес передается на вход Slave блока чтения или записи для указания адресата запроса.
|
|
ORDER
|
INTEGER
|
Порядок передачи байт задается целым числом. Поддерживаемые значения описаны далее в настоящем разделе.
|
|
PARAM
|
INTEGER
|
Режим синхронности выполнения операции, кодировка при передаче данных и разрешение на обмен данными с любым из зарезервированных мастер-модулей задаются целым числом. Доступные для выбора значения описаны далее в настоящем разделе.
|
|
TPKT
|
INTEGER
|
Время обнаружения обрыва (окончания) пакета - период в миллисекундах между поступающими байтами одного запроса, если в указанный период очередной байт запроса не поступил, диагностируется обрыв запроса. При нулевом периоде диагностика не проводится.
|
|
DELAY
|
INTEGER
|
Задержка в миллисекундах между поступления запроса и отправкой ответа. При нулевом значении, ответ будет отправлен незамедлительно после его формирования.
|
Значения параметра ORDER определяются согласно следующей таблицы:
Контроль доступа позволяет проверить наличие на устройстве переменных с запрашиваемыми адресами. Если контроль доступа включен, а запрашиваемые адреса отсутствуют, в ответ на запрос будет возвращена ошибка. При отключенном контроле доступа и отсутствии запрашиваемых адресов, будет возвращен ответ с нулевыми значениями переменных, что может повлиять на корректность работы технологического приложения.
Старшая разрядность позволяет осуществлять обмен данными меньшей разрядности при совпадении порядка байт, параметров замены и контроля доступа. При работе с 8-байтовыми данными доступен обмен 4-х и 2-х байтовыми значениями, а при работе с 4-байтовыми данными доступен обмен 2-х байтовыми. Например, при значении параметра 24 доступен обмен 8-байтовыми данными с порядком "1-0-3-2-5-4-7-6", 4-байтовыми с порядком "1-0-3-2" и 2-байтовыми с порядком "1-0", с заменой байт и включенным контролем доступа.
|
Значения параметра PARAM определяются согласно следующей таблицы:
При выборе значений 16, 17, 24 или 25, когда на запрос разрешается отвечать любому из резервируемых модулей, необходимо физически разграничивать линии связи с основным и резервным мастер-модулем, так как через RS-232/RS422/RS-485 не поддерживается одновременный обмен с несколькими устройствами. Иначе, ответы от основного и резервного мастер-модулей будут накладываться друг на друга, что приведет к ошибкам обмена.
|
Выходные параметры:
|
Параметр
|
Тип данных
|
Описание
|
|
OK
|
BOOLEAN
|
Признак завершения асинхронной операции:
|
|
FAULT
|
INTEGER
|
Код ошибки по результатам выполнения операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
|
Описание алгоритма.
Настройки задачи связи передаются в блок через входные параметры, а их изменение постоянно отслеживается блоком. Поэтому, для изменения настроек не требуется перезапускать выполнение блока, достаточно в процессе работы изменить значение входного параметра, и задача связи будет незамедлительно переинициализирована. При этом во взаимосвязанных блоках чтения или записи могут возникнуть ошибки обмена по протоколу Modbus, если в момент изменения настроек были прерваны передача запроса или прием ответа.
Значение параметра Slave используется на Master-устройстве для идентификации адресата при направлении запроса и передается в качестве одноименного входного параметра на блоки чтения или записи.
После запуска приложения контроллер по указанному в параметрах блока TCP-порту будет отслеживать поступление от удаленного Master-устройства запросов на чтение или запись данных.

Скорость передачи и кодировка данных, количество стоповых бит и режим контроля четности должны совпадать на передающем и принимающем устройствах.
|
Настройка максимального количества соединений на один TCP-порт и времени удержания соединения осуществляется на форме, закрепленной за разделом дерева конфигурации «Внешние коммуникации → Modbus → Modbus-TCP Slave».

Если число текущих соединений к TCP-порту равно максимальному, то все попытки подключения со стороны других Master-устройств будут игнорироваться. Но если от подключенного удаленного устройства в течение времени удержания не поступают запросы, то соединение становиться доступным для подключения другого устройства.
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_TCP_SLV(RUN, PORT, SLAVE, ORDER, PARAM, TPKT, DELAY);
//чтение признака завершения операции и кода ошибки
OK := Block.OK;
FAULT := Block.FAULT;
|
