Два ФБ реализуют протокол Modbus RTU (master, т. е. контроллер инициирует обмен с другими Modbus-устройствами- слейвами). ФБ работают с одним из каналов связи модуля CPU32 или одного из коммуникационных модулей (модемы, модули расширения портов).
При размещении в конфигурации нескольких ФБ работающих с одним каналом связи, все эти ФБ получают управление по очереди, т. е. за одно исполнение конфигурации только 1 из этих ФБ сможет инициировать обмен. При следующем исполнении конфигурации, эта ФБ обработает ответ (при условии, что он уже получен и тайм-аут ответа не истёк) и в этом же цикле следующая ФБ, работающая с этим каналом, сможет получить доступ к каналу связи.
Для идентификации канала связи используется i2c-адрес модуля и адрес буфера канала связи внутри i2c модуля. Поскольку порты модуля CPU не принадлежат i2c-модулям, им присвоены виртуальные адреса:
ФБ №33 «MODBUS RTU Master: Чтение - функция 1/2/3/4»
«MODBUS-функция» - для данного ФБ допустимы значения «1» и «2» для чтения битовых данных, «3» и «4» для чтения 16-битных регистров. При чтении функциями 1 и 2 выход «Данные» должен быть строго битового типа. При чтении функциями 3 и 4, выход «Данные» может быть любого типа. Можно использовать несколько элементов разного типа, а также несколько массивов разного типа. Важно при этом чтобы вход «количество регистров» соответствовал набору типов и кол-ву элементов выхода «Данные».
Общее количество элементов выхода «Данные» не должно превышать 253.
Максимальный TimeOut ответа = 6350 мс.
Внутренняя переменная «№ пакета» обязательна. Нужна для идентификации пакета в очереди пакетов и корректного отрабатывания истечения тайм-аута ответа и переключения нескольких интерфейсных ФБ на одном канале связи, её тип uint8.
| Вх/Вых | Имя | Тип | Назначение |
|---|---|---|---|
| Вход | Enable | bit | Разрешает отправку пакетов |
| Вход | Адрес i2c-модуля (Modul Addr) | uint | 0 — COM1, 1 — COM2 |
| Вход | Внутренний адрес (Modul IntAddr) | uint | 0 для COM1/COM2 |
| Вход | Количество байт | uint | |
| Вход | MODBUS-адрес | uint | RTU-адрес слейва, 1…247 |
| Вход | MODBUS-функция | uint | 1/2 — чтение битовых, 3/4 — чтение 16-битных регистров |
| Вход | RegAddr | uint | Начальный адрес регистра |
| Вход | RegNum | uint | Должен соответствовать набору типов/кол-ву элементов выхода «Данные» |
| Вход | TimeOut | uint | Максимум 6350 мс |
| Внутр. | № пакета | uint8 | |
| Выход | Out (Данные) | любой тип/массивы | Читанные значения; всего элементов ≤253 |
| Выход | TimeOut | bit | |
| Выход | Exception | bit | |
| Выход | ReadOK | bit |
«MODBUS RTU Master: Чтение Мега12 - функция 1/2/3/4»
ФБ по аналогии с ФБ№33 но с измененными входами:
ФБ №34 «MODBUS RTU Master: Запись - функция 5/6/15/16»
Требования к типам входов и выходов и их количеству:
| Вх/Вых | Имя | Тип | Назначение |
|---|---|---|---|
| Вход | Enable | bit (строго) | |
| Вход | Адрес i2c-модуля / Внутренний адрес / Количество байт | uint | |
| Вход | MODBUS-адрес | uint | 1…247 |
| Вход | MODBUS-функция | uint | 5/15 — запись битовых, 6/16 — запись 16-битных регистров |
| Вход | Нач. адрес регистра | uint | |
| Вход | Кол-во регистров | uint | Соответствие типам входа «Данные» |
| Вход | TimeOut ответа (мс) | uint | Максимум 6350 мс |
| Вход | Данные[N] | любой тип, массивы | Всего элементов ≤248 |
| Внутр. | № пакета | uint8, обязательна | |
| Выход | TimeOut / Exception / Запись Ок | bit |
«MODBUS RTU Master: Запись - функция 5/6/15/16»
ФБ №109 MODBUS TCP-Master: Запись
ФБ осуществляет запись по mdbtcp протоколу в указанный IP4 – IP1 адрес с периодичностью «IntervalTime» (мс.), тайм аут на соединение указывается в переменной «ConnectionTime». Если устройство не отвечает то ФБ начинает записывать реже до 25 «Intervaltime».
| Вх/Вых | Имя | Тип (умолч.) | Назначение |
|---|---|---|---|
| Вход | Enable | bit | Вкл./выкл. ФБ |
| Вход | ip4…ip1 | uint8 (192.168.5.20) | IP-адрес Slave, от старшего байта к младшему |
| Вход | port | uint16 (502) | TCP-порт |
| Вход | ConnectionTime | uint (1500) | Тайм-аут на соединение |
| Вход | IntervalTime | uint | Периодичность записи, мс; без ответа интервал растёт до ×25 |
| Вход | Mdb_address | uint (3) | Адрес Slave |
| Вход | Mdb_function | uint (6) | Запись: 5, 6, 15, 16 |
| Вход | Reg_address | uint | Начальный регистр записи |
| Вход | Reg_numm | uint | Количество регистров |
| Вход | Input | bit / uint16 / uint32 | Данные на запись |
| Выход | Status | 0 — WORKING (занят канал TCP); 1 — CONNECTION_STATE (соединение установлено); 2 — PASSED (канал освобождён) | |
| Выход | Err_count | Счётчик неудачных пакетов | |
| Выход | ok_count | Счётчик удачных пакетов | |
| Выход | ConectionTimer | Таймер ожидания ответа | |
| Выход | IntervalTimer | Таймер между передачами | |
| Выход | PassNumm | Сколько раз пропускается очередь (растёт после неудач) | |
| Выход | PasCnt | Сколько очередей осталось пропустить | |
| Выход | Ok | bit | Импульс при удачной записи |
ФБ №108 MODBUS TCP-Master: Чтение
ФБ осуществляет чтение по mdbtcp протоколу с указанного IP4 – IP1 адреса с периодичностью «IntervalTime» (мс.), тайм аут на соединение указывается в переменной «ConnectionTime». Если устройство не отвечает то ФБ начинает опрашивать реже до 25 «Intervaltime».
| Вх/Вых | Имя | Тип (умолч.) | Назначение |
|---|---|---|---|
| Вход | Enable | bit | Вкл./выкл. ФБ |
| Вход | ip4…ip1 | uint8 (192.168.5.20) | IP-адрес Slave, от старшего байта к младшему |
| Вход | port | uint16 (502) | TCP-порт |
| Вход | ConnectionTime | uint (1500) | Тайм-аут на соединение |
| Вход | IntervalTime | uint | Периодичность записи, мс; без ответа интервал растёт до ×25 |
| Вход | Mdb_address | uint (3) | Адрес Slave |
| Вход | Mdb_function | uint (6) | Запись: 5, 6, 15, 16 |
| Вход | Reg_address | uint | Начальный регистр записи |
| Вход | Reg_numm | uint | Количество регистров |
| Выход | Output | bit / uint16 / uint32 | Данные прочитанные |
| Выход | Status | 0 — WORKING (занят канал TCP); 1 — CONNECTION_STATE (соединение установлено); 2 — PASSED (канал освобождён) | |
| Выход | Err_count | Счётчик неудачных пакетов | |
| Выход | ok_count | Счётчик удачных пакетов | |
| Выход | ConectionTimer | Таймер ожидания ответа | |
| Выход | IntervalTimer | Таймер между передачами | |
| Выход | PassNumm | Сколько раз пропускается очередь (растёт после неудач) | |
| Выход | PasCnt | Сколько очередей осталось пропустить | |
| Выход | Ok | bit | Импульс при удачной записи |
ФБ №118 «MODBUS-Модем»
Входы и выходы, и функционал аналогичны ФБ №110.
ФБ №119 «MODBUS UDP-Master: Чтение»
Входы и выходы как в ФБ №108«MODBUS TCP-Master: Чтение». Отличается от ФБ №108 тем, что ФБ №119 работает с UDP пакетами, вместо TCP.
ФБ №120 «MODBUS UDP-Master: Запись»
Входы и выходы аналогичны ФБ №109 «MODBUS TCP-Master: Запись». Отличается от ФБ №109 тем, что ФБ №120 работает с UDP пакетами, вместо TCP.
ФБ №121 «MODBUS RTU Master new: Чтение – функции 1/2/3/4»
Отличается от ФБ №33 «MODBUS RTU Master new: Чтение – функции 1/2/3/4» добавлением дополнительных выходов:
| Вх/Вых | Имя | Тип | Назначение |
|---|---|---|---|
| Вход | Enable | bit | Разрешает ФБ отправлять пакеты |
| Вход | Modul Addr | uint | Адрес i2c-модуля: 0 — COM1, 1 — COM2 |
| Вход | Modul IntAddr | uint | Внутренний адрес, для COM1/COM2 = «0» |
| Вход | MODBUS-Addr | uint | RTU-адрес слейва, 1…247 |
| Вход | MODBUS-Func | uint | «1»/«2» — чтение битовых данных, «3»/«4» — чтение 16-битных регистров |
| Вход | RegAddr | uint | Начальный адрес регистра |
| Вход | RegNum | uint | Количество регистров; соответствие набору типов выхода «Данные» |
| Вход | TimeOut | uint | Максимум 6350 мс |
| Выход | Out | любой тип, массивы | Прочитанные данные |
| Выход | TimeOut | bit | Истечение тайм-аута ответа |
| Выход | Exception | bit | Ошибка обработки запроса |
| Выход | Ok | bit | Успешное чтение |
| Выход | Status | uint8 | «0» — ФБ в работе; «1» — установлено соединение; «2» — ФБ освободило канал |
| Выход | PackNum | uint8 | Номер пакета в очереди |
| Выход | TimeOutCounter | uint | Счётчик TimeOut |
| Выход | IntervalTimer | uint | Таймер интервала |
| Выход | RestartCounter | uint | Счётчик перезагрузок ФБ |
ФБ №122 «MODBUS RTU Master new: Запись – функции 5/6/15/16»
Отличается от ФБ №34 «MODBUS RTU Master new: Запись – функции 5/6/15/16» добавлением дополнительных выходов: