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/> __TOC__ == Політичні та концептуальні == '''Q:''' OpenSCADA незрозуміла та складна у сприйняті. Чому так та чи є інструкції швидкого старту та просунутого "Як виконати ..."?<br /> '''Re:''' OpenSCADA детально описано, гранично структуровано та формалізовано. Однак враження незрозумілості та складності очікувані. Виходячи з цілей проєкту, програма є гранично модульною, що означає наявність великої кількості варіантів конфігурації та використання. З одного боку це ускладнює сприйняття, але з іншого — підвищує шанси "охоплення" саме вашого спеціалізованого завдання. Окрім того, треба завжди пам'ятати, що складне та незрозуміле все невідоме, яке дійсно зовсім необов'язково є таким. І цей психологічний бар'єр треба переборювати при вивченні будь чого нового. Посібник зі швидкого старту існує та доступний [[Special:MyLanguage/Documents/Quick_start|тут]], розширений "Як виконати ..." також [[Special:MyLanguage/Documents/How_to|тут]]. '''Q:''' Чи працює OpenSCADA у операційній системі QNX, FreeBSD, MS Windows?<br /> '''Re:''' OpenSCADA розробляється за принципами багатоплатформності, базуючись на визнаному світовому стандарті POSIX та багатоплатформених бібліотеках. Однак, у зв'язку з обмеженістю ресурсів та інтересами автора і розробників, проєкт ведеться лише у ОС Linux. Подальша адаптація до інших платформ запланована після випуску версії 1.0 та наразі OpenSCADA працює на апаратних платформах x86, x86_64, ARM та програмній платформі Android. Підтримка тієї або іншої платформи буде залежати від зацікавленості спільноти та наявності окремого мантейнера для апаратно-програмної платформи. '''Q:''' Чи можна керувати OpenSCADA за допомогою звичайного WEB-браузера?<br /> '''Re:''' Так, це можливо. Для керування OpenSCADA із WEB-браузера створено модулі [[Special:MyLanguage/Modules/WebCfg|UI.WebCfg]] та [[Special:MyLanguage/Modules/WebCfgD|UI.WebCfgD]]; для виконання інтерфейсів оператору створено модуль [[Special:MyLanguage/Modules/WebVision|UI.WebVision]] та для створення користувацьких HTML сторінок створено модуль [[Special:MyLanguage/Modules/WebUser|UI.WebUser]]. Які викликаються модулем [[Special:MyLanguage/Modules/HTTP|Protocol.HTTP]], підсистеми "Транспортні Протоколи". '''Q:''' Чи допускає програма додання/видалення/оновлення модулів на ходу (без зупинки)?<br /> '''Re:''' Цю можливість передбачено програмою та вона забезпечується підсистемою "Керування модулями". Фактично, оновлення модулів може відбуватися автоматично, після виявлення нової версії модуля. == Архітектурні, використання та короткі "Як виконати ..." == === {{Anch|UsingCore|Ядро OpenSCADA}} === '''Q:''' Яким чином реалізується підтримка багатьох мов? Чи можу я виконати локалізацію на рідну мову?<br /> '''Re:''' Багатомовна підтримка реалізована ґрунтуючись на стандарті інтернаціоналізації I18N. Та файли інтернаціоналізації модулів відокремлено від файлу інтернаціоналізації ядра програми, що забезпечує повноцінну підтримку незалежного розповсюдження та розробки модулів до OpenSCADA. Переклад програми загалом та модулів зокрема може бути виконано незалежно від наявності їх вихідних текстів. Для перекладу достатньо отримати *.po або *.pot файли потрібного компоненту та у звичайному текстовому редакторі, або спеціалізованій програмі, виконати переклад повідомлень у файлах з англійської на потрібну мову. Актуальні файли ви можете отримати з [http://oscada.org/svn/trunk/OpenSCADA репозиторію вихідних текстів проєкту] у теці "src/po" ядра програми та теках "src/moduls/{subsys}/{module}/po" модулів, а по завершенню запропонувати результати нового перекладу до включення у репозиторії вихідних текстів, написавши до [http://oscada.org/ua/forum/topics/proekt-1/ форуму проєкту] або прямо [[User:RomanSavochenko|автору та головному розробнику проєкту]]. PO-файли не використовуються програмою безпосередньо, тому для швидкої перевірки результату перекладу та виправлення помилок форматування можете скористатися командою {{InLineCode|<nowiki>msgfmt -vo [openscada|oscd_{ModId}].mo {lang}.po</nowiki>}} і розташувати отриманий MO-файл '''[openscada|oscd_{ModId}].mo''' до теки "/usr/share/locale/{lang}/LC_MESSAGES" актуальної інсталяції OpenSCADA для мови ''lang''. '''Q:''' Чи можу я створити свій власний модуль для будь якої підсистеми?<br /> '''Re:''' Так, звісно. Для допомоги в цьому створено [[Special:MyLanguage/Documents/API|документ]], де практично повністю описано архітектуру ядра, його функції та API модулів різних підсистем. Додатково створено [[Special:MyLanguage/Documents/How_to/Create_module|посібник по створенню модулів до OpenSCADA]] та для кожної підсистеми створено модуль-шаблон, взявши за основу який можна швидко створити власний модуль. '''Q:''' Як забезпечується розподіл доступу?<br /> '''Re:''' Використовується схема безпеки подібна до UNIX ОС. Так, потрібні компоненти мають власника, входять до груп та містять тріаду доступу "rwxrwxrwx". Крім того цей механізм безпеки втілено у [[Special:MyLanguage/Documents/API#CntrNode|інтерфейсі керування OpenSCADA]], який своєю чергою пронизує всю програму. '''Q:''' Яким чином в OpenSCADA можна реалізовувати через-модульні зв'язки?<br /> '''Re:''' Через-модульні зв'язки можуть бути наступних типів: * Стандартний інтерфейс доступу — здійснюється за допомогою віртуального інтерфейсу модульних підсистем. * Розширений інтерфейс доступу — передбачає експорт функції зовнішнього інтерфейсу, модулем експортером, та наступне підключення модуля імпортера до цих функцій за допомогою функцій "[[Special:MyLanguage/Documents/API#TModule|TModule::modFunc()]]". * Функції користувача — будь який компонент програми може реєструвати власні функції користувача ("[[Special:MyLanguage/Documents/API#TCntrNode|TCntrNode::objFuncCall()]]"), які надалі можуть бути використані в оточенні користувацького програмування OpenSCADA. '''Q:''' Як зібрати OpenSCADA з вихідних текстів?<br /> '''Re:''' Збірка будь якого програмного проєкту з вихідних текстів, на системній мові на кшталт C/C++ та складністю вище середнього, є нетривіальним завданням, особливо для специфічних оточень та оточень до яких ще не здійснено адаптацію. Для вирішення цього завдання потрібна відповідна підготовка та попередній досвід збірки. Якщо є можливість отримати OpenSCADA зібраною та у вигляді готових пакунків під ваше оточення, то обов'язково скористайтеся нею! Якщо ж немає пакунків під ваше оточення або ви свідомо бажаєте зібрати програму з вихідних текстів під адаптоване оточення тоді скористайтеся [[Special:MyLanguage/Documents/How_to/Build_from_source|посібником для збірки з вихідних текстів]]. Адаптація до збірки та роботи у інших оточеннях є значно більш нетривіальним завданням, особливо до оточень дуже далеких від POSIX або поняття міжплатформової сумісності загалом, є окремим під-проєктом OpenSCADA та передбачає тривалий процес на кшталт [[Special:MyLanguage/Sub-projects/Adaption_to_Android|адаптації до Android]], тому не треба її плутати із простою збіркою під адаптоване оточення! === БД === '''Q:''' Чи можу я отримати дані безпосередньо з БД?<br/> '''Re:''' Так, ви можете. Для баз даних (БД), що підтримують SQL, ви можете використати [[Special:MyLanguage/Documents/User_API#SYS.BD|функцію SQLReq()]] до відповідної БД. Загалом та для не SQL баз даних можете використати API доступу до прошарку баз даних OpenSCADA у функціях таблиці БД [[Special:MyLanguage/Documents/User_API#SYS.BD|fieldStruct(), fieldSeek(), fieldGet(), fieldSet(), fieldDel()]]. === Фізичний та логічний-віртуальний збір даних === '''Q:''' Де і як виконувати додаткову логічну обробку атрибутів параметрів, включаючи логічне зв'язування у одному об'єкті?<br /> '''Re:''' Будь яка математична обробка атрибутів параметрів може виконуватися у обчислювальних об'єктах контролеру (модулях підсистемі "Збір даних"), наприклад, у блоковому обчислювальному контролері ([[Special:MyLanguage/Modules/BlockCalc|DAQ.BlockCalc]]) та об'єкті контролеру ґрунтованому на Java-подібній мові ([[Special:MyLanguage/Modules/JavaLikeCalc|DAQ.JavaLikeCalc]]). Крім того, обробка може здійснюватися на логічному рівні параметрів ([[Special:MyLanguage/Modules/LogicLev|DAQ.LogicLev]]) у модулях підсистеми "Збір даних", спеціально для цього передбачених (які працюють за шаблонами параметрів) або які містять вбудовану реалізацію механізму шаблонів параметрів. Тобто користувач може формувати параметри з потрібною структурою та алгоритмом після-обробки, формуючи логічно пов'язані об'єкти. Частина обробки може виконуватися безпосередньо при візуалізації ([[Special:MyLanguage/Modules/VCAEngine|UI.VCAEngine]]). Щодо збору даних в цілому дивіться у [[Special:MyLanguage/Documents/DAQ|документі]]. '''Q:''' Де перевіряються шкали параметрів та різні уставки сигналізації?<br /> '''Re:''' Перевірка шкал та уставок може реалізовуватися самим контролером, з сигналізацією через відповідні атрибути параметрів, а також на логічному рівні параметрів, для "сирих" джерел даних. Крім того, даний аналіз може здійснюватися безпосередньо в середовищі візуалізації та управління (СВУ). '''Q:''' Чи можу я отримати (прочитати та записати) значення атрибуту параметру збору даних, наприклад, з процедури користувацького інтерфейсу?<br/> '''Re:''' Основним інтерфейсом обміну значеннями параметрів збору даних з елементами або атрибутами відповідної частини OpenSCADA є статичне зв'язування, яке є найшвидшим. Однак внутрішня мова та динамічна об'єктна модель вузлів OpenSCADA дозволяє вам здійснювати динамічний доступ до об'єктів атрибутів параметрів збору даних, наприклад, ви можете отримати значення атрибуту [[Special:MyLanguage/Documents/User_API#SYS.DAQ|функцією get()]]. '''Q:''' Як я можу зберегти-відновити модифіковані дані на логічному рівні?<br /> '''Re:''' Дійсно, інколи може знадобитися збереження та потім відновлення, переважно при перезапуску, деяких модифікованих динамічних даних на кшталт лічильників пробігу обладнання. В цілому, обробку такого роду джерел даних та обладнання треба здійснювати на [[Special:MyLanguage/Sub-projects/Logical_level|логічному рівні]] підсистеми "Збір даних", а реалізувати її можна багатьма способами, що передбачають збереження даних на деякому сховищі та подальше їх відновлення, однак більш відомі способи це: * Періодичне, або при завершені, збереження контексту параметрів шаблону за допомогою запиту користувацького API OpenSCADA через [[Special:MyLanguage/Documents/User_API#SYS|cntrReq()]], де "force" для примусового збереження немодифікованих параметрів: <syntaxhighlight lang="JavaScript"> SYS.cntrReq(SYS.XMLNode("save").setAttr("path",this.nodePath()+"/%2fobj").setAttr("force","1"));</syntaxhighlight> * Якщо атрибут шаблону з лічильником архівується, тоді при старті параметру можете отримати останнє значення з цього архіву, наприклад, так: <syntaxhighlight lang="JavaScript"> if(f_start) prevArchRestore = false; if(!prevArchRestore && (archEnd=this.cntr.arch().end("FSArch.1s"))) { SYS.messInfo("testArch", "val="+this.cntr.arch().getVal(archEnd)+"; " "val1="+this.cntr.arch().getVal(archEnd,false,"FSArch.1s")+"; " "val2="+this.cntr.get(archEnd/1000000,archEnd%1000000)); cntr = this.cntr.arch().getVal(archEnd); prevArchRestore = true; }</syntaxhighlight> * Створення спеціальної таблиці БД та запис/читання цих даних прямо у цю таблицю за посередництвом SQL-запитів через [[Special:MyLanguage/Documents/User_API#DB|SQLReq()]]. '''Q:''' Чи можна, та яким чином, реалізується резервування параметрів?<br /> '''Re:''' Як і будь яка пост-обробка, резервування параметрів здійснюється [[Special:MyLanguage/Documents/DAQ#LogicLev|логічним рівнем]] шляхом створення шаблону параметра, що реалізує можливість у одному параметрі описувати декілька типових давачів, які будуть мати власні атрибути значень. Результуючє значення давачів буде поміщатися до узагальнювального атрибуту значення. === Архівування-історія та Порушення === '''Q:''' Яким чином визначається циклічність архівації значень?<br /> '''Re:''' Архівація є незалежним від контролерів та їх параметрів завданням, та виконується вона модульною підсистемою "[[Special:MyLanguage/Documents/Program_manual#CfgArch|Архіви-Історія]]". Що та як архівувати визначається особисто для кожного атрибута параметру. Передбачено два режими архівації: пасивний та активний. Пасивна архівація визначається циклічністю отримання даних контролером — циклом модуля збору даних. Активна архівація забезпечується завданням підсистеми архівації та незалежно від циклу та способу збору даних модулем "DAQ". '''Q:''' У процесі розробки-налагодження у мене залишаються невідповідні активні порушення. Що з ними робити?<br /> '''Re:''' Так, враховуючи, що порушення до таблиці активних порушень часто потрапляють-формуються користувацькими процедурами, то "залипання" їх там може траплятися. Відповідно, ви можете просто перезапустити проєкт OpenSCADA або видалити-зняти такі порушення у [[:File:QTCfg_subsys_arch_mess_uk.png|головній вкладці "Повідомлення" сторінки підсистеми "Архіви-Історія"]]: обираєте рівень порушень "Інформація (1[X]), ПОРУШЕННЯ", встановлюєте розмір у 0, після чого у таблиці повідомлень мають бути всі актуальні порушення, окремі з яких можна прибрати через контекстне меню, а все видиме кнопкою під таблицею; для великої групи порушень, та не всіх, можете виставити їх чіткі характеристики часу, рівня та категорії, щоб побачити у таблиці, а відповідно "зняти" гуртом всі потрібні. '''Q:''' Чи можлива робота з потоковими даними?<br /> '''Re:''' Потоковий та пакетний збір даних працює у зв'язці з архівом та його буфером. Тобто джерело, отримавши пакет/блок даних, безпосередньо поміщає його до архіву атрибута параметра, або ж бере пакет з буферу, при потоковому виводі. '''Q:''' Чи можу я здійснити експорт архівних даних (історії) у інший формат, скажемо — CSV, Excel?<br /> '''Re:''' Загалом, експортувати архівні дані можете та тут є три особливості, а саме: місце, формати та режим експорту. Оскільки кінцевим користувачем, для якого ці дані формуються, є користувач кінцевого інтерфейсу візуалізації — оператор, то вбудована функція експорту надається [[Special:MyLanguage/Modules/Vision|цими інтерфейсами]] для даних примітивів [[Special:MyLanguage/Modules/VCAEngine#Diagram|діаграми]] та [[Special:MyLanguage/Modules/VCAEngine#Document|документу]], де можна здійснити експорт у CSV, файл зображення та HTML. Щодо інших форматів даних, особливо закритих та одноплатформених на кшталт Excel, то експорт у них може бути реалізовано [[Special:MyLanguage/Documents/User_API|користувацькою процедурою]] через загальний інтерфейс візуалізації користувача як прямим формуванням, якщо формат простий, так і викликом зовнішньої утиліти перетворення, якщо вона доступна. Експорт загалом може здійснюватися у двох режимах: інтерактивному та потоковому. Саме інтерактивний режим вбудовано у інтерфейс користувача та він передбачає визначення діапазону та якості даних (даних примітивів), як обмежувальних факторів доцільного часу виконання цієї операції. Потоковий режим передбачає фонове, можливо навіть разом з основними процесами, здійснення експорту як поточних даних так і даних локальних архівів та часто використовується для експорту у таблицю БД з потрібною структурою. Експорт із оточення розробки, як і потоковий режим, вбудованими функціями не передбачається, окрім експериментальних на кшталт експорту у WAV. Це, за потреби, може бути реалізовано [[Special:MyLanguage/Libs/Service_procedures|сервісною процедурою]] або частиною коду основного процесу для потокового режиму. === Інтерфейс кінцевого користувача === '''Q:''' Яким чином здійснюється сигналізація мовою та що треба для її функціювання?<br /> '''Re:''' Сигналізація мовою, як і інші методи сигналізації, є елементом підсистеми "Інтерфейси користувача" та здійснюється у модулях середовища візуалізації та управління (СВУ), а саме у рушії СВУ [[Special:MyLanguage/Modules/VCAEngine|UI.VCAEngine]] та візуалізаторах [[Special:MyLanguage/Modules/Vision|UI.Vision]] і [[Special:MyLanguage/Modules/WebVision|UI.WebVision]]. Зазвичай, для синтезу мови необхідний відповідний синтезатор з підтримкою потрібної мови, на кшталт '''RHVoice''', '''festival''', '''espeak'''. Для програвання синтезованого звуку вам не потрібно специфічних засобів у типовому оточені. Але, для специфічних оточень, потрібна програма '''play''', що типово міститься у пакеті '''sox''' та для точного визначення залежностей дивіться у [[Special:MyLanguage/Modules/VCAEngine#Alarms|відповідних процедурах зовнішніх методів сповіщення]]. '''Q:''' Як я можу швидко та коректно змінити співвідношення сторін екрану візуального інтерфейсу користувача на інше, наприклад, на 16:9?<br/> '''Re:''' Так, основний інтерфейс користувача OpenSCADA, заснований на концепції об'єктів сигналізації та її [[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|кореневій сторінці]], пристосовано та розроблено до співвідношення сторін 4:3. Для загальних проєктів СВУ заплановано реалізацію відповідних стилів на різні співвідношення сторін однак мнемосхеми мають залишатися незмінними. Відтак, для ручної, швидкої та коректної зміни співвідношення сторін наразі маєте виконати наступне у дереві проєкту СВУ: * Встановити, або помножити оригінальне, атрибут "Геометрія: x масштаб" (geomX) у значення (16/9)/(4/3) = 1.333, для: ** [[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|кореневої сторінки]]; ** всіх шаблонних сторінок на кшталт "[[Special:MyLanguage/Libs/Main_graphical_elements#grpGraph|Групи графіків]]", лише у сторінок, використаних як шаблони; ** всіх сторінок документів та панелей керування, індивідуально. * Через те, що сторінки мнемосхем рідко допускають зміну оригінального співвідношення сторін, з причини використання правильних фігур на кшталт кола та квадратів, ми вимушені розробляти ці кадри від початку та у розмірі [900*1.333 x 550] = [1199 x 550]. '''Q:''' Як я можу підключити візуалізатор UI.Vision до віддаленого серверу візуалізації або до ПЛК з цією функцією?<br/> '''Re:''' Так, ви можете створювати сервери візуалізації та ПЛК, засновані на модулі [[Special:MyLanguage/Modules/VCAEngine|UI.VCAEngine]], зі всіма даними СВУ проєктів візуалізації користувачів на них та очевидно зі встановленою там OpenSCADA. Надалі ви можете підключатися до цих віддалених серверів візуалізації та ПЛК за допомогою модуля [[Special:MyLanguage/Modules/Vision|UI.Vision]] для локальної розробки та візуалізації віддалених проєктів візуалізації користувача. Детальну інструкцію можете отримати у розділі "[[Special:MyLanguage/Documents/Quick_start#RemConUse|Підключення та використання віддалених та фонових конфігурацій]]" [[Special:MyLanguage/Documents/Quick_start|посібника зі Швидкого Старту]] та тут ви отримаєте коротку інструкцію. Ця коротка інструкція також корисна для отримання віддаленого контролю серверів візуалізації та ПЛК! Для здійснення цього маєте на клієнтській станції дотримуватися наступної процедури з модулем UI.Vision та з будь якою конфігурацією включно з порожньою: * Створити підключення до візуального серверу або ПЛК, як станції OpenSCADA, на [[:File:QTCfg_subsys_tr_sub_uk.png|сторінці транспортів]] будь якого конфігуратору OpenSCADA у режимі "Системний". Якщо також встановите режим "Користувацький", то після оновлення дерева навігації зможете контролювати віддалену станцію з цього конфігуратору та користувача. * Обрати на [[:File:Vision_cfg.png|сторінці візуалізатору]] будь якого конфігуратору OpenSCADA: нове підключення, користувача запуску, пароль користувача цієї віддаленої станції та проєкту(ів) для їх автоматичного виконання, інакше отримаєте режим розробки. Наступний запуск модуля UI.Vision має призвести до встановлення підключення до віддаленого серверу візуалізації або ПЛК з розробкою або виконанням їх проєктів. Для запиту станції разом із користувачем та паролем при загальному виклику модуля ви можете обрати підключення-станцію "<Вибір>", корисно за наявності багато станцій керування та відкриття декількох з них одночасно. '''Q:''' Як я можу автоматично запустити OpenSCADA з відповідним оперативним інтерфейсом користувача — проєктом диспетчерського контролю?<br/> '''Re:''' Звісно, після завершення процесу розробки маєте забезпечити запуск програми разом із запуском операційної системи та повно-екранне виконання результуючого оперативного інтерфейсу користувача. Для цього маєте дотримуватися процедури: * Забезпечте специфічні до системи заходи запуску самої OpenSCADA з вашим проєктом. Тут маєте попередньо створити або знайти іконку робочого столу вашого проєкту у OpenSCADA з [[Special:MyLanguage/Documents/Program_manual#Projects|менеджеру проєктів OpenSCADA]] та скопіювати або розташувати її у теці або переліку програм, що запускаються автоматично вашим оточенням робочої стільниці. Деталі дивіться у документації на відповідне оточення робочої стільниці. * Оберіть запуск модуля [[Special:MyLanguage/Modules/Vision|UI.Vision]] із загальним запуском OpenSCADA, у [[Special:MyLanguage/Modules/QTStarter#Cfg|полі "Модулі Qt для запуску" модуля UI.QTStarter]] з будь якого конфігуратору OpenSCADA. * Оберіть Ваш проєкт СВУ для його автоматичного виконання, у [[Special:MyLanguage/Modules/Vision#Cfg|полі "Перелік проєктів для запуску" модуля UI.Vision]] з будь якого конфігуратору OpenSCADA. Тут ми також рекомендуємо встановити для виконання проєкту користувача, відмінного від системного, звісно із правами на цей проєкт. '''Q:''' Чи можу я підлаштувати мій проєкт під дещо специфічне оформлення (брендінг)?<br/> '''Re:''' Більшість візуального оформлення (брендінгу) кінцевого користувача розташовано у [[Special:MyLanguage/Modules/VCAEngine|кінцевому інтерфейсі СВУ користувача]], але ви можете також забажати підлаштувати зображення заставки, іконки та подібне: * іконка праворуч нагорі кадру "[[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|Коренева сторінка (СО)]]" — просто завантажте ваше зображення до [[:file:Vision_wlbpg_mime_uk.png|ресурсів проєкту]] як "logo", бажано у розмірі '''110x55''' пікселів (2x1); * іконка вікна-сторінки проєкту при виконанні — просто завантажте вашу [[:file:Vision_wlbpg_uk.png|іконку проєкту]], бажано у розмірі '''128x128''' пікселів, або очистіть це для використання зображення загальної іконки проєкту (дивіться нижче) яка може бути перекладена — залежна від мови поточного інтерфейсу; * [[:file:QTStarter_splash_uk.png|зображення стартової заставки]] проєкту — підготуйте представницьке зображення, бажано у розмірі '''600x300''', та розташуйте його до [[Special:MyLanguage/Documents/Program_manual#Config|теки іконок проєкту]] із назвою "'''{ProjectID}_splash.[png|gif|jpg|jpeg]'''" для заставки запуску та виходу і "'''{ProjectID}_splash_exit.[png|gif|jpg|jpeg]'''" для заставки виходу; * зображення загальної іконки проєкту для [[:file:QTCfg_listelem.png|дерева навігації конфігураторів OpenSCADA]] — підготуйте представницьке зображення, бажано у розмірі '''128x128''', та розташуйте його до [[Special:MyLanguage/Documents/Program_manual#Config|теки іконок проєкту]] із назвою "'''{ProjectName}.[png|gif|jpg|jpeg]'''", де ''ProjectName'' може бути або специфічним до мови або на Базовій Мові для всіх випадків або навіть обидві якщо ваш проєкт є [[Special:MyLanguage/Documents/How_to/Create_multi_language_project|багатомовним]]. '''Q:''' Оперативний інтерфейс оператору запускається на весь екран та я не можу його закрити для отримання доступу до системного оточення робочої стільниці!<br/> '''Re:''' Звісно, OpenSCADA захищає систему контролю від закриття та непривілейованого доступу до системного оточення робочої стільниці. Відтак, для отримання доступу до системного оточення робочої стільниці ви маєте бути привілейованим користувачем, змінити користувача інтерфейсу на свій обліковий запис та у глобальному меню, що виникло, здійснити потрібне: вимкнути повно-екранний режим, закрити або вийти з програми. Якщо глобальне меню не з'являється то маєте проблемне оточення робочого простору, як то Unity, яке "відриває" меню вікна; відтак, попередньо вимкніть цю функцію оточення! '''Q:''' Я можу легко підключати аналогові сигнали для побудови трендів примітивом [[Special:MyLanguage/Modules/VCAEngine#Diagram|Діаграма]], але використання тут дискретних-логічних сигналів не є таким очевидним...<br/> '''Re:''' Так, примітив [[Special:MyLanguage/Modules/VCAEngine#Diagram|Діаграма]] розроблено переважно для аналогових сигналів, але можете також використовувати тут дискретні-логічні сигнали як аналогові із двома станами [0,1], тож їх натуральна шкала це [0...1] і якщо підключите один сигнал у автоматичній-натуральній шкалі, то отримаєте його на весь екран, із заповненими стрічками для стану ПРАВДА (TRUE). Але це не дуже зручно та ви не зможете поєднувати його із іншими аналоговими або дискретними-логічними сигналами навіть у напівпрозорому кольорі, тож маєте вручну визначити шкалу для позиціювання стрічки дискретного-логічного сигналу у потрібній частині екрану. Деякі приклади шкал: * '''[0...5]''' — ділите екран по вертикалі на п'ять стрічок та відображаєте сигнал унизу; * '''[-4...1]''' — ділите екран по вертикалі на п'ять стрічок та відображаєте сигнал нагорі; * '''[-2...3]''' — ділите екран по вертикалі на п'ять стрічок та відображаєте сигнал уцентрі; * '''[0...10]''' — ділите екран по вертикалі на десять стрічок та відображаєте сигнал унизу. '''Q:''' Я маю дуже навантажену систему із багатьма процесами OpenSCADA, які працюють через Web інтерфейс та я бажаю зменшити навантаження на сервер і прискорити всі ці інтерфейси.<br/> '''Re:''' Так, типово інтерфейси OpenSCADA створено для функціювання за деякої достатньо швидкої періодичності перенесення-життя (100 мс) яка переважно підходить для активних локальних Qt-інтерфейсів [[Special:MyLanguage/Modules/Vision|модуля UI.Vision]] із високою реактивністю, та на достатньо швидких мережах при функціюванні із сервером візуалізації. Але наразі можете підлаштувати ваш інтерфейс для досягнення зменшення навантаження у рази: * першим та очевидним кроком є збільшення періодичності перенесення-життя в [[:file:Vision_wlbpg_uk.png|конфігурації Проєкту СВУ]], де можете встановити "Період обчислення" у значення до 500 мс для активних локальних Qt-інтерфейсів [[Special:MyLanguage/Modules/Vision|модуля UI.Vision]] та до 1000 мс для нешвидких Web-інтерфейсів [[Special:MyLanguage/Modules/WebVision|модуля UI.WebVision]]; * другим кроком є встановлення періоду оновлення динамічних даних залежно від того, що ви вважаєте достатньо частим, або вимкнути періодичне оновлення взагалі встановленням періодичності у -2; та здійснити це для [[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|головної-кореневої сторінки]] у [[:file:Vision_wdg_uk.png|конфігурації Віджету]] дерева вашого проєкту; те саме можете здійснити для всіх панелей розташованих у групі "Панелі керування (control)" логічної структури проєкту від головної-кореневої сторінки, встановивши потрібну періодичність для самої групи; * третім кроком є заглиблення у адаптацію ваших віджетів-кадрів для функціювання на великих періодичностях без втрати реактивності на кшталт вже адаптованих у стандартній бібліотеці як [[Special:MyLanguage/Libs/Main_graphical_elements#RootPgSo|основна-коренева сторінка]] та [[Special:MyLanguage/Libs/Main_graphical_elements#anShow|Відображення аналогового]]; та ця адаптація переважно передбачає: ** надсилання користувацьких подій за потреби у швидкому оновлені у наступному циклі життя після опрацювання подій; ** контроль періодичності виконання віджету узалежнено від ситуаційної активності на кшталт блимання курсору обрання та кольорів сигналізації. == {{Anch|Problems|Проблеми}} ([http://oscada.org/ua/forum/zbirnii-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugConfirmed актуальні], [http://oscada.org/ua/forum/zbirnii-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugEnvironment оточення], [http://oscada.org/ua/forum/zbirnii-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugFixed виправлено]) == '''Q:''' Чому я втратив дробову частину у всіх завантажених значеннях реального типу?<br/> '''Re:''' Ви використовуєте локаль, відмінну від "C" або загальної Англійської, та встановлюєте її прямо, змінною оточення "LC_NUMERIC" або її загальним варіантом "LC_ALL", що призводить до використання у функціях на кшталт atof() та sprintf() символу роздільника дробової частини відмінного від "." (крапка), часто це "," (кома). : '''!>''' Тобто, ніколи не встановлюйте змінних оточення "LC_NUMERIC" та "LC_ALL" прямо оскільки вони перевизначають коректне встановлення "LC_NUMERIC" у "C", в середині! Для зміни мови програми використовуйте тільки змінні "LANG" та "LANGUAGE", яких завжди достатньо. : '''+>''' Наразі проблему повністю виключено, через перевірку та очищення змінної оточення "LC_ALL"! '''Q:''' "Немає доступу для створення політики реального часу для '****'. Створено звичайну нитку!"<br /> '''Re:''' Таке повідомлення OpenSCADA формує при спробі встановити для потоку-завдання політики реального часу, за пріоритетом більше 0, у випадку запуску від звичайного користувача. : '''+>''' Потенційно такі права можна надати шляхом редагування файлу "/etc/security/limits.conf" наступним чином: <pre style="white-space: pre;"> user hard nice -20 user soft nice -15 user hard rtprio 99 user soft rtprio 90 </pre> '''Q:''' Я спостерігаю відсутність всіх текстових міток на графіках (примітив "Діаграма") інтерфейсів модуля [[Special:MyLanguage/Modules/WebVision|UI.WebVision]]. Чому так?<br /> '''Re:''' Такий результат можливий на інтерфейсах, побудованих на бібліотеці GD, та якщо сама ця бібліотека зібрана без використання бібліотеки FontConfig. На цей час тільки модуль [[Special:MyLanguage/Modules/WebVision|UI.WebVision]] використовує цю бібліотеку для виключної побудови примітивів "Елементарна Фігура" та "Діаграма". : '''+>''' Відтак, для виправлення цієї проблеми маєте встановити коректний пакет-збірку бібліотеки або скласти бібліотеку самостійно з FontConfig. Наразі відомо один випадок такого сорту проблеми з пакетом "libgd2-noxpm" старих версій дистрибутиву Linux Debian, де Ви маєте встановити коректний пакет "libgd2-xpm". '''Q:''' Я спостерігаю відсутність SVG-зображень у інтерфейсах Qt. Чому так?<br /> '''Re:''' Як правило це вказує на відсутність у системі Qt-модуля для SVG-графіки, наприклад, пакет "libqt5svg5" у Linux дистрибутивах на основі Debian. : '''+>''' Встановіть пакет або безпосередньо Qt-втулок підтримки SVG-графіки.
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
Printable version
MediaWiki
Help
Personal tools
English
Log in