Навчальні матеріали з автоматизації технологічних процесів та виробництв, розроблені спільнотою
Мета роботи – навчитися працювати з базовими елементами ISA-88 в zenon Batch Control: етапами та апаратами, рецептами, мовою PFC та тегами.
Метою даного проекту є розуміння того, як працює модуль Batch Control, як можна створювати проекти zenon з Batch Control з незалежним один від одного створенням і виконанням рецептів. У зв’язку з цим, основний акцент робиться на передачу знань про модуль Batch Control і менше про розробку функціональних рецептів, які відповідають вимогам реального виробництва.
Модуль Batch Control надає можливість автоматизувати періодичні виробничі процеси, що орієнтовані на виготовлення партій. Модуль відповідає вимогам стандарту ANSI/ISA-88.01-1995 також відомого як ANSI/ISA-S88 та IEC-61512 .
Модуль розроблений таким чином, щоб бути незалежним від реалізації систем керування. Це значить, що передача даних відбувається через всі доступні драйвери zenon з будь-якими ПЛК або навіть віддаленими терміналами RTU. Ці пристрої можуть виконувати тільки дії процесу. Вся обробка рецепта проводиться на комп’ютері в виконавчій машині рецептів REE (Recipe Execution Engine). Для змін в Batch рецепті (надалі рецепт) або для створення нових майстер рецептів (Master Recipe), ніяких змін в коді ПЛК проводити не потрібно.
Модуль слідує жорсткому розділенню процедури рецепту (згідно ISA процедурної моделі керування) і виконання технологічних функцій (згідно ISA процесної моделі), як описано в ISA-S88, главі 5.2.1.
Розглянемо реальний приклад для легшого розуміння. Це проект для керування об’єктом «Танк перемішування» з використанням Batch Control. Припускаємо, що «Танк» можна наповнювати і вивантажувати, а його вміст – перемішувати. Всі інші функції і властивості «Танку» можуть бути вільно означені.
Коротко розглянемо основні поняття.
Рецепт (Recipe) є об’єктом, який містить мінімальний набір інформації, що однозначно ставить вимоги до виробництва для конкретного продукту. Рецепти надають спосіб для опису продуктів і способи вироблення цих продуктів. Залежно від конкретних вимог підприємства, можуть існувати різні типи рецепту. Проте, в стандарті ISA-88 обговорюються лише чотири типи рецептів:
загальний рецепт (на рівні підприємства):
місцевий рецепт (на рівні виробничою площадки);
майстер рецепт (шаблонний рецепт технологічної комірки);
керівний рецепт (конкретний екземпляр рецепту для кожної партії).
Майстер рецепт (Master recipe) орієнтований на конкретну технологічну комірку і є «шаблоном» для керівного рецепту, що використовується для створення однієї партії продукту (напівпродукту). Він може бути отриманий із загального або місцевого рецепту, однак може бути створений як незалежна сутність, якщо автор рецепту має знання про необхідний процес і продукт.
Центральним елементом рецептів є етапи (phase). Вони призначені для передачі значень в ПЛК і можуть керувати виконанням рецепту з використанням умов. Кожен етап розміщений в апараті (unit, технологічний вузол). Апарати представляють собою частини машин або обладнання, наприклад, таких як Танк. Цей зв’язок відображається в zenon у вигляді деревовидної структури. Ця структура відображається у вікні детального перегляду (detail window), якщо натиснути по розділу проекту «Batch Control» в дереві проекту.
На рис.2.1 показана деревовидна структура апаратів в проекті zenon. Там є два апарати під головним вузлом («Unit1» і «Unit2»). «Unit1» містить дваетапи «Phase1» і «Phase2». У правій частині вікна деталізації відображаються властивості або вміст об’єкта, виділеного в дереві.
Рис.2.1. Деревовидна структура обладнання з апаратами (Unit)
Етап може взаємодіяти з контролером за допомогою тегів. При цьому проводиться різниця між командними тегами (command tags) і зворотними тегами (return tags):
Командні теги використовуються для запису значень в контролер.
Зворотні теги можуть бути використані для отримання значень з контролера.
В обох випадках фактичний зв’язок здійснюється за допомогою змінних (variable). Тому з кожним тегом повинні бути пов’язані змінні. Командні теги в свою чергу поділяються на ініціювальні теги (initial tags) і теги значень (value tags):
ініціювальні теги – це командні параметри, які задаються перед запуском етапу;
теги значень – це командні параметри, які передаються в контролер під час роботи етапу за їх зміни.
Запустіть редактор zenon і створіть новий робочий простір File->Workspace->New
з іменем BatchWSP
File -> Proect new
з іменем BATCHLAB
. Відмовтеся від помічника.Simulation - static
(рис.2.2).Рис.2.2. Вставка драйверу Modbus TCP/IP та налаштування його на режим імітації
Batch Control ->Unit -> New Unit
Unit з назвою «Танк1» (рис.2.3).Рис.2.3. Створення нового апарату (Unit)
New phase
.Рис.2.4. Етапи апарату «Танк1»
Рецепти можуть бути створені і виконані тільки в Runtime (режимі виконання). Для цього попередньо необхідно створити екран типу BatchControl
.
Основний шаблон екрану
– десь на 8/9 верхньої частини вікна для відображення основних екранів.
Шаблон меню
– десь на 1/9 нижньої частини вікна для екранів з кнопками перемикання.
Шаблону меню
і дайте йому ім’я Екран меню
.Screen Switch
) з іменем Перемикання на екран меню
, та вкажіть новостворену сторінкуЕкран меню
стартовим, якщо він таким не являється (Властивості проекту -> Graphical Design -> Start Screen
)Application -> Reload project online
з іменем Перезавантажити
.Екран меню
. Добавте на екран кнопку.Перезавнтажити
. Напишіть напис на кнопці Reload
Основний шаблон екрану
(надалі основного шаблону) і дайте йому ім’я Екран Batch
. Змініть тип екрану на Batch Control
.Рис.2.5. Додавання елементу Recipe Editor
Для екранів типу Batch Control доступні і інші елементи, але тут зосередимося тільки на Recipe Editor, додаткові елементи керування будуть додані пізніше.
Створіть функцію zenon перемикання на даний екран. У вікні налаштування фільтра залиште все за замовченням і натисніть «ОК». Дайте ім’я функції, наприклад Перемикання на екран Batch
.
На екрані Екран меню
(надалі по тексту будемо вживати просто “екран меню”) проекту створіть нову кнопку і позначте її як Екран Batch
. Прив’яжіть до неї функцію Gеремикання на екран Batch
.
За допомогою цих кількох кроків, Ви створили основу для створення рецепта в Runtime і можливість його виконати.
На цьому кроці Ви будете створювати і виконувати свій перший рецепт.
Запустіть zenon Runtime.
Використовуючи кнопку на панелі меню, перейдіть на екран «Екран Batch».
Покажіть список майстер рецептів в редакторі рецептів. Для цього натисніть на іконку в правому нижньому кутку редактора рецептів (recipe editor) і виберіть Master Recipe List (рис.2.6). З’являється панель переліку майстер рецептів, яку можна рухати і закріплювати в межах редактора рецептів.
Рис.2.6. Відображення списку майстер рецептів в Recipe Editor
Рис.2.7. Вікно створення нового рецепту
PFC recipe
і введіть в полі name назву рецепту Мийка
. Введіть в полі Description
текст для опису Рецепт для мийки танку
. Натисніть Ok
.Після підтвердження в редакторі рецептів автоматично відкривається новий майстер рецепт.
Рецепт не має ніяких інших елементів за винятком стартового елемента і кінцевого елемента. Він знаходиться в режимі редагування, що показано зображенням олівця на лівій частині панелі статусу (внизу редактора). У цьому режимі рецепт може бути тільки відредагований. Для виконання ж рецепту його необхідно перевести в тестовий режим.
Insert phase
в панелі інструментів і помістіть етапи на робочу область рецепту.При переміщенні покажчика миші на рецепт, позиція, в яку може бути вставлений елемент, буде виділена зеленим кольором. Позиція, де вставка неможлива, виділена червоним кольором.
Наповнити
і натисніть Ok
.Після вставки етапу можна відразу додавати інші етапи, або перейти в режим режим вибору через клавішу Esc.
Вставте два інші етапи, спочатку Перемішувати
а потім Вивантажити
.
Переключіться в режим редагування, натиснувши кнопку Esc
.
Перемістіть елемент завершення процедури рецепту до останнього етапу, як показано на рис 2.8.
Рис.2.8. Процедура рецепту
Рецепт створено. Тепер необхідно перевірити його роботу:
Рис.2.9. Переведення в режим тестування
У рядку заголовка редактора рецептів тепер можна побачити, що рецепт знаходиться в тестовому режимі, а не в режимі редагування (рис.2.10).
Рис.2.10. Панель редактору в режимах редагування та тестування
Start Recipe
на панелі інструментів редактора рецептів.Всі три функції змінюють колір в зелений один за іншим, а потім синій. Колір заливки показує стан етапу.
Колір | Значить |
---|---|
зелений | Етап зараз виконується |
синій | Етап завершив виконання. |
Про інші статуси етапів будуть розглянуті пізніше.
Створений рецепт не виконує зв’язку з PLC, тому не може служити для керування обладнанням. Тому потрібно створити теги, як будуть взаємодіяти з ПЛК через змінні.
Спочатку необхідно створити змінні що з’єднані з джерелом в ПЛК.
Variables
створіть нову зміннуMODRTU
,тип даних REAL
, назву змінної вкажіть Заданий рівень наповнення T1
і натисніть Finish
Addressing
залиште все за замовченням:
Driver Object Type = Holding Register
Data Type = REAL
Net Address = 0
Offset = 0
Value Calculation
змініть:
Value Range PLC
: 0-100Value adjustment linear
: 0-100General -> Measuring unit
.Тепер необхідно створити параметри для етапу Наповнити
.
Наповнити
у «Танк1». У області списку відображається список параметрів обраного етапу, який на даний момент порожній (рис.2.11).New value tag
Рис.2.11. Список параметрів для етапу
У список вставляється рядок, який представляє собою тег значення (value tag) з іменем Parameter1
. Стовпці списку показують властивості тега, які також показані у вікні властивостей.
General
.Властивість | Опис |
---|---|
Name(Ім’я) | Довільне ім’я тегу. Мусить бути унікальним в межах етапу (phase). |
Description(Опис) | Текст для детального опису тегу (не обов’язково). |
Type (Тип) | Тип тегу: Initial , value або return . Тип тегу може бути змінений у будь який момент часу. |
Tag data type(Тип даних тегу) | Binary , numerical , string або duration (time) . Означує тип тегу і фільтри для вибору змінної . |
Variable linking(Прив’язка до змінної) | Прив’язка змінної до тегу і його властивостей . |
Write set value
.Властивість | Опис |
---|---|
TAG value (Значення тегу) | Значення яке має бути записане в змінну при виконанні етапу. |
Min./Max. Value (Мін. максим значення) | Межі, в яких у режимі виконання може бути змінено значення тегу. |
Min./Max. Value of variable (Мін. максим значення змінної) | Діапазон значень змінної. Межі тегу повинні бути в межах змінної. |
Edit tag (редагування тегу) | |
Change able in the master recipe (Змінюваний в майстер рецепті) | Активний: значення тегу можна редагувати в режимі виконання в рецепті. |
Змініть ім’я (name) для тегу в Заданий рівень наповнення
.
Введіть опис (description) Вказується заданий рівень, після досягнення якого завершиться заповнення танку
.
Змініть тип даних тегів (tag data type) на numeric
.
Натисніть на кнопку вибору змінної Variable -> Variable Linking (…)
і виберіть змінну Заданий рівень наповнення T1
.
Write Set Value
створеного тегу етапу, де видно межі та одиниці вимірювання змінної.
Change able in the master recipe
.tag value = 20
, Min.Value = 10
, Max.Value = 100
.Ці налаштування вказують, що як тільки етап Наповнити
почне виконуватися, то в Заданий рівень наповнення T1
записується значення 20. Однак це значення може бути змінене в рецепті в межах від 10 до 100.
Екран Batch
елемент Numerical Value
, в якому відображається значення змінної Заданий рівень наповнення T1
.Reload
, якщо zenon Runtime запущений, або запустіть Runtime.Batch
і в режимі тестування запустіть на виконання рецепт Мийка
і спостерігайте за значенням змінної. Як тільки етап Наповнити
активується відображене значення змінюється з 0% на 20%.Розглянемо зміну тегу в рецепті. Якщо заданий рівень заповнення потрібен не 20%, а 50%, то це можна зробити безпосередньо в режимі Runtime, без необхідності змінювати конфігурацію проекту в редакторі. Для цього необхідно виконати наступні дії.
Переключіть рецепт в режим редагування. У Runtime зробіть подвійний клік на етапі Наповнити
. З’являється діалогове вікно для настройки етапу.
Parameters
. Тут відображається список параметрів етапу.Column selection...
залиште тільки колонки Name
, Tag value
, Min.value
, Max.value
Ok
, у вікні параметрів буде відображатися тільки вибрані параметри (рис.2.12)Рис.2.12. Налаштування параметрів етапу
change the tag properties
(рис.2.13).Рис.2.13. Налаштування властивостей тегу в Runtime
Змініть поле tag value
рівним 50. Підтвердьте дії кнопкою Ок
. Збережіть рецепт.
У тестовому режимі виконайте рецепт знову. Значення змінної тепер змінено в 50%.
Значення тегів в редагованих в zenon Editor майстер рецептах завжди оновлюються тільки там. У Runtimeзавжди можна синхронізуватися з цим значенням (кнопка ).
Назва змінної | Data type | Addresing Offset | Range | Measuring Unit |
---|---|---|---|---|
Задана швидкість перемішування Т1 | Real | 2 | 0-100 | об/хв |
Заданий нижній рівеньТ1 | Real | 4 | 0-100 | % |
Перемішувати
і Вивантажити
:Етап | Тег | Тип | Змінна | Tag Value | Min-Max Value | Додаткові налаштування |
---|---|---|---|---|---|---|
Перемішувати | Задана швидкість перемішування | numeric | Задана швидкість перемішування Т1 | 15 | 0-100 | Change able in the master recipe = true |
Вивантажити | Заданий нижній рівень | numeric | Заданий нижній рівеньТ1 | 5 | 0-50 | Change able in the master recipe = true |
Екран Batch
розмістіть Numerical Value
для встановлення та зміни значення «аданий нижній рівеньТ1
Static Text
підпишіть поля для обох заданих рівнів (наповнення та нижній).Є дві можливості, доступні для того, щоб вплинути на часові налаштування виконання етапу. Одна з них є minimum duration of execution
. За допомогою цієї властивості етапу, можна означити, як довго етап повинен залишатися активним. У нашому випадку це може бути корисним, наприклад, для етапу Перемішувати
. Необхідно означити, що етап повинен бути активним протягом 10 секунд.
Перемішувати
. Введіть для властивості minimum duration of execution
, в групі General
значення 0T00:00:10
.Тепер етап Перемішувати
залишається активним протягом 10 секунд до того, як активізується наступний етап. Хронологічна послідовність етап показується в спливаючій підказці етапу.
На хронологічну послідовність виконання рецептів можуть вплинути умови. З їх допомогою можна запросити інформацію про стан обладнання і перейти до наступного етапу рецепта в потрібний час. Кожний етап передбачає дві умови, які можуть бути налаштовані в редакторі:
Input lock
(Вхідне блокування);
phase done condition
(Умова закінчення етапу).
Спочатку налаштуємо phase done condition
для етапу Наповнити
. Цей етап повинен залишатися активним до того часу, поки не буде досягнутий заданий рівень заповнення. Тому необхідно отримувати поточний рівень заповнення.
Cтворіть нову змінну Рівень Т1
(для Modbus TP/IP, Real, Offset=6, 0-100%).
На сторінці Екран Batch
розмістіть Numerical Value для встановлення та зміни значення Рівень Т1
.
return tag
) до етапу Наповнити
.Задайте ім’я Плинний рівень
, тип REAL та прив’яжіть до змінної Рівень Т1
.
Відкрийте властивості General
етапу Наповнити
та для phase done condition
натисніть на кнопку …
.
За допомогою кнопки Add
добавте два параметри Плинний рівень
і Заданий рівень наповнення
Рис.2.14. Налаштування умови закінчення етапу
Підтвердьте діалог кнопкою OK.
Аналогічним чином добавте зворотний тег Плинний рівень
до етапу Вивантажити
та налаштуйте відповідні умови завершення етапу.
Екран Batch
. Переведіть рецепт в режим редагування потім у тестовий.Етап Наповнити
тепер буде залишатися активним до того часу , поки значення змінної РівеньТ1
не стне такою ж або більше, ніж значення Заданий рівень наповнення Т1
.
Вивантажити
На практиці, перевірка досягнення заданого значення як правило, не перевіряється в zenon. Замість цього, це робить ПЛК, і таким чином завершує етап, передаючи цю інформацію в zenonза допомогою параметра стану.
Для умов може бути налаштований час очікування. Таким чином, можна реагувати на умови, які не були виконані. Після того, як час очікування минув, етап отримує червону рамку, а також червоний значок помилки, який показує, що очікуваний час був перевищений. Ця інформація також відображається в підказці.
Означимо maximum execution duration
10 секунд для заповнення резервуара. Для цього виконайте наступні дії:
У zenon Editor відкрийте властивості для етапу Наповнити
.
Введіть значення 0T 00:00:10
для Maximum execution duration
в групі General
.
Скомпілюйте файли Runtime, виконайте функцію перезавантаження Runtime.
Перезавантажте рецепт (переведіть в режим редагування потім знову тестування). У режимі тестування дочекайтеся поки перший етап буде виконуватися більше 10 секунд.