OpenSCADA

Бібліотеки/Рецепти

This page is a translated version of the page Libs/Prescriptions and the translation is 100% complete.

English • ‎mRussian • ‎Українська
Назва Версія Ліцензія Джерело Мови Автор Іконка Опис
Рецепти 1.1, 1.1 GPLv2

OscadaLibs.db (SQL, GZip) > DAQ.tmplb_PrescrTempl
vcaBase.db (SQL, GZip) > VCA.wlb_prescr

en, uk, ru Роман Савоченко LibPrescriptions.png Бібліотека елементів сценаріїв технологічних процесів — рецептів.
- перевести елементи графічної частини на повну роботу через менеджер рецептів, для можливості віддаленого рознесення частин.

Бібліотека створюється для надання середовища виконання сценаріїв технологічних процесів — рецептів, та кадрів користувацького інтерфейсу довкола нього, включно з кадром створення/редагування рецептів та двома кадрами контролю виконання та звітності — "Рецепт — виконання" та "Рецепт — виконання, простий". Будується бібліотека на основі примітивів віджетів та мови внутрішнього програмування JavaLikeCalc, включно для шаблонів та команд.

Назви елементів та їх параметрів доступні на мовах: Англійська, Українська та mRussian. Їх вихідний код написано у мово(людська)-незалежному режимі з викликом функції перекладу tr() та переклад цих повідомлень також доступний Англійською, Українською та mRussian.

Contents

1 Концепція

Сценарій технологічних операцій — рецепт, представляє собою послідовний виклик блоку функцій — команди, які приймають до п'яти аргументів та повертають рядок результату із кодом завершення на початку: "Робота (0)", "Завершено (>0)" та "Помилка (<0)". Виклик команди кроку здійснюється циклічно, доки повертається результат "Робота (0)". Перехід до наступного кроку здійснюється у випадку результату "Завершено (>0)" та команди "Пропуск (2)". У випадку помилки, результат "Помилка (<0)", виконання рецепту переривається.

Послідовність команд, користувачем кінцевого інтерфейсу, формуються на кадрі створення/редагування та здійснюється контроль їх виконання на кадрі "Рецепт — виконання" та "Рецепт — виконання, простий", при цьому, дані рецептів зберігаються у таблиці БД рецептів-програм. Таблиця програм-рецептів поміщається в одну з БД, доступних у конкретній конфігурації OpenSCADA, наприклад, на даний час така таблиця поміщається у БД цієї бібліотеки як "PrescrProgs = (name, prgTxt)", де:

XML-дерево рецепту-програми починається із тегу-контейнеру "prg", який містить кінцеві теги команд "com" із атрибутами:

Наприклад, для рецепту із чотирма кроками матимемо:

<prg>
  <com arg1="10" id="Таймер" />
  <com arg1="10" id="Вакуум" />
  <com arg1="20" id="Таймер" />
  <com arg1="34" id="Ввімкнути котушки" />
</prg>

Обчислення рецепту здійснюється через параметр менеджеру рецептів, який підтримує два способи виконання команд рецепту:

Режим виконання "команда-параметр"
Команди-параметри логічного рівня формуються програмістом SCADA-системи під прикладну область у вигляді шаблонів параметрів підсистеми "Збір даних", які надалі використовуються у логічному контролері рецептів, із низкою обов'язкових, службових та внутрішніх атрибутів:

Особливістю використання команд-параметрів є незалежне їх виконання та можливість залишити виконання низки команд у фоні, наприклад, регулятори. Ці команди, також, можна прямо підключати до джерела даних за допомогою зв'язків, або навіть реалізовувати їх обох у одному шаблоні-параметрі.

At.png Цей режим наразі є основним та на основі нього було реалізовано багато механізмів взаємодії із кадрами візуалізації та контролю, які можуть не працювати, або працювати помилково зі старим "команда-макрос" режимом!

Режим виконання "команда-макрос" (старий)
Команди-макроси, які користувач може обирати при формуванні рецепту-програми, формуються програмістом SCADA-системи під прикладну область що реалізується, шляхом редагування таблиці команд у OpenSCADA. Таблиця команд поміщається в одній із БД, доступних у конкретній конфігурації OpenSCADA, наприклад, наразі така таблиця поміщається у БД даної бібліотеки як "PrescrComs = (name, proc, arg1, arg2, arg3, arg4, arg5)", де:

Приклад тексту програми для команди "Таймер", який не залежить від прикладної області:
JavaLikeCalc.JavaScript
if(f_start) tmp1 = arg1;
var curTm = tmp1.toReal();
if(curTm <= 0) { rez = "1:Час вичерпано для "+arg1+"с"; return; }
curTm -= 1/f_frq;
tmp1 = max(0, curTm);
rez = "0:Очікування зараз "+curTm+"с";

Для спеціальних цілей зарезервовано декілька назв команд:

2 Частина опрацювання та виконання

Розділ містить DAQ-шаблони менеджеру рецептів та команд режиму "команда-шаблон", які призначено до підключення у контролері логічного рівня, через створення відповідно параметрів менеджеру рецептів та команд, доступних до обрання користувачем, які і здійснюватимуть там всю роботу із рецептами-програмами щодо їх опрацювання та виконання.

Для підключення частини бібліотеки до проекту станції OpenSCADA ви можете отримати файл БД як:

wget http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql
sqlite3 -init OscadaLibs.sql OscadaLibs.db .exit

Цей завантажений файл Ви надалі можете розмістити у теці проекту станції та створити об'єкт бази даних модуля БД "SQLite", зареєструвавши файл бази даних у конфігурації.


2.1 Менеджер рецептів (manager)

2.2 GPLv2 * en, uk, ru Роман Савоченко
Результат та оперативні налаштування.

Основний, представницький та уніфікований шаблон менеджеру та контролеру рецептів, їх опрацювання та прямого виконання у режимі "команда-макрос". Шаблон формує структуру параметру менеджеру рецептів, який може бути легко підключений до всіх кадрів цієї бібліотеки.

Представницькою структурою менеджеру рецептів є:

Функції

КАТЕГОРІЯ: визначає ідентифікатор користувацького рецепту-програми ProgNM у форматі "uprg{ProgNM}", де:
  • "uprg*" — типовий шаблон-ознака користувацького рецепту-програми, який може бути безпосередньо використано у фільтрі категорії для визначення у повідомленнях суто користувацьких рецептів-програм;
  • ProgNM — ім'я рецепту-програми.
ТЕКСТ: опис дії у форматі "{ActDescr} "{ProgNM}" : {StartTm} : {ActTm}", де:
  • ActDescr — опис дії:
  • "Поточний вузол відсутній";
  • "Перерваний користувачем сеанс програми";
  • "Перерваний помилкою сеанс програми";
  • "Вдалий сеанс програми".
  • ProgNM — ім'я рецепту-програми;
  • StartTm — час запуску рецепту-програми, у форматі "2020-03-14 16:05:01";
  • ActTm — час дії рецепту-програми, у форматі "2020-03-14 16:05:52".

ВВ шаблону

Ідентифікатор Ім'я Тип Режим Атрибут Конфігурація Значення
dbDB БД: Ім'я БД з таблицями Рядок Вхід Тільки читання Константа
dbComs БД: Таблиця з командами Рядок Вхід Не атрибут Константа PrescrComs
dbProgs БД: Таблиця з програмами Рядок Вхід Тільки читання Константа PrescrProgs
comsCntr Контролер команд,

<порожньо> - для команд у таблиці,
'*' - цей параметр контролеру

Рядок Вхід Не атрибут Константа *
mode Режим Вибір цілих чисел Вхід Повний доступ Змінна -2

-2;-1;0;1;2;3 Завершення;Помилка;Стоп;Виконання;Пауза;Пропустити команду

curMode Поточний режим Вибір цілих чисел Вхід Тільки читання Змінна -2

-2;-1;0;1;2;3 Завершення;Помилка;Стоп;Виконання;Пауза;Пропустити команду

prog Ім'я обраної програми Рядок Вхід Повний доступ Змінна
startTm Час запуску, секунди Цілий Вхід Тільки читання Змінна
curCom Поточна команда-крок Рядок Вхід Тільки читання Змінна
work Робоча програма Об'єкт Вхід Тільки читання Змінна
comLs Перелік команд Об'єкт Вхід Тільки читання Змінна
clcCnt Лічильник циклів Цілий Вхід Не атрибут Змінна
this Об'єкт Об'єкт Вхід Не атрибут Змінна
f_err Помилка функції Рядок Вхід Не атрибут Змінна 0
f_frq Частота обчислення функції, Гц Реальний Вхід Не атрибут Змінна 1000
f_start Прапорець запуску функції Логічний Вхід Не атрибут Змінна 0
f_stop Прапорець зупинки функції Логічний Вхід Не атрибут Змінна 0
Конфігурація.

Конфігурація та використання

1. Створити та запустити об'єкт логічного контролеру з потрібними властивостями планування.
2. Створити об'єкт логічного параметру та обрати цей шаблон для нього. Ввімкнути параметр.
  • [JavaLikeCalc] або обрати цей шаблон для JavaLikeCalc контролеру; ввімкнути контролер; створити параметр "manager" віддзеркалення репрезентативних атрибутів:
dbDB
dbProgs
comLs
prog
mode
curMode
startTm
curCom
work
3. У вкладці "Конфігурація шаблону" об'єкту логічного параметру, або контролеру для [JavaLikeCalc], ви маєте встановити:
  • БД: Ім'я БД з таблицями — у БД, на кшталт "SQLite.vcaBase", де зберігаються або мають зберігатися таблиці рецептів-програм. Порожнє значення не дозволене та викличе помилку!
  • БД: Таблиця з програмами — у назву таблиці рецептів-програм, по замовченню це "PrescrProgs".
  • Контролер команд — залишити у значенні по замовченню "*" для використання контролеру параметрів також для команд. Ви маєте змінити це поле у випадку виконання об'єкту контролера менеджеру у окремому від команд логічному контролері!
  • [JavaLikeCalc] або та додатково:
  • Контролер команд — змінити це поле у окремий логічний контролер для команд!
  • [Команда-макрос] або та додатково:
  • БД: Таблиця з командами — у назву таблиці команд, по замовченню це "PrescrComs".
  • Контролер команд — встановити <порожньо>.
4. Розташувати потрібні параметри команд разом із параметром менеджеру.
  • [Команда-макрос] або підготувати потрібні команди у "БД: Таблиця з командами" згідно до концепції; порожню таблицю команд має бути створено автоматично після запуску об'єкту параметру, або контролеру для [JavaLikeCalc]!
5. РЕЗУЛЬТАТ: Запустивши об'єкт контролеру (де створено цей параметр) маємо отримати оперативні дані у вкладці "Атрибути", для: перелік доступних команд, поточний режим, робоча програма, поточна команда-крок та час запуску.
  • [JavaLikeCalc] або безпосередньо об'єкт контролеру JavaLikeCalc.
6. У процесі роботи, через вкладку оперативних даних "Атрибути", окрім отримання результату, можна здійснювати оперативне налаштування та контроль щодо:
  • Ім'я обраної програми — встановлення назви обраної програми у обробці менеджером;
  • Режим — встановлення режиму менеджеру, виконання обраного рецепту-програми: Завершення(-2); Помилка(-1); Стоп(0); Виконання(1); Пауза(2); Пропустити команду(3).

2.2 Шаблони команд

2.2.1 Команда — Таймер (timer)

2.0 GPLv2 * en, uk, ru Роман Савоченко
Результат та оперативні налаштування.

Шаблон команди типового таймеру рецепту. Таймер розроблено лише для витримки часу між іншими дієвими кроками та для прикладу, відтак він містить лише один атрибут, це "Час" у секундах.

ВВ шаблону

Ідентифікатор Ім'я Тип Режим Атрибут Конфігурація Значення
start Рецепт: старт Логічний Вхід Повний доступ Змінна 0
stop Рецепт: стоп Логічний Вхід Повний доступ Змінна 0
error Рецепт: помилка Логічний Вхід Повний доступ Змінна 0
abort Рецепт: перервано Логічний Вхід Повний доступ Змінна 0
run Команда: виконання Логічний Вхід Повний доступ Змінна 0
pause Команда: пауза Логічний Вхід Повний доступ Змінна 0
rez Команда: результат Рядок Вхід Повний доступ Змінна 1
arg1 Час, секунд Реальний Вхід Повний доступ Змінна
tmp1 Тимчасово 1 Реальний Вихід Не атрибут Змінна 0
f_stop Прапорець зупинки функції Логічний Вхід Не атрибут Змінна 0
f_frq Частота обчислення функції, Гц Реальний Вхід Не атрибут Змінна 1000
f_err Помилка функції Рядок Вхід Не атрибут Змінна 0
f_start Прапорець запуску функції Логічний Вхід Не атрибут Змінна 0

Конфігурація та використання

1. Створити та запустити об'єкт логічного контролеру з потрібними властивостями планування, або використати створений для менеджера рецепту.
2. Створити об'єкт логічного параметру та обрати цей шаблон для нього. Ввімкнути параметр.
3. РЕЗУЛЬТАТ: Запустивши маємо отримати оперативні дані у вкладці "Атрибути" для результату команди.
4. У процесі роботи, через вкладку оперативних даних "Атрибути", окрім отримання результату, можна здійснювати оперативне налаштування та контроль щодо репрезентативних атрибутів команд рецепту та додаткових:
  • Час — встановлення часу таймеру, у секундах.


2.2.2 Команда — Фоновий таймер (timer)

2.0 GPLv2 * en, uk, ru Роман Савоченко
Результат та оперативні налаштування.

Шаблон команди фонового таймеру рецепту. Таймер розроблено лише для витримки часу у фоні для прикладу, відтак він містить лише один атрибут, це "Час" у секундах.

ВВ шаблону

Ідентифікатор Ім'я Тип Режим Атрибут Конфігурація Значення
start Рецепт: старт Логічний Вхід Повний доступ Змінна 0
stop Рецепт: стоп Логічний Вхід Повний доступ Змінна 0
error Рецепт: помилка Логічний Вхід Повний доступ Змінна 0
abort Рецепт: перервано Логічний Вхід Повний доступ Змінна 0
run Команда: виконання Логічний Вхід Повний доступ Змінна 0
pause Команда: пауза Логічний Вхід Повний доступ Змінна 0
rez Команда: результат Рядок Вхід Повний доступ Змінна 1
arg1 Час, секунд Реальний Вхід Повний доступ Змінна
tmp1 Тимчасово 1 Реальний Вихід Не атрибут Змінна 0
f_stop Прапорець зупинки функції Логічний Вхід Не атрибут Змінна 0
f_frq Частота обчислення функції, Гц Реальний Вхід Не атрибут Змінна 1000
f_err Помилка функції Рядок Вхід Не атрибут Змінна 0
f_start Прапорець запуску функції Логічний Вхід Не атрибут Змінна 0

Конфігурація та використання

1. Створити та запустити об'єкт логічного контролеру з потрібними властивостями планування, або використати створений для менеджера рецепту.
2. Створити об'єкт логічного параметру та обрати цей шаблон для нього. Ввімкнути параметр.
3. РЕЗУЛЬТАТ: Запустивши маємо отримати оперативні дані у вкладці "Атрибути" для результату команди.
4. У процесі роботи, через вкладку оперативних даних "Атрибути", окрім отримання результату, можна здійснювати оперативне налаштування та контроль щодо репрезентативних атрибутів команд рецепту та додаткових:
  • Час — встановлення часу таймеру, у секундах.

3 Графічна частина

Містить елементи-кадри рецептів кінцевого типу та елементи-віджети, що призначені для розташування у розділі мнемосхем (вид відображення) дерева сторінок проекту, побудованого за концепцією об'єктів сигналізації кореневої сторінки "RootPgSo" та для розташування на інших комплексних кадрах. Однак, елементи-кадри можуть бути розташовані як окремі сутності або у складі власної концепції керування сторінками, але тут треба враховувати, що кадри часто посилаються та викликають панель документів!

Для підключення частини бібліотеки до проекту станції OpenSCADA ви можете отримати файл БД як:

wget http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/vcaBase.sql
sqlite3 -init vcaBase.sql vcaBase.db .exit

Цей отриманий файл Ви надалі можете розмістити у теці проекту станції та створити об'єкт бази даних модуля БД "SQLite", зареєструвавши файл бази даних у конфігурації.


3.1 Рецепт — редагування (prescrEdit)

1.3 GPLv2 * en, uk, ru Роман Савоченко

Кадр, представлений на рисунку 3.1, є одним із групи кадрів роботи із рецептами, який слугує для користувацького редагування рецептів-програм. Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів.

Кадр містить, зліва праворуч:

Рис.3.1a. Кадр "Рецепт — редагування" у режимі розробки.

Використання — розробка
Кадр призначено для виконання ролі сторінки, а, відповідно, він має безпосередньо розташовуватися у дерево проекту. До кадру може бути підключено один параметр менеджеру рецептів, шляхом встановлення зв'язків.

Використання — виконання
У режимі виконання користувач може додавати нові рецепти-програми, видаляти, копіювати та експортувати існуючі, а також імпортувати рецепти інших станцій OpenSCADA. У обраному рецепті-програмі користувач може виконати: додання або вставку нового кроку, видалення або зміну положення обраного кроку. Для обраного кроку рецепту-програми користувач може встановити команду та ввести ім'я, опис, прапорець фонового виконання та значення доступних аргументів обраної команди, після чого зберегти зміну кроку.

Операції видалення супроводжуються появою діалогу-вікна підтвердження.

Рис.3.1b. Кадр "Рецепт — редагування" у режимі виконання.

Властивості зв'язування та конфігурації

Ідентифікатор Ім'я Тип Конфігурація Конфігураційний шаблон
dbDB БД: База даних Рядок Вхідний зв'язок Controller|dbDB
dbProgs БД: Таблиця програм Рядок Вхідний зв'язок Controller|dbProgs
prExtComLs Перелік доступних команд рецепту Об'єкт Вхідний зв'язок Controller|comLs


3.2 Рецепт — виконання (prescrRun)

1.3 GPLv2 * en, uk, ru Роман Савоченко

Кадр, представлений на рисунку 3.2, є одним із групи кадрів роботи із рецептами, який слугує для контролю та спостереження за виконанням програм-рецептів, раніш сформованих у кадрі "Рецепт — редагування". Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів. Додатково до цього повноформатного кадру виконання рецептів, передбачено спрощений — "Рецепт — виконання, простий", який дозволяє компактно керувати та відстежувати виконання рецептів у складі інших кадрів технологічного процесу.

Кадр містить, зліва праворуч:

Рис.3.2a. Кадр "Рецепт — виконання" у режимі розробки.

Використання — розробка
Кадр призначено для виконання ролі сторінки, а, відповідно, він має безпосередньо розташовуватися у дерево проекту. До кадру може бути підключено один параметр менеджеру рецептів, шляхом встановлення зв'язків.

At.png Для можливості архівування завершених сеансів, доки оператор перемикається між іншим кадрам, необхідно, для цього повноформатного кадру у дереві проекту, встановити параметр "Стор.: обробляти не відкритою".

За завершенням рецепту-програми відбувається генерація менеджером рецептів повідомлень із параметрами сеансу, а також архівування документу сеанса. Повідомлення із параметрами сеансу можуть бути використані або просто для перегляду історії сеансів, або-ж для формування переліку сеансів, наприклад, у групі графіків для переходу до історії на час сеансу. По замовченню архів звітів налаштовано на глубину 10 документів, що ви можете змінити встановлення атрибуту "Розмір архіву (n)" віджету документа.

Використання — виконання
У режимі виконання користувач може обрати потрібний рецепт-програму та запустити його на виконання, після чого відстежувати процес виконання або перейти до інших кадрів. Виконувану програму користувач може призупинити шляхом натиску кнопки "Пауза" у місці кнопки "Запуск" або перервати шляхом натиску кнопки "Зупинка". Крім цього, користувач може пропустити виконання поточного кроку, натиснувши кнопку "Пропустити". Також користувач може переглянути або роздрукувати звіти раніш виконуваних рецептів цього повноформатного кадру, для чого потрібно натиснути лівою клавишею миші на полі документу та погортати по архіву виконуваних рецептів, на панелі навігації, що виникла праворуч.

Рис.3.2b. Кадр "Рецепт — виконання" у режимі виконання.

Властивості зв'язування та конфігурації

Ідентифікатор Ім'я Тип Конфігурація Конфігураційний шаблон
dbDB БД: База даних Рядок Вхідний зв'язок Controller|dbDB
dbProgs БД: Таблиця програм Рядок Вхідний зв'язок Controller|dbProgs
prExtCurCom Контролер: поточна команда Рядок Вхідний зв'язок Controller|curCom
prExtMode Контролер: режим Цілий Повний зв'язок Controller|mode
prExtProg Контролер: програма Рядок Повний зв'язок Controller|prog
prExtStartTm Контролер: час запуску Цілий Вхідний зв'язок Controller|startTm
prExtWork Контролер: робочий Об'єкт Вхідний зв'язок Controller|work


3.3 Рецепт — виконання, простий (prescrRunSimple)

1.3 GPLv2 * en, uk, ru Роман Савоченко

Віджет, представлений на рисунку 3.3, це спрощений варіант кадру "Рецепт — виконання", який розроблено для розташування як віджет мнемосхем та він переважно і працює доповненням кадру "Рецепт — виконання". Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів.

Віджет містить, зліва праворуч та додолу:

Рис.3.3. Кадр "Рецепт — виконання, простий" у режимі розробки та виконання.

Використання — виконання
Цей віджет може бути використано розробником при створені мнемосхем з відображенням активності виконання рецептів та швидкого контролю ними. Для використання потрібно додати цей віджет на мнемосхему, підлаштувати горизонтальний, вертикальний розмір масштабом та підключити один параметр менеджеру рецептів, шляхом встановлення зв'язків.

Використання — виконання
У режимі виконання користувач може обрати потрібний рецепт-програму, у діалозі обрання програми у дереві що з'являється за натиском кнопки рецепту, та запустити його на виконання, після чого відстежувати процес виконання або перейти до інших кадрів. Виконувану програму користувач може призупинити шляхом натиску кнопки "Пауза" у місці кнопки "Запуск" або перервати шляхом натиску кнопки "Зупинка". Крім цього, користувач може пропустити виконання поточного кроку, натиснувши кнопку "Пропустити".

Властивості зв'язування та конфігурації

Ідентифікатор Ім'я Тип Конфігурація Конфігураційний шаблон
dbDB БД: База даних Рядок Вхідний зв'язок Controller|dbDB
dbProgs БД: Таблиця програм Рядок Вхідний зв'язок Controller|dbProgs
prExtCurCom Контролер: поточна команда Рядок Вхідний зв'язок Controller|curCom
prExtMode Контролер: режим Цілий Повний зв'язок Controller|mode
prExtProg Контролер: програма Рядок Повний зв'язок Controller|prog
prExtStartTm Контролер: час запуску Цілий Вхідний зв'язок Controller|startTm
prExtWork Контролер: робочий Об'єкт Вхідний зв'язок Controller|work
Libs/Prescriptions/uk - GFDLDecember 2024OpenSCADA 1+r3000