From OpenSCADAWiki
Jump to: navigation, search

Проєкт

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

Кожний проєкт включає сторінки з бібліотек кадрів-віджетів. Для низки режимів, сама сторінка може включати у себе вкладені сторінки як незалежні від батьківської, так і з використанням батьківського у ролі шаблону. Шаблонні сторінки-віджети дозволяють гранично спростити процес створення однотипних кадрів простого моніторингу, інженером АСУ ТП або користувачем OpenSCADA. Прикладом таких однотипних кадрів можуть бути: групи контурів, групи графіків, протоколи та різні зведені таблиці. Мнемосхеми технологічних процесів рідко підпадають під таку схему та формуються у окремій сторінці-віджеті.

Сторінка, як і віджет на якому вона заснована, надає можливість прив'язки динаміки до описаних у ній властивостей — зв'язки, які можуть бути встановлені динамікою або константами. Крім того, зв'язування безпосередньо на рівні сторінки проєкту є переважним, ніж здійснення цього на рівні віджетів бібліотек.

Приклад ієрархічного представлення компонентів проєкту класичного інтерфейсу ВУ технологічного процесу, з описом виразів стандартних викликів, приведено на рисунку.

VCA prog tree uk.png

Передбачено наступні спеціальні властивості сторінок:

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

На комбінаціях вищевказаних спеціальних властивостей сторінок реалізовано наступні їх типи:

  • Стандарт — стандартна сторінка (не встановлено жодної з властивостей), є повноцінною кінцевою сторінкою.
  • Контейнер — повноцінна сторінка з властивістю контейнера (Контейнер).
  • Логічний контейнер — логічний контейнер, фактично сам не є сторінкою (Контейнер|Порожньо), виконує роль проміжного та групуючого елементу у дереві сторінок.
  • Шаблон — сторінка-шаблон (Шаблон). Чиста шаблонна сторінка, використовується для опису загальних властивостей та довизначення їх у вкладених сторінках, у приватному порядку.
  • Контейнер та шаблон — сторінка шаблону та контейнер (Шаблон|Контейнер), поєднує функції шаблону та контейнеру.
  • Зв'язок — зв'язок на іншу сторінку. Зв'язки можуть бути використані на повністю динамічних та високо тиражованих сторінках, для оптимізації використання пам'яті. Для розрізнення відкриття зв'язуваних сторінок Ви маєте використовувати атрибут "path". Функція uiCmd() користувацького API має використовуватися для керування сторінками цього типу замість прямого запису до атрибутів сторінок "pgOpen" та "pgOpenSrc".

На боці візуалізації (RunTime) побудовано логіку, що регулює яким чином відкривати сторінки, на основі наступних атрибутів базового елементу "Box":

  • pgOpen — ознака "Сторінка відкрита";
  • pgNoOpenProc — ознака "Виконувати сторінку навіть якщо вона не відкрита";
  • pgOpenSrc — містить адресу виджета, або сторінки, що відкрила поточну сторінку; у випадку вкладеного контейнерного віджета тут міститься адреса включеної сторінки; для відкриття сторінки із скрипта достатньо тут вказати адресу віджета-джерела відкриття, але для сторінок типу "Зв'язок" Ви маєте віддавати перевагу використанню функції uiCmd() користувацького API, для керування сторінкам;
  • pgGrp — група сторінок, використовується для зв'язки контейнерів сторінок зі сторінками, згідно загальної групи; ПОРОЖНЯ та "main" група передбачають використання цієї сторінки як Кореневу-основну сторінку, тож така буде замінювати інші Кореневі-головні сторінки; група "fl" призначена для використання у зовнішніх вікнах, які передбачено для багаторазового одночасного відкриття та які не мають відстежуватися на дублікати; решта передбачено для включення у контейнери-бокси або одноразового одночасного відкриття, тож вони примусово перевіряються на дублікати, коли останнє відкривається, а попередні закриваються.

Логіка визначення способу відкриття сторінок працює наступним чином:

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