Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
BlockCalc | Блоковий обчислювач | 1.12 | GPL2 | daq_BlockCalc.so | en,uk,ru,de | x86,x86_64,ARM | DAQ | Роман Савоченко Максим Лисенко (2012) — переклад цієї сторінки |
Надає блоковий обчислювач. |
Модуль підсистеми "DAQ" BlockCalc надає в систему OpenSCADA механізм створення користувацьких обчислень. Механізм обчислень ґрунтується на формальній мові блокових схем (функціональних блоків).
Також модулем реалізуються функції горизонтального резервування, а саме спільної роботи з віддаленою станцією цього ж рівня. Крім синхронізації значень і архівів атрибутів параметрів модулем здійснюється синхронізація значень блоків блокової схеми, з метою безударного підхоплення алгоритмів.
Мови блокового програмування ґрунтуються на понятті блокових схем (функціональних блоків). При чому в залежності від сутності блоку блокові схеми можуть бути: логічними схемами, схемами релейного логіки, моделлю технологічного процесу та інше. Суть блокової схеми полягає в тому, що вона містить перелік блоків і зв'язки між ними.
З формальної точки зору блок — це елемент (функція), який має входи, виходи і алгоритм обчислення. Виходячи з концепції середовища програмування, блок — це кадр значень, асоційований з об'єктом функції.
Звісно, входи і виходи блоків потрібно з'єднувати для отримання цілісної блокової схеми. Передбачено наступні типи зв'язків:
- міжблокові, підключення входу одного блоку до виходу іншого, входу одного блоку до входу іншого і вихід одного блоку до входу іншого;
- далекі міжблокові, з'єднання блоків контролерів різних блокових схем даного модуля;
- коефіцієнти, перетворення входу в постійну, всі входи/виходи за замовчуванням ініціюються як постійні;
- зовнішній атрибут параметра.
Умовно з'єднання блоків можна зобразити як зв'язки між блоками в цілому (рис. 1) або деталізація зв'язків (рис. 2). В процесі зв'язування параметрів блоків допустимо з'єднання параметрів будь-якого типу. При цьому, в процесі обчислення буде виконуватися автоматичне приведення типів.
Contents
1 Контролер модуля
Кожен контролер цього модуля містить блокову схему, яку він обраховує із зазначеним періодом. Для надання обчислених даних в систему OpenSCADA в контролері можуть створюватися параметри. Приклад вкладки конфігурації контролера даного типу зображений на рис.3.
За допомогою цієї вкладки можна встановити:
- Стан об'єкту контролеру, а саме: статус, "Ввімкнено", "Виконується" та ім'я сховища, яке містить конфігурацію.
- Ідентифікатор, ім'я та опис контролеру.
- Стан "Ввімкнено" та "Виконується", у який переводити об'єкт контролеру при запуску.
- Планування обчислення, пріоритет задачі опитування джерел даних і кількість ітерацій в одному циклі завдання обчислення блокової схеми контролера.
2 Блокова схема контролера
Блокова схема формується за допомогою вкладки блоків контролера, конфігурації блоку (рис.4) та його зв'язків (рис.5). Блоки зберігаються у таблиці із назвою "BlckCalcBlcks_{CntrId}".
Блоки блокової схеми можуть зв'язуватися як між собою, так і підключатися до атрибутів параметрів. Самі блоки при цьому не містять структури входів/виходів (IO), а містять значення, виходячи зі структури IO пов'язаної функції. Функції для зв'язування з блоком використовуються з об'єктної моделі системи OpenSCADA.
Будь-який блок може в будь-який момент виключений з обробки та переконфігурований, після чого може бути знову включений в обробку. Зв'язки між блоками можуть конфігуруватися без винятку блоків з обробки та зупинки контролера. Значення всіх IO, не охоплених зв'язками, можуть бути змінені в процесі обробки.
За допомогою вкладки блоків можна:
- додати блок в блокову схему;
- видалити блок з блокової схеми;
- проконтролювати загальну кількість, кількість включених і кількість оброблюваних блоків.
За допомогою форми конфігурації блоку можна встановити:
- стан блоку, а саме: "Ввімкнений" і "Обробляється";
- ідентифікатор, ім'я та опис блоку;
- стан, в який переводити блок при завантаженні: "Вмикати" і "Обробляти";
- вказати блок, який повинен обов'язково виконуватись перед даними;
- призначити робочу функцію з об'єктної моделі, перейти до функції для ознайомлення.
За допомогою вкладки конфігурації зв'язків блоку блокової схеми можна встановити зв'язки для кожного параметра блоку окремо.
Підтримуються наступні типи зв'язків:
- міжблокові: підключення входу блоку до виходу іншого блоку, входу одного блоку до входу іншого і виходу одного блоку до входу іншого;
- дальні міжблокові; з'єднання блоків з різних контролерів даного модуля;
- коефіцієнт; перетворення входу в константу, всі входи/виходи за замовчуванням ініційовані як константи;
- зовнішній атрибут параметра.
Для установки значень параметрів блоку призначена відповідна вкладка (рис.6).
Відповідно з реалізацією функцій користувача в системі OpenSCADA підтримуються чотири основних типи IO: ціле, дійсне, логічне і рядок.
Модулем передбачено особливу обробку низки входів/виходів блоку:
- f_frq — Частота обчислення або час після останнього обчислення блоку, негативне у секундах, для планування за CRON, тільки читання.
- f_start — Прапорець першого виконання блоку, запуск, тільки читання.
- f_stop — Прапорець останнього виконання блоку, зупинка, тільки читання.
- this — Об'єкт цього блоку.
3 Параметри контролеру
Модуль надає тільки один "Стандартний (std)" тип параметрів із назвою таблиці параметрів "BlckCalcPrm_{CntrId}". Параметр слугує для відображення обчислених в блоках даних на атрибути параметрів контролера. Приклад вкладки конфігурації параметра наведено на рис.7.
За допомогою цієї вкладки можна встановити:
- стан параметра, а саме: "Включений" і тип параметра;
- ідентифікатор, ім'я та опис параметра;
- стан, в який переводити параметр при завантаженні: "Включений";
- перелік атрибутів, відображених на параметри блоків. Формується у вигляді списку елементів у форматі: {BLK}.{BLK_IO}[:{AID}:{ANM}]. Де:
- {BLK} — ідентифікатор блоку, блокової схеми; для постійної значення встановлюється:
- '*s' — строковий тип;
- '*i' — цілочисельний тип;
- '*r' — дійсний тип;
- '*b' — логічний тип.
- {BLK_IO} — параметр блоку, блокової схеми; для постійної значень встановлюється в значення атрибуту;
- {AID} — ідентифікатор атрибуту параметра;
- {ANM} — ім'я атрибута параметра.
4 Копіювання блокових схем
Для спрощення і прискорення процедури розробки складних і повторюваних блокових схем передбачено механізм копіювання елементів блокової схеми як окремо, так і блокових схем цілком. Механізм копіювання інтегрований в ядро OpenSCADA і працює прозоро.
5 API користувацького програмування
Деякі об'єкти модуля надають функції користувацького програмування.
Об'єкт "Блок" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])
- ElTp cfg(string nm) — отримання значення конфігураційного поля nm об'єкта.
- bool cfgSet(string nm, ElTp val) [доступ до відповідної підсистеми] — установка конфігураційного поля nm об'єкта у значення val.
- TCntrNodeObj cntr() — повертає об'єкт контролеру цього параметру, незалежно від вкладеності.
6 Сервісні команди-функції Інтерфейсу Управління
Сервісні функції — це інтерфейс доступу до OpenSCADA із зовнішніх систем посередництвом Інтерфейсу Управління. Цей механізм покладено в основу усього обміну всередині OpenSCADA, реалізованого шляхом слабких зв'язків та власного протоколу обміну OpenSCADA.
Отримання значень всіх атрибутів блоку об'єкту контролеру
ЗАП: <get path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr" />
- CNTR, BLK — об'єкт контролеру та блок у блоковій схемі.
ВІДП: <get path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr" rez="0">{attributes}</get>
- attributes — атрибути блоку в тегах "a": <a id="{ID}">{value}</a>
- ID — ідентифікатор атрибуту;
- value — значення атрибуту.
<get path="/DAQ/BlockCalc/CM101/blk_AT101_1/%2fserv%2fattr" rez="0" user="roman">
<a id="Fi">50.3839725707191</a>
<a id="Pi">10.2588208891757</a>
<a id="Ti">331.149550201738</a>
<a id="Si">0.071</a>
<a id="li">10</a>
</get>
Встановлення значень переліку атрибутів блоку об'єкту контролеру
ЗАП[root-DAQ]: <set path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr">{attributes}</set>
- CNTR, BLK — об'єкт контролеру та блок у блоковій схемі;
- attributes — атрибути блоку в тегах "a": <a id="{ID}">{value}</a>
- ID — ідентифікатор атрибуту;
- value — значення атрибуту.
<set path="/DAQ/BlockCalc/CM101/blk_AT101_1/%2fserv%2fattr">
<a id="Fi">50.3839725707191</a>
<a id="Pi">10.2588208891757</a>
</set>