Настройка обмена по протоколу Modbus в CODESY… - АиП

Настройка обмена по протоколу Modbus в CODESYS v3.5

сodesys v.3.5Среда программирования CODESYS v3.5

Компания 3S-Smart Software Solutions GmbH выпустила новую версию среды программирования CODESYS v3, построенную по концептуально новому принципу: разработчики взяли за основу объектно-ориентированное программирование (ООП). В третьей версии появилась возможность создания программ процедурным методом либо на принципах стандартного ООП. Языки программирования дополнены новыми типами.

Третья версия создана в новом дизайне. Используется новый метод построения конфигурации контроллера, введена версионность библиотек, Target-файлов и других компонентов. Эти возможности обеспечиваются репозиторием устройств и библиотек.

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

Создание нового проекта в среде CODESYS v3.5

В первую очередь обращаем внимание на особенности создания нового проекта. Для этих целей в среде CODESYS v2.3 использовалась вкладка Конфигурация ПЛК, в CODESYS v3.5 настройка осуществляется на вкладке Устройства (в английской версии соответственно Devices).

Контроллер, интерфейс, протокол, модуль с точки зрения CODESYS v3.5 являются программными устройствами (Devices). Любое устройство, созданное в CODESYS v3.5, имеет конкретную версию. При добавлении в проект устройств CODESYS по умолчанию использует самую старшую версию. ВЕРСИИ УСТРОЙСТВ, ИСПОЛЬЗУЮЩИЕСЯ В ПРОЕКТЕ, ДОЛЖНЫ СТРОГО СООТВЕТСТВОВАТЬ ВЕРСИИ TARGETФАЙЛА КОНТРОЛЛЕРА ИЛИ БЫТЬ МЛАДШЕ.

Рис. 1. Последовательность настройки интерфейсов

Если это условие не выполнено хотя бы для одного устройства, то возникают множественные ошибки компиляции.

Далее будет подробно рассмотрено, каким образом выбираются версии устройства и Target-файла.

Среда программирования CODESYS v3.5 и Target-файлы находятся на сайте: http://www.owen.ru/catalog/25605006 в свободном доступе.

 

Режимы работы в CODESYS v3.5 по протоколу Modbus

Если сравнивать режимы, которые реализованы в CODESYS v2.3 и v3.5, то в новой версии имеется ряд ограничений, которые ввела компания 3S Software. CODESYS v3.5 поддерживает режимы Modbus Master RTU/TCP и Slave RTU/ TCP, но не поддерживает Modbus ASCII. Режим ASCII реализован в библиотеке Modbus ОВЕН.

Поддерживаемые скорости обмена в CODESYS v3.5:

  • 4800
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200

Не поддерживаемые скорости обмена[1] в CODESYS v3.5:

  • 1200
  • 2400
  • 14400
  • 28800

Нумерация портов в CODESYS v3.5

При настройке интерфейсов RS-232/485 необходимо указывать номера портов. Номер порта в CODESYS v3.5 не соответствует номеру, указанному на корпусе прибора. Соотношение номеров портов на корпусе и в CODESYS v3.5 находятся в руководстве по эксплуатации, входящем в комплект поставки оборудования. В табл. 1 приведены номера портов для панельных контроллеров серии СПК.

Номер порта на корпусе прибора

Нумерация портов в среде программирования CODESYS

СПК105[2]

СПК107

СПК110

СПК207

СПК210

COM1

2 (RS-232)

3 (RS-485)

2

COM2

 

-

3

COM3

-

-

4

 

Общая методика конфигурирования интерфейсов в CODESYS v3.5

Контроллеры ОВЕН оснащены универсальными интерфейсами RS-232/485. Настройка интерфейсов в CODESYS v3.5 имеет строго определенную последовательность (рис. 1).

Во-первых, необходимо выбрать интерфейс (232 или 485) и установить режим работы порта – Master или Slave. Если порт настраивается для режима Slave, то достаточно указать перечень регистров, которые будут участвовать в обмене; если в режиме Master, то необходимо описать опрашиваемые устройства и указать регистры каждого из них.

Настройка интерфейсов

Для добавления в проект интерфейса необходимо перейти на вкладку Устройства (рис. 2). В дереве объектов выбрать настраиваемый контроллер, например, СПК107 с Target-файлом 3.5.2.0. Правой кнопкой выбрать пункт и в открывшемся меню – пункт Добавить устройство (рис. 2).

Откроется диалоговое окно (рис. 3) с перечнем устройств, поддерживаемых CODESYS. Чтобы выбрать необходимую версию устройства, нужно выставить флаг на пункте . Для добавления COM-порта нужно нажать на «+» возле пункта Modbus. В меню (рис. 4) следует выделить пункт (версия 3.4.0.0 меньше версии Target-файла 3.5.2.0) и добавить устройство, в данном случае – Modbus COM. Дерево объектов имеет вид, показанный на рис. 5.

Зададим настройки COM-порта. Если дважды нажать на , откроются его настройки (рис. 5). На вкладке Конфигурация последовательного порта Modbus следует указать номер порта, скорость передачи данных и другие параметры. Для контроллеров серии СПК2хх обмен можно реализовать через Ethernet. Он добавляется аналогично COM-порту: выбирается устройство , в открывшемся меню из списка Ethernet-адаптер добавляется устройство Ethernet (рис. 6). В контроллерах СПК207-03-CS-WEB использовался Target-файл версии 3.5.0.40. Вкладка порта Ethernet не имеет активных настроек, так как используются системные настройки.

Настройка мастера сети

После добавления интерфейсов необходимо установить режимы работы устройств (Master или Slave). Настройка режимов Modbus Master или Modbus Slave для разных интерфейсов практически одинакова. Сначала следует выбрать соответствующий интерфейс (например, Ethernet, рис. 7), правой кнопкой мыши вызвать окно Добавить устройство.

Диалоговое окно порта Ethernet показано на рис. 8. Диалоговое окно COM-порта показано на рис. 9. В зависимости от выбранного порта настраивается режим мастера сети. В данном примере используется ОВЕН СПК207 версии 3.5.0.40, поэтому версию мастера для COM-порта и Ethernet можно выбрать 3.4.3.х или 3.5.0.0.

Для порта Ethernet:

 

Для порта COM:

 

После добавления режима Master (RTU, TCP) необходимо его настроить. Для этого в дереве объектов нужно дважды выбрать добавленного мастера. Откроется окно настроек, где необходимо открыть вкладку . На рис. 10 показаны настройки для Ethernet: Таймаут ответа – время ожидания мастером ответа от Slave-устройства. Если за установленное время Slave не отвечает, Master начинает опрос следующего Slave-модуля. Выбранное значение (1000, рис. 10) будет по умолчанию использоваться для всех Slave-устройств. Для каждого модуля можно задавать свое время ожидания на вкладке Конфигурация Slave. Таймаут сокета – максимальное время ожидания мастером входящих пакетов TCP/IP.

Настройка для COM-порта аналогична Ethernet, только вместо таймаут сокета используется параметр: время между фреймами – интервал между ответом (или окончанием ожидания) и следующим запросом. Этот параметр может использоваться для увеличения скорости передачи.

Настройка Slave-устройств

После добавления мастера необходимо добавить Slaveустройства. Для этого на вкладке Устройства выбирается мастер и правой кнопкой добавляются Slave-устройства (рис. 11).

В данном примере используется СПК207 с Target-файлом 3.5.0.40.

Добавление Slave-устройства для мастера Ethernet-порта: . Добавление Slave-устройства для мастера COM-порта: . После проведенных операций дерево объектов имеет вид, показанный на рис. 12. Для удобства порты можно переименовывать, на рис. 12 показано, что порт Modbus COM переименован в COM1.

Конфигурирование Slave-устройств

После добавления Slave-устройств переходим к их конфигурированию. Для этого в дереве объектов следует выбрать Slave-устройство и двойным кликом открыть окно настроек. Slave-устройство, подключенное к мастеру Ethernet-порта (рис. 13), имеет следующие настройки: IP Адрес Slave – IP адрес устройства, которое опрашивает мастер сети.

Unit - ID – сетевой адрес устройства, который может принимать значения от 1 до 247, и используется для идентификации узла в сети.

Таймаут ответа устанавливается для каждого Slave-модуля и имеет приоритет по отношению к соответствующему параметру Master.

Порт – номер порта для Slave-модуля. Slave-устройство, подключенное к мастеру COM-порта, имеет аналогичные настройки.

Добавление каналов

Дальнейшая настройка независимо от типа интерфейса сводится к заданию канало[3]в (одного или нескольких регистров) и указанию режима работы канала – чтение или запись с последующей привязкой к переменным конфигурации.

Для добавления каналов следует перейти на вкладку Канал Modbus Slave соответствующего Slave-устройства и нажать на кнопку Добавить канал (рис. 14). Откроется диалоговое окно (рис. 15) с параметрами, приведенными в табл. 2.

После того как Slave-устройству будут заданы каналы и режимы работы, следует выполнить привязку читаемых или задаваемых регистров к переменным проекта на вкладке Соотнесение входов/выходов. Для этого необходимо выбрать канал, два раза кликнув по полю с названием «Переменная» (рис. 16). После этого поле станет

Таблица 2. Параметры каналов

Группа параметров «Канал»

Имя

Название канала

Тип доступа

Чтение регистра хранения (код функции 03) Чтение входных регистров (код 04) Запись в один регистр (код 06) Запись в несколько регистров (код 16) Запись/чтение регистров (код 23)

Триггер

CYCLIC: запрос выполняется периодически RISING_EDGE: запрос выполняется по переднему фронту логической переменной (для запуска сервисов Modbus из приложения в любое время необходимо установить триггер в RISING_EDGE)

Время цикла

Если триггер имеет значение CYCLIC: интервал между опросами в мс (должен быть равен или кратным времени цикла приложения)

Комментарий

Краткое описание реального смысла данных

Группа параметров «Регистр READ»

Сдвиг

Номер регистра для чтения (0-65535)

Длина

Количество регистров (=слов), которые будут прочитаны

Обработка ошибок

Обработка данных в случае возникновения ошибок соединения: «Set to ZERO» устанавливает все значения в 0. Keep last Value сохраняет предыдущее значение.

Группа параметров «Регистр WRITE»

Сдвиг

Номер регистра для записи (0-65535)

Длина

Количество регистров (=слов), которые будут записаны

 

активным для редактирования, и появится кнопка . Если на нее нажать, то произойдет вызов диалога «Ассистент ввода», с помощью которого можно связать регистр с переменной проекта (рис. 17).

Если регистры привязаны к переменным, то при запуске программы на вкладке Соотнесение входов/выходов отображаются опрашиваемые значения. Если регистры к переменным не привязаны, но эти данные необходимо просмотреть, то следует выставить галочку в окне .

Если мастер сети опрашивает несколько устройств в сети, то по описанной выше методике добавляются и настраиваются очередные Slave-устройства. На рис. 18 приведен пример дерева объектов с задействованным портом Ethernet и двумя serial-портами. Все три порта настроены в режиме Master, и каждый из них опрашивает по четыре Slave-устройства.

У Slave-устройства есть вкладка Modbus Slave Init, которая предназначена для предварительной инициализации данных, например, если перед началом обмена устройству необходимо задать настройки (например, указать тип датчика). Методика добавления регистров для инициализации аналогична методике добавления каналов, есть только еще один пункт – значение инициализации.

Настройка устройства в режиме Slave

Если устройство нужно настроить на работу в режиме Slave, то после добавления интерфейсов необходимо добавить Slave-устройства. Для этого на вкладке Устройства выбирается интерфейс и правой кнопкой добавляется режим Slave: для порта Ethernet (рис. 19), для COM-порта (рис. 20).

После настройки режима Slave необходимо задать основные настройки устройств для Modbus Slave TCP (рис. 21), для Modbus Slave RTU (рис. 22).

Таймаут: время ожидания (мс) кратное 500 мс.

Slave-порт: номер порта для Slave-модуля.

ID элемента: сетевой адрес устройства Modbus.

Регистры временного хранения: число регистров, доступных только для чтения функцией 04. Входные регистры: число регистров, доступных для чтения функцией 03 и записи функцией 16.

После задания основных настроек регистры можно связать с переменными программы на вкладке «Соотнесение входов/выходов».

На рис. 23 показан пример дерева объектов для СПК207, порт Ethernet и порты COM2 и COM3 настроены на режим работы Slave.

После выполнения описанных операций необходимо подключить настраиваемое оборудование к СПК и убедиться в корректности обмена. Таким образом, настройка СПК по протоколу Modbus завершена.

 


[1] На этих скоростях контроллеры ОВЕН поддерживают работу в ОС Linux, но возможность работы непосредственно в среде программирования отсутствует.

[2] В СПК105 интерфейсы RS-485 и RS-232 выведены на один порт COM1, что обеспечивает возможность одновременной работы и по RS-485, и по RS-232 в отличие от остальных контроллеров серии СПК.

[3] Канал – это группа адресов, расположенных последовательно друг за другом и опрашиваемых одной функцией.