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

MB_RTU_SLV - конфигурация Modbus-RTU Slave


Назначение.
Функциональный блок MB_RTU_SLV применяется для настройки и запуска задачи связи по протоколу Modbus-RTU в режиме Slave.
Альтернативой использованию блока MB_RTU_SLV является добавление и настройка задачи связи "Modbus-RTU Slave" через дерево конфигурации. Подробнее в разделе "Управление конфигурацией → Внешние коммуникации → Задачи связи Modbus → Настройка Modbus через дерево конфигурации" документа "Unimod PRO 2. Руководство пользователя". 
 
Входные параметры:
Параметр
Тип данных
Описание
RUN
BOOLEAN
Управление работой блока:
  • RUN=TRUE - запуск блока и инициализации задачи связи;
  • RUN=FALSE - остановка блока и задачи связи.
PORT
INTEGER
Номер используемого физического COM-порта. Одна задача связи использует один COM-порт, поэтому для двусторонней передачи данных используются минимум два COM-порта: один на вход, другой на выход. Количество доступных соединений по протоколу Modbus-RTU ограничивается количеством COM-портов контроллера.
RATE
INTEGER
Поддерживается скорость передачи данных в бит/с: 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600 и 115200. Диапазон поддерживаемых значений зависит от типа мастер-модуля и описан в его руководстве по эксплуатации.
SLAVE
INTEGER
Сетевой адрес Slave-устройства по протоколу Modbus задается целым числом от 1 до 255. На Master-устройстве данное значение передается на вход Slave функциональных блоков чтения или записи для указания адресата запроса.
PARAM
INTEGER
Режим синхронности выполнения операции, кодировка данных и разрешение обмена с любым из зарезервированных мастер-модулей задается целым числом. Допустимые значения описаны далее в настоящем разделе.
ORDER
INTEGER
Порядок байт при передаче числовых значений задается целым числом. Допустимые значения описаны далее в настоящем разделе.
PARITY
INTEGER
Количество стоповых битов и режим контроля четности при передаче данных задаются целым числом:
  • 1 - нет контроля четности, 2 стоповых бита;
  • 2 - режим EVEN, 1 бит четности устанавливается в единицу при четном количестве единиц в битах данных;
  • 3 - режим ODD, 1 бит четности устанавливается в единицу при нечетном количестве единиц;
  • 4 - режим SPACE не влияет на возможность контроля ошибок, 1 бит четности всегда равен нулю;
  • 5 - режим MARK не влияет на возможность контроля ошибок, 1 бит четности всегда равен единице.
TPKT
INTEGER
Время обнаружения обрыва (окончания) пакета - период времени в миллисекундах между поступающими байтами одного запроса. Если в указанный период очередной байт запроса не поступил, диагностируется обрыв запроса. При нулевом периоде диагностика не проводится.
DELAY
INTEGER
Задержка перед отправкой ответа - период времени в миллисекундах между моментом поступления запроса и отправкой ответа. При нулевом значении, ответ будет отправлен незамедлительно после его формирования. Используется только на Slave-устройстве.
Значение параметра PARAM определяется согласно следующей таблицы.
PARAM
Синхронность запроса
Кодировка данных
Ответ при наличии резервирования
0
Асинхронно
Двоичный формат
только от основного
1
Синхронно
Двоичный формат
только от основного
8
Асинхронно
ASCII-кодировка
только от основного
9
Синхронно
ASCII-кодировка
только от основного
16
Асинхронно
Двоичный формат
от любого
17
Синхронно
Двоичный формат
от любого
24
Асинхронно
ASCII-кодировка
от любого
25
Синхронно
ASCII-кодировка
от любого
При выборе значений 16, 17, 24 или 25, когда на запрос разрешается отвечать любому из резервируемых модулей, необходимо физически разграничивать линии связи с основным и резервным мастер-модулем, так как через RS-232/RS422/RS-485 не поддерживается одновременный обмен с несколькими устройствами. Иначе, ответы от основного и резервного мастер-модулей будут накладываться друг на друга, что приведет к ошибкам обмена.
Значение параметра 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", с заменой байт и включенным контролем доступа.
 
Выходные параметры:
Параметр
Тип данных
Описание
OK
BOOLEAN
Признак завершения асинхронной операции:
  • OK=TRUE - при успешном завершении операции и отсутствии ошибок;
  • OK=FALSE  - при возникновении ошибок.
FAULT
INTEGER
Код ошибки по результатам операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
 
Описание алгоритма.
Настройки задачи связи передаются в блок через входные параметры, а их изменение постоянно отслеживается блоком. Поэтому, для изменения настроек не требуется перезапускать выполнение блока, достаточно в процессе работы изменить значение входного параметра, и задача связи будет незамедлительно переинициализирована. При этом во взаимосвязанных блоках чтения или записи могут возникнуть ошибки обмена по протоколу Modbus, если в момент изменения настроек были прерваны передача запроса или прием ответа.
Значение параметра Slave используется на Master-устройстве для идентификации адресата при направлении запроса и передается в качестве одноименного входного параметра на блоки чтения или записи.
После запуска приложения контроллер по указанному в параметрах блока COM-порту будет отслеживать поступление от удаленного Master-устройства запросов на чтение или запись данных.
Скорость передачи и кодировка передаваемых данных, количество стоповых битов и режим контроля четности должны совпадать на передающем и принимающем устройствах.
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_RTU_SLV(RUN, PORT, RATE, PARITY, SLAVE, ORDER, PARAM, TPKT, DELAY);
//чтение признака завершения операции
OK := Block.OK;
//чтение кода ошибки
FAULT := Block.FAULT;