Назва | Версія | Ліцензія | Джерело | Мови | Автор | Іконка | Опис |
---|---|---|---|---|---|---|---|
Рецепти | 1.1, 1.1 | GPLv2 |
OscadaLibs.db (SQL, GZip) > DAQ.tmplb_PrescrTempl |
en, uk, ru | Роман Савоченко | Бібліотека елементів сценаріїв технологічних процесів — рецептів.
|
Бібліотека створюється для надання середовища виконання сценаріїв технологічних процесів — рецептів, та кадрів користувацького інтерфейсу довкола нього, включно з кадром створення/редагування рецептів та двома кадрами контролю виконання та звітності — "Рецепт — виконання" та "Рецепт — виконання, простий". Будується бібліотека на основі примітивів віджетів та мови внутрішнього програмування JavaLikeCalc, включно для шаблонів та команд.
Назви елементів та їх параметрів доступні на мовах: Англійська, Українська та mRussian. Їх вихідний код написано у мово(людська)-незалежному режимі з викликом функції перекладу tr() та переклад цих повідомлень також доступний Англійською, Українською та mRussian.
Сценарій технологічних операцій — рецепт, представляє собою послідовний виклик блоку функцій — команди, які приймають до п'яти аргументів та повертають рядок результату із кодом завершення на початку: "Робота (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-системи під прикладну область у вигляді шаблонів параметрів підсистеми "Збір даних", які надалі використовуються у логічному контролері рецептів, із низкою обов'язкових, службових та внутрішніх атрибутів:
Особливістю використання команд-параметрів є незалежне їх виконання та можливість залишити виконання низки команд у фоні, наприклад, регулятори. Ці команди, також, можна прямо підключати до джерела даних за допомогою зв'язків, або навіть реалізовувати їх обох у одному шаблоні-параметрі.
Цей режим наразі є основним та на основі нього було реалізовано багато механізмів взаємодії із кадрами візуалізації та контролю, які можуть не працювати, або працювати помилково зі старим "команда-макрос" режимом!
Режим виконання "команда-макрос" (старий)
Команди-макроси, які користувач може обирати при формуванні рецепту-програми, формуються програмістом 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+"с";
Для спеціальних цілей зарезервовано декілька назв команд:
Розділ містить 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 | Роман Савоченко |
Основний, представницький та уніфікований шаблон менеджеру та контролеру рецептів, їх опрацювання та прямого виконання у режимі "команда-макрос". Шаблон формує структуру параметру менеджеру рецептів, який може бути легко підключений до всіх кадрів цієї бібліотеки.
Представницькою структурою менеджеру рецептів є:
Функції
ВВ шаблону
Ідентифікатор | Ім'я | Тип | Режим | Атрибут | Конфігурація | Значення |
---|---|---|---|---|---|---|
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 |
Конфігурація та використання
dbDB dbProgs comLs prog mode curMode startTm curCom work
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 |
Конфігурація та використання
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 |
Конфігурація та використання
Містить елементи-кадри рецептів кінцевого типу та елементи-віджети, що призначені для розташування у розділі мнемосхем (вид відображення) дерева сторінок проекту, побудованого за концепцією об'єктів сигналізації кореневої сторінки "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, є одним із групи кадрів роботи із рецептами, який слугує для користувацького редагування рецептів-програм. Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів.
Кадр містить, зліва праворуч:
Використання — розробка
Кадр призначено для виконання ролі сторінки, а, відповідно, він має безпосередньо розташовуватися у дерево проекту. До кадру може бути підключено один параметр менеджеру рецептів, шляхом встановлення зв'язків.
Використання — виконання
У режимі виконання користувач може додавати нові рецепти-програми, видаляти, копіювати та експортувати існуючі, а також імпортувати рецепти інших станцій OpenSCADA. У обраному рецепті-програмі користувач може виконати: додання або вставку нового кроку, видалення або зміну положення обраного кроку. Для обраного кроку рецепту-програми користувач може встановити команду та ввести ім'я, опис, прапорець фонового виконання та значення доступних аргументів обраної команди, після чого зберегти зміну кроку.
Операції видалення супроводжуються появою діалогу-вікна підтвердження.
Властивості зв'язування та конфігурації
Ідентифікатор | Ім'я | Тип | Конфігурація | Конфігураційний шаблон |
---|---|---|---|---|
dbDB | БД: База даних | Рядок | Вхідний зв'язок | Controller|dbDB |
dbProgs | БД: Таблиця програм | Рядок | Вхідний зв'язок | Controller|dbProgs |
prExtComLs | Перелік доступних команд рецепту | Об'єкт | Вхідний зв'язок | Controller|comLs |
3.2 Рецепт — виконання (prescrRun) |
1.3 | GPLv2 | * | en, uk, ru | Роман Савоченко |
Кадр, представлений на рисунку 3.2, є одним із групи кадрів роботи із рецептами, який слугує для контролю та спостереження за виконанням програм-рецептів, раніш сформованих у кадрі "Рецепт — редагування". Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів. Додатково до цього повноформатного кадру виконання рецептів, передбачено спрощений — "Рецепт — виконання, простий", який дозволяє компактно керувати та відстежувати виконання рецептів у складі інших кадрів технологічного процесу.
Кадр містить, зліва праворуч:
Використання — розробка
Кадр призначено для виконання ролі сторінки, а, відповідно, він має безпосередньо розташовуватися у дерево проекту. До кадру може бути підключено один параметр менеджеру рецептів, шляхом встановлення зв'язків.
Для можливості архівування завершених сеансів, доки оператор перемикається між іншим кадрам, необхідно, для цього повноформатного кадру у дереві проекту, встановити параметр "Стор.: обробляти не відкритою".
За завершенням рецепту-програми відбувається генерація менеджером рецептів повідомлень із параметрами сеансу, а також архівування документу сеанса. Повідомлення із параметрами сеансу можуть бути використані або просто для перегляду історії сеансів, або-ж для формування переліку сеансів, наприклад, у групі графіків для переходу до історії на час сеансу. По замовченню архів звітів налаштовано на глубину 10 документів, що ви можете змінити встановлення атрибуту "Розмір архіву (n)" віджету документа.
Використання — виконання
У режимі виконання користувач може обрати потрібний рецепт-програму та запустити його на виконання, після чого відстежувати процес виконання або перейти до інших кадрів. Виконувану програму користувач може призупинити шляхом натиску кнопки "Пауза" у місці кнопки "Запуск" або перервати шляхом натиску кнопки "Зупинка". Крім цього, користувач може пропустити виконання поточного кроку, натиснувши кнопку "Пропустити". Також користувач може переглянути або роздрукувати звіти раніш виконуваних рецептів цього повноформатного кадру, для чого потрібно натиснути лівою клавишею миші на полі документу та погортати по архіву виконуваних рецептів, на панелі навігації, що виникла праворуч.
Властивості зв'язування та конфігурації
Ідентифікатор | Ім'я | Тип | Конфігурація | Конфігураційний шаблон |
---|---|---|---|---|
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, це спрощений варіант кадру "Рецепт — виконання", який розроблено для розташування як віджет мнемосхем та він переважно і працює доповненням кадру "Рецепт — виконання". Кадр загалом використовує та представляє представницьку структуру менеджеру рецептів.
Віджет містить, зліва праворуч та додолу:
Використання — виконання
Цей віджет може бути використано розробником при створені мнемосхем з відображенням активності виконання рецептів та швидкого контролю ними. Для використання потрібно додати цей віджет на мнемосхему, підлаштувати горизонтальний, вертикальний розмір масштабом та підключити один параметр менеджеру рецептів, шляхом встановлення зв'язків.
Використання — виконання
У режимі виконання користувач може обрати потрібний рецепт-програму, у діалозі обрання програми у дереві що з'являється за натиском кнопки рецепту, та запустити його на виконання, після чого відстежувати процес виконання або перейти до інших кадрів. Виконувану програму користувач може призупинити шляхом натиску кнопки "Пауза" у місці кнопки "Запуск" або перервати шляхом натиску кнопки "Зупинка". Крім цього, користувач може пропустити виконання поточного кроку, натиснувши кнопку "Пропустити".
Властивості зв'язування та конфігурації
Ідентифікатор | Ім'я | Тип | Конфігурація | Конфігураційний шаблон |
---|---|---|---|---|
dbDB | БД: База даних | Рядок | Вхідний зв'язок | Controller|dbDB |
dbProgs | БД: Таблиця програм | Рядок | Вхідний зв'язок | Controller|dbProgs |
prExtCurCom | Контролер: поточна команда | Рядок | Вхідний зв'язок | Controller|curCom |
prExtMode | Контролер: режим | Цілий | Повний зв'язок | Controller|mode |
prExtProg | Контролер: програма | Рядок | Повний зв'язок | Controller|prog |
prExtStartTm | Контролер: час запуску | Цілий | Вхідний зв'язок | Controller|startTm |
prExtWork | Контролер: робочий | Об'єкт | Вхідний зв'язок | Controller|work |
Libs/Prescriptions/uk - GFDL | March 2024 | OpenSCADA 0.9.7 |