Драйвер протокола ModbusTCP Master для целевой системы ISaGRAF

№ 8’2005
В статье описывается разработка драйвера протокола Modbus TCP системы ISaGRAF, который должен удовлетворять следующим требованиям: универсальность; простота использования, которая не требует высокой квалификации разработчика систем контроля и управления; увеличение функциональных возможностей целевой системы ISaGRAF для различных платформ (qnx4.25, qnx6.3, Linux, DOS32). Статья рассчитана на специалистов АСУ, использующих языки программирования IEC 61131-3.

В статье описывается разработка драйвера протокола Modbus TCP системы ISaGRAF, который должен удовлетворять следующим требованиям: универсальность; простота использования, которая не требует высокой квалификации разработчика систем контроля и управления; увеличение функциональных возможностей целевой системы ISaGRAF для различных платформ (qnx4.25, qnx6.3, Linux, DOS32). Статья рассчитана на специалистов АСУ, использующих языки программирования IEC 61131-3.

Протокол Modbus

Летом 2005 года на сайте www.modbus-ida.org были опубликованы результаты исследования рынка автоматизации и программного обеспечения предприятий, проведенного компанией ARC Advisory Group в 2004 году. Исследование показывает, что среди группы протоколов industrial Ethernet протокол Modbus TCP наиболее распространен в промышленности.

Modbus предназначен для обеспечения связи промышленного оборудования на основе интефейсов RS-485, Ethernet и др. В документации протокола зафиксировано, что он является де-факто стандартом в промышленности с 1979 года. Популярность его на рынке автоматизации обусловлена тем, что это открытый протокол, обеспечивающий возможность расширения. В связи с широкой популярностью Modbus перед разработчиками оборудования может стоять задача поддержки Modbus TCP. В данной статье описан пример решения задачи разработки драйвера протокола Modbus TCP MASTER для целевой системы ISaGRAF.

Технология ISaGRAF

Технология ISaGRAF предназначена для программирования PLC-контроллеров. Она состоит из двух компонентов: среды разработки программ ISaGRAF Workbench и целевой системы исполнения программ. Первый из них предназначен для разработки и отладки программ на базе языков стандарта IEC 61131-3. Отладка программы в среде ISaGRAF Workbench производится на инструментальном компьютере в режиме симуляции, а также в режиме реального времени, когда программа исполняется на удаленном PLC-контроллере, через интерфейсы Ethernet или RS-232/422/485. Программа может загружаться из среды разработки инструментального компьютера через интерфейсы Ethernet или RS-232/485 на PLC-контроллер. Целевая система ISaGRAF предназначена для выполнения программ на PLC-контроллере, а также взаимодействия с его периферией. Взаимодействие целевой системы с периферией PLC происходит с помощью драйверов. Для того чтобы целевая система ISaGRAF поддерживала связь по протоколу Modbus TCP, были разработаны драйверы Modbus TCP MASTER и SLAVE.

Необходимо отметить преимущество совместного использования целевой системы ISaGRAF и протокола Modbus TCP: используется единый интерфейс Ethernet для загрузки программ на PLC-контроллер и обеспечения связи контроллера с удаленными устройствами по Modbus TCP.

Драйвер протокола Modbus в составе целевой системы ISaGRAF

Целевая система ISaGRAF предоставляет возможность разработчику реализовать драйвер в одном из двух вариантов: FBD-блок или виртуальное устройство. Обе реализации имеют свои особенности, преимущества и недостатки. Особенность реализации драйвера в виде виртуального устройства заключается в том, что его функции Read()/Write() вызываются соответственно в начале и в конце цикла выполнения ресурса (исполнительной программы). Особенность FBD-блоков в том, что вызываются они не обязательно циклично, а в соответствии с алгоритмом пользовательской программы. Таким образом, реализация драйвера в виде FBD-блока имеет преимущество для случая разового, редкого обмена данными с удаленным устройством Modbus TCP SLAVE, а также обладает возможностью выдачи данных в несколько выходных каналов различных типов данных за один вызов FBD-блока.

Преимущество реализации драйвера в виде виртуального устройства: разработчик освобождается от вызовов драйверов в своей программе, управление передает им сама исполнительная система в строгом соответствии со своей циклической схемой функционирования. Виртуальное устройство выполняет чтение значений каналов в начале выполнения ресурса, а запись значений каналов — в конце выполнения ресурса.

При вызове каждого виртуального устройства ему передается указатель на соответствующий блок OEM-параметров и каналов устройства. Следующее преимущество виртуальных устройств: они имеют функции Init()/Exit() и Open()/Close(), которые вызываются при первом старте и перед завершением целевой системы. Это свойство дает возможность разработчику определить в драйвере алгоритм инициализации соединения с удаленным устройством перед исполнением программы пользователя, а также алгоритм закрытия соединения перед завершением работы целевой системы. На рис. 1 представлен порядок запуска виртуальных устройств и FBD-блоков.

Алгоритм драйвера Modbus
Рис. 1. Алгоритм драйвера Modbus

Драйвер Modbus TCP реализован в виде нескольких виртуальных устройств и встроен в целевую систему ISaGRAF. Это избавляет разработчика АСУ от необходимости помещать FBD-блоки внутри алгоритма для выполнения каждой транзакции. В состав драйвера входит одно комплексное устройство ip_client (complex device) и 10 простых устройств (simple device). Комплексное устройство ip_client выполняет функцию инициализации связи по виртуальному каналу с устройствами Modbus TCP SLAVE. В результате инициализации виртуального канала ip_client сохраняет параметры виртуальной связи в динамической структуре данных. Эта структура данных с параметрами виртуального канала используется остальными виртуальными устройствами в процессе исполнения для обмена данными с удаленными устройствами Modbus TCP SLAVE. Каждое простое виртуальное устройство поддерживает одну из функций чтения/записи определенного типа данных. В таблице представлена информация о соответствии номеров функций протокола Modbus и названий виртуальных устройств драйвера Modbus TCP MASTER в целевой системе.

Таблица. Cоответсвие функций протокола Modbus и виртуальных устройств драйвера ModbusTCP MASTER

На основании данных колонки «Номер функции» следует, что драйвер предоставляет пользователю возможность использовать стандартные базовые функции протокола Modbus TCP. Кроме того, драйвер позволяет с помощью функций 3, 4 и 16 интерпретировать данные регистровых каналов протокола Modbus в качестве различных типов данных.

Например, устройства in_dint, out_dint, in_real, out_real интерпретируют два канала функций 3, 4 и 16 как один канал типа dint или real.

Для большей гибкости и совместимости с большим количеством типов контроллеров (Modbus TCP SLAVE) в структуру ОЕМ-параметров виртуального устройства добавлены параметры swap_bytes и swap_words. В зависимости от значений параметров swap_bytes и swap_words происходит перестановка байт и слов в значении канала.

Устройство ip_client содержит три OEM-параметра: ip_addr, port, nc. В параметр ip_addr пользователь вводит IP-адрес удаленного контроллера.

В параметр port пользователь вводит номер IP-порта устройства Modbus TCP SLAVE. В спецификации [1] обозначено со ссылкой на стандарт IP [3], что в стеке TCP/IP порт 502 закреплен за протоколом Modbus, но обычно ПО поддерживает возможность изменения номера порта. Пользователь вводит в параметр nc номер элемента в массиве структур данных, указывая на структуру, в которой сохраняется информация об инициализации связи c выбранным контроллером.

Простые виртуальные устройства содержат параметры:

  • nc — номер элемента в массиве структур данных, содержащих информацию о соединении с удаленными контроллерами (ModbusTCP SLAVE);
  • node — номер удаленного контроллера;
  • type_of_address_bar — форма записи адреса: 0-[0–65535], 1-[300001–365536] и [400001–465536];
  • bar — адрес памяти;
  • swap_bytes — перестановка байтов: 0 — нет перестановки, 1 — есть перестановка;
  • swap_words — перестановка слов: 0 — нет перестановки, 1 — есть перестановка.

На рис. 2 представлен пример проекта с использованием драйвера Modbus TCP MASTER. В составе проекта находится комплексное устройство ip_client и простое устройство in_dint.

Пример проекта
Рис. 2. Пример проекта

На рис. 3 представлен порядок выполнения функций комплексного устройства ip_client и простого устройства in_dint. Порядок выполнения базовых функций Init()/Exit(), Open()/Close() и Write()/Read() устройств определен в документации на ISaGRAF.

Порядок выполнения функций драйвера Modbus TCP
Рис. 3. Порядок выполнения функций драйвера Modbus TCP

Заключение

Разработанный драйвер обладает следующими свойствами:

  • универсальность;
  • простота использования;
  • поддержка платформы qnx4.25, qnx6.3, Linux, DOS32;
  • обмен данных между драйвером ISaGRAF Modbus TCP MASTER и Modbus TCP SLAVE происходит автоматически в каждом цикле целевой системы ISaGRAF;
  • ОЕМ-параметры простых устройств содержат поля данных для обеспечения совместимости с оборудования различных производителей.

Драйвер достаточно удобен для пользователя, так как минимально отвлекает на конфигурирование соединения и обеспечения связи с удаленными контроллерами внутри разрабатываемого алгоритма. Таким образом, основное время работы пользователя используется для разработки и отладки алгоритмов АСУ.

Литература

  1. www.modbus.org (Modbus_Application_Protocol_V1_1a.pdf)
  2. www.Modbus-IDA.org
  3. RFC 791. Internet Protocol. Sep., 1981. DARPA.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *