From OpenSCADAWiki
Jump to: navigation, search

Зв'язування з динамікою

Для надання до інтерфейсу візуалізації актуальних даних, повинні використовуватися дані підсистеми "Збір даних (DAQ)". Природа цих даних наступна:

  1. параметри, що містять деяку кількість атрибутів;
  2. атрибути параметру можуть надавати дані п'яти базових типів: Логічний, Цілий, Реальний, Рядок та Об'єкт;
     які доповнено СВУ модифікаторами: "Обирається"; варіантами Рядка: "Текст", "Переклад", "Колір", "Зображення", "Шрифт", "Адреса"; варіантами Цілого: "ДатаЧас".
  3. атрибути параметру можуть мати архів (історію);
  4. атрибути параметру можуть бути на читання, запис та з повним доступом.

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

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

Для задоволення можливості доступу до архівам, згідно до пункту 3, зв'язки виконують перевірку типу атрибуту та, у випадку підключення до "Адреси", до значення поміщається адреса зв'язку.

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

Рисунок. Вкладка "Обробка" сторінки конфігурації віджета.

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

Якщо у стовпчику "Обробка" стоїть true, то у обчислювальній процедурі стає доступною змінна {ідентифікатор віджета}_{ідентифікатор атрибуту}, наприклад cw_value.

Стовпчик "Конфігурація" дозволяє вказати тип зв'язку атрибуту віджета:

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

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

  • Для постійної: пряме значення атрибуту.
  • Для зв'язку: "{параметр}|{ідентифікатор}", де:
    • параметр — група атрибутів;
    • ідентифікатор — ідентифікатор атрибуту; саме значення у цьому полі співставляється з атрибутами параметрів DAQ після указання групового зв'язку, при автоматичному зв'язувані;
  • Для стиля: ідентифікатор-ім'я поля стиля.

Встановлення зв'язків може бути декількох типів, який визначається префіксом:

  • val: — Пряме завантаження значення через механізм зв'язків. Наприклад, зв'язок "val:100" завантажує значення 100 до атрибуту віджета. Часто використовується у випадку відсутності кінцевої точки зв'язку, з метою прямого встановлення значення.
  • prm: — Зв'язок на атрибут параметру або параметр, загалом, для групи атрибутів підсистеми "Збір даних". Наприклад, зв'язок "prm:/LogicLev/experiment/Pi/var" здійснює доступ атрибуту віджета до атрибуту параметра підсистеми "Збір даних". Знак "(+)", у кінці адреси, вказує на вдале зв'язування-лінкування та присутність цільового об'єкту. Для атрибутів об'єктного типу допустимий ієрархічний доступ до конкретної властивості об'єкту, шляхом вказання її шляху через символ '#', наприклад: "prm:/LogicLev/experiment/Pi/var#pr1/pr2".
  • wdg: — Зв'язок на атрибут іншого віджета або віджет, загалом, для групи атрибутів. Наприклад, зв'язок "wdg:/ses_AGLKS/pg_so/pg_1/pg_ggraph/pg_1/a_bordColor" здійснює доступ атрибуту одного віджету до атрибуту іншого. Підтримуються як абсолютні, так і відносні шляхи зв'язків. Точкою відліку адреси абсолютного зв'язку виступає об'єкт кореня модуля "VCAEngine", що означає — першим елементом абсолютної адреси є ідентифікатор сеансу або проєкту. Перший елемент на боці сеансу опускається, тому зв'язки, встановлені у проєкті, там працюють. Відносні зв'язки беруть відлік від віджету, де зв'язок вказано. Спеціальним елементом відносного зв'язку є елемент вищестоячого вузла "..".
  • arh: — Особливий тип зв'язку, доступний тільки для окремого атрибуту типу "Адреса", який дозволяє підключитися прямо до архіву значень ("arh:CPU_load"). Може бути корисний для вказання архіву у якості джерела даних примітиву "Діаграма".

Обробка зв'язків відбувається з періодичністю обчислення віджету, у порядку:

  • отримання даних вхідних зв'язків;
  • виконання обчислення процедури віджету;
  • передача значень за вихідними зв'язками.

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

Рисунок. Вкладка "Зв'язки" сторінки конфігурації віджету з груповим призначенням атрибутів шляхом вказання тільки параметру.
Рисунок. Вкладка "Зв'язки" сторінки конфігурації віджету з індивідуальним призначенням атрибутів.

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

Рисунок. Вкладка "Зв'язки" сторінки конфігурації контейнеру віджетів, що включає віджети зі зв'язками.

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

  • резервуванням ключового ідентифікатору "<page>" для групи атрибутів зв'язків у кадрів загального призначення;
  • динамічним призначенням зв'язків з ідентифікатором "<page>", у процесі відкриття кадру загального призначення за сигналом від іншого віджета.

Розглянемо приклад, коли є кадр загального призначення "Панель контролю графіком" та багато "Графіків" на різних кадрах. "Панель контролю графіком" має зв'язки з шаблонами:

  • tSek -> "<page>|tSek"
  • tSize -> "<page>|tSize"
  • trcPer -> "<page>|trcPer"
  • valArch -> "<page>|valArch"

При цьому, кожний віджет "Графік" має атрибути "tSek", "tSize", "trcPer" та "valArch". За викликом сигналу відкриття "Панелі контролю графіком" з будь-якого віджету "Графік", відбувається зв'язування атрибутів "Панелі контролю графіком" з атрибутами віджету "Графік", згідно шаблону. як результат, всі зміни на "Панелі контролю графіком" будуть відображатися на графіку, за посередництвом цих зв'язків.

Якщо у віджета "Графік" наявні зовнішні зв'язки на параметри підсистеми "Збір даних", зв'язки "Панелі контролю графіком" будуть встановлюватися на зовнішнє джерело. Крім того, якщо у "Панелі контролю графіком" будуть заявлені зв'язки на атрибути, відсутні безпосередньо у віджета "Графік", то буде здійснюватися пошук наявності таких атрибутів у зовнішнього джерела — першого на який встановлено прямий зв'язок, виконуючи, тим самим, доповнення відсутніх зв'язків.

Для наочного зображення цього механізмі наведено таблицю.

Таблиця. Механізм динамічної лінковки.

Атрибути "Панелі контролю графіком" (шаблон динамичного зв'язку) Атрибути "Графіка" Атрибути зовнішнього "Параметру" Результуючий зв'язок або значення атрибута, що зв'язується
tSek (<page>|tSek) tSek - "Графік".tSek
tSize (<page>|tSize) tSize - "Графік".tSize
trcPer (<page>|trcPer) trcPer - "Графік".trcPer
valArch (<page>|valArch) valArch - "Графік".valArch
var (<page>|var) var var "Параметр".var
ed (<page>|ed) - ed "Параметр".ed
max (<page>|max) - - EVAL
min (<page>|min) - - EVAL