ФБ MODBUS-Master
Два ФБ реализуют протокол Modbus RTU (master, т.е. контроллер инициирует обмен с другими Modbus-устройствами - слейвами). ФБ работают с одним из каналов связи модуля CPU32 или одного из коммуникационных модулей (модемы, модули расширения портов).
При размещении в конфигурации нескольких ФБ работающих с одним каналом связи, все эти ФБ получают управление по очереди, т.е. за одно исполнение конфигурации только 1 из этих ФБ сможет инициировать обмен. При следующем исполнении конфигурации, эта ФБ обработает ответ (при условии, что он уже получен и тайм-аут ответа не истёк) и в этом же цикле следующая ФБ, работающая с этим каналом, сможет получить доступ к каналу связи.
Для идентификации канала связи используется i2c-адрес модуля и адрес буфера канала связи внутри i2c модуля. Поскольку порты модуля CPU не принадлежат i2c-модулям, им присвоены виртуальные адреса:
- для порта COM1 необходимо указать «Адрес i2c-модуля»=«0» и «внутренний адрес»=«0»;
- для порта COM2 необходимо указать «Адрес i2c-модуля»=«1» и «внутренний адрес»=«0».
ФБ №33 «MODBUS RTU Master: Чтение - функция 1/2/3/4»
Требования к типам входов и выходов и их количеству:
- Вход Enable - строго bit. Разрешает ФБ отправлять пакеты.
- Входы «адрес i2c-модуля», «внутренний адрес» и «кол-во байт» - целочисленные.
- «MODBUS-адрес» – RTU адрес слейва, от 1 до 247.
- «MODBUS-функция» - для данного ФБ допустимы значения «1» и «2» для чтения битовых данных, «3» и «4» для чтения 16-битных регистров. При чтении функциями 1 и 2 выход «Данные» должен быть строго битового типа. При чтении функциями 3 и 4, выход «Данные» может быть любого типа. Можно использовать несколько элементов разного типа, а также несколько массивов разного типа. Важно при этом чтобы вход «кол-во регистров» соответствовал набору типов и кол-ву элементов выхода «Данные».
- Общее кол-во элементов выхода «Данные» не должно превышать 253.
- Максимальный TimeOut ответа = 6350 мс.
- Внутренняя переменная «№ пакета» обязательна. Нужна для идентификации пакета в оче-реди пакетов и корректного отрабатывания истечения тайм-аута ответа и переключения нескольких интерфейсных ФБ на одном канале связи, её тип uint8.
«MODBUS RTU Master: Чтение Мега12 - функция 1/2/3/4»
- Канал - 0-COMExt,1-COM0,2-БР,3-ЛТМ,4-ДР,5-COM1,6-GPRS,7-ComIntBus,8-Eth,9-SMS (по умолчанию 5)
- Частота опроса - В тактах исполнения кфг
ФБ №34 «MODBUS RTU Master: Запись - функция 5/6/15/16»
Требования к типам входов и выходов и их количеству:
- Вход Enable - строго bit. Разрешает ФБ отправлять пакеты
- Входы «адрес i2c-модуля», «внутренний адрес» и «кол-во байт» - целочисленные.
- «MODBUS-адрес» – RTU адрес слейва, от 1 до 247.
- «MODBUS-функция» - для данного ФБ допустимы значения «5» и «15» для записи битовых данных, «6» и «16» для записи 16-битных регистров. При записи функциями 5 и 15 вход «Данные» должен быть строго битового типа. При записи функциями 6 и 16, вход «Данные» может быть любого типа. Можно использовать несколько элементов разного типа, а также несколько массивов разного типа. Важно при этом, чтобы вход «кол-во регистров» соответствовал набору типов и кол-ву элементов входа «Данные».
- Общее кол-во элементов входа «Данные» не должно превышать 248.
- Максимальный TimeOut ответа = 6350 мс.
- Внутренняя переменная «№ пакета» обязательна. Она нужна для идентификации пакета в очереди пакетов и корректного отрабатывания истечения таймаута ответа и переключения нескольких интерфейсных ФБ на одном канале связи, её тип uint8.
«MODBUS RTU Master: Запись - функция 5/6/15/16»
- Канал - 0-COMExt,1-COM0,2-БР,3-ЛТМ,4-ДР,5-COM1,6-GPRS,7-ComIntBus,8-Eth,9-SMS (по умолчанию 5)
- Частота опроса - В тактах исполнения кфг
ФБ №110 MODBUS-Модем
ФБ №110 настраивает в PacketManager маршрутизацию Modbus пакетов. Функциональный блок записыва-ет новый RTM маршрут для указанного Modbus адреса, в дальнейшем приходящий пакет разбирается и если он не совпадает с собственным адресом Modbus, но совпадает с адресом указанным в ФБ на входе ModbusAddress формируется пакет RTM_MW куда вкладывается Modbus пакет, при достижении пакета последнего адресата(последнее ненулевое значение NodeAddress) если Modbus адрес вложенный в пакет не совпал со своим то контроллер распаковывает Modbus и отправляет в канал указанный в NodeChanel.
- Маршрут в пакете формируется согласно входам “NodeAddress”,”NodeChanel”, все ненулевые узлы становятся ретрансляторами.
- Вход ModbusAddress может быть массивом до 50 элементов для того чтобы можно было опросить несколько устройств подключенных на одну шину RS485(channel 5).
- Вход ChanelFrom откуда приходят пакеты для ретрансляции, если указан канал 8 (Ethernet) но пакет пришел по каналу 1 (RS232), пакет не будит ретранслироваться даже если есть совпадение адресов.
- Вход ChanelTo указывает куда дальше ретранслируется пакет.
Если адрес первого ретранслятора(NodeAddress1) равен “0", но Modbus адрес совпал с одним из указанных во входе ModbusAddres создается маршрут в котором адрес первого ретранслятора равен Modbus адресу в пакете.
Если адрес первого узла «1»,то формируется широковещательный маршрут, в котором адрес первого узла заменяется адресом в Modbus пакете. Данный маршрут будет задействован только в случае если в других небыло совпадения Modbus адреса.
Для ретрансляции Modbus пакета без промежуточного RTM устройства, в NodeAddress1 необходимо записать 4095, тогда Modbus пакет будет ретранслироваться сразу в другой Modbus на другом канале.
На входе ModbusAddress можно указать широковещательный адрес 251, тогда все Modbus пакеты будут ретранслироваться по указанному маршруту.
Номера каналов:
0 – ближнее радио(внешний модуль дальность до 5000 км);
1 - COM1 RS232;
2 – chNearRadio ближнее радио(до 2500 км);
3 - chWire was not make!!!!;
4 - chFarRadio дальнее радио(motorola or kenwood);
5 - COM2 RS485;
6 - chGSMGPRS was not make!!!!;
7 – chCOMIntBUS внутренняя шина(по умолчанию скорость 2 мбит/с);
8 - chEthernet Ethernet(IP).
Список входов/выходов
ФБ №109 MODBUS TCP-Master: Запись
ФБ осуществляет запись по mdbtcp протоколу в указанный IP4 – IP1 адрес с периодичностью «In-tervalTime»(мс.), тайм аут на соединение указывается в переменной «ConnectionTime». Если устройство не отвечает то ФБ начинает записывать реже до 25 «Intervaltime».
Входа:
- “Enable” – включение/выключение ФБ;
- “Mdb_address” – адрес Slave устройства;
- “Mdb_function” - функция записи, поддерживает«5,6,15,16»;
- ”Reg_address”– регистр с которого начинаем запись;
- “Reg_numm” – количество регистров на запись;
- “Input” – данные на запись(возможные типы bit,uint16,uint32).
Выхода:
- “Status” - статус выполнения;
- WORKING 0 фб в работе (заняло канал TCP)
- CONNECTION_STATE 1 было установлено соединение
- PASSED 2 фб освободило канал TCP
- “Err_count” – счетчик неудачных пакетов;
- “ok_count” – счетчик удачных пакетов;
- “ConectionTimer” – таймер ожидания ответа;
- “IntervalTimer” – таймер замера между передачами;
- “PassNumm” – сколько раз пропускаем очередь, данное значение нарастает после неудачных пакетов;
- “PasCnt” – счетчик очередей которых осталось пропустить;
- “Ok” – выдает импульс в случае удачной записи.
ФБ №108 MODBUS TCP-Master: Чтение
ФБ осуществляет чтение по mdbtcp протоколу с указанного IP4 – IP1 адреса с периодичностью «In-tervalTime»(мс.), тайм аут на соединение указывается в переменной «ConnectionTime». Если устройство не отвечает то ФБ начинает опрашивать реже до 25 «Intervaltime».
Входа:
- “Enable” – включение/выключение ФБ;
- “Mdb_address” – адрес Slave устройства;
- “Mdb_function” - функция чтения, поддерживает типы «1/2/3/4»;
- ”Reg_address”– регистр с которого начинаем читать;
- “Reg_numm” – количество регистров для чтения;
Выхода:
- “Status” - статус выполнения;
- WORKING 0 фб в работе (заняло канал TCP)
- CONNECTION_STATE 1 было установлено соединение
- PASSED 2 фб освободило канал TCP
- “Err_count” – счетчик неудачных пакетов;
- “ok_count” – счетчик удачных пакетов;
- “ConectionTimer” – таймер ожидания ответа;
- “IntervalTimer” – таймер замера между передачами;
- “PassNumm” – сколько раз пропускаем очередь, данное значение нарастает после неудачных пакетов;
- “PasCnt” – счетчик очередей которых осталось пропустить;
- “Ok” – выдает импульс в случае удачной записи.
- “Output” – данные прочитанные из устройства(возможные типы bit,uint8,uint16,uint32).
ФБ №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» добавлением дополнительных выходов:
- Status – Статус выполнения:
- «0» – ФБ в работе;
- «1» – было установлено соединение;
- «2» – ФБ освободило канал.
- PackNum – Номер пакета в очереди
- TimeOutCounter – Счетчик TimeOut
- IntervalTimer – Таймер интервала
- RestartCounter – Счетчик перезагрузок ФБ
ФБ №122 «MODBUS RTU Master new: Запись – функции 5/6/15/16»
Отличается от ФБ №34 «MODBUS RTU Master new: Запись – функции 5/6/15/16» добавлением дополнительных выходов:
- Status – Статус выполнения:
- «0» – ФБ в работе;
- «1» – было установлено соединение;
- «2» – ФБ освободило канал.
- PackNum – Номер пакета в очереди
- TimeOutCounter – Счетчик TimeOut
- IntervalTimer – Таймер интервала
- RestartCounter – Счетчик перезагрузок ФБ