Приводится пример конфигурирования и программы для реализации клиента Modbus TCP в контроллере YASKAWA MICRO с использованием среды программирования TIA Portal v14.
Для начала работы в TIA Portal v14 (Siemens AG) необходимо скачать конфигурационные файлы (GSDML) и библиотеки Modbus с сайта YASKAWA VIPA Controls. Распакуйте скачанные файлы в рабочую папку.
Конфигурирование MICRO в TIA Portal
Запустите программный пакет TIA Portal, после перейдите в Project view. Выберите в Options ‘Install general station description file (GSD)’. Перейдите в рабочую папку и выберите для установки требуемый файл GSDML. По завершении установки, будет произведено автоматическое обновление каталога оборудования и TIA Portal закроется. Для того, чтобы компоненты VIPA отображались, необходимо отключить "Filter" в каталоге оборудования TIA Portal. В конфигураторе контроллер MICRO может быть выбран в Other field devices > PROFINET > IO > VIPA GmbH > VIPA MICRO PLC.
Для добавления контроллера MICRO в проект перейдите в Project tree и выбирите ‘Add new device ...’. Так контроллеры VIPA Controls эмулируют контроллеры S7-300, для работы с MICRO, выберите в диалоговом окне ввода модуль ЦПУ SIMATIC S7-300 > CPU 314C-2 PN/DP (314-6EH04-0AB0 V3.3). После перейдите в Project area к ‘Network view’ и перетащите из раздела ‘Other field devices > PROFINET > IO > VIPA GmbH > VIPA MICRO PLC’ контроллер в поле Network view и подключив ее виртуально к ЦПУ S7 через PROFINET.
В Network view кликните по линии PROFINET модуля Siemens CPU и введите требуемое значение IP-адреса в поле ‘Ethernet address’ окна ‘Properties’ раздела ‘IP protocol’. Введите в поле ‘PROFINET device name’ окна ‘PROFINET’ уникальное (в рамках подсети Ethernet) имя сетевого устройства.
Настройка порта Ethernet PG/OP MICRO
Выберите в Network view устройство ввода/вывода ‘VIPA MICRO PLC’ и перейдите в Device overview. В окне станции устройства PROFINET IO ‘VIPA MICRO PLC’ модуль ЦПУ будет размещен в слоте 0. Для конфигурирования порта Ethernet PG/OP поместите в слот 4 стойки модуль Siemens CP 343-1 (6GK7 343-1EX30 0XE0 V3.0). Двойным кликом по CP 343-1EX30 откройте диалоговое окно ‘Properties’ и в поле "Ethernet address" введите требуемый IP-адрес. Предварительно необходимо получить у администратора сети допустимый IP-адрес.
Подключение библиотек в ПО TIA Portal
Распакуйте ZIP-файл с библиотекой VIPA Modbus в рабочий каталог Siemens TIA Portal.
Перейдите в Project view в своем проекте и выберите вкладку "Libraries" из вертикального меню справа, выберите "Global library" и потом "Open global library", перейдите в рабочий каталог и загрузите файл ..._TIA.al1x. Скопируйте нужные блоки из библиотеки в раздел "Program blocks" менеджера проектов Project tree активного проекта. Теперь специализированные функциональные блоки VIPA готовы для использования в пользовательской программе проекта.
Программа клиента Modbus TCP
Для организации связи по Modbus TCP используются функциональные блоки, разработанные YASKAWA VIPA Controls для своих контроллеров. Их мы и будем использовать в нашей программе.
FB 70 - TCP_MB_CLIENT – этот функциональный блок позволяет использовать порт Ethernet PG/OP в качестве клиента Modbus/TCP.
Параметры вызова блока:
- REQ - вход BOOL, запуск работы блока по переходу;
- ID - вход WORD, ID из TCON;
- MB_FUNCTION - вход BYTE, Modbus: Код функции;
- MB_DATA_ADDR - вход WORD, Modbus: Начальный адрес или код подфункции;
- MB_DATA_LEN - вход INT, Modbus: Количество регистров/бит;
- MB_DATA_PTR - вход ANY, Modbus: Буфер данных (допустима только область флагов или блок данных с типом данных BYTE) при использовании функций с кодами 03h, 06h и 10h;
- DONE - выход BOOL, работа блока завершена без ошибок;
- BUSY - выход BOOL, задание выполняется;
- ERROR - выход BOOL, работа блока завершена с ошибкой - параметр STATUS содержит информацию об ошибке;
- STATUS - выход WORD, расширенная информация о состоянии и об ошибках.
Параметры DB:
- PROTOCOL_TIMEOUT - INT, время блокировки до того, как пользователь может отменить активное задание, значение по умолчанию: 3 сек;
- RCV_TIMEOUT - INT, контрольное время для задания, значение по умолчанию 2 cек;
- MB_TRANS_ID - WORD, Modbus: начальное значение для идентификатора транзакции, значение по умолчанию: 1;
- MB_UNIT_ID - BYTE, Modbus: идентификация устройства, значение по умолчанию: 255.
Обратите внимание на следующее:
- Параметры вызова должны быть заданы при вызове блока. Кроме параметров вызова имеются также параметры, содержащиеся в DB.
- Предварительно коммуникационное соединение должно быть инициализировано с помощью FB 65 (TCON).
- Для использования блока требуются FB 63 (TSEND) и FB 64 (TRCV).
- В процессе исполнения задания DB блокируется для других клиентов.
Обратите внимание на то, что в процессе исполнения задания изменение состояния входных параметров не воспринимается.
Исполнение задания завершается или отменяется при одном из следующих условий:
- DONE = 1 (исполнение без ошибки);
- ERROR = 1 (исполнение с ошибкой);
- Превышение интервала RCV_TIMEOUT;
- REQ = FALSE после истечения времени PROTOCOL_TIMEOUT.
Если REQ сбрасывается до того, как установлен выход DONE или ERROR или истекло время PROTOCOL_ TIMEOUT, на выходе STATUS будет установлено значение 8200h. При этом текущее задание будет по-прежнему исполняться.
С помощью функции 03h с сервера Modbus/TCP должны быть считаны 100 регистров, начиная с адреса 2000, и сохраняться в области памяти флагов с начальным адресом MB200. Коды ошибок при их возникновении должны быть сохранены.
Пример программного кода
CALL FB 65 , DB65 REQ :=M100.0 ‘ Вызов FB 65 (TCON) для соединения с сервером
ID :=W # 16 # 1
DONE :=M100.1
BUSY :=
ERROR :=M100.2
STATUS :=MW102 ‘ Если соединение с сервером отсутствует, то содержит код 7000h
CONNECT :=P # DB255.DBX 0.0 BYTE 64
UN M 100.2
SPB ERR1
L MW 102
T MW 104
ERR1: NOP 0 U M 100.1
R M 100.0
CALL FB 70 , DB70 ‘ Вызов блока обработки данных клиента Modbus/TCP
REQ :=M101.0
ID :=W # 16 # 1
MB_FUNCTION :=B # 16 # 3 MB_DATA_ADDR:=W # 16 # 7D0 MB_DATA_LEN :=100
MB_DATA_PTR :=P # M 200.0 BYTE 200 DONE :=M101.1
BUSY :=
ERROR :=M101.2
STATUS :=MW106
UN M 101.2
SPB ERR2
L MW 106
T MW 108 ‘код 0000h – задание выполнено, 7004h FB готов к выполнению нового запроса, другие коды это ошибки
ERR2: NOP 0
U M 101.1
R M 101.0
При включении бита M100.0, если M100.0 автоматически сбрасывается, то это означает, что соединение установлено и ячейка памяти MW108 в этом случае содержит код 7004h.
При включении бита M101.0, посылается запрос Modbus и ожидается ответ. В случае если M101.0 сбрасывается автоматически, задание исполнено без ошибок, а считанные данные сохранены в ЦПУ в области памяти флагов, начиная с байта 200. MW108 содержит код 7004h, что сигнализирует о готовности к выполнению нового запроса. Если M101.0 не сбрасывается автоматически, а MW108 возвращает значение, отличное от 0, то это означает наличие ошибки обмена. Причину ошибки можно определить с помощью кода в MW108 (например, MW108 = 8382h, если начальный адрес 2000 отсутствует на сервере).