Export translations
Views
Special page
From OpenSCADAWiki
Jump to:
navigation
,
search
Settings
Group
About
Documents
Documents/API
Documents/DAQ
Documents/FAQ
Documents/How to
Documents/How to/Build from source
Documents/How to/Crash report
Documents/How to/Create module
Documents/How to/Create multi language project
Documents/How to/Cyclic programming
Documents/How to/Debug
Documents/How to/Install
Documents/How to/Live disk
Documents/How to/Release
Documents/How to/Transferring project configuration
Documents/How to/Violations, alarms and notifications
Documents/Program manual
Documents/Quick start
Documents/Release 0.8.0
Documents/Release 0.8.0/Update10
Documents/Release 0.8.0/Update11
Documents/Release 0.8.0/Update12
Documents/Release 0.8.0/Update13
Documents/Release 0.8.0/Update14
Documents/Release 0.8.0/Update15
Documents/Release 0.8.0/Update16
Documents/Release 0.8.0/Update17
Documents/Release 0.8.0/Update18
Documents/Release 0.8.0/Update19
Documents/Release 0.8.0/Update20
Documents/Release 0.8.0/Update3
Documents/Release 0.8.0/Update4
Documents/Release 0.8.0/Update5
Documents/Release 0.8.0/Update6
Documents/Release 0.8.0/Update7
Documents/Release 0.8.0/Update8
Documents/Release 0.8.0/Update9
Documents/Release 0.9
Documents/Release 0.9/Update 7
Documents/Release 0.9/Update1
Documents/Release 0.9/Update2
Documents/Release 0.9/Update3
Documents/Release 0.9/Update4
Documents/Release 0.9/Update5
Documents/Release 0.9/Update6
Documents/Release 0.9/Updating 0.8.0 LTS
Documents/Terms
Documents/User API
Functions and demands
Home
Libs
Libs/Devices
Libs/Documents
Libs/Electrical elements
Libs/Generic list
Libs/LowLevelDevices
Libs/Main
Libs/Main graphical elements
Libs/Mnemo elements
Libs/Prescriptions
Libs/Regulation elements
Libs/Service procedures
Libs/Technological apparatuses
Modules
Modules/BFN
Modules/BlockCalc
Modules/Comedi
Modules/DAQGate
Modules/DBArch
Modules/DBF
Modules/DBGate
Modules/DCON
Modules/DiamondBoards
Modules/FireBird
Modules/FLibComplex1
Modules/FLibMath
Modules/FLibSYS
Modules/FSArch
Modules/GPIO
Modules/HTTP
Modules/ICP DAS
Modules/JavaLikeCalc
Modules/LDAP
Modules/LogicLev
Modules/ModBus
Modules/MySQL
Modules/OPC UA
Modules/PostgreSQL
Modules/QTCfg
Modules/QTStarter
Modules/SelfSystem
Modules/Serial
Modules/Siemens
Modules/SMH2Gi
Modules/SNMP
Modules/Sockets
Modules/SoundCard
Modules/SQLite
Modules/SSL
Modules/System
Modules/SystemTests
Modules/UserProtocol
Modules/VCAEngine
Modules/Vision
Modules/WebCfg
Modules/WebCfgD
Modules/WebUser
Modules/WebVision
Sub-projects
Sub-projects/Automatic Builder of OpenSCADA
Sub-projects/Automation Linux distributive
Sub-projects/Embedding and PLC
Sub-projects/Server
Sub-projects/VCA
User:RomanSavochenko
Using
Using/HouseSpirit
Using/Kramatorsk Ball Mills
Using/Kramatorsk Water
Using/Model AGLKS
Using/Model Boiler
Using/OpenWrt TELEOFIS RTU968
Using/Yaroslavskij broiler
Works
Works/Road map
Works/Technical Support
Works/Technical Support/Agreement
Works/To do
Language
aa - Afar
ab - Abkhazian
ace - Achinese
ady - Adyghe
ady-cyrl - адыгабзэ
aeb - Tunisian Arabic
aeb-arab - تونسي
aeb-latn - Tûnsî
af - Afrikaans
ak - Akan
aln - Gheg Albanian
am - Amharic
an - Aragonese
ang - Old English
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - تۆرکجه
ba - Bashkir
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba
bcc - Southern Balochi
bcl - Bikol Central
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bg - Bulgarian
bgn - Western Balochi
bho - Bhojpuri
bi - Bislama
bjn - Banjar
bm - Bambara
bn - Bengali
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
bto - Iriga Bicolano
bug - Buginese
bxr - буряад
ca - Catalan
cbk-zam - Chavacano de Zamboanga
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cr - Cree
crh - Crimean Turkish
crh-cyrl - Crimean Turkish (Cyrillic script)
crh-latn - Crimean Turkish (Latin script)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - डोटेली
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
ff - Fulah
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gag - Gagauz
gan - Gan Chinese
gan-hans - Simplified Gan script
gan-hant - Traditional Gan script
gd - Scottish Gaelic
gl - Galician
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
got - Gothic
grc - Ancient Greek
gsw - Swiss German
gu - Gujarati
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
ht - Haitian Creole
hu - Hungarian
hy - Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kbd - Kabardian
kbd-cyrl - Адыгэбзэ
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - 한국어 (조선)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ku - Kurdish
ku-arab - كوردي (عەرەبی)
ku-latn - Kurdish (Latin script)
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - лакку
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Maori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mo - молдовеняскэ
mr - Marathi
mrj - Western Mari
ms - Malay
mt - Maltese
mus - Creek
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Min Nan Chinese
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
niu - Niuean
nl - Dutch
nl-informal - Nederlands (informeel)
nn - Norwegian Nynorsk
nov - Novial
nrm - Nouormand
nso - Northern Sotho
nv - Navajo
ny - Nyanja
oc - Occitan
olo - Livvi-Karelian
om - Oromo
or - Oriya
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rm - Romansh
rmy - Romani
rn - Rundi
ro - Romanian
roa-tara - tarandíne
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
sa - Sanskrit
sah - Sakha
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
shi - Tachelhit
shi-latn - Tašlḥiyt
shi-tfng - ⵜⴰⵛⵍⵃⵉⵜ
si - Sinhala
sk - Slovak
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
su - Sundanese
sv - Swedish
sw - Swahili
szl - Silesian
ta - Tamil
tcy - Tulu
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tn - Tswana
to - Tongan
tokipona - Toki Pona
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - ўзбекча
uz-latn - oʻzbekcha
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
war - Waray
wo - Wolof
wuu - Wu Chinese
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
yi - Yiddish
yo - Yoruba
yue - Cantonese
za - Zhuang
zea - Zeelandic
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - 中文(澳門)
zh-my - 中文(马来西亚)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
qqq - Message documentation
Format
Export for off-line translation
Export in native format
{{DISPLAYTITLE:Документи/Швидкий старт}}<languages/> <div style="float:right; border:1px solid gray; width:300px; padding:2px; margin-left: 10pt; margin-bottom: 10pt; "> * '''Автор:''' {{Author|[[User:RomanSavochenko|Роман Савоченко]]|Максим Лисенко (2010-2012)}} * '''Відео-доповнення:''' ** [http://ftp.oscada.org/OpenSCADA/0.8.0/doc/ru/QuickStart.mkv Офіційне доповнення OpenSCADA 0.8.0 LTS] (застаріле, [[file:mRu.png]]), [[User:RomanSavochenko|Роман Савоченко]], 2012 ** [https://www.youtube.com/playlist?list=PLIE6cVnMQoAkVccU9mGMIPNYVVug-LVau Відео "Як (How to) ..." від Сергію Карпешу] ([[file:mRu.png]]), Сергій Карпеш, 2018 * '''Початково створено:''' у [http://wiki.oscada.org/HomePageEn/Doc/QuickStart старій Wiki] * '''Цілковито переглянуто:''' 12.01.7532/12.03.2024 </div> OpenSCADA є гранично модульною, гнучкою та багатофункційною SCADA-системою. Як наслідок, перше знайомство з OpenSCADA може бути достатньо складним з причини малих шансів співпадіння попереднього досвіду користувача з підходами OpenSCADA або повної відсутності такого досвіду. Значним чином, однак, це лише перше враження оскільки вся потужність OpenSCADA опиняється в руках користувача і від розмаїття якої він може розгубитися та йому можуть знадобитися значні зусилля для відбору потрібних у вирішені його завдання функцій. З цієї причини, та для наочного представлення загальної концепції використання OpenSCADA, створено цей документ. Документ на прикладах, та у достатньо короткій і наочній формі, надає шлях від встановлення та запуску OpenSCADA до створення елементів користувацького інтерфейсу. У якості цільової допомоги в конфігурації, реалізації та вирішені типових завдань довкола OpenSCADA, також може бути використано документи [[Special:MyLanguage/Documents/FAQ|Часті питання]] та "[[Special:MyLanguage/Documents/How_to|Як (How to) ...]]". Документ призначено для OpenSCADA версії 0.9 і вище. Якщо-ж вас цікавить цей документ для ранніх версій, то можете його отримати із документації що їде з пакетами тієї версії OpenSCADA або із [http://wiki.oscada.org/HomePageEn/Doc/QuickStart цього документу старої Wiki]. Документ не містить детального опису концепції і заглиблення у деталі OpenSCADA, а надає посилання на інші документи, що містять таку інформацію, та в першу чергу це [[Special:MyLanguage/Documents/Program_manual|Посібник по програмі]]. Документ будується синхронно з реалізацією прикладів на підключені до демонстраційної бази даних (БД) [[Special:MyLanguage/Using/Model_AGLKS|моделі "АГЛКС"]] у ролі джерела даних — ПЛК. Відповідно, користувач має отримати дистрибутив OpenSCADA з цією БД, про що детальніше у розділі [[#Installation|Встановлення]]! == Терміни, визначення та абревіатури == {{:Documents/Terms/uk}} == {{Anch|Installation|Встановлення OpenSCADA}} == {{:Documents/How_to/Install/uk}} == Первинна конфігурація та запуск == У наших основних завданнях з OpenSCADA у межах цього документу, треба встановити пакет з БД моделі "АГЛКС" — '''openscada-model-aglks''', про що можна детально дізнатися з попереднього розділу. Звісно, якщо ви використовуєте [[Special:MyLanguage/Documents/How_to/Live_disk|Живий Диск]], то у вас все потрібне вже є. [[File:at.png]] Не розглядайте тут встановлення-складання OpenSCADA з вихідних текстів, оскільки вимоги кваліфікаційного рівня користувача для цього завдання значно вище за рівень документа загалом та тут неминуче будуть невідповідності з посібником через дуже ймовірні відмінності у початковій конфігурації. Встановлена БД моделі "АГЛКС" не потребує попереднього налаштування. Якщо-ж потрібно здійснити особливе налаштування, яке відрізняється від базового, то скористайтеся [[Special:MyLanguage/Documents/Program_manual#Config|Посібником по програмі]]. У процесі чого вам може знадобитися інформація про типові облікові записи і паролі OpenSCADA (не мають стосунку до облікових записів ОС), хоча моделі та новостворені конфігурації запускаються від привілейованого користувача і ви можете легко змінити будь який з них: * Суперкористувач (root), пароль — "openscada". * Користувач (user), пароль — "user". * Приклад окремого користувача (roman), пароль — "roman". Демонстрація OpenSCADA на основі БД моделі "АГЛКС", це не те саме, що зазвичай надають комерційні виробники ПЗ з метою продемонструвати можливості, але виключити або ускладнити нормальне використання шляхом обмеження функцій. Демонстрація OpenSCADA, це повнофункційна програма, яка надає приклади реалізації та налаштування різноманітних компонентів. На основі БД моделі "АГЛКС" та інших моделей OpenSCADA можна створювати власні проєкти, використовуючи надані напрацювання. Але після набуття певного досвіду краще нові проєкти створювати із чистої конфігурації зі стандартними бібліотеками OpenSCADA, про що далі буде зазначено; і це щоб не захаращувати проєкт непотрібними там компонентами чим збільшуючи вимоги до ресурсів і непередбачуваність під час довготермінової експлуатації! [[File:at.png]] Динамічна модель компресорної станції на 6 газових компресорів, яка лежить у основі демонстраційної БД, потребує помітних ресурсів, а саме — процесору з частотою більше 1 ГГц (x86) та пам'яті до 200 МБ. Зазначені обчислювальні ресурси необхідні безпосередньо для динамічної моделі та не є загальним показником ресурсоємності програми у кінцевих завданнях! Вимоги до пам'яті, натомість, є типовим показником для графічної станції АРМ близької складності. Загальний процес конфігурації SCADA-системи для виконання функцій верхнього рівня — АРМ оператора, можна умовно поділити на два етапи: * Конфігурація джерела даних, створення бази даних (БД) параметрів цих джерел, створення обчислювальних-логічних параметрів та налаштування історії. * Формування візуального представлення даних ТП шляхом створення інтерфейсу оператору у вигляді: мнемосхем, груп графіків, груп контурів, документів та інше. Відтак, нашою кінцевою метою та метою цього документу є побудова повноцінної конфігурації локальної SCADA-станції, поєднану із сервером та з емуляцією джерела даних на основі цієї демонстраційної БД (Рис.3). [[file:QuickStart_SimpleStationAndServer_uk.png|center|frame|Рис. 3. Просте поєднане підключення станції та SCADA-серверу з джерелом даних у демонстраційній БД.]] Заразом ми ознайомимося з такими важливими ролями OpenSCADA, як: сервер збору, архівації, візуалізації; середовище виконання ПЛК і віддалена розробка. Та перед цим ми оглянемо OpenSCADA та її можливості загалом. === Загальний огляд === Запустити локальне виконання OpenSCADA з БД моделі "АГЛКС" можна у меню оточення робочої стільниці в розділі "Графіка", пункт "Модель "АГЛКС" на відкритій SCADA системі" з характерною іконкою (Рис.3.1.1). [[file:QuickStart_demenu_oscada_uk.png|center|frame|Рис. 3.1.1. Пункт меню оточення робочої стільниці для локального запуску демонстрації OpenSCADA.]] Локальний запуск також можна здійснити з консолі, командою: <syntaxhighlight lang="bash"> openscada_AGLKS </syntaxhighlight> Після запуску ми отримаємо вікно графічного конфігуратору OpenSCADA — [[Special:MyLanguage/Modules/QTCfg|QTCfg]] (Рис.3.1.2) з відкритою кореневою сторінкою. Демонстраційна БД спеціально налаштована так, щоб першим при запуску з'являлося вікно конфігуратору надалі можна відкрити вікно розробки графічних інтерфейсів користувача, а також запустити проєкт користувацького інтерфейсу на виконання. [[file:QuickStart_QTCfg_root_uk.png|center|frame|Рис. 3.1.2. Програмний конфігуратор OpenSCADA — QTCfg, коренева сторінка.]] Програмний конфігуратор OpenSCADA є основним та достатнім засобом для конфігурації будь якого компоненту OpenSCADA. Як і багато компонентів OpenSCADA, конфігуратор реалізовано у вигляді модуля. Крім конфігуратору QTCfg доступні й інші конфігуратори, що виконують ті-ж функції, але реалізовані на основі інших технологій. Наприклад, такими є Web-конфігуратори: [[Special:MyLanguage/Modules/WebCfgD|WebCfgD]] та [[Special:MyLanguage/Modules/WebCfg|WebCfg]]. Всі дії надалі будемо розглядати лише у конфігураторі QTCfg, хоча їх можна буде виконати і в інших конфігураторах. Структуру інтерфейсу вікна конфігуратору можна детально розглянути за [[Special:MyLanguage/Modules/QTCfg|посиланням]]. Для нас зараз важливішим є розглянути всі доступні графічні інтерфейси OpenSCADA, тому натиснемо передостанню нагорі іконку на панелі інструментів, яка відкриє вікно розробки користувацького інтерфейсу (Рис.3.1.3). [[file:QuickStart_Vision_dev_uk.png|center|frame|Рис. 3.1.3. Вікно розробки користувацького інтерфейсу.]] Далі можемо запустити проєкт "АГЛКС" на виконання, для чого обираємо його у переліку проєктів та запускаємо, натискаючи першу ліворуч іконку на панелі інструментів, або у контекстному меню. В результаті чого отримаємо вікно кінцевого інтерфейсу користувача — оператору (Рис.3.1.4). [[file:QuickStart_Vision_run_uk.png|center|frame|Рис. 3.1.4. Вікно кінцевого інтерфейсу користувача проєкту "AGLKS".]] Побудова та виконання користувацьких інтерфейсів здійснюється [[Special:MyLanguage/Modules/Vision|модулем Vision]] підсистеми "Користувацькі інтерфейси". Крім цього модуля ще доступні інші модулі візуалізації, наприклад, OpenSCADA надає [[Special:MyLanguage/Modules/WebVision|модуль WebVision]], який дозволяє виконувати проєкти розроблені у інтерфейсі модуля Vision, але за посередництвом Web-технологій та стандартного Web-браузеру. [[File:at.png]] Для доступу до Web-інтерфейсів необхідних хостів на рисунку 3 ви можете послідовно спробувати адреси: http://localhost:10002, http://localhost:10003, http://localhost:10004. Всі подальші дії надалі розглядатимемо лише у інтерфейсі модуля Vision. Таким чином ми запустили демонстрацію OpenSCADA та ознайомилися із основним набором інструментів. Надалі будемо їх використовувати у конфігурації OpenSCADA для виконання функцій верхнього рівня — АРМ оператора та інших завдань. [[File:at.png]] Закриємо програму через відповідний пункт меню "Файл", що треба виконати обов'язково інакше її подальший фоновий запуск не зможе відкрити портів вже зайнятих цією програмою. === {{Anch|Demon|Фонове та віддалене виконання — сервер, середовище виконання ПЛК та віддалена розробка}} === [[file:at.png]] Всі консольні операції можете виконати у консольному терміналі, наприклад, програма "konsole" у оточенні Живого Диску з діалогу запуску за Alt+F2. Та тека "{HOME}" тут, це "'''/home/user'''". {{#lst:Documents/Program_manual/uk|Service}} Таким чином ви отримаєте демонстраційну БД (проєкт "АГЛКС"), яка працює у фоні, що однак ми не побачимо поки не спробуємо підключитись до цієї конфігурації, щодо чого нижче. Тепер, при кожному запуску комп'ютеру, вона буде таким чином запускатися і працюватиме у фоні. Загалом, саме так здійснюється запуск та виконання серверних конфігурацій, [[Special:MyLanguage/Sub-projects/Embedding_and_PLC|оточень ПЛК та одноплатних ПК]] на кшталт [[Special:MyLanguage/Using/Raspberry_Pi|RaspberyPi]]. Якщо у вас все-ж виникли проблеми із консоллю-терміналом або ви свідомо бажаєте фонового виконання у графічному оточені — так званого "запуску або закриття у системний лоток", тоді на цій стадії ви можете знову запустити демонстраційну конфігурацію, як описано на початку цього розділу (Рис.3.1.1), встановити параметр '''Згортати або запускати у системний лоток''' [[Special:MyLanguage/Modules/QTStarter#Cfg|модуля UI.QTStarter]] та закрити вікно конфігуратору щоб проєкт моделі АГЛКС згорнувся до системного лотку. === {{Anch|UserPrjCrt|Створення власного проєкту}} === У вікні менеджеру проєктів OpenSCADA (Рис.3.3) створимо наш власний проєкт, який можна викликати з меню оточення робочої стільниці у розділі "Графіка" загальним пунктом "Відкрита SCADA-система" з характерною іконкою (Рис.3.1.1) або командою з консолі-терміналу: <syntaxhighlight lang="bash"> openscada</syntaxhighlight> [[file:QuickStart_ProjManager_uk.png|center|frame|Рис. 3.3. Вікно менеджеру проєктів OpenSCADA.]] У цьому вікні ми також можемо перевірити фонове виконання серверної та демонстраційної конфігурацій. Відтак, натиснемо відповідну кнопку '''Створити-оновити проєкт''' та введемо назву нового проєкту — '''Start'''. [[File:at.png]] Якщо ви бажаєте перевірити себе щодо певних проблем або з інших причин, то можете завантажити [http://ftp.oscada.org/OpenSCADA/Projects/Start_QuickStart_uk.backup резервну копію] вже готового OpenSCADA проєкту "Start" і відновити його із контекстного меню того самого вікна на рисунку 3.3. Ви маєте розташувати файл резервної копії у каталозі користувацьких проєктів OpenSCADA — "~/.openscada/", на кшталт із консолі-терміналу: <syntaxhighlight lang="bash"> wget http://ftp.oscada.org/OpenSCADA/Projects/Start_QuickStart_uk.backup -P ~/.openscada/ </syntaxhighlight> ==== {{Anch|RemConUse|Підключення та використання віддалених і фонових конфігурацій}} ==== Тепер можемо спробувати віддалено підключитися до фонового демонстраційного проєкту, подивитися на його конфігурацію та запустити демонстраційний проєкт на локальне виконання із серверу візуалізації. На сторінці "Транспорти" (Рис.3.3.1.1) у режимі '''Користувацький та Системний''' створимо підключення до нашої фонової демонстрації "AGLKS" як станції OpenSCADA. Вкажемо там транспорт '''Сокети''', адресу '''localhost''', користувача '''root''' та пароль '''openscada'''. Після оновлення дерева навігації конфігуратора, командою у контекстному меню, ми маємо отримати новий кореневий пункт цього підключення та зможемо контролювати віддалену-фонову станцію з цього конфігуратору. [[File:at.png]] Якщо пункт віддаленої станції з'явився, але відображає відсутність підключення, то ви припустилися помилки у конфігурації вище або віддалена станція недоступна, що в нашому випадку може означати лише те, що вона не працює в фоні, а відтак поверніться до [[#Demon|відповідного розділу]] та повторіть операції у ньому. Якщо все працює, то збережемо цю конфігурацію натиснувши другу іконку ліворуч на панелі інструментів нагорі, оскільки ми ще скористаємося нею для прямого шлюзування параметрів збору даних із демонстраційного проєкту, як ПЛК. [[file:QuickStart_TrRemStationsAndBrowse_uk.png|center|frame|Рис. 3.3.1.1. Сторінка "Транспорти" зовнішніх хостів OpenSCADA та огляд дерева OpenSCADA віддаленої-фонової станції.]] На сторінці конфігурації візуалізатору UI.Vision (Рис.3.3.1.2) оберемо: * станцію рушія СВУ — "'''AGLKS'''"; * користувача запуску — '''залишимо порожнім'''; * пароль користувача цієї віддаленої станції — '''залишимо порожнім'''; * проєкт(и) автоматичного виконання — також '''залишимо порожнім''', оскільки ми бажаємо побачити можливість віддаленої розробки. [[file:QuickStart_RemoteVisionCfg_uk.png|center|frame|Рис. 3.3.1.2. Сторінка конфігурації візуалізатору UI.Vision.]] Наступний запуск модуля UI.Vision, другою іконкою з кінця на панелі інструментів нагорі, має призвести середовище візуальної розробки до встановлення підключення з сервером візуалізації фонового демонстраційного проєкту. Де ви можете здійснювати віддалену розробку (Рис.3.3.1.3) та запускати проєкти з цього серверу візуалізації на виконання (Рис.3.3.1.4). [[file:QuickStart_RemoteVisionDev_uk.png|center|frame|Рис. 3.3.1.3. Екран віддаленої розробки UI.Vision для серверу візуалізації "АГЛКС".]] [[file:QuickStart_RemoteVisionRun_uk.png|center|frame|Рис. 3.3.1.4. Екран віддаленого виконання UI.Vision для серверу візуалізації "АГЛКС".]] [[File:at.png]] Цю конфігурацію віддаленого підключення до серверу візуалізації зберігати не потрібно та поле конфігурації "Станція рушія СВУ" (Рис.3.3.1.3) необхідно повернути у "'''<Локально>'''", а користувача станції встановити у "'''root'''" — після чого '''зберегти'''. Можливість віддаленого підключення та розробки інколи є єдиним способом здійснити розробку або коригування не тільки для серверних конфігурацій виключно з WEB-інтерфейсом, але і для конфігурацій з локальною візуалізацією, коли саме оточення локальної візуалізації непридатне або обмежене для виконання середовища розробки модуля UI.Vision, наприклад, таких як смартфони, планшети та інші мобільні пристрої з малим екраном, виключно сенсорним вводом ([[Sub-projects/Adaption_to_Android|Android]]) або обмеженнями на кшталт неможливості відкриття системної віртуальної клавіатури ([[Special:MyLanguage/Using/Nokia_Linux|Nokia N9]]). Та цю віддалену розробку можна переважно здійснювати у процесі виконання проєкту — гаряча розробка, що особливо актуально для Web-інтерфейсів і локальних інтерфейсів які запускаються лише у вікні виконання. Щодо віддаленої конфігурації, то на один локальний конфігуратор, як центр адміністрування, можна зібрати всі віддалені станції у мережі включно зі станціями у прихованих мережах станцій першого рівня, "підняти" які можна аргументом "Рівень підняття" (Рис.3.3.1.1). ==== Підключення стандартних бібліотек OpenSCADA ==== Ново-створений проєкт OpenSCADA не містить жодної специфічної конфігурації, фактично є порожнім та передбачає створення користувачем нової конфігурації у локальному файлі БД SQLite "St.db", що розташовується у власній теці проєкту з такою-ж назвою. Створювати складний проєкт SCADA-системи простіше з використанням [[Special:MyLanguage/Libs|бібліотек функцій API об'єктної моделі OpenSCADA та бібліотек графічних елементів]], а також інших бібліотек OpenSCADA. Для використання бібліотек OpenSCADA необхідно файли БД, де зберігаються бібліотеки: підключити — додати у об'єкті модуля БД "SQLite" (Рис.3.3.2.1), встановити-обрати '''адресу''' та вказати кодування БД в "'''UTF-8'''" (Рис.3.3.2.2). [[file:at.png]] Після чого, або у випадку наявності готових записів БД бібліотек, необхідні з них потрібно активувати, про що читайте далі. [[file:QuickStart_SQLite_add_uk.png|center|frame|Рис. 3.3.2.1. Додання об'єкту БД "SQLite".]] [[file:QuickStart_SQLite_obj_uk.png|center|frame|Рис. 3.3.2.2. Об'єкт БД "SQLite" бібліотеки OpenSCADA.]] Дистрибутиви OpenSCADA постачаються з низкою бібліотек у вигляді файлів БД "SQLite" (таблиця 3.3.2), які, при запуску-створені користувацького проєкту, розташовуються у теці "LibsDB/". Згідно цього переліку у об'єкті модуля БД "SQLite" додаємо або використовуємо готові записи потрібних бібліотек, '''встановлюємо їм ознаку "Вмикати"''' та '''зберігаємо'''. Далі, для завантаження вмісту бібліотек, можна включити БД та натиснути кнопку "Завантажити програму з цієї БД", однак низка нових об'єктів при завантажені не вмикаються, тому простіше '''завершити новий проєкт та запустити його''' знову. '''Таблиця 3.3.2.''' Бібліотеки OpenSCADA у складі дистрибутиву. {| class="wikitable" |- ! Ідентифікатор !! Ім'я !! Адреса !! Мова/кодування !! Опис |- | OscadaLibs || Бібліотеки OpenSCADA || LibsDB/OscadaLibs.db || EN,UK,RU/UTF-8 || Бібліотеки джерел даних, служб та обробки. |- | vcaBase || СВУ: Головні бібліотеки || LibsDB/vcaBase.db || EN,UK,RU/UTF-8 || Бібліотеки графічних елементів OpenSCADA модуля [[Special:MyLanguage/Modules/VCAEngine|UI.VCAEngine]]. |- | vcaTest || СВУ: Тести || LibsDB/vcaTest.db || EN,UK,RU/UTF-8 || Бібліотека тестів графічних елементів. |- | vcaElectroEls || СВУ: Бібліотека електро-елементів мнемосхем користувацького інтерфейсу || LibsDB/vcaElectroEls.db || EN,UK,RU/UTF-8 || Надає бібліотеку мнемонічних елементів інтерфейсу користувача електричних підстанцій та станцій генерації електрики. |} В результаті додання бібліотек OpenSCADA ви отримаєте оточення, готове для додання джерел даних, визначення їх історії та формування інтерфейсу власного проєкту SCADA-системи. == Робота з джерелами даних == Основною функцією будь якої SCADA-системи є робота з джерелами даних реального часу, а саме — опитування програмованих логічних контролерів (ПЛК) та простих модулів ПУО. Детальніше ознайомитися з цим питанням можна у [[Special:MyLanguage/Documents/DAQ|документі "Збір даних у OpenSCADA"]]. Підтримка того або іншого джерела даних залежить від протоколу або API, за яким джерело надає свої дані, та наявності для протоколу-API модуля підсистеми "Збір даних" у OpenSCADA або його реалізації DAQ-Шаблоном на [[Special:MyLanguage/Documents/DAQ#LogicLev|Логічному Рівні]]. Загальний перелік модулів підсистеми "Збір даних" та документацію по ним можна отримати за [[Special:MyLanguage/Modules|посиланням]] та загальний перелік DAQ-Шаблонів можна отримати за [[Special:MyLanguage/Libs/Generic_list|посиланням]]. Дані, отримані з джерел, надалі обробляються, архівуються та використовуються для візуального представлення оператору ТП. === Збір даних апарату ТП === У якості прикладу розглянемо та створимо збір даних для апарату повітряного охолоджувача. Фонова демонстраційна БД, як ПЛК та джерело даних, містить модель реального часу ТП компресорної станції з шести компресорів. Дані для двох апаратів повітряних холодильників AT101_1 і AT101_2 компресорної станції KM101 доступні за протоколом ModBus/TCP на порту 10502 (стандартно це порт 502 за наявності доступу його відкриття). Створимо об'єкт контролеру для збору за протоколом ModBus/TCP та отримаємо ці дані. Тим самим фактично реалізуємо завдання збору реальних даних оскільки наша конфігурація буде відрізнятися від роботи зі справжнім зовнішнім пристроєм лише його адресою та адресами регістрів ModBus, а також це може бути інший фізичний інтерфейс взаємодії — варіант протоколу ModBus. Це підключення також є яскравим прикладом можливості реалізації середовища виконання джерела даних (ПЛК) на основі OpenSCADA. Для збору даних за протоколом ModBus у OpenSCADA наявний [[Special:MyLanguage/Modules/ModBus|модуль "ModBus"]] підсистеми "Збір даних". Для додання нового об'єкту контролера у конфігураторі відкриємо сторінку модуля "ModBus" "Start"->"Збір даних"->"Модуль"->"ModBus" та у '''контекстному меню пунктe "ModBus" натиснемо "Додати"''' (риc.4.1.1). [[file:QuickStart_ModBUS_add_uk.png|center|frame|Рис. 4.1.1. Додання об'єкту контролера у модулі "ModBus" підсистеми "Збір даних".]] У результаті з'явиться вікно діалогу (Рис.4.1.2) з пропозицією ввести ідентифікатор та назву нового об'єкту контролера. Ідентифікатори об'єктів OpenSCADA обмежено розміром у 20 символів та їх рекомендується вводити символами англійського алфавіту і цифрами. Крім того, починати ідентифікатор бажано з літери, що спростить його використання у внутрішніх процедурах. Назви об'єктів OpenSCADA обмежено розміром у 50 символів та які можуть бути будь якими. Назва зазвичай використовуються для відображення і якщо вона порожня, то буде використано ідентифікатор. Надалі назву ми можемо змінити у конфігурації об'єкта, але ідентифікатор неможливо змінити прямо; хоча об'єкт можна вирізати (Ctrl+X) та потім вставити (Ctrl+V) тим самим перейменувавши його. Згідно до зауважень раніше, введемо ідентифікатор CM101, назву "KM 101" — "'''CM101 (KM 101)'''". [[file:QuickStart_enter_idnm_uk.png|center|frame|Рис. 4.1.2. Діалог визначення ідентифікатору та назви нового об'єкту.]] Після підтвердження у нас з'явиться об'єкт нового контролера. Оберемо його у конфігураторі та ознайомимося з налаштуваннями (Рис.4.1.3). [[file:QuickStart_ModBUS_cntr_uk.png|center|frame|Рис. 4.1.3. Головна вкладка налаштування об'єкту контролера модуля ModBus.]] Налаштування об'єкту контролеру як правило специфічні для різних типів джерел даних та протоколів. Детально ознайомитися з налаштуваннями об'єкту контролера [[Special:MyLanguage/Modules/ModBus|модуля ModBus]] можна за [[Special:MyLanguage/Modules/ModBus#DAQ|посиланням]]. Ми ж розглянемо загальні та ключеві налаштування цього модуля. Перед конфігурацією зв'язку зі своїм контролером треба з документації на цей контролер з'ясувати налаштування його мережевих інтерфейсів та протоколів, а також, у випадку використання ModBus, отримати таблицю призначення зовнішніх та внутрішніх сигналів контролеру на номери регістрів ModBus — мапу регістрів. За допомогою сторінки об'єкту контролеру у розділі "Стан" можна в першу чергу оцінити поточний стан об'єкту контролера та реальний стан зв'язку з фізичним контролером, а також оперативно їх міняти. Так, поле "Статус" містить код помилки та текстовий опис поточного стану зв'язку з контролером. У нашому випадку об'єкт контролеру вимкнено. Ми можемо його увімкнути та запустити, встановивши ознаки навпроти відповідних полів. Ввімкнений об'єкт контролеру ініціює параметри, запущений же ще запускає завдання збору (окремий потік на об'єкт контролеру) та надає можливість передавати дані у контролер через атрибути параметрів. Поле "Сховище" вказує у якому сховку зберігається конфігурація даного об'єкту. Нас влаштує зберігання у Загальному Сховку, тобто '''залишимо по замовченню'''. У розділі "Конфігурація" безпосередньо міститься конфігурація об'єкту контролера. Встановимо наступні з них, залишивши все інше без змін: * "Вмикати" та "Запускати" вказують у який стан переводити об'єкт контролеру при запуску програми — '''встановимо обидва поля'''. * "Планування збору" містить конфігурацію планувальника для запуску завдання збору даних. Отримати опис формату конфігурації даного поля можна зі спливаючої підказки. Одне число вказує на періодичність запуску, в секундах — '''вкажемо одну секунду'''. * "ModBus протокол" вказує на варіант протоколу ModBus. Можливі варіанти протоколу "TCP", "RTU" та "ASCII". Наразі нас цікавить варіант '''TCP''', тому залишимо як є. Варіанти протоколів "RTU" та "ASCII" треба встановлювати у випадку зв'язку з контролером за посередництвом послідовних інтерфейсів, часто це "RS-485". * "Адреса транспорту" вказує на вихідний транспорт [[Special:MyLanguage/Documents/Program_manual#Transports|підсистеми "Транспорти"]], який використовується для з'єднання з контролером. У випадку з варіантом "TCP" нам потрібен транспорт у [[Special:MyLanguage/Modules/Sockets|модулі Sockets]], а у випадку варіантів "RTU", "ASCII" та послідовного інтерфейсу нам потрібен транспорт у [[Special:MyLanguage/Modules/Serial|модулі Serial]]. На створені вихідного транспорту у "Sockets" та "Serial" детальніше зупинимося нижче. * "Вузол призначення" вказує на вузол джерела даних або контролера у мережі ModBus. У нашому випадку це має бути '''1'''. * "Об'єднувати фрагменти даних" включає об'єднання несуміжних фрагментів регістрів у один блок запиту до визначеної максимальної кількості байтів замість генерації окремих запитів, чим дозволяє зменшити загальний час збору — '''встановимо цю опцію'''. Збережемо наші зміни у сховищі, натиснувши другу ліворуч іконку на панелі інструментів. Тепер, таким чином як і об'єкт контролеру створимо вихідний транспорт у модулі "Sockets" ("Start"->"Транспорти"->"Сокети") за посередництвом контекстного меню (Рис.4.1.4) та назвемо транспорт так, як і об'єкт контролеру "'''CM101 (KM 101)'''". Зверніть увагу, що у полі "Тип елементу" діалогу вводу ідентифікатору та назви (Рис.4.1.2) треба обрати "'''Вихідний транспорт'''"! [[file:QuickStart_Sockets_add_uk.png|center|frame|Рис. 4.1.4. Додавання вихідного транспорту у модулі "Sockets" підсистеми "Транспорти".]] Сторінку конфігурації отриманого вихідного транспорту наведено на рисунку 4.1.5. Ця сторінка також містить розділ стану та оперативного управління. У полі "Статус" міститься текстовий опис поточного стану транспорту. Ми можемо підключити його встановивши ознаку навпроти відповідного поля. Поле "Сховище" вказує сховок конфігурації об'єкту — '''нас влаштує "Загальне Сховище"'''. [[file:QuickStart_Sockets_tr_uk.png|center|frame|Рис. 4.1.5. Сторінка конфігурації вихідного транспорту модуля "Sockets" підсистеми "Транспорти".]] У розділі "Конфігурація" безпосередньо міститься конфігурація об'єкту транспорту, встановимо наступні: * "Адреса" вказує на: тип (необов'язково), адресу та режим підключення з віддаленою станцією. Ознайомитися з форматом запису можна із спливаючої підказки — '''встановимо це поле у значення "localhost:10502"'''. Транспорти інших типів створюються подібно до розглянутому для "Sockets" методу, а конфігурація їх відрізняється зазвичай лише форматом запису адреси та таймаутів у вкладці "Додаткове". У випадку із транспортом модуля "Serial" у адресі вказується: шлях до послідовного пристрою, швидкість та формат. Для конвертерів ''USB->Serial,Modem'' цю адресу можна дізнатися з операційної системи, наприклад, консольною командою {{InLineCode|dmesg}} одразу після його підключення. Збережемо об'єкт транспорту та повернемося до конфігураційного поля "Адреса транспорту" об'єкта контролера, де '''оберемо адресу "Sockets.CM101"'''. Наразі OpenSCADA підтримує, для об'єктів контролерів більшості типів джерел даних, визначення усіх параметрів безпосередньо у полі "Адреса транспорту" та без необхідності окремого створення об'єктів транспортів. Тобто визначення у полі "Sockets.CM101:localhost:10502" автоматично створить CM101 у вихідних транспортах Sockets із зазначеною адресою. На цьому налаштування об'єкту контролера закінчено, '''включимо його встановивши ознаку "Ввімкнено"'''. Наступним етапом є конфігурація та обрання тих даних, які необхідно опитувати з контролера. Це налаштування здійснюється шляхом створення параметру контролера. Параметр дозволяє описати перелік даних, що отримуються у контролера та передати їх у оточення OpenSCADA — модель даних. Для додання нового параметру відкриємо сторінку нашого об'єкту контролера та у контекстному меню пункту "KM 101" '''натиснемо "Додати"''' — назвемо "'''AT101_1 (AT 101_1)'''". Сторінку конфігурації отриманого параметра приведено на рисунку 4.1.6. Ця сторінка містить розділ стану та оперативного управління. У полі "Тип" міститься тип параметру, у нашому випадку це "'''Стандартний'''". '''Параметр ми вмикаємо''' встановивши ознаку навпроти відповідного поля. Ввімкнений параметр приймає участь у процесі обміну з контролером. [[file:QuickStart_ModBUS_prm_uk.png|center|frame|Рис. 4.1.6. Сторінка конфігурації параметру контролера "ModBUS".]] У розділі "Конфігурація" безпосередньо міститься конфігурація параметру. Встановимо наступні з них залишивши всі інші без змін: * "Вмикати" вказує на необхідність переведення об'єкту в режим "Ввімкнений" при запуску програми — '''встановимо це поле'''. * "Перелік атрибутів" містить конфігурацію атрибутів параметру відносно до регістрів та бітів ModBus, ознайомитися з форматом запису можна зі спливаючої підказки — встановимо вміст цього текстового поля у: <pre> R:100:r:Ti:T вхід R:101:r:To:T вихід R:102:rw:Cw:Продуктивність </pre> Таким-же чином '''створимо, або скопіюємо з AT101_1''', другий параметр "'''AT101_2 (AT 101_2)'''". Перелік атрибутів для нього встановимо у: <pre> R:103:r:Ti:T вхід R:104:r:To:T вихід R:105:rw:Cw:Продуктивність </pre> '''Збережемо обидва''' параметри. Тепер ми можемо запустити наш об'єкт контролера для здійснення збору, для чого повернемося на його сторінку та у розділі "Стан" '''встановимо ознаку "Виконується"'''. Якщо ми нічого не пропустили, то обмін успішно запуститься та у полі "Статус" ми отримаємо подібне представленому на рисунку 4.1.7. [[file:QuickStart_ModBUS_cntr_st_uk.png|center|frame|Рис. 4.1.7. Сторінка об'єкту контролера при успішному обміні з фізичним контролером.]] У випадку вдалого обміну з фізичним контролером ми також отримаємо описані дані контролеру у інфраструктурі OpenSCADA — моделі даних. Побачити ці дані можна у вкладці "Атрибути" наших параметрів AT101_1 (Рис.4.1.8) та AT101_2. Оскільки збір здійснюється регулярно та з періодичністю у секунду, то ми можемо спостерігати їх зміну натискаючи кнопку "Поновити поточну сторінку" на панелі інструментів. [[file:QuickStart_ModBUS_prm_attr_uk.png|center|frame|Рис. 4.1.8. Сторінка опису атрибутів параметру AT101_1.]] На цьому конфігурація збору даних вважається завершеною. === {{Anch|DataProc|Обробка отриманих даних ТП}} === Часто зустрічається ситуація, коли вихідні дані, отримані із джерела даних, є "сирими", тобто неготовими або незручними для візуального представлення, тому потрібно здійснити цю підготовку. У нашому прикладі ми отримали дані, які надходять у коді від шкали всередині контролеру і наше завдання — здійснити обрахунок реальних значень з отриманих даних. Обробку даних у OpenSCADA можна здійснювати як безпосередньо при візуалізації, так і у підсистемі Збір Даних. Однак змішування процесу візуалізації і обробки вхідних даних вносить плутанину у конфігурацію, не дозволяє вести історію реальних даних, робить отримані образи візуалізації мало придатними для повторного використання та збільшує навантаження на потік візуалізації, чим зменшує її загальну реакцію. Відповідно, здійснимо підготовку даних у підсистемі Збір Даних. Обчислення у підсистемі Збір Даних для отримання реальних даних переважно виконуються за посередництвом модуля логічного рівня [[Special:MyLanguage/Modules/LogicLev|LogicLev]] та шаблонів параметрів підсистеми Збір Даних. Модуль [[Special:MyLanguage/Modules/ModBus|ModBus]] є тим випадком, коли таке обчислення можна виконати безпосередньо у ньому, що ми нижче побачимо. Детальніше ознайомитися з концепцією Логічного Рівня можна за [[Special:MyLanguage/Documents/DAQ#LogicLev|посиланням]]. Для здійснення обчислень, у модулі Логічного Рівня попередньо потрібно створити бібліотеку шаблонів нашого проєкту та шаблон параметру підсистеми Збір Даних у ній. Для створення бібліотеки шаблонів відкриємо сторінку підсистеми Збір Даних та, за посередництвом контекстного меню, '''створимо''' об'єкт бібліотеки шаблонів '''start (Запуск)'''. Сторінка конфігурації отриманого об'єкту бібліотеки шаблону (Рис.4.2.1) містить розділ стану та оперативного управління "Стан" і розділ налаштувань "Конфігурація" у якому містяться лише типові поля конфігурації та які залишимо незмінними. Загалом ми маємо: * Розділ "Стан": ** позначити бібліотеку доступною — '''встановлюємо ознаку''' навпроти відповідного поля; ** вказати сховище — '''залишимо "Загальне Сховище" проєкту'''; ** можемо проконтролювати дату останньої модифікації шаблону. * '''Зберегти''' об'єкт. [[file:QuickStart_TmplLib_uk.png|center|frame|Рис. 4.2.1. Сторінка конфігурації об'єкта бібліотеки шаблонів.]] Для створення шаблону, відкриємо сторінку ново-створеної бібліотеки шаблонів "Start"->"Збір Даних"->"Бібліотека шаблонів"->"Запуск" та, за посередництвом контекстного меню, '''створимо''' об'єкт шаблону '''airCooler (Повітряний холодильник)'''. Сторінка конфігурації отриманого об'єкту шаблона (Рис.4.2.2) містить розділ стану та оперативного управління "Стан" і розділ налаштувань "Конфігурація", у якому містяться лише типові поля конфігурації та які залишимо незмінними. Загалом ми маємо: * Розділ "Стан": ** позначити шаблон доступним — '''встановити ознаку''' навпроти відповідного поля, доступні шаблони можуть підключатися до параметрів збору даних і параметри будуть здійснювати обчислення за цим шаблоном; ** можемо проконтролювати кількість об'єктів, які використовують даний шаблон для обчислення; ** можемо проконтролювати дату останньої модифікації. * '''Зберегти''' об'єкт. [[file:QuickStart_Tmpl_gen_uk.png|center|frame|Рис. 4.2.2. Сторінка конфігурації об'єкту шаблона.]] Основна конфігурація та формування шаблону параметра збору даних здійснюється у вкладці "ВВ" (Рис.4.2.3) шаблону. Детальний опис процесу формування шаблону можна отримати за [[Special:MyLanguage/Documents/Program_manual#CfgDAQ|посиланням]]. У шаблоні створимо два ВВ для входів ("TiCod", "ToCod"), два для виходів результату ("Ti","To") і один прозорий ("Cw"). Для ВВ "TiCod", "ToCod" і "Cw" встановимо ознаку "Конфігурація" у '''Зв'язок''', що дозволить підв'язувати до них "сирі" джерела. Встановимо ознаку "Атрибут" для ВВ "Ti" і "To" у '''Тільки читання''', для "Cw" у '''Повний доступ''' — для формування трьох атрибутів у параметрі збору даних: два лише на читання і один на повний доступ. Встановимо мову програми у '''JavaLikeCalc.JavaScript''' і програму у: <syntaxhighlight lang="JavaScript"> Ti = 150*TiCod/65536; To = 100*ToCod/65536; </syntaxhighlight> [[file:QuickStart_Tmpl_io_uk.png|center|frame|Рис. 4.2.3. Вкладка "ВВ" сторінки конфігурації об'єкту шаблону.]] '''Збережемо отриманий шаблон''' та встановимо '''ознаку доступності''' (Рис.4.2.2). Тепер створимо об'єкт контролера та параметри у модулі LogicLev підсистеми Збір Даних. Об'єкт контролера LogicLev та його параметри створюються аналогічно раніше створеним у модулі ModBus на сторінці "Start"->"Збір Даних"->"Модуль"->"Логічний рівень". Назвемо їх '''ідентично до об'єктів модуля ModBus'''. Об'єкт контролера модуля LogicLev (Рис.4.2.4) не має специфічних налаштувань та встановлені по замовченню можна не чіпати, окрім поля "Планування обчислення", яке встановимо у '''1 (одну) секунду'''. Перед доданням параметрів треба увімкнути об'єкт контролера — '''встановимо ознаку "Ввімкнено"'''. [[file:QuickStart_LogicLev_cntr_uk.png|center|frame|Рис. 4.2.4. Головна вкладка налаштування об'єкту контролера модуля LogicLev.]] Параметр об'єкту контролера модуля LogicLev (Рис.4.2.5) із специфічних налаштувань має "Тип", де необхідно встановити "'''Логічний'''", і '''обрати адресу створеного нами шаблону''' у полі "Шаблон параметру". [[file:QuickStart_LogicLev_prm_uk.png|center|frame|Рис. 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.CM101"; обрання елементу "ModBus.CM101" додасть параметри контролеру і так далі до кінцевого елементу згідно [[Special:MyLanguage/Documents/Program_manual#DAQ|ієрархії об'єктів]]. Для можливості повернення на рівні вище, перелік вибору містить елементи усіх вищестоящих рівнів від поточного значення адреси. [[file:QuickStart_LogicLev_prm_tmpl_uk.png|center|frame|Рис. 4.2.6. Вкладка "Конфігурація шаблону" сторінки параметра контролера LogicLev.]] [[file:QuickStart_LogicLev_prm_tmpl_attr_uk.png|center|frame|Рис. 4.2.7. Вкладка "Конфігурація шаблону" сторінки параметра контролера LogicLev із розгорнутими зв'язками.]] '''Збережемо створені об'єкти''' контролеру та параметрів, після чого запустимо об'єкт контролера на виконання, '''встановивши ознаку "Виконується"''' у розділі "Стан". Якщо ми нічого не пропустили, то обчислення успішно запуститься та у полі "Статус" отримуємо схоже на рисунку 4.2.8. [[file:QuickStart_LogicLev_cntr_st_uk.png|center|frame|Рис. 4.2.8. Сторінка об'єкту контролера при успішному його обчислені у модулі LogicLev.]] У випадку успішної обробки коду шаблона в параметрах ми отримаємо оброблені дані у інфраструктурі (моделі даних) OpenSCADA. Побачити ці дані можна у вкладці "Атрибути" наших параметрів AT101_1 (Рис.4.2.9) і AT101_2. [[file:QuickStart_LogicLev_prm_attr_uk.png|center|frame|Рис. 4.2.9. Сторінка атрибутів параметру AT101_1 модуля LogicLev.]] На цьому конфігурацію обробки даних вважаємо закінченою. === Комплексний об'єкт-тег сигналу === У попередніх розділах було описано механізм підключення джерела даних за об'єктом апарату — "Повітряний охолоджувач", який передбачає об'єднання всіх сигналів у одному об'єкті параметру джерела даних. Однак, більш розповсюдженим підходом великої автоматизації є формування об'єкту параметру довкола окремого сигналу, наприклад — "Температура на виході холодильника AT101_1 (TE1314_1)", які часто називаються тегами. Створення об'єкту параметру довкола сигналу дозволяє формалізувати його опис до шаблонів аналогових і дискретних сигналів, включивши до них всю потрібну обробку, сигналізацію та іншу характерну інформацію. Для простої конфігурації типізованих аналогових і дискретних сигналів, у бібліотеках OpenSCADA передбачено шаблони параметрів та багато образів візуального представлення адаптовано до роботи і зв'язування з такими параметрами прямо, без деталізації за атрибутами. Більш того, уніфіковані шаблони наділяються можливістю глибокого опрацювання вхідних сигналів через визначення у полі "Вхідна процедура обробки" процедури на внутрішній мові [[Special:MyLanguage/Modules/JavaLikeCalc|JavaLikeCalc]]. І ще більше, у цій процедурі можна розширити шаблонну модель даних параметру допоміжними динамічними атрибутами, фактично "навісити" на нього елементи об'єкту пристрою, відштовхуючися від головного його сигналу; тобто не створюючи для цього додаткових шаблонів. На кшталт такого для додання атрибуту встановлення входу вручну: <syntaxhighlight lang="JavaScript"> if(ctx.f_start == null) { ctx.f_start = true; this.attrAdd("setIn", "Input set", "real"); this.setIn.set(0); } in = this.setIn.get(); </syntaxhighlight> Зазвичай, для формування параметру на основі шаблону, використовується модуль логічного рівня [[Special:MyLanguage/Modules/LogicLev|LogicLev]], як це було описано у попередньому розділі. Однак, низка модулів, у тому числі і [[Special:MyLanguage/Modules/ModBus|ModBus]], надають можливість одразу створювати логічні параметри на основі шаблону. Додамо нові параметри, відкривши у конфігураторі сторінку нашого раніше створеного об'єкту контролера ModBus та у контекстному меню пункту "КМ 101" '''натиснемо "Додати"'''. Назвемо аналоговий параметр — '''TE1314_1 (TE1314_1)''' (Рис.4.3.1). Тип параметру '''встановимо у "Логічний"''', шаблон параметру '''оберемо "base.anUnif"''', опис '''встановимо у "Температура на виході AT101_1"''', '''встановимо ознаки "Вмикати" і "Ввімкнено"'''. Далі нам необхідно налаштувати: * Шаблон параметру у вкладці "Конфігурація шаблона", яка з'явилася (Рис.4.3.2): ** поле "Вхід" встановлюємо у значення адреси ModBus-регістру цього параметру — "'''R:101'''"; ** поле "Максимум шкали модуля" встановлюємо у значення — '''65535''', що відповідає 100 °C. * Вкладка "Атрибути" (Рис.4.3.3): ** "Одиниця виміру" встановлюємо у — "'''град. С'''"; ** "Шкала: мінімум" у — '''0'''; ** "Шкала: максимум" у — '''100'''; ** "Границя верхня аварійна" у — '''40'''; ** "Границя верхня попереджув." у — '''30'''. * '''Збережемо''' об'єкт. [[file:QuickStart_ModBus_prmAn_uk.png|center|frame|Рис. 4.3.1. Сторінка логічного параметру TE1314_1 модуля "ModBus".]] [[file:QuickStart_ModBus_prmAn_tmpl_uk.png|center|frame|Рис. 4.3.2. Вкладка "Конфігурація шаблону" сторінки параметру TE1314_1 модуля ModBus.]] [[file:QuickStart_ModBus_prmAn_attr_uk.png|center|frame|Рис. 4.3.3. Вкладка "Атрибути" сторінки параметру TE1314_1 модуля ModBus.]] Дискретний параметр назвемо — '''CB102 (КК102)'''. Тип параметру '''встановимо у "Логічний"''', шаблон параметру '''оберемо "base.digitBlockUnif"''', '''встановимо ознаки "Вмикати" і "Ввімкнено"'''. Далі нам треба налаштувати: * Шаблон параметру у вкладці "Конфігурація шаблону", яка з'явилася (Рис.4.3.4): ** поле "Команда 'Відкрити'" встановлюємо у значення адреси ModBus-біту цього параметру — "'''C:100:rw'''"; ** поле "Стан 'Відкрито'" встановлюємо у значення адреси ModBus-біту — "'''C:101'''"; ** поле "Стан 'Закрито'" встановлюємо у значення адреси ModBus-біту — "'''C:102'''"; ** поле "Час утримання команди" встановлюємо у — '''0''', оскільки команда не імпульсна. * Вкладка "Атрибути" (рис.4.3.5) — упевнюємося у доступності команди та станів. * '''Збережемо''' об'єкт. [[file:QuickStart_ModBus_prmDig_tmpl_uk.png|center|frame|Рис. 4.3.4. Вкладка "Конфігурація шаблону" сторінки параметру CB102 модуля ModBus.]] [[file:QuickStart_ModBus_prmDig_attr_uk.png|center|frame|Рис. 4.3.5. Вкладка "Атрибути" сторінки параметру CB102 модуля ModBus.]] === Отримання готових даних OpenSCADA — шлюзування === Ознайомившись з типовими механізмами отримання даних, описаними у попередніх розділах, ви маєте вже уявляти загальний об'єм робіт з їх отримання та обробки, тобто — формалізацію та отримання цих даних у моделі даних SCADA-системи. Якщо сюди додати завдання формування цих даних на рівні ПЛК — модель даних вільно програмованих ПЛК, та перетворення їх у модель даних протоколу обміну, то ви маєте помітити тут потрійне перетворення даних. Стосовно перетворення у модель даних протоколу — серіалізація, то це визначається фізичними властивостями каналів зв'язку і здійснюється автоматично, а ось формування моделі даних ПЛК та моделі даних SCADA-системи здійснюється програмістом ПЛК та SCADA-системи відповідно. Причому, ці завдання мають багато спільного, особливо якщо здійснюється однією людиною або організацією, а відтак мають бути механізми її уніфікації. У випадку різного походження ПЛК і SCADA, більшої уніфікації, ніж шар протоколу обміну, досягти складно. З іншого боку, глибоку уніфікацію моделей даних ПЛК і SCADA можна зустріти у виробників одночасно ПЛК і SCADA, що однак лише зміцнює їх монопольний стан та фактично нівелює переваги уніфікації через загальну вартість рішення. OpenSCADA передбачає можливість такої уніфікації через додання спорідненості з ПЛК. Та таку спорідненість можна забезпечити лише для ПЛК, які є цілком відкритими, на них встановлено відкрите-вільне ПЗ, а відтак можна встановити і [[Special:MyLanguage/Sub-projects/Embedding_and_PLC|OpenSCADA у ролі середовища виконання ПЛК]]. Як середовище виконання, OpenSCADA може надавати дані ПЛК і стандартними протоколами, як то ModBus, та, для отримання цих даних прямо і без здійснення будь яких дій над ними на боці SCADA-системи, передбачено модуль [[Special:MyLanguage/Modules/DAQGate|DAQGate]], який фактично об'єднує моделі. Тобто, програміст ПЛК, який за сумісництвом є програмістом SCADA, формує модель даних ПЛК, а на рівні SCADA-системи вона використовується вже як готова, чим цілком прибирається стадія та роботи з отримання, обробки та формування моделі даних SCADA-системи. Більш того: * виключається розбіжність у моделях даних ПЛК та SCADA при їх зміні; * дані конфігурації логічно та виключно зберігаються на ПЛК, якого вони стосуються; * порушення та інші повідомлення формуються на першоджерелі — ПЛК, а повідомлення із втручання — дії оператору, потрапляють і на ПЛК; * передбачається механізм тримання архівів-історії на ПЛК як повністю, так і як частка компенсації втрати зв'язку зі SCADA, особливо для поганого та бездротового зв'язку. З метою демонстрації і ознайомлення, створимо тут об'єкт контролеру модуля DAQGate для шлюзування даних нашого віртуального ПЛК. Створюється він ідентично до раніше створених об'єктів контролеру у модулі ModBus та LogicLev на сторінці "Start"->"Збір Даних"->"Модуль"->"Шлюз джерел даних" і назвемо його "'''AGLKS'''". Об'єкт контролеру модуля DAQGate (Рис.4.4.1) має наступні специфічні налаштування, які ми маємо здійснити: * "Віддалена станція" — '''оберемо раніше створене підключення''' віддаленої станції "AGLKS". * '''Ввімкнемо''' об'єкт контролера. * "Перелік віддалених об'єктів контролерів та параметрів" — у полі "Дерево параметрів" оберемо "'''LogicLev.gen'''", а потім пункт "'''<<Додати поточний>>'''" нагорі цього переліку. * '''Запустимо''' виконання об'єкту контролера. [[file:QuickStart_DAQGate_cntr_uk.png|center|frame|Рис. 4.4.1. Головна вкладка налаштування об'єкту контролера модуля DAQGate.]] Якщо все здійснено правильно, то автоматично створяться параметри обраного контролера і ми зможемо поглянути на дані по них у вкладці "Атрибути" (Рис.4.4.2). [[file:QuickStart_DAQGate_prm_attr_uk.png|center|frame|Рис. 4.4.2. Вкладка "Атрибути" сторінки параметру модуля DAQGate.]] === Архівування-історія даних ТП === Отримані раніше дані вважаються поточними, тобто такими, які періодично оновлюються та характеризують значення параметру ТП на поточний момент часу. При цьому, раніше зчитані значення втрачаються при перезапису їх поточним, тобто відсутня їх історія. У багатьох-же завданнях потрібне ведення архіву-історії прочитаних значень параметрів ТП, для чого у OpenSCADA передбачена підсистема "[[Special:MyLanguage/Documents/Program_manual#Arch|Архіви-Історія]]" де нам потрібно створити архіватори значень та повідомлень, для порушень, і вказати наші параметри для архівації їх значень там. [[file:at.png]] Якщо не створювати архіваторів та не підключати наших параметрів на архівування ними, то на графіках ви не отримаєте історії більш його загальної ширини і також втратите накопичене при перемиканні, та у звітних документах не отримаєте історії взагалі. Почнемо з архівації значень, для якої необхідно створити хоча-б один архіватор до необхідного типу сховища і періодичністю значень. Загалом, OpenSCADA містить два модулі архівації — на файлову систему [[Special:MyLanguage/Modules/FSArch|FSArch]] і на базу даних [[Special:MyLanguage/Modules/DBArch|DBArch]]. Тут ми розглянемо лише модуль архівації на файлову систему, як найбільш універсальний та ефективний. Стосовно періодичності значень для "якісного" архіватору, то її переважно необхідно обирати за періодичністю значень самого повільного джерела даних у нашій системі, яке у нас одне і періодичність ми йому вказали 1 секунда. Для створення архіватору значень відкриємо сторінку модуля архівування "Start"->"Архіви-Історія"->"Модуль"->"Архіватор на файлову систему" та за посередництва контекстного меню створимо об'єкт архіватору значень "'''1s'''". Зверніть увагу на значення поля "Тип елементу" діалогу створення, яке має бути "'''Архіватор значень'''"! Сторінка конфігурації отриманого об'єкта архіватору значень (Рис.4.5.1) містить розділ стану і оперативного управління "Стан", розділ налаштувань "Конфігурація" та розділ специфічних налаштувань архіватору цього модуля "Додаткові опції". Загалом ми маємо: * Розділ "Стан": :* запустити архіватор на виконання — '''встановимо''' ознаку навпроти відповідного поля, лише виконуваний архіватор здійснює архівування; :: [[file:at.png]] Встановити у останню чергу і після виконання усього цього переліку. :* можемо проконтролювати поточний і максимальний час сеансу архівування; :* вказати сховище — '''залишимо "Загальне Сховище" проєкту'''; :* можемо проконтролювати загальний розмір файлів архіву цього архіватору. * Розділ "Конфігурація": :* встановити запуск архіватору при запуску програми — '''встановимо''' ознаку навпроти відповідного поля; :* встановити адресу теки з файлами архіву — "'''ARCHIVES/VAL/1s'''", що ставиться по замовченню; :* встановити період значень — '''1 (одна)''' секунда; :* встановити період архівування — '''60''' секунд, по замовченню і зазвичай однакове для архіваторів з будь якою періодичністю значень. * '''Зберегти''' об'єкт. [[file:QuickStart_ArchVal_1s_uk.png|center|frame|Рис. 4.5.1. Конфігурація архіватору значень "1s" на файлову систему.]] Одного "якісного" архіватору вже достатньо для більшості завдань, але якщо планується побудова графіків-трендів значень і звітної документації на велику глибину (доби, тижні, місяці), то потрібно створити ще пару архіваторів з більшою періодичністю значень, інакше побудова буде тривалою та/або буде обрізатися за лімітами часу виконання! Зазвичай, у якості таких додаткових архіваторів створюються, і ви маєте їх створити ідентично інструкції для "якісного" архіватора вище: * Хвилинний — ідентифікатор "'''1m'''", адреса "'''ARCHIVES/VAL/1m'''" і період значень '''60''' секунд. * Годинний — ідентифікатор "'''1h'''", адреса "'''ARCHIVES/VAL/1h'''" і період значень '''3600''' секунд. Новостворені проєкти 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. [[file:QuickStart_LogicLev_prm_arh_uk.png|center|frame|Рис. 4.5.2. Вкладка "Архівація" параметру AT101_1 модуля LogicLev.]] У результаті цієї операції буде автоматично створено об'єкти архівів для обраних атрибутів. Приклад об'єкту архіву для атрибуту "Ti" параметру AT101_1 наведено на рисунку 4.5.3. [[file:QuickStart_Arh_gen_uk.png|center|frame|Рис. 4.5.3. Сторінка об'єкта архіву атрибуту "Ti" параметру AT101_1.]] Зазвичай, налаштування архіву змінювати нема потреби, однак, якщо буде необхідна особлива конфігурація, то її можна здійснити на вказаній вище сторінці. Частіше може знадобитися отримання інформації про архів. Наприклад, дізнатися розмір архіву як за часом, так і на носії, а також поглянути на графік параметру (Рис.4.5.4). [[file:QuickStart_Arh_tr_uk.png|center|frame|Рис. 4.5.4. Вкладка "Значення" сторінки об'єкта архіву атрибута "Ti" параметра AT101_1.]] Об'єкти контролерів, як і окремі шаблони параметрів, можуть формувати повідомлення про нештатні ситуації, наприклад — шаблони комплексних сигналів-тегів генерують повідомлення при вихід значення за одну з границь. Повідомлення такого характеру мають специфічну категорію та називаються порушеннями. Повідомлення OpenSCADA попередньо потрапляють до буферу повідомлень, який і виступає первинним архівом. Однак буфер має обмеження і зберігається лише у оперативній пам'яті, тобто втрачається при перевантажені програми. Роль збереження повідомлень на тому або іншому сховищі виконують архіватори повідомлень, як і архіватори значень для значень. Відповідним чином і створимо архіватор повідомлень для архівації порушень, для чого відкриємо сторінку модуля архівування "Start"->"Архіви-Історія"->"Модуль"->"Архіватор на файлову систему" і за посередництвом контекстного меню '''створимо''' об'єкт архіватору повідомлень '''alarms (Порушення)'''. Зверніть увагу на значення поля "Тип елементу" діалогу створення, яке має бути "'''Архіватор повідомлень'''"! Сторінка конфігурації отриманого об'єкта архіватору значень (Рис.4.5.5) містить розділ стану і оперативного управління "Стан", розділ налаштувань "Конфігурація" та розділ специфічних налаштувань архіватору цього модуля "Додаткові опції". Загалом ми маємо: * Розділ "Стан": :* запустити архіватор на виконання — '''встановимо''' ознаку навпроти відповідного поля, лише виконуваний архіватор здійснює архівування; :: [[file:at.png]] Встановити у останню чергу і після виконання всього цього переліку. :* вказати сховище — '''залишимо "Загальне Сховище" проєкту'''; :* можемо проконтролювати час першого та останнього повідомлення у архіві цього архіватору; :* можемо проконтролювати загальний розмір файлів архіву цього архіватору; :* можемо проконтролювати поточний і максимальний час сеансу архівування. * Розділ "Конфігурація": :* встановити запуск архіватору при запуску програми — '''встановимо''' ознаку навпроти відповідного поля; :* встановити категорію повідомлень, яка характеризує порушення — "'''al*'''"; :* встановити рівень архівованих порушень — "'''Інформація (1[X])'''"; :* встановити адресу теки з файлами архіву — "'''ARCHIVES/MESS/alarms'''", що ставиться по замовченню; * '''Зберегти''' об'єкт. [[file:QuickStart_ArchMess_alarms_uk.png|center|frame|Рис. 4.5.5. Конфігурація архіватору повідомлень "alarms" на файлову систему.]] Таким саме чином можна створити архіватори повідомлень іншого характеру, наприклад — дії оператору. Для чого достатньо визначити категорію цих повідомлень та сформувати для них шаблон або правило регулярного виразу. Ви можете отримати стандартні категорії і їх шаблони, або правила регулярного виразу, на [[Special:MyLanguage/Documents/Program_manual#ArchMess|сторінці архівації повідомлень]]; або можете вивчити реальні повідомлення на [[Special:MyLanguage/Documents/Program_manual#CfgArch|головній сторінці підсистеми "Архіви-Історія"]], отримати звідти інформацію про їх категорії і налаштувати шаблон або правило регулярного виразу. Можна навіть створити архіватор для архівування всіх повідомлень програми, але здійснювати це не рекомендується через отримання великих архівів і тривалого доступу до них надалі. Новостворені проєкти OpenSCADA вже містять шаблони таких стандартних архіваторів, тому ви можете просто увімкнути необхідні. == Формування візуального представлення == Формування візуального представлення може здійснюватися на трьох рівнях складності і користувач може обрати будь який з них залежно від вимог завдання, рівня своїх знань і наявності бібліотек з готовими образами та шаблонами. ПЕРШИЙ РІВЕНЬ вимагає мінімальної кваліфікації користувача, але передбачає наявність бібліотек шаблонних кадрів, потрібних для вирішення його завдання. У межах першого рівня користувачу достатньо знати як підключити динаміку до сторінок шаблонних кадрів і як додати нові сторінки шаблонних кадрів. ДРУГИЙ РІВЕНЬ передбачає додаткову навичку — створювати нові кадри на основі готових-комплексних елементів шляхом простого їх розташування у області кадру. Для забезпечення цього кваліфікаційного рівня, користувачу знадобляться бібліотеки комплексних елементів, необхідні для вирішення його завдання. ТРЕТІЙ РІВЕНЬ передбачає володіння всіма інструментами середовища розробки візуальних інтерфейсів OpenSCADA, включно зі створенням нових комплексних елементів і розробку інтерфейсів користувача у проєкті. Всі дії із інтерфейсом візуалізації будемо виконувати у оточені [[Special:MyLanguage/Modules/Vision|модуля Vision]] підсистеми "Користувацькі інтерфейси". Для відкриття вікна інтерфейсу Vision натиснемо другу іконку праворуч панелі інструментів конфігуратору. У результаті отримаємо вікно, раніше представлене на рисунку 3.3.1.3. Інтерфейси користувача-оператора у OpenSCADA реалізуються проєктами візуалізації. У бібліотеці [[Special:MyLanguage/Libs/Main_graphical_elements|основних елементів користувацького інтерфейсу]] присутній шаблон типового проєкту візуалізації, заснованого на концепції об'єктів сигналізації і видів відображення. Користувач може почати створювати власну концепцію інтерфейсу візуалізації у вигляді нового проєкту, а може використати вказаний шаблон. [[file:at.png]] Для реалізації нової концепції проєкту візуалізації будуть необхідні знання третього рівня і значні зусилля, що знаходиться за межами розгляду цього документу. Тому розглядатимемо створення інтерфейсу візуалізації на основі доступного шаблонного проєкту. Скопіюємо проєкт "Групи сигналізації (шаблон)" '''натиснувши спочатку кнопку "Копіювати візуальний елемент"''' на ньому і потім '''кнопку "Вставити візуальний елемент"''' (Рис.5.1). У діалозі назвемо наш новий проєкт '''start (Старт)''' та у переліку проєктів отримаємо пункт нашого нового проєкту (Рис.5.1). [[file:QuickStart_ui_newPrj_uk.png|center|frame|Рис. 5.1. Копіювання шаблонного проєкту у новий.]] Перед використанням і збереженням нового проєкту (Рис.5.3) необхідно '''змінити його сховище на "Загальне Сховище"''', що ми можемо здійснити на головній сторінці діалогу властивостей візуального елементу, який викликається за кнопкою "Властивості візуального елементу" (Рис.5.2). Після чого '''збережемо''' наш новий проєкт натиснувши третю кнопку ліворуч панелі інструментів. [[file:QuickStart_ui_props_uk.png|center|frame|Рис. 5.2. Властивості нового проєкту на основі шаблонного.]] Шаблонний проєкт (Рис.5.3) містить дві гілки — "Панелі управління" і "Коренева сторінка". Гілка "Панелі управління" містить набір кадрів типових панелей управління та спеціалізованих кадрів. Гілка "Коренева сторінка", з кореневою сторінкою у основі, містить підгілки об'єктів сигналізації "Група 1", "Група 2" і окрему гілку зведених графіків "Зведені графіки". Підгілки об'єктів сигналізації "Група {n}" мають цифровий ідентифікатор та можуть розширятися доданням впритул до стількох, назви скількох помістяться нагорі у два ряди. Присутність підгілки "Група {n}" відбивається на активації відповідної кнопки об'єкта сигналізації кореневої сторінки, що дозволяє на них перемикатися. Кожна підгілка "Група {n}" містить контейнери або шаблони видів відображення, зазвичай: "Мнемосхеми", "Групи графіків", "Групи контурів", "Групи оглядових кадрів" і "Документи". Наявність сторінок у контейнерах відображень вмикає можливість обрання цього відображення для відповідного об'єкта сигналізації кореневої сторінки. Детальніше ознайомитися зі структурою кореневої сторінки можна за [[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|посиланням]]. [[file:QuickStart_ui_so_uk.png|center|frame|Рис. 5.3. Шаблонний проєкт на основі концепції об'єктів сигналізації.]] === Додання шаблонної сторінки та підключення динаміки === Розглянемо завдання першого рівня складності, коли до вже розробленої концепції інтерфейсу необхідно підключити динаміку шаблонної сторінки. Поняття "Шаблон сторінки" передбачає сторінку, на основі якої та шляхом наслідування може створюватися багато кінцевих сторінок візуалізації з індивідуальним переліком динаміки. Прикладом таких сторінок є: "[[Special:MyLanguage/Libs/Main_graphical_elements#grpGraph|Група графіків]]", "[[Special:MyLanguage/Libs/Main_graphical_elements#grpCadr|Група контурів]]", "[[Special:MyLanguage/Libs/Main_graphical_elements#ViewCadr|Група оглядових кадрів]]" і "[[Special:MyLanguage/Libs/Main_graphical_elements#ResultGraph|Зведені графіки]]". На Рис.5.1.1 представлено шаблонну сторінку "Група графіків" у дереві нашого проєкту "Старт". [[file:QuickStart_ui_grah_tmpl_uk.png|center|frame|Рис. 5.1.1. Шаблонна сторінка "Група графіків".]] Шаблонна сторінка "Група графіків" надає можливість підключити до восьми сигналів одночасного їх відображення на графіку. Елементи відображення значення нагорі автоматично приховуються для невстановлених зв'язків. Створимо нову групу графіків у шаблонному контейнері "Група графіків" першої групи кореневої сторінки. Для цього у контекстному меню пункту "Група графіків" '''оберемо пункт меню "Додати візуальний елемент"''' (Рис.5.1.2), потім введемо ідентифікатор "2" та назву "Графіки 2" — '''2 (Графіки 2)'''. [[file:QuickStart_ui_grah_add_uk.png|center|frame|Рис. 5.1.2. Додання групи графіків "Графіки 2".]] Після підтвердження вводу назви буде створено нову сторінку, однак для активації нам знадобиться її увімкнути. Увімкнути сторінку можна у діалозі редагування властивостей сторінки (Рис.5.1.3). Відкрити цю сторінку можна шляхом '''обрання пункту меню "Властивості візуального елементу"''' у контекстному меню щойно створеної сторінки. Створити сторінку у логічному контейнері на основі шаблону можна й звичайним копіюванням шаблону у самого себе, а також копіюванням іншої сторінки цього контейнеру, але вже й зі зв'язками. [[file:QuickStart_ui_el_prop_uk.png|center|frame|Рис. 5.1.3. Діалог редагування властивостей візуального елементу.]] Після ввімкнення сторінки можна приступати до встановлення зв'язків на створені раніше параметри контролерів. Для цього, не покидаючи діалогу редагування властивостей щойно створеної сторінки (Рис.5.1.3), перейдемо до вкладки "Зв'язки" (Рис.5.1.4). На цій вкладці ми побачимо дерево з елементами "el1" ... "el8". Розгорнувши будь який з елементів ми побачимо гілку "Parameter" і саме у ній ми маємо вказати або обрати адресу наших атрибутів "Ti" і "To". Загалом заповнимо чотири елементи і під час цього частину властивостей необхідно вказувати постійними: * "name" — "'''val:AT101_1 Ti'''"; * "ed" — "'''val:град.С'''"; * "max" — "'''val:150'''" (для Ti) і "'''val:100'''" (для To); * "min" — "'''val:0'''". Якщо у шаблоні параметру контролера заздалегідь передбачити наявність атрибутів, вказаних нами постійними, то можна буде вказувати лише параметр і атрибути розставляться автоматично. Це можемо побачити прив'язавши створений нами раніше комплексний об'єкт-тег аналогового сигналу ModBus.CM101.TE1314_1. [[file:QuickStart_ui_el_prop_lnk_uk.png|center|frame|Рис. 5.1.4. Вкладка "Зв'язки" діалогу редагування властивостей візуального елементу.]] Закінчивши введення зв'язків можемо перевірити результат наших зусиль, для цього закриємо вікно діалогу властивостей і запустимо наш проєкт "Старт" на виконання — про кнопку запуску ми пам'ятаємо з перших розділів. Далі оберемо графіки та перемкнемося на другу сторінку. За безпомилкової конфігурації маємо побачити подібне до зображеного на рисунку 5.1.5. Зауважте, що для параметру комплексного об'єкту-тегу зі встановленими границями порушень, вихід значення за границі відзначається аварійним кольором. Щоб побачити вихід за границю порушення ви можете встановити значення продуктивності вентилятора у 100 (Рис.4.2.9). [[file:QuickStart_ui_run_grph_uk.png|center|frame|Рис. 5.1.5. Група графіків з підключенням чотирьох сигналів та одного параметру об'єкту-тегу.]] === Створення нового кадру — мнемосхеми === Піднімемо планку і створимо новий кадр, де розташуємо базові елементи відображення значень параметрів наших контролерів. Такі кадри зазвичай називаються мнемосхемами і окрім відображення динаміки, та навіть у першу чергу, містять статичне зображення технологічного процесу у мнемонічному представленні. Ми-ж не будемо акцентувати тут увагу на створені статики, а додамо елементи динаміки та підключимо до неї параметри наших контролерів. Та й розташуємо створений кадр у дереві нашого проєкту. Нові кадри, призначені надалі до розташування у проєкті, прийнято створювати та змінювати у бібліотеці віджетів. Створимо нову бібліотеку віджетів обравши вертикальну вкладку "Віджет" та у контекстному меню вікна бібліотек віджетів '''оберемо пункт меню "Нова бібліотека"''' (Рис.5.2.1). У діалозі вводу назви вкажемо — '''CM101 (KM 101)'''. [[file:QuickStart_ui_wlib_add_uk.png|center|frame|Рис. 5.2.1. Додання нової бібліотеки віджетів.]] Далі додаємо новий кадр обравши пункт меню "... з Бібліотеки"->"Бібліотека: originals"->"Група елементів" (Рис.5.2.2) у контекстному меню створеної бібліотеки "KM 101". У діалозі вводу назви вкажемо '''AT101 (AT 101)'''. У основі будь якого кадру і сторінки має лежати елемент "Група елементів (Box)" тому ми його й обрали. [[file:QuickStart_ui_w_add_uk.png|center|frame|Рис. 5.2.2. Додання нового кадру.]] Одразу після створення нового кадру необхідно встановити його базові властивості, характерні для кадру мнемосхеми. Властивості або атрибути будь якого візуального елементу можна вказати у панелі інструментів "Атрибути", попередньо обравши потрібний візуальний елемент. Оберемо створений кадр "AT 101" та встановимо наступні властивості: * "Геометрія: ширина" — '''900'''; * "Геометрія: висота" — '''600'''; * "Сторінка: група" — "'''so'''", для включення кадру до контейнеру мнемосхем при виконанні; * "Фон: колір" — "'''#5A5A5A'''"; * "Границя: ширина" — '''1'''; * "Границя: колір" — "'''black'''". У результаті отримаємо порожній кадр (Рис.5.2.3), готовий для додання елементів на нього. Для графічного редагування або перегляду вигляду кадру треба '''обрати пункт "Редагувати візуальний елемент"''' у контекстному меню кадру. [[file:QuickStart_ui_w_viewa_uk.png|center|frame|Рис. 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'''. У інспекторі атрибутів встановимо властивості протоколу: * "Геометрія: ширина" — '''500'''; * "Геометрія: висота" — '''250'''; * "Показати колонки" — "'''tm;lev;mess'''"; * "Рівень" — '''-1''', відображення потокових порушень будь якого рівня; * "Розмір, секунд" — '''0''', відображати порушення на будь-яку глибину; * "Період стеження, секунд" — '''1'''. Додані елементи можна розташувати за бажанням просто виділяючи та пересуваючи мишею. Таким-же чином можна змінити їх розмір. Проста зміна розміру викличе зміну тільки геометрії контейнеру віджету, що часто не потрібно. Для зміни розміру усього вмісту віджета його треба масштабувати, що здійснюється утриманням клавіші "Ctrl" при зміні розміру або перемиканням стану "Зміна розміру" на "Масштаб" у рядку статусу. Після виконання всіх маніпуляцій маємо отримати мнемосхему з виглядом схожим на рисунок 5.2.4. [[file:QuickStart_ui_mn_uk.png|center|frame|Рис. 5.2.4. Вигляд мнемосхеми з низкою елементів.]] На цьому процедуру створення мнемосхеми вважатимемо закінченою. Збережемо нову бібліотеку віджетів "KM 101" і приступимо до етапу розташування нашої мнемосхеми у дереві проєкту "Старт". Розташуємо нашу мнемосхему у гілці "Старт"->"Коренева сторінка"->"Група 1"->"Мнемосхеми" шляхом обрання пункту меню "... з Бібліотеки"->"Бібліотека: CM101"->"AT 101" у контекстному меню пункту сторінки проєкту "Мнемосхеми". Ідентифікатор нової мнемосхеми встановимо у "2" при цьому поле назву залишимо порожньою — '''2'''. Далі необхідно здійснити вже знайому нам з попереднього розділу операцію, а саме — встановлення зв'язків на раніше створені параметри контролерів. Для цього відкриємо вкладку "Зв'язки" (Рис.5.2.5) діалогу редагування властивостей мнемосхеми, де ми побачимо дерево з елементами "A1_Ti", "A1_To", "A2_Ti" і "A2_To". Розгорнувши будь який з елементів побачимо гілку "Parameter" у якій маємо вказати або обрати адресу значень у елементі "pVal" наших атрибутів "Ti" і "To" відповідно. У процесі заповнення елементів частину властивостей треба вказувати постійними: * "pName" — "'''val:AT101_1 Ti'''". Як і у випадку з групою графіків у попередньому розділі, для комплексних параметрів об'єкту-тегу ModBus.CM101.TE1314_1 і ModBus.CM101.CB102 можна вказати тільки параметр і атрибути розставляться автоматично. [[file:QuickStart_ui_mn_lnk_uk.png|center|frame|Рис. 5.2.5. Вкладка "Зв'язки" діалогу редагування властивостей мнемосхеми.]] Тепер можемо зберегти нашу мнемосхему і поглянути на результат. Для цього закриємо вікно діалогу властивостей і запустимо наш проєкт "Старт" на виконання. Далі кнопками гортання перемкнемося на нашу мнемосхему і у випадку безпомилкової конфігурації маємо побачити подібне до рисунку 5.2.6. [[file:QuickStart_ui_run_mn_uk.png|center|frame|Рис. 5.2.6. Мнемосхема з чотирма підключеними сигналами, комплексними параметрами об'єкту-тегу та протоколом.]] Зауважте, що вихід значення комплексного параметру об'єкта-тегу за границі порушень відзначається миготінням через аварійний колір для: параметру, об'єкту сигналізації і жовтого кола внизу. Крім миготіння при порушенні здійснюється монотонна сигналізація (часто на бузер) та синтез мови з промовою позиції параметру вказаної у полі зв'язку "spName" (Рис.5.2.5) якщо доступний відповідний синтезатор мови. При активації порушення, праворуч та праворуч-внизу активуються кнопки з індикацією типу повідомлення, а за натискання на них здійснюється "квітація"-стишення відповідного типу повідомлення. За натискання миготливого жовтого кола праворуч-знизу "квитуються"-стишуються всі повідомлення. Факт присутності порушення також відображається записом у протоколі, який ми додали. Щоб побачити вихід за границю порушення можете встановити значення продуктивності вентилятору у 100 (Рис.4.2.9). Детальніше про концепцію роботи з порушеннями можна почитати у документі "[[Special:MyLanguage/Documents/How_to/Violations,_alarms_and_notifications|Як сформувати порушення, сигналізацію та сповіщення]]". Історію порушень можемо переглянути у документі "Протокол порушень", який доступний при обрані виду "Документ" (Рис.5.2.7). [[file:QuickStart_ui_run_docAlarms_uk.png|center|frame|Рис. 5.2.7. Документ "Протокол порушень".]] Дискретний комплексний параметр об'єкту-тегу ModBus.CM101.CB102, представлений нами у вигляді кульового крану, є активним. Тобто його можна обрати, чим отримати панель управління праворуч (Рис.5.2.6), а також передати команди (відкрити або закрити). Команди можна передавати з панелі управління або через контекстне меню. Всі дії оператора з керуючого впливу протоколюються і документ протоколу можна переглянути при обрані виду "Документ" (Рис.5.2.8). [[file:QuickStart_ui_run_docOperator_uk.png|center|frame|Рис. 5.2.8. Документ "Протокол втручань".]] === Створення нового комплексного елемента === Приступимо до розгляду завдання третього рівня складності, а саме до створення комплексного елемента. Створення комплексного елементу, що включає в себе комбінацію різних базових примітивів, може здійснюватися у декілька етапів. У якості прикладу розглянемо завдання, що складається з двох етапів: * створення віджету "Повітряний холодильник" на основі примітиву "Елементарна фігура"; * створення фінального-скомпонованого віджета "Холодильник" на основі примітиву "Група елементів". ==== Створення віджету "Повітряний холодильник" на основі примітива "Елементарна фігура" ==== Віджет будемо створювати у раніше нами створеній бібліотеці "КМ 101". Для цього клацаємо правою кнопкою маніпулятору "миші" по пункту цієї бібліотеки та обираємо пункт меню "... з Бібліотеки"->"Бібліотека: originals"->"Елементарна фігура" як це показано на рисунку 5.3.1.1 і називаємо новий елемент '''air_cooler (Повітряний холодильник)'''. [[file:QuickStart_addElFig_uk.png|center|frame|Рис. 5.3.1.1. Додання віджету до бібліотеки "KM 101" на основі примітиву "Елементарна фігура".]] Після підтвердження з'явиться новий віджет з назвою "Повітряний холодильник", оберемо його у переліку віджетів бібліотеки "KM 101" та відкриємо для редагування за посередництвом контекстного меню нового елемента (Рис.5.3.1.2). У інспекторі атрибутів встановимо властивості: * "Геометрія: ширина" — '''200'''; * "Геометрія: висота" — '''200'''; * "Заповнення: колір" — "'''lightgrey'''", колір можна задавати як за допомогою [http://www.w3.org/TR/SVG/types.html#ColorKeywords назв кольорів], так і у форматі #RRGGBB (#RRGGBB-AAA). [[file:QuickStart_ElFigWH_uk.png|center|frame|Рис. 5.3.1.2. Первинна конфігурація віджету.]] Тепер зобразимо візуальне представлення віджета, що можна здійснити двома способами: * намалювати бажане зображення маніпулятором "миша", використовуючи "Лінію", "Дугу", "Криву Без'є" та "Заливку"; відповідна панель "Панель елементарних фігур" з'явиться після входу у режим редагування-рисування; вхід у цей режим здійснюється як показано на рисунку 5.3.1.3 або подвійним натиском лівої кнопки маніпулятору "миша" на тілі виджета; * вручну заповнити поле "Перелік елементів", ввівши перелік потрібних елементів та координат точок. Додаткову інформацію про редактор можна отримати [[Special:MyLanguage/Modules/Vision#ElFigure|тут]]. [[file:QuickStart_goElFigEdit_uk.png|center|frame|Рис. 5.3.1.3. Вхід у режим рисування віджета заснованого на примітиві "Елементарна фігура".]] У нашому прикладі скористаємося другим способом, для чого у полі "Перелік елементів" інспектору атрибутів введемо нижчезазначений перелік та натиснемо "Ctrl"+"Enter": <pre> 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) </pre> Всі точки тут вказано статично оскільки не передбачено динамізації та зміни координат у режимі виконання, і всі інші параметри залишено по замовченню. Відтак, наш віджет набуде вигляду на рисунку 5.3.1.4. [[file:QuickStart_ElFigFillCl_uk.png|center|frame|Рис. 5.3.1.4. Зображення, що відповідає "Переліку елементів" віджету.]] Створимо іконку нашого віджета, яку буде видно у дереві віджетів бібліотеки "KM 101" (Рис.5.3.1.5). [[file:QuickStart_ElFigPic_uk.png|center|frame|Рис. 5.3.1.5. Створення іконки віджета.]] На цьому процес створення першого віджета можна вважати завершеним. Перейдемо до етапу компонування та створення фінального віджету. ==== {{Anch|ComplexWdg|Створення фінального-скомпонованого віджету "Холодильник" на основі примітиву "Група елементів"}} ==== Фінальний віджет створюватимемо у бібліотеці "KM 101" для чого клацаємо правою кнопкою маніпулятору "миша" по цій бібліотеці та обираємо примітив "Група елементів" як це показано на рисунку 5.3.2.1, назвемо новий елемент — '''elCooler (Холодильник)'''. [[file:QuickStart_addBox_uk.png|center|frame|Рис. 5.3.2.1. Додання віджету до бібліотеки "KM 101" на основі примітиву "Група елементів".]] Після підтвердження з'явиться новий віджет з назвою "Холодильник". Оберемо його у переліку віджетів бібліотеки "KM 101" і відкриємо для редагування. У інспекторі атрибутів встановимо властивості: * "Геометрія: ширина" — '''250'''; * "Геометрія: висота" — '''200'''. Візьмемо раніше створений елемент "Повітряний холодильник" та перетягнемо його — натиснемо на ньому ліву кнопку маніпулятору "миша" та пересунемо курсор до області щойно створеного виджета, де відпустимо кнопку (Рис.5.3.2.2). [[file:QuickStart_air_coolerDrag_uk.png|center|frame|Рис. 5.3.2.2. Перетягнення (Drag&Drop) віджету "Повітряний холодильник" у віджет-контейнер "Холодильник".]] У результаті з'явиться вікно діалогу з пропозицією ввести ідентифікатор і назву нового віджету. Ідентифікатор і назва можуть бути задані довільно, ми-ж введемо ідентифікатор '''air_cooler''' і назву залишимо порожньою та вона успадкується від предка — елемента "Повітряний холодильник". Таким чином, щойно створений віджет всередині контейнеру "Холодильник" успадкує елемент "Повітряний холодильник". Після підтвердження введення ідентифікатору і назви, віджет "Повітряний холодильник" додасться до нашого віджету-контейнеру "Холодильник" (Рис.5.3.2.3). У інспекторі атрибутів встановимо для нього властивості: * "Геометрія: x" — '''25'''; * "Геометрія: y" — '''0'''. [[file:QuickStart_air_coolerDrop_uk.png|center|frame|Рис. 5.3.2.3. Додання успадкованого віджету "Повітряний холодильник".]] Далі розгорнемо пункт меню бібліотеки "Елементи мнемосхеми", знайдемо там елемент "Вентилятор 2" та перетягнемо його на віджет-контейнер. Цей елемент динамічно відображатиме інтенсивність роботи повітряного холодильника. Для нового віджета введемо ідентифікатор '''cooler2''' і назву знову залишимо порожньою, після чого віджет "Вентилятор 2" додасться до нашого віджета-контейнеру "Холодильник". Таким чином, щойно створений віджет всередині контейнеру "Холодильник" успадкує елемент бібліотеки "Елементи мнемосхеми" — "Вентилятор 2". У інспекторі атрибутів встановимо властивості: * "Геометрія: x" — '''75'''; * "Геометрія: y" — '''30'''; * "Геометрія: z" — '''10''', підняти елемент над всіма можна з панелі "Функції видимості віджетів"; * "Колір1" — "'''#FFFF00-200'''", додали альфа канал — прозорість 200 ("0" — повністю прозорий, "255" — повністю непрозорий), рисунок 5.3.2.4; * "Колір2" — "'''#FF0000-200'''", додали альфа канал — прозорість 200. [[file:QuickStart_cooler2AlphaChange_uk.png|center|frame|Рис. 5.3.2.4. Зміна прозорості кольору заповнення успадкованого віджету "Вентилятор 2".]] Тепер у віджеті-контейнері "Холодильник" додамо два текстових поля заснованих на примітиві "Текст" з метою відображення вхідної та вихідної температури потоку. Для цього виділимо віджет "Холодильник" та на панелі візуальних елементів бібліотеки "KM 101" оберемо пункт меню примітиву "Текст" як це показано на рисунку 5.3.2.5. Для першого текстового поля введемо ідентифікатор '''Ti''' і у інспекторі атрибутів встановимо властивості: * "Геометрія: x" — '''5'''; * "Геометрія: y" — '''20'''; * "Геометрія: ширина" — '''70'''; * "Геометрія: висота" — '''35'''; * "Вирівнювання" — "'''У центрі'''"; * "Шрифт" — "'''Arial 14 1'''", зміну шрифту можна здійснити у діалозі, який відкривається за натиском на ключик у полі редагування (Рис.5.3.2.7); : [[File:at.png]] Шрифт Arial може бути відсутнім у діалозі, тож оберіть той, що вам подобається. * "Текст" (Рис.5.3.2.8): <pre style="margin-left: 20px;"> %1 град.C </pre> * "Кількість аргументів" — '''1''' (Рис.5.3.2.9): ** "Аргумент 0: тип" — "'''Реальний'''"; ** "Аргумент 0: значення" — '''300.25''', задано лише для наочності та у режимі виконання воно буде замінено реальним значенням вхідної температури; ** "Аргумент 0: конфігурація" — "'''3;f;2'''". [[file:QuickStart_BoxAddText_uk.png|center|frame|Рис. 5.3.2.5. Додання нового елемента заснованого на примітиві "Текст".]] [[file:QuickStart_textGeom_uk.png|center|frame|Рис. 5.3.2.6. Визначення геометрії віджета "Ti".]] [[file:QuickStart_tetxFontChange_uk.png|center|frame|Рис. 5.3.2.7. Зміна розміру шрифту для віджета "Ti".]] [[file:QuickStart_textArgAdd_uk.png|center|frame|Рис. 5.3.2.8. Зміна поля "Текст" і визначення наявності аргументу у віджета "Ti".]] [[file:QuickStart_textArgConf_uk.png|center|frame|Рис. 5.3.2.9. Конфігурація аргументу віджета "Ti".]] Тепер, з метою створення аналогічного віджета для вихідної температури, скопіюємо віджет "Ti", вставимо скопійований віджет і вкажемо йому ідентифікатор '''To''' (Рис.5.3.2.10). У інспекторі атрибутів встановимо властивості: * "Геометрія: x" — '''175'''; * "Геометрія: y" — '''20'''. [[file:QuickStart_ToGeom_uk.png|center|frame|Рис. 5.3.2.10. Віджет "To".]] Тепер додамо віджет заснований на примітиві "Елемент форми" (Рис.5.3.2.11), який будемо використовувати для обрання завдань продуктивності холодильника. Вкажемо ідентифікатор '''cw''' (Рис.5.3.2.12) і у інспекторі атрибутів встановимо властивості: * "Активний" — '''true'''; * "Геометрія: x" — '''60'''; * "Геометрія: y" — '''158'''; * "Геометрія: ширина" — '''60'''; * "Геометрія: висота" — '''40'''; * "Геометрія: z" — '''10''', підняти елемент над всіма можна з панелі "Функції видимості віджетів"; * "Тип елементу" — "'''Combo Box'''"; * "Шрифт" — "'''Arial 14 1'''"; * "Значення" — '''200'''; * "Конфігурація": <pre style="margin-left: 20px;"> 0 50 100 150 200 </pre> [[file:QuickStart_addFormEl_uk.png|center|frame|Рис. 5.3.2.11. Додання віджета заснованого на примітиві "Елемент форми".]] [[file:QuickStart_comboParams_uk.png|center|frame|Рис. 5.3.2.12. Заповнення параметрів ComboBox "cw".]] Для відображення одиниці виміру продуктивності холодильника додамо ще один віджет заснований на примітиві "Текст". Здійснюємо ту-ж процедуру, що й для віджету "Ti". Вкажемо ідентифікатор '''dimension''' (Рис.5.3.2.13) і у інспекторі атрибутів встановимо властивості: * "Геометрія: x" — '''125'''; * "Геометрія: y" — '''168'''; * "Геометрія: ширина" — '''80'''; * "Геометрія: висота" — '''20'''; * "Вирівнювання" — "'''У центрі'''"; * "Шрифт" — "'''Arial 14 1'''"; * "Текст" — "'''об./хвил.'''". [[file:QuickStart_addDimension_uk.png|center|frame|Рис. 5.3.2.13. Додання віджету "dimension" заснованого на примітиві "Текст" і зміна його параметрів.]] Для додання логіки обробки віджету "Холодильник", відкриємо діалог редагування властивостей цього візуального елемента і перейдемо до вкладки "Обробка". На цій вкладці побачимо дерево атрибутів віджету і поле тексту програми обробки атрибутів. Для вирішення нашого завдання необхідно додати три атрибуту: Ti, To, Cw (Рис.5.3.2.14); для чого треба розгорнути кореневий елемент ".", обрати будь який елемент всередині нього та '''натиснути кнопку "Додати атрибут"''' знизу. Далі '''ввімкнемо на обробку''' атрибут '''value''' комбобоксу "cw" як це показано на рисунку 5.3.2.15. Аналогічно ввімкнемо на обробку атрибут '''arg0val''' для Ti и To, а також атрибут '''speed''' елементу "cooler2". [[file:QuickStart_elCoolerAtrrAdd_uk.png|center|frame|Рис. 5.3.2.14. Додання трьох атрибутів елементу "Холодильник" бібліотеки "KM 101".]] [[file:QuickStart_cwValueProc_uk.png|center|frame|Рис. 5.3.2.15. Увімкнення на обробку атрибуту "value" комбобоксу "cw".]] На завершення встановимо мову користувацького програмування "JavaLikeCalc.JavaScript" та напишемо саму цю програму обробки віджета: <syntaxhighlight lang="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; </syntaxhighlight> [[File:at.png]] Розташування або редагування програми віджету не призводить до безпосередньої її компіляції, тобто не буде повідомлень про помилки у програмі якщо вони мають місце бути. Це пов'язано з тим, що безпосереднє виконання програми, а відтак і її компіляція, здійснюється у оточені виконання і в момент запуску проєкту візуалізації на виконання. При цьому всі помилки, що виникли при компіляції, виводяться у вигляді повідомлень OpenSCADA і віджети з помилками не виконуються. Детальніше про налагодження користувацьких процедур можна почитати у документі "[[Special:MyLanguage/Documents/How_to/Debug|Як налагодити проєкт OpenSCADA]]". Опрацювання віджету загалом і виконання його програми здійснюється за будь якої події у циклі життя проєкту СВУ (визначається полем "Період обчислення" вкладки "Проєкт", рисунок 5.2) і періодично за періодом опрацювання (визначається у полі "Періодичне опрацювання" вкладки "Віджет", рисунок 5.1.3). По замовченню, період опрацювання віджету береться із верхнього віджету та він складає 1000 мс, тож, якщо бажаєте швидшого оновлення вашого віджету, то можете встановити "Періодичне опрацювання" в 250 мс у вкладці "Віджет". Отримана вкладка "Обробка" віджету "Холодильник" бібліотеки "KM 101" матиме вигляд, показаний на рисунку 5.3.2.16. [[file:QuickStart_UserProgElCooler_uk.png|center|frame|Рис. 5.3.2.16. Результуюча вкладка "Обробка" віджету "Холодильник" бібліотеки "KM 101".]] Закриємо діалог редагування властивостей візуального елемента, створимо іконку нашого елемента, закриємо внутрішнє вікно редагування та збережемо це все. На цьому розробку комплексного елемента можна вважати закінченою. ==== Додання комплексного елементу на мнемосхему ==== Для перевірки працездатності та оцінки результатів наших зусиль, додамо створений віджет на мнемосхему, розроблену у розділі 5.2. Виконаємо цю операцію для двох холодильників "AT101_1" і "AT101_2". Для цього відкриємо кадр мнемосхеми "AT 101" на редагування, хапаємо "мишею" наш комплексний елемент та тягнемо на мнемосхему, де відпускаємо у потрібній позиції — вводимо ідентифікатори '''AT101_1''' і '''AT101_2''', відповідно. Додані елементи розташовуємо як нам зручно. Після виконання цих маніпуляцій маємо отримати мнемосхему з виглядом на рисунку 5.3.3.1. [[file:QuickStart_ui_mn2_uk.png|center|frame|Рис. 5.3.3.1. Мнемосхема з нашими комплексними елементами.]] Збережемо нову мнемосхему і закриємо її вікно. Далі перейдемо до проєкту і відкриємо цю мнемосхему у дереві проєкту "Старт"->"Коренева сторінка"->"Група 1"->"Мнемосхеми"->"AT 101". Як можна зауважити, наші нові елементи з'явилися тут автоматично та нам залишилося лише підключити зв'язки до них, для чого відкриємо діалог редагування властивостей мнемосхеми на вкладці "Зв'язки" (рис.5.3.3.2). На цій вкладці побачимо дерево з елементами "AT101_1" та "AT101_2", розгорнувши будь який побачимо гілку "Parameter" з атрибутами "Ti", "To" і "Cw". Таким чином, у полі "Parameter" можемо просто вказати адресу параметра "'''prm:/LogicLev/CM101/AT101_1'''" і "'''prm:/LogicLev/CM101/AT101_2'''", відповідно, а атрибути буде розставлено автоматично. [[file:QuickStart_ui_mn2_lnk_uk.png|center|frame|Рис. 5.3.3.2. Вкладка "Зв'язки" діалогу редагування властивостей мнемосхеми.]] Збережемо нашу мнемосхему і перевіримо результат, для чого закриємо вікно діалогу властивостей, запустимо проєкт "Старт" на виконання і перемкнемося на другу мнемосхему кнопками гортання. За безпомилкової конфігурації маємо побачити подібне зображеному на рисунку 5.3.3.3. [[file:QuickStart_ui_run_mn2_uk.png|center|frame|Рис. 5.3.3.3. Результуюча мнемосхема.]] На цій мнемосхемі, за посередництвом наших комплексних елементів можемо не лише спостерігати, але й керувати продуктивністю холодильників просто змінюючи значення у комбобоксі. Змінюючи продуктивність можемо помітити і зміну температури, і спрацювання сигналізації за комплексним аналоговим параметром об'єкту-тренду. Історію змін можемо побачити та дослідити на групі графіків, створеній нами у розділі 5.1, та документі "Протокол порушень", згаданий у розділі 5.2. == Висновок == Таким чином ми отримали повноцінний типовий інтерфейс технологічного процесу (ТП) з реальним збором даних у різний спосіб і відтак отримали уявлення та навички роботи з OpenSCADA. При побудові інтерфейсу ТП ми розглянули всі три рівні складності і відтак отримали уявлення про потрібний кваліфікаційний рівень програміста SCADA. Збір та обробку даних ми розглянули і здійснили у різні способи від простого-типового і до відображення моделі даних ПЛК, побудованого на основі OpenSCADA. Тобто, отримано уявлення про джерела даних SCADA-систем і доступу до них за допомогою мережевих інтерфейсів та протоколів обміну, підтримку яких реалізують відповідні модулі OpenSCADA. І звісно, ми розглянули методи розповсюдження (дистрибуції) OpenSCADA, способи її встановлення і отримання потрібного оточення як то: серверу SCADA, ПЛК OpenSCADA і робочого місця оператору (АРМ). Інформація про OpenSCADA цим документом не обмежується та у вирішені специфічних питань маєте використовувати [[Special:MyLanguage/Home|всю доступну документацію]] і приклади демонстраційних конфігурацій-моделей OpenSCADA, тим самим користуючись перевагами "відкритих вихідних текстів (OpenSource)". Окремо тут треба ще раз відзначити "[[Special:MyLanguage/Documents/Program_manual|Посібник по програмі]]", "[[Special:MyLanguage/Documents/How_to|Як (How to) ...]]" і "[[Special:MyLanguage/Using/Model_AGLKS|Динамічну модель реального часу АГЛКС]]", як більш повні джерела інформації про OpenSCADA. == Посилання == * [[:File:QuickStart SimpleStationAndServer_uk.odg|Діаграма: Просте поєднане підключення станції і серверу SCADA з джерелом даних у демонстраційній БД.]]
Navigation menu
OpenSCADA
Site
Download
Old Wiki
OpenSCADA Wiki
Home
About OpenSCADA
Functions and demands
Tasks
Using
Fund
Recent changes
Random page
Search
Tools
Special pages
MediaWiki
Help
Personal tools
English
Log in