OpenSCADAWiki: Doc/VCA/part6/part3 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/VCA/part6/part3 from 2008-08-26 15:58:54..

Ñåññèè èñïîëíåíèÿ ïðîåêòîâ -- Âûïîëíåíî


Öåëÿìè äàííîãî ýòàïà ÿâëÿåòñÿ:


Íà äàííîì ýòàïå áûë äîáàâëåí ìåõàíèçì èñïîëíåíèÿ ïðîåêòà â ñåàíñàõ ìîäåëè äàííûõ ìîäóëÿ VCAEngine, à òàêæå âèçóàëèçàöèÿ ñåàíñà ïðîåêòà, ðåæèì "RunTime", â ìîäóëå âèçóàëèçàöèè íà áèáëèîòåêå QT Vision, ñ ýëåìåíòàìè îáíîâëåíèÿ äàííûõ è èíòåðàêòèâíîãî âçàèìîäåéñòâèÿ ñ ïîëüçîâàòåëåì.

Ôîðìèðîâàíèå èåðàðõè÷åñêîãî äåðåâà âèäæåòîâ êîíå÷íîé âèçóàëèçàöèè íà îñíîâå ïðîåêòà äëÿ êîòîðîãî îòêðûâàåòñÿ ñåàíñ.

 ñîîòâåòñòâèè ñ ðèñ.6 è ðèñ.7 îáúåêòû ñåññèè ïðîåêòà íàñëåäóþòñÿ îò àáñòðàêòíîãî îáúåêòà Widget è èñïîëüçóþò ñîîòâåòñòâóþùèå îáúåêòû ïðîåêòà. Òàê, ñåññèÿ (Session) èñïîëüçóåò ïðîåêò (Project) è ôîðìèðóåò ðàçâ¸ðíóòîå äåðåâî íà îñíîâå íåãî. Ñòðàíèöà ïðîåêòà Page ïðÿìî èñïîëüçóåòñÿ ñòðàíèöåé ñåññèè SessPage. Îñòàëüíûå îáúåêòû (SessWdg) ðàçâîðà÷èâàþòñÿ â ñîîòâåòñòâèè ñ èåðàðõèåé ýëåìåíòîâ ñòðàíèöû (ðèñ.7).


 äîïîëíåíèè ê ñòàíäàðòíûì ñâîéñòâàì àáñòðàêòíîãî âèäæåòà (Widget) ýëåìåíòû ñòðàíèöû, è ñàìè ñòðàíèöû, ñåññèè ïîëó÷àþò ñâîéñòâà: õðàíåíèÿ êàäðà çíà÷åíèé âû÷èñëèòåëüíîé ïðîöåäóðû, îáñ÷¸òà ïðîöåäóð è ìåõàíèçì îáðàáîòêè ñîáûòèé. Ñòðàíèöû ñåññèè, â äîïîëíåíèå êî âñåìó, ñîäåðæàò êîíòåéíåð ñëåäóþùèõ ïî èåðàðõèè ñòðàíèö. Ñåññèÿ â öåëîì îáñ÷èòûâàåòñÿ ñ óêàçàííîé ïåðèîäè÷íîñòüþ è â ïîñëåäîâàòåëüíîñòè:

Òàêàÿ ïîëèòèêà ïîçâîëÿåò îáõîäèòü ñòðàíèöû â ñîîòâåòñòâèè ñ èåðàðõèåé, à ñîáûòèÿì â âèäæåòàõ âñïëûâàòü íà âåðõ çà îäíó èòåðàöèþ.


 ñåññèè ðåàëèçîâàíà ïîääåðæêà ñïåöèàëüíûõ ñâîéñòâ ñòðàíèö:

Container - ñòðàíèöà ÿâëÿåòñÿ êîíòåéíåðîì äëÿ íèæåëåæàùèõ ñòðàíèö;
Template - ñòðàíèöà ÿâëÿåòñÿ øàáëîíîì äëÿ íèæåëåæàùèõ ñòðàíèö;
Empty - ïóñòàÿ, íå àêòèâíàÿ ñòðàíèöà, ýòî ñâîéñòâî èñïîëüçóåòñÿ ñîâìåñòíî ñî ñâîéñòâîì Container äëÿ îðãàíèçàöèè ëîãè÷åñêèõ êîíòåéíåðîâ.

Íà îñíîâå ýòèõ ñâîéñòâ ðåàëèçîâàíû ñëåäóþùèå òèïû ñòðàíèö:

Standard -- Ñòàíäàðòíàÿ ñòðàíèöà (íå óñòàíîâëåíî íè îäíî èç ñâîéñòâ). ßâëÿåòñÿ ïîëíîöåííîé êîíå÷íîé ñòðàíèöåé.
Container -- Ïîëíîöåííàÿ ñòðàíèöà ñî ñâîéñòâîì êîíòåéíåðà (Container).
Logical container -- Ëîãè÷åñêèé êîíòåéíåð, ôàêòè÷åñêè íå ÿâëÿþùèéñÿ ñòðàíèöåé (Container|Empty). Âûïîëíÿåò ñâîéñòâî ïðîìåæóòî÷íîãî è ãðóïïèðóþùåãî ýëåìåíòà â äåðåâå ñòðàíèö.
Template -- Ñòðàíèöà øàáëîí (Template). ×èñòàÿ øàáëîííàÿ ñòðàíèöà èñïîëüçóåòñÿ äëÿ îïèñàíèÿ îáùèõ ñâîéñòâ è äîîïðåäåëåíèÿ èõ â ÷àñòíîì ïîðÿäêå âî âëîæåííûõ ñòðàíèöàõ.
Container and template -- Ñòðàíèöà øàáëîí è êîíòåéíåð (Template|Container). Ñîâìåùàåò ôóíêöèè øàáëîíà è êîíòåéíåðà.

Ôîðìèðîâàíèå êàäðîâ çíà÷åíèé äëÿ ïðîöåäóð îáñ÷¸òà âèäæåòîâ êîíå÷íîé âèçóàëèçàöèè.

 ðàçäåëå âûøå ìû óæå îòìå÷àëè, ÷òî âèäæåò ñåññèè ñîäåðæèò êàäð çíà÷åíèé ïðîöåäóðû îáñ÷¸òà. Ýòîò êàäð èíèöèèðóåòñÿ è èñïîëüçóåòñÿ â ñëó÷àå íàëè÷èÿ ïðîöåäóðû îáñ÷¸òà.  ìîìåíò èíèöèàëèçàöèè ñîçäà¸òñÿ ïåðå÷åíü ïàðàìåòðîâ ïðîöåäóðû è âûïîëíÿåòñÿ êîìïèëÿöèÿ ïðîöåäóðû ñ ýòèìè ïàðàìåòðàìè, â ìîäóëå ðåàëèçóþùåì âûáðàííûé ÿçûê ïðîãðàììèðîâàíèÿ è çàêîäèðîâàííûì ïîëíûì èìåíåì âèäæåòà. Ñêîìïèëèðîâàííàÿ ôóíêöèÿ ïîäêëþ÷àåòñÿ ê êàäðó çíà÷åíèé ïðîöåäóðû îáñ÷¸òà. Äàëåå âûïîëíÿåòñÿ âû÷èñëåíèå ñ ïåðèîäè÷íîñòüþ ñåññèè.


Âû÷èñëåíèå, è îáðàáîòêà âèäæåòà â öåëîì, âûïîëíÿåòñÿ â ñëåäóþùåé ïîñëåäîâàòåëüíîñòè:

Îáðàáîòêà ññûëîê íà ïàðàìåòðû èñòî÷íèêîâ äàííûõ OpenSCADA.

Ïðè èñïîëíåíèè âèäæåòà ñåàíñà íåîáõîäèìî âûïîëíåíèå îáðàáîòêè ññûëîê. Íà äàííûé ìîìåíò ïîäêëþ÷åíèå ïî ññûëêàì âûïîëíÿåòñÿ â ìîìåíò âû÷èñëåíèÿ, ÷òî ÿâëÿåòñÿ íå áûñòðîé îïåðàöèåé. Ðåàëèçàöèÿ îáðàáîòêè ññûëîê áóäåò ïåðåñìîòðåíà è îïòèìèçèðîâàíà â äàëüíåéøåì.


Çàëîæåíà ïîääåðæêà ñëåäóþùèõ òèïîâ ññûëîê:


Íà äàííûé ìîìåíò ðåàëèçîâàíû ïåðâûå äâà òèïà ññûëîê. Ïîñëåäíÿÿ áóäåò ðåàëèçîâàíà âìåñòå ñ ðåàëèçàöèåé áàçîâîãî âèäæåòà "Link".

Ôîðìèðîâàíèå îêíà èñïîëíåíèÿ ïðîåêòà (RunTime).

Íà ñòîðîíå âèçóàëèçàöèè (ìîäóëü Vision), äëÿ âèçóàëèçàöèè ïðîöåññà èñïîëíåíèÿ ïðîåêòà, ðåàëèçîâàí îáúåêò VisRun. Ïðè çàïóñêå îí øë¸ò çàïðàñ íà ñîçäàíèå è èíèöèàëèçàöèþ ñåññèè. Äàëåå âûïîëíÿåòñÿ çàïðîñ íà ïåðå÷åíü îòêðûòûõ ñòðàíèö. Èñõîäÿ èç èíôîðìàöèè îá îòêðûòûõ ñòðàíèöàõ VisRun è èõ ñâÿçíîñòè ôîðìèðóåòñÿ ðåçóëüòèðóþùèé èíòåðôåéñ. Íà ðèñ. 11 ïðèâåä¸í ïðèìåð êëàññè÷åñêîãî SCADA èíòåðôåéñà ñ îáúåêòàìè ñèãíàëèçàöèè, ãäå ãëàâíîå îêíî ñîäåðæèò ñòðàíèöó âíóòðè, êîòîðàÿ çàìåùàåòñÿ ïî íàæàòèþ íà êíîïêè îáúåêòîâ ñèãíàëèçàöèè è ëèñòàíèÿ.


Îêíî âèçóàëèçàöèè èñïîëíåíèÿ ïðîåêòà. Ðåæèì “Run Time” (69 Kb)
Ðèñ.11 Îêíî âèçóàëèçàöèè èñïîëíåíèÿ ïðîåêòà. Ðåæèì "RunTime".

Âèçóàëèçàöèÿ êàäðîâ ïðîåêòà â ðåæèìå "RunTime", ñ ïåðèîäè÷åñêèì îáíîâëåíèåì ñîäåðæèìîãî.

Ðåàëèçîâàíî îáíîâëåíèå ñîäåðæèìîãî îòêðûòûõ ñòðàíèö èíòåðôåéñà âèçóàëèçàöèè ñ ïåðèîäè÷íîñòüþ èñïîëíåíèÿ ñåññèè ïðîåêòà.  ïðîöåññå îáíîâëåíèÿ âûïîëíÿåòñÿ:
- çàïðîñ ñïèñêà îòêðûòûõ ñòðàíèö ó ìîäåëè è ïðîâåðêà ñîîòâåòñòâèÿ ðåàëüíî îòêðûòûõ ñòðàíèö ýòîìó ñïèñêó;
- çàïðîñ èçìåí¸ííûõ äàííûõ ïî êàæäîé ñòðàíèöå è å¸ âèäæåòó;
- îáíîâëåíèå ñîäåðæèìîãî ñòðàíèö è èõ âèäæåòîâ â ñîîòâåòñòâèè ñ ïîëó÷åííûìè èçìåíåííûìè äàííûìè.


Ïî çàêðûòèþ "RunTime" îêíà ïðîèçâîäèòñÿ è çàêðûòèå ñåññèè ïðîåêòà â ìîäåëè äàííûõ.  äàëüíåéøåì áóäåò ðåàëèçîâàíà âîçìîæíîñòü ïîäêëþ÷åíèÿ ê ðàíåå îòêðûòîé ñåññèè è îòêëþ÷åíèå îò ñåññèè, áåç å¸ çàêðûòèÿ.


Ìåõàíèçì çàïðîñà òîëüêî èçìåí¸ííûõ äàííûõ îñíîâàí íà àáñîëþòíîì ñ÷¸ò÷èêå èñïîëíåíèÿ ñåññèè. Ïðè âíåñåíèè ðåàëüíûõ èçìåíåíèé â àòðèáóòû âèäæåòîâ âûïîëíÿåòñÿ çàïîìèíàíèå çíà÷åíèÿ ýòîãî ñ÷¸ò÷èêà, ÷òî è ïîçâîëÿåò èäåíòèôèöèðîâàòü èçìåí¸ííûå àòðèáóòû. Òàêîé ïîäõîä ïîçâîëÿåò ïîâûñèòü ïðîèçâîäèòåëüíîñòü è óìåíüøèòü íàãðóçêó íà òðàôèê â ñëó÷àå äîñòóïà ê ìîäåëè ÷åðåç ñåòü.

Ðåàëèçàöèÿ ïåðåäà÷è è îáðàáîòêè ñîáûòèé.

Âèçóàëèçàòîð ñåññèè ("RunTime"), â âèäó ñâîåãî íåïîñðåäñòâåííîãî êîíòàêòà ñ ïîëüçîâàòåëåì, ñîáèðàåò ðàçëè÷íûå ñîáûòèÿ. ×àñòü ñîáûòèé îáðàáàòûâàåòñÿ îáðàçàìè áàçîâûõ âèäæåòîâ (Text, Box, Document è ò.ä.), â ðåçóëüòàòå ÷åãî ìîãóò ôîðìèðîâàòüñÿ äðóãèå ñîáûòèÿ. Äðóãàÿ ÷àñòü ïðÿìî ïåðåäà¸òñÿ â ìîäåëü äàííûõ, ãäå îíè è îáðàáàòûâàþòñÿ.


 ìîäåëü äàííûõ ñîáûòèÿ ïåðåäàþòñÿ ñðàçó ïîñëå ïîëó÷åíèÿ, ãäå îíè ñîáèðàþòñÿ â àòðèáóòå âèäæåòà "event" äî ìîìåíòà ñëåäóþùåé èòåðàöèè èñïîëíåíèÿ ñåññèè. Äàëåå, â ïðîöåññå îáñ÷¸òà ñåññèè, ñîáûòèÿ èçâëåêàþòñÿ èç àòðèáóòà "event" è îáðàáàòûâàþòñÿ â ïðîöåäóðå âèäæåòà èëè â ñîîòâåòñòâèè ñî ñöåíàðèåì â àòðèáóòå "evProc". Íå îáðàáîòàííûå ñîáûòèå ïîäíèìàþòñÿ ê âûøåñòîÿùåìó âèäæåòó ìîäåëè.

Ðåàëèçàöèÿ ìåõàíèçìà ïåðåêëþ÷åíèÿ/îòêðûòèÿ/çàìåùåíèÿ/íàâèãàöèè ïî ñòðàíèöàì ïðîåêòà ñ ó÷¸òîì ñöåíàðèåâ îáðàáîòêè.

Ïåðåêëþ÷åíèå, îòêðûòèå, çàìåùåíèå è íàâèãàöèÿ ïî ñòðàíèöàì ðåàëèçîâàíî íà îñíîâå îáðàáîòêè ñîáûòèé ïî ñöåíàðèþ, â àòðèáóòå àêòèâíîãî âèäæåòà "evProc". Ñöåíèðèé ýòîãî àòðèáóòà çàïèñûâàåòñÿ â âèäå ñïèñêà êîìàíä ñ ñèíòàêñèñîì: <event>:<srcWdg>:<com>:<prm>
ãäå:

event -- îæèäàåìîå ñîáûòèå;
srcWdg -- äî÷åðíèé âèäæåò - èñòî÷íèê ñîáûòèÿ
com -- êîìàíäà ñåññèè;
prm -- ïàðàìåòð êîìàíäû;

Ðåàëèçîâàíû ñëåäóþùèå êîìàíäû:

open -- Îòêðûòèå ñòðàíèöû. Îòêðûâàåìàÿ ñòðàíèöà óêàçûâàåòñÿ â ïàðàìåòðå prm êàê íà ïðÿìóþ, òàê è â âèäå øàáëîíà (íàïðèìåð: /pg_so/1/*/*).
next -- Îòêðûòèå ñëåäóþùåé ñòðàíèöû. Îòêðûâàåìàÿ ñòðàíèöà óêàçûâàåòñÿ â ïàðàìåòðå prm êàê íà ïðÿìóþ, òàê è â âèäå øàáëîíà (íàïðèìåð: /pg_so/*/*/$).
prev -- Îòêðûòèå ïðåäûäóùåé ñòðàíèöû. Îòêðûâàåìàÿ ñòðàíèöà óêàçûâàåòñÿ â ïàðàìåòðå prm êàê íà ïðÿìóþ, òàê è â âèäå øàáëîíà (íàïðèìåð: /pg_so/*/*/$).

Ñïåöèàëüíûå ñèìâîëû øàáëîíà ðàñøèôðîâûâàþòñÿ ñëåäóþùèì îáðàçîì:

pg_so -- Ïðÿìîå èìÿ òðåáóåìîé ñòðàíèöû, ñ ïðåôèêñîì. Òðåáóåò îáÿçàòåëüíîãî ñîîòâåòñòâèÿ è èñïîëüçóåòñÿ äëÿ èäåíòèôèêàöèè ïðåäûäóùåé îòêðûòîé ñòðàíèöû.
1 -- Èìÿ íîâîé ñòðàíèöû â îáùåì ïóòè, áåç ïðåôèêñà. Èìÿ ïðåäûäóùåé ñòðàíèöû èãíîðèðóåòñÿ.
* -- Ñòðàíèöà áåð¸òñÿ ñ èìåíè ïðåäûäóùåé îòêðûòîé ñòðàíèöû èëè ïîäñòàâëÿåòñÿ ïåðâàÿ äîñòóïíàÿ ñòðàíèöà, åñëè ïðåäûäóùàÿ îòêðûòàÿ ñòðàíèöà îòñóòñòâóåò.
$ -- Óêàçûâàåò íà ìåñòî îòêðûòîé ñòðàíèöû îòíîñèòåëüíî êîòîðîé íåîáõîäèìî èñêàòü ñëåäóþùóþ èëè ïðåäûäóùóþ.

Äëÿ ïîíèìàíèÿ ðàáîòû ìåõàíèçìà øàáëîíîâ ïðèâåä¸ì íåñêîëüêî ðåàëüíûõ ïðèìåðîâ:

Ïåðåêëþ÷åíèå îáúåêòà ñèãíàëèçàöèè:
Êîìàíäà: open:/pg_so/2/*/*
Áûëî: /pg_so/pg_1/pg_mn/pg_1
Ñòàëî: /pg_so/pg_2/pg_mn/pg_1

Ïåðåêëþ÷åíèå âèäà:

Êîìàíäà: open:/pg_so/*/gkadr/*
Áûëî: /pg_so/pg_1/pg_mn/pg_1
Ñòàëî: /pg_so/pg_1/pg_gkadr/pg_1

Ñëåäóþùàÿ/ïðåäûäóùàÿ ñòðàíèöà âèäà:

Êîìàíäà: next:/pg_so/*/*/$
Áûëî: /pg_so/pg_1/pg_mn/pg_1
Ñòàëî: /pg_so/pg_1/pg_mn/pg_2

 ñâÿçêå ñ âûøå îïèñàííûì ìåõàíèçìîì, íà ñòîðîíå âèçóàëèçàöèè (RunTime), ïîñòðîåíà ëîãèêà, ðåãóëèðóþùàÿ êàêèì îáðàçîì îòêðûâàòü ñòðàíèöû. Ëîãèêà ïîñòðîåíà íà ñëåäóþùèõ àòðèáóòàõ áàçîâîãî ýëåìåíòà "Box":

pgOpen -- Ïðèçíàê "Ñòðàíèöà îòêðûòà".
pgNoOpenProc -- Ïðèçíàê "Èñïîëíÿòü ñòðàíèöó äàæå åñëè îíà íå îòêðûòà".
pgOpenSrc -- Ñîäåðæèò àäðåñ âèäæåòà èëè ñòðàíèöû, îòêðûâøåé òåêóùóþ.  ñëó÷àå âëîæåííîãî êîíòåéíåðíîãî âèäæåòà çäåñü ñîäåðæèòñÿ àäðåñ âêëþ÷àåìîé ñòðàíèöû.
pgGrp -- Ãðóïïà ñòðàíèö. Èñïîëüçóåòñÿ äëÿ ñâÿçêè êîíòåéíåðîâ ñòðàíèö ñî ñòðàíèöàìè â îäíîé ãðóïïå.

Ëîãèêà îïðåäåëåíèÿ ñïîñîáà îòêðûòèÿ ñòðàíèö ðàáîòàåò ñëåäóþùèì îáðàçîì:


Ñîâîêóïíîñòü âñåõ ýòèõ ìåõàíèçìîâ óæå ñåé÷àñ ïîçâîëÿåò ñòðîèòü ñëîæíûå, ìíîãîóðîâíåâûå è ìíîãîîêîííûå èíòåðôåéñû ïîëüçîâàòåëÿ.


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]