Allen-Bradley receptkezelés UDT-tömbökkel és HMI-szerkesztőfelülettel
Tanulja meg az AB Logix 5000 HMI-alapú receptszerkesztésének létrehozását UDT-tömbök és COP-utasítások használatával a paraméterek tartós tárolásához.
A Logix platformokon a receptek kezelése akkor működik a legjobban, ha a HMI soha nem ír közvetlenül az előzményeket tartalmazó tömbbe. Egy tartós megoldás három taget használ: a Recipe_Storage egy 50 elemű UDT-tömb, a Recipe_Display egyetlen UDT-példány a kezelői képernyő számára, a Recipe_Index pedig egy DINT, amely meghatározza, hogy a tárolt receptek közül melyik jelenjen meg a kijelző struktúrájában. A COP utasítások indexváltozáskor, majd mentéskor is adatokat mozgatnak, így a kezelő mindig egy ideiglenes pufferen dolgozik, miközben az archívum tápfeszültség-kimaradás után is konzisztens marad.
Logix tagfigyelő, amely a Recipe_Storage[50], a Recipe_Display és a Recipe_Index használatát mutatja a HMI-hez kapcsolódó receptszerkesztéshez.
Definiáld egyszer az UDT-t a folyamathoz szükséges összes beállítási értékkel — hőmérsékletekkel, időzítőkkel, sebességekkel, termékkódokkal és reteszelési maszkokkal —, majd példányosítsd a Recipe_Storage taget UDT[50] típusként. A Recipe_Display típusa pontosan ugyanaz az UDT legyen, ne lazán kapcsolódó atomi tagek halmaza. Az egységes típusok egyszerűvé teszik a COP hosszszámításait, és megakadályozzák a csendes csonkolást, amikor később új tagokat adsz a struktúrához.
Indexkorlátozás és betöltési útvonal
A COP végrehajtása előtt korlátozd a Recipe_Index értékét a 0 és 49 közötti, szélsőértékeket is tartalmazó tartományra. Egy numerikus beviteli objektumból származó, korlátozatlan index hibát okozhat a COP-ban, vagy meghatározatlan memóriát olvashat be attól függően, hogyan kezeli a projekt a tömb határait. A Recipe_Index növekvő változásakor — vagy egy külön Load nyomógomb megnyomásakor — másold a Recipe_Storage[Recipe_Index] értékét a Recipe_Display-be. A HMI kizárólag a Recipe_Display tagjaihoz kapcsolódjon. Ez az egyetlen szabály megszünteti azokat a versenyhelyzeteket, amelyekben két képernyő különböző tömbhelyekre ír, miközben a kezelő még módosítja az értékeket.
// Pszeudokód-struktúra
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-receptképernyő, amely kizárólag a Recipe_Display taghez kapcsolódik; a Load/Save műveletek a vezérlő COP-rutinjait indítják.
Mentési útvonal, megőrzés és letöltési viselkedés
Mentéskor másold vissza a Recipe_Display értékét a Recipe_Storage[Recipe_Index] elembe. Mivel a Recipe_Storage a vezérlő tagjei között található, az értékek megmaradnak egy tápfeszültség-kimaradás után, ha a projektben engedélyezve van a tagek normál megőrzése. Az adatok letöltéskor is megőrizhetők, ha a tagértékek megtartását választod; ezt a jelölőnégyzetet a receptkezelési SOP részének kell tekinteni, nem pedig opcionális kényelmi funkciónak. A kezelőknek tisztában kell lenniük azzal, hogy a „tagek újrainicializálása” beállítással végzett projektletöltés törli a gondosan beállított recepteket, ha nem áll rendelkezésre offline biztonsági mentés.
A CSV-importálási munkafolyamatokat kezeld fenntartásokkal. Számos HMI- vagy Excel–tag segédprogram létrehozza a tagneveket, de nem frissíti megbízhatóan a beágyazott UDT-k tagértékeit, különösen akkor, ha az oszlopfejlécek eltérnek az UDT-tagok neveitől. Részesítsd előnyben az explicit importálási rutint, amely minden mezőt ellenőriz, vagy tömeges módosítások után töltsd újra az adatokat egy megbízható L5X-/tag-exportból. Ne feltételezd, hogy a zöld „importálás kész” jelzés azt jelenti, hogy a Recipe_Storage[n].Setpoint értéke már megegyezik a táblázat cellájával.
| Tag | Típus | HMI-kapcsolat? | Rendeltetés |
|---|---|---|---|
| Recipe_Storage | UDT[50] | Nem | Nem felejtő receptarchívum |
| Recipe_Display | UDT | Csak igen | Kezelői szerkesztési puffer |
| Recipe_Index | DINT | Igen (választó) | Aktív hely: 0–49 |
HMI-felületi irányelvek
- A Load és Save műveleteket különálló, pillanatkapcsolós bitekként valósítsd meg, amelyeket a vezérlő kezel, ne közvetlen tömbírásként a kezelőpanelről.
- Jelenítsd meg a korlátozott indexet, valamint egy csak olvasható „tárolt név” mezőt, amelyet a kijelző UDT-jából másolsz, hogy a kezelők megerősíthessék, melyik hely aktív.
- Tiltsd le a mentést, amíg a gép ciklusban van, ha a recept tagjai a mozgást vagy a hőmérsékleti beállításokat a tétel feldolgozása közben módosíthatják.
- A szabályozott gyártósorokon a nyomonkövethetőség érdekében naplózd a mentési eseményeket a kezelő azonosítójával és az indexszel együtt.
Indexhatárok és megőrzött letöltések ellenőrzése
A teszteléshez töltsd be a 0. helyet, módosíts egy ellenőrző értéket a Recipe_Display-ben, mentsd el, állítsd az indexet 1-re, majd térj vissza a 0-ra, és töltsd be újra. Az ellenőrző értéknek csak akkor szabad ismét megjelennie, ha a mentés végrehajtódott. Kapcsold ki, majd be a vezérlőt, és ellenőrizd, hogy a Recipe_Storage továbbra is tartalmazza az ellenőrző értéket. Adj meg a HMI-ről tartományon kívüli indexet, és ellenőrizd a korlátozást. Próbálj ki egy CSV-importálást egy tartalék rendszeren, és a gyártási használat előtt hasonlítsd össze a tagokat egyenként a fájl tartalmával.
Kerüld a panel közvetlen kapcsolását a Recipe_Storage[Recipe_Index].Member címhez. A tömbökbe történő indirekt HMI-címzés nehezebben ellenőrizhető, és helytelen helyre történő írást eredményezhet, ha az indextag és a képernyő eltérő ütemben frissül. A Display UDT-minta könnyen bővíthető, amikor később kibővíted az UDT-t, biztonsági szinteket adsz hozzá, vagy ugyanazt a receptmodellt több, közös kezelői munkafolyamatot használó PLC- és PAC-rendszercellára migrálod.
A szerzőről
Mark Townsend | Vezető automatizálási mérnök – Allen-Bradley rendszerek
Mark Townsend vezető automatizálási mérnök, több mint 18 év tapasztalattal az Allen-Bradley platformokon, többek között a ControlLogix, a CompactLogix és a korábbi SLC-500 rendszereken. Mindennapi munkája az RSLogix / Studio 5000 logikák, valamint a FactoryTalk View HMI-rendszerek üzembe helyezése régi és vegyes rendszerparkokban.