Управление на рецепти Allen-Bradley с UDT масиви и интерфейс за редактиране на HMI
Научете се да създавате базирано на HMI редактиране на рецепти за AB Logix 5000 с помощта на масиви от UDT и инструкции COP за постоянно съхранение на параме...
Обработката на рецепти в платформите Logix работи най-добре, когато HMI никога не записва директно в историческия масив. Надеждният модел използва три тага: Recipe_Storage като UDT масив с дължина 50, Recipe_Display като единичен UDT екземпляр за операторския екран и Recipe_Index като DINT, който избира коя съхранена рецепта се отразява в структурата за показване. Инструкциите за копиране (COP) преместват данни при промяна на индекса и отново при запис, така че операторът винаги редактира временен буфер, а архивът остава съгласуван след прекъсвания на захранването.
Мониторът на таговете в Logix показва Recipe_Storage[50], Recipe_Display и Recipe_Index, използвани за редактиране на рецепти чрез HMI.
Дефинирайте UDT веднъж с всяка необходима за процеса зададена стойност — температури, таймери, скорости, продуктови кодове и маски за блокировки — след което инстанцирайте Recipe_Storage като UDT[50]. Recipe_Display трябва да бъде от идентичен UDT тип, а не свободно свързан набор от атомарни тагове. Еднородните типове опростяват изчисляването на дължината за COP и предотвратяват незабелязано отрязване на данни при по-късно добавяне на членове.
Ограничаване на индекса и път за зареждане
Ограничете Recipe_Index в включителния диапазон от 0 до 49, преди да се изпълни каквато и да е COP операция. Неограничен индекс от обект за цифрово въвеждане може да предизвика грешка в COP или да извлече неопределена памет в зависимост от начина, по който в проекта се обработват границите на масива. При нарастваща промяна на Recipe_Index (или при изрично натискане на бутона за зареждане) копирайте Recipe_Storage[Recipe_Index] в Recipe_Display. HMI се свързва изключително с членовете на Recipe_Display. Това единствено правило премахва състезателните условия, при които два екрана записват в различни позиции на масива, докато операторът все още настройва стойностите.
// Псевдокодова структура
if Recipe_Index < 0 then Recipe_Index := 0;
if Recipe_Index > 49 then Recipe_Index := 49;
if IndexChanged or LoadPressed then
COP(Recipe_Storage[Recipe_Index], Recipe_Display, 1);
if SavePressed then
COP(Recipe_Display, Recipe_Storage[Recipe_Index], 1);
Екранът за рецепти в HMI е свързан само с Recipe_Display, като действията Load/Save задействат COP процедури в контролера.
Път за запис, запазване и поведение при изтегляне
При запис копирайте Recipe_Display обратно в Recipe_Storage[Recipe_Index]. Тъй като Recipe_Storage се намира в таговете на контролера, стойностите се запазват след прекъсване на захранването, когато проектът е конфигуриран за нормално запазване на таговете. Данните се запазват и при изтегляне на проект, когато изберете запазване на стойностите на таговете; приемайте тази отметка като част от стандартната оперативна процедура за рецепти, а не като незадължително удобство. Операторите трябва да разбират, че изтеглянето на проект с активирана опция „реинициализиране на таговете“ ще изтрие внимателно настроените рецепти, освен ако не съществува офлайн резервно копие.
Към работните процеси за импортиране на CSV трябва да се подхожда критично. Много помощни програми за HMI или за прехвърляне от Excel към тагове създават имената на таговете, без надеждно да актуализират стойностите на членовете във вложени UDT, особено когато заглавията на колоните се различават от имената на членовете в UDT. Предпочитайте изрична процедура за импортиране, която валидира всяко поле, или зареждайте от надежден L5X/експорт на тагове след масови редакции. Не приемайте, че зелен банер „импортирането завърши“ означава, че Recipe_Storage[n].Setpoint вече е равен на стойността в клетката на електронната таблица.
| Таг | Тип | Свързване с HMI? | Предназначение |
|---|---|---|---|
| Recipe_Storage | UDT[50] | Не | Енергонезависим архив на рецепти |
| Recipe_Display | UDT | Да, само той | Буфер за редактиране от оператора |
| Recipe_Index | DINT | Да (селектор) | Активна позиция 0–49 |
Насоки за HMI интерфейса
- Предоставете Load и Save като дискретни импулсни битове, обработвани в контролера, а не като директни записи в масива от панела.
- Показвайте ограничения индекс и поле само за четене „съхранено име“, копирано от UDT за показване, за да могат операторите да потвърдят коя позиция е активна.
- Забранявайте Save, докато машината работи в цикъл, ако членовете на рецептата влияят на параметрите за движение или температура в рамките на партидата.
- Регистрирайте събитията за Save с идентификатора на оператора и индекса за проследимост при регулирани производствени линии.
Проверка на границите на индекса и запазването при изтегляне
Извършете тест, като заредите позиция 0, редактирате маркерна стойност в Recipe_Display, запишете я, промените индекса на 1, след което се върнете на 0 и заредите отново. Маркерната стойност трябва да се появи отново само ако Save е бил изпълнен. Изключете и включете контролера и потвърдете, че Recipe_Storage все още съдържа маркерната стойност. Въведете индекс извън допустимия диапазон от HMI и проверете ограничаването. Изпробвайте импортиране на CSV в резервна система и сравнете членовете един по един с файла, преди да се доверите на този процес в производствена среда.
Избягвайте свързването на панела към Recipe_Storage[Recipe_Index].Member. Индиректното адресиране на HMI към масиви е по-трудно за одит и създава риск от запис в неправилна позиция, когато тагът на индекса и екранът се актуализират с различна честота. Моделът с UDT за показване се мащабира безпроблемно, когато по-късно разширите UDT, добавите нива на сигурност или пренесете същия модел на рецепти между множество клетки с PLC и PAC системи, които споделят общ работен процес за операторите.
За автора
Mark Townsend | Старши инженер по автоматизация – системи Allen-Bradley
Mark Townsend е старши инженер по автоматизация с над 18 години опит с платформите Allen-Bradley, включително ControlLogix, CompactLogix и наследените SLC-500. Ежедневната му работа включва логика в RSLogix / Studio 5000 и въвеждане в експлоатация на HMI системи FactoryTalk View при остарели и смесени паркове от оборудване.