PACFramework

Класи LVL2 (CLSID=16#200x – 16#27FF)

Клас PLC (функція PLCFN): програмований контролер (CLSID=16#21xx)

Екземпляри класу PLC є центральними координуючими модулями керування, які відповідають за організацію загально-контролерних функцій, зокрема (але не обмежено ними):

Приклад індикації стану ПЛК показаний на рис.2.10. У даному випадку М – це наявність хоча б одного ВМ в ручному режимі, F – наявність хоча б одного форсування, S – наявність хоча б одного об’єкта (CM/EM/UNIT) в режимі імітації, W – наявність хоча б однієї тривоги рівня “попередження”, A – наявність хоча б однієї тривоги рівня “аварія”. Додатковими бітами статусу для відображення також можуть бути: наявність хоча б одного біта недостовірності, наявність хоча б однієї відключеної змінної (виведеної з обслуговування), “процедура технологічної комірки в роботі/паузі/утримання”, “апарат в роботі/паузі/утримання”, “CIP в роботі/паузі/утримання”.

Приклад індикації стану ПЛК

рис.2.10. Приклад індикації стану ПЛК

Функція обробки PLCFN повинна запускатися на початку задачі. Це необхідно для правильної обробки бітів статусу та тривог.

Робота функції передбачає виконання усіх інших функцій каркасу в тому самому циклі задачі!

PLC_CFG

Як правило для PLC достатньо одного екземпляру і можна обійтися тільки однією структурою. Однак з метою зменшення навантаження на комунікацію і забезпечення командного вводу параметрів (коли оператор спочатку змінює конфігуровані значення в буфер а потім записує їх в змінну) можна виділити змінні PLC_HMI та PLC_BUF. Можливий варіант структури показаний в таблиці.

Атрибут Тип Біт Опис
ID UINT   Унікальний ідентифікатор
CLSID UINT   16#21xx
STA UINT 0  
    1  
    2 BLK =1 – є хоча б один заблокований ВМ
    3 ALDIS =1 – є хоча б одна відключена тривога
    4  
    5  
    6  
    7 FRC =1 – хоча б одна змінна форсована на будь якому рівні
    8 SMLALL =1 – все в режимі в імітації, примушує усі CM перейти в режим імітації
    9 DISP =1 – хоча б один елемент в режимі ручного управління
    10 FRC2 =1 – є хоча б один форсований керівний елемент (рівня 2), клапан, двигун
    11 FRС1 =1 – хоча б одна змінна форсована (рівня 1)
    12 SCN1 =1 – перший скан
    13 FRС0 =1 – хоча б одна змінна форсована (рівня 0)
    14 SML =1 – хоча б один об’єкт в режимі імітації
       
CMD UINT   Команди з HMI:
16#0100 – прочитати конфігурацію
16#0101 – записати конфігурацію

16#0111 – синхронізувати час з верхнім рівнем
16#0301 – вимкнути сирену
16#0302 – увімкнути сирену

16#4101 – записати конфігурація за замовченням для усіх змінних DIVAR
16#4102 – записати конфігурація за замовченням для усіх змінних AIVAR
16#4103 – записати конфігурація за замовченням для усіх змінних DOVAR
16#4104 – записати конфігурація за замовченням для усіх змінних AOVAR
16#4302 – дефорсувати всі об’єкти
CMDPRG INT   Команди з програмного керування (побітові)
PRM1 INT   дискретні параметри
PRM2 INT   дискретні параметри
PLS INT 0 P100MS імпульс на один цикл основної задачі з періодичністю 100 мс
    1 P200MS 200 мс
    2 P500MS 500 мс
    3 P1S 1 с
    4 P2S 2 с
    5 P5S 5 с
    6 P10S 10 с
    7 P60S 1 хв
    8 M1S меандр з періодом 1 с (0.5 с + 0.5 с)
    9 M2S меандр з періодом 2 с (1 с + 1 с)
    10-12 можуть бути використані для інших бітових меандрів:
    13 =1 (на один цикл основної задачі) – початок години
    14 =1 (на один цикл основної задачі) – початок доби
    15 =1 (на один цикл основної задачі) – початок зміни
ALM1 INT 0 ALM =1, є хоча б одна тривога аварійного рівня
    1 NWALM =1, нова тривога аварійного рівня
    2 ALMNACK =1, є неквітовані тривоги
    3 WRN =1, є хоча б одна тривога попереджувального рівня
    4 NWWRN =1, нова тривога попереджувального рівня
    5 WRNNACK =1, є неквітовані попередження
    6 BAD =1, є хоча б одна тривога недостовірності
    7 NWBAD =1, нова тривога недостовірності
    8 BADNACK =1, є неквітовані тривоги недостовірності
    9 EMCYSTP =1, аварійний зупин (грибок)
    10 STP2RUN =1, момент переходу з аварійного зупину в роботу
    11  
    12  
    13  
    14 =1 – є апаратна помилка (ПЛК)
    15  
ALM2 INT    
STEP1 INT   крок основної програми
TSTEP1 INT   час кроку основної програми обробки, в (с)
MSG UDINT   для формування повідомлень, може бути як бітовим (32 повідомлення), так і числовим (за номером); передбачається, що повідомлення буде скидуватися в 0 автоматично через певний час (не менш ніж 2 інтервали опитування з HMI)
TQ UDINT   загальний час з початку 1-го циклу контролера (в секундах)
TQM UDINT   загальний час роботи ПЛК з моменту пуску (в хвилинах)
DICNT UINT   кількість наявних каналів DI
DOCNT UINT   кількість наявних каналів DO
AICNT UINT   кількість наявних каналів AI
AOCNT UINT   кількість наявних каналів AO
NOW ARRAY[0..3] of INT   плинний час астрономічний час в BCD форматі:
NOW[0] seconds,– (16#ss,–)
NOW[1] hour, minute (16#hhmm)
NOW[2] month, day (16#mmdd)
NOW[3] year (16#yyyy)
SHIFTPARA ARRAY[0..4] of INT   Години передачі змін (максимум 3 зміни):
SHIFT[0] – кількість змін
SHIFT[1] – передача 1-ї зміни (BCD 16#hhmm)
SHIFT[2] – передача 2-ї зміни (BCD 16#hhmm)
SHIFT[3] – передача 3-ї зміни (BCD 16#hhmm)
SHIFTNMB INT   номер активної зміни
REZ INT   резерв

TASK

Атрибут Тип Біт Опис
ID UINT   Унікальний ідентифікатор
CLSID UINT    
STA[0..7] UINT 0  
    1  
    2 BLK =1 – є хоча б один заблокований ВМ
    3 ALDIS =1 – є хоча б одна відключена тривога
    4  
    5  
    6  
    7 FRC =1 – хоча б одна змінна форсована на будь якому рівні
    8 SMLALL =1 – все в режимі в імітації, примушує усі CM перейти в режим імітації
    9 DISP =1 – хоча б один елемент в режимі ручного управління
    10 FRC2 =1 – є хоча б один форсований керівний елемент (рівня 2), клапан, двигун
    11 FRС1 =1 – хоча б одна змінна форсована (рівня 1)
    12 SCN1 =1 – перший скан
    13 FRС0 =1 – хоча б одна змінна форсована (рівня 0)
    14 SML =1 – хоча б один об’єкт в режимі імітації
       
CMD[0..7] UINT   Команди з HMI:
16#0100 – прочитати конфігурацію
16#0101 – записати конфігурацію
16#0301 – вимкнути сирену
16#0302 – увімкнути сирену

16#4101 – записати конфігурація за замовченням для усіх змінних DIVAR
16#4102 – записати конфігурація за замовченням для усіх змінних AIVAR
16#4103 – записати конфігурація за замовченням для усіх змінних DOVAR
16#4104 – записати конфігурація за замовченням для усіх змінних AOVAR
16#4302 – дефорсувати всі об’єкти
PRM[0..7] INT   дискретні параметри
PLS[0..7] INT 0 P100MS імпульс на один цикл основної задачі з періодичністю 100 мс
    1 P200MS 200 мс
    2 P500MS 500 мс
    3 P1S 1 с
    4 P2S 2 с
    5 P5S 5 с
    6 P10S 10 с
    7 P60S 1 хв
    8 M1S меандр з періодом 1 с (0.5 с + 0.5 с)
    9 M2S меандр з періодом 2 с (1 с + 1 с)
    10-12 можуть бути використані для інших бітових меандрів:
    13 =1 (на один цикл основної задачі) – початок години
    14 =1 (на один цикл основної задачі) – початок доби
    15 =1 (на один цикл основної задачі) – початок зміни
ALM[0..7] INT 0 ALM =1, є хоча б одна тривога аварійного рівня
    1 NWALM =1, нова тривога аварійного рівня
    2 ALMNACK =1, є неквітовані тривоги
    3 WRN =1, є хоча б одна тривога попереджувального рівня
    4 NWWRN =1, нова тривога попереджувального рівня
    5 WRNNACK =1, є неквітовані попередження
    6 BAD =1, є хоча б одна тривога недостовірності
    7 NWBAD =1, нова тривога недостовірності
    8 BADNACK =1, є неквітовані тривоги недостовірності
    9 EMCYSTP =1, аварійний зупин (грибок)
    10 STP2RUN =1, момент переходу з аварійного зупину в роботу
    11  
    12  
    13  
    14 =1 – є апаратна помилка (ПЛК)
    15  
ALM2[0..7] INT    
T_SCAN[0..7] UDINT   час останньої обробки задачі
T_MIN[0..7] UDINT   час останньої обробки задачі
T_MAX[0..7] UDINT   час останньої обробки задачі
T_PREV[0..7] UDINT???   час попереднього виклику задачі ??? реалізація
REZ INT   резерв

На практиці, використання PLC_CFG в розподіленому керуванні (декілька ПЛК), давало можливість обмінюватися між ПЛК їх загальним статусом/командами, що значно спрощувало їх координацію. У такому випадку, наявність буферних змінних і унікального ID може бути використано для конфігурування/контролю декількох ПЛК з одного HMI, через ПЛК-проксі.

Так, наприклад, змінна TQ може бути використана для контролю за станом ПЛК або зв’язку з ним, адже якщо ця змінна не змінюється протягом тривалого часу, цей ПЛК знаходиться в стопі або недоступний (щось на кшталт heart_beat). Треба пам’ятати, що обробка функції PLCFN проводиться в основній задачі. Тому за необхідності використання структури в інших задачах, необхідно чітко зважити усі механізми. На практиці це інколи забувається, і приводить до небажаних наслідків. Як варіант можуть бути додаткові статусні біти, або механізми блокувань.

Деякі біти полів STA, та усі біти ALM1, ALM2 скидаються на початку задачі функцією PLCFN. Це зроблено для того, щоб будь який з CM/EM/Unit міг виставити біт в 1, тим самим сигналізуючи про твердження “хоча б один”.

Поле MSG – може бути використано для формування повідомлень оператору, на кшталт – не можу виконати команду. Таке поле може бути і в інших структурах CM/EM/UNIT, тоді воно повинно бути в структурі HMI. Як варіант економії ресурсів може бути одне поле MSG на всі повідомлення. Якщо це поле буде бітовим, то повідомлення не будуть перекриватися, однак їх кількість буде обмежено 32 на весь ПЛК. Тим не менше, кількість полів MSG можна збільшувати до необхідного. Враховуючи, що повідомлення формуються по тригеру, їх необхідно “очищувати”, що може бути зроблено за таймером або з самого HMI, як приймача повідомлення (наприклад за бітовою командою ACK – прийняв повідомлення, або обнулінням біту). Механізми очищення виробляються для конкретного випадку.

2.4.2. Класи VLVD: клапани з дискретним керуванням (CLSID=16#201x)

Датчики та сигнали керування ВМ подаються як змінні DIVAR та DOVAR; ті які не використовуються – подаються як пусті (з індексом 0); наявність/відсутність певних датчиків кінцевого положення та сигналів керування означується параметрами. Функція класів розрахована для:

У моностабільному режимі, вихідна змінна крану “відкрити” змінюється тільки при надходженні команд. На вихідну змінну “закрити” відправляється інверсна команда. Наприклад, команда “відкрити” переводить в “1” змінну на клапан “відкрити” тільки при надходженні команди. У бістабільному режимі вихідні змінні клапану можуть змінюватися при спрацюванні датчиків кінцевого положення: наприклад, кінцевик відкритості знімає “1” зі змінної відкриття. У автоматичному незаблокованому режимі, значення вихідних змінних на ВМ змінюється алгоритмом тільки при наявності відповідних команд з програм. Іншими словами вихідні змінні можуть керуватися як в командному режимі на клапан (імпульсні команди відкрити/закрити) з програм так і байпасуватися зовнішніми алгоритмами. У ручному або заблокованому режимі, виходи міняються тільки командами з HMI (може змінитися в залежності від вимог процесу). Передбачаються два режими конфігурування (MANCFG): ручне і автоматичне. У ручному режимі тип клапану та наявність кінцевих вимикачів задається бітовими параметрами PRM.BISTABLE, PRM.ZOPNENBL та PRM.ZCLSENBL. У автоматичному режимі ці параметри змінюються автоматично при прив’язці до змінних з ID=0 або їх підключеності. Таким чином, наприклад, при виходу з ладу датчика кінцевого положення, його можна тимчасово відключити в конфігурації (вивести з експлуатації для відключення генерування тривог), і клапан автоматично перейде в режим роботи без даного кінцевика. Ручне конфігурування типу клапану поки не знайшло свого використання.

VLVD_HMI

| Атрибут | Тип | Біт | Опис | | ——- | —- | ————- | ———————————————————— | | STA | UINT | 0 ALMOPN | =1 Не відкрився (скидається при зміні команди або стану) датчика) | | | | 1 ALMCLS | =1 Не закрився (скидається при зміні команди або стану) датчика) | | | | 2 BLCK | =1 Заблокований | | | | 3 ALMSHFT | =1 Порушення стану | | | | 4 SLNDBRK | =1 Помилка датчику | | | | 5 OPNING | =1 Відкривається | | | | 6 CLSING | =1 Закривається | | | | 7 OPNED | =1 Відкритий (16#0080) | | | | 8 CLSED | =1 Закритий (16#0100) | | | | 9 DISP | =1 дистанційний режим (з ПК/ОП) (16#0200) | | | | 10 MANBX | =1 Ручний зі щита | | | | 11 SLNDKZ/ALM | =1 КЗ соленоїду / загальна тривога | | | | 12 INBUF | =1 клапан в буфері | | | | 13 FRC | =1 хоча би одна зі змінних в об’єкті форсована (для зручності відображення при наладці) | | | | 14 SML | | | | | 15 CMDACK | | | CMD | UINT | | Команди:
16#0001 – CMD_OPN
16#0002 – CMD_CLS
16#0003 – CMD_TOGGLE (перемикання, тільки для моностабільних клапанів)
16#0004 – CMD_ALMACK
16#0007 – CMD_BLCK (блокування)
16#0008 – CMD_DBLK (деблокування)

16#0010 – CMD_STOPTUN
16#0011 – CMD_TUNING (автопідстройка)

16#0100 – прочитати конфігурацію
16#0101 – записати конфігурацію
16#0102 – записати конфігурацію за замовченням
16#4102 – записати конфігурацію за замовченням для усіх клапанів

16#0200 – тимчасово вивести тривогу з експлуатації
16#0201 – ввести тривогу в експлуатацію
16#0202 – підтвердити тривогу
16#0300 – ручний/автомат
16#0301 – ручний
16#0302 – автомат

16#4301 – перевести в ручний усі об’єкти типу
16#4302 – перевести в автомат усі об’єкти типу |

VLVD_CFG

| Атрибут | Тип | Біт | Опис | Зміщення | | ——- | —- | ———- | ———————————————————— | ——– | | ID | | | | 0 | | CLSID | | | 16#2011 – оно стабільний режим
16#2012 – бістабільний режим | 1 | | STA | | | | | | CMD | | | | | | PRM | UINT | b0 | | 3 | | | | b1 | | | | | | 2 ZOPNENBL | X2 - =1 є датчик відкритості | | | | | 3 ZCLSENBL | X3 - =1 є датчик закритості | | | | | 4 BISTABLE | X4 - =1 | | | | | b5 | X5 – =1 клапан без нормального положення (додатково використовується змінна “закрити”) | | | | | 6 MANCFG | X6 – =1 ручне конфігурування типу клапану та типу керування (при зміні клапану в режимі роботи) | | | | | b7 | X7 – =1, використання клапану (0 – резерв) | | | | | 8 AUTOACK | X8 - =1, автоматичне підтвердження тривог | | | | | b9 | | | | | | b10 | | | | | | b11 | | | | | | b12 | | | | | | b13 | | | | | | b14 | | | | | | b15 | | | | MSG | UINT | | Номер останнього діагностичного повідомлення | | | TDEASP | UINT | | Час затримки тривоги в секундах | 6 | | STEP1 | UINT | | крок: 0-невизначений, 2-відкривається, 3-закривається, 1-зупинений в невизначеності, 4 – зупинений у відкритому стані, 5 – зупинений в закритому стані, 6 –заблокований | 8 | | TSTEP1 | UINT | | Час кроку в с | 10 | | TOPNSP | UINT | | Максимальний час відкриття в секундах | | | CNTPER | UINT | | Кількість змін положення | | | CNTALM | UINT | | Кількість аварій | |

2.4.3.Класи VLVA: клапани з аналоговим керуванням(CLSID=16#202x)

Якщо в проекті передбачається використання клапану з кінцевиками, можна задіяти алгоритм з VLVD. У зв’язці з алгоритмом що має ручний режим DISP та MANBX не треба використовувати.

VLVA_HMI

Атрибут Тип Біт Опис
STA UINT 0 =1
    1 =1
    2 BLCK =1 Заблокований
    3 =1
    4 =1
    5 OPNING =1 Відкривається
    6 CLSING =1 Закривається
    7 OPNED =1 Відкритий (>=95 %)
    8 CLSED =1 Закритий (<5 %)
    9 DISP =1 дистанційний режим (з ПК/ОП)
    10 MANBX =1 Ручний зі щита
    11 =1
    12 INBUF =1
    13 FRC =1 хоча би одна зі змінних в об’єкті форсована (для зручності відображення при наладці)
    14 SML  
    15 CMDACK  
CMD UINT   Команди:
16#0100 – прочитати конфігурація
16#0101 – записати конфігурація
16#0102 – записати конфігурація за замовченням
16#4102 – записати конфігурація за замовченням для усіх клапанів
16#0200 – тимчасово вивести тривогу з експлуатації
16#0201 – ввести тривогу в експлуатацію
16#0202 – підтвердити тривогу

16#0300 – ручний/автомат
16#4301 – перевести в ручний усі об’єкти типу
16#4302 – перевести в автомат усі об’єкти типу
VAL REAL   Значення

VLVA_CFG

| Атрибут | Тип | Біт | Опис | | ——- | —- | ———— | ——————————————————— | | ID | UINT | | | | CLSID | UINT | | 16#2020 | | STA | UINT | | | | CMD | UINT | | | | VAL | REAL | | значення | | PRM | UINT | b0 | | | | | b1 | | | | | 2 ZOPNENBL | | | | | 3 ZCLSENBL | | | | | b4 | | | | | b5 | X5 – використати обмеження по швидкості | | | | 6 MANCFG | | | | | b7 | X7 – =1, використання клапану (0 – резерв) | | | | 8 AUTOACK | X8 – =1, автоматичне підтвердження тривог | | | | b9 | | | | | b10 | | | | | 11 SPDLMENBL | X11 – =1, включити обмеження по швидкості | | | | b12 | | | | | b13 | | | | | b14 | | | | | b15 | | | MSG | UINT | | Номер останнього діагностичного повідомлення | | TDEASP | UINT | | Час затримки тривоги в секундах | | STEP1 | UINT | | Крок | | VALPREV | REAL | | Значення VAL на попередньому перерахунку (2 секунди) | | MVAL | REAL | | Значення VAL у ручному/форсованому режимі перезаписує VAL | | CNTPER | UINT | | Кількість змін положення | | CNTALM | UINT | | Кількість аварій | | T_STEP1 | UINT | | Час кроку в с | | T_OPN | UINT | | Час повного відкриття клапану при обмеженні на швидкість |

2.4.4.Класи VLVSRV: клапани типу МЕО (CLSID=16#203x)

2.4.5.Класи DRV: двигуни (CLSID=16#210x)

16#2110 (8464) – без частотника 16#2111 (8465) – з плавним пуском 16#2120 (8480) – з частотником 16#2121 (8481) – насос з аналоговим керуванням

VLVD_HMI

| Атрибут | Тип | Біт | Опис | | ——- | —- | ——— | ———————————————————— | | STA | UINT | 0 ALMOPN | =1 Не відкрився (скидається при зміні команди або стану) датчика) | | | | 1 ALMCLS | =1 Не закрився (скидається при зміні команди або стану) датчика) | | | | 2 BLCK | =1 Заблокований | | | | 3 ALMSHFT | =1 Порушення стану | | | | 4 SLNDBRK | =1 Помилка датчику | | | | 5 OPNING | =1 Відкривається | | | | 6 CLSING | =1 Закривається | | | | 7 OPNED | =1 Відкритий (16#0080) | | | | 8 CLSED | =1 Закритий (16#0100) | | | | 9 DISP | =1 дистанційний режим (з ПК/ОП) (16#0200) | | | | 10 MANBX | =1 Ручний зі щита | | | | 11 SLNDKZ | =1 КЗ соленоїду | | | | 12 INBUF | =1 - | | | | 13 FRC | =1 хоча би одна зі змінних в об’єкті форсована (для зручності відображення при наладці) | | | | 14 SML | | | | | 15 CMDACK | | | CMD | UINT | | Команди:
16#0001 – CMD_OPN
16#0002 – CMD_CLS
16#0003 – CMD_TOGGLE (перемикання, тільки для моностабільних клапанів)
16#0004 – CMD_ALMACK
16#0007 – CMD_BLCK (блокування)
16#0008 – CMD_DBLK (деблокування)
16#0010 – CMD_STOPTUN
16#0011 – CMD_TUNING (автопідстройка)
16#0100 – прочитати конфігурацію
16#0101 – записати конфігурацію
16#0102 – записати конфігурацію за замовченням
16#4102 – записати конфігурацію за замовченням для усіх клапанів
16#0200 – тимчасово вивести тривогу з експлуатації
16#0201 – ввести тривогу в експлуатацію
16#0202 – підтвердити тривогу
16#0300 – ручний/автомат
16#0301 – ручний
16#0302 – автомат
16#4301 – перевести в ручний усі об’єкти типу
16#4302 – перевести в автомат усі об’єкти типу |

VLVD_CFG

Атрибут Тип Біт Опис
ID UINT   16#2011 – моностабільний режим
16#2012 – бістабільний режим
CLSID UINT    
STA UINT    
CMD UINT    
PRM UINT b0  
    b1  
    2 ZOPNENBL  
    3 ZCLSENBL  
    4 BISTABLE  
    b5  
    b6  
    7 MANCFG  
    b8  
    b9  
    10 AUTOACK  
    b11  
    b12  
    b13  
    b14  
    b15  
MSG UINT   Номер останнього діагностичного повідомлення
TDEASP UINT   Час затримки тривоги в секундах
STEP1 UINT   крок: 0-невизначений, 2-відкривається, 3-закривається, 1-зупинений в невизначеності, 4 – зупинений у відкритому стані, 5 – зупинений в закритому стані, 6 –заблокований
TSTEP1 UINT   Час кроку в с
TOPNSP UINT   Максимальний час відкриття в секундах
CNTPER UINT   Кількість змін положення
CNTALM UINT   Кількість аварій