Подключение панели оператора ELHART ECP к ПЛК Siemens S7-1200

На промышленных предприятиях различных отраслей большое распространение получили программируемые логические контроллеры (ПЛК) торговой марки Siemens (практика последних 30 лет). В некоторых случаях требуется экономичное, но не менее технологичное решение. Возможным вариантом модернизации существующих систем автоматизации (или новым самостоятельным устройством визуализации) может стать применение компонентов ELHART в качестве человеко-машинного интерфейса (HMI). В данной статье будут рассмотрены примеры подключения панелей оператора ELHART к ПЛК Сименс по различным интерфейсам и протоколам.

1. Связь панели оператора ELHART ECP-10 с ПЛК Siemens по стандарту Profinet

Далее будут описаны необходимые настройки для связи панели оператора ELHART ECP-10 с ПЛК Siemens (модель 6ES7 212-1BE40-0XB0 из семейства S7-1200) по интерфейсу и протоколу Profinet (стандарт Profinet). Все модели семейства S7-1200 поддерживают стандарт Profinet, поэтому настройка актуальна для всех контроллеров Сименс данного семейства. Проект для ПЛК Siemens выполнен в пакете программирования TIA Portal v. 17. Панель оператора выступает в качестве ведущего устройства.

1.1 Настройка ПЛК Siemens

Настройка ПЛК Сименс
Рисунок 1 — Создание конфигурации устройства в проекте
Настройка ПЛК Сименс-Выбор устройства
Рисунок 2 — Выбор устройства

Устройство (ПЛК) необходимо выбрать из списка каталога. Выбранный ПЛК появится в конфигурации проекта (в текущем примере модель ПЛК CPU 1212C AC/DC/Rly):

Настройка доступа к ПЛК Сименс
Рисунок 3 — Настройка параметров доступа к устройству

На рисунке 3 также указаны необходимые для доступа к ПЛК по протоколу Profinet настройки. Во вкладке Protection & Security в пункте Access level необходимо установить флажок Full access, в пункте меню Connection mechanisms установить флажок Permit access with PUT/GET communication from remote partner.

Во вкладке PROFINET interface [X1] в пункте Interface networked with нажать кнопку Add new subnet (появится новый интерфейс PN/IE_1), в пункте IP protocol поставить флажок Set IP address in project и установить IP-адрес ПЛК и маску сети (в примере — 192.168.0.203 и 255.255.255.0):

Настройка параметров интерфейса Profinet
Рисунок 4 — Настройка параметров интерфейса Profinet

Для наглядности процесса обмена данными можно создать программный организационный блок с изменяемыми переменными разного типа (язык программного блока - SCL):

Создание программного блока ПЛК
Рисунок 5 — Создание программного блока

В проекте необходимо объявить ряд переменных (тэгов). Это можно сделать во вкладке PLC tags, пункт Show all tags:

Настройка ПЛК Siemens
Рисунок 6 — Объявление переменных

В результате в проекте будут объявлены 2 переменных типа Bool: Tag_1 связана с первым дискретным входом ПЛК (I0.0), Tag_2 - с первым дискретным выходом (Q0.0). Пример программного кода, реализующего повторение состояния первого входа первым выходом, приведён ниже. Также, программа реализует инкрементирование переменной i (тип Int по адресу %MW0) 1 раз в секунду:

Настройка контроллера Siemens
Рисунок 7 — Программный код

Листинг кода для копирования:

IF "Tag_1" THEN
    "Tag_2" := 1;
ELSE
    "Tag_2" := 0;
END_IF;
"IEC_Timer_0_DB".TP(IN:="R_TRIG_DB".Q,
        PT:=t#1000ms);
"R_TRIG_DB"(CLK := NOT "IEC_Timer_0_DB".Q);
IF "R_TRIG_DB".Q THEN
    "i" := "i" + 1;
END_IF;

Настройка ПЛК завершена.

1.2 Настройка панели оператора ECP-10

Настройка параметров связи панели оператора с ПЛК может производится как в новом проекте, так и в существующем. В меню Настройки, пункте Настройки HMI программного обеспечения (ПО) ELHART HMI Soft необходимо задать IP-адрес панели оператора, маску и адрес основного шлюза сети:

Сетевые параметры панели оператора
Рисунок 8 — Сетевые параметры панели оператора

Важным условием является несовпадение адресов панели и ПЛК друг с другом и с другими устройствами сети.

В меню НастройкиНастройки связиУдалённое подключение необходимо выбрать вкладку Ethernet ПЛК и нажать кнопку Добавить, в появившемся окне необходимо выбрать производителя Siemens и тип устройства (в примере используется ПЛК Siemens S7-1200_Network), задать IP-адрес ПЛК и номер порта (102 или 502), номер станции по умолчанию можно оставить любым:

Настройки Ethernet ПЛК
Рисунок 9 — Настройки Ethernet ПЛК

В рабочую область окна проекта необходимо добавить два элемента: Bit-индикатор и Цифровой дисплей. Настройки элементов для опроса регистров ПЛК приведены на рисунках ниже:

Настройки ПО ПЛК
Рисунок 10 — Настройки элемента «Bit-индикатор»
Настройки ПО контроллера
Рисунок 11 - Настройки элемента «Цифровой индикатор»

Настройка панели оператора завершена.

2. Связь панели оператора ELHART ECP-10* с ПЛК Siemens по интерфейсу RS-485 и протоколу Modbus RTU (ПЛК ведущий)

2.1 Настройка ПЛК Siemens

Создание проекта и добавление ПЛК описаны в предыдущем примере. В данном примере интерфейс RS-485 реализован на коммуникационном модуле 6ES7 241-1CH30-1XB0 (CB 1241). Модуль добавляется в проект методом drag-and-drop (перетягиванием объекта мышкой):

Добавление коммуникационного модуля
Рисунок 12 — Добавление коммуникационного модуля 6ES7 241-1CH30-1XB0 (CB 1241)

Параметры порта для модуля будут задаваться программно. Для организации обмена данными в проект необходимо добавить новые типы данных и блоки данных. Новый тип данных добавляется в меню PLC data typesAdd new data type, новый блок данных из меню Program blocksAdd new blocks:

Настройка ПО контроллера Сименс
Рисунок 13 — Добавление нового типа данных
Добавление нового блока данных в ПО контроллера
Рисунок 14 — Добавление нового блока данных

В проект будут добавлены следующие типы данных: mb_comm(done: bool, error: bool, error_status: word) – для индикации работы функционального блока (ФБ) Modbus_Comm_Load_DB; mbPtrmaster(datamaster: array[0..3] of word) – указатель на область данных для хранения полученных от ведомого значений регистров; mb_master(done: bool, busy: bool, error: bool, status: word, startstop: bool, mode: word, slave_addr: word, reg_addr: word, length: word) – для инициализации ФБ Modbus_Master.

В проект будут добавлены следующие блоки данных: Data_block_1, modbus. Data_block_1 содержит переменные times: time (ввод циклического времени опроса), paneltags: array[0..3] of word и paneltagsprev: array[0..3] of word (массивы переменных для ввода и индикации на панели Simatic). Блок данных modbus содержит структуры mbmaster: mbPtrmaster, mbcomm: mb_comm, mb_master: mb_master, mbslave: mb_slave. Назначение структур соответствует назначению их типов данных (описаны выше).

В тэги ПЛК необходимо добавить переменную step: int.

Переменным slave_addr, reg_addr, length структуры mb_master и переменной times блока данных Data_block_1 необходимо задать начальные значения для запуска опроса при старте ПЛК как показано на рис. 15 — 16:

настройка ПЛК Siemens по интерфейсу RS-485
Рисунок 15 — Начальные значения переменных структуры «mb_master»
настройка ПЛК Siemens по интерфейсу RS-485
Рисунок 16 — Начальное значение переменной «times»

Для отражения возможности одновременного изменения параметров ПЛК с нескольких человеко-машинных интерфейсов добавим в проект панель оператора Siemens KTP400 Basic PN по интерфейсу Profinet (вкладка Add new device в корневом каталоге проекта):

Добавление панели оператора Simatic HMI
Рисунок 17 — Добавление панели оператора Simatic HMI

На появившемся экране на вкладке PLC connections необходимо выбрать существующий в проекте ПЛК:

Выбор ПЛК для связи с панелью Simatic
Рисунок 18 — Выбор ПЛК для связи с панелью Simatic

Панель оператора Simatic появится в дереве проекта (HMI_1). В панель необходимо добавить новый экран (пункт Add new screen) и на экран элемент I/O field:

Настройка ПЛК Сименс в программе
Рисунок 19 — Добавление нового экрана и элемента экрана

В свойствах элемента необходимо выбрать привязку к тэгу paneltags[0]. В формате данных (Format pattern) можно выбрать четыре разряда (9999):

Настройка ПО ПЛК Сименс
Рисунок 20 — Свойства экранного элемента

Программная реализация обмена по интерфейсу.

В проекте необходимо создать новый организационный блок с использованием языка программирования SCL:

Настройка ПО ПЛК Сименс
Рисунок 21 — Добавление нового организационного блока в проект

Условия работы программы: создать циклический опрос переменной ведомого устройства с возможностью одновременного изменения времени опроса при помощи панелей оператора ELHART ECP-10 (ведомое устройство по интерфейсу RS-485) и KTP400 Basic PN (связь по интерфейсу Profinet). Значение переменной ведомого является временем опроса.

Общий вид кода программы приведён на рисунке 8:

Вид кода программы
Рисунок 22 — Общий вид кода программы

Подробный листинг кода:

"IEC_Timer_0_DB".TP(IN:="R_TRIG_DB".Q,
    PT:="Data_block_1".times);
"R_TRIG_DB"(CLK := NOT "IEC_Timer_0_DB".Q);
"Modbus_Comm_Load_DB"(REQ:=#Initial_Call,
    "PORT":="Local~CB_1241_(RS485)",
    BAUD:=9600,
    PARITY:=0,
    FLOW_CTRL:=0,
    RTS_ON_DLY:=0,
    RTS_OFF_DLY:=0,
    RESP_TO:=1000,
    DONE=>"modbus".mbcomm.done,
    ERROR=>"modbus".mbcomm.error,
    STATUS=>"modbus".mbcomm.error_status,
    MB_DB:="Modbus_Master_DB".MB_DB);
IF "Data_block_1".paneltags[0] <> "Data_block_1".paneltagsprev[0] THEN
    "step" := 1;
END_IF;
IF ("step" = 1) AND ("modbus".mb_master.mode = 0) THEN
    "Data_block_1".paneltagsprev[0] := "Data_block_1".paneltags[0];
    "step" := 2;
    "modbus".mb_master.mode := 1;
    "modbus".mbmaster.datamaster[0] := "Data_block_1".paneltagsprev[0];
END_IF;
IF ("modbus".mbmaster.datamaster[0] <> "Data_block_1".paneltagsprev[0]) AND ("modbus".mbmaster.datamaster[0] <> 0) THEN
    "Data_block_1".paneltags[0] := "modbus".mbmaster.datamaster[0];
END_IF;
"Data_block_1".times := WORD_TO_TIME("Data_block_1".paneltags[0]);
IF "R_TRIG_DB".Q THEN
    "i" := "i" + 1;
END_IF;
"Modbus_Master_DB"(REQ:="R_TRIG_DB".Q,
    MB_ADDR:="modbus".mb_master.slave_addr,
    MODE:="modbus".mb_master.mode,
    DATA_LEN:="modbus".mb_master.length,
    DONE=>"modbus".mb_master.done,
    BUSY=>"modbus".mb_master.busy,
    ERROR=>"modbus".mb_master.error,
    STATUS=>"modbus".mb_master.status,
    DATA_PTR:="modbus".mbmaster.datamaster);
"F_TRIG_DB"(CLK:="modbus".mb_master.busy);
IF ("step" = 2) AND "F_TRIG_DB".Q THEN
    "modbus".mb_master.mode := 0;
    "step" := 0;
END_IF;

Строки 1..2 — вызов ФБ "IEC_Timer_0_DB" таймера для формирования периода циклического опроса. Входом запуска таймера служит «передний фронт» - выход ФБ "R_TRIG_DB". Задание времени ФБ — значением переменной «times». Входом триггера является инверсный выход таймера "IEC_Timer_0_DB".

Строка 3 — вызов ФБ "R_TRIG_DB".

Строки 4..15 — вызов ФБ "Modbus_Comm_Load_DB". ФБ конфигурирует коммуникационный модуль (в данном примере — CB 1241). Необходимые для определения входы ФБ: REQ – старт инструкции ФБ, в данном примере используется переменная Initial call, формирующая передний фронт при запуске ПЛК; PORT — выбор физического порта, в данном примере — Local~CB_1241_(RS485); BAUD и PARITY – настройка скорости передачи данных и проверки бита чётности; MB_DB — ссылка на экземпляр ФБ "Modbus_Master_DB", существующий в проекте.

Строки 16..18 — проверка изменения переменной paneltags[0] (циклическое время опроса) с панели оператора KTP400 Basic PN. В случае, если эта переменная была изменена, то переменной step присваивается значение 1.

Строки 19..24 — перевод инструкции "Modbus_Master_DB" в режим записи из режима чтения. Область данных для записи в ведомое устройство — "modbus".mbmaster.datamaster[0].

Строки 25..27 — проверка изменения переменной из области памяти панели оператора ЕСР-10. Если переменная была изменена, то циклическому времени опроса присваивается значение этой переменной.

Строка 28 — преобразование типа данных для переменной paneltags[0] из WORD в TIME.

Строки 29..31 — при срабатывании выхода ФБ "R_TRIG_DB" происходит инкрементирование переменной i - подсчёт количества запросов по интерфейсу RS-485.

Стркоки 32..41 — вызов ФБ "Modbus_Master_DB" для опроса ведомого устройства. Необходимые для определения входы ФБ: REQ — старт инструкции ФБ, используется выход ФБ "R_TRIG_DB"; MB_ADDR — адрес ведомого устройства; MODE — режим работы ФБ "Modbus_Master_DB", значение данного входа задаёт номер команды модбас (более подробное описание дано в документации на ФБ); DATA_ADDR — адрес регистра/регистров ведомого для опроса; DATA_LEN — количество опрашиваемых регистров; DATA_PTR — указатель на область данных (1 переменная или массив), используемую для обмена с ведомым устройством.

Строка 42 — вызов ФБ "F_TRIG_DB" для формирования импульса по заднему фронту флага BUSY ФБ "Modbus_Master_DB".

Строки 43..46 — завершение процесса записи нового значения в регистр ведомого и перевод ФБ "Modbus_Master_DB" в режим чтения.

Важное примечание. Для обеспечения правильной работы коммуникационного модуля CB 1241 по двухпроводному интерфейсу RS-485 (полудуплексный режим) необходимо перейти в свойства экземпляра ФБ "Modbus_Comm_Load_DB" и присвоить начальное значение 4 входу MODE:

Включение полудуплексного режима для интерфейса RS-485
Рисунок 23 — Включение полудуплексного режима для интерфейса RS-485

Настройка ПЛК и панели оператора Siemens завершена.

2.2 Настройка панели оператора ELHART ECP-10*

В качестве примера для панели оператора будет настроен порт COM2, интерфейс RS-485. В меню НастройкиНастройки связиМестные подключения необходимо выбрать вкладку СОМ2, установить флажок Slave, выбрать тип устройства Modbus RTU Server, номер станции 7 и настройки связи как показано на рисунке 10:

Настройки интерфейса панели оператора
Рисунок 24 — Настройки интерфейса панели оператора

В рабочую область окна проекта необходимо добавить элемент Цифровой ввод. Настройки элемента приведены на рисунке 11:

Настройки интерфейса панели оператора
Рисунок 25 — Настройка элемента «Цифровой ввод»

Панель оператора ECP-10 настроена для работы в качестве ведомого устройства по интерфейсу RS-485 порта COM2.

2.3 Описание подключения интерфейсов панели оператора ELHART ECP-10 и ПЛК CPU 1212C

Со стороны панели оператора используются клеммы «A+» и «B-» порта СОМ2. Со стороны ПЛК (модуля CB 1241) – «T/RA» и «T/RB». Клемма «A+» панели ЕСР-10 подключается к клемме «T/RB» модуля СВ 1241.

3. Связь панели оператора ELHART ECP-10* с ПЛК Siemens по интерфейсу RS-485 и протоколу Modbus RTU (ПЛК ведомый)

3.1 Настройка ПЛК Siemens

Для реализации данного функционала можно использовать предыдущий пример.

В существующий проект необходимо добавить 2 новых типа данных: mb_data (data: array[0..3] of word) — для создания в памяти ПЛК массива данных, опрашиваемых ведущим устройством; mb_slave (ndr: bool, dr: bool, error: bool, status: word) — для создания в памяти ПЛК флагов и регистра состояния ФБ «Modbus_Slave_DB».

В существующий блок данных «modbus» добавить структуру mb_slave с заданным типом mb_slave. Создать новый блок данных process с вложенной структурой mbholding с заданным типом «mb_data».

Настройки интерфейса контроллера Сименс
Рисунок 26 — Задание типа данных «mb_slave»
Настройки интерфейса контроллера Сименс
Рисунок 27 — Задание типа данных «mb_data»
Настройки интерфейса контроллера Сименс
Рисунок 28 — Задание структуры «mbslave»
Настройки интерфейса контроллера Сименс
Рисунок 29 — Задание структуры «mbholding»

Важное примечание. Для обеспечения доступа ведущего устройства по протоколу Modbus RTU к массиву mbholding необходимо в свойствах блока данных process снять флажок Оптимизированный доступ к блоку:

Свойства блока данных «process»
Рисунок 30 — Свойства блока данных «process»

Важное примечание. После добавления новых структур и переменных в существующие блоки данных или добавления новых блоков данных необходимо провести перекомпиляцию программной части ПЛК:

Настройка ПЛК
Рисунок 31 — Перекомпиляция проекта

В существующий программный блок Main_1 необходимо добавить вызов ФБ "Modbus_Slave_DB". На вход MB_DB ФБ "Modbus_Comm_Load_DB" добавить ссылку на экземпляр ФБ "Modbus_Slave_DB", существующий в проекте:

Настройка программируемого логического контроллера
Рисунок 32 — Добавление ФБ "Modbus_Slave_DB"

Листинг кода инструкции "Modbus_Slave_DB":

"Modbus_Slave_DB"(MB_ADDR:=7,
       =>"modbus".mbslave.ndr,
    DR=>"modbus".mbslave.dr,
    ERROR=>"modbus".mbslave.error,
    STATUS=>"modbus".mbslave.status,
    MB_HOLD_REG:="process".mbholding.data);

Строка 1 — вызов экземпляра ФБ "Modbus_Slave_DB"; вход MB_ADDR – адрес ПЛК как ведомого сети Modbus.

Строка 2 — выход NDR отображает приём нового значения регистра/регистров от ведущего сети.

Строка 3 — выход DR активен на протяжении 1 цикла после последнего удачного приёма от ведущего.

Строка 4 — выход ERROR активен на протяжении 1 цикла после последнего неудачного приёма от ведущего.

Строка 5 — выход STATUS содержит код ошибки связи.

Строка 6 — вход MB_HOLD_REG является указателем на область памяти ПЛК, содержащую регистры для обмена данными с ведущим устройством.

Конфигурация модуля связи СВ 1241 остаётся такой же, как в предыдущем примере.

Настройка ПЛК CPU 1212C в качестве ведомого сети завершена.

3.2 Настройка панели оператора ELHART ECP-10*

В качестве примера для панели оператора будет настроен порт COM2, интерфейс RS-485. В меню НастройкиНастройки связиМестные подключения необходимо выбрать вкладку СОМ2, установить флажок Master, выбрать производитель Modbus compatible, тип устройства Modbus RTU, номер станции 7 и настройки связи как показано на рисунке 33:

Настройки интерфейса панели оператора
Рисунок 33 — Настройки интерфейса панели оператора

В рабочую область окна проекта необходимо добавить 4 элемента Цифровой ввод. Настройки элементов на примере первого приведены на рисунке 9, адреса элементов начинаются с 1:

Настройки панели оператора
Рисунок 34 — Настройка элемента «Цифровой ввод»

3.3 Описание подключения интерфейсов панели оператора ELHART ECP-10* и ПЛК CPU 1212C

Со стороны панели оператора используются клеммы «A+» и «B-» порта СОМ2 (СОМ1 в случае использования панелей оператора серии ELP). Со стороны ПЛК (модуля CB 1241) - «T/RA» и «T/RB». Клемма «A+» панели ЕСР-10 подключается к клемме «T/RB» модуля СВ 1241.

4. Вывод

Таким образом, приведенное выше описание показывает, что настройка панелей оператора ELHART для связи с ПЛК Siemens по различным стандартам (Profinet и протокол Modbus RTU по интерфейсу RS-485) является достаточно несложной.

Связь по стандарту Profinet проще для реализации, чем по интерфейсу RS-485, однако цена панелей оператора без интерфейса Ethernet ниже. Большая часть настроек в обоих случаях касается стороны ПЛК Siemens.

Панели оператора ELHART серии ECP могут выступать только в качестве ведущего устройства по протоколу Profinet, а по протоколу Modbus RTU – в качестве ведущего или ведомого.

Стоит также отметить, что одна панель и один ПЛК могут быть подключены по двум интерфейсам (Profinet и RS-485) одновременно.

*Примечание. Пример настроек связи для обмена данными по интерфейсу RS-485 актуален для панелей оператора серии ELP (номер порта в этом случае - СОМ1).

Инженер ООО «КИП-Сервис»
Петров Н.П.


 Наверх