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

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
Управление работой блока:
  • RUN=TRUE - запуск блока и инициализация задачи связи;
  • RUN=FALSE - остановка блока и задачи связи.
PORT
INTEGER
Номер локального TCP-порта, через который Slave-устройство будет ожидать входящие запросы от Master-устройства. Должен совпадать с номером удаленного TCP-порта, указанным в соответствующей задачи связи Master-устройства.
SLAVE
INTEGER
Сетевой адрес Slave-устройства по протоколу Modbus задается целым числом от 1 до 255. На Master-устройстве данный адрес передается на вход Slave блока чтения или записи для указания адресата запроса.
ORDER
INTEGER
Порядок передачи байт задается целым числом. Поддерживаемые значения описаны далее в настоящем разделе.
PARAM
INTEGER
Режим синхронности выполнения операции, кодировка при передаче данных и разрешение на обмен данными с любым из зарезервированных мастер-модулей задаются целым числом. Доступные для выбора значения описаны далее в настоящем разделе.
TPKT
INTEGER
Время обнаружения обрыва (окончания) пакета - период в миллисекундах между поступающими байтами одного запроса, если в указанный период очередной байт запроса не поступил, диагностируется обрыв запроса. При нулевом периоде диагностика не проводится.
DELAY
INTEGER
Задержка в миллисекундах между поступления запроса и отправкой ответа. При нулевом значении, ответ будет отправлен незамедлительно после его формирования.
Значения параметра ORDER определяются согласно следующей таблицы:
ORDER
Порядок байт
Замена байт
Замена слов
Замена двойных слов
Беззнаковый обмен
Контроль доступа
5
0-1
-
-
-
-
-
7
0-1
-
-
-
Да
-
13
0-1
-
-
-
-
Да
15
0-1
-
-
-
Да
Да
4
1-0
Да
-
-
-
-
6
1-0
Да
-
-
Да
-
12
1-0
Да
-
-
-
Да
14
1-0
Да
-
-
Да
Да
1
0-1-2-3
-
-
-
Да
-
9
0-1-2-3
-
-
-
Да
Да
0
1-0-3-2
Да
-
-
Да
-
8
1-0-3-2
Да
-
-
Да
Да
3
2-3-0-1
-
Да
-
Да
-
11
2-3-0-1
-
Да
-
Да
Да
2
3-2-1-0
Да
Да
-
Да
-
10
3-2-1-0
Да
Да
-
Да
Да
17
0-1-2-3-4-5-6-7
-
-
-
Да
-
25
0-1-2-3-4-5-6-7
-
-
-
Да
Да
16
1-0-3-2-5-4-7-6
Да
-
-
Да
-
24
1-0-3-2-5-4-7-6
Да
-
-
Да
Да
18
2-3-0-1-6-7-4-5
-
Да
-
Да
-
26
2-3-0-1-6-7-4-5
-
Да
-
Да
Да
19
3-2-1-0-7-6-5-4
Да
Да
-
Да
-
27
3-2-1-0-7-6-5-4
Да
Да
-
Да
Да
21
4-5-6-7-0-1-2-3
-
-
Да
Да
-
29
4-5-6-7-0-1-2-3
-
-
Да
Да
Да
20
5-4-7-6-1-0-3-2
Да
-
Да
Да
-
28
5-4-7-6-1-0-3-2
Да
-
Да
Да
Да
22
6-7-4-5-2-3-0-1
-
Да
Да
Да
-
30
6-7-4-5-2-3-0-1
-
Да
Да
Да
Да
23
7-6-5-4-3-2-1-0
Да
Да
Да
Да
-
31
7-6-5-4-3-2-1-0
Да
Да
Да
Да
Да
Контроль доступа позволяет проверить наличие на устройстве переменных с запрашиваемыми адресами. Если контроль доступа включен, а запрашиваемые адреса отсутствуют, в ответ на запрос будет возвращена ошибка. При отключенном контроле доступа и отсутствии запрашиваемых адресов, будет возвращен ответ с нулевыми значениями переменных, что может повлиять на корректность работы технологического приложения.
Старшая разрядность позволяет осуществлять обмен данными меньшей разрядности при совпадении порядка байт, параметров замены и контроля доступа. При работе с 8-байтовыми данными доступен обмен 4-х и 2-х байтовыми значениями, а при работе с 4-байтовыми данными доступен обмен 2-х байтовыми. Например, при значении параметра 24 доступен обмен 8-байтовыми данными с порядком "1-0-3-2-5-4-7-6", 4-байтовыми с порядком "1-0-3-2" и 2-байтовыми с порядком "1-0", с заменой байт и включенным контролем доступа.
Значения параметра PARAM определяются согласно следующей таблицы:
PARAM
Синхронность запроса
Кодировка данных
Ответ при наличии резервирования
0
Асинхронно
Двоичный формат
только от основного
1
Синхронно
Двоичный формат
только от основного
8
Асинхронно
ASCII-кодировка
только от основного
9
Синхронно
ASCII-кодировка
только от основного
16
Асинхронно
Двоичный формат
от любого
17
Синхронно
Двоичный формат
от любого
24
Асинхронно
ASCII-кодировка
от любого
25
Синхронно
ASCII-кодировка
от любого
При выборе значений 16, 17, 24 или 25, когда на запрос разрешается отвечать любому из резервируемых модулей, необходимо физически разграничивать линии связи с основным и резервным мастер-модулем, так как через RS-232/RS422/RS-485 не поддерживается одновременный обмен с несколькими устройствами. Иначе, ответы от основного и резервного мастер-модулей будут накладываться друг на друга, что приведет к ошибкам обмена.
 
Выходные параметры:
Параметр
Тип данных
Описание
OK
BOOLEAN
Признак завершения асинхронной операции:
  • OK=true - при успешном завершении операции;
  • OK=false - при возникновении ошибок.
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;