Загрузил ivan-danilov

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

реклама
Подключение панели оператора ELHART
ECP к ПЛК Siemens S7-1200
Содержание:
• 1. Связь панели оператора ELHART ECP-10 с ПЛК Siemens по
стандарту Profinet
o 1.1 Настройка ПЛК Siemens
o 1.2 Настройка панели оператора ECP-10
• 2. Связь панели оператора ELHART ECP-10 с ПЛК Siemens по
интерфейсу RS-485 и протоколу Modbus RTU (ПЛК ведущий)
o 2.1 Настройка ПЛК Siemens
o 2.2 Настройка панели оператора ECP-10
o 2.3 Описание подключения интерфейсов панели
оператора ELHART ECP-10 и ПЛК CPU 1212C
• 3. Связь панели оператора ELHART ECP-10 с ПЛК Siemens по
интерфейсу RS-485 и протоколу Modbus RTU (ПЛК ведомый)
o 3.1 Настройка ПЛК Siemens
o 3.2 Настройка панели оператора ECP-10
o 3.3 Описание подключения интерфейсов панели
оператора ELHART ECP-10 и ПЛК CPU 1212C
• 4. Вывод
На промышленных предприятиях различных отраслей большое
распространение получили программируемые логические
контроллеры (ПЛК) торговой марки 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):
Рисунок 4 — Настройка параметров интерфейса Profinet
Для наглядности процесса обмена данными можно создать
программный организационный блок с изменяемыми переменными
разного типа (язык программного блока - SCL):
Рисунок 5 — Создание программного блока
В проекте необходимо объявить ряд переменных (тэгов). Это можно
сделать во вкладке PLC tags, пункт Show all tags:
Рисунок 6 — Объявление переменных
В результате в проекте будут объявлены 2 переменных
типа Bool: Tag_1 связана с первым дискретным входом ПЛК
(I0.0), Tag_2 - с первым дискретным выходом (Q0.0). Пример
программного кода, реализующего повторение состояния первого
входа первым выходом, приведён ниже. Также, программа реализует
инкрементирование переменной i (тип Int по адресу %MW0) 1 раз в
секунду:
Рисунок 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), номер станции по умолчанию можно оставить любым:
Рисунок 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-1CH301XB0 (CB 1241)
Параметры порта для модуля будут задаваться программно. Для
организации обмена данными в проект необходимо добавить новые
типы данных и блоки данных. Новый тип данных добавляется в
меню PLC data types – Add new data type, новый блок данных из
меню Program blocks – Add 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:
Рисунок 15 — Начальные значения переменных структуры
«mb_master»
Рисунок 16 — Начальное значение переменной «times»
Для отражения возможности одновременного изменения
параметров ПЛК с нескольких человеко-машинных интерфейсов
добавим в проект панель оператора Siemens KTP400 Basic PN по
интерфейсу Profinet (вкладка Add new device в корневом каталоге
проекта):
Рисунок 17 — Добавление панели оператора Simatic HMI
На появившемся экране на вкладке PLC connections необходимо
выбрать существующий в проекте ПЛК:
Рисунок 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:
Рисунок 23 — Включение полудуплексного режима для интерфейса RS485
Настройка ПЛК и панели оператора 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 ECP10 и ПЛК 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 снять флажок Оптимизированный
доступ к блоку:
Рисунок 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 ECP10* и ПЛК 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).
Скачать