From OpenSCADAWiki
Jump to: navigation, search

Сеанс виконання проєкту

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

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

VCA map inher uk.png

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

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

  • обираються події, доступні на момент обчислення, з атрибуту "event" віджету;
  • події завантажуються до параметру "event" об'єкта обчислення;
  • до об'єкту обчислення завантажуються значення за вхідними зв'язками;
  • до об'єкту обчислення завантажуються значення спеціальних змінних (f_frq, f_start та f_stop);
  • до об'єкту обчислення завантажуються значення обраних параметрів віджету;
  • обчислення;
  • вивантаження значень об'єкту обчислення у обрані параметри віджету;
  • вивантаження подій з параметру "event" об'єкта обчислення;
  • обробка подій та передача необроблених на рівень вище.

Об'єкти сеансу успадковуються від абстрактного об'єкту "Widget" та використовують відповідні об'єкти проєкту. Так, сеанс "Session" використовує проєкт "Project" та формує на його основі розгорнуте дерево. Сторінка проєкту "Page" прямо використовується сторінкою сеансу "SessPage". Решта об'єктів "SessWdg" розгортаються відповідно до ієрархії елементів сторінки.

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

  • "Сторінка верхнього рівня" -> "Сторінка нижнього рівня"
  • "Віджет нижнього рівня" -> "Віджет верхнього рівня"

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

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