From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/LogicLev and the translation is 100% complete.

Other languages:
English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
LogicLev Логічний рівень 2.9 GPL2 daq_LogicLev.so en,uk,ru,de x86,x86_64,ARM DAQ Роман Савоченко Надає чистий логічний рівень параметрів сбору даних.

Модуль є чистою реалізацією механізму логічного рівня, заснованого на шаблонах параметрів підсистеми "Збір даних (DAQ)". Реалізація модуля заснована на проекті "Логічний рівень параметрів OpenSCADA". Практично, цей модуль є реалізацією підсистеми "Параметри" вказаного проекту, без шаблонів та винесений до модуля.

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

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

1 Об'єкт контролеру

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

Рис.1. Вкладка конфігурації об'єкту контролеру.

За допомогою цієї вкладки можна встановити:

  • Стан об'єкту контролеру, а саме: статус, "Ввімкнено", "Виконується" та ім'я сховища, яке містить конфігурацію.
  • Ідентифікатор, ім'я та опис контролеру.
  • Стан "Ввімкнено" та "Виконується", у який переводити об'єкт контролеру при запуску.
  • Планування обчислення та пріоритет задачі опитування джерел даних.

2 Параметри

Модуль надає два типи параметру: "Логічний (Prm)" та "Віддзеркалення параметру (PrmRefl)". Додатковими конфігураційними полями параметрів цього модуля (рис.2) є:

  • Логічний (Prm), із назвою таблиці параметрів "LogLev{TypeId}_{CntrId}":
    • Шаблон параметру — адреса шаблону параметру DAQ.
  • Відображення параметру (PrmRefl), із назвою таблиці параметрів "LogLev{TypeId}_{CntrId}":
    • Вихідний параметр — адреса вихідного параметру відображення.
Рис.2. Вкладка конфігурації параметру.

2.1 Логічний (Prm)

При формуванні шаблону логічного типу параметру цього модуля треба враховувати особливість формату посилання шаблону. Посилання має записуватися у вигляді: {Параметр}|{Ідентифікатор}, де:

  • {Параметр} — рядок, що характеризує параметр;
  • {Ідентифікатор} — ідентифікатор атрибуту параметра.

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

Модулем передбачено особливу обробку низки атрибутів шаблону:

  • f_frq — частота обчислення процедури шаблону або час після останнього обчислення (негативне у секундах) для планування за CRON, тільки читання.
  • f_start — ознака першого виконання процедури шаблону — запуск, тільки читання.
  • f_stop — ознака останнього виконання процедури шаблону — зупинка, тільки читання.
  • f_err — помилка параметру, повний доступ. Значення цього атрибуту шаблону потрапляє до атрибуту помилки параметру "err". Записати сюди EVAL для можливості встановлення ззовні атрибуту "err" та всіх інших у режимі Тільки для Читання.
  • SHIFR — значення шифру параметру, тільки читання.
  • NAME — значення назви параметру, тільки читання.
  • DESCR — значення опису параметру, тільки читання.
  • this — об'єкт даного параметру, дозволяє отримати доступ до атрибутів параметру, наприклад, для доступу до архівів-історії.

Знак "(+)", у кінці адреси, сигналізує про вдале зв'язування та присутність цільового об'єкту. Для атрибутів об'єктного типу дозволений ієрархічний доступ до конкретної властивості об'єкта шляхом визначення його шляху через символ '#', наприклад: "LogicLev.experiment.Pi.var#pr1.pr2".

Рис.3. Вкладка конфігурації шаблону параметру.
Рис.4. Вкладка конфігурації шаблону параметру. Показувати тільки атрибути.

Відповідно до шаблону, що лежить у основі параметру, ми отримуємо набір атрибутів параметру рис.5.

Рис.5. Вкладка атрибутів параметру.

2.2 Віддзеркалення параметру (PrmRefl)

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

3 API користувацького програмування

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

Об'єкт "Параметр" [this]

  • bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" ) [для включеного параметру логічного типу] — додання атрибуту id з ім'ям name та типом tp. Якщо атрибут вже присутній то будуть застосовані властивості, які можливо змінити "на ходу": ім'я, режим вибору та параметри вибору.
    • id, name — ідентифікатор та ім'я нового атрибуту;
    • tp — тип атрибута [boolean | integer | real | string | text | object] + режим вибору [sel | seled] + тільки для читання [ro];
    • selValsNms — два рядки зі значеннями у першому та їх іменами у другому, поділені ";".
  • bool attrDel( string id ) [для включеного параметру логічного типу] — видалення атрибуту id.


4 Сервісні команди-функції Інтерфейсу Управління

Сервісні функції — це інтерфейс доступу до OpenSCADA із зовнішніх систем посередництвом Інтерфейсу Управління. Цей механізм покладено в основу усього обміну всередині OpenSCADA, реалізованого шляхом слабких зв'язків та власного протоколу обміну OpenSCADA.


Отримання значень ВВ шаблону параметру Логічного Рівня об'єкту контролеру
ЗАП: <get path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr" />

  • CNTR, PRM — об'єкт контролеру та параметри.

ВІДП: <get path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr" rez="0">{IOs}</get>

  • IOs — ВВ контексту виконання шаблону параметрів Логічного Рівня у тегах "ta": <ta id="{ID}">{value}</ta>
    • ID — ідентифікатор ВВ;
    • value — значення ВВ.
<get path="/DAQ/LogicLev/gen/prm_F3/%2fserv%2ftmplAttr" rez="0" user="roman">
  <ta id="in">44.9998202036118</ta>
  <ta id="inProc" />
  <ta id="var">44.9999585116556</ta>
  <ta id="ed">ton/h</ta>
  <ta id="min">0</ta>
  <ta id="max">100</ta>
  <ta id="scSqr">0</ta>
</get>

Встановлення значень ВВ шаблону параметру Логічного Рівня об'єкту контролеру
ЗАП[root-DAQ]: <set path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr">{IOs}</set>

  • CNTR, PRM — об'єкт контролеру та параметри;
  • IOs — ВВ контексту виконання шаблону параметрів Логічного Рівня у тегах "ta": <ta id="{ID}">{value}</ta>
    • ID — ідентифікатор ВВ;
    • value — значення ВВ.
<set path="/DAQ/LogicLev/gen/prm_F3/%2fserv%2ftmplAttr">
  <ta id="in">44.9998202036118</ta>
  <ta id="var">44.9999585116556</ta>
</set>