ЗАТВЕРДЖЕНО 1116139.00218-01 13 01-ЛЗ	

Середовище програмування системи OpenSCADA

Опис програми

1116139.00218-01 13 01

Листів 61

2005

АНОТАЦІЯ

Документ 1116139.00218-01 13 01 “Середовище програмування системи OpenSCADA. Опис програми.” входить до складу програмної документації на середовище програмування системи OpenSCADA.

Даний документ містить детальний опис компонентів середовища програмування системи OpenSCADA. До складу компонентів середовища програмування входять:

підсистема “Функції” системи OpenSCADA;

модуль “JavaLikeCalc” підсистеми “Контролери”;

модуль “BlockCalc” підсистеми “Контролери”;

модуль “StaticFuncLibs” підсистеми “Спеціальні”.

ЗМІСТ

1 ЗАГАЛЬНІ ВІДОМОСТІ	4

2 ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ	6

2.1 Призначення підсистеми “Функції” системи OpenSCADA	6

2.2 Призначення модулю “JavaLikeCalc” підсистеми “Контролери”	6

2.3 Призначення модулю “BlockCalc” підсистеми “Контролери”	7

2.4 Призначення модулю “StaticFuncLibs” підсистеми “Спеціальні”	7

3 УМОВИ ВИКОРИСТАННЯ	8

4 ОПИС ЛОГІЧНОЇ СТРУКТУРИ	9

4.1 Логічна структура підсистеми “Функції”	12

4.2 Логічна структура модуля “JavaLikeCalc” підсистеми “Контролери”	14

4.2.1 Елементи	17

4.2.2 Операції	17

4.2.3 Вбудовані функції	19

4.2.4 Оператори	20

4.2.5 Приклади програми на Java-подібній мові	20

4.3 Логічна структура модуля “BlockCalc” підсистеми “Контролери”	21

4.4 Логічна структура модуля “StaticFuncLibs” підсистеми “Спеціальні”	24

5 ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ	28

6 ВИКЛИК ТА ЗАВАНТАЖЕННЯ	29

7 ВХІДНІ ТА ВИХІДНІ ДАНІ	30

7.1 Вхідні та вихідні дані підсистеми “Функції”	30

7.2 Вхідні та вихідні дані модуля “JavaLikeCalc” підсистеми “Контролери”	30

7.3 Вхідні та вихідні дані модуля “BlockCalc” підсистеми “Контролери”	30

7.4 Вхідні та вихідні дані модуля “StaticFuncLibs” підсистеми “Спеціальні”	31

8 ОПИС ІНТЕРФЕЙСУ КОРИСТУВАЧА	32

8.1 Інтерфейс користувача підсистеми “Функції”	37

8.2 Інтерфейс користувача модуля “JavaLikeCalc” підсистеми “Контролери”	41

8.3 Інтерфейс користувача модуля “BlockCalc” підсистеми “Контролери”	49

8.4 Інтерфейс користувача модуля “StaticFuncLibs” підсистеми “Спеціальні”	55

9 ПОВІДОМЛЕННЯ	56

БІБЛІОГРАФІЧНИЙ СПИСОК	61

ЗАГАЛЬНІ ВІДОМОСТІ

OpenSCADA[1] являє собою відкриту SCADA систему побудовану за принципами модульності, багатоплатформності та масштабованості. SCADA[2] (Supervisory Control And Data Acquisition) у перекладі: «Системи диспетчерського керування та збору даних» є терміном який вживається у сфері автоматизації технологічних процесів. Система OpenSCADA призначена для: збору, архівації, візуалізації інформації, видачі керуючих дій, а також для інших споріднених операцій, характерних для повноцінної SCADA системи.

Основними цілями які переслідує проект є:

відкритість;

багатоплатформність;

надійність;

гнучкість;

масштабованість;

безпека;

фінансова доступність;

надання зручного інтерфейсу керування.

Система OpenSCADA призначена для виконання як звичайних функцій SCADA систем, так і для використання у суміжних сферах інформаційних технологій.

Система OpenSCADA може використовуватися:

на промислових об'єктах у якості повноцінної SCADA системи;

у вбудованих системах у якості середовища виконання (у тому числі всередині PLC);

для побудови різноманітних моделей (технологічних, хімічних, фізичних, електричних процесів);

на персональних комп'ютерах, серверах та кластерах для збору, обробки, представлення та архівації інформації про систему та її оточення.

Компоненти середовища програмування системи OpenSCADA призначені для надання можливості гнучкого створення:

алгоритмів керування технологічними процесами;

моделей технологічних, хімічних, фізичних та інших процесів, а також для реалізації адаптивних механізмів керування за моделями;

програм користувача для керування внутрішніми функціями системи OpenSCADA та її підсистемами і модулями;

гнучкого формування структур параметрів на рівні користувача (логічний рівень);

допоміжних обчислень.

Середовище програмування системи OpenSCADA представляє собою комплекс компонентів які надають обчислювальне середовище. До складу компонентів середовища програмування входять:

підсистема “Функції” системи OpenSCADA;

модуль “JavaLikeCalc” підсистеми “Контролери”;

модуль “BlockCalc” підсистеми “Контролери”;

модуль “StaticFuncLibs” підсистеми “Спеціальні”.

ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ

Кожен компонент має власне функціональне призначення. Розглянемо функціональні призначення компонентів.

Призначення підсистеми “Функції” системи OpenSCADA

Підсистема «Функції» системи OpenSCADA призначена для:

зберігання загальних структур: бібліотек, функцій, параметрів функцій та кадру значень функцій;

реєстрації/видалення бібліотек функцій;

можливість дозволу/заборони доступу до бібліотек та функцій;

надання доступу до бібліотек та функцій компонентам системи;

зв'язування кадру значень з функцією;

підтримки параметрів чотирьох типів: цілі, реальні, логічні та строкові.

можливості тестування функцій для вказаних вхідних даних.

Призначення модулю “JavaLikeCalc” підсистеми “Контролери”

Модуль “JavaLikeCalc” містить інструмент для створення функцій та бібліотек функцій, а також для безпосередніх обчислень на основі Java-подібної[3] мови. Модуль “JavaLikeCalc” призначено для:

конфігурації контролерів даного типу з можливістю встановлення періоду обчислення та кількості обчислень у одному циклі;

надання простих типів параметрів для доступу до даних обчислювача із системи;

створення параметрів обчислюваної функції контролеру із збереженням кадру значень окремо від контролера;

створення програми обчислення для контролера;

підтримки звернень до атрибутів параметрів із програми;

формування бібліотек функцій користувачем;

формування функцій користувачем;

редагування параметрів функції з попередженням користувачів функції про зміну структури, тобто без переривання обчислень та блокування можливостей модифікації;

створення програми функції на Java-подібній мові.

Призначення модулю “BlockCalc” підсистеми “Контролери”

Модуль “BlockCalc” містить інструмент для створення алгоритмів за допомогою мови блокових схем. Модуль призначено для:

конфігурації контролерів даного типу з можливістю встановлення періоду обчислень та кількості обчислень у одному циклі;

надання простих типів параметрів для доступу до даних обчислювача з системи;

формування блоків блочної схеми;

зв'язування блоків один з одним та з атрибутами параметрів.

Призначення модулю “StaticFuncLibs” підсистеми “Спеціальні”

Модуль “StaticFuncLibs” містить статичні бібліотеки. Модуль призначено для:

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

формування та реєстрації бібліотек функцій сумісності з SCADA Complex1 фірми НІП “ДІЯ”;

обслуговування системних команд запуску та зупинки модуля з метою забезпечення підтримки автоматичного поновлення модуля бібліотек.

УМОВИ ВИКОРИСТАННЯ

Для функціонування потрібне середовище системи OpenSCADA та операційне середовище у якому система OpenSCADA може працювати. Таким операційним середовищем є операційна система Linux[4]. Для дистрибутиву ALTLinux2.4 доступні зібрані пакети які можна встановити не виконуючи збірку системи OpenSCADA.

З апаратних засобів, для використання системи OpenSCADA та середовища програмування у її складі, потрібна конфігурація:

процесор з сімейства x86 або x86_64 з частотою мінімум 1 ГГц, для підвищення продуктивності рекомендується 2 Ггц;

ОЗУ: мінімум 256 Мб, для підвищення продуктивності рекомендується 512 Мб;

HDD: мінімум 3 Гб, де 2.5Гб для ОC та 500Мб на систему OpenSCADA;

монітор: мінімум TFT 17”, рекомендується TFT 19” для якіснішого сприйняття технологічного процесу на значній відстані;

клавіатура технологічна;

маніпулятор типу “миша”;

аудіо-колонки для сигналізації;

мережевий адаптер для підключення у мережу з технологічним сервером збору та обробки даних.

ОПИС ЛОГІЧНОЇ СТРУКТУРИ

Загальну структуру середовища програмування зображено на рис.. У склад середовища програмування входять:

підсистема “Функції” системи OpenSCADA;

бібліотеки функцій;

обчислювальні контролери.

Рис. 1. Загальна структура середовища програмування

Бібліотеки функцій можуть реалізовуватися як зовнішні модулі які можуть містити багато бібліотек функцій. Бібліотеки можуть бути реалізовані як набором функцій фіксованого типу, так і функціями які допускають вільну модифікацію та доповнення користувачем.

Бібліотеки функцій фіксованого типа можуть постачатися разом зі звичайними модулями системи. Функції таких бібліотек будуть містити інтерфейси доступу до засобів цих модулів на рівні користувача. Наприклад, «Середовище візуалізації» може надавати функції для видачі повідомлень. Використовуючи ці функції користувач зможе закладати інтерактивні алгоритми взаємодії з системою OpenSCADA.

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

Всі функції реєструються у підсистемі “Функції” системи OpenSCADA та стають доступними усій системі.

На основі функцій, які доступні у підсистемі “Функції”, будуються обчислювальні контролери та вузли. Обчислювальні контролери виконують зв'язування функції з параметрами системи та механізмом обчислення. Таке зв'язування може виконуватися за допомогою простих мов, наприклад мовою блочних схем. Декілька обчислювачів можуть використовувати одну ї ту ж функцію оскільки, самі функції не містять контексту значень, а тільки виконують обчислення над отриманим контекстом значень (рис.2).

Рис. 2. Основа середовища програмування

Загальну статичну діаграму системи програмування на прикладі модуля “BlockCalc” приведено на рис.3.

Рис. 3. Загальна статична діаграма середи програмування на прикладі модуля “BlockCalc”

Загальну діаграму наявних компонентів системи програмування наведено на рис.4.

Рис. 4. Загальна діаграма компонентів середи програмування

Логічна структура підсистеми “Функції”

Підсистема “Функції” реалізована декількома класами(об'єктами), які фізично розташовані у ядрі системи OpenSCADA. Статичну діаграму класів підсистеми “Функції” системи OpenSCADA наведено на рис.5.

Рис. 5. Статична діаграма класів підсистеми "Функції"

Як видно із статичної діаграми класів, підсистема “Функції” складається із наступних класів (об'єктів): TFunctionS, TLibFunc, TFunction, TValFunc та IO. Призначення кожного класу підсистеми “Функції” приведені у таблиці 1.

Підсистема “Функції” є складовою частиною ядра системи OpenSCADA, яка містить інтерфейси та визначення об'єктів потрібних для роботи інших компонентів. Підсистемою функції визначаються такі об'єкти як:

підсистема, як точка входу;

бібліотеки функцій, як контейнери функцій;

функції, як сховище алгоритму обчислення та параметрів;

параметри, як визначення типу та режиму параметру функції;

кадр значень, як визначення сховища значень функцій у відповідності із структурою функції.

Таблиця 1. Класи підсистеми "Функції"

Ім'я	Опис
TFunctionS	Корінний клас підсистеми “Функції” системи OpenSCADA. Містить зареєстровані бібліотеки функцій.
TLibFunc	Клас бібліотеки функцій. Є абстрактним і має бути наслідуваним. Містить функції. Може надавати користувачу механізм (у нащадку) для створення нових функції.
TFunction	Клас функції. Є абстрактним і має бути наслідуваним. Містить опис параметрів (IO). У нащадку має містити реалізацію алгоритму функції.
TValFunc	Клас значень функції. Містить значення функції у відповідністю із складом параметрів (IO) класу TFunction. Екземпляр класу TValFunc передається класу TFunction під час обчислення для виконання алгоритму TFunction над значеннями TValFunc.
IO	Клас параметру функції. Містить опис параметру, його тип та атрибути.

Логічна структура модуля “JavaLikeCalc” підсистеми “Контролери”

Модуль “JavaLikeCalc” реалізовано декількома класами які розташовано у окремому файлі. Статичну діаграму класів модуля приведено на рис.6.

Рис. 6. Статична діаграма модуля "JavaLikeCalc"

Як видно із статичної діаграми класів, модуль “JavaLikeCalc” складається із декількох класів (об'єктів) які належать області видимості “JavaLikeCalc”. Призначення кожного класу модуля приведені у таблиці 2.

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

Безпосередні обчислювання забезпечуються створенням та зв'язуванням контролера з функцією цього ж модуля. Для зв'язування з функцією, у контролері, створюється кадр значень над яким і виконуються періодичні обчислення.

Для експорту отриманих значень з контролера до системи OpenSCADA та для імпорту значень із системи до контролера використовуються параметри контролера. Параметри контролера пов'язуються з параметром обчислювальної функції (полем таблиці даних) та виконують відображення значень.

Таблиця 2. Класи модуля "JavaLikeCalc"

Ім'я	Опис
TipContr	Корінний клас модуля “JavaLikeCalc” який наслідує модульний клас TTipController системи OpenSCADA. Головним призначенням цього класу є точка входу у модуль. Окрім цього, цей клас містить: перелік бібліотек які надаються цим модулем; об'єкти класів (BFunc) вбудованих функцій Java-подібної мови; об'єкти класів (NConst) іменованих констант Java-подібної мови.
Contr	Клас контролера, який наслідує клас TControler системи OpenSCADA та клас значень функції TValFunc. Містить механізм періодичних обчислень над алгоритмом функцій цього модуля.
Prm	Клас параметру, який наслідує клас TParamContr системи OpenSCADA. Призначений для відображення параметрів функцій контролера на структури системи OpenSCADA. Тобто для доступу з інших компонентів системи OpenSCADA.
Lib	Клас бібліотеки, який наслідує клас TLibFunc системи OpenSCADA. Призначений для надання механізму створення функцій на Java-подібній мові.
Func	Клас функції, який наслідує клас TFunction системи OpenSCADA. Призначений для надання функції, визначеної користувачем структури, та алгоритму на Java-подібній мові програмування. Містить, також об'єкти класів: Reg, RegW та UFunc.
BFunc	Клас вбудованої функції. Містить опис та параметри функції.
NConst	Клас іменованої константи. Містить опис та значення константи.
Reg	Клас регістру віртуальної машини. Містить інформацію про тип регістру, його вміст та іншу інформацію потрібну для побудови програми віртуальної машини.
RegW	Клас робочого регістру віртуальної машини. Містить тільки дані про тип та значення регістру яких достатньо для роботи віртуальної машини.
UFunc	Клас зовнішньої функції який використовується програмою віртуальної машини.

Параметри функції можуть вільно створюватися, видалятися або модифікуватися. Модуль підтримує до 255 параметрів функції (у сумі з внутрішніми змінними).

Після будь яких змін програми або конфігурації, виконується перекомпіляція програми з упередженням, пов'язаних з функцією, об'єктів значень TValCfg. Компілятор мови побудовано на відомому генераторі синтаксичного аналізатора «Bison»[5] який є сумісним з не менш відомим генератором “Yacc”.

Мовою використовується неявні визначення локальних змінних, яке полягає у визначені нової змінної під час присвоєння їй першого значення. До того ж, тип локальної змінної встановлюється у відповідності з типом значення яке їй вперше було присвоєно. Наприклад, вираз <Qr=Q0*Pi+0.01;> визначить змінну Qr типом змінної Q0.

У роботі з різними типами даних використовується механізм автоматичного приведення типів у місцях де таке приведення є доцільним.

Для коментування ділянок коду мовою передбачені символи «//». Все що йде після даних символів, до кінця строки, ігнорується компілятором.

Під час генерації коду віртуальної машини, компілятор мови виконує оптимізацію за константами та приведення типів констант до необхідного типу. Під оптимізацією за константами розуміється виконання обчислень над двома константами у процесі побудови коду та наступна вставка результату у код. Наприклад вираз <y=pi*10;> згорнеться до простого присвоювання <y=31.4159;>. Під приведенням типів констант до необхідного типу, розуміється формування у коді константи, яка виключає приведення типу у процесі виконання. Наприклад вираз <y=x*10> у випадку реального типу змінної <x> перетвориться у <y=x*10.0>.

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

ключові слова;

константи;

вбудовані функції;

зовнішні функції;

відомі змінні;

параметри функції;

створення внутрішньої змінної.

Формат виклику зовнішньої функції має наступний вигляд: <бібліотека.функція>. У випадку виклику функції з поточної бібліотеки ім'я бібліотеки може опускатися.

Елементи

Ключові слова:	if, else, true, false.

Постійні:

десятинні	- цифри 0–9 (12,111, 678);

восьмеричні	- цифри 0–7 ( 012, 011, 076);

шістнадцятирічні	- цифри 0–9, букви a-f або A-F (0x12, 0XAB);

реальні	- 345.23, 2.1e5, 3.4E-5, 3e6;

логічні	- true, false;

строкові	- “hello”.

Типи змінних:

ціле	- -2^31...2^31;

реальні	- 3.4 * 10^308;

логічне	- false, true;

строка	- довжина до 256 символів, без переходу на іншу строку.

Вбудовані константи:	pi = 3.14159265, e = 2.71828182.

Операції

Операції, які підтримуються мовою представлені у таблиці 3. Пріоритет операцій зменшується зверху вниз. Операції з однаковим пріоритетом входять у одну групу кольору.

Таблиця 3. Операції Java-подібної мови

Символ	Опис
()	Виклик функції.
{}	Програмні блоки.
-	Унарний мінус.
!	Логічне заперечення.
~	Побітове заперечення.
*	Множення.
/	Ділення.
%	Залишок від цілочисельного ділення.
+	Складання.
-	Віднімання.
>	Більше.
>=	Більше та дорівнює
<	Менше.
<=	Менше та дорівнює.
==	Дорівнює.
!=	Не дорівнює.
|	Побітове «АБО»
&	Побітове «І»
^	Побітове «Виключаюче АБО»
&&	Логічне «І»
||	Логічне «АБО»
?:	Умовна операція (i=(i<0)?0:i;)
=	Присвоєння.
+=	Присвоєння з доданням.
-=	Присвоєння з відніманням.
*=	Присвоєння з добутком.
/=	Присвоєння з діленням.

Вбудовані функції

Для забезпечення високої швидкості роботи на математичних обчисленнях модуль надає вбудовані математичні функції (таблиця 4), які викликаються на рівні команд віртуальної машини.

Таблиця 4. Вбудовані функції Java-подібної мови

Функція	Опис
sin(x)	Синус x.
cos(x)	Косинус x.
tan(x)	Тангенс x.
sinh(x)	Синус гіперболічний x.
cosh(x)	Косинус гіперболічний x.
tanh(x)	Тангенс гіперболічний x.
asin(x)	Арксинус x.
acos(x)	Арккосинус x.
atan(x)	Арктангенс x.
rand(x)	Випадкове число від 0 до x.
lg(x)	Десятинний логарифм x.
ln(x)	Натуральний логарифм x.
exp(x)	Експонента x.
pow(x,y)	Взведення <x> у ступінь <y>.
sqrt(x)	Корінь квадратний x.
abs(x)	Абсолютне значення x.
sign(x)	Знак числа x.
ceil(x)	Округлення числа x до більшого цілого.
floor(x)	Округлення числа x до меншого цілого.

Оператори

Мовою модуля підтримуються два типи умовних операторів. Перший це умовний оператор для використання всередині виразу, другий – глобальний.

Умовний оператор для використання всередині виразу будується на операції «?:». У якості прикладу можна записати наступний практичний вираз <st_open=(pos>=100)?true:false;> що читається як «Якщо змінна pos більше або дорівнює 100 то змінній st_open присвоюється значення true інакше false.

Глобальна умова будується на основі ключових слів «if» та «else». У якості прикладу можна привести той же вираз, але записаний іншим способом <if(pos>100) st_open=true; else st_open=false;>. Як видно вираз записано по іншому але читається він так же.

Приклади програми на Java-подібній мові

Приведемо декілька прикладів програми:

//Модель ходу виконавчого механізму шарового крана
if( !(st_close && !com) && !(st_open && com) )
{
tmp_up=(pos>0&&pos<100)?0:(tmp_up>0&&lst_com==com)?tmp_up-1./frq:t_up;
pos+=(tmp_up>0)?0:(100.*(com?1.:-1.))/(t_full*frq);
pos=(pos>100)?100:(pos<0)?0:pos;
st_open=(pos>=100)?true:false;
st_close=(pos<=0)?true:false;
lst_com=com;
} //Модель клапану
Qr=Q0+Q0*Kpr*(Pi-1)+0.01;
Sr=(S_kl1*l_kl1+S_kl2*l_kl2)/100.;
Ftmp=(Pi>2.*Po)?Pi*pow(Q0*0.75/Ti,0.5):(Po>2.*Pi)?Po*pow(Q0*0.75/To,0.5):pow(abs(Q0*(pow(Pi,2)-pow(Po,2))/Ti),0.5);
Fi-=(Fi-7260.*Sr*sign(Pi-Po)*Ftmp)/(0.01*lo*frq);
Po+=0.27*(Fi-Fo)/(So*lo*Q0*frq);
Po=(Po<0)?0:(Po>100)?100:Po;
To+=(abs(Fi)*(Ti*pow(Po/Pi,0.02)-To)+(Fwind+1)*(Twind-To)/Riz)/(Ct*So*lo*Qr*frq);

Логічна структура модуля “BlockCalc” підсистеми “Контролери”

Модуль “BlockCalc” реалізовано декількома класами які розташовані у окремому файлі. Статичну діаграму класів модуля приведено на рис.7.

Рис. 7. Статична діаграма класів модуля "BlockCalc"

Як видно із статичної діаграми класів, модуль “BlockCalc” складається із декількох класів (об'єктів) які належать області видимості “Virtual”. Призначення кожного класу модуля приведені у таблиці 5.

Модуль підсистеми «Контролери» “BlockCalc” надає в систему механізм створення внутрішніх обчислень. Механізм базується на блокових схемах.

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

Блоки блочної схеми можуть пов'язуватися як між собою так і підключатися до атрибутів параметрів. Самі блоки, при цьому, не містять структури входів/виходів(IO) а містять тільки значення виходячи із структури IO пов'язаної функції. Для поєднання з блоком використовуються функції зареєстровані у підсистемі «Функції» системи OpenSCADA.

Таблиця 5: Класи модуля "BlockCalc"

Ім'я	Опис
TipContr	Корінний клас модуля “BlockCalc”, який наслідує модульний клас TTipController системи OpenSCADA. Головним призначенням цього класу є точка входу у модуль.
Contr	Клас контролера, який наслідує клас TControler системи OpenSCADA. Містить блочну схему та механізм її періодичного обчислення.
Prm	Клас параметру, який наслідує клас TParamContr системи OpenSCADA. Призначений для відображення блоків і їх параметрів на структури системи OpenSCADA, тобто для доступу з інших компонентів системи OpenSCADA.
Block	Клас блоку. Містить атрибути у відповідності з асоційованою функцією, а також механізм зв'язків між блоками.

Будь який блок може, у будь який момент, бути виключено з обробки та переконфігуровано після чого може бути знову включено у обробку. Зв'язки між блоками можуть встановлюватися без потреби виключення блоків з обробки та зупинки контролера. Значення всіх параметрів(IO) які не охоплені зв'язками можуть бути змінені у процесі обробки.

У процесі зв'язування IO блоків не виконується строгого слідування типам IO. Це означає що IO різних типів можуть легко зв'язуватися один з одним. При цьому у процесі обчислення буде виконуватися автоматичне приведення типів.

Підтримуються наступні типи зв'язків:

міжблокові, підключення входу одного блока до виходу іншого блока, а також входу одного блока до входу іншого;

дальні міжблокові, з'єднання блоків із різних контролерів даного модуля;

коефіцієнт, перетворення входу в константу, всі входи/виходи по замовченню ініціалізуються як константи;

зовнішній атрибут параметра.

У відповідності з реалізацією функцій, у системі OpenSCADA підтримуються чотири основних типів IO: ціле, реальне, логічне та строка.

Отримані блочною схемою значення можуть бути експортовані до системи OpenSCADA шляхом створення параметра контролера. Таким же чином значення із системи OpenSCADA можуть потрапити до блочної схеми контролера. Параметри контролера пов'язуються з входами окремо взятого блоку та виконують відображення значень.

Логічна структура модуля “StaticFuncLibs” підсистеми “Спеціальні”

Модуль “StaticFuncLibs” реалізовано декількома класами, які розташовані у окремому файлі. Статичну діаграму класів модуля приведено на рис.8.

Рис. 8. Статична діаграма класів модуля "StaticFuncLibs"

Як видно із статичної діаграми класів, модуль “StaticFuncLibs” складається із декількох класів (об'єктів), які належать області видимості “StatFunc”. Призначення кожного класу модуля приведені у таблиці 6.

Таблиця 6. Класи модуля "StaticFuncLibs"

Ім'я	Опис
Libs	Корінний клас модуля “StaticFuncLibs” який наслідує модульний клас TSpecial системи OpenSCADA. Головним призначенням цього класу є точка входу у модуль.
Complex1	Клас бібліотеки функцій сумісності з SCADA Complex1. Наслідує інтерфейсний клас бібліотек TLibFunc. Містить декілька функцій сумісності з SCADA Complex1.
StdMath	Клас бібліотеки стандартних математичних функцій. Наслідує інтерфейсний клас бібліотек TLibFunc. Містить стандартні математичні функції.

Спеціальний модуль “StaticFuncLibs” надає в систему статичні бібліотеки функцій:

бібліотека функцій сумісності зі SCADA Complex1, функції якої приведено у таблиці 7;

бібліотека стандартних математичних функцій, функції якої приведено у таблиці 8.

Таблиця 7. Функції бібліотеки сумісності з SCADA Complex1

Id	Ім'я	Опис функції. Формули обчислення функції.
1	2	3
alarm	Сигнал	Сигнал за шкалою параметра: out = if(val>max || val<min) then true; else false;
cond <	Умова '<'	Умова '<' за формулою: out=if(in1<(in2_1*in2_2*in2_3*in2_4)) then in3_1*in3_2*in3_3*in3_4; else in4_1*in4_2*in4_3*in4_4;
cond >	Умова '>'	Умова '>' за формулою: out=if(in1>(in2_1*in2_2*in2_3*in2_4)) then in3_1*in3_2*in3_3*in3_4; else in4_1*in4_2*in4_3*in4_4;
cond_full	Повна умова	Повна умова за формулою: out = if(in1<(in2_1*in2_2*in2_3*in2_4)) then in3_1*in3_2*in3_3*in3_4; else if( in1>(in4_1*in4_2*in4_3*in4_4) then in5_1*in5_2*in5_3*in5_4; else in6_1*in6_2*in6_3*in6_4;
digitBlock	Дискретний блок	Збірка дискретних сигналів.
div	Дільник	Дільник за формулою: out = (in1_1*in1_2*in1_3*in1_4*in1_5 + in2_1*in2_2*in2_3*in2_4*in2_5 + in3) / (in4_1*in4_2*in4_3*in4_4*in4_5 + in5_1*in5_2*in5_3*in5_4*in5_5 + in6);
exp	Експонента	Експонента за формулою: out=exp (in1_1*in1_2*in1_3*in1_4*in1_5 + (in2_1*in2_2*in2_3*in2_4*in2_5+in3) / (in4_1*in4_2*in4_3*in4_4*in4_5+in
flow	Витрати	Розрахунок витрат за формулою: f = K1*((K3+K4*x)^K2);

Продовження таблиці 7

1	2	3
increment	Ітератор	Ітератор за формулою: out = if( in1 > in2 ) then in2 + in3*(in1-in2); else in2 - in4*(in2-in1);
lag	Затримка	Затримка за формулою: y = y - Klag*( y - x );
mult	Просте множення	Просте множення за формулою: out=(in1_1*in1_2*in1_3*in1_4*in1_5*in1_6)/ (in2_1*in2_2*in2_3*in2_4);
multDiv	Умножение+деление	Множення+ділення за формулою: out=in1_1*in1_2*in1_3*in1_4*in1_5* (in2_1*in2_2*in2_3*in2_4*in2_5+(in3_1*in3_2*in3_3*in3_4*in3_5)/ (in4_1*in4_2*in4_3*in4_4*in4_5));
pid	ПІД регулятор	ПІД регулятор
pow	Ступень	Взведення у ступінь за формулою: out=(in1_1*in1_2*in1_3*in1_4*in1_5)^ (in2_1*in2_2*in2_3*in2_4*in2_5 + (in3_1*in3_2*in3_3*in3_4*in3_5)/ (in4_1*in4_2*in4_3*in4_4*in4_5));
select	Вибір	Вибір за формулою: out = if( sel = 1 ) then in1_1*in1_2*in1_3*in1_4; if( sel = 2 ) then in2_1*in2_2*in2_3*in2_4; if( sel = 3 ) then in3_1*in3_2*in3_3*in3_4; if( sel = 4 ) then in4_1*in4_2*in4_3*in4_4;
sum	Простий суматор	Простий суматор за формулою: out=in1_1*in1_2+in2_1*in2_2+in3_1*in3_2+in4_1*in4_2 + in5_1*in5_2+in6_1*in6_2+in7_1*in7_2+in8_1*in8_2;
sum_div	Сума з дільником	Сума з дільником за формулою: out = in1_1*in1_2*(in1_3+in1_4/in1_5) + in2_1*in2_2*(in2_3+in2_4/in2_5) + in4_1*in4_2*(in4_3+in4_4/in4_5) + in5_1*in5_2*(in5_3+in5_4/in5_5);
sum_mult	Сума з множенням	Сума з додатком за формулою: out = in1_1*in1_2*(in1_3*in1_4+in1_5) + in2_1*in2_2*(in2_3*in2_4+in2_5) + in4_1*in4_2*(in4_3*in4_4+in4_5) + in5_1*in5_2*(in5_3*in5_4+in5_5);

Таблиця 8. Функції бібліотеки стандартних математичних функцій

Id	Ім'я	Опис
abs	Модуль	Модуль від числа.
acos	Арккосинус	Арккосинус.
asin	Арксинус	Арксинус.
atan	Арктангенс	Арктангенс.
ceil	Округл. до більшого	Округлення до більшого цілого.
cos	Косинус	Ксинус.
cosh	Косинус гіперболічний	Косинус гіперболічний.
exp	Експонента	Експонента.
floor	Округл. до меншого	Округлення до меншого цілого
if	Умова Якщо	Функція умова «Якщо».
lg	Десятинний логарифм	Десятинний логарифм.
ln	Натуральний логарифм	Натуральний логарифм.
pow	Степінь	Взведення у ступінь.
rand	Випадкове число	Генератор випадкових чисел.
sin	Синус	Синус.
sinh	Синус гіперболічний	Синус гіперболічний.
sqrt	Корінь квадратний	Корінь квадратний.
tan	Тангенс	Тангенс.
tanh	Тангенс гіперболічний	Тангенс гіперболічний.

ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ

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

Оскільки у межах проекту розроблені компоненти моделей хіміко-технологічних систем, а також створена математична модель окремого вузла технологічного процесу, то систему OpenSCADA треба запускати у конфігурації оператора системи OpenSCADA, тобто система має задовольняти першому класу ПТК(програмно-технічного комплексу) з технічного завдання.

ВИКЛИК ТА ЗАВАНТАЖЕННЯ

Для завантаження системи OpenSCADA та компонентів середовища програмування у її складі, для архітектури x86+Linux(дистрибутив ALTLinux2.4), треба виконати наступні дії:

встановити дистрибутив системи OpenSCADA у вигляді пакету openscada-0.4.1-alt1.i586;

встановити пакет з демонстраційною БД (у БД SQLite) у вигляді пакету openscada-demo-0.4.1-alt1.i586;

якщо потрібна документація, то встановити пакет openscada-doc-0.4.1-alt1.i586.

Після встановлення, у відповідності з вище наведеними кроками буде отримана встановлена та готова для запуску систему OpenSCADA у демонстраційній конфігурації.

Для запуску системи OpenSCADA достатньо, в консолі або деінде, набрати команду openscada. Цим буде запущено систему OpenSCADA з порожньою конфігурацією. Для запуску системи OpenSCADA у демонстраційній конфігурації треба, в консолі або деінде, набрати команду openscada_demo.

ВХІДНІ ТА ВИХІДНІ ДАНІ

Кожний із компонентів середовища програмування системи OpenSCADA має власні вхідні та вихідні дані. Розглянемо вхідні та вихідні дані кожного компоненту.

Вхідні та вихідні дані підсистеми “Функції”

Вхідними, як і вихідними даними для підсистеми “Функції” виступають функції та їх бібліотеки. Власне, підсистема “Функції” є контейнером який збирає функції у одних компонентів, шляхом реєстрації, і надає їх іншим за допомогою стандартного програмного інтерфейсу (API).

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

Вхідні та вихідні дані модуля “JavaLikeCalc” підсистеми “Контролери”

Вхідними даними модуля “JavaLikeCalc” є:

алгоритми обчислень на Java-подібній мові;

структури обчислювальних даних у вигляді параметрів функції;

таблиці даних контролерів;

вхідні системні дані для обчислювальних контролерів, у тому числі імпортовані з системи.

Виходом модуля є:

функції та бібліотеки створені користувачем;

контролери безпосереднього обчислення;

дані отримані під час обчислень у контролерах;

дані які було експортовано у систему з обчислювальних контролерів.

Вхідні та вихідні дані модуля “BlockCalc” підсистеми “Контролери”

Вхідними даними модуля “BlockCalc” є:

алгоритми обчислень на мові блочних схем;

структури обчислювальних даних;

вхідні системні дані для обчислювальних контролерів, у тому числі імпортовані з системи.

Виходом модуля є:

контролери безпосереднього обчислення;

дані отримані під час обчислень у контролерах;

дані які було експортовано у систему з обчислювальних контролерів.

Вхідні та вихідні дані модуля “StaticFuncLibs” підсистеми “Спеціальні”

Модуль не має вхідних даних, він тільки надає функції статичних бібліотек як вихід. Модуль надає бібліотеки:

бібліотека функцій сумісності зі SCADA Complex1;

бібліотека стандартних математичних функцій.

ОПИС ІНТЕРФЕЙСУ КОРИСТУВАЧА

Основним користувачем розроблених компонентів є програміст SCADA-системи. Для нього передбачено інтерфейс користувача побудований на сценаріях керування системою OpenSCADA. На основі цих сценаріїв можуть будуватися різноманітні модулі конфігурації основною різницею яких є робоче середовище.

Після запуску системи OpenSCADA, користувач отримає вікно модуля конфігурації “QTCfg” яке побудоване на графічній бібліотеці QT[6] (рис. 9).

Окрім середовища бібліотеки QT, користувач може скористатися WEB-інтерфейсом який надається модулем WebCfg. Для отримання доступу до Web-інтерфейсу знадобиться будь який Web-браузер, наприклад це може бути браузер Mozilla Firefox. Точкою входу на Web-конфігуратор є адреса http://localhost:10002/WebCfg (рис. 10). Після виклику цієї адреси ви побачите діалог входу де треба ввести користувача та його пароль (рис. 11). У стартовій конфігурації ви можете ввести користувача root з паролем openscada, або користувача user без паролю.

За допомогою будь якого з цих конфігураторів програміст отримає повний контроль над системою OpenSCADA.

Інтерфейс цих конфігураторів доступно на трьох мовах: Англійська, Російська та Українська.

Рис. 9. Вікно модуля конфігурації "QTCfg"

Рис. 10. Вікно аутентифікації модуля конфігурації "WebCfg"

Рис. 11. Вікно модуля "WebCfg"

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

Розглянемо детальніше структуру робочого вікна конфігуратору QTCfg. Робоче вікно з позначками частин які його складають приведено на рис.12. Опис цих полів приведено у таблиці 9.

2

1 Рис. 12. Вікно конфігуратора системи OpenSCADA "QTCfg" 3 4 5 5.1 5.2 5.3

Таблиця 9. Пояснення до рис.12.

Поз.	Опис
1	2
1	Випадаюче меню конфігуратору. Склад меню: «Файл»: «Закрити» – закрити вікно конфігуратору; «Вихід» – вийти з системи OpenSCADA. «Вигляд»: «Поновити» – поновити вміст поточної сторінки; «Запустити» - запустити періодичне (1 сек.) поновлення поточної сторінки; «Зупинити» - зупинити періодичне (1 сек.) поновлення поточної сторінки; «Перейти»: «Вверх» - перейти вверх по дереву сторінок; «Попередня» - перейти на попередню сторінку; «Наступна» - перейти до наступної сторінки (після переходу на попередню). «Допомога»: «Про» - отримати інформацію про конфігуратор; «Про QT» - отримати інформацію про бібліотеку QT; «Що це» - отримати, шляхом вибору, інформацію про елемент інтерфейсу.
2	Панель інструментів. Містить кнопки швидкого керування (зліва на право): «Перейти» - містить: «Вверх» - перейти вверх по дереву сторінок; «Попередня» - перейти на попередню сторінку; «Наступна» - перейти до наступної сторінки (після переходу на попередню). «Перейти»: «Поновити» – поновити вміст поточної сторінки; «Запустити» - запустити періодичне (1 сек.) поновлення поточної сторінки; «Зупинити» - зупинити періодичне (1 сек.) поновлення поточної сторінки. «Виклик інтерфейсу користувача» - містить кнопки виклику наявних у системі OpenSCADA інтерфейсів користувача.
3	Навігатор по сторінкам конфігуратора. Містить дерево сторінок конфігурації та дозволяє виконувати безпосередні переходи на них.
4	Строка статусу. Містить шлях до сторінки (під час наведення на сторінку у навігаторі).

Продовження таблиці 9.

1	2
5	Панель поточної сторінки. Містить вміст вибраної сторінки конфігуратора.
5.1	Ім'я сторінки. Містить найменування поточної сторінки.
5.2	Поточний користувач. Кнопка поточного користувача, відображає поточного користувача та дозволяє його змінити.
5.3	Вкладки сторінки та їх вміст. Містить вкладки вибраної сторінки та дозволяє виконувати керуючі дії над компонентами сторінки.

Розглянемо детальніше структуру робочого вікна конфігуратору WebCfg. Робоче вікно з позначками частин які його складають приведено на рис.13. Опис цих полів приведено у таблиці 10.

Рис. 13. Структура інтерфейсу модуля WebCfg 1 2 3 4 2.1 2.2 2.3

Таблиця 10. Пояснення до рис.13.

Поле	Опис
1	Верхній колонтитул. Містить найменування модуля.
2	Панель керування.
2.1	Навігатор. Виконує функцію навігації по дереву сторінок.
2.2	Найменування вузла.
2.3	Користувач системи.
3	Робоче поле. Містить конфігураційний вміст сценаріїв керування, починаючи з корінних вкладок і закінчуючи кінцевими елементами.
4	Нижній колонтитул. Містить адресу поточної сторінки.

Інтерфейс користувача підсистеми “Функції”

Оскільки підсистема функції практично є контейнером, то користувач мусить мати можливість керувати цим контейнером. Для доступу до бібліотек функцій конфігуратор містить сторінку <Демо Станція/Функції> зі списком бібліотек функцій рис. 14. З цієї сторінки можна викликати будь яку бібліотеку функцій за допомогою подвійного кліку миші або контекстного меню.

Рис. 14. Підсистема функцій та бібліотеки функцій

Сторінка бібліотеки функції <Демо Станція/Функції/Complex1 функції> має інформацію “Бібліотека” та містить список функцій у бібліотеці “Функції”.

У вкладці “Бібліотека” (рис.15) можна отримати інформацію про бібліотеку та змінити доступ до неї.

У вкладці “Функції” (рис.16) можна ознайомитися з наявними у бібліотеці функціями та викликати будь яку бібліотеку функцій за допомогою подвійного кліку миші або контекстного меню.

Рис. 16. Функції у бібліотеці функцій Рис. 15. Інформація про бібліотеку Сторінка функції <Демо Станція/Функції/Complex1 функції/Витрати> містить інформацію про функцію у вкладці “Функція” її параметри у вкладці “IO” та дозволяє безпосередньо тестувати функцію у вкладці “Тест” з різними вхідними параметрами та контролем часу обрахунку.

У вкладці “Функція” (рис. 17) можна отримати інформацію про функцію та змінити доступ до неї.

У вкладці IO (рис. 18) можна ознайомитися з параметрами функції.

У вкладці “Тест” (рис. 19) можна протестувати функцію, включивши тестування. У процесі тестування можна встановлювати будь які вхідні дані і виконувати їх обчислення. Окрім перевірки адекватності обчислення також можна оцінити час обчислення.

Рис. 17. Інформація про функцію

Рис. 18. Параметри функції

Рис. 19. Тестування функції

Інтерфейс користувача модуля “JavaLikeCalc” підсистеми “Контролери”

Окрім сторінок конфігурації стандартних для підсистеми “Функції”, модуль “JavaLikeCalc” містить декілька власних сторінок та вкладок.

Оскільки модуль “JavaLikeCalc” належить підсистемі “Контролери”, то існує сторінка <Демо Станція/Контролери/Обчислювач на мові подібній до Java> яка містить: список контролерів цього модуля “Контролери”, список бібліотек цього модуля “Бібліотеки функції” та допомогу по модулю “Допомога”.

У вкладці “Контролери” (рис. 20) можна ознайомитися з переліком контролерів цього модуля, додати або видалити контролери за допомогою контекстного меню, а також викликати потрібний контролер за допомогою подвійного кліку миші або контекстного меню.

У вкладці “Бібліотеки функцій” (рис. 21) можна ознайомитися з переліком бібліотек, додати або видалити бібліотеку за допомогою контекстного меню, а також викликати сторінку потрібної бібліотеку за допомогою подвійного кліку миші або контекстного меню. З цієї вкладки, також можна зберегти або завантажити всі бібліотеки.

Рис. 20. Контролери які належать модулю "JavaLikeCalk" У вкладці “Допомога” (рис. 22) можна отримати повну інформацію про модуль.

Рис. 21. Бібліотеки функцій, модуля "JavaLikeCalc"

Рис. 22. Інформація про модуль "JavaLikeCalc"

У зв'язку з тим, що бібліотеки цього модуля можуть змінюватися, а значить і зберігатися, то сторінка бібліотек цього модуля дещо відрізняється від стандартної <Демо Станція/Контролери/Обчислювач на мові подібній до Java/Технологічні апарати>.

У вкладці “Бібліотека” (рис. 23) можна змінювати інформацію про бібліотеку та зберігати у БД. Крім того вкладка містить додаткове поле у якому вказується таблиця у якій зберігати бібліотеку.

У вкладку “Функції” (рис. 24) можна додавати, видаляти або редагувати функції за допомогою контекстного меню а також викликати сторінку вказаної функції. Окрім цього, вкладка містить форму для копіювання однієї функції у іншу.

Рис. 23. Інформація про бібліотеку, модуля "JavaLikeCalc"

Рис. 24. Функції бібліотеки функцій, модуля "JavaLikeCalc"

Сторінка функції цього модуля <Демо Станція/Контролери/Обчислювач на мові подібній до Java/Технологічні апарати/Діафрагма>, також відрізняється від стандартної.

У вкладці інформації “Функція” (рис. 25) можна змінювати інформацію про модуля та зберігати її у БД.

У вкладці “Програма” (замість “IO”) (рис.26) можна редагувати перелік параметрів функції за допомогою контекстного меню та редагувати саму програму функції.

Рис. 25. Інформація про функцію, модуля "JavaLikeCalc"

Рис. 26. Програма функції, модуля "JavaLikeCalc"

Сторінка контролера цього модуля <Демо Станція/Контролери/Обчислювач на мові подібній до Java/Тестовий обчислювач> містить інформацію “Контролер”, перелік параметрів “Параметри” та “Обчислення”.

У вкладці “Контролер” (рис.27) міститься інформація про контролер та різноманітна конфігурація. Всі дані можуть змінюватися та зберігатися у БД.

У вкладці “Параметри” (рис.28) міститься перелік параметрів які можуть створюватися або видалятися за допомогою контекстного меню. Окрім цього, можна переходити на вказані параметри за допомогою подвійного кліку миші або контекстного меню. З цієї вкладки можна виконувати збереження або завантаження усіх параметрів.

У вкладці “Обчислення” (рис.29) містяться дані та програма обчислення. У вкладці можна асоціювати контролер з функцією цього модуля, редагувати таблицю даних за допомогою контекстного меню а також формувати програму обчислень.

Рис. 27. Інформація контролера, модуля "JavaLikeCalc"

Рис. 28. Параметри контролера, модуля "JavaLikeCalc"

Рис. 29. Обчислення контролера, модуля "JavaLikeCalc"

Сторінка параметра цього модуля <Демо Станція/Контролери/Обчислювач на мові подібній до Java/Тестовий обчислювач/test> містить тільки вкладку інформації “Параметр” (рис.30). У цій вкладці можна редагувати статичні параметри контролера (зберігаються у БД), а також динамічні, тобто атрибути параметру. Отриману конфігурацію можна зберегти.

Для зв'язування параметра з таблицею даних контролера існує статичний параметр “Поле даних” у якому вибирається поле таблиці даних для відображення. Після зв'язування, параметр можна включати та спостерігати за атрибутом параметру.

Рис. 30. Параметр контролера, модуля "JavaLikeCalc"

Інтерфейс користувача модуля “BlockCalc” підсистеми “Контролери”

Окрім сторінок конфігурації стандартних для підсистеми “Функції” модуль “BlockCalc” містить декілька власних сторінок та вкладок.

Оскільки модуль “BlockCalc” належить підсистемі “Контролери”, то існує сторінка <Демо Станція/Контролери/Блоковий обчислювач> яка містить: список контролерів цього модуля “Контролери” та допомогу по модулю “Допомога”.

У вкладці “Контролери” (рис.31) можна ознайомитися з переліком контролерів цього модуля, додати або видалити контролери за допомогою контекстного меню, а також викликати сторінку потрібного контролера за допомогою подвійного кліку миші або контекстного меню.

У вкладці “Допомога” (рис.32) можна отримати повну інформацію про модуль.

Рис. 32. Інформація про модуль "BlockCalc" Рис. 31. Контролери модуля "BlockCalc"

Сторінка контролера цього модуля <Демо Станція/Контролери/Блоковий обчислювач/Контр. Анаст. вузла між 1 та 2 ступ> містить інформацію “Контролер”, перелік параметрів “Параметри” та схему блоків “Схема блоків”.

У вкладці “Контролер” (рис.33) міститься інформація про контролер та різноманітна конфігурація. Всі дані можуть змінюватися та зберігатися у БД.

У вкладці “Параметри” (рис.34) міститься перелік параметрів які можуть створюватися або видалятися за допомогою контекстного меню. Окрім цього, можна викликати сторінки вказаних параметрів за допомогою подвійного кліку миші або контекстного меню. З цієї вкладки можна виконувати збереження або завантаження усіх параметрів.

У вкладці “Схема блоків” (рис.35) міститься перелік блоків зв'язки яких зберігаються у самих блоках. У вкладці можна створювати або видаляти блоки за допомогою контекстного меню. Окрім цього, можна викликати сторінки вказаних блоків за допомогою подвійного кліку миші або контекстного меню. Ця сторінка, також містить загальний час обчислення блокової схеми.

Рис. 33. Інформація про контролер, модуля "BlockCalc"

Рис. 34. Перелік параметрів контролера, модуля "BlockCalc"

Рис. 35. Перелік блоків контролера, модуля "BlockCalc"

Сторінка блоку контролера цього модуля <Демо Станція/Контролери/Блоковий обчислювач/Контр. Анаст. вузла між 1 та 2 ступ/PC_КРД2> містить інформацію “Блок” та параметри блоку “IO”.

У вкладці “Блок” (рис.36) міститься інформація про блок та різноманітна конфігурація. Всі дані можуть змінюватися та зберігатися у БД. На цій сторінці виконується асоціація блоку з функцією. Блок може знаходитись у двох станах: “Обробляється” та “Ввімкнено”. Кожен із цих станів може змінюватися.

У вкладці “IO” містяться входи блоку. Входи блоку можуть відображатися у режимі значень (рис.37) та у режимі зв'язків (рис.38). Зв'язки та значення блоку можна змінювати у процесі обчислення.

Рис. 36. Інформація про блок, модуля "BlockCalc"

Рис. 38: Входи блоку у режимі зв'язків, модуля "BlockCalc" Рис. 37. Входи блоку у режимі значень, модуля "BlockCalc"

Сторінка параметра цього модуля <Демо Станція/Контролери/Блоковий обчислювач/Контр. Анаст. вузла між 1 та 2 ступ/test> містить тільки вкладку інформації “Параметр” (рис.39). У цій вкладці можна редагувати статичні параметри контролера (зберігаються у БД), а також динамічні, тобто атрибути параметру. Отриману конфігурацію можна зберегти.

Для зв'язування параметра з входами блоків існує статичні параметри “Блочний IO” у яких вибираються блок та його вхід для відображення. Після зв'язування, параметр можна включати та спостерігати за атрибутом параметру.

Рис. 39. Параметр модуля "BlockCalc"

Інтерфейс користувача модуля “StaticFuncLibs” підсистеми “Спеціальні”

Цей модуль містить тільки стандартні сторінки підсистеми “Функції”. Однак для інформації про модуль та можливості керування модулем в цілому, існує сторінка керування цим модулем. Сторінка розташована у підсистемі “Спеціальні” <Демо Станція/Спеціальні/Бібліотеки статичних функцій>. Ця сторінка містить вкладку інформації “Спеціальний модуль” та вкладку “Допомога”. Вкладка “Спеціальний модуль” (рис.40) дозволяє вмикати та вимикати модуль в цілому. Вкладка “Допомога” (рис.41) містить повну інформацію про модуль.

Рис. 40. Інформація про модуль "StaticFuncLibs" Рис. 41. Допомога по модулю

ПОВІДОМЛЕННЯ

Компоненти середовища програмування мають багато повідомлень різноманітного призначення. Розглянемо ці повідомлення окремо для кожного компонента. Для цього зведемо повідомлення кожного компонента середовища програмування у окрему таблицю. Всі повідомлення у вихідному тексті містяться на англійській мові. Для надання повідомлень Українською або іншими мовами використовується інструменти стандарту локалізації I18N.

Так, повідомлення підсистеми “Функції” приведено у таблиці 11. Повідомлення модуля “JavaLikeCalc” підсистеми “Контролери” приведені у таблиці 12. Повідомлення модуля “BlockCalc” підсистеми “Контролери” приведені у таблиці 13. Модуль “StaticFuncLibs” підсистеми “Спеціальні” не містить власних повідомлень.

Таблиця 11. Повідомлення підсистеми "Функції"

Повідомлення	Ситуація	Рекомендації	Кому
Помилка ідентифікатору або IO %d!	Структуру параметрів функції було змінено.	Натисніть кнопку «Поновити сторінку»	Користувачу
Гілка <%s> помилкова!	Помилка у сценарії інтерфейсу користувача.	Виправити помилку у програмі.	Системному програмісту
IO <%s> відсутній!	Структуру параметрів функції було змінено.	Натисніть кнопку «Поновити сторінку»	Користувачу
Функція не підключена!	Звернення до обчислювача який не асоційовано з функцією.	Підключіть функцію засобами використаного обчислювача.	Користувачу
Функція використана: <list>	Спроба видалити функцію яка використовується.	Звільніть спочатку функцію або не видаляйте функцію	Користувачу
Індекс %d пошкоджено!	Структуру параметрів функції було змінено.	Натисніть кнопку «Поновити сторінку»	Користувачу
Помилка видалення IO <%d>.	Параметр функції вже відсутній.	Натисніть кнопку «Поновити сторінку»	Користувачу
Помилка пересунення IO з %d до %d.	Один або інший параметр функції вже відсутній.	Натисніть кнопку «Поновити сторінку»	Користувачу
Значення <%s> вже підключено!	Повторне підключення кадру значень до функції.	Виправити помилку у програмі.	Системному програмісту

Таблиця 12: Повідомлення модуля "JavaLikeCalc"

Повідомлення	Ситуація	Рекомендації	Кому
1	2	3	4
Бібліотека функції <%s> відсутня. Будь ласка, створіть бібліотеку функцій!	Запуск контролера зв'язаного з функцією бібліотека якої відсутня	Створіть потрібну бібліотеку у вкладці «Бібліотеки» або змініть функцію	Користувачу
Створення нової функції <%s>.	Повідомляє контролер при зв'язуванні на відсутню функцію	Інформація!	Користувачу
Запущено у режимі реального часу!	Систему запущено від користувача root, що дозволило запустити обчислення у режимі реального часу.	Інформація!	Користувачу
Контролер не запущено!	Запуск контролера завершився невдачею.	Виправити помилку у програмі.	Системному програмісту
Контролер не зупинено!	Зупинка контролера завершилася невдачею.	Виправити помилку у програмі.	Системному програмісту
Поток <%d> запущено!	Запущено поток паралельного обчислення	Інформація!	Користувачу
Поле даних не підключено.	Спроба ввімкнути параметр не підключивши його поля даних.	Підключити до поля даних та ввімкнути	Користувачу
Функція <%s> відсутня.	Спроба копіювання відсутньої функції.	Вкажіть правильну функцію.	Користувачу
Бібліотека <%s> відсутня.	Копіювання функції до бібліотеки яка відсутня.	Вкажіть правильну бібліотеку.	Користувачу
Функція <%s:%s> вже присутня.	Копіювання на функцію яка вже присутня.	Змініть ім'я функції призначення.	Користувачу
Помилка перейменування. Функція <%s> вже присутня.	Спроба перейменувати функцію на ім'я яке вже використовується.	Змініть ім'я.	Користувачу

Продовження таблиці 12

1	2	3	4
Змінна <%s> не визначена але використана	Використана невизначена зміна у програмі.	Визначіть змінну.	Користувачу
Операція %d не підтримує строкового типу	Спроба використати строку з недозволеними операціями.	Перегляньте та виправте програму.	Користувачу
Вбудовані функції не підтримують строкового типу	Спроба передати вбудованій функції строку у якості параметру.	Перегляньте та виправте програму.	Користувачу
Вказано більш %d параметрів для функції <%s>	Спроба передати функції більше параметрів ніж вона містить.	Перегляньте та виправте програму.	Користувачу
Викликано функцію <%s>, але вона не має IO-повернення	Спроба викликати функцію без повернення результату у функціональному виклику.	Використовуйте процедурний виклик або перегляньте та виправте програму.	Користувачу
Помилка операції %c(%xh). Функція <%s> зупинена.	При виконанні програми віртуальної машини винайдено недопустиму команду.	Виправити помилку у програмі.	Системному програмісту
Порожнє значення не припустиме.	Спроба створити компонент з порожнім ім'ям.	Вкажіть коректне ім'я.	Користувачу
Неочікуване закінчення програми, очікувався символ закінчення строки `"`,	Зустрічено незакінчену строку у програмі.	Перегляньте та виправте програму.	Користувачу
Символ наступної лінії недозволений у стрічці,	Спроба розірвати строковий літерал.	Перегляньте та виправте програму.	Користувачу
Вбудована функція має забагато параметрів,	Зустрічено вбудовану функцію з занадто великою кількістю параметрів	Виправити помилку у програмі.	Системному програмісту

Таблиця 13. Повідомлення модуля "BlockCalc"

Повідомлення	Ситуація	Рекомендації	Кому
Запуск у режимі реального часу!	Систему запущено з правами root, що дозволило запустити поток у реальному часі.	Інформація!	Користувачу
Контролер не запущено!	Запуск контролера завершився невдачею.	Виправити помилку у програмі.	Системному програмісту
Контролер не зупинено!	Зупинка контролера завершилася невдачею.	Виправити помилку у програмі.	Системному програмісту
Помилка завантаження блоків.	Можливо помилка у БД	Визначити проблему	Системному програмісту
Не можу видалити блок <%s>.	Блок кимсь використано.	Визначіть хто використовує блок та зупиніть його.	Користувачу
Поток <%d> запущено!	Запущено поток паралельного обчислення	Інформація!	Користувачу
Блок <%s> зупинено.	Запущено блок.	Інформація!	Користувачу
Параметр блока не підключено.	Спроба ввімкнути параметр контролера не зв'язавши його з параметром блока.	Зв'яжіть контролер з параметром блоку і запустіть параметр.	Користувачу
Помилка зв'язку %d!	Зв'язок зник або зламано.	Визначити проблему	Системному програмісту
Помилка читання зв'язків блоку <%s>.	У процесі читання вхідних зв'язків виникла помилка.	Перевірити чи не вимкнено блоки пов'язані з цим блоком.	Користувачу
Помилка обрахунку блоку <%s>.	Під час обрахунку виникла помилка.	Визначити проблему	Системному програмісту
Помилка запису зв'язків блоку <%s>.	У процесі запису вихідних зв'язків виникла помилка.	Перевірити чи не вимкнено блоки пов'язані з цим блоком.	Користувачу
Помилка вітки <%s>!	Помилка у мові інтерфейсу користувача.	Виправити помилку у програмі.	Системному програмісту

БІБЛІОГРАФІЧНИЙ СПИСОК

1. Роман Савоченко, "Информационный ресурс системы OpenSCADA", 2004, http://diyaorg.dp.ua/oscada

2. Густав Олссон, Джангуидо Пиани "Цифровые системы автоматизации и управления", Невский Диалект, 2001, -557стр.

3. Дэвид Флэнаган "JavaScript подробное руководство", O'REILLY, 2004, -960стр.

4. Алексей Стахнов "Linux. Наиболее полное руководство", Санкт-Петербург: БХВ, 2002, -900стр.

5. Чарльз Доннелли, Ричард Столлмен, "Bison. Генератор синтаксических анализаторов, совместимый с YACC", 2002, http://www.opennet.ru/docs/RUS/bison_yacc

6. Макс Шлее "QT. Профессиональное программирование на C++", Санкт-Петербург: BHV, 2005, -544стр.

1116139.00218-01 13 01

61

2005-05-21T12:09:12