ФБ MODBUS-Master

Два ФБ реализуют протокол 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.

Вх/ВыхИмяТипНазначение
ВходEnablebitРазрешает отправку пакетов
ВходАдрес i2c-модуля (Modul Addr)uint0 — COM1, 1 — COM2
ВходВнутренний адрес (Modul IntAddr)uint0 для COM1/COM2
ВходКоличество байтuint
ВходMODBUS-адресuintRTU-адрес слейва, 1…247
ВходMODBUS-функцияuint1/2 — чтение битовых, 3/4 — чтение 16-битных регистров
ВходRegAddruintНачальный адрес регистра
ВходRegNumuintДолжен соответствовать набору типов/кол-ву элементов выхода «Данные»
ВходTimeOutuintМаксимум 6350 мс
Внутр.№ пакетаuint8
ВыходOut (Данные)любой тип/массивыЧитанные значения; всего элементов ≤253
ВыходTimeOutbit
ВыходExceptionbit
ВыходReadOKbit

«MODBUS RTU Master: Чтение Мега12 - функция 1/2/3/4»

ФБ по аналогии с ФБ№33 но с измененными входами:


ФБ №34 «MODBUS RTU Master: Запись - функция 5/6/15/16»

Требования к типам входов и выходов и их количеству:

Вх/ВыхИмяТипНазначение
ВходEnablebit (строго)
ВходАдрес i2c-модуля / Внутренний адрес / Количество байтuint
ВходMODBUS-адресuint1…247
ВходMODBUS-функцияuint5/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» добавлением дополнительных выходов:

Вх/ВыхИмяТипНазначение
ВходEnablebitРазрешает ФБ отправлять пакеты
ВходModul AddruintАдрес i2c-модуля: 0 — COM1, 1 — COM2
ВходModul IntAddruintВнутренний адрес, для COM1/COM2 = «0»
ВходMODBUS-AddruintRTU-адрес слейва, 1…247
ВходMODBUS-Funcuint«1»/«2» — чтение битовых данных, «3»/«4» — чтение 16-битных регистров
ВходRegAddruintНачальный адрес регистра
ВходRegNumuintКоличество регистров; соответствие набору типов выхода «Данные»
ВходTimeOutuintМаксимум 6350 мс
ВыходOutлюбой тип, массивыПрочитанные данные
ВыходTimeOutbitИстечение тайм-аута ответа
ВыходExceptionbitОшибка обработки запроса
ВыходOkbitУспешное чтение
ВыходStatusuint8«0» — ФБ в работе; «1» — установлено соединение; «2» — ФБ освободило канал
ВыходPackNumuint8Номер пакета в очереди
ВыходTimeOutCounteruintСчётчик TimeOut
ВыходIntervalTimeruintТаймер интервала
ВыходRestartCounteruintСчётчик перезагрузок ФБ

ФБ №122 «MODBUS RTU Master new: Запись – функции 5/6/15/16»

Отличается от ФБ №34 «MODBUS RTU Master new: Запись – функции 5/6/15/16» добавлением дополнительных выходов: