Àâòîð: Ðîìàí Ñàâî÷åíêî, Ìàêñèì Ëûñåíêî (2010-2012)
Ñòàòóñ: Ïóáëèêàöèÿ
Âèäåî-äîïîëíåíèå: ftp://ftp.oscada.org/OpenSCADA/0.8.0/doc/ru/QuickStart.mkv
Îòêðûòàÿ ñèñòåìà OpenSCADA ÿâëÿåòñÿ ïðåäåëüíî ìîäóëüíîé, ãèáêîé è ìíîãîôóíêöèîíàëüíîé SCADA-ñèñòåìîé. Êàê ñëåäñòâèå ýòîãî ïåðâîå çíàêîìñòâî ñ OpenSCADA ìîæåò áûòü äîñòàòî÷íî ñëîæíûì ïî ïðè÷èíå ìàëûõ øàíñîâ ñîâïàäåíèÿ ïðåäûäóùåãî îïûòà ïîëüçîâàòåëÿ èëè ïîëíîãî åãî îòñóòñòâèÿ, ñ ïîäõîäàìè ðàáîòû â OpenSCADA. Îäíàêî, â çíà÷èòåëüíîé ñòåïåíè ýòî òîëüêî ïåðâîå âïå÷àòëåíèå, ïîñêîëüêó âñÿ ìîùü OpenSCADA îêàçûâàåòñÿ íà ëàäîíè ó ïîëüçîâàòåëÿ, îò èçîáèëèÿ êîòîðîé ïîëüçîâàòåëü ìîæåò ðàñòåðÿòüñÿ, è åìó ìîãóò ïîíàäîáèòüñÿ çíà÷èòåëüíûå óñèëèÿ äëÿ îòáîðà ôóíêöèé, íóæíûõ â ðåøåíèè åãî çàäà÷è.
Ïî ýòîé ïðè÷èíå è äëÿ íàãëÿäíîãî ïðåäñòàâëåíèÿ îáùåé êîíöåïöèè ðàáîòû â OpenSCADA ñîçäàí äàííûé äîêóìåíò. Äîêóìåíò â äîñòàòî÷íî êðàòêîé è íàãëÿäíîé ôîðìå ïðåäñòàâëÿåò ïóòü îò çàïóñêà OpenSCADA äî ñîçäàíèÿ ýëåìåíòîâ ïîëüçîâàòåëüñêîãî èíòåðôåéñà íà ðåàëüíûõ ïðèìåðàõ. Êðîìå òîãî, äîêóìåíò ñîäåðæèò ðàçäåë ñ ðåöåïòàìè ïî êîíôèãóðàöèè, ðåàëèçàöèè è ðåøåíèþ òèïîâûõ çàäà÷ ïîëüçîâàòåëÿ.
Äîêóìåíò íå ñîäåðæèò äåòàëüíîãî îïèñàíèÿ êîíöåïöèè è ãëóáîêîãî ïîãðóæåíèÿ â äåòàëè OpenSCADA, à ïðåäîñòàâëÿåò ññûëêè íà äîêóìåíòû OpenSCADA, ñîäåðæàùèå òàêóþ èíôîðìàöèþ.
Îïèñàíèå äîêóìåíòà âåä¸òñÿ ñèíõðîííî ñ ðåàëèçàöèåé ïðèìåðîâ íà äåìîíñòðàöèîííîé áàçå äàííûõ (ÁÄ), ìîäåëè ÀÃËÊÑ. Ñëåäîâàòåëüíî, ïîëüçîâàòåëü äîëæåí ïîëó÷èòü äèñòðèáóòèâ OpenSCADA ñ ýòîé ÁÄ, äëÿ íàãëÿäíîãî èçó÷åíèÿ è îïðîáîâàíèÿ ïðèìåðîâ.
ÀÐÌ (àááðåâèàòóðà) — Àâòîìàòèçèðîâàííîå Ðàáî÷åå Ìåñòî. Îáû÷íî ïðåäñòàâëÿåò èç ñåáÿ ñèñòåìíûé áëîê âû÷èñëèòåëüíîé ñèñòåìû, äèñïëåé, ìàíèïóëÿòîð «ìûøü» èíîãäà ñ êëàâèàòóðîé, è äðóãîå ïåðèôåðèéíîå îáîðóäîâàíèå, êîòîðîå ñëóæèò äëÿ âèçóàëüíîãî ïðåäñòàâëåíèÿ äàííûõ òåõíîëîãè÷åñêîãî ïðîöåññà, à òàêæå âûäà÷è óïðàâëÿþùèõ âîçäåéñòâèé íà ÒÏ.
Áëîêèðîâêà (òåðìèí) — óñëîâíàÿ ãðàíèöà òåõíîëîãè÷åñêîãî ïàðàìåòðà, ïî ïðåîäîëåíèþ êîòîðîé âûïîëíÿþòñÿ ïðåäóñòàíîâëåííûå àëãîðèòìîì äåéñòâèÿ ïî ïðåäîòâðàùåíèþ àâàðèè.  íåêîòîðûõ ðåæèìàõ ÒÏ (ïóñê) â ñîîòâåòñòâèè ñ ðåãëàìåíòîì ìîæåò áûòü íåîáõîäèìî îòêëþ÷åíèå áëîêèðîâêè (äåáëîêèðîâàíèå).
Äåáëîêèðîâàíèå (òåðìèí) — ïðîöåññ îòêëþ÷åíèÿ áëîêèðîâêè íà âðåìÿ ðàáîòû ÒÏ â ðåæèìàõ, äëÿ êîòîðûõ â ðåãëàìåíòå ïðåäóñìîòðåíà äàííàÿ îïåðàöèÿ. Âíèìàíèå, äåáëîêèðîâàíèå òåõíîëîãè÷åñêèõ ïàðàìåòðîâ ÿâëÿåòñÿ ñòðîãî îò÷¸òíîé îïåðàöèåé è äîëæíî ïðîèçâîäèòñÿ îïåðàòèâíûì ïåðñîíàëîì â ñîîòâåòñòâóþùåì ïîðÿäêå.
Êâèòàöèÿ (òåðìèí) — ïðîöåññ ïîäòâåðæäåíèÿ ôàêòà òîãî, ÷òî îïåðàòèâíûé ïåðñîíàë îáðàòèë âíèìàíèå íà íàðóøåíèå â ðàáîòå ÒÏ. Îáû÷íî ýòîò ïðîöåññ ïîäðàçóìåâàåò ïðèíÿòèå ìåð îïåðàòîðîì äëÿ óñòðàíåíèÿ íàðóøåíèÿ è íàæàòèå ñîîòâåòñòâóþùåé êíîïêè äëÿ ïðåêðàùåíèÿ ñèãíàëèçàöèè.
ÏËÊ (àááðåâèàòóðà) — Ïðîìûøëåííûé Ëîãè÷åñêèé Êîíòðîëëåð. Ìèêðîïðîöåññîðíîå ýëåêòðîííîå óñòðîéñòâî, íà êîòîðîå ÷åðåç óñòðîéñòâî ñîïðÿæåíèÿ ñ îáúåêòîì (ÓÑÎ) ñîáèðàþòñÿ ñèãíàëû òåõíîëîãè÷åñêèõ ïàðàìåòðîâ. ÏËÊ âûïîëíÿåò ôóíêöèþ íåïîñðåäñòâåííîãî ñáîðà äàííûõ, èõ îáðàáîòêó è âûäà÷ó óïðàâëÿþùèõ âîçäåéñòâèé ïîñðåäñòâîì àëãîðèòìîâ àâòîìàòè÷åñêîãî ðåãóëèðîâàíèÿ. Êðîìå òîãî ÏËÊ ïðåäîñòàâëÿåò äàííûå äëÿ âèçóàëèçàöèè ÒÏ, à òàêæå ïîëó÷àåò äàííûå ðó÷íîãî âìåøàòåëüñòâà îïåðàòîðà îò ñèñòåìû âåðõíåãî óðîâíÿ.
Ñèãíàëèçàöèÿ (òåðìèí) — ïðîöåññ óâåäîìëåíèÿ îïåðàòèâíîãî ïåðñîíàëà î íàðóøåíèè òåõíîëîãè÷åñêîãî ïðîöåññà èëè ðàáîòû îáîðóäîâàíèÿ àâòîìàòèçàöèè. Ñïîñîáû ñèãíàëèçàöèè ìîãóò áûòü ðàçëè÷íûõ òèïîâ âîçäåéñòâèÿ íà îðãàíû ÷óâñòâ ÷åëîâåêà ñ öåëüþ ïðèâëå÷åíèÿ âíèìàíèÿ. ×àñòî ïðåäóñìàòðèâàþòñÿ ñëåäóþùèå òèïû ñèãíàëèçàöèè:
ÒÏ (àááðåâèàòóðà) — Òåõíîëîãè÷åñêèé Ïðîöåññ. Âåñü êîìïëåêñ òåõíîëîãè÷åñêîãî îáîðóäîâàíèÿ ïðîèçâîäñòâåííîãî ïðîöåññà.
ÓÑÎ (àááðåâèàòóðà) — Óñòðîéñòâî Ñîïðÿæåíèÿ ñ Îáúåêòîì. Ðÿä óñòðîéñòâ èëè ìîäóëåé ÏËÊ, ê êîòîðûì íåïîñðåäñòâåííî ïîäêëþ÷àþòñÿ ñèãíàëû ñ äàò÷èêîâ ÒÏ äëÿ ïîñëåäóþùåãî ïðåîáðàçîâàíèÿ èç àíàëîãîâîãî â öèôðîâîé âèä è îáðàòíî. Ïðåîáðàçîâàíèå îñóùåñòâëÿåòñÿ ñ öåëþ ïîñëåäóþùåé îáðàáîòêè çíà÷åíèé òåõíîëîãè÷åñêèõ ïàðàìåòðîâ â ÏËÊ.
Óñòàâêà ñèãíàëèçàöèè (òåðìèí) — óñëîâíàÿ ãðàíèöà çíà÷åíèÿ òåõíîëîãè÷åñêîãî ïàðàìåòðà, ïðåîäîëåíèå êîòîðîé ñ÷èòàåòñÿ íåøòàòíîé ñèòóàöèåé. Îáû÷íî ïðåäóñìàòðèâàþòñÿ ñëåäóþùèå ãðàíèöû:
SCADA (àááðåâèàòóðà-àí.) — Supervisory Control And Data Acquisition (Äèñïåò÷åðñêàÿ ñèñòåìà óïðàâëåíèÿ è ñáîðà äàííûõ). Ïðîãðàììíîå îáåñïå÷åíèå, âûïîëíÿþùåå êîìïëåêñ çàäà÷ ïî ñáîðó äàííûõ ÒÏ, èõ àðõèâèðîâàíèå è ïðåäñòàâëåíèå, à òàêæå âûäà÷ó óïðàâëÿþùèõ âîçäåéñòâèé îïåðàòîðîì â ðó÷íîì ðåæèìå.
Óñòàíîâêó äèñòðèáóòèâà OpenSCADA ìîæíî îñóùåñòâèòü äâóìÿ ñïîñîáàìè. Ïåðâûé è ïðîñòîé ñïîñîá - ýòî ïîëó÷èòü ãîòîâûå ïàêåòû äëÿ èñïîëüçóåìîãî äèñòðèáóòèâà ÎÑ Linux. Âòîðîé — ñîáðàòü ñèñòåìó OpenSCADA èç èñõîäíûõ òåêñòîâ.  öåëîì ïðîöåäóðà óñòàíîâêè ñèëüíî çàâèñèò îò èñïîëüçóåìîãî äèñòðèáóòèâà Linux è èñ÷åðïûâàþùå å¸ îïèñàòü â äàííîì ðóêîâîäñòâå íå ïðåäñòàâëÿåòñÿ âîçìîæíûì! Ïîýòîìó ìîæåò ïîíàäîáèòüñÿ ãëóáîêîå çíàêîìñòâî ñ ìåõàíèçìàìè óñòàíîâêè ÏÎ âûáðàííîãî äèñòðèáóòèâà Linux èç åãî äîêóìåíòàöèè.
 ñëó÷àå îòñóòñòâèÿ ó ïîëüçîâàòåëÿ äîñòàòî÷íî ãëóáîêèõ çíàíèé è óìåíèé â âûáðàííîì äèñòðèáóòèâå Linux, íàñòîÿòåëüíî ðåêîìåíäóåòñÿ âûáèðàòü äèñòðèáóòèâ Linux ïî êðèòåðèþ íàëè÷èÿ äëÿ íåãî ïàêåòîâ ñèñòåìû OpenSCADA â ðåïîçèòîðèÿõ äèñòðèáóòèâà, ÷òî ïîçâîëèò è ãàðàíòèðóåò ïðîñòåéøóþ è áåñïðîáëåìíóþ óñòàíîâêó!
Åñëè ó ïîëüçîâàòåëÿ âûçûâàåò çàòðóäíåíèå óñòàíîâêà íå òîëüêî OpenSCADA, íî è äèñòðèáóòèâà Linux, òî íà ïåðâîå âðåìÿ îí ìîæåò âîñïîëüçîâàòüñÿ "æèâûì" äèñòðèáóòèâîì Linux, ñ óñòàíîâëåííîé è ãîòîâîé äëÿ ðàáîòû è èçó÷åíèÿ äåìîíñòðàöèåé OpenSCADA. Íà äàííûé ìîìåíò äîñòóïíû "æèâûå" ñáîðêè íà îñíîâå äèñòðèáóòèâà ALTLinux è Debian â âèäå ãèáðèäíûõ CD-îáðàçîâ, íà ñòðàíèöå: http://oscada.org/ru/glavnaja/zagruzit. Äåòàëüíåå ñìîòðèòå â ðàçäåëå "Ðåöåïòû".
Äèíàìè÷åñêàÿ ìîäåëü êîìïðåññîðíîé ñòàíöèè, íà 6 ãàçîâûõ êîìïðåññîðîâ, êîòîðàÿ ëåæèò â îñíîâå äåìîíñòðàöèîííîé ÁÄ, òðåáóåò çíà÷èòåëüíûõ âû÷èñëèòåëüíûõ ðåñóðñîâ, à èìåííî ïðîöåññîðà ñ ÷àñòîòîé áîëåå 1 ÃÃö. Äàííûå ðåñóðñû òðåáóþòñÿ èìåííî äëÿ äèíàìè÷åñêîé ìîäåëè è íå ÿâëÿþòñÿ îáùèì ïîêàçàòåëåì ðåñóðñî¸ìêîñòè ïðîãðàììû â êîíå÷íûõ çàäà÷àõ!
Óñòàíîâêà OpenSCADA èç ãîòîâûõ ïàêåòîâ, â ñâîþ î÷åðåäü, ìîæåò îñóùåñòâëÿòüñÿ äâóìÿ ìåòîäàìè. Ïåðâûé — ïðîñòåéøèé, êîãäà ïàêåòû OpenSCADA óæå ïðèñóòñòâóþò â îôèöèàëüíûõ, äîïîëíèòåëüíûõ ðåïîçèòîðèÿõ èñïîëüçóåìîãî äèñòðèáóòèâà ÎÑ Linux èëè ñîáñòâåííûõ ðåïîçèòîðèÿõ ïàêåòîâ OpenSCADA. Óñòàíîâêà òàêèõ ïàêåòîâ — âîïðîñ çàïóñêà òèïîâîé ïðîãðàììû óïðàâëåíèÿ ïàêåòàìè äèñòðèáóòèâà ñ ïîñëåäóþùèì âûáîðîì ïàêåòîâ OpenSCADA. Âòîðîé ñïîñîá ïîäðàçóìåâàåò ïîëó÷åíèå ïàêåòîâ OpenSCADA è óñòàíîâêó èõ âðó÷íóþ.
Ïðîâåðèòü íà íàëè÷èå ïàêåòîâ OpenSCADA â ðåïîçèòîðèÿõ èñïîëüçóåìîãî äèñòðèáóòèâà Linux, à òàêæå çàãðóçèòü ïàêåòû OpenSCADA äëÿ ðó÷íîé óñòàíîâêè, ìîæíî íà ñòðàíèöå çàãðóçêè îôèöèàëüíîãî ñàéòà OpenSCADA (http://oscada.org/ru/glavnaja/zagruzit/).
Çàãðóæàòü ïàêåòû íóæíî íåïîñðåäñòâåííî äëÿ âåðñèè èñïîëüçóåìîãî äèñòðèáóòèâà, èíà÷å ïðè óñòàíîâêå ìîãóò âîçíèêíóò íåðàçðåøèìûå ïðîáëåìû ñ çàâèñèìîñòÿìè.
Íà äàííûé ìîìåíò ïàêåòû ñèñòåìû OpenSCADA ìîæíî âñòðåòèòü â ðåïîçèòîðèÿõ òàêèõ äèñòðèáóòèâîâ ÎÑ Linux: ALTLinux è äèñòðèáóòèâàõ, îñíîâàííûõ íà ïàêåòíîé áàçå
Fedora. Êðîìå òîãî, ðåïîçèòîðèè ñ ïàêåòàìè ïðåäîñòàâëÿþòñÿ ñàìèì ïðîåêòîì OpenSCADA, ñëóæåáíàÿ èíôîðìàöèÿ êîòîðûõ îáû÷íî ðàñïîëàãàåòñÿ ðÿäîì ñ ñàìèìè ïàêåòàìè è îáíîâëÿåòñÿ àâòîìàòè÷åñêè ïðè ñáîðêå, ò.å. ýòè ðåïîçèòîðèè ÿâëÿþòñÿ íàèáîëåå ñâåæèìè è ïðåäïî÷òèòåëüíûìè.
Àäðåñà ðåïîçèòîðèåâ Âû ìîæåòå ïîëó÷èòü íà òîé-æå ñòðàíèöå çàãðóçêè OpenSCADA (http://oscada.org/ru/glavnaja/zagruzit/) èëè â ïðèìåðàõ íèæå.
Ïðè óñòàíîâêå èç ðåïîçèòîðèÿ âûáèðàåì òîëüêî ïàêåò "openscada-Model.AGLKS". Âñ¸ îñòàëüíîå, â ñîîòâåòñòâèè ñ çàâèñèìîñòÿìè, áóäåò âûáðàíî è óñòàíîâëåíî àâòîìàòè÷åñêè.
Óñòàíîâêà èç ðåïîçèòîðèÿ õîòü è ïðîñòà, íî ÿâëÿåòñÿ ñïåöèôè÷íîé äëÿ êàæäîãî äèñòðèáóòèâà Linux, îêîííîãî ìåíåäæåðà èëè îòäåëüíîé ïðîãðàììû ðàáîòû ñ ðåïîçèòîðèÿìè è ïàêåòàìè ïîýòîìó äëÿ íèõ îòîøë¸ì ÷èòàòåëÿ ê ñîîòâåòñòâóþùåé äîêóìåíòàöèè íà äèñòðèáóòèâ èëè ïðîãðàììó. Çäåñü-æå âêðàòöå ðàññìîòðèì äîáàâëåíèå ðåïîçèòîðèÿ è óñòàíîâêó OpenSCADA ñ ïîìîùüþ òèïîâûõ èíñòðóìåíòîâ êîìàíäíîé ñòðîêè:
Ðåïîçèòîðèè ïàêåòîâ, îñíîâàííûå íà ìåíåäæåðå APT (Debian, Ubuntu, ALTLinux) — äîáàâëÿþòñÿ ðåäàêòèðîâàíèåì ôàéëà /etc/apt/sources.list ïóò¸ì âñòàâêè îäíîé ñòðîêè:
Debian: "deb ftp://ftp.oscada.org/OpenSCADA/0.8.0/Debian/8 ./"
Debian (ðàáî÷àÿ âåðñèÿ): "deb ftp://ftp.oscada.org/OpenSCADA/Work/Debian/8 ./"
Debian (ðàáî÷àÿ âåðñèÿ, ìîäóëè îòäåëüíî): "deb ftp://ftp.oscada.org/Debian/8/openscada ./"
Ubuntu: "deb ftp://ftp.oscada.org/OpenSCADA/0.8.0/Ubuntu/14.04 ./"
Ubuntu (ðàáî÷àÿ âåðñèÿ): "deb ftp://ftp.oscada.org/OpenSCADA/Work/Ubuntu/14.04 ./"
Óñòàíîâêà:
ALTLinux: "rpm ftp://ftp.oscada.org/OpenSCADA/0.8.0/ALTLinux/7 openscada main"
ALTLinux (ðàáî÷àÿ âåðñèÿ): "rpm ftp://ftp.oscada.org/OpenSCADA/Work/ALTLinux/6 openscada main"
ALTLinux (ðàáî÷àÿ âåðñèÿ, ìîäóëè îòäåëüíî): "rpm ftp://ftp.oscada.org/ALTLinux/7 openscada main"
Óñòàíîâêà:
Äîáàâëåíèå êëþ÷à ïðîâåðêè ïîäïèñè (ïîäëèííîñòè) ðåïîçèòîðèÿ è ïàêåòîâ â í¸ì (íåîáÿçàòåëüíî è èñïîëüçóåòñÿ íå âî âñåõ ðåïîçèòîðèÿõ):
Ðåïîçèòîðèè ïàêåòîâ, îñíîâàííûå íà ìåíåäæåðå YUM (RedHat, Fedora, CentOs) — äîáàâëÿþòñÿ ñîçäàíèåì ôàéëà /etc/yum.repos.d/openscada.repo ñ ñîäåðæèìûì:
Óñòàíîâêà:
Ðåïîçèòîðèè ïàêåòîâ SuSE YaST — äîáàâëÿþòñÿ êîìàíäîé:
Óñòàíîâêà:
Äëÿ ðó÷íîé óñòàíîâêè ïàêåòîâ OpenSCADA çàãðóçèì èõ èç îôèöèàëüíîãî ñàéòà èëè äðóãîãî èñòî÷íèêà. Çàãðóçèòü ìîæíî äâà íàáîðà ïàêåòîâ.
Ïåðâûé íàáîð ïðåäñòàâëåí äåâÿòüþ ïàêåòàìè:
Âòîðîé íàáîð ïðåäñòàâëåí ïîðÿäêà ïÿòüþäåñÿòüþ ïàêåòàìè, ñ âûäåëåíèåì ìîäóëåé OpenSCADA â îòäåëüíûå ïàêåòû:
Ïåðâûé íàáîð ïàêåòîâ áîëüøå ïðåäíàçíà÷åí äëÿ ïðîñòîé-ðó÷íîé óñòàíîâêè, ïîñêîëüêó ñîäåðæèò òîëüêî äåâÿòü ïàêåòîâ. Âòîðîé íàáîð ïðåäíàçíà÷åí äëÿ ïîìåùåíèÿ â ðåïîçèòîðèé äèñòðèáóòèâà Linux è ïîñëåäóþùåé óñòàíîâêè èõ ñ ïîìîùüþ ïàêåòíîãî ìåíåäæåðà, îñóùåñòâëÿþùåãî àâòîìàòè÷åñêîå ðàçðåøåíèå çàâèñèìîñòåé. Âòîðîé íàáîð ïàêåòîâ ïîçâîëÿåò óñòàíîâèòü òîëüêî íóæíûå êîìïîíåíòû OpenSCADA, òåì ñàìûì îïòèìèçèðóÿ ðàáî÷åå îêðóæåíèå, ÷åãî íå ïîçâîëÿåò îñóùåñòâèòü ïåðâûé íàáîð ïàêåòîâ.
Ðó÷íóþ óñòàíîâêó RPM-ïàêåòîâ ïåðâîãî íàáîðà ìîæíî îñóùåñòâèòü êîìàíäîé, ïðåäâàðèòåëüíî ñìåíèâ ðàáî÷óþ äèðåêòîðèþ íà äèðåêòîðèþ ñ ïàêåòàìè:
Ðó÷íóþ óñòàíîâêó DEB-ïàêåòîâ ïåðâîãî íàáîðà ìîæíî îñóùåñòâèòü êîìàíäîé, ïðåäâàðèòåëüíî ñìåíèâ ðàáî÷óþ äèðåêòîðèþ íà äèðåêòîðèþ ñ ïàêåòàìè:
 ïðîöåññå âûïîëíåíèÿ óñòàíîâêè ìîãóò âîçíèêíóòü îøèáêè, ñâÿçàííûå ñ íåóäîâëåòâîð¸ííûìè çàâèñèìîñòÿìè. Ïðè ðó÷íîé óñòàíîâêå èç ïàêåòîâ óäîâëåòâîðÿòü èõ íóæíî áóäåò âðó÷íóþ, ïîäîáíî óñòàíîâêå ïàêåòîâ OpenSCADA, èëè ÷åðåç ìåíåäæåð ïàêåòîâ äèñòðèáóòèâà Linux. Äåòàëüíåå îçíàêîìèòüñÿ ñ ïðîöåññîì óñòàíîâêè ÏÎ â RPM-ïàêåòàõ ìîæíî ïî ññûëêå: http://skif.bas-net.by/bsuir/admin/node51.html.
 ñèñòåìàõ Linux ñ APT-ìåíåäæåðîì ïàêåòîâ ìîæíî çàãðóæåííûå ôàéëû ïàêåòîâ ëåãêî îáíîâëÿòü ïðÿìî èç äèðåêòîðèè ñ ýòèìè ïàêåòàìè, íå ïîìåùàÿ èõ â ðåïîçèòîðèé ïàêåòîâ, ñ àâòîìàòè÷åñêèì ðàçðåøåíèåì çàâèñèìîñòåé:
Åñëè íåò âîçìîæíîñòè ïîëó÷èòü ãîòîâûå ïàêåòû OpenSCADA äëÿ âûáðàííîãî äèñòðèáóòèâà, òî îñòà¸òñÿ òîëüêî âàðèàíò ñáîðêè OpenSCADA èç èñõîäíûõ òåêñòîâ. Ïðîöåññ ñáîðêè OpenSCADA äåòàëüíî îïèñàí â ðóêîâîäñòâå ïî ññûëêå http://wiki.oscada.org/Doc/SborkaIzIsxodnikov. Îäíàêî íóæíî îòìåòèòü, ÷òî åñëè Âàì óäàëîñü ñîáðàòü OpenSCADA èç èñõîäíûõ òåêñòîâ, òî ýòî ðóêîâîäñòâî íå äëÿ Âàñ è Âû, ñêîðåå âñåãî, ìîæåòå ëåãêî îñâîèòü áàçîâóþ äîêóìåíòàöèþ OpenSCADA (http://wiki.oscada.org/Doc/OpisanieProgrammy).
Äàííûé ðàçäåë ïðèâåä¸í çäåñü òîëüêî äëÿ ïîëíîòû è öåëîñòíîñòè ðàññìîòðåíèÿ âîïðîñà, ïîñêîëüêó òðåáîâàíèå êâàëèôèêàöèîííîãî óðîâíÿ ïîëüçîâàòåëÿ äëÿ ýòîãî ðàçäåëà çíà÷èòåëüíî âûøå óðîâíÿ äîêóìåíòà â öåëîì!
Ïîñëå êîððåêòíîé óñòàíîâêè OpenSCADA ñ ÁÄ ìîäåëè "ÀÃËÊÑ" íèêàêîé ïðåäâàðèòåëüíîé íàñòðîéêè íå òðåáóåòñÿ. Åñëè íóæíî âûïîëíèòü îñîáóþ íàñòðîéêó, êîòîðàÿ îòëè÷àåòñÿ îò áàçîâîé, òî âîñïîëüçóéòåñü äîêóìåíòîì îïèñàíèÿ ïðîãðàììû OpenSCADA ïî ññûëêå: http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-1.
Äåìîíñòðàöèÿ OpenSCADA íà îñíîâå ÁÄ ìîäåëè "ÀÃËÊÑ" ýòî íå òî æå ÷òî îáû÷íî ïðåäîñòàâëÿþò êîììåð÷åñêèå ïðîèçâîäèòåëè ÏÎ ñ öåëüþ ïðîäåìîíñòðèðîâàòü âîçìîæíîñòè, íî èñêëþ÷èòü èëè óñëîæíèòü íîðìàëüíóþ ðàáîòó ïóò¸ì îãðàíè÷åíèÿ ôóíêöèé. Äåìîíñòðàöèÿ OpenSCADA ýòî ïîëíî-ôóíêöèîíàëüíàÿ ñèñòåìà, ïðåäîñòàâëÿþùàÿ ïðèìåðû ðåàëèçàöèè è íàñòðîéêè ðàçëè÷íûõ êîìïîíåíòîâ. Íà îñíîâå ÁÄ ìîäåëè "ÀÃËÊÑ" è äðóãèõ ìîäåëåé OpenSCADA ìîæíî ëåãêî ñîçäàâàòü ñîáñòâåííûå ïðîåêòû, èñïîëüçóÿ ïðåäîñòàâëåííûå íàðàáîòêè.
Çàïóñòèòü íà èñïîëíåíèå OpenSCADA ñ ÁÄ ìîäåëè "ÀÃËÊÑ" ìîæíî èç ìåíþ îêðóæåíèÿ ðàáî÷åãî ñòîëà â ðàçäåëå "Ãðàôèêà", ïóíêò "Ìîäåëü 'ÀÃËÊÑ' íà îòêðûòîé ñèñòåìå âèçóàëüíîãî êîíòðîëÿ è ñáîðà äàííûõ" ñ õàðàêòåðíîé èêîíêîé (ðèñ.3.1).
Çàïóñê òàêæå ìîæíî îñóùåñòâèòü èç êîíñîëè êîìàíäîé:
Ïðè çàïóñêå OpenSCADA èç êîíñîëè, ñ ïîìîùüþ êîìàíäû "$ openscada", îñóùåñòâëÿåòñÿ çàïóñê áåç êîíôèãóðàöèè, â ðåçóëüòàòå êîòîðîãî çàïðàøèâàåòñÿ ïîëüçîâàòåëü è ïàðîëü äëÿ âõîäà. Ïî óìîë÷àíèþ â ñèñòåìå OpenSCADA ïðåäóñìîòðåí ïðèâèëåãèðîâàííûé ïîëüçîâàòåëü "root" (ïàðîëü "openscada") è íåïðèâèëåãèðîâàííûé "user" (ïàðîëü "user"), êîòîðûå íå èìåþò íèêàêîãî îòíîøåíèÿ ê ïîëüçîâàòåëÿì îïåðàöèîííîé ñèñòåìû. Çàïóñê OpenSCADA òàêèì îáðàçîì èìååò ñìûñë òîëüêî îò ñóïåðïîëüçîâàòåëÿ ÎÑ ("root") èëè â ðåæèìå äåìîíà.
Ïîñëå çàïóñêà ïîëó÷èì îêíî ãðàôè÷åñêîãî êîíôèãóðàòîðà ñèñòåìû OpenSCADA — QTCfg (ðèñ.3.2) ñ îòêðûòîé êîðíåâîé ñòðàíèöåé. Äåìîíñòðàöèîííàÿ ÁÄ ñïåöèàëüíî íàñòðîåíà òàê, ÷òîáû ïåðâûì ïðè çàïóñêå ïîÿâëÿëîñü îêíî êîíôèãóðàòîðà.  äàëüíåéøåì ìîæíî îòêðûòü îêíî ðàçðàáîòêè ãðàôè÷åñêèõ èíòåðôåéñîâ ïîëüçîâàòåëÿ, à òàêæå çàïóñòèòü ïðîåêò ïîëüçîâàòåëüñêîãî èíòåðôåéñà íà èñïîëíåíèå.
Êîíôèãóðàòîð OpenSCADA ÿâëÿåòñÿ îñíîâíûì è äîñòàòî÷íûì ñðåäñòâîì äëÿ êîíôèãóðàöèè ëþáîãî êîìïîíåíòà ñèñòåìû. Êàê è ìíîãèå êîìïîíåíòû OpenSCADA, êîíôèãóðàòîð ðåàëèçîâàí â âèäå ìîäóëÿ. Êðîìå êîíôèãóðàòîðà QTCfg ìîãóò áûòü äîñòóïíû äðóãèå êîíôèãóðàòîðû, âûïîëíÿþùèå òå æå ôóíêöèè, íî ðåàëèçîâàííûå íà îñíîâå äðóãèõ òåõíîëîãèÿõ. Íàïðèìåð, òàêîâûìè ÿâëÿþòñÿ Web-êîíôèãóðàòîðû: WebCfg è WebCfgD.
Âñå äåéñòâèÿ â äàëüíåéøåì ìû áóäåì ðàññìàòðèâàòü òîëüêî â êîíôèãóðàòîðå QTCfg, õîòÿ èõ ìîæíî áóäåò âûïîëíèòü è â äðóãèõ êîíôèãóðàòîðàõ.
Ñòðóêòóðó èíòåðôåéñà îêíà êîíôèãóðàòîðà ìîæíî äåòàëüíî ðàññìîòðåòü ïî ññûëêå http://wiki.oscada.org/Doc/QTCfg. Äëÿ íàñ æå ñåé÷àñ áîëåå âàæíî ðàññìîòðåòü âñå äîñòóïíûå èíòåðôåéñû OpenSCADA, ïîýòîìó íàæì¸ì ïðåäïîñëåäíþþ ñâåðõó èêîíêó íà ïàíåëè èíñòðóìåíòîâ ïîñëå ÷åãî îòêðîåòñÿ îêíî ðàçðàáîòêè ïîëüçîâàòåëüñêîãî èíòåðôåéñà (ðèñ.3.3).
Äàëåå ìîæåì çàïóñòèòü ïðîåêò "AGLKS" íà èñïîëíåíèå. Äëÿ ýòîãî âûáèðàåì åãî â ïåðå÷íå ïðîåêòîâ è çàïóñêàåì ïóò¸ì íàæàòèÿ íà ïåðâóþ ñëåâà èêîíêó íà ïàíåëè èíñòðóìåíòîâ èëè â êîíòåêñòíîì ìåíþ, â ðåçóëüòàòå ÷åãî ïîëó÷èì îêíî ïîëüçîâàòåëüñêîãî èíòåðôåéñà (ðèñ.3.4).
Ïîñòðîåíèå è èñïîëíåíèå ïîëüçîâàòåëüñêèõ èíòåðôåéñîâ îñóùåñòâëÿåòñÿ ìîäóëåì Vision ïîäñèñòåìû "Ïîëüçîâàòåëüñêèå èíòåðôåéñû". Êðîìå ýòîãî ìîäóëÿ ìîãóò áûòü äîñòóïíû èíûå ìîäóëè âèçóàëèçàöèè. Íàïðèìåð, OpenSCADA ïðåäîñòàâëÿåò ìîäóëü WebVision, êîòîðûé ïîçâîëÿåò èñïîëíÿòü ïðîåêòû, ðàíåå ðàçðàáîòàííûå â èíòåðôåéñå ìîäóëÿ Vision, ïîñðåäñòâîì Web-òåõíîëîãèé è ñòàíäàðòíîãî Web-áðàóçåðà. Âñå äåéñòâèÿ â äàëüíåéøåì ìû áóäåì ðàññìàòðèâàòü òîëüêî â èíòåðôåéñå ìîäóëÿ Vision.
Òàêèì îáðàçîì ìû çàïóñòèëè äåìîíñòðàöèþ OpenSCADA è ïîçíàêîìèëèñü ñ îñíîâíûì íàáîðîì èíñòðóìåíòîâ.  äàëüíåéøåì áóäåì èõ èñïîëüçîâàòü äëÿ êîíôèãóðàöèè OpenSCADA, ñîçäàíèÿ çàäà÷ ñáîðà äàííûõ, îáâÿçêè ñîáðàííûõ äàííûõ, ñ öåëüþ èõ îáðàáîòêè è âûäà÷è âîçäåéñòâèé, à òàêæå äëÿ ñîçäàíèÿ ïîëüçîâàòåëüñêîãî èíòåðôåéñà âèçóàëèçàöèè ïîëó÷åííûõ äàííûõ è âûäà÷è óïðàâëÿþùèõ âîçäåéñòâèé.
Çàêðîåì îêíî èñïîëíåíèÿ ïðîåêòà "AGLKS" è îêíî ðàçðàáîòêè ïîëüçîâàòåëüñêîãî èíòåðôåéñà äëÿ ïîäãîòîâêè ê èçó÷åíèþ ñëåäóþùèõ ðàçäåëîâ.
Âåñü ïðîöåññ êîíôèãóðàöèè SCADA-ñèñòåìû äëÿ âûïîëíåíèÿ ôóíêöèé âåðõíåãî óðîâíÿ ìîæíî óñëîâíî ðàçäåëèòü íà äâà ýòàïà:
Âñå äåéñòâèÿ â ïîñëåäóþùèõ ðàçäåëàõ îïèñàíû â îêðóæåíèè ÁÄ ìîäåëè "ÀÃËÊÑ" (äåìîíñòðàöèÿ) ñ öåëüþ êàê ìîæíî áîëåå ïîëíîãî è íàãëÿäíîãî ïðåäñòàâëåíèÿ ïðîöåññà êîíôèãóðàöèè, ñ âîçìîæíîñòüþ ïîäêëþ÷åíèÿ ê ðåàëüíîìó-æèâîìó èñòî÷íèêó äàííûõ, ðåàëèçîâàííîìó íà îñíîâå ìîäåëè òåõíîëîãè÷åñêîãî ïðîöåññà (ÒÏ) ãàçî-êîìïðåññîðíîé ñòàíöèè. Îäíàêî íóæíî íåñêîëüêî îòâëå÷üñÿ è îïèñàòü ïðîöåññ ñîçäàíèÿ ïîëüçîâàòåëüñêîãî ïðîåêòà ñ ÷èñòîãî ëèñòà, ÷òî î÷åâèäíî ÿâëÿåòñÿ Âàøåé êîíå÷íîé öåëüþ. Íà îñíîâå íîâîãî ïîëüçîâàòåëüñêîãî ïðîåêòà ìîæíî âûïîëíÿòü âñå îïèñàííûå íèæå äåéñòâèÿ ñ ÁÄ ìîäåëè "ÀÃËÊÑ", íî ñ îãëÿäêîé íà èñòî÷íèêè äàííûõ ñîáñòâåííîãî, íîâîãî, ïðîåêòà.
Äëÿ çàïóñêà ÷èñòîãî ïîëüçîâàòåëüñêîãî ïðîåêòà â ìåíþ îêðóæåíèÿ ðàáî÷åãî ñòîëà, ðàçäåëå "Ãðàôèêà", ïðåäóñìîòðåí ïóíêò "Îòêðûòàÿ SCADA ñèñòåìà" ñ õàðàêòåðíîé èêîíêîé (ðèñ.3.1.1).
Çàïóñê òàêæå ìîæíî îñóùåñòâèòü èç êîíñîëè êîìàíäîé:
Íà÷èíàÿ ñ âåðñèè 0.9 OpenSCADA âûçîâ óêàçàííîé êîìàíäû ñîçäàñò äèàëîã äëÿ âûáîðà ñîçäàíèÿ íîâîãî ïðîåêòà èëè èñïîëíåíèÿ ïðåä-óñòàíîâëåííûõ è ïîëüçîâàòåëüñêèõ ïðîåêòîâ. Äëÿ ôîðìèðîâàíèÿ äèàëîãîâ âûáîðà è èìåíè íîâîãî ïðîåêòà èñïîëüçóþòñÿ äèàëîãîâûå ïðîãðàììû, â ïðèâåäåííîì ïðèîðèòåòå ïðîâåðêè: "dialog" (â ñëó÷àå íàëè÷èÿ àêòèâíîãî òåðìèíàëà), "kdialog" (ðèñ.3.1.2), "zenity" òà "Xdialog". Âûáèðàåì ïóíêò ìåíþ "<Íîâûé ïðîåêò>" è ââîäèì èìÿ ïðîåêòà "start" íà ñëåäóþùåì äèàëîãå.
×èñòûé ïîëüçîâàòåëüñêèé ïðîåêò íå ñîäåðæèò íèêàêîé ñïåöèôè÷åñêîé äëÿ êîíêðåòíîãî ïðîåêòà êîíôèãóðàöèè è íàñòðîåí íà ðàáîòó â äèðåêòîðèè ïîëüçîâàòåëÿ "/.openscada", ñ îñíîâíîé SQLite ÁÄ â ôàéëå "DATA/MainSt.db". Ñîçäàâàòü ñëîæíûé ïðîåêò SCADA-ñèñòåìû ïðîùå ñ èñïîëüçîâàíèåì áèáëèîòåê ôóíêöèé API îáúåêòíîé ìîäåëè ñèñòåìû OpenSCADA, áèáëèîòåê ãðàôè÷åñêèõ ýëåìåíòîâ, à òàêæå äðóãèõ áèáëèîòåê OpenSCADA. Äëÿ èñïîëüçîâàíèÿ áèáëèîòåê OpenSCADA, õðàíÿùèõñÿ â ôàéëå ÁÄ, èõ íóæíî ïîäêëþ÷èòü, äîáàâèòü â îáúåêòå ìîäóëÿ ÁÄ "SQLite" (ðèñ.3.1.3), óñòàíîâèòü àäðåñ è êîäèðîâêó ÁÄ â "UTF-8" (ðèñ.3.1.4).
Äèñòðèáóòèâû OpenSCADA ïîñòàâëÿþòñÿ ñ ðÿäîì áèáëèîòåê â âèäå ôàéëîâ ÁÄ "SQLite" (òàáëèöà 3.1), êîòîðûå, ïðè çàïóñêå ÷èñòîãî ïîëüçîâàòåëüñêîãî ïðîåêòà, ïîìåùàþòñÿ â äèðåêòîðèþ "LibsDB/". Ñîãëàñíî ýòîìó ñïèñêó äîáàâëÿåì èõ â îáúåêòå ìîäóëÿ ÁÄ "SQLite", óñòàíàâëèâàåì èì ôëàã "Âêëþ÷àòü" è ñîõðàíÿåì. Äàëåå, äëÿ çàãðóçêè ñîäåðæèìîãî áèáëèîòåê ìîæíî âêëþ÷èòü ÁÄ è íàæàòü êíîïêó "Çàãðóçèòü ñèñòåìó èç ýòîé ÁÄ", îäíàêî ïðè çàãðóçêå ðÿä íîâûõ îáúåêòîâ íå âêëþ÷àòñÿ ïîýòîìó ïðîùå çàâåðøèòü ÷èñòûé ïîëüçîâàòåëüñêèé ïðîåêò è çàïóñòèòü ïî íîâîé.
Òàáëèöà 3.1. Áèáëèîòåêè OpenSCADA â ñîñòàâå äèñòðèáóòèâà.
ID | Èìÿ | Àäðåñ | ßçûêè/êîäèðîâêà |
OscadaLibs | Áèáëèîòåêè ôóíêöèé | ./LibsDB/OscadaLibs.db | EN,RU,UK/UTF-8 |
vcaBase | ÑÂÓ: Ãëàâíûå áèáëèîòåêè | ./LibsDB/vcaBase.db | EN,RU,UK/UTF-8 |
vcaTest | ÑÂÓ: Òåñòû | ./LibsDB/vcaTest.db | EN,RU,UK/UTF-8 |
vcaElectroEls | ÑÂÓ: Áèáëèîòåêà ýëåêòðîýëåìåíòîâ ìíåìîñõåì ïîëüçîâàòåëüñêîãî èíòåðôåéñà | ./LibsDB/vcaElectroEls.db | EN,RU,UK/UTF-8 |
 ðåçóëüòàòå äîáàâëåíèÿ áèáëèîòåê OpenSCADA Âû ïîëó÷èòå îêðóæåíèå, ãîòîâîå äëÿ äîáàâëåíèÿ èñòî÷íèêîâ äàííûõ è ôîðìèðîâàíèÿ èíòåðôåéñà ñâîåãî, íîâîãî ïðîåêòà SCADA-ñèñòåìû.
Îñíîâíîé ôóíêöèåé ëþáîé SCADA-ñèñòåìû ÿâëÿåòñÿ ðàáîòà ñ èñòî÷íèêàìè äàííûõ ðåàëüíîãî âðåìåíè, à èìåííî îïðîñ ïðîãðàììèðóåìûõ ëîãè÷åñêèõ êîíòðîëëåðîâ (ÏËÊ) è ïðîñòûõ ìîäóëåé ÓÑÎ. Äåòàëüíåå îçíàêîìèòüñÿ ñ ýòèì âîïðîñîì ìîæíî â äîêóìåíòå "Ñáîð äàííûõ â OpenSCADA" ïî ññûëêå: http://wiki.oscada.org/Doc/DAQ.
Ïîääåðæêà òîãî èëè èíîãî èñòî÷íèêà äàííûõ çàâèñèò îò ïðîòîêîëà èëè API, ïî êîòîðîìó èñòî÷íèê ñâîè äàííûå ïðåäîñòàâëÿåò, è íàëè÷èÿ äëÿ ïðîòîêîëà/API ìîäóëÿ ïîäñèñòåìû "Ñáîð äàííûõ" â OpenSCADA. Îáùèé ïåðå÷åíü ìîäóëåé ïîäñèñòåìû "Ñáîð äàííûõ" è äîêóìåíòàöèþ ïî íèì ìîæíî ïîëó÷èòü ïî ññûëêå http://wiki.oscada.org/Doc#h79-4, â ñîîòâåòñòâóþùåì ðàçäåëå.
Ïîëó÷åííûå èç èñòî÷íèêîâ äàííûå âïîñëåäñòâèè àðõèâèðóþòñÿ, îáðàáàòûâàþòñÿ è èñïîëüçóþòñÿ äëÿ âèçóàëüíîãî ïðåäñòàâëåíèÿ îïåðàòîðó ÒÏ.
 êà÷åñòâå ïðèìåðà ðàññìîòðèì è ñîçäàäèì îïðîñ äàííûõ äëÿ àïïàðàòà âîçäóøíîãî õîëîäèëüíèêà. Äåìîíñòðàöèîííàÿ ÁÄ ñîäåðæèò ìîäåëü ðåàëüíîãî âðåìåíè ÒÏ êîìïðåññîðíîé ñòàíöèè èç øåñòè êîìïðåññîðîâ. Äàííûå äëÿ äâóõ àïïàðàòîâ âîçäóøíûõ õîëîäèëüíèêîâ "AT101_1" è "AT101_2" êîìïðåññîðíîé ñòàíöèè "KM101" äîñòóïíû ïî ïðîòîêîëó ModBus/TCP íà ïîðòó 10502.
Ìû ñîçäàäèì îáúåêò êîíòðîëëåðà äëÿ îïðîñà ïî ïðîòîêîëó ModBUS/TCP è ïîëó÷èì ýòè äàííûå, òåì ñàìûì ôàêòè÷åñêè ðåàëèçîâàâ çàäà÷ó îïðîñà ðåàëüíûõ äàííûõ, ïîñêîëüêó îò íàñòîÿùåãî âíåøíåãî óñòðîéñòâà íàøà êîíôèãóðàöèÿ áóäåò îòëè÷àòüñÿ àäðåñîì ýòîãî óñòðîéñòâà, àäðåñàìè ðåãèñòðîâ ModBUS è âîçìîæíî èíòåðôåéñîì âçàèìîäåéñòâèÿ.
Äëÿ îïðîñà äàííûõ ïî ïðîòîêîëó "ModBUS" â OpenSCADA ïðèñóòñòâóåò ìîäóëü "ModBUS" ïîäñèñòåìû "Ñáîð äàííûõ". Äëÿ äîáàâëåíèÿ íîâîãî êîíòðîëëåðà îòêðîåì â êîíôèãóðàòîðå ñòðàíèöó ìîäóëÿ ModBUS ("Äåìî ñòàíöèÿ"->"Ñáîð äàííûõ"->"Ìîäóëü"->"ModBUS") è â êîíòåêñòíîì ìåíþ ïóíêòà "ModBUS" íàæì¸ì "Äîáàâèòü" (ðèñ.4.1.1).
 ðåçóëüòàòå ïîÿâèòñÿ îêíî äèàëîãà (ðèñ.4.1.2) ñ ïðåäëîæåíèåì ââåñòè èäåíòèôèêàòîð è èìÿ íîâîãî êîíòðîëëåðà. Èäåíòèôèêàòîðû ëþáûõ îáúåêòîâ â OpenSCADA îãðàíè÷åíû ðàçìåðîì â 20 ñèìâîëîâ è èõ ðåêîìåíäóåòñÿ ââîäèòü ñèìâîëàìè àíãëèéñêîãî àëôàâèòà è öèôðàìè. Êðîìå ýòîãî, íà÷èíàòü èäåíòèôèêàòîð æåëàòåëüíî ñ áóêâû. Ýòî ñâÿçàíî ñ òåì, ÷òî èäåíòèôèêàòîð âïîñëåäñòâèè ìîæåò èñïîëüçîâàòüñÿ â ñêðèïòàõ. Èìåíà îáúåêòîâ OpenSCADA îãðàíè÷åíû ðàçìåðîì â 50 ñèìâîëîâ è ìîãóò ââîäèòüñÿ ëþáûìè ñèìâîëàìè. Èìåíà îáû÷íî èñïîëüçóþòñÿ äëÿ îòîáðàæåíèÿ. Åñëè ïîëå èìåíè îñòàâèòü ïóñòûì, òî âìåñòî íåãî äëÿ îòîáðàæåíèÿ áóäåò èñïîëüçîâàòüñÿ èäåíòèôèêàòîð. Ââåä¸ì èäåíòèôèêàòîð "KM101" è èìÿ "KM 101".
Ïîñëå ïîäòâåðæäåíèÿ ó íàñ ïîÿâèòñÿ îáúåêò íîâîãî êîíòðîëëåðà. Âûáåðåì åãî â êîíôèãóðàòîðå è ïîçíàêîìèìñÿ ñ íàñòðîéêàìè (ðèñ.4.1.3).
Íàñòðîéêè îáúåêòà êîíòðîëëåðà, êàê ïðàâèëî, ñïåöèôè÷íû äëÿ ðàçíûõ òèïîâ èñòî÷íèêîâ äàííûõ è ïðîòîêîëîâ. Äåòàëüíî îçíàêîìèòüñÿ ñ íàñòðîéêàìè îáúåêòà êîíòðîëëåðà ìîäóëÿ ModBUS ìîæíî ïî ññûëêå http://wiki.oscada.org/Doc/ModBus#h592-14. Ìû æå ðàññìîòðèì îáùèå è êëþ÷åâûå íàñòðîéêè äëÿ ìîäóëÿ ModBUS.
Ïåðåä êîíôèãóðàöèåé ñâÿçè ñî ñâîèì êîíòðîëëåðîì ïðåäâàðèòåëüíî íåîáõîäèìî, èç äîêóìåíòàöèè íà êîíòðîëëåð, âûÿñíèòü íàñòðîéêè åãî ñåòåâûõ èíòåðôåéñîâ è ïðîòîêîëîâ, à òàêæå, â ñëó÷àå èñïîëüçîâàíèÿ "ModBus", ïîëó÷èòü òàáëèöó íàçíà÷åíèÿ âíåøíèõ è âíóòðåííèõ ñèãíàëîâ êîíòðîëëåðà íà íîìåðà ðåãèñòðîâ "ModBus".
Ñ ïîìîùüþ ñòðàíèöû îáúåêòà êîíòðîëëåðà â ðàçäåëå "Ñîñòîÿíèå" ìîæíî â ïåðâóþ î÷åðåäü îöåíèòü òåêóùåå ñîñòîÿíèå îáúåêòà êîíòðîëëåðà è ðåàëüíîå ñîñòîÿíèå ñâÿçè ñ ôèçè÷åñêèì êîíòðîëëåðîì, à òàêæå îïåðàòèâíî åãî ìåíÿòü. Òàê, ïîëå "Ñòàòóñ" ñîäåðæèò êîä îøèáêè è òåêñòîâîå îïèñàíèå òåêóùåãî ñîñòîÿíèÿ ñâÿçè ñ êîíòðîëëåðîì, â íàøåì ñëó÷àå îáúåêò êîíòðîëëåðà âûêëþ÷åí. Ìû åãî ìîæåì âêëþ÷èòü è çàïóñòèòü, óñòàíîâèâ ôëàæêè íàïðîòèâ ñîîòâåòñòâóþùèõ ïîëåé. Âêëþ÷åííûé îáúåêò êîíòðîëåðà èíèöèàëèçèðóåò îáúåêòû ïàðàìåòðîâ, çàïóùåííûé æå çàïóñêàåò çàäà÷ó îïðîñà è ïðåäîñòàâëÿåò âîçìîæíîñòü ïåðåäàâàòü äàííûå â êîíòðîëëåð ÷åðåç àòðèáóòû ïàðàìåòðîâ. Ïîëå ÁÄ óêàçûâàåò íà òî, â êàêîé ÁÄ õðàíèòñÿ êîíôèãóðàöèÿ äàííîãî îáúåêòà. Íàñ óñòðîèò õðàíåíèå â ãëàâíîé ÁÄ, ò.å. îñòàâèì ïî óìîë÷àíèþ.
 ðàçäåëå "Êîíôèãóðàöèÿ" íåïîñðåäñòâåííî ñîäåðæèòñÿ êîíôèãóðàöèÿ îáúåêòà êîíòðîëëåðà:
Ñîõðàíèì íàøè èçìåíåíèÿ â ÁÄ, íàæàâ âòîðóþ ñëåâà èêîíêó íà ïàíåëè èíñòðóìåíòîâ.
Òåïåðü òàêèì æå îáðàçîì, êàê è îáúåêò êîíòðîëëåðà, ñîçäàäèì èñõîäÿùèé òðàíñïîðò â ìîäóëå "Sockets" ("Äåìî ñòàíöèÿ"->"Òðàíñïîðòû"->"Ñîêåòû") ïîñðåäñòâîì êîíòåêñòíîãî ìåíþ (ðèñ.4.1.4) è íàçîâ¸ì òðàíñïîðò òàê æå, êàê êîíòðîëëåð: "KM101" è èìÿ "KM 101". Îáðàòèòå âíèìàíèå, ÷òî â ïîëå "Òèï ýëåìåíòà" äèàëîãà ââîäà èäåíòèôèêàòîðà è èìåíè (ðèñ.4.1.2) íóæíî âûáðàòü "Âûõîäíîé òðàíñïîðò"!
Ñòðàíèöà êîíôèãóðàöèè ïîëó÷åííîãî èñõîäÿùåãî òðàíñïîðòà ïðèâåäåíà íà ðèñ.4.1.5. Ýòà ñòðàíèöà òàêæå ñîäåðæèò ðàçäåë ñîñòîÿíèÿ è îïåðàòèâíîãî óïðàâëåíèÿ.  ïîëå "Ñòàòóñ" ñîäåðæèòñÿ òåêñòîâîå îïèñàíèå òåêóùåãî ñîñòîÿíèÿ òðàíñïîðòà. Ìû åãî ìîæåì çàïóñòèòü íà èñïîëíåíèå, óñòàíîâèâ ôëàæîê íàïðîòèâ ñîîòâåòñòâóþùåãî ïîëÿ. Âûïîëíÿþùèéñÿ îáúåêò òðàíñïîðòà èíèöèèðóåò ñîåäèíåíèå ñ âíåøíèì óçëîì. Ïîëå ÁÄ óêàçûâàåò íà òî, â êàêîé ÁÄ õðàíèòñÿ êîíôèãóðàöèÿ äàííîãî îáúåêòà. Íàñ óñòðîèò õðàíåíèå â ãëàâíîé ÁÄ.
 ðàçäåëå "Êîíôèãóðàöèÿ" íåïîñðåäñòâåííî ñîäåðæèòñÿ êîíôèãóðàöèÿ îáúåêòà òðàíñïîðòà:
Òðàíñïîðòû äðóãèõ òèïîâ ñîçäàþòñÿ ïîäîáíûì ê ðàññìîòðåííîìó äëÿ "Sockets" ñïîñîáó, à êîíôèãóðàöèÿ èõ îòëè÷àåòñÿ îáû÷íî òîëüêî ôîðìàòîì çàïèñè àäðåñà è òàéìàóòîâ.  ñëó÷àå ñ òðàíñïîðòà ìîäóëÿ "Serial" â àäðåñå óêàçûâàåòñÿ ïóòü ê ïîñëåäîâàòåëüíîìó óñòðîéñòâó, ñêîðîñòü, è ôîðìàò. Äëÿ ïåðåõîäíèêîâ USB->Serial ýòîò àäðåñ íóæíî óçíàòü â îïåðàöèîííîé ñèñòåìå, íàïðèìåð, êîíñîëüíîé êîìàíäîé "$ dmesg", ñðàçó ïîñëå ïîäêëþ÷åíèÿ ïåðåõîäíèêà.
Ñîõðàíèì îáúåêò òðàíñïîðòà è âåðí¸ìñÿ ê êîíôèãóðàöèîííîìó ïîëþ "Àäðåñ òðàíñïîðòà" îáúåêòà êîíòðîëëåðà, ãäå âûáåðåì àäðåñ "Sockets.KM101". Íà ýòîì íàñòðîéêà îáúåêòà êîíòðîëëåðà çàêîí÷åíà, âêëþ÷èì åãî óñòàíîâèâ ôëàã "Âêëþ÷åí". Ñëåäóþùèì ýòàïîì ÿâëÿåòñÿ êîíôèãóðàöèÿ è âûáîð òåõ äàííûõ, êîòîðûå íóæíî îïðàøèâàòü èç êîíòðîëëåðà. Ýòà íàñòðîéêà ïðîèçâîäèòñÿ ïóò¸ì ñîçäàíèÿ îáúåêòà "Ïàðàìåòð" êîíòðîëëåðà. Îáúåêò "Ïàðàìåòð" ïîçâîëÿåò îïèñàòü ïåðå÷åíü äàííûõ, ïîëó÷àåìûõ ó êîíòðîëåðà è ïåðåäàòü èõ â îêðóæåíèå OpenSCADA.
Äëÿ äîáàâëåíèÿ íîâîãî îáúåêòà ïàðàìåòðà îòêðîåì â êîíôèãóðàòîðå ñòðàíèöó íàøåãî îáúåêòà êîíòðîëëåðà è â êîíòåêñòíîì ìåíþ ïóíêòà "KM101" íàæì¸ì "Äîáàâèòü". Îáúåêò ïàðàìåòðà íàçîâ¸ì: "AT101_1" è èìÿ "AT 101_1".
Ñòðàíèöà êîíôèãóðàöèè ïîëó÷åííîãî ïàðàìåòðà ïðèâåäåíà íà ðèñ.4.1.6. Ýòà ñòðàíèöà ñîäåðæèò ðàçäåë ñîñòîÿíèÿ è îïåðàòèâíîãî óïðàâëåíèÿ.  ïîëå "Òèï" ñîäåðæèòñÿ èäåíòèôèêàòîð òèïà ïàðàìåòðà, â íàøåì ñëó÷àå òèï "Ñòàíäàðòíûé" (std). Ïàðàìåòð ìû ìîæåì âêëþ÷èòü, óñòàíîâèâ ôëàæîê íàïðîòèâ ñîîòâåòñòâóþùåãî ïîëÿ. Âêëþ÷åííûé ïàðàìåòð ó÷àñòâóåò â ïðîöåññå îáìåíà ñ êîíòðîëëåðîì.
 ðàçäåëå "Êîíôèãóðàöèÿ" íåïîñðåäñòâåííî ñîäåðæèòñÿ êîíôèãóðàöèÿ îáúåêòà ïàðàìåòðà:
Òàêèì æå îáðàçîì ñîçäàäèì âòîðîé ïàðàìåòð: "AT101_2" ñ èìåíåì "AT 101_2". Ïåðå÷åíü àòðèáóòîâ äëÿ íåãî óñòàíîâèì â:
Ñîõðàíèì îáà îáúåêòà ïàðàìåòðà. Òåïåðü ìû ìîæåì âêëþ÷èòü è çàïóñòèòü íàø êîíòðîëëåð äëÿ èíèöèàöèè îáìåíà. Äëÿ ýòîãî âåðí¸ìñÿ íà ñòðàíèöó íàøåãî îáúåêòà êîíòðîëëåðà è â ðàçäåëå "Ñîñòîÿíèå" óñòàíîâèì ôëàæîê "Çàïóùåí". Åñëè ìû íè÷åãî íå ïðîïóñòèëè, òî îáìåí óñïåøíî çàïóñòèòñÿ è â ïîëå "Ñòàòóñ" ìû ïîëó÷èì ïîäîáíîå ïðåäñòàâëåííîìó íà ðèñ.4.1.7.
 ñëó÷àå óñïåøíîãî îáìåíà ñ ôèçè÷åñêèì êîíòðîëëåðîì ìû ïîëó÷èì îïèñàííûå äàííûå êîíòðîëëåðà â èíôðàñòðóêòóðå OpenSCADA. Óâèäåòü ýòè äàííûå ìîæíî íà âêëàäêå "Àòðèáóòû" íàøèõ ïàðàìåòðîâ AT101_1 (ðèñ.4.1.8) è AT101_2. Ïîñêîëüêó îïðîñ ïðîèçâîäèòñÿ ðåãóëÿðíî è ñ ïåðèîäè÷íîñòüþ â ñåêóíäó, òî ìû ìîæåì íàáëþäàòü èõ èçìåíåíèå, íàæèìàÿ êíîïêó "Îáíîâèòü òåêóùóþ ñòðàíèöó" íà ïàíåëè èíñòðóìåíòîâ.
Íà ýòîì êîíôèãóðàöèÿ ñáîðà äàííûõ ñ÷èòàåòñÿ çàêîí÷åííîé.
×àñòî âñòðå÷àåòñÿ ñèòóàöèÿ, êîãäà èñõîäíûå äàííûå, ïîëó÷åííûå èç èñòî÷íèêà äàííûõ, ÿâëÿþòñÿ "ñûðûìè", ò.å. íåãîòîâûìè èëè íåóäîáíûìè äëÿ âèçóàëüíîãî ïðåäñòàâëåíèÿ, ïîýòîìó íåîáõîäèìî âûïîëíèòü ýòó ïîäãîòîâêó.  íàøåì ïðèìåðå ìû ïîëó÷èëè äàííûå, êîòîðûå ïîñòóïàþò â êîäå îò øêàëû âíóòðè êîíòðîëëåðà. Íàøà çàäà÷à — âûïîëíèòü âû÷èñëåíèå ðåàëüíûõ çíà÷åíèé èç ïîëó÷åííûõ äàííûõ. Îáðàáîòêó äàííûõ â OpenSCADA ìîæíî äåëàòü, êàê íåïîñðåäñòâåííî ïðè âèçóàëèçàöèè, òàê è â ïîäñèñòåìå "Ñáîð äàííûõ". Îäíàêî, ñìåøèâàíèå ïðîöåññà âèçóàëèçàöèè è îáðàáîòêè èñõîäíûõ äàííûõ âíîñèò ïóòàíèöó â êîíôèãóðàöèþ, à òàêæå äåëàåò ïîëó÷åííûå îáðàçû âèçóàëèçàöèè ìàëî ïðèãîäíûìè äëÿ ïîâòîðíîãî èñïîëüçîâàíèÿ. Ïî ýòîé ïðè÷èíå âûïîëíèì ïîäãîòîâêó äàííûõ â ïîäñèñòåìå "Ñáîð äàííûõ".
Âû÷èñëåíèÿ â ïîäñèñòåìå "Ñáîð äàííûõ" âûïîëíÿþòñÿ ïîñðåäñòâîì ìîäóëÿ ëîãè÷åñêîãî óðîâíÿ LogicLev è øàáëîíîâ ïàðàìåòðîâ ïîäñèñòåìû "Ñáîð äàííûõ". Äåòàëüíåå îçíàêîìèòüñÿ ñ êîíöåïöèåé "Ëîãè÷åñêîãî óðîâíÿ" ìîæíî ïî ññûëêå http://wiki.oscada.org/Doc/DAQ#h831-9.
Äëÿ âûïîëíåíèÿ âû÷èñëåíèé â ìîäóëå ëîãè÷åñêîãî óðîâíÿ íóæíî ïðåäâàðèòåëüíî ñîçäàòü øàáëîí ïàðàìåòðà ïîäñèñòåìû "Ñáîð äàííûõ". Äëÿ ýòîãî îòêðîåì ñòðàíèöó áèáëèîòåêè øàáëîíîâ "Áàçîâûå øàáëîíû" ("Äåìî ñòàíöèÿ"->"Ñáîð äàííûõ"->"Áèáëèîòåêà øàáëîíîâ"->"Áàçîâûå øàáëîíû") è ïîñðåäñòâîì êîíòåêñòíîãî ìåíþ ñîçäàäèì îáúåêò øàáëîíà "airCooler" c èìåíåì "Âîçäóøíûé õîëîäèëüíèê". Ñòðàíèöà êîíôèãóðàöèè ïîëó÷åííîãî îáúåêòà ïðåäñòàâëåíà íà ðèñóíêå 4.2.1. Ýòà ñòðàíèöà ñîäåðæèò ðàçäåë ñîñòîÿíèÿ è îïåðàòèâíîãî óïðàâëåíèÿ. Ìû ìîæåì ñäåëàòü øàáëîí äîñòóïíûì, óñòàíîâèâ ôëàæîê íàïðîòèâ ñîîòâåòñòâóþùåãî ïîëÿ. Äîñòóïíûå øàáëîíû ìîãóò ïîäêëþ÷àòüñÿ ê ïàðàìåòðàì ñáîðà äàííûõ, à ïàðàìåòðû áóäóò âûïîëíÿòü âû÷èñëåíèÿ ïî ýòîìó øàáëîíó.  ïîëå "Èñïîëüçîâàíî" óêàçûâàåòñÿ ÷èñëî îáúåêòîâ, êîòîðûå èñïîëüçóþò äàííûé øàáëîí äëÿ âû÷èñëåíèÿ îáðàçà ïàðàìåòðà.  ðàçäåëå "Êîíôèãóðàöèÿ" ñîäåðæàòüñÿ òîëüêî óæå çíàêîìûå íàì ïîëÿ êîíôèãóðàöèè.
Îñíîâíàÿ êîíôèãóðàöèÿ è ôîðìèðîâàíèå øàáëîíà ïàðàìåòðà ñáîðà äàííûõ îñóùåñòâëÿåòñÿ âî âêëàäêå "IO" (ðèñ.4.2.2) øàáëîíà. Äåòàëüíîå îïèñàíèå ïðîöåññà ôîðìèðîâàíèÿ øàáëîíà ìîæíî ïîëó÷èòü ïî ññûëêå: http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-6.
Ñîçäàäèì â øàáëîíå äâà ñâîéñòâà äëÿ âõîäîâ ("TiCod", "ToCod"), äâà äëÿ âûõîäîâ ("Ti","To") è îäèí ïðîçðà÷íûé ("Cw"). Ñâîéñòâàì "TiCod", "ToCod" è "Cw" óñòàíîâèì ôëàã "Êîíôèãóðàöèÿ" â "Ñâÿçü", ÷òî ïîçâîëèò ê íèì ïîäâÿçûâàòü "ñûðîé" èñòî÷íèê. Ïàðàìåòðàì "Ti" è "To" óñòàíîâèì ôëàã "Àòðèáóò" â "Òîëüêî ÷òåíèå", "Cw" â "Ïîëíûé äîñòóï" äëÿ ôîðìèðîâàíèÿ òð¸õ àòðèáóòîâ: äâà òîëüêî íà ÷òåíèå è îäèí íà ïîëíûé äîñòóï, ó ðåçóëüòèðóþùåãî ïàðàìåòðà ñáîðà äàííûõ.
ßçûê ïðîãðàììû óñòàíîâèì â "JavaLikeCalc.JavaScript", à ïðîãðàììó â:
Ti = 150*TiCod/65536; To = 100*ToCod/65536;
Ïîëó÷åííûé øàáëîí ñîõðàíèì è óñòàíîâèì ôëàã äîñòóïíîñòè.
Òåïåðü ñîçäàäèì îáúåêòû êîíòðîëëåðà è ïàðàìåòðîâ â ìîäóëå "LogicLev" ïîäñèñòåìû "Ñáîð äàííûõ". Êîíòðîëëåð è åãî ïàðàìåòðû â ìîäóëå "LogicLev" ñîçäàþòñÿ èäåíòè÷íî ðàíåå ñîçäàííûì â ìîäóëå "ModBUS" íà ñòðàíèöå: "Äåìî ñòàíöèÿ"->"Ñáîð äàííûõ"->"Ìîäóëü"->"Ëîãè÷åñêèé óðîâåíü". Îáúåêòû íàçîâ¸ì èäåíòè÷íî îáúåêòàì â ìîäóëå "ModBUS".
Îáúåêò êîíòðîëëåðà ìîäóëÿ "LogicLev" (ðèñ.4.2.3) íå èìååò ñïåöèôè÷åñêèõ íàñòðîåê è óñòàíîâëåííûå ïî óìîë÷àíèþ ìîæíî íå òðîãàòü, êðîìå ïîëÿ "Ïëàíèðîâàíèå âû÷èñëåíèé", êîòîðîå óñòàíîâèì â îäíó ñåêóíäó. Ïåðåä äîáàâëåíèåì ïàðàìåòðîâ íóæíî âêëþ÷èòü êîíòðîëëåð, óñòàíîâèâ ôëàã "Âêëþ÷åí".
Îáúåêò ïàðàìåòðà êîíòðîëëåðà ìîäóëÿ "LogicLev" (ðèñ.4.2.4) èç ñïåöèôè÷åñêèõ íàñòðîåê èìååò "Òèï", ãäå íóæíî óñòàíîâèòü "Ëîãè÷åñêèé" (std), à â ïîëå "Øàáëîí ïàðàìåòðà" âûáðàòü àäðåñ ñîçäàííîãî íàìè øàáëîíà.
Êðîìå áàçîâîé êîíôèãóðàöèè ïàðàìåòðà íóæíî ñêîíôèãóðèðîâàòü ïîäêëþ÷åííûé øàáëîí (ðèñ. 4.2.5). Âêëàäêà êîíôèãóðàöèè øàáëîíà ïîÿâëÿåòñÿ â ðåæèìå ïàðàìåòðà "Âêëþ÷åí". Âêëþ÷èòü ïàðàìåòð ìîæíî, âêëþ÷èâ ïðåäâàðèòåëüíî êîíòðîëëåð. Ôëàã "Ïîêàçûâàòü òîëüêî àòðèáóòû" ïîçâîëÿåò óñòàíàâëèâàòü îòäåëüíî êàæäóþ ñâÿçü (ðèñ.4.2.6). Ïîñêîëüêó ìû â øàáëîíå ïðåäóñìîòðèòåëüíî îïèñàëè ôîðìàò ñâÿçåé â âèäå "Ïàðàìåòð|Ti", òî âñå òðè ñâÿçè ìû ìîæåì óñòàíîâèòü ïðîñòî óêàçàâ àäðåñ ê ïàðàìåòðó â êîíòðîëëåðå "ModBus". Óêàæåì àäðåñà "ModBus.KM101.AT101_1" è "ModBus.KM101.AT101_2" â ñîîòâåòñòâóþùèõ ïàðàìåòðàõ.
Íóæíî îòìåòèòü, ÷òî âñå ïîëÿ ââîäà àäðåñîâ îáúåêòîâ â OpenSCADA ñíàáæåíû ìåõàíèçìîì íàáîðà àäðåñà. Äàííûé ìåõàíèçì ïîäðàçóìåâàåò ïîýëåìåíòíûé âûáîð, â ïðîöåññå êîòîðîãî ïðîèñõîäèò äâèæåíèå â ãëóáü. Íàïðèìåð, ïðè íàáîðå àäðåñà "ModBus.KM101.AT101_1" âíà÷àëå ìû áóäåì èìåòü âîçìîæíîñòü âûáîðà òèïà èñòî÷íèêà äàííûõ, â ÷èñëå êîòîðûõ áóäåò "ModBus". Âûáðàâ ïóíêò "ModBus" â ïåðå÷åíü äîñòóïíûõ ýëåìåíòîâ äëÿ âûáîðà äîáàâÿòñÿ êîíòðîëëåðû ìîäóëÿ "ModBus", â ÷èñëå êîòîðîãî áóäåò "ModBus.KM101". Âûáîð ýëåìåíòà "ModBus.KM101" äîáàâèò â ñïèñîê ïàðàìåòðû êîíòðîëëåðà è ò.ä. äî êîíå÷íîãî ýëåìåíòà â ñîîòâåòñòâèè ñ èåðàðõèåé îáúåêòîâ (http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-6). Äëÿ âîçìîæíîñòü âîçâðàòà íà óðîâíè âûøå â ñïèñîê âûáîðà âñòàâëÿþòñÿ ýëåìåíòû âñåõ âûøåñòîÿùèõ óðîâíåé îò òåêóùåãî çíà÷åíèÿ àäðåñà.
Ñîõðàíèì ñîçäàííûå îáúåêòû êîíòðîëëåðà è ïàðàìåòðîâ. Ïîñëå ýòîãî çàïóñòèì êîíòðîëëåð íà èñïîëíåíèå, óñòàíîâèâ ôëàã êîíòðîëëåðà "Çàïóùåí" â ðàçäåëå "Ñîñòîÿíèå". Åñëè ìû íè÷åãî íå ïðîïóñòèëè, òî âû÷èñëåíèå óñïåøíî çàïóñòèòñÿ è â ïîëå "Ñòàòóñ" ìû ïîëó÷èì ïîäîáíîå ïðåäñòàâëåííîìó íà ðèñ.4.2.7.
 ñëó÷àå óñïåøíîé îáðàáîòêè êîäà øàáëîíà â ïàðàìåòðàõ ìû ïîëó÷èì îáðàáîòàííûå äàííûå â èíôðàñòðóêòóðå OpenSCADA. Óâèäåòü ýòè äàííûå ìîæíî íà âêëàäêå "Àòðèáóòû" íàøèõ ïàðàìåòðîâ AT101_1 (ðèñ.4.2.8) è AT101_2.
Íà ýòîì êîíôèãóðàöèÿ îáðàáîòêè äàííûõ ñ÷èòàåòñÿ çàêîí÷åííîé.
 ïðåäûäóùèõ ðàçäåëàõ áûë îïèñàí ìåõàíèçì ïîäêëþ÷åíèÿ èñòî÷íèêà äàííûõ ïî îáúåêòó àïïàðàòà ("Âîçäóøíûé õîëîäèëüíèê"), êîòîðûé ïðåäóñìàòðèâàåò îáúåäèíåíèå âñåõ ñèãíàëîâ â îäíîì îáúåêòå ïàðàìåòðà èñòî÷íèêà äàííûõ. Îäíàêî áîëåå ðàñïðîñòðàí¸ííûì ïîäõîäîì ÿâëÿåòñÿ ôîðìèðîâàíèå îáúåêòà ïàðàìåòðà âîêðóã ñèãíàëà, íàïðèìåð, "Òåìïåðàòóðà íà âûõîäå õîëîäèëüíèêà AT101_1 (TE1314_1)".
Ñîçäàíèå îáúåêòà ïàðàìåòðà âîêðóã ñèãíàëà ïîçâîëÿåò ôîðìàëèçîâàòü åãî îïèñàíèå äî øàáëîíîâ àíàëîãîâûõ è äèñêðåòíûõ ñèãíàëîâ, âêëþ÷èâ â íèõ âñþ íåîáõîäèìóþ îáðàáîòêó, ñèãíàëèçàöèþ è äðóãóþ õàðàêòåðíóþ èíôîðìàöèþ. Äëÿ ïðîñòîé êîíôèãóðàöèè òèïèçèðîâàííûõ àíàëîãîâûõ è äèñêðåòíûõ ñèãíàëîâ â áèáëèîòåêàõ OpenSCADA ïðåäóñìîòðåíû øàáëîíû ïàðàìåòðîâ, à ìíîãèå îáðàçû âèçóàëüíîãî ïðåäñòàâëåíèå àäàïòèðîâàííû ê ðàáîòå è ñâÿçûâàíèþ ñ òàêèìè ïàðàìåòðàìè ïðÿìî, áåç äåòàëèçàöèè ïî àòðèáóòàì.
Îáû÷íî äëÿ ôîðìèðîâàíèÿ îáúåêòà ïàðàìåòðà íà îñíîâå øàáëîíà èñïîëüçóåòñÿ ìîäóëÿ ëîãè÷åñêîãî óðîâíÿ LogicLev, êàê ýòî áûëî îïèñàíî â ïðåäûäóùåì ðàçäåëå. Îäíàêî ðÿä ìîäóëåé, â òîì ÷èñëå è ModBus ïðåäîñòàâëÿþò âîçìîæíîñòü ñðàçó ñîçäàâàòü ëîãè÷åñêèå ïàðàìåòðû, íà îñíîâå øàáëîíà. Äîáàâèì íîâûå îáúåêòû ïàðàìåòðà, îòêðûâ â êîíôèãóðàòîðå ñòðàíèöó íàøåãî îáúåêòà êîíòðîëëåðà "ModBus", ðàíåå ñîçäàííîãî, è â êîíòåêñòíîì ìåíþ ïóíêòà "KM101" íàæì¸ì "Äîáàâèòü".
Îáúåêò àíàëîãîâîãî ïàðàìåòðà íàçîâ¸ì "TE1314_1" è èìÿ "TE1314_1" (ðèñ.4.3.1). Òèï ïàðàìåòðà óñòàíîâèì â "Ëîãè÷åñêèé (logic)", øàáëîí ïàðàìåòðà âûáåðåì "base.anUnif", îïèñàíèå óñòàíîâèì â "Òåìïåðàòóðà íà âûõîäå AT101_1", óñòàíîâèì ôëàæêè "Âêëþ÷àòü" è "Âêëþ÷åí". Äàëåå íàì íóæíî íàñòðîèòü øàáëîí ïàðàìåòðà, â ïîÿâèâøåéñÿ âêëàäêå "Êîíôèãóðàöèÿ øàáëîíà" (ðèñ.4.3.2): ïîëå "Âõîä" óñòàíàâëèâàåì â çíà÷åíèå àäðåñà ModBus-ðåãèñòðà ýòîãî ïàðàìåòðà "R:101"; ïîëå "Ìàêñèìóì øêàëû ìîäóëÿ" óñòàíàâëèâàåì â çíà÷åíèå 65535, ÷òî ñîîòâåòñòâóåò 100 °C. Äàëåå ïåðåõîäèì âî âêëàäêó "Àòðèáóòû" (ðèñ.4.3.3) è óñòàíàâëèâàåì íåêîòîðûå ïîëÿ: "Åä. èçì" óñòàíàâëèâàåì â "ãðàä. Ñ"; "Øêàëà ìèíèìóì" â "0"; "Øêàëà ìàêñèìóì" â "100"; "Ãðàíèöà âåðõíÿÿ àâ." â "40"; "Ãðàíèöà âåðõíÿÿ ïðåä." â "30". Ñîõðàíèì îáúåêò ïàðàìåòðà.
Îáúåêò äèñêðåòíîãî ïàðàìåòðà íàçîâ¸ì: "KSH102" è èìÿ "ÊØ102". Òèï ïàðàìåòðà óñòàíîâèì â "Ëîãè÷åñêèé (logic)", øàáëîí ïàðàìåòðà âûáåðåì "base.digitBlockUnif", óñòàíîâèì ôëàæêè "Âêëþ÷àòü" è "Âêëþ÷åí". Äàëåå íàì íóæíî íàñòðîèòü øàáëîí ïàðàìåòðà, â ïîÿâèâøåéñÿ âêëàäêå "Êîíôèãóðàöèÿ øàáëîíà" (ðèñ.4.3.4): ïîëå "Êîìàíäà 'Îòêðûòü'" óñòàíàâëèâàåì â çíà÷åíèå àäðåñà ModBus-áèòà ýòîãî ïàðàìåòðà "C:100:rw"; ïîëå "Ñîñòîÿíèå 'Îòêðûò'" óñòàíàâëèâàåì â çíà÷åíèå àäðåñà ModBus-áèòà "C:101"; ïîëå "Ñîñòîÿíèå 'Çàêðûòü'" óñòàíàâëèâàåì â çíà÷åíèå àäðåñà ModBus-áèòà "C:102"; ïîëå "Âðåìÿ óäåðæ. êîìàíäû (ñ)" óñòàíàâëèâàåì â 0, ïîñêîëüêó êîìàíäà íå èìïóëüñíàÿ. Äàëåå ïåðåõîäèì âî âêëàäêó "Àòðèáóòû" (ðèñ.4.3.5) è óäîñòîâåðÿåìñÿ â äîñòóïíîñòè êîìàíäû è ñîñòîÿíèé. Ñîõðàíèì îáúåêò ïàðàìåòðà.
Âî ìíîãèõ çàäà÷àõ òðåáóåòñÿ âåäåíèå èñòîðèè ïàðàìåòðîâ ÒÏ. Äëÿ âêëþ÷åíèÿ àðõèâèðîâàíèÿ àòðèáóòîâ "Ti" è "To" ïàðàìåòðîâ AT101_1 è AT101_2 â ðàíåå ñîçäàííîì êîíòðîëëåðå ìîäóëÿ "LogicLev" äîñòàòî÷íî íà âêëàäêå "Àðõèâàöèÿ" ñòðàíèöû ïàðàìåòðîâ âûáðàòü, êàêèå àòðèáóòû àðõèâèðîâàòü è íà êàêèõ àðõèâàòîðàõ (ðèñ.4.4.1). Âûáåðåì àðõèâàöèþ àòðèáóòîâ "Ti" è "To" â àðõèâàòîðå "FSArch.1s". Òîæå ñàìîå ìîæíî ñäåëàòü äëÿ àòðèáóòà "var" àíàëîãîâîãî ïàðàìåòðà "ModBus.KM101.TE1314_1" è "com" äèñêðåòíîãî ïàðàìåòðà "ModBus.KM101.KSH102".
 ðåçóëüòàòå ýòîé îïåðàöèè áóäóò àâòîìàòè÷åñêè ñîçäàíû îáúåêòû àðõèâîâ äëÿ âûáðàííûõ àòðèáóòîâ. Íàïðèìåð, îáúåêò àðõèâà äëÿ àòðèáóòà "Ti" ïàðàìåòðà AT101_1 ïðåäñòàâëåí íà ðèñ.4.4.2.
Îáû÷íî íàñòðîéêè àðõèâà ìåíÿòü íå íóæíî, îäíàêî, åñëè ïîòðåáóåòñÿ îñîáàÿ êîíôèãóðàöèÿ, òî å¸ ìîæíî ñäåëàòü íà óêàçàííîé âûøå ñòðàíèöå. ×àùå ìîæåò ïîíàäîáèòüñÿ ïîëó÷åíèå èíôîðìàöèè îá àðõèâå. Íàïðèìåð, óçíàòü ðàçìåð àðõèâà êàê ïî âðåìåíè, òàê è íà íîñèòåëå, à òàêæå âçãëÿíóòü íà ãðàôèê ïàðàìåòðà (ðèñ.4.4.3).
Ôîðìèðîâàíèå âèçóàëüíîãî ïðåäñòàâëåíèÿ ìîæåò âûïîëíÿòüñÿ íà òð¸õ óðîâíÿõ ñëîæíîñòè è ïîëüçîâàòåëü ìîæåò âûáðàòü ëþáîé èç íèõ, â çàâèñèìîñòè îò óðîâíÿ ñâîèõ çíàíèé è íàëè÷èÿ áèáëèîòåê ñ ãîòîâûìè îáðàçàìè è øàáëîíàìè.
Ïåðâûé óðîâåíü òðåáóåò ìèíèìàëüíîé êâàëèôèêàöèè ïîëüçîâàòåëÿ, íî ïîäðàçóìåâàåò íàëè÷èå áèáëèîòåê øàáëîííûõ êàäðîâ, íóæíûõ äëÿ ðåøåíèÿ åãî çàäà÷è.  ðàìêàõ ïåðâîãî óðîâíÿ ïîëüçîâàòåëþ äîñòàòî÷íî çíàòü, êàê ïîäêëþ÷èòü äèíàìèêó ê ñòðàíèöàì øàáëîííûõ êàäðîâ è êàê äîáàâèòü íîâûå ñòðàíèöû øàáëîííûõ êàäðîâ.
Âòîðîé óðîâåíü ïðåäóñìàòðèâàåò äîïîëíèòåëüíóþ ñïîñîáíîñòü ñîçäàâàòü íîâûå êàäðû íà îñíîâå ãîòîâûõ êîìïëåêñíûõ ýëåìåíòîâ, ïóò¸ì ïðîñòîãî èõ ðàçìåùåíèÿ â îáëàñòè êàäðà. Äëÿ îáåñïå÷åíèÿ ýòîãî êâàëèôèêàöèîííîãî óðîâíÿ ïîëüçîâàòåëþ ïîíàäîáÿòñÿ áèáëèîòåêè êîìïëåêñíûõ ýëåìåíòîâ, íóæíûõ äëÿ ðåøåíèÿ åãî çàäà÷.
È òðåòèé óðîâåíü ïðåäóñìàòðèâàåò âëàäåíèå âñåìè èíñòðóìåíòàìè ñðåäû ðàçðàáîòêè âèçóàëüíûõ èíòåðôåéñîâ OpenSCADA, âêëþ÷àÿ ñîçäàíèå íîâûõ êîìïëåêñíûõ ýëåìåíòîâ è ðàçðàáîòêè íîâûõ èíòåðôåéñîâ ïîëüçîâàòåëÿ â ïðîåêòå.
Âñå ðàáîòû íàä èíòåðôåéñîì âèçóàëèçàöèè áóäåì âûïîëíÿòü â îêðóæåíèè ìîäóëÿ "Vision" ïîäñèñòåìû "Ïîëüçîâàòåëüñêèå èíòåðôåéñû". Äëÿ îòêðûòèÿ îêíà èíòåðôåéñà "Vision" íàæì¸ì âòîðóþ èêîíêó ñïðàâà íà ïàíåëè èíñòðóìåíòîâ êîíôèãóðàòîðà.  ðåçóëüòàòå ïîëó÷èì îêíî, ðàíåå èçîáðàæ¸ííîå íà ðèñ.3.3.
Èíòåðôåéñû ïîëüçîâàòåëÿ-îïåðàòîðà â OpenSCADA ðåàëèçóþòñÿ ïðîåêòàìè âèçóàëèçàöèè.  áèáëèîòåêå îñíîâíûõ ýëåìåíòîâ ïîëüçîâàòåëüñêîãî èíòåðôåéñà ïðèñóòñòâóåò øàáëîí òèïîâîãî ïðîåêòà âèçóàëèçàöèè, îñíîâàííîãî íà êîíöåïöèè îáúåêòîâ ñèãíàëèçàöèè è âèäîâ îòîáðàæåíèÿ. Ïîëüçîâàòåëü ìîæåò íà÷àòü ñîçäàâàòü ñâîþ êîíöåïöèþ èíòåðôåéñà âèçóàëèçàöèè, â âèäå íîâîãî ïðîåêòà, à ìîæåò èñïîëüçîâàòü óêàçàííûé øàáëîí. Äëÿ ðåàëèçàöèè íîâîãî ïðîåêòà âèçóàëèçàöèè ïîòðåáóþòñÿ çíàíèÿ òðåòüåãî óðîâíÿ è çíà÷èòåëüíûå óñèëèÿ, ÷òî íàõîäèòñÿ çà ðàìêàìè ýòîãî äîêóìåíòà. Ïîýòîìó áóäåì ðàññìàòðèâàòü ñîçäàíèå èíòåðôåéñà âèçóàëèçàöèè íà îñíîâå äîñòóïíîãî øàáëîííîãî ïðîåêòà.
Äàííûé øàáëîí ñîäåðæèò äâå âåòâè: "Ïàíåëè óïðàâëåíèÿ" è "Êîðíåâàÿ ñòðàíèöà". Âåòâü "Ïàíåëè óïðàâëåíèÿ" ñîäåðæèò íàáîð êàäðîâ òèïîâûõ ïàíåëåé óïðàâëåíèÿ è ñïåöèàëèçèðîâàííûõ êàäðîâ. Âåòâü "Êîðíåâàÿ ñòðàíèöà", ñ êîðíåâîé ñòðàíèöåé â îñíîâå, ñîäåðæèò ïîäâåòâè îáúåêòîâ ñèãíàëèçàöèè "Ãðóïïà 1", "Ãðóïïà 2" è îòäåëüíóþ âåòâü ñâîäíûõ ãðàôèêîâ "Ñâîäíûå ãðàôèêè". Ïîäâåòâè îáúåêòîâ ñèãíàëèçàöèè "Ãðóïïà {n}" èìåþò öèôðîâîé èäåíòèôèêàòîð è ìîãóò ðàñøèðÿòüñÿ äîáàâëåíèåì âïëîòü äî 16. Ïðèñóòñòâèå ïîäâåòâè "Ãðóïïà {n}" îòðàæàåòñÿ íà àêòèâàöèè ñîîòâåòñòâóþùåé êíîïêè îáúåêòà ñèãíàëèçàöèè êîðíåâîé ñòðàíèöû, ÷òî ïîçâîëÿåò íà íèõ ïåðåêëþ÷àòüñÿ. Êàæäàÿ ïîäâåòâü "Ãðóïïà {n}" ñîäåðæèò êîíòåéíåðû èëè øàáëîíû âèäîâ îòîáðàæåíèÿ, îáû÷íî: "Ìíåìîñõåìû", "Ãðóïïû ãðàôèêîâ", "Ãðóïïû êîíòóðîâ", "Ãðóïïû îáçîðíûõ êàäðîâ" è "Äîêóìåíòû". Íàëè÷èå ñòðàíèö â êîíòåéíåðàõ îòîáðàæåíèé âêëþ÷àåò âîçìîæíîñòü âûáîðà ýòîãî îòîáðàæåíèÿ, äëÿ ñîîòâåòñòâóþùåãî îáúåêòà ñèãíàëèçàöèè êîðíåâîé ñòðàíèöû. Äåòàëüíåå î ñòðóêòóðå êîðíåâîé ñòðàíèöû ìîæíî îçíàêîìèòüñÿ ïî ññûëêå http://wiki.oscada.org/Using/GraphicElementsLibraries/MainElements#h1036-45.
Äëÿ ñîçäàíèÿ ñîáñòâåííîãî ïðîåêòà âèçóàëèçàöèè ïîëüçîâàòåëü ìîæåò ñêîïèðîâàòü øàáëîííûé ïðîåêò è íàçâàòü ñîãëàñíî ñâîåé òåìàòèêå. Ìû æå ïðîäîëæèì íåïîñðåäñòâåííî ñ øàáëîííûì ïðîåêòîì, ïîìåùàÿ íàøè ñòðàíèöû â êîíòåéíåðà ìíåìîñõåì è ãðóïï ãðàôèêîâ.
Ðàññìîòðèì çàäà÷ó ïåðâîãî óðîâíÿ ñëîæíîñòè, êîãäà â óæå ðàçðàáîòàííîì èíòåðôåéñå íóæíî ïîäêëþ÷èòü äèíàìèêó ê øàáëîííîé ñòðàíèöå. Ïîíÿòèå "Øàáëîí ñòðàíèöû" ïîäðàçóìåâàåò ñòðàíèöó íà îñíîâå êîòîðîé, ïóò¸ì íàñëåäîâàíèÿ, ìîæåò ñîçäàâàòüñÿ ìíîæåñòâî êîíå÷íûõ ñòðàíèö âèçóàëèçàöèè ñ èíäèâèäóàëüíûì ïåðå÷íåì äèíàìèêè. Ïðèìåðîì òàêèõ ñòðàíèö ÿâëÿþòñÿ: "Ãðóïïà ãðàôèêîâ", "Ãðóïïà êîíòóðîâ", "Ãðóïïà îáçîðíûõ êàäðîâ" è "Ñâîäíûå ãðàôèêè". Íà ðèñ.5.1.1 ïðåäñòàâëåíà øàáëîííàÿ ñòðàíèöà "Ãðóïïà ãðàôèêîâ" â äåðåâå ïðîåêòà "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)".
Øàáëîííàÿ ñòðàíèöà "Ãðóïïà ãðàôèêîâ" ïðåäîñòàâëÿåò âîçìîæíîñòü ïîäêëþ÷èòü äî âîñüìè ñèãíàëîâ äëÿ îäíîâðåìåííîãî èõ îòîáðàæåíèÿ íà ãðàôèêå. Ýëåìåíòû îòîáðàæåíèÿ çíà÷åíèÿ ñâåðõó àâòîìàòè÷åñêè ñêðûâàþòñÿ äëÿ íåóñòàíîâëåííûõ ññûëîê.
Ñîçäàäèì íîâóþ ãðóïïó ãðàôèêîâ "Ãðàôèêè 2" â øàáëîííîì êîíòåéíåðå "Ãðóïïà ãðàôèêîâ" ïåðâîé ãðóïïû êîðíåâîé ñòðàíèöû ïðîåêòà "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)". Äëÿ ýòîãî â êîíòåêñòíîì ìåíþ ïóíêòà "Ãðóïïà ãðàôèêîâ" âûáåðåì "Äîáàâèòü âèçóàëüíûé ýëåìåíò" (ðèñ.5.1.2). Äëÿ ââîäà èäåíòèôèêàòîðà è èìåíè íîâîãî âèçóàëüíîãî ýëåìåíòà ïîÿâèòñÿ äèàëîã èõ ââîäà (ðèñ.5.1.3). Ââåä¸ì èäåíòèôèêàòîð "2" è èìÿ "Ãðàôèêè 2".
Ïîñëå ïîäòâåðæäåíèÿ ââîäà èìåíè áóäåò ñîçäàíà íîâàÿ ñòðàíèöà. Îäíàêî, äëÿ å¸ àêòèâàöèè íàì ïîíàäîáèòñÿ å¸ âêëþ÷èòü. Âêëþ÷èòü ñòðàíèöó ìîæíî â äèàëîãå ðåäàêòèðîâàíèÿ ñâîéñòâ ñòðàíèöû (ðèñ.5.1.4). Îòêðûòü ýòó ñòðàíèöó ìîæíî ïîñðåäñòâîì âûáîðà ïóíêòà ìåíþ "Ñâîéñòâà âèçóàëüíîãî ýëåìåíòà" â êîíòåêñòíîì ìåíþ âíîâü ñîçäàííîé ñòðàíèöû. Ñîçäàòü ñòðàíèöó â ëîãè÷åñêîì êîíòåéíåðå, íà îñíîâå øàáëîíà, ìîæíî è ïðîñòûì êîïèðîâàíèåì øàáëîíà âíóòðü ñåáÿ.
Ïîñëå âêëþ÷åíèÿ ñòðàíèöû ìîæíî ïðèñòóïàòü ê óñòàíîâêå ñâÿçåé íà ñîçäàííûå â ïðåäûäóùåé ãëàâå ïàðàìåòðû êîíòðîëëåðîâ. Äëÿ ýòîãî, íå ïîêèäàÿ äèàëîãà ðåäàêòèðîâàíèÿ ñâîéñòâ âíîâü ñîçäàííîé ñòðàíèöû (ðèñ.5.1.4), ïåðåéä¸ì íà âêëàäêó "Ñâÿçè" (ðèñ.5.1.5). Íà ýòîé âêëàäêå ìû óâèäèì äåðåâî ñ ýëåìåíòàìè "el1" ... "el8". Ðàçâåðíóâ ëþáîé èç ýëåìåíòîâ ìû óâèäèì âåòêó "Parameter", âîò â íåé ìû è äîëæíû óêàçàòü èëè âûáðàòü àäðåñ íàøèõ àòðèáóòîâ "Ti" è "To". Èòîãî çàïîëíèì ÷åòûðå ýëåìåíòà. Ïðè çàïîëíåíèè ýëåìåíòîâ ÷àñòü ñâîéñòâ íóæíî óêàçûâàòü êàê ïîñòîÿííûå. Íàïðèìåð, îáÿçàòåëüíî íóæíî óêàçàòü:
Åñëè çàðàíåå ïðåäóñìîòðåòü íàëè÷èå àòðèáóòîâ, óêàçàííûõ íàìè ïîñòîÿííûìè â øàáëîíå ïàðàìåòðà êîíòðîëëåðà, òî ìîæíî áóäåò óêàçûâàòü òîëüêî ïàðàìåòð, à àòðèáóòû ðàññòàâÿòñÿ àâòîìàòè÷åñêè, ÷òî ìû ìîæåì óâèäåòü, ïðèâÿçàâ ñîçäàííûé íàìè ðàíåå òèïèçèðîâàííûé àíàëîãîâûé ïàðàìåòð "ModBus.KM101.TE1314_1".
Çàêîí÷èâ ââîä ñâÿçåé ìîæåì ïðîâåðèòü ÷òî ïîëó÷èëîñü â ðåçóëüòàòå íàøèõ óñèëèé. Äëÿ ýòîãî çàêðîåì îêíî äèàëîãà ñâîéñòâ è çàïóñòèì ïðîåêò "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)" íà èñïîëíåíèå, ïðî êíîïêó çàïóñêà ìû ïîìíèì èç ïåðâûõ ãëàâ. Çàòåì âûáåðåì ãðàôèêè è ïåðåêëþ÷èìñÿ íà âòîðóþ ñòðàíèöó. Ïðè áåçîøèáî÷íîé êîíôèãóðàöèè ìû äîëæíû óâèäåòü ÷òî-òî ïîäîáíîå èçîáðàæ¸ííîìó íà ðèñ.5.1.6. Çàìåòüòå, ÷òî äëÿ òèïèçèðîâàííîãî ïàðàìåòðà, ñ óñòàíîâëåííûìè ãðàíèöàìè íàðóøåíèé, âûõîä çíà÷åíèÿ çà ãðàíèöû îòìå÷àåòñÿ àâàðèéíûì öâåòîì. Äëÿ òîãî ÷òî-áû óâèäåòü âûõîä çà ãðàíèöó íàðóøåíèÿ Âû ìîæåòå óñòàíîâèòü çíà÷åíèå ïðîèçâîäèòåëüíîñòè âåíòèëÿòîðà â 100 (ðèñ.4.2.8).
Ïîäíèìåì ïëàíêó è ñîçäàäèì íîâûé êàäð, êóäà ïîìåñòèì áàçîâûå ýëåìåíòû îòîáðàæåíèÿ çíà÷åíèé ïàðàìåòðîâ íàøèõ êîíòðîëëåðîâ. Òàêèå êàäðû îáû÷íî íàçûâàþòñÿ ìíåìîñõåìàìè è êðîìå îòîáðàæåíèÿ äèíàìèêè, è äàæå â ïåðâóþ î÷åðåäü, ñîäåðæàò ñòàòè÷åñêîå èçîáðàæåíèå òåõíîëîãè÷åñêîãî ïðîöåññà â ìíåìîíè÷åñêîì ïðåäñòàâëåíèè. Ìû æå íå áóäåì àêöåíòèðîâàòü âíèìàíèå íà ñîçäàíèå ñòàòèêè, à äîáàâèì ýëåìåíòû äèíàìèêè è ïîäêëþ÷èì ê íåé ïàðàìåòðû íàøèõ êîíòðîëëåðîâ. Íó è ïîìåñòèì ñîçäàííûé êàäð â äåðåâî óæå èçâåñòíîãî íàì ïðîåêòà.
Íîâûå êàäðû, ïðåäíàçíà÷åííûå âïîñëåäñòâèè äëÿ ïîìåùåíèÿ â ïðîåêò, ïðèíÿòî ñîçäàâàòü â áèáëèîòåêå âèäæåòîâ. Ñîçäàäèì íîâóþ áèáëèîòåêó âèäæåòîâ "KM101"; âûáðàâ âåðòèêàëüíóþ âêëàäêó "Âèäæåò" è â êîíòåêñòíîì ìåíþ îêíà áèáëèîòåê âèäæåòîâ âûáåðåì ïóíêò "Íîâàÿ áèáëèîòåêà" (ðèñ.5.2.1).  äèàëîãå ââîäà èìåíè óêàæåì èäåíòèôèêàòîð "KM101" è èìÿ "KM 101", à çàòåì ïîäòâåðäèì.
Äàëåå äîáàâëÿåì íîâûé êàäð "AT101", âûáðàâ ïóíêò "Áèáëèîòåêà: originals"->"Ãðóïïà ýëåìåíòîâ" â êîíòåêñòíîì ìåíþ ñîçäàííîé áèáëèîòåêè "KM101" (ðèñ.5.2.2). Â äèàëîãå ââîäà èìåíè óêàæåì èäåíòèôèêàòîð "AT101" è èìÿ "AT 101", à çàòåì ïîäòâåðäèì. Â îñíîâå ëþáîãî êàäðà è ñòðàíèöû äîëæåí ëåæàòü ýëåìåíò "Ãðóïïà ýëåìåíòîâ (Box)" ïîýòîìó ìû åãî è âûáðàëè.
Ñðàçó ïîñëå ñîçäàíèÿ ýëåìåíòà íîâîãî êàäðà íóæíî óñòàíîâèòü åãî áàçîâûå ñâîéñòâà, õàðàêòåðíûå äëÿ êàäðà ìíåìîñõåìû. Ñâîéñòâà èëè àòðèáóòû ëþáîãî âèçóàëüíîãî ýëåìåíòà ìîæíî óêàçàòü â ïàíåëè èíñòðóìåíòîâ "Àòðèáóòû", ïðåäâàðèòåëüíî âûáðàâ íóæíûé âèçóàëüíûé ýëåìåíò. Âûáåðåì ñîçäàííûé êàäð "AT 101" è óñòàíîâèì ñëåäóþùèå ñâîéñòâà:
 ðåçóëüòàòå ïîëó÷èì ïóñòîé êàäð (ðèñ.5.2.3), ãîòîâûé äëÿ äîáàâëåíèÿ ýëåìåíòîâ íà íåãî. Äëÿ ðåäàêòèðîâàíèÿ èëè ïðîñìîòðà âèäà êàäðà íåîáõîäèìî â êîíòåêñòíîì ìåíþ êàäðà âûáðàòü ïóíêò "Ðåäàêòèðîâàòü âèçóàëüíûé ýëåìåíò".
Òåïåðü äîáàâèì íà êàäð ýëåìåíòû îòîáðàæåíèÿ çíà÷åíèÿ àíàëîãîâîãî ïàðàìåòðà äëÿ íàøèõ ÷åòûð¸õ ñèãíàëîâ è òèïèçèðîâàííîãî ïàðàìåòðà "ModBus.KM101.TE1314_1". Äëÿ ïîìåùåíèÿ íà ìíåìîñõåìó ýëåìåíòà îòîáðàæåíèÿ àíàëîãîâîãî ñèãíàëà íóæíî âûáðàòü íàøó ìíåìîñõåìó, à çàòåì â ìåíþ îêíà âûáðàòü ïóíêò ìåíþ "Âèäæåò"->"Áèáëèîòåêà: Main"->"Îòîáð àíàëîã"; ïîñëå ÷åãî ïîÿâèòñÿ êóðñîð ñ îáðàçîì ýòîãî ýëåìåíòà, êîòîðûé íóæíî ïîäâåñòè â æåëàåìóþ îáëàñòü ìíåìîñõåìû è íàæàòü ëåâóþ êíîïêó ìûøè.  ìîìåíò äîáàâëåíèÿ ïîÿâèòñÿ äèàëîã ñ çàïðîñîì èìåíè íîâîãî ýëåìåíòà. Äîáàâëÿòü ïîäîáíûì îáðàçîì áóäåì ïÿòü ýëåìåíòîâ, êîòîðûå íàçîâ¸ì: "A1_Ti", "A1_To", "A2_Ti", "A2_To" è "TE1314_1".
Äîáàâèì òàêæå ýëåìåíò êðàíà äëÿ òèïèçèðîâàííîãî äèñêðåòíîãî ïàðàìåòðà "ModBus.KM101.KSH102", äëÿ äîáàâëåíèÿ êîòîðîãî èñïîëüçóåì áèáëèîòå÷íûé ýëåìåíò "Âèäæåò"->"Áèáëèîòåêà: mnEls"->"Êðàí øàðîâûé" è íàçîâ¸ì åãî "KSH102".
Äëÿ îòîáðàæåíèÿ ñïèñêà òåêóùèõ íàðóøåíèé ïîìåñòèì íà ìíåìîñõåìó ýëåìåíò ïðîòîêîëà èç áèáëèîòåêè ïðèìèòèâîâ "Âèäæåò"->"Áèáëèîòåêà: originals"->"Ïðîòîêîë" è íàçîâ¸ì åãî "Protocol".  èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà äëÿ ïðîòîêîëà:
Äîáàâëåííûå ýëåìåíòû ìîæíî âïîñëåäñòâèè ðàñïîëîæèòü êàê íóæíî, ïðîñòî âûäåëÿÿ è ïåðåòàñêèâàÿ ìûøüþ. Òàêæå ìîæíî èçìåíèòü èõ ðàçìåð. Ïðîñòîå èçìåíåíèå ðàçìåðà âûçîâåò èçìåíåíèå òîëüêî ãåîìåòðèè êîíòåéíåðà âèäæåòà, ÷òî ÷àñòî íå íóæíî. Äëÿ èçìåíåíèÿ ðàçìåðà âñåãî ñîäåðæèìîãî âèäæåòà åãî íóæíî ìàñøòàáèðîâàòü, ÷òî îñóùåñòâëÿåòñÿ óäåðæàíèåì êëàâèøè "Ctrl" ïðè èçìåíåíèè ðàçìåðà èëè ïåðåêëþ÷åíèåì ñîñòîÿíèÿ "Èçì. ðàçìåðà" â ñòðîêå ñòàòóñà íà "Ìàñøòàá".
Ïîñëå âûïîëíåíèÿ âñåõ ìàíèïóëÿöèé ó íàñ äîëæíà ïîëó÷èòüñÿ ìíåìîñõåìà ñ âèäîì, ïîõîæèì ïðåäñòàâëåííîé íà ðèñ.5.2.4.
Íà ýòîì ïðîöåäóðó ñîçäàíèÿ ìíåìîñõåìû áóäåì ñ÷èòàòü çàêîí÷åííîé. Ñîõðàíèì íîâóþ áèáëèîòåêó âèäæåòîâ "KM101" è ïðèñòóïèì ê ýòàïó ðàçìåùåíèÿ íàøåé ìíåìîñõåìû â äåðåâå ïðîåêòà "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)".
Ïîìåñòèì íàøó ìíåìîñõåìó â âåòâü "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)"->"Êîðíåâàÿ ñòðàíèöà"->"Ãðóïïà 1"->"Ìíåìîñõåìû" ïóò¸ì âûáîðà â êîíòåêñòíîì ìåíþ äëÿ ïóíêòà "Ìíåìîñõåìû" ïóíêòà "Áèáëèîòåêà: ÊÌ101"->"AT 101". Èäåíòèôèêàòîð äëÿ íîâîé ìíåìîñõåìû óñòàíîâèì â "2", ïðè ýòîì ïîëå èìåíè îñòàâèì ïóñòûì.
Äàëåå íóæíî ïðîèçâåñòè óæå çíàêîìóþ íàì îïåðàöèþ ïî ïðåäûäóùåé ãëàâå, à èìåííî óñòàíîâêó ñâÿçåé íà ñîçäàííûå â ïðåäûäóùåé ãëàâå ïàðàìåòðû êîíòðîëëåðîâ. Äëÿ ýòîãî îòêðîåì äèàëîã ðåäàêòèðîâàíèÿ ñâîéñòâ ìíåìîñõåìû íà âêëàäêå "Ñâÿçè" (ðèñ.5.2.5). Íà ýòîé âêëàäêå ìû óâèäèì äåðåâî ñ ýëåìåíòàìè "A1_Ti", "A1_To", "A2_Ti" è "A2_To". Ðàçâåðíóâ ëþáîé èç ýëåìåíòîâ, ìû óâèäèì âåòêó "Parameter", â êîòîðîé ìû äîëæíû óêàçàòü èëè âûáðàòü àäðåñ çíà÷åíèé íàøèõ àòðèáóòîâ "Ti" è "To" ñîîòâåòñòâåííî. Ïðè çàïîëíåíèè ýëåìåíòîâ ÷àñòü ñâîéñòâ íóæíî óêàçûâàòü êàê ïîñòîÿííûå. Íàïðèìåð, îáÿçàòåëüíî íóæíî óêàçàòü:
Êàê è â ñëó÷àå ñ ãðóïïîé ãðàôèêîâ, â ïðåäûäóùåì ðàçäåëå, äëÿ òèïèçèðîâàííûõ ïàðàìåòðîâ "ModBus.KM101.TE1314_1" è "ModBus.KM101.KSH102" ìîæíî óêàçàâàòü òîëüêî ïàðàìåòð, à àòðèáóòû ðàññòàâÿòñÿ àâòîìàòè÷åñêè.
Òåïåðü ìîæåì ñîõðàíèòü íàøó ìíåìîñõåìó è ïðîâåðèòü ÷òî ïîëó÷èëîñü. Äëÿ ýòîãî çàêðîåì îêíî äèàëîãà ñâîéñòâ è çàïóñòèì ïðîåêò "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)" íà èñïîëíåíèå. Çàòåì ïåðåêëþ÷èìñÿ íà íàøó ìíåìîñõåìó êíîïêàìè ïåðåëèñòûâàíèÿ. Ïðè áåçîøèáî÷íîé êîíôèãóðàöèè ìû äîëæíû óâèäåòü ÷òî-òî ïîäîáíîå èçîáðàæ¸ííîìó íà ðèñ.5.2.6.
Çàìåòüòå, ÷òî äëÿ òèïèçèðîâàííîãî ïàðàìåòðà, ñ óñòàíîâëåííûìè ãðàíèöàìè íàðóøåíèé, âûõîä çíà÷åíèÿ çà ãðàíèöû îòìå÷àåòñÿ ìèãàíèåì ÷åðåç àâàðèéíûé öâåò: ïàðàìåòðà, îáúåêòà ñèãíàëèçàöèè è æ¸ëòîãî êðóæî÷êà ñíèçó. Ïðè íàðóøåíèè, êðîìå ìèãàíèÿ, ïðîèçâîäèòñÿ ïèñê íà áóçåð (åñëè îí äîñòóïåí) è ñèíòåç ðå÷è ñ ïðîãîâîðîì ïîçèöèè ïàðàìåòðà (åñëè óñòàíîâëåíà ïðîãðàììà "ru_tts") óêàçàííîé â ïîëå ñâÿçè "spName" (ðèñ. 5.2.5). Ïðè àêòèâàöèè íàðóøåíèÿ ñïðàâà è ñïðàâà-âíèçó àêòèâèðóþòñÿ êíîïêè ñ èíäèêàöèåé òèïà óâåäîìëåíèÿ, à ïî íàæàòèþ íà íèõ îñóùåñòâëÿåòñÿ êâèòàöèÿ ñîîòâåòñòâóþùåãî òèïà óâåäîìëåíèÿ. Ïî íàæàòèþ íà ìèãàþùåì æ¸ëòûì êðóæî÷êå ñïðàâà-âíèçó êâèòèðóþòñÿ âñ¸. Ôàêò ïðèñóòñòâèÿ íàðóøåíèÿ òàêæå îòîáðàæàåòñÿ çàïèñüþ â ïðîòîêîëå, êîòîðûé ìû äîáàâèëè. Äëÿ òîãî ÷òî-áû óâèäåòü âûõîä çà ãðàíèöó íàðóøåíèÿ Âû ìîæåòå óñòàíîâèòü çíà÷åíèå ïðîèçâîäèòåëüíîñòè âåíòèëÿòîðà â 100 (ðèñ.4.2.8). Äåòàëüíåå ïðî êîíöåïöèþ ðàáîòû ñ íàðóøåíèÿìè ìîæíî ïî÷èòàòü â ðàçäåëå "Ðåöåïòû".
Èñòîðèþ íàðóøåíèé ìîæåì ïîñìîòðåòü â äîêóìåíòå "Ïðîòîêîë íàðóøåíèé", êîòîðûé äîñòóïåí ïðè âûáîðå âèäà "Äîêóìåíò" (ðèñ.5.2.7).
Äèñêðåòíûé òèïèçèðîâàííûé ïàðàìåòð "ModBus.KM101.KSH102", ïðåäñòàâëåííûé íàìè â âèäå øàðîâîãî êðàíà, ÿâëÿåòñÿ àêòèâíûì, ò.å. åãî ìîæíî âûáðàòü, ïîëó÷èâ ïàíåëü óïðàâëåíèÿ ñïðàâà, êàê íà ðèñ.5.2.6, à òàêæå ïåðåäàâàòü êîìàíäû (îòêðûòü èëè çàêðûòü). Êîìàíäû ìîæíî ïåðåäàâàòü ñ ïàíåëè óïðàâëåíèÿ èëè ÷åðåç êîíòåêñòíîå ìåíþ. Âñå äåéñòâèÿ îïåðàòîðà ïî óïðàâëÿþùèì âîçäåéñòâèÿì ïðîòîêîëèðóþòñÿ, à äîêóìåíò ïðîòîêîëà ìîæíî ïîñìîòðåòü ïðè âûáîðå âèäà "Äîêóìåíò" (ðèñ.5.2.8).
Ïðèñòóïèì ê ðàññìîòðåíèþ çàäà÷ òðåòüåãî óðîâíÿ ñëîæíîñòè, à èìåííî ê ñîçäàíèþ êîìïëåêñíîãî ýëåìåíòà. Ñîçäàíèå íîâîãî êîìïëåêñíîãî ýëåìåíòà, âêëþ÷àþùåãî â ñåáÿ êîìáèíàöèþ ðàçëè÷íûõ áàçîâûõ ïðèìèòèâîâ, ìîæåò îñóùåñòâëÿòüñÿ â íåñêîëüêî ýòàïîâ.  êà÷åñòâå ïðèìåðà ðàññìîòðèì çàäà÷ó, ñîñòîÿùóþ èç äâóõ ýòàïîâ:
Âèäæåò áóäåì ñîçäàâàòü â ðàíåå íàìè ñîçäàííîé áèáëèîòåêå "KM101". Äëÿ ýòîãî êëèêàåì ïðàâîé êíîïêîé ìàíèïóëÿòîðà "ìûøü" ïî ïóíêòó ýòîé áèáëèîòåêå è âûáèðàåì ïóíêò "Áèáëèîòåêà: originals"->"Ýëåìåíòàðíàÿ ôèãóðà", êàê ýòî ïîêàçàíî íà ðèñóíêå 5.3.1.1. Äëÿ íîâîãî ýëåìåíòà óêàçûâàåì èäåíòèôèêàòîð "air_cooler" è èìÿ "Âîçäóøíûé õîëîäèëüíèê".
Ïîñëå ïîäòâåðæäåíèÿ ó íàñ ïîÿâèòñÿ îáúåêò íîâîãî âèäæåòà ñ èìåíåì "Âîçäóøíûé õîëîäèëüíèê". Âûáåðåì åãî â ñïèñêå âèäæåòîâ áèáëèîòåêè "KM101" è îòêðîåì äëÿ ðåäàêòèðîâàíèÿ ïîñðåäñòâîì êîíòåêñòíîãî ìåíþ íîâîãî ýëåìåíòà (ðèñ. 5.3.1.2). Â èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Òåïåðü íàðèñóåì âèçóàëüíîå ïðåäñòàâëåíèå âèäæåòà. Ýòó ïðîöåäóðó ìîæíî ïðîäåëàòü äâóìÿ íèæåîïèñàííûìè ñïîñîáàìè:
Äîïîëíèòåëüíóþ èíôîðìàöèþ î ðåäàêòîðå ìîæíî ïðî÷èòàòü çäåñü: http://wiki.oscada.org/Doc/Vision/ElFigure
 íàøåì ïðèìåðå ìû âîñïîëüçóåìñÿ âòîðûì ñïîñîáîì. Äëÿ ýòîãî â ïîëå "Ñïèñîê ýëåìåíòîâ" èíñïåêòîðà àòðèáóòîâ ââåäåì íèæåïðèâåäåííûé ïåðå÷åíü è íàæìåì "Ctrl"+"Enter".
Âñå òî÷êè, â íàøåì ñëó÷àå, óêàçàíû â ñòàòè÷åñêîì âèäå, òàê êàê íå ïðåäóñìàòðèâàåòñÿ äèíàìèçàöèÿ è ñìåíà êîîðäèíàò â ðåæèìå èñïîëíåíèÿ, à âñå îñòàëüíûå ïàðàìåòðû îñòàâëåíû ïî óìîë÷àíèþ.
Âñëåäñòâèå ýòîãî íàø âèäæåò ïðèìåò âèä, èçîáðàæåííûé íà ðèñ. 5.3.1.4.
Ñîçäàäèì èêîíêó äëÿ íàøåãî âèäæåòà, êîòîðàÿ áóäåò âèäíà â äåðåâå âèäæåòîâ áèáëèîòåêè "KM101" (ðèñ. 5.3.1.5).
Íà ýòîì ïðîöåññ ñîçäàíèÿ ïåðâîãî âèäæåòà ìîæíî ñ÷èòàòü çàâåðøåííûì. Ïåðåéäåì òåïåðü ê ýòàïó êîìïîíîâêè è ñîçäàíèþ ðåçóëüòèðóþùåãî âèäæåòà.
Ðåçóëüòèðóþùèé âèäæåò áóäåì ñîçäàâàòü â áèáëèîòåêå "KM 101". Äëÿ ýòîãî êëèêàåì ïðàâîé êíîïêîé ìàíèïóëÿòîðà "ìûøü" ïî ýòîé áèáëèîòåêå è âûáèðàåì ïðèìèòèâ "Ãðóïïà ýëåìåíòîâ", êàê ýòî ïîêàçàíî íà ðèñóíêå 5.3.2.1. Äëÿ íîâîãî ýëåìåíòà óêàçûâàåì èäåíòèôèêàòîð "elCooler" è èìÿ "Õîëîäèëüíèê".
Ïîñëå ïîäòâåðæäåíèÿ ó íàñ ïîÿâèòñÿ îáúåêò íîâîãî âèäæåòà ñ èìåíåì "Õîëîäèëüíèê". Âûáåðåì åãî â ñïèñêå âèäæåòîâ áèáëèîòåêè "KM 101" è îòêðîåì äëÿ ðåäàêòèðîâàíèÿ. Â èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Âîçüì¸ì ðàíåå ñîçäàííûé ýëåìåíò "Âîçäóøíûé õîëîäèëüíèê" (air_cooler) è ïåðåòàùèì åãî (íàæàâ íà íåì ëåâóþ êíîïêó ìàíèïóëÿòîðà "ìûøü", è ïåðåìåùàÿ êóðñîð "ìûøè" äî îáëàñòè âèäæåòà; ïîñëå ýòîãî íóæíî îòïóñòèòü êíîïêó) íà âíîâü ñîçäàííûé íàìè âèäæåò (ðèñ. 5.3.2.2).
 ðåçóëüòàòå ïîÿâèòñÿ îêíî äèàëîãà ñ ïðåäëîæåíèåì ââåñòè èäåíòèôèêàòîð è èìÿ íîâîãî âèäæåòà. Èäåíòèôèêàòîð è èìÿ ìîãóò áûòü çàäàíû ïðîèçâîëüíî. Ìû ââåä¸ì èäåíòèôèêàòîð "air_cooler", à èìÿ îñòàâèì ïóñòûì (îíî óíàñëåäóåòñÿ îò ðîäèòåëÿ - ýëåìåíòà "air_cooler"). Òàêèì îáðàçîì, âíîâü ñîçäàííûé âèäæåò âíóòðè êîíòåéíåðà "elCooler" óíàñëåäóåò ýëåìåíò - "Âîçäóøíûé õîëîäèëüíèê" ("air_cooler"). Ïîñëå ïîäòâåðæäåíèÿ ââîäà èäåíòèôèêàòîðà è èìåíè âèäæåò "Âîçäóøíûé õîëîäèëüíèê" ("air_cooler") äîáàâèòñÿ â íàø âèäæåò-êîíòåéíåð "elCooler" (ðèñ. 5.3.2.3).  èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Äàëåå ðàçâåðíåì áèáëèîòåêó "Ýëåìåíòû ìíåìîñõåìû", íàéäåì òàì ýëåìåíò "Âåíòèëÿòîð" (cooler2) è ïåðåòàùèì åãî íà âèäæåò-êîíòåéíåð. Ýòîò ýëåìåíò áóäåò äèíàìè÷åñêè îòîáðàæàòü èíòåíñèâíîñòü ðàáîòû âîçäóøíîãî õîëîäèëüíèêà.  ðåçóëüòàòå ïîÿâèòñÿ îêíî äèàëîãà äëÿ ââîäà èäåíòèôèêàòîðà è èìåíè íîâîãî âèäæåòà. Ââåä¸ì èäåíòèôèêàòîð "cooler2", à èìÿ ñíîâà îñòàâèì ïóñòûì. Òàêèì îáðàçîì, âíîâü ñîçäàííûé âèäæåò âíóòðè êîíòåéíåðà "elCooler" óíàñëåäóåò ýëåìåíò áèáëèîòåêè "Ýëåìåíòû ìíåìîñõåìû" - "Âåíòèëÿòîð" (cooler2). Ïîñëå ïîäòâåðæäåíèÿ ââîäà èäåíòèôèêàòîðà è èìåíè âèäæåò "Âåíòèëÿòîð" (cooler2) äîáàâèòñÿ â íàø âèäæåò-êîíòåéíåð "elCooler".  èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Òåïåðü äîáàâèì â âèäæåò-êîíòåéíåð "elCooler" äâà òåêñòîâûõ ïîëÿ, îñíîâàííûõ íà ïðèìèòèâå "Òåêñò", ñ öåëüþ îòîáðàæåíèÿ âõîäíîé è âûõîäíîé òåìïåðàòóð ïîòîêà. Äëÿ ýòîãî â áèáëèîòåêå "KM 101" âûäåëèì âèäæåò "õîëîäèëüíèê" è íàæìåì íà ïàíåëè âèçóàëüíûõ ýëåìåíòîâ íà èêîíêó ïðèìèòèâà "Òåêñò", êàê ýòî ïîêàçàíî íà ðèñ 5.3.2.5. Â ðåçóëüòàòå ïîÿâèòñÿ äèàëîã ââîäà èäåíòèôèêàòîðà è èìåíè âíîâü ñîçäàâàåìîãî ýëåìåíòà. Ââåäåì èäåíòèôèêàòîð "Ti" äëÿ ïåðâîãî òåêñòîâîãî ïîëÿ, à èìÿ îñòàâèì ïóñòûì. Â èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Òåïåðü ñêîïèðóåì âèäæåò "Ti" ñ öåëüþ ñîçäàíèÿ àíàëîãè÷íîãî åìó âèäæåòà "To" (âûõîäíàÿ òåìïåðàòóðà). Âñòàâèì ñêîïèðîâàííûé âèäæåò, â äèàëîãå ââîäà èäåíòèôèêàòîðà è èìåíè äëÿ âíîâü ñîçäàííîãî âèäæåòà â ïîëå "ID" óêàæåì "To", à èìÿ îñòàâèì ïóñòûì (ðèñ. 5.3.2.10).  èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Òåïåðü äîáàâèì âèäæåò, îñíîâàííûé íà ïðèìèòèâå "Ýëåìåíòû ôîðìû" (ðèñ. 5.3.2.11), êîòîðûé áóäåì èñïîëüçîâàòü â êà÷åñòâå ComboBox äëÿ âûáîðà çàäàíèé ïðîèçâîäèòåëüíîñòè õîëîäèëüíèêà.  êà÷åñòâå èäåíòèôèêàòîðà óêàæåì "cw", è ïîëå "Èìÿ" îñòàâèì ïóñòûì (ðèñ. 5.3.2.12).  èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Äëÿ îòîáðàæåíèÿ åäèíèöû èçìåðåíèÿ ïðîèçâîäèòåëüíîñòè õîëîäèëüíèêà äîáàâèì âèäæåò íà îñíîâå ïðèìèòèâà "Òåêñò". Äåëàåì òó æå ïðîöåäóðó, ÷òî è äëÿ âèäæåòà "Ti". Èäåíòèôèêàòîðîì âíîâü ñîçäàííîãî âèäæåòà ñäåëàåì "dimension" (ðèñ. 5.3.2.13). Â èíñïåêòîðå àòðèáóòîâ óñòàíîâèì ñâîéñòâà:
Äëÿ äîáàâëåíèÿ ëîãèêè îáðàáîòêè âèäæåòà "Õîëîäèëüíèê"(elCooler) îòêðîåì äèàëîã ðåäàêòèðîâàíèÿ ñâîéñòâ ýòîãî âèçóàëüíîãî ýëåìåíòà è ïåðåéä¸ì íà âêëàäêó "Îáðàáîòêà". Íà ýòîé âêëàäêå ìû óâèäèì äåðåâî àòðèáóòîâ âèäæåòà è ïîëå òåêñòà ïðîãðàììû, äëÿ îáðàáîòêè àòðèáóòîâ. Äëÿ ðåøåíèÿ íàøåé çàäà÷è íóæíî äîáàâèòü òðè àòðèáóòà: Ti, To, Cw (ðèñ. 5.3.2.14). Äëÿ äîáàâëåíèÿ àòðèáóòà íóæíî ðàçâåðíóòü êîðíåâîé ýëåìåíò ".", âûáðàòü ëþáîé ýëåìåíò âíóòðè êîðíåâîãî è íàæàòü êíîïêó "Äîáàâèòü àòðèáóò" ñíèçó.
Äàëåå âêëþ÷èì â îáðàáîòêó àòðèáóò "value" êîìáîáîêñà "cw", êàê ýòî ïîêàçàíî íà ðèñ. 5.3.2.15. Àíàëîãè÷íî âêëþ÷èì â îáðàáîòêó àòðèáóò "arg0val" äëÿ Ti è To, à òàêæå àòðèáóò "speed" ó ýëåìåíòà "cooler2".
 çàâåðøåíèè óñòàíîâèì ÿçûê ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ äëÿ ïðîöåäóðû â "JavaLikeCalc.JavaScript" è íàïèøåì ïðîãðàììó îáðàáîòêè ýòîãî âèäæåòà:
Ti_arg0val = Ti; To_arg0val = To; ev_wrk = ev_rez = ""; for(off = 0; true; ) { ev_wrk = event.parse(0,"\n",off); if(!ev_wrk.length) break; 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;
Ïîìåùåíèå èëè ðåäàêòèðîâàíèå ïðîãðàììû âèäæåòà íå ïðèâîäèò ê íåïîñðåäñòâåííîé å¸ êîìïèëÿöèè, à çíà÷èò íå áóäåò ñîîáùåíèé îá îøèáêàõ â ïðîãðàììå, åñëè îíè èìåþò ìåñòî áûòü. Ýòî ñâÿçàíî ñ òåì, ÷òî íåïîñðåäñòâåííîå èñïîëíåíèå ïðîãðàììû, à çíà÷èò è å¸ êîìïèëÿöèÿ, îñóùåñòâëÿåòñÿ â îêðóæåíèè è â ìîìåíò çàïóñêà íà èñïîëíåíèå ïðîåêòà âèçóàëèçàöèè. Ïðè ýòîì âñå îøèáêè, âîçíèêøèå ïðè êîìïèëÿöèè, âûâîäÿòñÿ â âèäå ñîîáùåíèé OpenSCADA, à âèäæåòû ñ îøèáêàìè íå èñïîëíÿþòñÿ. Ïîñìîòðåòü àðõèâ ñîîáùåíèé OpenSCADA ìîæíî â ãëàâíîé âêëàäêå ïîäñèñòåìû "Àðõèâû"? èëè â òåðìèíàëå çàïóñêà OpenSCADA, åñëè çàïóñê áûë èç òåðìèíàëà èëè åãî ýìóëÿòîðà.
Ðåçóëüòèðóþùèé âèä âêëàäêè îáðàáîòêà âèäæåòà "elCooler" áèáëèîòåêè "KM 101" áóäåò èìåòü âèä, ïîêàçàííûé íà ðèñ. 5.3.2.16.
Çàêðîåì äèàëîã ðåäàêòèðîâàíèÿ ñâîéñòâ âèçóàëüíîãî ýëåìåíòà, ñîçäàäèì èêîíêó íà îñíîâå íàøåãî ýëåìåíòà, çàêðîåì âíóòðåííåå îêíî ðåäàêòèðîâàíèÿ è ñîõðàíèì ýòî âñ¸.
Íà ýòîì ðàçðàáîòêó êîìïëåêñíîãî ýëåìåíòà ìîæíî ñ÷èòàòü çàêîí÷åííîé.
Äëÿ ïðîâåðêè ðàáîòîñïîñîáíîñòè è îöåíêè ðåçóëüòàòîâ íàøèõ óñèëèé äîáàâèì ñîçäàííûé âèäæåò íà ìíåìîñõåìó, ðàçðàáîòàííóþ â ðàçäåëå 5.2. Âûïîëíèì ýòó îïåðàöèþ äëÿ äâóõ õîëîäèëüíèêîâ "AT101_1" è "AT101_2".
Äëÿ ýòîãî îòêðîåì êàäð ìíåìîñõåìû "AT 101" íà ðåäàêòèðîâàíèå. Ïîñëå ÷åãî õâàòàåì "ìûøüþ" íàø êîìïëåêñíûé ýëåìåíò è òàùèì íà ìíåìîñõåìó, ãäå îòïóñêàåì â íóæíîé íàì ïîçèöèè.  äèàëîãå çàïðîñà èìåíè ââîäèì èäåíòèôèêàòîðû "AT101_1" è "AT101_2" ñîîòâåòñòâåííî. Ïîëå èìåíè îïóñêàåì. Äîáàâëåííûå ýëåìåíòû ðàñïîëàãàåì êàê íàì óäîáíî. Ïîñëå âûïîëíåíèÿ ïîäîáíûõ ìàíèïóëÿöèé ó íàñ äîëæíà ïîëó÷èòüñÿ ìíåìîñõåìà ñ âèäîì, ïîõîæèì ïðåäñòàâëåííîé íà ðèñ.5.3.3.1.
Ñîõðàíèì íîâóþ ìíåìîñõåìó è çàêðîåì å¸ îêíî. Äàëåå ïåðåéä¸ì â ïðîåêò è îòêðîåì ýòó ìíåìîñõåìó â äåðåâå ïðîåêòà "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)"->"Êîðíåâàÿ ñòðàíèöà"->"Ãðóïïà 1"->"Ìíåìîñõåìû"->"AT 101". Êàê ìîæíî çàìåòèòü, íàøè íîâûå ýëåìåíòû ïîÿâèëèñü çäåñü àâòîìàòè÷åñêè. È íàì îñòàëîñü òîëüêî ïîäêëþ÷èòü ñâÿçè ê íîâûì ýëåìåíòàì. Äëÿ ýòîãî îòêðîåì äèàëîã ðåäàêòèðîâàíèÿ ñâîéñòâ ìíåìîñõåìû íà âêëàäêå "Ñâÿçè" (ðèñ.5.3.3.2). Íà ýòîé âêëàäêå ìû óâèäèì äåðåâî ñ ýëåìåíòàìè "AT101_1" è "AT101_2". Ðàçâåðíóâ ëþáîé èç ýëåìåíòîâ, ìû óâèäèì âåòêó "Ïàðàìåòð" êàê ðàç ñ àòðèáóòàìè "Ti", "To" è "Cw", Òàêèì îáðàçîì, ìû ìîæåì ïðîñòî óêàçàòü àäðåñ ïàðàìåòðà "prm:/LogicLev/KM101/AT101_1" â ïîëå "Ïàðàìåòð", à àòðèáóòû áóäóò ðàññòàâëåíû àâòîìàòè÷åñêè.
Ñîõðàíèì íàøó ìíåìîñõåìó è ïðîâåðèì, ÷òî ïîëó÷èëîñü. Äëÿ ýòîãî çàêðîåì îêíî äèàëîãà ñâîéñòâ è çàïóñòèì ïðîåêò "Ãðóïïû ñèãíàëèçàöèé (øàáëîí)" íà èñïîëíåíèå. Çàòåì ïåðåêëþ÷èìñÿ íà âòîðóþ ìíåìîñõåìó êíîïêàìè ëèñòàíèÿ. Ïðè áåçîøèáî÷íîé êîíôèãóðàöèè ìû äîëæíû óâèäåòü ÷òî-òî ïîäîáíîå èçîáðàæ¸ííîìó íà ðèñ.5.3.3.3.
Íà ýòîé ìíåìîñõåìå ïîñðåäñòâîì íàøèõ êîìïëåêñíûõ ýëåìåíòîâ ìû ìîæåì íå òîëüêî íàáëþäàòü, íî è óïðàâëÿòü ïðîèçâîäèòåëüíîñòüþ õîëîäèëüíèêîâ, ïðîñòî ìåíÿÿ çíà÷åíèå â êîìáîáîêñå. Ìåíÿÿ ïðîèçâîäèòåëüíîñòü, ìû ìîæåì çàìåòèòü è èçìåíåíèå òåìïåðàòóðû è ñðàáàòûâàíèå ñèãíàëèçàöèè ïî òèïèçèðîâàííîìó àíàëîãîâîìó ïàðàìåòðó. Èñòîðèþ èçìåíåíèÿ ìû ìîæåì óâèäåòü íà ñîçäàííîé íàìè â ðàçäåëå 5.1 ãðóïïå ãðàôèêîâ.
Äàííûé ðàçäåë ïðåäíàçíà÷åí äëÿ ïðåäîñòàâëåíèÿ îïèñàíèÿ ðåöåïòîâ ðåøåíèÿ ÷àñòî âñòðå÷àþùèõñÿ ïðîáëåì è çàäà÷ ïîëüçîâàòåëÿ. Ðåöåïòû ðåøåíèÿ çàäà÷ è ïðîáëåì äëÿ ïîìåùåíèÿ â ýòîò ðàçäåë ìîãóò ïðåäëàãàòüñÿ ïîëüçîâàòåëÿìè.
×àñòî âîñòðåáîâàííîé áûâàåò çàäà÷à ïåðåíîñà êîíôèãóðàöèè èç îäíîãî ïðîåêòà OpenSCADA â äðóãîé. Ïðè÷¸ì, ÷àùå âñåãî íóæíî îñóùåñòâèòü ÷àñòè÷íûé ïåðåíîñ, íàïðèìåð, ïåðåíîñ îòäåëüíûõ íàðàáîòîê, êîòîðûå ìîãóò ïðèãîäèòüñÿ â íîâîì ïðîåêòå.
Âîîáùå, íóæíî îòìåòèòü, ÷òî ëþáûå íàðàáîòêè ñ ìàëåéøèì íàì¸êîì è ïåðñïåêòèâîé âòîðè÷íîãî èñïîëüçîâàíèÿ íóæíî ñòàðàòüñÿ óíèôèöèðîâàòü è ñîõðàíÿòü â îòäåëüíûå, ñîáñòâåííûå, áèáëèîòåêè è ÁÄ. Êðàéíå íå ðåêîìåíäóåòñÿ íåïîñðåäñòâåííî ìåíÿòü ñòàíäàðòíûå êîíôèãóðàöèè è ýëåìåíòû ñòàíäàðòíûõ áèáëèîòåê, à òàêæå ñîõðàíÿòü ñîáñòâåííûå, íîâûå, áèáëèîòåêè è ýëåìåíòû â áàçàõ äàííûõ ñòàíäàðòíûõ áèáëèîòåê. Ýòî ïîçâîëèò Âàì âïîñëåäñòâèè áåçáîëåçíåííî îáíîâëÿòü ñòàíäàðòíûå áèáëèîòåêè, à òàêæå ïðîñòî èñïîëüçîâàòü íàðàáîòêè âàøèõ ïðåäûäóùèõ ïðîåêòîâ.
Åñëè Âû ó÷ëè âûøåóêàçàííûå ðåêîìåíäàöèè è âñå Âàøè óíèôèöèðîâàííûå íàðàáîòêè ñîäåðæàòüñÿ â îòäåëüíîé ÁÄ, òî âåñü ïðîöåññ ïåðåíîñà áóäåò çàêëþ÷àòüñÿ â êîïèðîâàíèè ÁÄ è ïîäêëþ÷åíèè å¸ â íîâîì ïðîåêòå.
Ïðîöåäóðà êîïèðîâàíèå ÁÄ îòëè÷àåòñÿ äëÿ ðàçëè÷íûõ òèïîâ ÁÄ è ñ íåé íóæíî áóäåò îçíàêîìèòüñÿ èç äîêóìåíòàöèè ê ÁÄ. Äëÿ ñîïóòñòâóþùåãî ðàñïðîñòðàíåíèÿ ñ äèñòðèáóòèâàìè OpenSCADA îáû÷íî èñïîëüçóåòñÿ ÁÄ SQLite, â âèäå îòäåëüíûõ ôàéëîâ *.db. Êîïèðîâàíèå ÁÄ SQLite ñîîòâåòñòâåííî çàêëþ÷àåòñÿ â ïðîñòîì êîïèðîâàíèè íóæíîãî ôàéëà ÁÄ èç äèðåêòîðèè áàç äàííûõ ñòàðîãî ïðîåêòà â äèðåêòîðèþ áàç äàííûõ íîâîãî.
Ïîäêëþ÷åíèå îñóùåñòâëÿåòñÿ ïóò¸ì ñîçäàíèÿ íîâîãî îáúåêòà ÁÄ â ìîäóëå íóæíîãî òèïà ÁÄ ïîäñèñòåìû ÁÄ è ïîñëåäóþùåé åãî êîíôèãóðàöèè (äåòàëüíåå). Ïîñëå ñîçäàíèÿ, êîíôèãóðàöèè è âêëþ÷åíèÿ ÁÄ ìîæíî ñðàçó çàãðóçèòü êîíôèãóðàöèþ èç íå¸, íàæàâ êíîïêó "Çàãðóçèòü ñèñòåìó èç ýòîé ÁÄ" íà ôîðìå îáúåêòà ÁÄ.
 ñëó÷àå, åñëè íóæíàÿ êîíôèãóðàöèÿ ñîäåðæèòñÿ â îáùåé ÁÄ èëè ÁÄ ñòàíäàðòíûõ áèáëèîòåê, òî ïðåäâàðèòåëüíî íóæíî îñóùåñòâèòü âûäåëåíèå å¸ â îòäåëüíóþ ÁÄ. Âûäåëèòü êîíôèãóðàöèþ ìîæíî èëè â îòäåëüíóþ ÁÄ ñ Âàøèìè áèáëèîòåêàìè èëè â ýêñïîðòíóþ ÁÄ. Ýêñïîðòíàÿ ÁÄ, â îòëè÷èå îò áèáëèîòå÷íîé, ñëóæèò òîëüêî äëÿ ïåðåíîñà êîíôèãóðàöèè è áóäåò âïîñëåäñòâèè óäàëåíà.  ëþáîì ñëó÷àå íóæíî ñîçäàòü íîâóþ ÁÄ äëÿ íóæíîãî òèïà ÁÄ, ïîäîáíî ïðîöåäóðå ïîäêëþ÷åíèÿ âûøå. Äëÿ ïåðåíîñà íóæíî èñïîëüçîâàòü òèï ÁÄ, êîòîðûé ïëàíèðóåòñÿ èñïîëüçîâàòü â íîâîì ïðîåêòå. Îáû÷íî äëÿ ïåðåíîñà ëó÷øå èñïîëüçîâàòü òèï ÁÄ SQLite, ââèäó ïðîñòîé ïðîöåäóðû êîïèðîâàíèÿ. Îäíàêî, åñëè èñïîëüçîâàòü ñåòåâóþ ÑÓÁÄ ýòà ïðîöåäóðà ìîæåò ïðåâðàòèòüñÿ â ïðîñòîå ïîäêëþ÷åíèå áèáëèîòå÷íîé èëè ýêñïîðòíîé ÁÄ â íîâîì ïðîåêòå.
Äàëåå íåîáõîäèìî âûäåëèòü êîíôèãóðàöèþ â óíèôèöèðóþùèå èëè ýêñïîðòíûå áèáëèîòåêè, åñëè îíà íå ìîæåò áûòü ïðÿìî ñîõðàíåíà â ÁÄ. Íàïðèìåð, îòäåëüíûå øàáëîíû ïàðàìåòðîâ èëè ïàðàìåòðû êîíòðîëëåðîâ ñáîðà äàííûõ, âèçóàëüíûå ýëåìåíòû áèáëèîòåê âèäæåòîâ è ò.ä. âûäåëèòü ìîæíî ïóò¸ì ñîçäàíèÿ áèáëèîòåêè ýêñïîðòà èëè óíèôèêàöèè ñîîòâåòñòâóþùåãî ýëåìåíòà, íàïðèìåð, áèáëèîòåêà øàáëîíîâ èëè êîíòðîëëåð ïàðàìåòðîâ ñáîðà äàííûõ, áèáëèîòåêà âèäæåòîâ è ò.ä. Äëÿ âíîâü ñîçäàííîé áèáëèîòåêè â êà÷åñòâå ÁÄ íóæíî óêàçàòü ðàíåå ñîçäàííóþ óíèôèöèðóþùóþ èëè ýêñïîðòíóþ ÁÄ. Äàëåå îñóùåñòâëÿåòñÿ êîïèðîâàíèå íóæíûõ ýëåìåíòîâ èç èñõîäíîé áèáëèîòåêè â óíèôèöèðóþùóþ/ýêñïîðòíóþ ïîñðåäñòâîì ñòàíäàðòíîé ôóíêöèè êîïèðîâàíèÿ. Ïîñëå êîïèðîâàíèÿ óíèôèöèðóþùóþ/ýêñïîðòíóþ áèáëèîòåêó íóæíî ñîõðàíèòü.
 ñëó÷àå íåîáõîäèìîñòè ïåðåíîñà îáúåêòà ñ îòäåëüíûì ñâîéñòâîì ÁÄ, èëè öåëûõ áèáëèîòåê, îïåðàöèþ ñîçäàíèÿ ïðîìåæóòî÷íîé áèáëèîòåêè è ïîñëåäóþùåãî êîïèðîâàíèÿ ìîæíî îïóñòèòü. Äîñòàòî÷íî â ïîëå ÁÄ óêàçàòü ðàíåå ñîçäàííóþ óíèôèöèðóþùóþ èëè ýêñïîðòíóþ ÁÄ è ñîõðàíèòü ýëåìåíò.
Äàëüíåéøèå äåéñòâèÿ, à èìåííî ïðîñòîé ïåðåíîñ ÁÄ, îñóùåñòâëÿþòñÿ â ñîîòâåòñòâèè ñ ïðåäûäóùèì ðàçäåëîì.
Ïðè ïåðåíîñå êîíôèãóðàöèè ïóò¸ì ýêñïîðòèðîâàíèÿ íåîáõîäèìî îñóùåñòâèòü îáðàòíûé ïðîöåññ êîïèðîâàíèÿ èç ýêñïîðòíûõ áèáëèîòåê â ëîêàëüíûå áèáëèîòåêè íîâîãî ïðîåêòà è óäàëåíèå ýêñïîðòíîé ÁÄ.
Äëÿ ïåðåíîñà ìîæíî îñóùåñòâèòü èçáèðàòåëüíîå êîïèðîâàíèå òàáëèö ÁÄ ñ êîíôèãóðàöèåé ïóò¸ì âûáîðà îáúåêòîâ òàáëèö â îáúåêòå ÁÄ; êîìàíäû êîïèðîâàíèÿ, âûáîðà îáúåêòà íîâîé ÁÄ è êîìàíäû âñòàâêè (äåòàëüíåå). Îäíàêî, äëÿ ýòîãî íóæíî çíàòü ñòðóêòóðó ÁÄ, ïðî êîòîðóþ èçëîæåíî ïî ýòîé ññûëêå.
Ó íà÷èíàþùèõ ïîëüçîâàòåëåé ÷àñòî âîçíèêàåò âîïðîñ îáåñïå÷åíèÿ âûäåðæêè âðåìåííûõ èíòåðâàëîâ ïðè ïðîãðàììèðîâàíèè âû÷èñëèòåëüíûõ ïðîöåäóð â îêðóæåíèè OpenSCADA. Ýòîò âîïðîñ îáû÷íî ñâÿçàí ñ íàëè÷èåì ïðåäûäóùåãî îïûòà ïðîãðàììèðîâàíèÿ ëèíåéíûõ âû÷èñëåíèé è îòñóòñòâèåì îïûòà ïðîãðàììèðîâàíèÿ öèêëè÷åñêèõ ñèñòåì ðåàëüíîãî âðåìåíè.
 ñèñòåìàõ ðåàëüíîãî âðåìåíè èñïîëüçóåòñÿ òàê íàçûâàåìûé òàêò èëè öèêë ïåðèîäè÷åñêèõ âû÷èñëåíèé, ò.å. ðèòì æèçíè.  êàæäîì òàêòå âûïîëíÿåòñÿ íåêîòîðàÿ ïðîöåäóðà, êîòîðàÿ íå äîëæíà çàíèìàòü âðåìåíè áîëüøå òàêòà. Êàê ñëåäñòâèå, åñëè ïðîöåäóðà òàêòà îñòàíàâëèâàåòñÿ â îæèäàíèè, òî îñòàíàâëèâàåòñÿ è æèçíü ñèñòåìû ðåàëüíîãî âðåìåíè. Ñëåäîâàòåëüíî, èñïîëüçîâàíèå â ýòèõ ïðîöåäóðàõ òðàäèöèîííûõ ôóíêöèé óñûïëåíèÿ çàäà÷è íåäîïóñòèìî!
Ðåøåíèå çàäà÷è âûäåðæêè íóæíîãî èíòåðâàëà âðåìåíè â ñèñòåìàõ ðåàëüíîãî âðåìåíè, â ðàìêàõ ðèòìà æèçíè, îñóùåñòâëÿåòñÿ â äâà ñïîñîáà. Ïåðâûé ñïîñîá çàêëþ÷àåòñÿ â äåêðåìåíòå ñ÷¸ò÷èêà, óñòàíîâëåííîãî â çíà÷åíèå âðåìåííîãî èíòåðâàëà, â êàæäîì öèêëå íà çíà÷åíèå ïåðèîäè÷íîñòè òàêòà äî çíà÷åíèÿ <=0, íàïðèìåð, â OpenSCADA ýòî ðåàëèçóåòñÿ òàêèì îáðàçîì:
if((tm_cnt-=1/f_frq) <= 0) //Äåêðåìåíò { tm_cnt = 10; //Óñòàíîâêà ñ÷¸ò÷èêà â çíà÷åíèå 10 ñåêóíä //Âûïîëíåíèå äðóãèõ äåéñòâèé ñ ïåðèîäè÷íîñòüþ 10 ñåêóíä }
Âòîðîé ñïîñîá îñíîâàí íà àñòðîíîìè÷åñêîì âðåìåíè, ò.å. â öèêëå îñóùåñòâëÿåòñÿ ñðàâíåíèå ñ òåêóùèì âðåìåíåì, íàïðèìåð, â OpenSCADA ýòî ðåàëèçóåòñÿ òàêèì îáðàçîì:
if(SYS.time() > tm_to) { tm_to = SYS.time()+10; //Óñòàíîâêà ïîðîãà îæèäàíèÿ íà 10 ñåêóíä áîëåå òåêóùåãî âðåìåíè //Âûïîëíåíèå äðóãèõ äåéñòâèé ñ ïåðèîäè÷íîñòüþ 10 ñåêóíä }
Âòîðîé ñïîñîá ÿâëÿåòñÿ áîëåå íàä¸æíûì ïîñêîëüêó â í¸ì èñêëþ÷àåòñÿ ïðîáëåìà çàïàçäûâàíèÿ ñðàáàòûâàíèÿ ïî ïðè÷èíå âîçìîæíîãî âûïîëíåíèÿ ïðîöåäóðû öèêëà áîëåå âðåìåíè òàêòà. Õîòÿ â ïðàâèëüíî íàñòðîåííûõ ñèñòåìàõ è çàäà÷àõ äàííûé ýôôåêò íå äîëæåí èìåòü ìåñòî.
Äëÿ ìàêñèìàëüíîãî óïðîùåíèÿ ðàçâ¸ðòûâàíèÿ OpenSCADA ìîæíî èñïîëüçîâàòü æèâûå ñáîðêè çàãðóçî÷íûõ äèñêîâ CD è USB. Æèâîé äèñê ïðåäóñìàòðèâàåò âîçìîæíîñòü çàãðóçêè ïðÿìî ñ íåãî è áûñòðîãî ïîëó÷åíèÿ æåëàåìîãî ðàáî÷åãî îêðóæåíèÿ. Ïðè çàãðóçêå è ðàáîòå æèâîé äèñê íå èñïîëüçóåò øòàòíûõ íîñèòåëåé, à çíà÷èò Âû ìîæåòå íå áåñïîêîèòüñÿ çà èõ öåëîñòíîñòü è ñîõðàííîñòü äàííûõ íà íèõ.  öåëîì æèâîé äèñê ÿâëÿåòñÿ óäîáíûì ñðåäñòâîì ñ øèðîêèì íàáîðîì íóæíûõ ïðîãðàììíûõ èíñòðóìåíòîâ ïîä ðóêîé è íåçàâèñèìûì îò ñòàöèîíàðíîãî ïðîãðàììíîãî îêðóæåíèÿ, ñïîñîáíûì îñóùåñòâèòü äèàãíîñòèêó ïðîãðàììíîãî è àïïàðàòíîãî îêðóæåíèÿ, à òàêæå èõ âîññòàíîâëåíèå, â íåêîòîðûõ ñëó÷àÿõ.
Æèâîé äèñê ïðåäñòàâëÿåò ñîáîé óïàêîâàííûé îáðàç îïåðàöèîííîé ñèñòåìû è ïðèêëàäíûõ ïðîãðàìì ðàçìåðîì îêîëî 700ÌÁ, çàïèñàííûé íà CD/DVD äèñê èëè USB-Flash íîñèòåëü. Ïðè ñâîåé ðàáîòå îïåðàöèîííàÿ ñèñòåìà "íà ëåòó" ðàñïàêîâûâàåò íóæíûå ôàéëû äëÿ çàïóñêà ïðîãðàìì è îòêðûòèÿ äîêóìåíòîâ, à çíà÷èò íå èñïîëüçóåò îïåðàòèâíîé ïàìÿòè áîëüøå, ÷åì ïðè å¸ îáû÷íîé óñòàíîâêå.
Æèâûå äèñêè ñ OpenSCADA ñîáèðàþòñÿ â íåñêîëüêèõ âàðèàíòàõ íà îñíîâå äèñòðèáóòèâîâ ÎÑ Linux Debian è
ALTLinux (ñòàðûå âåðñèè) è äîñòóïíû äëÿ çàãðóçêè ê ñîîòâåòñòâóþùåé âåðñèè OpenSCADA çäåñü:
http://oscada.org/ru/glavnaja/zagruzit. Òåêóùèå æèâûå ñáîðêè ñ OpenSCADA îáëàäàþò çíà÷èòåëüíî áîëüøèìè ôóíêöèÿìè ÷åì ïðåäóñìàòðèâàëîñü èçíà÷àëüíî:
Íà äàííûé ìîìåíò â îñíîâíîì îñóùåñòâëÿþòñÿ ñáîðêè ãèáðèäíûõ ISO îáðàçîâ "æèâûõ äèñêîâ" (*LiveCD_USB.iso), êîòîðûå ìîæíî çàïèñàòü ïðÿìî íà CD/DVD, USB-Flash, à òàêæå èçâëå÷ü ñîäåðæèìîå äëÿ çàïèñè íà USB-Flash ñ ôàéëîâûìè ñèñòåìàìè FAT èëè EXT.
Îñíîâíûì âàðèàíòîì ôîðìèðîâàíèÿ "æèâîãî äèñêà" ÿâëÿåòñÿ çàïèñü íà CD/DVD, äëÿ ÷åãî ìîæíî èñïîëüçîâàòü ñòàíäàðòíûé èíñòðóìåíòàðèé èñõîäíîé îïåðàöèîííîé ñèñòåìû. Îäíàêî âñ¸ áîëåå ðàñïðîñòðàí¸ííûì ñòàíîâèòñÿ çàïèñü íà USB-Flash, êîòîðàÿ ìîæåò áûòü îñóùåñòâëåíà èç îêðóæåíèÿ ÎÑ Linux, íàïðèìåð, èç îêðóæåíèÿ ýòîãî æå "æèâîãî äèñêà", çàïèñàííîãî è çàãðóæåííîãî ðàíåå ñ CD/DVD äèñêà; èëè æå èç ÎÑ MS Windows ïîñðåäñòâîì "Win32DiskImager".
Çàïèñü îáðàçà "æèâîãî äèñêà" íà USB-Flash óíè÷òîæèò âñå äàííûå è ñäåëàåò åãî íåïðèãîäíûì äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå íîñèòåëÿ äàííûõ, åñëè íå ó÷èòûâàòü âîçìîæíîñòü çàïèñè íà ðàçäåë ñîõðàíåíèÿ èçìåíåíèé îêðóæåíèÿ ÎÑ æèâîãî äèñêà, êîòîðûé áóäåò ñîçäàí ïðè ïåðâîé çàãðóçêå ñ æèâîãî äèñêà, â ñëó÷àå ALTLinux, èëè ïîëüçîâàòåëåì, â ñëó÷àå "Debian".
Àäðåñ äèñêà äëÿ çàïèñè ISO-îáðàçà èìååò âèä "/dev/sd{x}", à óçíàòü åãî ìîæíî âûçîâîì êîíñîëüíîé êîìàíäû "$ dmesg" ñðàçó ïîñëå ïîäêëþ÷åíèÿ öåëåâîãî äèñêà USB-Flash. Èç îêðóæåíèÿ Linux ISO-îáðàç ìîæíî çàïèñàòü òàêèì îáðàçîì:
Ðàíåå îñóùåñòâëÿëèñü ñïåöèàëüíûå ñáîðêè îáðàçîâ äëÿ çàïèñè èõ íà ôàéëîâóþ ñèñòåìó FAT. Íà äàííûé ìîìåíò ñïåöèàëüíî òàêèå îáðàçû ñîáèðàþòñÿ òîëüêî äëÿ "ïðîøèâîê" (FirmWare) ðÿäà ÏËÊ (*flash.tar). Îäíàêî äëÿ ñîçäàíèÿ æèâûõ USB-Flash äèñêîâ îáùåãî íàçíà÷åíèÿ ìîæíî èñïîëüçîâàòü ãèáðèäíûé ISO-îáðàç, î êîòîðîì îïèñàíî â ðàçäåëå âûøå.
Ïðåèìóùåñòâîì "æèâîãî äèñêà" íà USB-Flash, êàê ðàíåå óïîìèíàëîñü, ÿâëÿåòñÿ ñîâìåùåíèå ôóíêöèè USB-Flash äèñêà êàê íîñèòåëÿ äàííûõ è êàê æèâîãî äèñêà. Êðîìå òîãî, òàêèì îáðàçîì ìîæíî ñîçäàâàòü êîìïàêòíûå, íàä¸æíûå è ôóíêöèîíàëüíûå ðåøåíèÿ âñòðàèâàåìûõ ñèñòåì ñ OpenSCADA, âçÿâ "æèâîé äèñê" çà îñíîâó, íàïðèìåð: ïðîãðàììèðóåìûå ëîãè÷åñêèå êîíòðîëëåðû (ÏËÊ), ïàíåëüíûå êîíòðîëëåðû (ñ ñåíñîðíûì äèñïëååì), à òàêæå ïðîñòî SCADA-ñåðâåðû è SCADA-ñòàíöèè îïåðàòîðà "áûñòðîãî ïðèãîòîâëåíèÿ"; ïóò¸ì çàïèñè æèâîãî äèñêà íà ñòàöèîíàðíûé íîñèòåëü (HDD, SSD èëè Flash). Íàä¸æíîñòü äàííîãî ðåøåíèÿ îïðåäåëÿåòñÿ ðàçìåùåíèåì îñíîâíîãî ÏÎ â íåìîäèôèöèðóåìîì óïàêîâàííîì ôàéëå, à ðàáî÷èõ äàííûõ íà æóðíàëèðóåìîé ôàéëîâîé ñèñòåìå.
Çàïèñü äàííûõ "æèâîãî äèñêà" íà ôàéëîâóþ ñèñòåìó ìîæíî îñóùåñòâèòü èç ëþáîé ÎÑ (äëÿ FAT), íî óñòàíîâèòü çàãðóç÷èê òîëüêî â ÎÑ Linux, äëÿ ÷åãî ìîæíî âîñïîëüçîâàòüñÿ "æèâûì" CD/DVD äèñêîì èç ïðîøëîãî ðàçäåëà.
Ïðîöåäóðà ñîçäàíèÿ æèâîãî äèñêà ñëåäóþùàÿ äëÿ äàííûõ ãèáðèäíîãî ISO-äèñêà (Debian è ALTLinux):
Äëÿ îáðàçà "æèâîãî äèñêà" íà FAT (ALTLinux), âñ¸ îò ñóïåðïîëüçîâàòåëÿ: $ su -
Äàííûé ñïîñîá ðàçâ¸ðòûâàíèÿ æèâîãî äèñêà òðåáóåò çíàíèé ÎÑ Linux è èíòåðôåéñà êîìàíäíîé ñòðîêè (êîíñîëè), à òàêæå îñíîâ ðàçáèåíèÿ äèñêîâûõ íîñèòåëåé ïîñêîëüêó, ïðè íåêîððåêòíîì íà÷àëüíîì ðàçáèåíèè íîñèòåëÿ, çàãðóçêà ìîæåò íå ïðîéòè.
Æèâîé äèñê, êàê ðàíåå óêàçûâàëîñü, äîïóñêàåò ïîëíîöåííóþ ðàáîòó ñ âîçìîæíîñòüþ ñîõðàíåíèÿ ðàáî÷èõ äàííûõ, à òàêæå îáíîâëåíèÿ ÏÎ (çà èñêëþ÷åíèåì ñèñòåìíîãî ÏÎ è ÿäðà ÎÑ Linux). Îáû÷íî äàííàÿ âîçìîæíîñòü èìååò ñìûñë òîëüêî äëÿ USB, HDD, SSD íîñèòåëåé.
 ñëó÷àå äèñòðèáóòèâîâ Debian, îòäåëüíûé ðàçäåë äëÿ õðàíåíèÿ ðàáî÷èõ äàííûõ, ñ ìåòêîé "persistence", íóæíî âñåãäà ñîçäàâàòü ñïåöèàëüíî, à òàêæå â ôàéëå "persistence.conf" íà í¸ì óêàçûâàòü ôàéëîâóþ ñèñòåìó, èëè å¸ ÷àñòü, äëÿ îòðàæåíèÿ íà çàïèñü (íàïðèìåð, "/home"). Äëÿ îòðàæåíèÿ âñåé êîðíåâîé ôàéëîâîé ñèñòåìû â ôàéëå íóæíî çàïèñàòü "/ union".  êà÷åñòâå ôàéëîâîé ñèñòåìû ýòîãî ðàçäåëà ëó÷øå èñïîëüçîâàòü "EXT3". Äëÿ ñîçäàíèÿ ðàçäåëà Âû ìîæåòå èñïîëüçîâàòü ïðîãðàììó ìåíåäæåðà ðàçäåëîâ, íàïðèìåð "gparted".
 ñëó÷àå äèñòðèáóòèâà ALTLinux (6), è ïðÿìîé çàïèñè ãèáðèäíîãî ISO-îáðàçà, òàêîé ðàçäåë áóäåò ñîçäàí ïðè ïåðâîì çàïóñêå. Ïðè ôîðìèðîâàíèè "æèâîãî äèñêà" íà FAT è EXT íåîáõîäèìî ñîçäàòü îòäåëüíûé ðàçäåë ñ ìåòêîé "alt-live-storage" è ôàéëîâîé ñèñòåìîé "EXT3", ÷òî ìîæíî ñäåëàòü â ïðîãðàììå ìåíåäæåðà ðàçäåëîâ, íàïðèìåð "gparted".
Äëÿ çàãðóçêè ñ ïîëó÷åííîãî "æèâîãî äèñêà" íóæíî ïåðåãðóçèòü êîìïüþòåð è íàæàòü êëàâèøó âõîäà â ìåíþ çàãðóçêè BIOS, â ñàìîì íà÷àëå çàãðóçêè, äî çàãðóç÷èêà ñòàöèîíàðíîé ÎÑ, è âûáðàòü òàì íàø íîñèòåëü (ðèñ.6.3.1). Íà ðàçíûõ êîìïüþòåðàõ êëàâèøà âõîäà â ìåíþ çàãðóçêè ìîæåò îòëè÷àòüñÿ è áûòü îäíîé èç "F8", "F9", "F10", "F11" èëè "F12".
Ïîñëå âûáîðà óñòðîéñòâà äîëæíî ïîÿâèòüñÿ ìåíþ çàãðóçêè æèâîãî äèñêà (ðèñ.6.3.2), ãäå ïðåäâàðèòåëüíî âàæíî âûáðàòü âàðèàíò çàãðóçêè ñ óêàçàííûì ÿçûêîì, äëÿ Debian, èëè Âàø ÿçûê, ïî êëàâèøå F2 äëÿ ALTLinux.
 ðåçóëüòàòå çàãðóçêè æèâîãî äèñêà Âû ïîëó÷èòå ðàáî÷èé ñòîë TDE (ðèñ.6.3.3).
Íàðóøåíèÿ è ðàáîòà ñ íèìè â OpenSCADA ðåàëèçóåòñÿ äâîÿêî, ÷òî ñâÿçàíî ñî ñòðóêòóðîé OpenSCADA, ñïîñîáàìè å¸ èñïîëüçîâàíèÿ, à òàêæå ñàìîé ïðèðîäîé íàðóøåíèé.
Ïåðâîé ñòîðîíîé íàðóøåíèé, ñ êîòîðûìè OpenSCADA ðàáîòàåò èçíà÷àëüíî è êîòîðàÿ íàèáîëåå âîñòðåáîâàíà, ÿâëÿåòñÿ óâåäîìëåíèå ðàçëè÷íûìè ñïîñîáàìè. Ïîñêîëüêó óâåäîìëåíèå ýòî ÷àñòü èíòåðôåéñà âèçóàëèçàöèè òî è ðåàëèçîâàíû îíè â äâèæêå âèçóàëèçàöèè UI.VCAEngine è âèçóàëèçàòîðàõ UI.Vision, UI.WebVision. Íà äàííûé ìîìåíò ïîäñèñòåìà óâåäîìëåíèé íàðóøåíèé â OpenSCADA ðåàëèçóåò ôóíêöèè:
Ïðè ðåàëèçàöèè óâåäîìëåíèé â ñðåäå âèçóàëèçàöèè íåò óñòàíîâëåííîãî ïðàâèëà ïîëó÷åíèÿ è ôîðìèðîâàíèÿ ïðèçíàêà íàðóøåíèÿ, ïîñêîëüêó â ðàçíûõ ñèòóàöèÿõ íåò îäíîçíà÷íîñòè. Íà äàííûé ìîìåíò íà ñòîðîíå òèïèçèðîâàííûõ øàáëîíîâ èñòî÷íèêà äàííûõ ïðàêòèêóåòñÿ ñïîñîá ôîðìèðîâàíèÿ àòðèáóòà îøèáêè "err" ñ êîäàìè è òåêñòîì íàðóøåíèÿ, à èõ îáðàáîòêà è ôîðìèðîâàíèå óâåäîìëåíèÿ îñóùåñòâëÿåòñÿ â âèçóàëüíîì îáðàçå îáúåêòà äàííûõ. Èíîãäà æå îáðàáîòêà ãðàíèö óñòàâîê îñóùåñòâëÿåòñÿ ïðÿìî â âèçóàëüíîì îáðàçå îáúåêòà äàííûõ.
Âïîñëåäñòâèè âîçíèêëà íåîáõîäèìîñòü ïðîòîêîëèðîâàíèÿ, à òàêæå ó÷¸ò àêòóàëüíûõ íà òåêóùèé ìîìåíò íàðóøåíèé. Åñëè äëÿ ïðîòîêîëèðîâàíèÿ äîñòàòî÷íî ôîðìèðîâàíèÿ ñèñòåìíûõ ñîîáùåíèé ñ îãîâîðåííîé êàòåãîðèåé è ôîðìàòîì ñîîáùåíèÿ, òî äëÿ êîíòðîëÿ çà òåêóùèìè íàðóøåíèÿìè íåîáõîäèì íåêèé áóôåð. Âïîñëåäñòâèè òàêîé áóôåð áûë äîáàâëåí â âèäå íàäñòðîéêè íàä ïîäñèñòåìîé ñîîáùåíèé, à àäðåñàöèÿ ê íåìó îñóùåñòâëÿåòñÿ èíâåðñèåé óðîâíÿ ñîîáùåíèÿ. Òàê çàïèñü ñîîáùåíèÿ ñ óðîâíåì "-2" è êàòåãîðèåé "TEST" ïîìåñòèò ñîîáùåíèå â áóôåð íàðóøåíèé è ïðîäóáëèðóåò åãî â àðõèâå ñîîáùåíèé, ñ óðîâíåì "2". Ïðè çàïðîñå ñîîáùåíèé ñ îòðèöàòåëüíûì óðîâíåì ñîîáùåíèÿ áóäóò áðàòüñÿ èç áóôåðà íàðóøåíèé. Óäàëåíèå/ñíÿòèå íàðóøåíèÿ îñóùåñòâëÿåòñÿ çàïèñüþ ñîîáùåíèÿ ñ òîé æå êàòåãîðèåé "TEST" è íåîòðèöàòåëüíûì óðîâíåì.
Òàêàÿ êîíöåïöèÿ ó÷¸òà àêòèâíûõ íàðóøåíèé ïîçâîëÿåò èñïîëüçîâàòü ñòàíäàðòíûå ìåõàíèçìû ðàáîòû ñ ñîîáùåíèÿìè äëÿ ó÷¸òà íàðóøåíèé:
Ðåãèñòðàöèþ ñîîáùåíèé ëó÷øå âñåãî îñóùåñòâëÿòü íà ñòîðîíå òèïèçèðîâàííûõ øàáëîíîâ èñòî÷íèêà äàííûõ ïîñðåäñòâîì ñïåöèàëüíîé ôóíêöèè SYS.DAQ["Modul"]["Controller"].alarmSet(string mess, int lev = -5, string prm = ""), êîòîðàÿ óíèôèöèðóåò êàòåãîðèþ. Äëÿ âûçîâà ýòîé ôóíêöèè èç êîíòåêñòà øàáëîíà íóæíî äîáàâèòü IO "this" òèïà "Îáúåêò", ïîñëå ÷åãî óñòàíîâêà íàðóøåíèÿ áóäåò èìåòü âèä this.cntr().alarmSet("Ïàðàìåòð: íàðóøåíèå", -5, "prm");. Óêàçàííàÿ ôóíêöèÿ ñåé÷àñ èñïîëüçóåòñÿ âî ìíîãèõ ìîäóëÿõ èñòî÷íèêîâ äàííûõ äëÿ ó÷¸òà ãëîáàëüíûõ íàðóøåíèé îáúåêòîâ êîíòðîëëåðîâ. Ôóíêöèÿ ôîðìèðóåò íàðóøåíèå ñ êàòåãîðèåé: al{ModId}:{CntrId}[.{PrmId}], ãäå:
 öåëîì íóæíî îòìåòèòü, ÷òî óâåäîìëåíèÿ è ðåãèñòðàöèÿ íàðóøåíèé - ýòî ðàçíûå ìåõàíèçìû, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ ïî îòäåëüíîñòè - äëÿ ïðîñòûõ ïðîåêòîâ, èëè âìåñòå - äëÿ áîëüøèõ êîìïëåêñíûõ ïðîåêòîâ.
Èíîãäà ìîæåò ïîíàäîáèòüñÿ ñîõðàíèòü è çàòåì âîññòàíîâèòü, â îñíîâíîì ïðè ïåðåçàïóñêå, íåêîòîðûå ìîäèôèöèðîâàííûå äàííûå âðîäå ñ÷¸ò÷èêîâ ïðîáåãà îáîðóäîâàíèÿ.  öåëîì îáðàáîòêó òàêîãî ðîäà èñòî÷íèêîâ äàííûõ è îáîðóäîâàíèÿ íóæíî îñóùåñòâëÿòü â ëîãè÷åñêîì óðîâíå? ïîäñèñòåìû "Ñáîð äàííûõ". Òàêóþ çàäà÷ó Âû ìîæåòå ðåàëèçîâàòü ìíîãèìè ïóòÿìè, ïðåäóñìàòðèâàþùèìè ñîõðàíåíèå äàííûõ è ïîñëåäóþùåå èõ âîññòàíîâëåíèå íà íåêîòîðîì õðàíèëèùå, îäíàêî íàèáîëåå èçâåñòíûå ñïîñîáû ýòî:
Åñëè Âû ñòðîãî ñëåäóåòå îñíîâíîé èíñòðóêöèè òî Âû íå âñòðåòèòå çäåñü íèêàêèõ ïðîáëåì, îäíàêî åñëè Âû äåëàåòå ÷òî-òî ñâî¸ òîãäà Âàì ìîæåò áûòü íóæíà íåêîòîðàÿ îòëàäêà. OpenSCADA ïðåäîñòàâëÿåò øèðîêèå âîçìîæíîñòè îòëàäêè è îáíàðóæåíèÿ ïðîáëåì ïðîãðàììèðîâàíèÿ â îáùåì ïîëüçîâàòåëüñêîì ïðîñòðàíñòâå OpenSCADA è ïðîáëåì ñàìîé OpenSCADA è å¸ ÷àñòåé.
Îñíîâíûå ïîäõîäû ïîëüçîâàòåëüñêîé îòëàäêè, äîñòóïíûå äëÿ LTS è Ðàáî÷åé âåðñèè, ïðåäóñìàòðèâàþò:
Ïðèñóòñòâóþùèå ìåõàíèçìû îòëàäêè ðàñøèðåíû â Ðàáî÷åé âåðñèè íà ïðåäìåò:
Äàííûé ìåòîä îòëàäêè ïðåäóñìàòðèâàåò íàáëþäåíèå çà êîíòåêñòîì èñïîëíåíèÿ ïî çíà÷åíèÿì ïåðåìåííûõ, âêëþ÷àÿ äîáàâëåíèå ïðîìåæóòî÷íûõ çíà÷åíèé äëÿ äåòàëèçàöèè.
Òåêóùèé êîíòåêñò èñïîëíåíèÿ ïðîöåäóð Ñáîðà Äàííûõ Âû ìîæåòå íàáëþäàòü íà ñîîòâåòñòâóþùåé ñòðàíèöå îáúåêòà èñïîëíÿþùåãîñÿ êîíòåêñòà âðîäå: âêëàäêà "Àòðèáóòû" Ëîãè÷åñêîãî óðîâíÿ ïàðàìåòðîâ (Ðèñ. 6.6.1), âêëàäêà "Âû÷èñëåíèÿ" âû÷èñëèòåëÿ îñíîâàííîãî íà Java (Ðèñ. 6.6.2) è ïîäîáíîå. Äëÿ äîáàâëåíèÿ íåêîòîðûõ ïðîìåæóòî÷íûõ çíà÷åíèé Âû ìîæåòå âðåìåííî äîáàâèòü (èëè óñòàíîâèòü â àòðèáóò òîëüêî äëÿ ÷òåíèÿ) è ïîäêëþ÷èòü íåêîòîðûå àòðèáóòû ê øàáëîíó èëè äîáàâèòü è ïðèâÿçàòü íåêîòîðûå  ê ôóíêöèè.
Òåêóùèé êîíòåêñò èñïîëíåíèÿ ÑÂÓ ïðîöåäóð (ïðîöåäóðû âèäæåòîâ) Âû ìîæåòå íàáëþäàòü íà âêëàäêå "Àòðèáóòû" ñîîòâåòñòâóþùåé ñòðàíèöû èëè âèäæåòà ñåàíñà âûïîëíÿåìîãî ïðîåêòà (Ðèñ. 6.6.3). Äëÿ äîáàâëåíèÿ íåêîòîðûõ ïðîìåæóòî÷íûõ çíà÷åíèé Âû ìîæåòå âðåìåííî äîáàâèòü è ïîäêëþ÷èòü íåêîòîðûå àòðèáóòû ê âèäæåòó/ñòðàíèöå.
Äàííûé ìåòîä îòëàäêè ïðåäóñìàòðèâàåò ðàçìåùåíèå è/èëè âêëþ÷åíèå îòëàäî÷íûõ ñîîáùåíèé è ïîñëåäóþùåå íàáëþäåíèå çà íèìè â îáùåì èíòåðôåéñå àðõèâàöèè è íàáëþäåíèÿ ñîîáùåíèé (Ðèñ. 6.6.4) èëè â ñîîòâåòñòâóþùåì èíòåðôåéñå ÷àñòè OpenSCADA:
Äëÿ äîáàâëåíèÿ ñîîáùåíèé óðîâíÿ îòëàäêè, èëè äðóãèõ óðîâíåé, ê ñâîåé ïðîöåäóðå Âû ìîæåòå èñïîëüçîâàòü ñëåäóþùèå ôóíêöèè:
Îòëàäî÷íûå ñîîáùåíèÿ (ñóôôèêñ "Debug" èëè óðîâåíü 0), íà Ðàáî÷åé âåðñèè, áóäóò äîñòóïíû äëÿ íàáëþäåíèÿ òîëüêî ïîñëå âêëþ÷åíèÿ îòëàäêè, óñòàíîâêè ïîëÿ "Íàèìåíüøèé óðîâåíü" â "Îòëàäêà (0)" (Ðèñ. 6.6.8), è âûáîðà êàòåãîðèè ñîîáùåíèé (Ðèñ. 6.6.9), äëÿ äåòàëåé ÷èòàéòå òóò?! Îäíàêî âêëþ÷åíèå è âûêëþ÷åíèå îòëàäî÷íûõ ñîîáùåíèé ïîçâîëÿåò âñòàâëÿòü îòëàäî÷íûå ñîîáùåíèÿ â ïðîöåäóðû íà ïîñòîÿííîé îñíîâå â ñîîòâåòñòâèè ñ ðàñïîëîæåíèåì, â êàòåãîðèè. Âñå îñòàëüíûå, íåîòëàäî÷íûå, ñîîáùåíèÿ áóäóò îòîáðàæàòüñÿ âñåãäà, äëÿ óðîâíåé âûøå èëè ðàâíûì óêàçàííûì ãëîáàëüíî (Ðèñ. 6.6.8).
Âíóòðåííèå èëè ñèñòåìíûå ÷àñòè îáúåêòà êîíòðîëëåðà èñòî÷íèêà äàííûõ âêëþ÷àþòñÿ äëÿ äèàãíîñòèêè óñòàíîâêîé ñâîéñòâà "Óðîâåíü" â "Îòëàäêà (0)" íà ñîáñòâåííîì èíòåðôåéñå äèàãíîñòèêè" (Fig. 6.6.5), íåçàâèñèìî.
Äàííûé äîêóìåíò äåòàëüíî îïèñûâàåò îñíîâíîé ïðîöåññ ñîçäàíèÿ ýëåìåíòîâ ïîëüçîâàòåëüñêîãî èíòåðôåéñà ñ ïðåäâàðèòåëüíîé ïîäãîòîâêîé è êîíôèãóðàöèåé èñòî÷íèêà äàííûõ.  öåëîì ýòî ïîçâîëÿåò áûñòðî ïîëó÷èòü ïðåäñòàâëåíèå î ðàáîòå ñ ñèñòåìîé OpenSCADA, à òàêæå öåëåíàïðàâëåííî èñêàòü ðåøåíèÿ ñîïóòñòâóþùèõ ïðîáëåì.