OpenSCADA

Документи/Швидкий старт

This page is a translated version of the page Documents/Quick start and the translation is 100% complete.

English • ‎mRussian • ‎Українська

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

З цієї причини, та для наочного представлення загальної концепції роботи у OpenSCADA, створено цей документ. Документ на прикладах та у достатньо короткій і наочній формі надає шлях від встановлення та запуску OpenSCADA до створення елементів користувацького інтерфейсу. У якості цільової допомоги в конфігурації, реалізації та вирішені типових завдань довкола OpenSCADA, також може бути використано документи Часті питання та Як зробити ... (How to ...).

Документ призначено для OpenSCADA версії 0.9 та вище. Якщо-ж вас цікавить цей документ для ранніх версій, то можете його отримати із документації що їде з пакетами тієї версії OpenSCADA або із цього документу старої Wiki.

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

Документ будується синхронно до реалізації прикладів на підключені до демонстраційної бази даних (БД) моделі "АГЛКС" у ролі джерела даних — ПЛК. Відповідно, користувач має отримати дистрибутив OpenSCADA з цією БД, про що детальніше у розділі Встановлення!

Contents

1 Терміни, визначення та абревіатури

1.1 Терміни та визначення

1.2 Вживані скорочення


2 Встановлення OpenSCADA

Встановлення OpenSCADA загалом можна здійснити двома способами. Перший та простий спосіб — це отримати готові пакети для використаного дистрибутиву ОС Linux. Другий — зібрати OpenSCADA з вихідних текстів.

Процедура встановлення сильно залежить від використаного дистрибутиву Linux та вичерпно її описати у даному посібнику не є можливим. Тому може знадобитися глибоке знайомство з механізмами встановлення ПЗ обраного дистрибутиву Linux з його документації. У випадку відсутності у користувача таких знань, умінь та переваг до якогось дистрибутиву Linux, наполегливо рекомендується обирати його за критерієм наявності до нього пакетів OpenSCADA та навіть репозиторію пакетів, що забезпечить найпростіше та безпроблемне встановлення.

Якщо у користувача викликає труднощі встановлення не тільки OpenSCADA, але й дистрибутиву Linux, то, на перший час, він може скористатися "живим" дистрибутивом Linux з встановленою та готовою до роботи та вивчення демонстрацією і повноцінною OpenSCADA. Якщо його влаштує таке оточення швидкої доступності, то він може зупинити свій вибір на ньому та встановити. На цей час доступні "живі" збірки на основі дистрибутиву Debian та ALTLinux (застаріле) у вигляді гібридних CD/DVD/USB-штампів на сторінці: http://oscada.org/ua/golovna/zavantazhiti/. Детальніше дивіться у документі рецепту (How to ...) "Живий диск (Live CD/DVD/USB)".

2.1 Встановлення OpenSCADA з готових пакетів

Встановлення з готових пакетів своєю чергою може здійснюватися двома методами. Перший — простіший, коли пакети OpenSCADA вже присутні у власних репозиторіях пакетів OpenSCADA або офіційних — додаткових репозиторіях використаного дистрибутиву ОС Linux. Встановлення таких пакетів це питання запуску типової програми управління пакетами дистрибутива з подальшим вибором пакетів OpenSCADA. Окрім простого встановлення, репозитрій пакетів загалом дозволяє просто утримувати операційну систему оновленою, безпечною та актуальною! Другий спосіб передбачає отримання пакетів OpenSCADA та встановлення їх вручну.

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

At.png Завантажувати пакети та підключати репозиторії пакетів треба безпосередньо для версії використаного дистрибутиву, інакше під час встановлення можуть виникнути нерозв'язні проблеми з залежностями.

2.1.1 Додавання репозиторію пакетів та встановлення OpenSCADA з нього

Репозиторії з пакетами надаються самим проєктом OpenSCADA, службова інформація яких зазвичай розташовується поряд з самими пакетами та оновлюється автоматично при збірці, тобто ці репозиторії є найбільш свіжими та найліпшими. Хоча пакети OpenSCADA все ще можна зустріти у репозиторіях таких дистрибутивів ОС Linux: ALTLinux та дистрибутивах, заснованих на пакетній базі Fedora, але вони там скоріше за все будуть старі, оскільки складання до репозиторіїв дистрибутивів розробниками наразі не практикується!

Адреси репозиторіїв та конфігурацію менеджеру репозиторіїв ви можете отримати на тій самій сторінці завантаження OpenSCADA (http://oscada.org/ua/golovna/zavantazhiti/) або в прикладах нижче.

При встановлені з репозиторію обираємо тільки пакет з конфігурацією проєкту OpenSCADA або моделлю. Решта буде обрано та встановлено автоматично згідно до залежностей. Зазвичай передбачаються наступні пакети такого роду:

At.png У випадку із Linux Дистрибутивом Автоматизації та пакетами версії тривалої підтримки (LTS), до основної назви пакетів додається суфікс "-lts" — "openscada-lts", оскільки репозиторій один та він містить пакети обох гілок, Робочої та LTS.

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

Репозиторії пакетів основані на менеджері APT (Debian, Ubuntu, ALTLinux) — додаються розташуванням завантаженого файлу "openscada.list" до теки "/etc/apt/sources.list.d" або редагуванням файлу /etc/apt/sources.list вставкою одного рядка:
Debian (LTS та Work, репозиторій Linux автоматизації): "deb http://ftp.oscada.org/Debian/9/openscada ./"
Ubuntu (LTS): "deb http://ftp.oscada.org/OpenSCADA/LTS/Ubuntu/18.04 ./"
Ubuntu (Work): "deb http://ftp.oscada.org/OpenSCADA/Work/Ubuntu/18.04 ./"
Встановлення:

$ apt-get update
$ apt-get install openscada-model-aglks

ALTLinux (LTS та Work, репозиторій Linux автоматизації): "rpm http://ftp.oscada.org/ALTLinux/7 openscada main"
Встановлення:

$ apt-get update
$ apt-get install openscada-Model.AGLKS

Додання ключа перевірки підпису (дійсності) репозиторію та пакетів у ньому (необов'язково та використовується не у всіх репозиторіях):

 $ wget -O - http://ftp.oscada.org/Misc/pkgSignKey | sudo apt-key add - 

Репозиторії пакетів що засновано на менеджері пакетів YUM (RedHat, Fedora, CentOs) — додаються завантаженням або створенням файлу /etc/yum.repos.d/openscada.repo з вмістом:

[openscada]
name=OpenSCADA
#CentoOs (LTS)
baseurl=http://ftp.oscada.org/OpenSCADA/LTS/CentOs/7
#CentoOs (Work)
#baseurl=http://ftp.oscada.org/OpenSCADA/Work/CentOs/6
#Fedora (Work)
#baseurl=http://ftp.oscada.org/OpenSCADA/Work/Fedora/12
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://ftp.oscada.org/Misc/pkgSignKey

Встановлення:

$ yum install openscada-Model.AGLKS 

Репозиторії пакетів SuSE YaST — додаються командою:

$ zypper ar -f http://ftp.oscada.org/OpenSCADA/LTS/SuSE/15 OpenSCADA

Встановлення:

$ zypper in openscada-Model.AGLKS 

2.1.2 Ручне встановлення пакетів OpenSCADA

Для ручного встановлення пакетів OpenSCADA їх треба завантажити з офіційного сайту або іншого джерела. Завантажити зазвичай можна два набори пакетів.

Перший набір представлено одиннадцатю пакетами:

Другий набір представлено біля п'ятдесятьма пакетами з відокремленням модулів OpenSCADA у окремі пакети:

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

Ручне встановлення DEB-пакетів першого набору можна здійснити командою, попередньо змінивши робочу директорію на директорію з пакетами:

$ dpkg -i openscada-libdb.main_0.9.0-1_all.deb openscada-libdb.vca_0.9.0-1_all.deb openscada-model.aglks_0.9.0-1_all openscada_0.9.0-1_i386.deb 

Ручне встановлення RPM-пакетів першого набору можна здійснити командою, попередньо змінивши робочу директорію на директорію з пакетами:

$ rpm -i openscada-LibDB.Main-0.9.0-alt1.noarch.rpm openscada-LibDB.VCA-0.9.0-alt1.noarch.rpm openscada-Model.AGLKS-0.9.0-alt1.i586.rpm openscada-0.9.0-alt1.i586.rpm 

At.png У процесі виконання встановлення можуть виникнути помилки, пов'язані з незадоволеними залежностями. При ручному встановлені із пакетів задовольняти їх треба буде вручну, подібно до встановлення пакетів OpenSCADA, або через менеджер пакетів дистрибутиву Linux. Випадки наявності проблем залежності можуть бути навіть при встановлені через пакетний менеджер якщо використовується репозиторій OpenSCADA який не відповідає дистрибутиву Linux або його версії, або-ж не підключено основні репозиторії пакетів самого дистрибутиву. У пакетному менеджері APT для автоматичного розв'язання проблем зовнішніх залежностей, які виникли при ручному встановлені OpenSCADA, можна використовувати команду:

$ apt-get install -f

2.2 Встановлення-збірка з вихідних текстів

Якщо немає можливості отримати готові пакети OpenSCADA для обраного дистрибутиву, то залишається лише варіант складання OpenSCADA з вихідних текстів. Цей процес детально описано у Посібнику по збірці OpenSCADA з вихідних текстів.

3 Первинна конфігурація та запуск

У наших основних завданнях з OpenSCADA, у межах цього документу, треба встановити пакет з БД моделі "АГЛКС" — openscada-model-aglks, про що можна детально дізнатися з попереднього розділу. Звісно, якщо ви використовуєте Живий Диск то у вас все потрібне вже є.

At.png Не розглядайте тут встановлення-збірку OpenSCADA з вихідних текстів, оскільки вимоги кваліфікаційного рівня користувача для цієї задачі значно вище за рівень документа загалом та тут неминуче будуть невідповідності з посібником через дуже ймовірні відмінності у початковій конфігурації.

Встановлена БД моделі "АГЛКС" не потребує попереднього налаштування. Якщо-ж потрібно здійснити особливе налаштування, яке відрізняється від базового, то скористайтеся посібником по програмі. У процесі чого вам може знадобитися інформація про типові облікові записи та паролі OpenSCADA (не мають стосунку до облікових записів ОС), хоча моделі та новостворені конфігурації запускаються від привілейованого користувача та ви можете легко змінити будь який з них:

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

At.png Динамічна модель компресорної станції на 6 газових компресорів, яка лежить у основі демонстраційної БД, потребує помітних ресурсів, а саме — процесору з частотою більш 1 ГГц (x86) та пам'яті до 200МБ. Дані обчислювальні ресурси потрібні безпосередньо для динамічної моделі та не є загальним показником ресурсоємності програми у кінцевих задачах! Вимоги до пам'яті навпаки є типовим показником для графічної станції АРМ близької складності.

Загальний процес конфігурації SCADA-системи для виконання функцій верхнього рівня — АРМ оператора, можна умовно поділити на два етапи:

Відтак, нашою кінцевою метою та метою цього документу є побудова повноцінної конфігурації локальної SCADA-станції поєднану із сервером та з емуляцією джерела даних на основі цієї демонстраційної БД (Рис.3).

Рис. 3. Просте поєднане підключення станції та SCADA-серверу з джерелом даних у демонстраційній БД.

За разом ми ознайомимося з такими важливими ролями OpenSCADA, як: сервер збору, архівації, візуалізації; середовище виконання ПЛК та віддалена розробка. Та перед цим ми оглянемо OpenSCADA та її можливості загалом.

3.1 Загальний огляд

Запустити локальне виконання OpenSCADA з БД моделі "АГЛКС" можна з меню оточення робочої стільниці у розділі "Графіка", пункт "Модель "АГЛКС" на відкритій SCADA системі" з характерною іконкою (Рис.3.1.1).

Рис. 3.1.1. Пункт меню оточення робочої стільниці для локального запуску демонстрації OpenSCADA.

Локальний запуск також можна здійснити з консолі, командою:

$ openscada_AGLKS 

Після запуску ми отримаємо вікно графічного конфігуратору OpenSCADA — QTCfg (Рис.3.1.2) з відкритою кореневою сторінкою. Демонстраційна БД спеціально налаштована так, щоб першим при запуску з'являлося вікно конфігуратору. Надалі можна відкрити вікно розробки графічних інтерфейсів користувача, а також запустити проєкт користувацького інтерфейсу на виконання.

Рис. 3.1.2. Програмний конфігуратор OpenSCADA — QTCfg, коренева сторінка.

Програмний конфігуратор OpenSCADA є основним та достатнім засобом для конфігурації будь якого компоненту OpenSCADA. Як і багато компонентів OpenSCADA, конфігуратор реалізовано у вигляді модуля. Крім конфігуратору QTCfg доступні й інші конфігуратори, що виконують ті-ж функції, але реалізовані на основі інших технологій. Наприклад, такими є Web-конфігуратори: WebCfgD та WebCfg.

Всі дії надалі будемо розглядати лише у конфігураторі QTCfg, хоча їх можна буде виконати і в інших конфігураторах.

Структуру інтерфейсу вікна конфігуратору можна детально розглянути за посиланням. Для нас зараз більш важливо розглянути всі доступні графічні інтерфейси OpenSCADA, тому натиснемо передостанню нагорі іконку на панелі інструментів, після чого відкриється вікно розробки користувацького інтерфейсу (Рис.3.1.3).

Рис. 3.1.3. Вікно розробки користувацького інтерфейсу.

Далі можемо запустити проєкт "АГЛКС" на виконання. Для цього обираємо його у переліку проєктів та запускаємо шляхом натискання на першу ліворуч іконку, на панелі інструментів, або у контекстному меню. У результаті чого отримаємо вікно кінцевого інтерфейсу користувача — оператору (Рис.3.1.4).

Рис. 3.1.4. Вікно кінцевого інтерфейсу користувача проєкту "AGLKS".

Побудова та виконання користувацьких інтерфейсів здійснюється модулем Vision підсистеми "Користувацькі інтерфейси". Крім цього модуля ще доступні інші модулі візуалізації. Наприклад, OpenSCADA надає модуль WebVision, який дозволяє виконувати проєкти раніше розроблені у інтерфейсі модуля Vision, але за посередництвом Web-технологій та стандартного Web-браузеру.

Всі дії надалі будемо розглядати лише у інтерфейсі модуля Vision.

Таким чином ми запустили демонстрацію OpenSCADA та ознайомилися із основним набором інструментів. Надалі будемо їх використовувати у конфігурації OpenSCADA для виконання функцій верхнього рівня — АРМ оператора та інших задач.

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

3.2 Фонове та віддалене виконання — сервер, середовище виконання ПЛК та віддалена розробка

At.png Всі консольні операції можете виконати у консольному терміналі, наприклад, програма "konsole" у оточенні Живого Диску з діалогу запуску за Alt+F2. Та тека "{HOME}" тут це "/home/user".

Організація проєкту OpenSCADA у окремій теці робить простим запуск готових проєктів у просторі сервісу — виконання у фоні, а також подальше оновлення та супровід цього проєкту без прямого віддаленого контролю. Фактично, ви можете розробляти проєкт локально, тримаючи його теку у користувацькій робочій теці (типово "{HOME}/.openscada"), а для запуску у просторі сервісу лише копіювати або пакувати, передавати на віддалений робочий пристрій та розпаковувати у системну робочу теку (типово "/usr/share/openscada").

Сервісне-фонове виконання програм в Linux обслуговується відповідним чином сформованим сценарієм-скриптом, який розташовується в теці "/etc/ini.d" та має бути окремим на кожен проєкт OpenSCADA що запускається у сервісному просторі. Для спрощення та виключення необхідності займатися створенням власних сценаріїв OpenSCADA надає відповідні для стандартних випадків-профілів та які зазвичай постачаються пакетами openscada-server і openscada-plc (openscada-lts-server і openscada-lts-plc для LTS).

Відтак, для запуску у просторі сервісу скажімо бібліотечного проєкту "АГЛКС" ми:

# Підключитися від суперкористувача
$ su -
# ... для живого диску та деяких інших оточень Linux
$ sudo bash
# Зупинити виконання попередньої конфігурації серверу та видалити його теку
$ service openscada-server stop; rm -R /usr/share/openscada/server
# ... для LTS
$ service openscada-lts-server stop; rm -R /usr/share/openscada/server
# Скопіювати проєкт "АГЛКС" із домашньої теки користувача "{HOME}" з перейменуванням у "server"
$ cp -R {HOME}/.openscada/AGLKS /usr/share/openscada/server 
# Запустити сервер вже з проєктом "АГЛКС"
$ service openscada-server start
# ... для LTS
$ service openscada-lts-server start

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

Відмінність виконання проєкту у середовищі сервісу-фону від користувацького середовища робочої стільниці власне одна, звісно крім відсутності локального графічного інтерфейсу, це — відсутність у фоні визначення локалі, тобто мова інтерфейсу там буде Англійська. Та що можна просто виправити зміною або доданням конфігураційного параметру <prm id="Lang">uk_UA.UTF-8</prm> до секції-тегу "station" файлу oscada.xml фонового проєкту.


Таким чином ви отримаєте демонстраційну БД (проєкт "АГЛКС") яка працює у фоні, що однак ми не побачимо поки не спробуємо підключитись до цієї конфігурації, щодо чого нижче. Тепер, при кожному запуску комп'ютеру, вона буде таким чином запускатися і працюватиме у фоні. Загалом, саме так здійснюється запуск та виконання серверних конфігурацій, оточень ПЛК та одноплатних ПК на кшталт RaspberyPi.

Якщо-ж у вас все-ж виникли проблеми при роботі з консолью-терміналом або ви свідомо бажаєте фонового виконання у графічному оточені — так званого "запуску або закриття у системний лоток", тоді ви на цій стадії можете знову запустити демонстраційну конфігурацію, як описано на початку цього розділу (Рис.3.1.1), встановити параметр Згортати або запускати у системний лоток, модуля UI.QTStarter, та закрити вікно конфігуратору щоб проєкт моделі АГЛКС згорнувся до системного лотку.

3.3 Створення власного проєкту

У вікні менеджеру проєктів OpenSCADA (Рис.3.3) створимо наш власний проєкт, який можна викликати з меню оточення робочої стільниці у розділі "Графіка" загальним пунктом "Відкрита SCADA-система" з характерною іконкою (Рис.3.1.1) або командою з консолі-терміналу:

$ openscada
Рис. 3.3. Вікно менеджеру проєктів OpenSCADA.

У цьому вікні ми також можемо перевірити фонове виконання серверної та демонстраційної конфігурацій.

Відтак натиснемо відповідну кнопку Створити-оновити проєкт та введемо назву нового проєкту, наприклад — Start.

3.3.1 Підключення та використання віддалених і фонових конфігурацій

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

На сторінці "Транспорти" (Рис.3.3.1.1) у режимі Користувацький та Системний створимо підключення до нашої фонової демонстрації "AGLKS" як станції OpenSCADA. Вкажемо там транспорт Сокети, адресу localhost, користувача root та пароль openscada. Після оновлення дерева навігації конфігуратора, командою у контекстному меню, ми маємо отримати новий кореневий пункт цього підключення та зможемо контролювати віддалену-фонову станцію з цього конфігуратору.

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

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

Рис. 3.3.1.1. Сторінка "Транспорти" зовнішніх хостів OpenSCADA та огляд дерева OpenSCADA віддаленої-фонової станції.

На сторінці конфігурації візуалізатору UI.Vision (Рис.3.3.1.2) оберемо:

Рис. 3.3.1.2. Сторінка конфігурації візуалізатору UI.Vision.

Наступний запуск модуля UI.Vision, другою іконкою з кінця на панелі інструментів нагорі, має призвести середовище візуальної розробки до встановлення підключення з сервером візуалізації фонового демонстраційного проєкту. Де ви можете здійснювати віддалену розробку (Рис.3.3.1.3) та запускати проєкти з цього серверу візуалізації на виконання (Рис.3.3.1.4).

Рис. 3.3.1.3. Екран віддаленої розробки UI.Vision для серверу візуалізації "АГЛКС".
Рис. 3.3.1.4. Екран віддаленого виконання UI.Vision для серверу візуалізації "АГЛКС".

At.png Цю конфігурацію віддаленого підключення до серверу візуалізації зберігати не треба та поле конфігурації "Станція рушія СВУ" (Рис.3.3.1.3) необхідно повернути у Local, а користувача станції встановити у root та тільки після чого зберегти.

Можливість віддаленого підключення та розробки інколи є єдиним способом здійснити розробку або коригування не тільки для серверних конфігурацій виключно з WEB-інтерфейсом, але і для конфігурацій з локальною візуалізацією, коли саме оточення локальної візуалізації непридатне або обмежене для виконання середовища розробки модуля UI.Vision, наприклад, таких як смартфони, планшети, та інші мобільні пристрої з малим екраном, виключно сенсорним вводом (Android) або обмеженнями на кшталт неможливості відкриття системної віртуальної клавіатури (Nokia N9). Та цю віддалену розробку можна переважно здійснювати у процесі виконання проєкту — гаряча розробка, що особливо актуально для Web-інтерфейсів і локальних інтерфейсів які запускаються лише у вікні виконання. Щодо віддаленої конфігурації, то на один локальний конфігуратор, як центр адміністрування, можна зібрати всі віддалені станції у мережі, включно зі станціями у прихованих мережах станцій першого рівня, підняти які можна аргументом "Рівень підняття" (Рис.3.3.1.1).

3.3.2 Підключення стандартних бібліотек OpenSCADA

Ново-створений проєкт OpenSCADA не містить жодної специфічної конфігурації, по факту є порожнім та передбачає створення користувачем нової конфігурації у локальному файлі БД SQLite "St.db", що розташовується у власній теці проєкту з такою-ж назвою. Створювати складний проєкт SCADA-системи простіше з використанням бібліотек функцій API об'єктної моделі OpenSCADA та бібліотек графічних елементів, а також інших бібліотек OpenSCADA. Для використання бібліотек OpenSCADA необхідно файли БД, де зберігаються бібліотеки: підключити — додати у об'єкті модуля БД "SQLite" (Рис.3.3.2.1), встановити-обрати адресу та вказати кодування БД у UTF-8 (Рис.3.3.2.2). At.png Після чого, та у випадку наявності готових записів БД бібліотек, необхідні з них потрібно активувати, про що читайте далі.

Рис. 3.3.2.1. Додання об'єкту БД "SQLite".
Рис. 3.3.2.2. Об'єкт БД "SQLite" бібліотеки OpenSCADA.

Дистрибутиви OpenSCADA постачаються з низкою бібліотек у вигляді файлів БД "SQLite" (таблиця 3.3.2), які при запуску-створені користувацького проєкту розташовуються у теці "LibsDB/". Відповідно до цього переліку у об'єкті модуля БД "SQLite" додаємо або використовуємо готові записи потрібних бібліотек, встановлюємо їм ознаку "Вмикати" та зберігаємо. Далі, для завантаження вмісту бібліотек, можна включити БД та натиснути кнопку "Завантажити програму з цієї БД" однак, при завантажені низка нових об'єктів не вмикаються (команда завантаження), тому простіше завершити новий проєкт та запустити його знову ніж вмикати все потрібне вручну.

Таблиця 3.3.2. Бібліотеки OpenSCADA у складі дистрибутиву.

Ідентифікатор Ім'я Адреса Мова/кодування Опис
OscadaLibs Бібліотеки OpenSCADA LibsDB/OscadaLibs.db EN,UK,RU/UTF-8 Бібліотеки джерел даних, служб та обробки
vcaBase СВУ: Головні бібліотеки LibsDB/vcaBase.db EN,UK,RU/UTF-8 Бібліотеки графічних елементів OpenSCADA модуля UI.VCAEngine
vcaTest СВУ: Тести LibsDB/vcaTest.db EN,UK,RU/UTF-8 Бібліотека тестів графічних елементів.
vcaElectroEls СВУ: Бібліотека електро-елементів мнемосхем користувацького інтерфейсу LibsDB/vcaElectroEls.db EN,UK,RU/UTF-8 Надає бібліотеку мнемонічних елементів інтерфейсу користувача електричних підстанцій та станцій генерації електрики.

У результаті додання бібліотек OpenSCADA ви отримаєте оточення, готове для додання джерел даних, визначення їх історії та формування інтерфейсу власного проєкту SCADA-системи.

4 Робота з джерелами даних

Основною функцією будь якої SCADA-системи є робота з джерелами даних реального часу, а саме — опитування програмованих логічних контролерів (ПЛК) та простих модулів ПУО. Детальніше ознайомитися з цим питанням можна у документі "Збір даних у OpenSCADA".

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

Дані, отримані з джерел, надалі обробляються, архівуються та використовуються для візуального представлення оператору ТП.

4.1 Збір даних аппарату ТП

У якості прикладу розглянемо та створимо збір даних для апарату повітряного охолоджувача. Фонова демонстраційна БД, як ПЛК та джерело даних, містить модель реального часу ТП компресорної станції з шести компресорів. Дані для двох апаратів повітряних холодильників "AT101_1" та "AT101_2" компресорної станції "KM101" доступні за протоколом ModBus/TCP на порту 10502 (стандартно цей порт 502 за наявності доступу його відкриття).

Створимо об'єкт контролеру для збору за протоколом ModBUS/TCP та отримаємо ці дані. Тим самим фактично реалізуємо завдання збору реальних даних оскільки наша конфігурація буде відрізнятися від роботи зі справжнім зовнішнім пристроєм тільки його адресою та адресами регістрів ModBUS, а також це може бути інший фізичний інтерфейс взаємодії — варіант протоколу ModBus. Це підключення також є яскравим прикладом можливості реалізації середовища виконання джерела даних (ПЛК) на основі OpenSCADA.

Для збору даних за протоколом "ModBUS" у OpenSCADA наявний модуль "ModBus" підсистеми "Збір даних". Для додання нового об'єкту контролера у конфігураторі відкриємо сторінку модуля "ModBUS" ("Start"->"Збір даних"->"Модуль"->"ModBus") та у контекстному меню пункта "ModBus" натиснемо "Додати" (риc.4.1.1).

Рис. 4.1.1. Додання об'єкту контролера у модулі "ModBus" підсистеми "Збір даних".

У результаті з'явиться вікно діалогу (Рис.4.1.2) з пропозицією ввести ідентифікатор та ім'я нового об'єкту контролера. Ідентифікатори будь яких об'єктів у OpenSCADA обмежено розміром у 20 символів та їх рекомендується вводити символами англійського алфавіту та цифрами. Крім того, починати ідентифікатор бажано з літери, що спростить його використання у внутрішніх процедурах. Імена об'єктів OpenSCADA обмежено розміром у 50 символів та які можуть бути будь якими. Ім'я зазвичай використовуються для відображення та якщо воно порожнє, то буде використано ідентифікатор. Надалі ім'я ми можемо змінити у конфігурації об'єкта, але ідентифікатор неможливо змінити прямо; хоча об'єкт можна вирізати (Ctrl+X) та потім вставити (Ctrl+V) тим самим перейменувавши його. Згідно до зауважень раніше введемо ідентифікатор "CM101", ім'я "KM 101" — CM101 (KM 101).

Рис. 4.1.2. Діалог визначення ідентифікатору та ім'я нового об'єкту.

Після підтвердження у нас з'явиться об'єкт нового контролера. Оберемо його у конфігураторі та ознайомимося з налаштуваннями (Рис.4.1.3).

Рис. 4.1.3. Головна вкладка налаштування об'єкту контролера модуля ModBus.

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

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

За допомогою сторінки об'єкту контролеру у розділі "Стан" можна в першу чергу оцінити поточний стан об'єкту контролера та реальний стан зв'язку з фізичним контролером, а також оперативно їх міняти. Так, поле "Статус" містить код помилки та текстовий опис поточного стану зв'язку з контролером. У нашому випадку об'єкт контролеру вимкнено. Ми можемо його ввімкнути та запустити, встановивши ознаки навпроти відповідних полів. Ввімкнений об'єкт контролеру ініціює параметри, запущений же ще запускає задачу збору (окремий потік на об'єкт контролеру) та надає можливість передавати дані у контролер через атрибути параметрів. Поле "БД контролера" вказує у якому сховку зберігається конфігурація даного об'єкту. Нас влаштує зберігання у Загальному Сховку, тобто залишимо по замовченню.

У розділі "Конфігурація" безпосередньо міститься конфігурація об'єкту контролера. Встановимо наступні з них, залишивши все інше без змін:

Збережемо наші зміни у БД, натиснувши другу ліворуч іконку на панелі інструментів.

Тепер, таким чином як і об'єкт контролеру створимо вихідний транспорт у модулі "Sockets" ("Start"->"Транспорти"->"Сокети"), за посередництвом контекстного меню (Рис.4.1.4) та назвемо транспорт так як і об'єкт контролеру CM101 (KM 101). Зверніть увагу, що у полі "Тип елементу" діалогу вводу ідентифікатору та ім'я (Рис.4.1.2), треба обрати Вихідний транспорт!

Рис. 4.1.4. Додавання вихідного транспорту у модулі "Sockets" підсистеми "Транспорти".

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

Рис. 4.1.5. Сторінка конфігурації вихідного транспорту модуля "Sockets" підсистеми "Транспорти".

У розділі "Конфігурація" безпосередньо міститься конфігурація об'єкту транспорту. Встановимо наступні з них залишивши все інше без змін:

Транспорти інших типів створюються подібно до методу розглянутому для "Sockets", а конфігурація їх відрізняється зазвичай лише форматом запису адреси та таймаутів. У випадку із транспортом модуля "Serial" у адресі вказується: шлях до послідовного пристрою, швидкість та формат. Для конвертерів USB->Serial,Modem цю адресу можна дізнатися з операційної системи, наприклад, консольною командою $ dmesg одразу після його підключення.

Збережемо об'єкт транспорту та повернемося до конфігураційного поля "Адреса транспорту" об'єкта контролера де оберемо адресу "Sockets.CM101". На цьому налаштування об'єкту контролера закінчено, включимо його встановивши ознаку "Ввімкнено". Наступним етапом є конфігурація та обрання тих даних, які треба опитувати з контролера. Це налаштування здійснюється шляхом створення параметру контролера. Параметр дозволяє описати перелік даних, що отримуються у контролера та передати їх у оточення OpenSCADA — модель даних.

Для додання нового параметру відкриємо сторінку нашого об'єкту контролера та, у контекстному меню пункту "KM 101 (CM101)", натиснемо "Додати". Параметр назвемо: AT101_1 (AT 101_1).

Сторінку конфігурації отриманого параметра приведено на рисунку 4.1.6. Ця сторінка містить розділ стану та оперативного управління. У полі "Тип" міститься ідентифікатор типу параметра, у нашому випадку це Стандартний (std). Параметр ми вмикаємо встановивши ознаку навпроти відповідного поля. Ввімкнений параметр приймає участь у процесі обміну з контролером.

Рис. 4.1.6. Сторінка конфігурації параметру контролера "ModBUS".

У розділі "Конфігурація" безпосередньо міститься конфігурація параметру. Встановимо наступні з них залишивши всі інші без змін:

R:100:r:Ti:T вхід
R:101:r:To:T вихід
R:102:rw:Cw:Продуктивність

Таким-же чином створимо, або скопіюємо з AT101_1, другий параметр "AT101_2 (AT 101_2)". Перелік атрибутів для нього встановимо у:

R:103:r:Ti:T вхід
R:104:r:To:T вихід
R:105:rw:Cw:Продуктивність

Збережемо обидва параметри. Тепер ми можемо запустити наш об'єкт контролера для здійснення збору, для чого повернемося на його сторінку та у розділі "Стан" встановимо ознаку "Виконується". Якщо ми нічого не пропустили то обмін успішно запуститься та у полі "Статус" ми отримаємо подібне представленому на рисунку 4.1.7.

Рис. 4.1.7. Сторінка об'єкту контролера при успішному обміні з фізичним контролером.

У випадку вдалого обміну з фізичним контролером ми також отримаємо описані дані контролеру у інфраструктурі (моделі даних) OpenSCADA. Побачити ці дані можна у вкладці "Атрибути" наших параметрів AT101_1 (Рис.4.1.8) та AT101_2. Оскільки збір здійснюється регулярно та з періодичністю у секунду, то ми можемо спостерігати їх зміну натискаючи кнопку "Поновити поточну сторінку" на панелі інструментів.

Рис. 4.1.8. Сторінка опису атрибутів параметру AT101_1.

На цьому конфігурація збору даних вважається закінченою.

4.2 Обробка отриманих даних ТП

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

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

Для здійснення обчислень у модулі логічного рівня попередньо потрібно створити бібліотеку шаблонів нашого проєкту та шаблон параметру підсистеми "Збір даних" у ній. Для створення бібліотеки шаблонів відкриємо сторінку підсистеми "Збір даних" та, за посередництвом контекстного меню, створимо об'єкт бібліотеки шаблонів "start (Запуск)". Сторінка конфігурації отриманого об'єкту бібліотеки шаблону (Рис.4.2.1) містить розділ стану та оперативного управління "Стан" і розділ налаштувань "Конфігурація" у якому міститься тільки типові поля конфігурації та які залишимо незмінними. Загалом ми маємо:

Рис. 4.2.1. Сторінка конфігурації об'єкта бібліотеки шаблонів.

Для створення шаблону відкриємо сторінку ново-створеної бібліотеки шаблонів ("Start"->"Збір даних"->"Бібліотека шаблонів"->"Запуск") та, за посередництвом контекстного меню, створимо об'єкт шаблону airCooler (Повітряний холодильник). Сторінка конфігурації отриманого об'єкту шаблона (Рис.4.2.2) містить розділ стану та оперативного управління "Стан" і розділ налаштувань "Конфігурація" у якому містяться тільки типові поля конфігурації та які залишимо незмінними. Загалом ми маємо:

Рис. 4.2.2. Сторінка конфігурації об'єкту шаблона.

Основна конфігурація та формування шаблону параметра збору даних здійснюється у вкладці "ВВ" (Рис.4.2.3) шаблону. Детальний опис процесу формування шаблону можна отримати за посиланням.

У шаблоні створимо дві властивості для входів ("TiCod", "ToCod"), дві для виходів результату ("Ti","To") та один прозорий ("Cw"). Властивостям "TiCod", "ToCod" та "Cw" встановимо ознаку "Конфігурація" у Зв'язок, що дозволить підв'язувати до них "сире" джерело. Параметрам "Ti" та "To" ознаку "Атрибут" встановимо у Тільки читання, "Cw" у Повний доступ; для формування трьох атрибутів результатного параметру збору даних: два тільки на читання та один на повний доступ.

Встановимо мову програми у JavaLikeCalc.JavaScript, а програму у:

Ti = 150*TiCod/65536;
To = 100*ToCod/65536;
Рис. 4.2.3. Вкладка "ВВ" сторінки конфігурації об'єкту шаблону.

Збережемо отриманий шаблон та встановимо ознаку доступності (Рис.4.2.2).

Тепер створимо об'єкт контролера та параметри у модулі "LogicLev" підсистеми "Збір даних". Об'єкт контролера "LogicLev" та його параметри створюються ідентично раніше створеним у модулі "ModBus" на сторінці "Start"->"Збір даних"->"Модуль"->"Логічний рівень". Назвемо їх ідентично до об'єктів модуля "ModBus".

Об'єкт контролера модуля "LogicLev" (Рис.4.2.4) не має специфічних налаштувань та встановлені по замовченню можна не чіпати, окрім поля "Планування обчислення" яке встановимо у одну секунду. Перед доданням параметрів треба включити об'єкт контролера встановивши ознаку "Ввімкнено".

Рис. 4.2.4. Головна вкладка налаштування об'єкту контролера модуля "LogicLev".

Параметр об'єкту контролера модуля "LogicLev" (Рис.4.2.5) із специфічних налаштувань має "Тип" де треба встановити Логічний (std), а у полі "Шаблон параметру" обрати адресу створеного нами шаблону.

Рис. 4.2.5. Сторінка конфігурації параметру об'єкта контролера модуля "LogicLev".

Крім базової конфігурації параметру треба сконфігурувати й підключений шаблон (Рис.4.2.6). Вкладка конфігурації шаблону з'являється у режимі параметру "Ввімкнено". Увімкнути параметр можна увімкнувши попередньо об'єкт контролеру. Ознака "Показувати тільки атрибути" дозволяє встановлювати окремо кожний зв'язок (Рис.4.2.7). Оскільки ми у шаблоні передбачливо описали формат зв'язків у вигляді "Параметр|Ti", то всі три зв'язки можемо встановити просто вказавши адресу до параметру у об'єкті контролеру "ModBus". Вкажемо-оберемо адресу ModBus.CM101.AT101_1 та ModBus.CM101.AT101_2 у відповідних параметрах.

Треба відзначити, що всі поля вводу адрес об'єктів у OpenSCADA мають механізм набору адреси. Даний механізм передбачає поелементний вибір у процесі якого відбувається рух у глиб. Наприклад, при наборі адреси "ModBus.CM101.AT101_1", на початку ми будемо мати можливість обрання типу джерела даних серед яких буде "ModBus". Обравши пункт "ModBus" у перелік доступних елементів для обрання додадуться об'єкти контролеру модуля "ModBus" серед яких буде "ModBus.CM101". Обрання елементу "ModBus.CM101" додасть параметри контролеру і так далі до кінцевого елементу згідно ієрархії об'єктів. Для можливості повернення на рівні вище до переліку вибору вставляються елементи всіх вищестоящих рівнів від поточного значення адреси.

Рис. 4.2.6. Вкладка "Конфігурація шаблона" сторінки параметра контролера "LogicLev".
Рис. 4.2.7. Вкладка "Конфігурація шаблона" сторінки параметра контролера "LogicLev" із розворотом зв'язків.

Збережемо створені об'єкти контролеру та параметрів після чого запустимо об'єкт контролера на виконання встановивши ознаку "Виконується" у розділі "Стан". Якщо ми нічого не пропустили, то обчислення успішно запуститься та у полі "Статус" отримуємо схоже на рисунку 4.2.8.

Рис. 4.2.8. Сторінка об'єкту контролера при успішному його обчислені у модулі "LogicLev".

У випадку вдалої обробки коду шаблона у параметрах ми отримаємо оброблені дані у інфраструктурі (моделі даних) OpenSCADA. Побачити ці дані можна у вкладці "Атрибути" наших параметрів AT101_1 (Рис.4.2.9) та AT101_2.

Рис. 4.2.9. Сторінка атрибутів параметру AT101_1 модуля "LogicLev".

На цьому конфігурацію обробки даних вважаємо закінченою.

4.3 Комплексний об'єкт-тег сигналу

У попередніх розділах було описано механізм підключення джерела даних за об'єктом апарату — "Повітряний охолоджувач", який передбачає об'єднання всіх сигналів у одному об'єкті параметру джерела даних. Однак більш розповсюдженим підходом великої автоматизації є формування об'єкту параметру довкола окремого сигналу, наприклад — "Температура на виході холодильника AT101_1 (TE1314_1)", які часто називаються тегами.

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

Зазвичай для формування параметру на основі шаблону використовується модуль логічного рівня LogicLev, як це було описано у попередньому розділі. Однак низка модулів, у тому числі і ModBus, надають можливість одразу створювати логічні параметри на основі шаблону. Додамо нові параметри відкривши у конфігураторі сторінку нашого раніше створеного об'єкту контролера "ModBus" та у контекстному меню пункту "КМ 101 (CM101)" натиснемо "Додати".

Назвемо аналоговий параметр TE1314_1 (TE1314_1), (Рис.4.3.1). Тип параметру встановимо у Логічний (std), шаблон параметру оберемо base.anUnif, опис встановимо у Температура на виході AT101_1, встановимо ознаки "Вмикати" та "Ввімкнено". Далі нам треба налаштувати:

Рис. 4.3.1. Сторінка логічного параметру "TE1314_1" модуля "ModBus".
Рис. 4.3.2. Вкладка "Конфігурація шаблону" сторінки параметру "TE1314_1" модуля "ModBus".
Рис. 4.3.3. Вкладка "Атрибути" сторінки параметру "TE1314_1" модуля "ModBus".

Дискретний параметр назвемо CB102 (КК102). Тип параметру встановимо у Логічний (std), шаблон параметру оберемо base.digitBlockUnif, встановимо ознаки "Вмикати" та "Ввімкнено". Далі нам треба налаштувати:

Рис. 4.3.4. Вкладка "Конфігурація шаблону" сторінки параметру "CB102" модуля "ModBus".
Рис. 4.3.5. Вкладка "Атрибути" сторінки параметру "CB102" модуля "ModBus".

4.4 Отримання готових даних OpenSCADA — шлюзування

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

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

OpenSCADA передбачає можливість такої уніфікації через додання спорідненості з ПЛК. Та таку спорідненість можна забезпечити тільки для ПЛК які є цілком відкритими, на них встановлено відкрите-вільне ПЗ, а відтак можна встановити і OpenSCADA у ролі середовища виконання ПЛК. Як середовище виконання OpenSCADA може надавати дані ПЛК і стандартними протоколами, як то ModBus, та, для отримання цих даних прямо і без здійснення будь-яких дій над ними на боці SCADA-системи передбачено модуль "DAQGate", що фактично об'єднує моделі. Тобто, програміст ПЛК, який за сумісництвом є програмістом SCADA, формує модель даних ПЛК, а на рівні SCADA-системи вона використовується вже як готова, чим цілком прибирається стадія та роботи з отримання, обробки та формування моделі даних SCADA-системи. Більш того:

З метою демонстрації та ознайомлення створимо тут об'єкт контролеру модуля "DAQGate" для шлюзування даних нашого віртуального ПЛК. Створюється він ідентично до раніше створених об'єктів контролеру у модулі "ModBus" та "LogicLev" на сторінці "Start"->"Збір даних"->"Модуль"->"Шлюз джерел даних" та назвемо його AGLKS.

Об'єкт контролера модуля "DAQGate" (Рис.4.4.1) має наступні специфічні налаштування які ми маємо здійснити:

Рис. 4.4.1. Головна вкладка налаштування об'єкту контролера модуля "DAQGate".

Якщо все зроблено правильно, то автоматично створяться параметри обраного контролера та ми зможемо поглянути на дані по них у вкладці "Атрибути" (Рис.4.4.2).

Рис. 4.4.2. Вкладка "Атрибути" сторінки параметру модуля "DAQGate".

4.5 Архівування-історія даних ТП

Отримані вище дані вважаються поточними, тобто такими які періодично оновлюються та характеризують значення параметру ТП на поточний момент часу. При цьому, раніше зчитані значення втрачаються при перезапису їх поточним, тобто відсутня їх історія. У багатьох-же завданнях потрібне ведення архіву-історії прочитаних значень параметрів ТП для чого у OpenSCADA передбачена підсистема "Архіви-Історія" де нам потрібно створити архіватори значень та повідомлень, для порушень, і вказати наші параметри для архівації їх значень там.

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

Почнемо з архівації значень для якої необхідно створити хоча-б один архіватор для потрібного типу сховища та періодичністю значень. Загалом OpenSCADA містить два модулі архівації: на файлову систему "FSArch" та на базу даних "DBArch". Тут ми розглянемо лише модуль архівації на файлову систему як найбільш універсальний та ефективний. Стосовно періодичності значень для "якісного" архіватору, то її переважно необхідно обирати за періодичністю значень самого повільного джерела даних у нашій системі, який у нас один та періодичність ми йому вказали 1 секунда. Для створення архіватору значень відкриємо сторінку модуля архівування ("Start"->"Архіви-Історія"->"Модуль"->"Архіватор на файлову систему") та за посередництва контекстного меню створимо об'єкт архіватору значень 1s. Зверніть увагу на значення поля "Тип елементу" діалогу створення, яке має бути Архіватор значень! Сторінка конфігурації отриманого об'єкта архіватору значень (Рис.4.5.1) містить розділ стану та оперативного управління "Стан", розділ налаштувань "Конфігурація" та розділ специфічних налаштувань архіватору цього модуля "Додаткові опції". Загалом ми маємо:

Рис. 4.5.1. Конфігурація архіватору значень "1s" на файлову систему.

Одного "якісного" архіватору вже достатньо для більшості завдань, але якщо ви плануєте будувати графіки-тренди значень та звітні документи на велику глибину (доби, тижні, місяці), то потрібно створити ще пару архіваторів з більшою періодичністю значень. Інакше побудова графіків та документів буде тривалою та/або буде обрізатися за лімітами часу виконання! Зазвичай у якості таких додаткових архіваторів створюються, та ви маєте їх створити ідентично інструкції для "якісного" архіватора вище:

Новостворені проєкти OpenSCADA вже містять шаблони таких стандартних архіваторів, тому ви можете просто включити потрібні.

Для включення архівування атрибутів "Ti" та "To" параметрів AT101_1 та AT101_2 у раніше створеному об'єкті контролеру модуля "LogicLev", достатньо у вкладці "Архівація" сторінки параметрів обрати які саме атрибути архівувати та якими архіваторами (Рис.4.5.2). Оберемо архівацію атрибутів "Ti" та "To" раніше створеними архіваторами FSArch.1s, FSArch.1m, FSArch.1h. Те саме зробимо для атрибуту "var" аналогового параметру "ModBus.CM101.TE1314_1" та "com" дискретного параметра "ModBus.CM101.CB102".

Рис. 4.5.2. Вкладка "Архівація" параметру AT101_1 модуля "LogicLev".

У результаті цієї операції буде автоматично створено об'єкти архівів для обраних атрибутів. Приклад об'єкту архіву для атрибуту "Ti" параметру AT101_1 представлено на рисунку 4.5.3.

Рис. 4.5.3. Сторінка об'єкта архіву атрибуту "Ti" параметру AT101_1.

Зазвичай налаштування архіву міняти не треба, однак якщо буде потрібна особлива конфігурація, то її можна зробити на вказаній вище сторінці. Частіше може знадобитися отримання інформації про архів. Наприклад, дізнатися розмір архіву як за часом, так і на носії, а також поглянути на графік параметру (Рис.4.5.4).

Рис. 4.5.4. Вкладка "Значення" сторінки об'єкта архіву атрибута "Ti" параметра AT101_1.

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

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

Відповідно і створимо архіватор повідомлень для архівації порушень, для чого відкриємо сторінку модуля архівування ("Start"->"Архіви-Історія"->"Модуль"->"Архіватор на файлову систему") та за посередництвом контекстного меню створимо об'єкт архіватору повідомлень alarms (Порушення). Зверніть увагу на значення поля "Тип елементу" діалогу створення, яке має бути Архіватор повідомлень! Сторінка конфігурації отриманого об'єкта архіватору значень (Рис.4.5.5) містить розділ стану та оперативного управління "Стан", розділ налаштувань "Конфігурація" та розділ специфічних налаштувань архіватору цього модуля "Додаткові опції". Загалом ми маємо:

Рис. 4.5.5. Конфігурація архіватору повідомлень "alarms" на файлову систему.

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

Новостворені проєкти OpenSCADA вже містять шаблони таких стандартних архіваторів, тому ви можете просто включити потрібні.

5 Формування візуального представлення

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

ПЕРШИЙ РІВЕНЬ вимагає мінімальної кваліфікації користувача, але передбачає наявність бібліотек шаблонних кадрів потрібних для вирішення його завдання. У межах першого рівня користувачу достатньо знати як підключити динаміку до сторінок шаблонних кадрів та як додати нові сторінки шаблонних кадрів.

ДРУГИЙ РІВЕНЬ передбачає додаткову навичку — створювати нові кадри на основі готових-комплексних елементів шляхом простого їх розташування у області кадру. Для забезпечення цього кваліфікаційного рівня користувачу знадобляться бібліотеки комплексних елементів необхідні для вирішення його завдання.

ТРЕТІЙ РІВЕНЬ передбачає володіння всіма інструментами середовища розробки візуальних інтерфейсів OpenSCADA включно зі створенням нових комплексних елементів та розробку інтерфейсів користувача у проєкті.

Всі дії із інтерфейсом візуалізації будемо виконувати у оточені модуля "Vision" підсистеми "Користувацькі інтерфейси". Для відкриття вікна інтерфейсу "Vision" натиснемо другу іконку праворуч панелі інструментів конфігуратору. У результаті отримаємо вікно раніше представлене на рисунку 3.3.1.3.

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

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

Скопіюємо проєкт "Групи сигналізації (шаблон)" натиснувши спочатку кнопку "Копіювати візуальний елемент" на ньому, а потім кнопку "Вставити візуальний елемент" (Рис.5.1). У діалозі назвемо наш новий проєкт start (Старт) та у переліку проєктів отримаємо пункт нашого нового проєкту (Рис.5.1).

Рис. 5.1. Копіювання шаблонного проєкту у новий.

Перед використанням та збереженням нового проєкту (Рис.5.3) необхідно змінити адресу його сховища на Загальний Сховок *.*, що ми можемо зробити на головній сторінці діалогу властивостей візуального елементу який викликається за кнопкою "Властивості візуального елементу" (Рис.5.2). Після чого збережемо наш новий проєкт натиснувши третю кнопку ліворуч панелі інструментів.

Рис. 5.2. Властивості нового проєкту на основі шаблонного.

Шаблонний проєкт (Рис.5.3) містить дві гілки: "Панелі управління" та "Коренева сторінка". Гілка "Панелі управління" містить набір кадрів типових панелей управління та спеціалізованих кадрів. Гілка "Коренева сторінка", з кореневою сторінкою у основі, містить підгілки об'єктів сигналізації "Група 1", "Група 2" та окрему гілку зведених графіків "Зведені графіки". Підгілки об'єктів сигналізації "Група {n}" мають цифровий ідентифікатор та можуть розширятися доданням упритул до стількох, назви скількох помістяться нагорі у два ряди. Присутність підгілки "Група {n}" відбивається на активації відповідної кнопки об'єкта сигналізації кореневої сторінки, що дозволяє на них перемикатися. Кожна підгілка "Група {n}" містить контейнери або шаблони видів відображення, зазвичай: "Мнемосхеми", "Групи графіків", "Групи контурів", "Групи оглядових кадрів" та "Документи". Наявність сторінок у контейнерах відображень вмикає можливість обрання цього відображення для відповідного об'єкта сигналізації кореневої сторінки. Детальніше ознайомитися зі структурою кореневої сторінки можна за посиланням.

Рис. 5.3. Шаблонний проєкт на основі концепції об'єктів сигналізації.

5.1 Додання шаблонної сторінки та підключення динаміки

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

Рис. 5.1.1. Шаблонна сторінка "Група графіків".

Шаблонна сторінка "Група графіків" надає можливість підключити до восьми сигналів одночасного їх відображення на графіку. Елементи відображення значення нагорі автоматично приховуються для невстановлених зв'язків.

Створимо нову групу графіків у шаблонному контейнері "Група графіків" першої групи кореневої сторінки. Для цього у контекстному меню пункту "Група графіків" оберемо пункт меню "Додати візуальний елемент" (Рис.5.1.2). Для вводу ідентифікатору та назви нового візуального елемента з'явиться діалог їх введення (Рис.5.1.3). Введемо ідентифікатор "2" та ім'я "Графіки 2" — 2 (Графіки 2).

Рис. 5.1.2. Додання групи графіків "Графіки 2".
Рис. 5.1.3. Діалог введення ідентифікатору та ім'я.

Після підтвердження вводу назви буде створено нову сторінку. Однак для її активації нам знадобиться її ввімкнути. Ввімкнути сторінку можна у діалозі редагування властивостей сторінки (Рис.5.1.4). Відкрити цю сторінку можна шляхом обрання пункту меню "Властивості візуального елементу" у контекстному меню щойно створеної сторінки. Створити сторінку у логічному контейнері на основі шаблону можна й звичайним копіюванням шаблону у самого себе, а також копіюванням іншої сторінки цього контейнеру, але вже й зі зв'язками.

Рис. 5.1.4. Діалог редагування властивостей візуального елементу.

Після включення сторінки можна приступати до встановлення зв'язків на створені раніше параметри контролерів. Для цього, не покидаючи діалогу редагування властивостей щойно створеної сторінки (Рис.5.1.4), перейдемо до вкладки "Зв'язки" (Рис.5.1.5). На цій вкладці ми побачимо дерево з елементами "el1" ... "el8". Розгорнувши будь-який з елементів ми побачимо гілку "Parameter" та саме у ній ми маємо вказати або обрати адресу наших атрибутів "Ti" та "To". Загалом заповнимо чотири елементи та під час цього частину властивостей треба вказувати як постійні:

Якщо у шаблоні параметру контролера заздалегідь передбачити наявність атрибутів, вказаних нами постійними, то можна буде вказувати лише параметр та атрибути розставляться автоматично. Це можемо побачити прив'язавши створений нами раніше комплексний об'єкт-тег аналогового сигналу "ModBus.CM101.TE1314_1".

Рис. 5.1.5. Вкладка "Зв'язки" діалогу редагування властивостей візуального елементу.

Закінчивши введення зв'язків можемо перевірити що вийшло у результаті наших зусиль. Для цього закриємо вікно діалогу властивостей та запустимо наш проєкт "Старт" на виконання, про кнопку запуску ми пам'ятаємо з перших глав. Далі оберемо графіки та перемкнемося на другу сторінку. За безпомилкової конфігурації маємо побачити щось подібне до зображеного на рисунку 5.1.6. Зауважте, що для параметру комплексного об'єкту-тегу зі встановленими границями порушень, вихід значення за границі відзначається аварійним кольором. Для того, щоб побачити вихід за границю порушення ви можете встановити значення продуктивності вентилятора у 100 (Рис.4.2.9).

Рис. 5.1.6. Група графіків з підключенням чотирьох сигналів та одним параметром об'єкту-тегу.

5.2 Створення нового кадру — мнемосхеми

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

Нові кадри, призначені надалі до розташування у проєкті, прийнято створювати та змінювати у бібліотеці віджетів. Створимо нову бібліотеку віджетів обравши вертикальну вкладку "Віджет" та у контекстному меню вікна бібліотек віджетів оберемо пункт меню "Нова бібліотека" (Рис.5.2.1). У діалозі вводу назви вкажемо CM101 (KM 101).

Рис. 5.2.1. Додання нової бібліотеки віджетів.

Далі додаємо новий кадр обравши пункт меню "Бібліотека: originals"->"Група елементів" (Рис.5.2.2) у контекстному меню створеної бібліотеки "KM 101". У діалозі вводу назви вкажемо AT101 (AT 101). У основі будь-якого кадру та сторінки має лежати елемент "Група елементів (Box)" тому ми його й обрали.

Рис. 5.2.2. Додання нового кадру.

Одразу після створення нового кадру треба встановити його базові властивості характерні для кадру мнемосхеми. Властивості або атрибути будь якого візуального елементу можна вказати у панелі інструментів "Атрибути", попередньо обравши потрібний візуальний елемент. Оберемо створений кадр "AT 101" та встановимо наступні властивості:

У результаті отримаємо порожній кадр (Рис.5.2.3) готовий для додання елементів на нього. Для графічного редагування або перегляду вигляду кадру треба обрати пункт "Редагувати візуальний елемент" у контекстному меню кадру.

Рис. 5.2.3. Вигляд нового кадру та встановлених атрибутів мнемосхеми.

Тепер на кадр додамо елементи відображення значень аналогового параметру для наших чотирьох сигналів та параметру комплексного об'єкта-тегу "ModBus.CM101.TE1314_1". Для розташування елементу відображення аналогового сигналу на мнемосхему треба її обрати, а потім, у меню вікна, обрати пункт меню "Віджет"->"Бібліотека: Main"->"Відображення аналогового"; після чого з'явиться курсор з образом цього елементу який треба підвести у бажану область мнемосхеми та натиснути ліву кнопку миші. У момент додання з'явиться діалог із запитом ім'я нового елементу. Подібним чином додавати будемо п'ять елементів які назвемо: A1_Ti, A1_To, A2_Ti, A2_To та TE1314_1.

Таким-же чином додамо елемент крану комплексного об'єкту-тегу дискретного параметра "ModBus.CM101.CB102" для представлення якого використаємо бібліотечний елемент "Віджет"->"Бібліотека: mnEls"->"Кран кульовий" та назвемо його CB102.

Для відображення переліку поточних порушень на мнемосхемі розташуємо елемент протоколу з бібліотеки примітивів "Віджет"->"Бібліотека: originals"->"Протокол" та назвемо його Protocol. У інспекторі атрибутів встановимо властивості протоколу:

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

Після виконання всіх маніпуляцій ми маємо отримати мнемосхему з виглядом схожим на рисунок 5.2.4.

Рис. 5.2.4. Вигляд мнемосхеми з низкою елементів.

На цьому процедуру створення мнемосхеми будемо вважати закінченою. Збережемо нову бібліотеку віджетів "KM 101" та приступимо до етапу розташування нашої мнемосхеми у дереві проєкту "Старт".

Розташуємо нашу мнемосхему у гілці "Старт"->"Коренева сторінка"->"Група 1"->"Мнемосхеми" шляхом обрання пункту меню "Бібліотека: CM101"->"AT 101" у контекстному меню пункту сторінки проєкту "Мнемосхеми". Ідентифікатор нової мнемосхеми встановимо у "2" при цьому поле ім'я залишимо порожнім — 2.

Далі необхідно здійснити вже знайому нам з попередньої глави операцію, а саме — встановлення зв'язків на раніше створені параметри контролерів. Для цього відкриємо вкладку "Зв'язки" (Рис.5.2.5) діалогу редагування властивостей мнемосхеми, де ми побачимо дерево з елементами "A1_Ti", "A1_To", "A2_Ti" та "A2_To". Розгорнувши будь-який з елементів ми побачимо гілку "Parameter" у якій ми маємо вказати або обрати адресу значень наших атрибутів "Ti" та "To" відповідно. У процесі заповнення елементів частину властивостей треба вказувати постійними:

Як і у випадку з групою графіків у попередньому розділі для комплексних параметрів об'єкту-тегу "ModBus.CM101.TE1314_1" та "ModBus.CM101.CB102" можна вказати тільки параметр, а атрибути розставляться автоматично.

Рис. 5.2.5. Вкладка "Зв'язки" діалогу редагування властивостей мнемосхеми.

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

Рис. 5.2.6. Мнемосхема з чотирма підключеними сигналами, комплексними параметрами об'єкту-тегу та протоколом.

Зауважте, що вихід значення комплексного параметру об'єкта-тегу за границі порушень відзначається миготінням через аварійний колір для: параметру, об'єкту сигналізації та жовтого кола внизу. Крім миготіння при порушенні здійснюється монотонна сигналізація (часто на бузер) та синтез мови з промовою позиції параметру вказаної у полі зв'язку "spName" (Рис.5.2.5) якщо доступний відповідний синтезатор мови. При активації порушення праворуч та праворуч-внизу активуються кнопки з індикацією типу повідомлення, а по натисканню на них здійснюється квітація-стишення відповідного типу повідомлення. По натиску на миготливе жовте коло праворуч-знизу квитуються-стишуються всі повідомлення. Факт присутності порушення також відображається записом у протоколі який ми додали. Щоб побачити вихід за границю порушення ви можете встановити значення продуктивності вентилятору у 100 (Рис.4.2.9). Детальніше про концепцію роботи з порушеннями можна почитати у "Як зробити Порушення, сигналізація та повідомлення".

Історію порушень можемо переглянути у документі "Протокол порушень" який доступний при обрані виду "Документ" (Рис.5.2.7).

Рис. 5.2.7. Документ "Протокол порушень".

Дискретний комплексний параметр об'єкту-тегу "ModBus.CM101.CB102", представлений нами у вигляді кульового крану, є активним. Тобто його можна обрати отримавши панель управління праворуч (Рис.5.2.6), а також передати команди (відкрити або закрити). Команди можна передавати з панелі управління або через контекстне меню. Всі дії оператора з керуючого впливу протоколюються та документ протоколу можна переглянути при обрані виду "Документ" (Рис.5.2.8).

Рис. 5.2.8. Документ "Протокол втручань".

5.3 Створення нового комплексного елемента

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

5.3.1 Створення віджета "Повітряний холодильник" на основі примітива "Елементарна фігура"

Віджет будемо створювати у раніше нами створеній бібліотеці "КМ 101". Для цього клацаємо правою кнопкою маніпулятору "миші" по пункту цієї бібліотеки та обираємо пункт меню "Бібліотека: originals"->"Елементарна фігура" як це показано на рисунку 5.3.1.1 та називаємо новий елемент air_cooler (Повітряний холодильник).

Рис. 5.3.1.1. Додання віджету до бібліотеки "KM 101" на основі примітиву "Елементарна фігура".

Після підтвердження з'явиться новий віджет з ім'ям "Повітряний холодильник". Оберемо його у переліку віджетів бібліотеки "KM 101" та відкриємо для редагування за посередництвом контекстного меню нового елемента (Рис.5.3.1.2). У інспекторі атрибутів встановимо властивості:

Рис. 5.3.1.2. Первинна конфігурація віджету.

Тепер зобразимо візуальне представлення віджета, що можна здійснити двома способами:

Додаткову інформацію про редактор можна отримати тут.

Рис. 5.3.1.3. Вхід у режим рисування віджета заснованого на примітиві "Елементарна фігура".

У нашому прикладі ми скористаємося другим способом. Для чого у полі "Перелік елементів" інспектору атрибутів введемо нижчезазначений перелік та натиснемо "Ctrl"+"Enter":

line:(20|80):(100|20)
line:(100|20):(180|80)
line:(180|80):(100|140)
line:(100|140):(20|80)
line:(100|20):(100|140)
line:(20|80):(180|80)
line:(50|165):(100|140)
line:(100|140):(150|165)
line:(150|165):(50|165)
fill:(20|80):(100|20):(180|80):(100|140)
fill:(50|165):(100|140):(150|165)

У нашому випадку всі точки вказано статично оскільки не передбачено динамізації та зміни координат у режимі виконання, та всі інші параметри залишено по замовченню. Відтак, наш віджет набуде вигляду на рисунку 5.3.1.4.

Рис. 5.3.1.4. Зображення, що відповідає "Переліку елементів" віджету.

Створимо іконку нашого віджета яку буде видно у дереві віджетів бібліотеки "KM 101" (Рис.5.3.1.5).

Рис. 5.3.1.5. Створення іконки віджета.

На цьому процес створення першого віджета можна вважати завершеним. Перейдемо до етапу компонування та створення фінального віджету.

5.3.2 Створення фінального-скомпонованого віджету "Холодильник" на основі примітиву "Група елементів"

Фінальний віджет будемо створювати у бібліотеці "KM 101", для чого клацаємо правою кнопкою маніпулятору "миша" по цій бібліотеці та обираємо примітив "Група елементів" як це показано на рисунку 5.3.2.1. Назвемо новий елемент — elCooler (Холодильник).

Рис. 5.3.2.1. Додання віджету до бібліотеки "KM 101" на основі примітиву "Група елементів".

Після підтвердження з'явиться новий віджет з ім'ям "Холодильник". Оберемо його у переліку віджетів бібліотеки "KM 101" та відкриємо для редагування. У інспекторі атрибутів встановимо властивості:

Візьмемо раніше створений елемент "Повітряний холодильник (air_cooler)" та перетягнемо його — натиснемо на ньому ліву кнопку маніпулятору "миша" та пересунемо курсор до області щойно створеного виджета де відпустимо кнопку (Рис.5.3.2.2).

Рис. 5.3.2.2. Перетягнення (Drag&Drop) віджету "air_cooler" у віджет-контейнер "elCooler".

У результаті з'явиться вікно діалогу з пропозицією ввести ідентифікатор та ім'я нового виджета. Ідентифікатор та ім'я можуть бути задані довільно. Ми введемо ідентифікатор air_cooler та ім'я залишимо порожнім і воно успадкується від батька — елемента "air_cooler". Таким чином щойно створений віджет всередині контейнеру "elCooler" успадкує елемент "Повітряний холодильник (air_cooler)". Після підтвердження вводу ідентифікатору та ім'я віджет "Повітряний холодильник (air_cooler)" додасться до нашого віджету-контейнеру "elCooler" (Рис.5.3.2.3). У інспекторі атрибутів встановимо для нього властивості:

Рис. 5.3.2.3. Додання успадкованого віджету "air_cooler".

Далі розгорнемо пункт меню бібліотеки "Елементи мнемосхеми", знайдемо там елемент "Вентилятор 2 (cooler2)" та перетягнемо його на віджет-контейнер. Цей елемент буде динамічно відображати інтенсивність роботи повітряного холодильника. Для нового віджета введемо ідентифікатор cooler2 та ім'я знову залишимо порожнім, після чого віджет "Вентилятор 2 (cooler2)" додасться до нашого віджета-контейнеру "elCooler". Таким чином щойно створений віджет всередині контейнеру "elCooler" успадкує елемент бібліотеки "Елементи мнемосхеми" — "Вентилятор 2 (cooler2)". У інспекторі атрибутів встановимо властивості:

Рис. 5.3.2.4. Зміна прозорості кольору заповнення успадкованого віджету "cooler2".

Тепер у віджеті-контейнері "elCooler" додамо два текстових поля заснованих на примітиві "Текст", з метою відображення вхідної та вихідної температури потоку. Для цього виділимо віджет "Холодильник" та, на панелі візуальних елементів бібліотеки "KM 101", оберемо пункт меню примітиву "Текст" як це показано на рисунку 5.3.2.5. Для першого текстового поля введемо ідентифікатор Ti та, у інспекторі атрибутів, встановимо властивості:

%1
град.C
Рис. 5.3.2.5. Додання нового елемента заснованого на примітиві "Текст".
Рис. 5.3.2.6. Указання геометрії віджета "Ti".
Рис. 5.3.2.7. Зміна розміру шрифту для віджета "Ti".
Рис. 5.3.2.8. Зміна поля "Текст" та вказання наявності аргументу, для віджета "Ti".
Рис. 5.3.2.9. Конфігурація аргументу віджета "Ti".

Тепер, з метою створення аналогічного віджета для вихідної температури, скопіюємо віджет "Ti". Вставимо скопійований віджет та вкажемо йому ідентифікатор To (Рис.5.3.2.10). У інспекторі атрибутів встановимо властивості:

Рис. 5.3.2.10. Віджет "To".

Тепер додамо віджет заснований на примітиві "Елемент форми" (Рис.5.3.2.11) який будемо використовувати для обрання завдань продуктивності холодильника. Вкажемо ідентифікатор cw (Рис.5.3.2.12) та у інспекторі атрибутів встановимо властивості:

0
50
100
150
200
Рис. 5.3.2.11. Додання віджета заснованого на примітиві "Елемент форми".
Рис. 5.3.2.12. Заповнення параметрів ComboBox "cw".

Для відображення одиниці виміру продуктивності холодильника додамо ще один віджет заснований на примітиві "Текст". Робимо ту-ж процедуру, що й для віджета "Ti". Вкажемо ідентифікатор dimension (Рис.5.3.2.13) та у інспекторі атрибутів встановимо властивості:

Рис. 5.3.2.13. Додання віджету "dimension" заснованого на примітиві "Текст" та зміна його параметрів.

Для додання логіки обробки віджету "Холодильник (elCooler)" відкриємо діалог редагування властивостей цього візуального елемента та перейдемо до вкладки "Обробка". На цій вкладці побачимо дерево атрибутів віджету та поле тексту програми обробки атрибутів. Для вирішення нашого завдання треба додати три атрибуту: Ti, To, Cw (Рис.5.3.2.14); для чого треба розгорнути кореневий елемент ".", обрати будь-який елемент всередині нього та натиснути кнопку "Додати атрибут" знизу.

Далі ввімкнемо на обробку атрибут value комбобоксу "cw" як це показано на рисунку 5.3.2.15. Аналогічно ввімкнемо на обробку атрибут arg0val для Ti и To, а також атрибут speed елементу "cooler2".

Рис. 5.3.2.14. Додання трьох атрибутів елементу "elCooler" бібліотеки "KM 101".
Рис. 5.3.2.15. Включення на обробку атрибуту "value" комбобоксу "cw".

На завершення встановимо мову користувацького програмування "JavaLikeCalc.JavaScript" та напишемо саму цю програму обробки віджета:

Ti_arg0val = Ti;
To_arg0val = To;

for(ev_rez = "", off = 0; (ev_wrk=event.parse(0,"\n",off)).length; )
    if(ev_wrk == "ws_CombChange:/cw") Cw = cw_value;
    else ev_rez += ev_wrk+"\n";
event = ev_rez;

cw_value = Cw;
cooler2_speed = Cw/5;

At.png Розташування або редагування програми віджету не призводить до безпосередньої її компіляції, тобто не буде повідомлень про помилки у програмі якщо вони мають місце бути. Це пов'язано з тим, що безпосереднє виконання програми, а відтак і її компіляція, здійснюється у оточені виконання та у момент запуску проєкту візуалізації на виконання. При цьому всі помилки, що виникли при компіляції, виводяться у вигляді повідомлень OpenSCADA та віджети з помилками не виконуються. Детальніше про налагодження користувацьких процедур можна почитати у "Як зробити Налагодження проєкту OpenSCADA".

Отримана вкладка "Обробка" віджету "elCooler" бібліотеки "KM 101" матиме вигляд показаний на рисунку 5.3.2.16.

Рис. 5.3.2.16. Результуюча вкладка "Обробка" віджету "elCooler" бібліотеки "KM 101".

Закриємо діалог редагування властивостей візуального елемента, створимо іконку нашого елемента, закриємо внутрішнє вікно редагування та збережемо це все.

На цьому розробку комплексного елемента можна вважати закінченою.

5.3.3 Додання комплексного елементу на мнемосхему

Для перевірки працездатності та оцінки результатів наших зусиль додамо створений віджет на мнемосхему розроблену у розділі 5.2. Виконаємо цю операцію для двох холодильників "AT101_1" та "AT101_2".

Для цього відкриємо кадр мнемосхеми "AT 101" на редагування. Хапаємо "мишею" наш комплексний елемент та тягнемо на мнемосхему де відпускаємо у потрібній позиції. Вводимо ідентифікатори AT101_1 та AT101_2 відповідно. Додані елементи розташовуємо як нам зручно. Після виконання цих маніпуляцій маємо отримати мнемосхему з виглядом на рисунку 5.3.3.1.

Рис. 5.3.3.1. Мнемосхема з нашими комплексними елементами.

Збережемо нову мнемосхему та закриємо її вікно. Далі перейдемо до проєкту та відкриємо цю мнемосхему у дереві проєкту "Старт"->"Коренева сторінка"->"Група 1"->"Мнемосхеми"->"AT 101". Як можна зауважити, наші нові елементи з'явилися тут автоматично та нам залишилося лише підключити зв'язки до них. Для цього відкриємо діалог редагування властивостей мнемосхеми на вкладці "Зв'язки" (рис.5.3.3.2). На цій вкладці ми побачимо дерево з елементами "AT101_1" та "AT101_2", розгорнувши будь-який ми побачимо гілку "Параметр" з атрибутами "Ti", "To" та "Cw". Таким чином у полі "Параметр" ми можемо просто вказати адресу параметра prm:/LogicLev/CM101/AT101_1 та prm:/LogicLev/CM101/AT101_2 відповідно, а атрибути буде розставлено автоматично.

Рис. 5.3.3.2. Вкладка "Зв'язки" діалогу редагування властивостей мнемосхеми.

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

Рис. 5.3.3.3. Результуюча мнемосхема.

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

6 Висновок

Таким чином ми отримали повноцінний типовий інтерфейс технологічного процесу (ТП) з реальним збором даних у різний спосіб, а відтак отримали уявлення та навички роботи з OpenSCADA.

При побудові інтерфейсу ТП ми розглянули всі три рівні складності, а відтак і отримано уявлення про потрібний кваліфікаційний рівень програміста SCADA.

Збір та обробку даних ми розглянули та здійснили у різні способи від простого-типового та до відображення моделі даних ПЛК побудованого на основі OpenSCADA. Тобто, отримано уявлення про джерела даних SCADA-систем та доступу до них за допомогою мережевих інтерфейсів і протоколів обміну, підтримку яких реалізують відповідні модулі OpenSCADA.

І звісно, ми розглянули методи розповсюдження (дистрибуції) OpenSCADA, способи її встановлення та отримання потрібного оточення як то: серверу SCADA, ПЛК OpenSCADA та робочого місця оператору.

Інформація про OpenSCADA цим документом не обмежується та у вирішені специфічних питань ви маєте використовувати всю доступну документацію і приклади демонстраційних конфігурацій-моделей OpenSCADA, користуючись тим самим перевагами "відкритих вихідних текстів (OpenSource)". Окремо тут треба ще раз відзначити "Посібник по програмі", "Як зробити ..." та "Динамічну модель реального часу АГЛКС" як більш повні джерела інформації про OpenSCADA.

7 Посилання

Documents/Quick_start/uk - GFDLMay 2022OpenSCADA 0.9.5