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

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

Керівництво системного програміста.

1116139.00218-01 33 01

Листів 29

2005

АНОТАЦІЯ

Документ 1116139.00218-01 33 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

5 НАЛАГОДЖЕННЯ ПРОГРАМИ	15

6 ПЕРЕВІРКА ПРОГРАМИ	25

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

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

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

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

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

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

надійність;

гнучкість;

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

безпека;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПРИЗНАЧЕННЯ ПРОГРАМИ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СТРУКТУРА ПРОГРАМИ

Система OpenSCADA, в цілому, складається з ядра системи та його модулів (рис.1). Серцем системи виступає модульне ядро. І в залежності від того які модулі підключено, система може виступати як в ролі різноманітних серверів, так і в ролі різноманітних клієнтів, а також суміщати ці функції у одній програмі. Це дозволяє реалізовувати клієнт-серверні архітектури SCADA системи на базі одних й тих же компонентів/модулів, економлячи при цьому: машину пам'ять, дисковий простір, а також цінний час програмістів.

Рис. 1. Структура системи OpenSCADA

Серверні конфігурації системи призначені для збору, обробки, видачі дій, архівації, протоколювання інформації з різноманітних джерел, а також представлення цієї інформації клієнтам (UI, GUI, TUI ...). Модульна архітектура дозволяє розширювати функціональність сервера, навіть без його перевантаження.

Клієнтські конфігурації можуть будуватися на основі різноманітних графічних бібліотек (GUI/TUI ToolKits), як використовуючи ядро програми та його модулі (шляхом додання до нього UI-user interface модуля) так і в якості самостійної програми підключаючи ядро OpenSCADA як бібліотеку.

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

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

Модулі системи OpenSCADA зберігаються в динамічних бібліотеках. Кожна динамічна бібліотека може містити багато модулів різноманітних типів. Наповнення динамічних бібліотек модулями визначається функціональною зв'язністю самих модулів. Динамічні бібліотеки допускають гарячу заміну, що дозволяє в процесі функціонування виконувати поновлення окремих частин системи. Метод збереження кода модулів в динамічних бібліотеках є основним для системи OpenSCADA, оскільки підтримується практично всіма сучасними операційними системами(ОС).

На основі модулів реалізовані наступні функціональні частини системи OpenSCADA:

бази даних;

архіви (повідомлень та значень);

протоколи комунікаційних інтерфейсів;

комунікаційні інтерфейси, транспорти;

контролери (PLC) та інші джерела динамічних даних (DA);

інтерфейси користувача (GUI,TUI,WebGUI, speach, signal ... .).

додаткові модулі, спеціальні.

Середовище програмування представлено підсистемою «Функції» системи OpenSCADA та окремими компонентами у вигляді модулів до системи OpenSCADA:

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

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

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

Загальна структуру всіх цих компонентів та підсистеми функції наведено на рис.2.

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

Дистрибутив системи OpenSCADA складається з наступних пакетів:

openscada-0.4.1-alt1.i586.rpm

openscada-demo-0.4.1-alt1.i586.rpm

openscada-doc-0.4.1-alt1.i586.rpm

openscada-devel-0.4.1-alt1.i586.rpm

Пакет openscada-0.4.1-alt1.i586.rpm надає основні компоненти системи OpenSCADA. Вміст пакета приведено у таблиці 1. Пакет має обов'язково встановлюватися оскільки містить основні компоненти системи OpenSCADA.

Таблиця 1. Склад пакету openscada-0.4.1-alt1.i586.rpm

Файл	Призначення
/etc/oscada.xml	Базовий конфігураційний файл системи OpenSCADA.
/usr/bin/openscada	Файл запуску системи OpenSCADA.
/etc/rc.d/init.d/oscadad	Скрипт автоматичного запуску системи OpenSCADA у режимі демону(сервісу). Для запуску використовувати команду: # service oscadad start;
/usr/lib/liboscada.so /usr/lib/liboscada.so.0 /usr/lib/liboscada.so.0.0.0	Ядро системи OpenSCADA у вигляді поділяємої бібліотеки та символічні посилання на неї.
/usr/lib/openscada/	Директорія з модулями системи OpenSCADA. Звичайний склад модулів: arh_BaseArh.so, bd_DBF.so, bd_MySQL.so, bd_SQLite.so, cntr_BlockCalc.so, cntr_DiamondBoards.so, cntr_JavaLikeCalc.so, cntr_OperationSystem.so, prot_HTTP.so, prot_SelfSystem.so, spec_StaticFuncLibs.so, spec_SystemTests.so, tr_Mail.so, tr_Sockets, ui_QTCfg.so, ui_QTStarter.so, ui_WebCfg.so, ui_WebDbg.so.
/usr/share/locale/ru/LC_MESSAGES/	Містить файли локалізації інтерфейсу OpenSCADA та окремих модулів на російську мову.
/usr/share/locale/uk/LC_MESSAGES/	Містить файли локалізації інтерфейсу OpenSCADA та окремих модулів на українську мову.
/var/spool/openscada/ARCHIVES	Директорія архівів системи OpenSCADA.
/var/spool/openscada/DATA/	Директорія даних системи OpenSCADA.

Пакет openscada-demo-0.4.1-alt1.i586.rpm надає демонстраційну БД у систему OpenSCADA. Вміст пакета приведено у таблиці 2. Пакет має встановлюватися якщо треба повноцінна та робоча конфігурація системи OpenSCADA.

Таблиця 2. Вміст пакету openscada-demo-0.4.1-alt1.i586.rpm

Файл	Призначення
/etc/oscada_demo.xml	Демонстраційна конфігурація.
/usr/bin/openscada_demo	Файл запуску у демонстраційному режимі (скрипт запуску)
/var/spool/openscada/ARCHIVES/	Директорія архівів системи OpenSCADA.
/var/spool/openscada/DATA/	Директорія даних системи OpenSCADA.
/var/spool/openscada/DATA/DemoSt.db	Файл БД SQLite.

Пакет openscada-doc-0.4.1-alt1.i586.rpm надає документацію на систему OpenSCADA та її компоненти. Вміст пакета приведено у таблиці 3. Пакет має встановлюватися якщо потрібна документація на систему OpenSCADA для детального вивчення системи.

Таблиця 3. Вміст пакету openscada-doc-0.4.1-alt1.i586.rpm

Файл	Призначення
1	2
/usr/share/doc/openscada-doc-0.4.1/	Директорія з документацією на систему OpenSCADA та її компоненти.
COPYING	Ліцензія системи OpenSCADA.
ChangeLog	Протокол змін у системі OpenSCADA.
INSTALL	Інструкція по встановленню з вихідних текстів.
OpenScadaUMLdescr.sxw	Проект системи OpenSCADA (головний документ).
README	Файл з яким треба ознайомитися у першу чергу.
TODO	Планові завдання для реалізації у майбутньому.
mod_Archive_BaseArh.pdf	Документація модуля «BaseArh» підсистеми «Архіви»
mod_BD_DBF.pdf	Документація модуля «DBF» підсистеми «БД»
mod_BD_MySQL.pdf	Документація модуля «MySQL» підсистеми «БД»
mod_BD_SQLite.pdf	Документація модуля «SQLite» підсистеми «БД»
mod_Contr_BlockCalc.pdf	Документація модуля «BlockCalc» підсистеми «Контролери»

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

1	2
mod_Contr_BlockCalc_proj.pdf	Проект модуля «BlockCalc» підсистеми «Контролери»
mod_Contr_DiamondBoards.pdf	Документація модуля «DiamondBoards» підсистеми «Контролери»
mod_Contr_JavaLikeCalc.pdf	Документація модуля «JavaLikeCalc» підсистеми «Контролери»
mod_Protocol_HTTP.pdf	Документація модуля «HTTP» підсистеми «Протоколи»
mod_Special_StaticFuncLibs.pdf	Документація модуля «StaticFuncLibs» підсистеми «Спеціальні»
mod_Special_SystemTests.pdf	Документація модуля «SystemTests» підсистеми «Спеціальні»
mod_Transport_Sockets.pdf	Документація модуля «Sockets» підсистеми «Транспорти»
mod_UI_QTCfg.pdf	Документація модуля «QTCfg» підсистеми «Інтерфейси користувача»
mod_UI_WebCfg.pdf	Документація модуля «WebCfg» підсистеми «Інтерфейси користувача»
mod_UI_QTStarter.pdf	Документація модуля «QTStarter» підсистеми «Інтерфейси користувача»
release_0.4.1.pdf	Анонс версії 0.4.1

Пакет openscada-devel-0.4.1-alt1.i586.rpm надає компоненти необхідні для створення сторонніх розробок на основі системи OpenSCADA. Пакет містить включаємі файли та статичну бібліотеку ядра системи OpenSCADA.

Для середовища програмування потрібно встановити пакет системи OpenSCADA – openscada-0.4.1-alt1.i586.rpm та перевірити наявність модулів компонентів середовища програмування:

/usr/lib/openscada/cntr_JavaLikeCalc.so;

/usr/lib/openscada/cntr_BlockCalc.so;

/usr/lib/openscada/spec_StaticFuncLibs.so.

НАЛАГОДЖЕННЯ ПРОГРАМИ

Налагодження системи OpenSCADA, взагалі, виконується в два етапи. Перший етап це створення статичної (конфігурації по замовченню) конфігурації за допомогою конфігураційного файлу системи. Другий етап виконується з будь якого конфігураційного середовища системи OpenSCADA отриманого після першого етапу налагодження.

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

Рис. 3. Приклад ієрархії системи OpenSCADA та конфігураційного файла

Приклад простого файлу конфігурації приведено нижче:

<!------------------------- oscada_demo.xml ---------------------------->

<?xml version="1.0" encoding="UTF-8" ?>

<OpenSCADA>

<station id="DemoStation" name="Демо Станция">

<prm id="Workdir">../share/OpenScada</prm>

<prm id="LogTarget">2</prm>

<prm id="MessLev">0</prm>

<prm id="MessBuf">1000</prm>

<prm id="DefaultBD">SQLite:./DATA/DemoSt.db</prm>

<prm id="DefaultBD">MySQL:server.diya.org;roman;;oscadaDemoSt</prm>

<subsys id="Security">

<prm id="UserBD">::SecUsr</prm>

<prm id="GrpBD">::SecGrp</prm>

</subsys>

<subsys id="ModSched">

<prm id="ModPath">../../lib/openscada</prm>

<prm id="ModAuto">*</prm>

</subsys>

<subsys id="BD">

</subsys>

<subsys id="Transport">

<prm id="InBD">::TranspIn</prm>

<prm id="OutBD">::TranspOut</prm>

</subsys>

<subsys id="Controller">

<prm id="GenBD">::Controllers</prm>

<module id="OperationSystem">

</module>

<module id="BlockCalc">

</module>

</subsys>

<subsys id="Archive">

<prm id="MessBD">::ArchMess</prm>

<prm id="ValBD">::ArchVal</prm>

<prm id="MessPeriod">5</prm>

</subsys>

<subsys id="Protocol">

</subsys>

<subsys id="UI">

<module id="QTStarter">

<prm id="StartMod">QTCfg</prm>

</module>

<module id="WebCfg">

<prm id="SessTimeLife">20</prm>

</module>

</subsys>

<subsys id="Special">

</subsys>

</station>

</OpenSCADA>

<!------------------------------------------------------------------------------->

Як видно з конфігураційного файлу, його структура складається з секцій: OpenSCADA>station>subsys>module, та записів параметрів <prm> які можуть бути у всіх секціях нижче <station>. Записи <prm>, взагалі визначають окремо взяті параметри.

Повну інформацію про наявні конфігураційні параметри системи OpenSCADA та конфігураційні поля у конфігураційному файлі можна отримати за допомогою опції --help при запуску. Приклад цієї інформації наведено нижче:

[roman@roman bin]$ openscada_demo --help

***************************************************************************

********** OpenSCADA 0.4.1 (Linux-2.6.12-exp26-smp-rom1). *********

***************************************************************************

===========================================================================

======================== Основні опції станції ============================

===========================================================================

-h, --help Інформація про опції наявні у станції;

--Config=<шлях> Місцезнаходження конфігураційного файлу;

--Station=<ім'я> І'мя станції;

--demon Запуск у режимі демона;

--MessLev=<рівень>Встановити <рівень> повідомлень (0-7);

--log=<напрямок> Встановити напрямок логів та іншої інформації;

<напрямок> & 1 - системний логер (syslogd);

<напрямок> & 2 - стандартний вихід (stdout);

<напрямок> & 4 - стандартний вихід помилок (stderr);

------ Параметри станції </EmptySt/> у конфігураційному файлі --------

Workdir <path> встановити робочу директорію;

MessLev <level> встановити <рівень> повідомлень (0-7);

LogTarget <напрямок> встановити напрямок логів та іншої інформації;

<напрямок> & 1 - системний логер (syslogd);

<напрямок> & 2 - стандартний вихід (stdout);

<напрямок> & 4 - стандартний вихід помилок (stderr);

MessBuf <розмір> встановити розмір буферу повідомлень;

SysLang <мова> встановити внутрішню мову;

DefaultBD <тип:ім'я> встановити тип та ім'я БД по замовченню (далі можна використовувати лише ім'я таблиці);

================== Опції підсистеми керування модулями ====================

--ModPath=<шлях> встановити <шлях> до модулів: "/var/os/modules/"

------- Параметри секції </DemoStation/ModSched/> у конфігураціїному файлі -----------

ModPath <шлях> встановити <шлях> до модулів (поділяємих бібліотек);

ModAuto <список> імена автоматично завантажуваних, під'єднуваних та

пускованих модулів(поділяємих бібліотек) <direct_dbf.so;virt.so>

You must run this software as root

=========================== Опції підсистеми БД ===========================

------- Параметри секції </DemoStation/BD/> у конфігураціїному файлі -----------

========================== Опції модуля <BD:DBF> ==========================

-------- Параметри модульної секції </DemoStation/BD/DBF/> у конфігураційному файлі --------

========================== Опції модуля <BD:MySQL> ==========================

-------- Параметри модульної секції </DemoStation/BD/MySQL/> у конфігураційному файлі --------

========================== Опції модуля <BD:SQLite> ==========================

-------- Параметри модульної секції </DemoStation/BD/SQLite/> у конфігураційному файлі --------

========================== Опції підсистеми безпеки ========================

------------ Параметри секції </DemoStation/Security/> у конфігураційному файлі -----------

UserBD <ім'я> БД користувачів: "<тип БД>:<БД>:<таблиця>";

GrpBD <ім'я> БД груп користувачів: "<тип БД>:<БД>:<таблиця>";

======================= Опції підсистеми транспорту =======================

--------- Параметри секції </DemoStation/Transport/> у конфігураціїному файлі ---------

InBD <ім'я> БД вхідного транспорта: "<тип БД>:<ім'я>:<таблиця>;

OutBD <ім'я> БД вихідного транспорта: "<тип БД>:<ім'я>:<таблиця>;

======================== Опції модуля <Transport:Sockets> ============================

------- Параметри модульної секції </DemoStation/Transport/Sockets/> у конфігураційному файлі ---------

======================= The module <Transport:Mail> options =======================

---------- Parameters of the module section </DemoStation/Transport/Mail/> in config file ----------

========================= Опції пидсистеми протоколів =====================

======================= The module <Protocol:SelfSystem> options =======================

---------- Parameters of the module section </DemoStation/Protocol/SelfSystem/> in config file ----------

======================= Опції модуля <Protocol:HTTP> =============================

------- Параметри модульної секції </DemoStation/Protocol/HTTP/> у конфігураційному файлі ---------

======================== Опції підсистеми архівів =========================

------- Параметри секції </DemoStation/Archive/> у конфігураціїному файлі -----------

MessBD <ім'я> БД повідомлень: "<тип БД>:<ім'я>:<таблиця>";

ValBD <ім'я> БД значень: "<тип БД>:<ім'я>:<таблиця>";

MessPeriod <період> встановити період архівації повідомлень;

========================== Опції модуля <Archive:BaseArh> ==========================

-------- Параметри модульної секції </DemoStation/Archive/BaseArh/> у конфігураційному файлі --------

======================= Опції підсистеми контролерів ======================

------- Параметри секції </DemoStation/Controller/> у конфігураціїному файлі -----------

GenBD <ім'я> основна БД підсистеми: "<тип БД>:<ім'я>:<таблиця>";

======================= Опції модуля <Controller:BlockCalc> =============================

------- Параметри модульної секції </DemoStation/Controller/BlockCalc/> у конфігураційному файлі ---------

======================= Опції модуля <Controller:OperationSystem> =============================

------- Параметри модульної секції </DemoStation/Controller/OperationSystem/> у конфігураційному файлі ---------

======================== Опції спеціальної підсистеми =====================

========================== Опції модуля <Special:SystemTests> ==========================

-------- Параметри модульної секції </DemoStation/Special/SystemTests/> у конфігураційному файлі --------

PARAM Тест параметру:

name ім'я.

XML тест XML парсингу:

file файл для XML парсингу.

MESS Тест архіву повідомлень:

arh ім'я архіву;

t_arh тип архіву;

categ категорія повідомлень.

SOAttDet Тест на під'єднання/від'єднання модуля:

name ім'я модуля;

full повністтю під'єднувати(запускати).

Val Тест значеннь атрибутів параметру:

name параметр та його атрибути([параметр]/[атрибут]).

BD Повний тест БД:

type тип БД;

bd ім'я БД;

table таблиця;

size кількість записів.

TrOut Тест вихідного транспорту:

addr адреса вхідного транспорту;

type тип транспорту;

req запит до вхідного транспорту;

Func Тест підсистеми функції;

SysContrLang Тест мови контролю системи:

path шлях до елементу мови.

============== Опції підсистеми користувальницьких інтерфейсів ============

========================= Опції модуля <UI:WebCfg> ===========================

-------- Параметри модульної секції </DemoStation/UI/WebCfg/> у конфігураційному файлі --------

SessTimeLife <час> час життя сесії, хвилин (звичайно 10);

======================= The module <UI:WebDbg> options =======================

---------- Parameters of the module section </DemoStation/UI/WebDbg/> in config file ----------

======================= Опції модуля <UI:QTCfg> =============================

------- Параметри модульної секції </DemoStation/UI/QTCfg/> у конфігураційному файлі ---------

========================= Опції модуля <UI:QTStarter> ===========================

-------- Параметри модульної секції </DemoStation/UI/QTStarter/> у конфігураційному файлі --------

StartMod = <модулі> Встановити запускаємі модулі (розд. - ';');

================== Опції підсистеми керування модулями ====================

--ModPath=<шлях> встановити <шлях> до модулів: "/var/os/modules/"

------- Параметри секції </DemoStation/ModSched/> у конфігураціїному файлі -----------

ModPath <шлях> встановити <шлях> до модулів (поділяємих бібліотек);

ModAuto <список> імена автоматично завантажуваних, під'єднуваних та

пускованих модулів(поділяємих бібліотек) <direct_dbf.so;virt.so>

Опис параметрів, які треба встановити у обов'язковому порядку або звернути на них увагу приведені у таблиці 4.

Таблиця 4. Обов'язкові конфігураційні параметри

Параметр	Опис
-h, --help	Параметр командної строки. Видає інформацію про опції наявні на станції.
--Config=<шлях>	Параметр командної строки. Вказує на місцезнаходження конфігураційного файлу. У випадку опущення, буде використано конфігураційний файл /etc/oscada.xml. Має обов'язково вказуватися у випадку локального запуску.
--Station=<ім'я>	Параметр командної строки. Вказує ім'я станції. У випадку опущення буде використана конфігурація першої станцій у конфігураційному файлі.
--demon	Параметр командної строки. Вказує на запуск у режимі демона. Використовується при запуску системи як сервісу.
--MessLev=<рівень> /Station/MessLev	Параметр командної строки та конфігураційного файлу. Дозволяє встановити мінімальний загальносистемний рівень повідомлень (0-7) який буде оброблятися.
--log=<напрямок> /Station/LogTarget	Параметр командної строки та конфігураційного файлу. Встановити напрямок логів та іншої інформації OpenSCADA: <напрямок> & 1 - системний логер (syslogd); <напрямок> & 2 - стандартний вихід (stdout); <напрямок> & 4 - стандартний вихід помилок (stderr);
/Station/Workdir	Параметр конфігураційного файла. Встановлює робочу директорію станції. Всі відносні виклики будуть рахуватися з цієї директорії.
/Station/MessBuf	Параметр конфігураційного файла. Встановлює розмір кільцевого буфера повідомлень.
/Station/SysLang	Параметр конфігураційного файла. Встановлює внутрішню мову станції. Може використовуватися якщо треба встановити внутрішню мову яка відрізняється від системної.
/Station/DefaultBD	Параметр конфігураційного файла. Встановлює тип та ім'я БД яка буде використовуватися по замовченню в системі. Відповідно, далі можуть вказуватися тільки імена таблиць.
--ModPath=<шлях> /DemoStation/ModSched/ModPath	Параметр командної строки та конфігураційного файлу. Визначає шлях до модулів системи OpenSCADA. Обов'язково має визначатися тим або іншим чином!

Налагодження БД полягає у встановленні параметру /Station/DefaultBD у відповідності з типом використаної БД, документацією на модуль БД цього типу та документацією на БД.

Відносно середовища програмування на першому етапі нічого робити не треба. Всі основні налагодження середовища програмування відбуваються на другому етапі.

Для переходу до другого етапу треба запустити систему OpenSCADA з графічним середовищем конфігурації. Рекомендується використовувати конфігуратор «QTCfg» для локального використання та «WebCfg» для віддаленого використання. У будь якому разі ви отримаєте однакову структуру конфігураційних сторінок.

Розглянемо середовище конфігуратора «QTCfg» системи OpenSCADA. Вигляд вікна конфігуратору приведено на рис.4. Пояснення інтерфейсу конфігуратору «QTCfg» приведено у таблиці 5.

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

Таблиця 5. Пояснення до рис.4.

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

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

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

Конфігурацію системи в цілому, включаючи встановлення параметрів таблиці 4, можна виконати за допомогою конфігуратору системи OpenSCADA.

Конфігурацію компонентів середовища програмування системи OpenSCADA можна знайти на сторінках:

<Демо Станція/Функції>: корінна сторінка підсистеми «Функції» яка містить інформацію про наявні функції та їх бібліотеки (рис. 5);

<Демо Станція/Контролери/Обчислювач на мові подібній до Lava>: корінна сторінка конфігурації модуля безпосередніх обчислень та створення бібліотек на Java-подібній мові «JavaLikeCalc». Містить повну інформацію та дозволяє повністю сконфігурувати модуль (рис.6);

<Демо Станція/Контролери/Блоковий обчислювач>: корінна сторінка конфігурації модуля безпосередніх обчислень на мові блоків «BlockCalc». Містить повну інформацію та дозволяє повністю сконфігурувати модуль (рис.7).

Рис. 5. Сторінка підсистеми «Функції» та бібліотек функцій

Рис. 6. Сторінка конфігурації модуля "JavaLikeCalk"

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

ПЕРЕВІРКА ПРОГРАМИ

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

Тестові модулі у системі OpenSCADA створюються у межах підсистеми «Спеціальні». Для додання тестових функцій можна як створювати нові спеціалізовані модулі, так і додавати нові тести у модуль тестування ядра «SystemTests».

Тести та їх опис модуля «SystemTests» приведено у таблиці 6. Сконфігурувати тести, які треба запускати, можна за допомогою секції «Station/Special/SystemTests» конфігураційного файлу. Приклад конфігурації цієї секції приведено нижче:

<!--Конфігурація модуля тестів системи OpenSCADA-->\

<subsys id="Special">

<module id="SystemTests">

<prm id="PARAM" on="0" per="5" name="CPU"/>

<prm id="XML" on="0" per="10" file="./ARCHIVES/MESS/stError/Thu Sep 1 12:42:32 200

<prm id="MESS" on="0" per="10" arh="StatErrors" t_arh="BaseArh" categ=""/>

<prm id="SOAttDet" on="0" per="10" name="../../lib/openscada/cntr_BlockCalc.so" ful

<prm id="Val" on="0" per="1" name="CPU/value"/>

<prm id="BD" on="0" per="10" type="MySQL" bd=";roman;123456;OpenSCADA;;/var/lib/mys

<prm id="BD" on="0" per="10" type="DBF" bd="./DATA1" table="test.dbf" size="1000"/>

<prm id="BD" on="0" per="10" type="SQLite" bd="./DATA/test.db" table="test" size="1

<prm id="TrOut" on="0" per="1" addr="TCP:127.0.0.1:10001" type="Sockets" req="time"

<prm id="TrOut" on="0" per="1" addr="UDP:127.0.0.1:10001" type="Sockets" req="time"

<prm id="TrOut" on="0" per="1" addr="UNIX:./oscada" type="Sockets" req="time"/>

<prm id="TrOut" on="0" per="1" addr="UDP:127.0.0.1:daytime" type="Sockets" req="tim

<prm id="Func" on="0" per="10"/>

<prm id="SysContrLang" on="0" per="10" path="/d_Archive/d_BaseArh/d_mess_StatErrors

</module>

</subsys>

Крім цих тестів, перевірити адекватність функціонування функцій які надає середовище програмування можна за допомогою сторінки тестування функцій (рис.8). Ця сторінка дозволяє встановити будь які вхідні дані обчислити їх алгоритмом перевіряємої функції та проконтролювати результат. Крім того, можна проконтролювати і час обчислення.

Таблиця 6. Тести які містить модуль "BlockCalc"

Тест	Опис
PARAM	Тест параметру логічного рівня. Вичитує конфігураційні поля, атрибути параметра їх значення та відображає сценарій керування вузла.
XML	Тестування XML-парсера. Парсить та відображає структуру вказаного файлу.
MESS	Тест архіву повідомлень. Періодично вичитує нові повідомлення з вказаного архіву.
SOAttDet	Тестування процедури підключення/відключення модуля. З визначеним періодом виконується підключення та відключення вказаного модуля.
Val	Тестування атрибута параметра. З визначеним періодом виконується опитування значення атрибута вказаного модуля.
BD	Повний тест БД. Виконує наступні дії: створення/відкриття БД; створення/відкриття таблиці; створення записів визначеної структури; модифікація записів; отримання і перевірка значень записів; перевірка переліку записів; видалення записів; закриття/видалення таблиці; закриття/видалення БД.
TrOut	Тест вихідного транспорту. Виконує тестування вихідного транспорту шляхом відправлення запиту до вказаного вхідного транспорту.
Func	Тести підсистеми «Функції». Виконує групу спеціалізованих тестів за стратегіями білого та чорного ящика.
SysContrLang	Тестування сценаріїв керування системою OpenSCADA. Виконує запит елементів сценарію за допомогою повного шляху.

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

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

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

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

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

Повідомлення	Ситуація	Рекомендації
Гілка <%s> помилкова!	Помилка у мові інтерфейсу користувача.	Виправити помилку у програмі.
Значення <%s> вже підключено!	Повторне підключення кадру значень до функції.	Виправити помилку у програмі.

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

Повідомлення	Ситуація	Рекомендації
Контролер не запущено!	Запуск контролера завершився невдачею.	Виправити помилку у програмі.
Контролер не зупинено!	Зупинка контролера завершилася невдачею.	Виправити помилку у програмі.
Помилка операції %c(%xh). Функція <%s> зупинена.	При виконанні програми віртуальної машини винайдено недопустиму команду.	Виправити помилку у програмі.
Вбудована функція має забагато параметрів,	Зустрічено вбудовану функцію з занадто великою кількістю параметрів	Виправити помилку у програмі.

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

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

1116139.00218-01 33 01

2

2005-05-21T12:09:12

Roman Savochenko