OpenSCADAWiki: Doc/ Web CfgD ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/WebCfgD from 2017-01-30 16:11:55..

Ìîäóëü <WebCfgD> ïîäñèñòåìû "Ïîëüçîâàòåëüñêèå èíòåðôåéñû"

Ìîäóëü: WebCfgD
Èìÿ: Äèíàìè÷åñêèé WEB êîíôèãóðàòîð
Òèï: Ïîëüçîâàòåëüñêèå èíòåðôåéñû
Èñòî÷íèê: ui_WebCfgD.so
Âåðñèÿ: 1.0
Àâòîð: Ðîìàí Ñàâî÷åíêî
Îïèñàíèå: Ïðåäîñòàâëÿåò äèíàìè÷åñêèé WEB îñíîâàííûé êîíôèãóðàòîð. Èñïîëüçóåò XHTML, CSS è JavaScript òåõíîëîãèè.
Ëèöåíçèÿ: GPL

Contents

Ââåäåíèå

Ìîäóëü "WebCfgD" ïðåäîñòàâëÿåò êîíôèãóðàòîð ñèñòåìû OpenSCADA. Êîíôèãóðàòîð ðåàëèçîâàí íà îñíîâå òàêèõ Web-òåõíîëîãèé:


Èíòåðôåéñ êîíôèãóðàòîðà ôîðìèðóåòñÿ â WEB-áðàóçåðå ïóò¸ì îáðàùåíèÿ ê WEB-ñåðâåðó è ïîëó÷åíèÿ îò íåãî XHTML-äîêóìåíòà ïî ïðîòîêîëó HTTP.  äàííîì ñëó÷àå â ðîëè WEB-ñåðâåðà âûñòóïàåò ñèñòåìà OpenSCADA, êîòîðàÿ ïîääåðæèâàåò ñòàíäàðòíûå êîììóíèêàöèîííûå ìåõàíèçìû TCP-ñåòåé (ìîäóëü Transport.Sockets), ïðîòîêîë ïåðåäà÷è ãèïåðòåêñòà (ìîäóëü Protocol.HTTP), à òàêæå øèôðîâàíèå òðàôèêà ìåæäó áðàóçåðîì è ñåðâåðîì (Transport.SSL). Èñõîäÿ èç ýòîãî, äëÿ ïîëó÷åíèÿ äîñòóïà ê èíòåðôåéñó êîíôèãóðèðîâàíèÿ OpenSCADA, ïðåäîñòàâëÿåìîãî ýòèì ìîäóëåì, íåîáõîäèìî â OpenSCADA íàñòðîèòü òðàíñïîðò (Transport.Sockets èëè Transport.SSL) â ñâÿçêå ñ ïðîòîêîëîì HTTP (Protocol.HTTP).  ïîñòàâêå ñ ñèñòåìîé OpenSCADA èäóò êîíôèãóðàöèîííûå ôàéëû ñîäåðæàùèå íàñòðîéêè Transport.Sockets äëÿ ïîðòîâ 10002 è 10004. Ñëåäîâàòåëüíî èíòåðôåéñ ìîäóëÿ â êîíôèãóðàöèè OpenSCADA ïî óìîë÷àíèþ áóäåò äîñòóïåí ïî URL: http://localhost:10002 èëè http://localhost:10004.


Ïîñëå ïîëó÷åíèÿ XHTML-äîêóìåíòà çàïóñêàåòñÿ ïðîãðàììà íà JavaScript äëÿ ôîðìèðîâàíèÿ äèíàìè÷åñêîãî èíòåðôåéñà êîíôèãóðàòîðà.


 îñíîâå ìîäóëÿ ëåæèò ÿçûê èíòåðôåéñà óïðàâëåíèÿ ñèñòåìîé OpenSCADA, à çíà÷èò ïðåäîñòàâëÿåòñÿ åäèíûé èíòåðôåéñ êîíôèãóðàöèè. Îáíîâëåíèå ìîäóëÿ ìîæåò ïîòðåáîâàòüñÿ òîëüêî â ñëó÷àå îáíîâëåíèÿ ñïåöèôèêàöèè ÿçûêà èíòåðôåéñà óïðàâëåíèÿ.


Ìîäóëü ðåàëèçîâàëñÿ è òåñòèðîâàëñÿ íà òð¸õ WEB-áðàóçåðàõ, ïðåäñòàâèòåëÿõ òð¸õ òèïîâ WEB-äâèæêîâ, à èìåííî:


Èñïîëüçîâàíèå ìîäóëÿ íà÷èíàåòñÿ ñ îòêðûòèÿ ñåàíñà ïîëüçîâàòåëÿ (àóòåíòèôèêàöèè) ìîäóëåì ïðîòîêîëà HTTP (Protocol.HTTP). Äëÿ ôóíêöèîíèðîâàíèÿ àóòåíòèôèêàöèè è ìåõàíèçìà ñîõðàíåíèÿ ñåàíñà áðàóçåð äîëæåí ðàçðåøàòü Cookies.


Àóòåíòèôèêàöèÿ ïîëüçîâàòåëÿ (12 Kb)
Ðèñ.1. Àóòåíòèôèêàöèÿ ïîëüçîâàòåëÿ.

Ðàáî÷åå îêíî êîíôèãóðàòîðà (101 Kb)
Ðèñ.2. Ðàáî÷åå îêíî êîíôèãóðàòîðà

Ðàññìîòðèì ðàáî÷åå îêíî êîíôèãóðàòîðà íà ðèñ. 2.


Ðàáî÷åå îêíî êîíôèãóðàòîðà ñîñòîèò èç ñëåäóþùèõ ÷àñòåé:
1 Ïàíåëü èíñòðóìåíòîâ — ñîäåðæèò êíîïêè óïðàâëåíèÿ.
2 Àäðåñ îòêðûòîãî óçëà — îòîáðàæàåò òåêóùèé âûáðàííûé óçåë.
3 Íàâèãàòîð — ïðåäíàçíà÷åí äëÿ ïðÿìîé íàâèãàöèè ïî äåðåâó óïðàâëåíèÿ.
4 Ðàáî÷åå ïîëå — ïîäåëåíî íà ÷àñòè:

4.1 Èìÿ óçëà — ñîäåðæèò èìÿ òåêóùåãî óçëà.
4.2 Òàáóëÿòîð ðàáî÷èõ îáëàñòåé — â òàáóëÿòîð ïîìåùàþòñÿ êîðíåâûå ñòðàíèöû (îáëàñòè óïðàâëåíèÿ) óçëà. Îáëàñòè óïðàâëåíèÿ ñëåäóþùèõ óðîâíåé ïîìåùàþòñÿ íà èíôîðìàöèîííûå ïàíåëè.

5 Ñòðîêà ñòàòóñà — îòîáðàæåíèå ñîñòîÿíèé êîíôèãóðàòîðà.


Ïàíåëü èíñòðóìåíòîâ ñîäåðæèò ñëåäóþùèå êíîïêè óïðàâëåíèÿ (ñëåâà íà ïðàâî):


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

1. Êîíôèãóðàöèÿ

Äëÿ íàñòðîéêè ñîáñòâåííîãî ïîâåäåíèÿ â íåî÷åâèäíûõ ñèòóàöèÿõ ìîäóëåì ïðåäîñòàâëÿåòñÿ âîçìîæíîñòü íàñòðîéêè îòäåëüíûõ ïàðàìåòðîâ ïîñðåäñòâîì èíòåðôåéñà óïðàâëåíèÿ OpenSCADA (ðèñ. 3). Òàêîâûìè ïàðàìåòðàìè ÿâëÿþòñÿ:


Ñòðàíèöà êîíôèãóðàöèè ñàìîãî êîíôèãóðàòîðà. (72 Kb)
Ðèñ.3. Ñòðàíèöà êîíôèãóðàöèè ñàìîãî êîíôèãóðàòîðà.

2. Áàçîâûå ýëåìåíòû

 ÷èñëî áàçîâûõ ýëåìåíòîâ âõîäÿò: èíôîðìàöèîííûå ýëåìåíòû, ïîëÿ ââîäà çíà÷åíèé, ýëåìåíòû âûáîðà èç ñïèñêà, ôëàãè.  ñëó÷àå îòñóòñòâèÿ èìåíè ýëåìåíòà áàçîâûé ýëåìåíò ïðèñîåäèíÿåòñÿ ê ïðåäûäóùåìó áàçîâîìó ýëåìåíòó. Ïðèìåð ãðóïïû áàçîâûõ ýëåìåíòîâ ñ ïðèñîåäèíåíèåì ïðèâåä¸í íà ðèñ.4.


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


Ïðèñîåäèíåíèå áàçîâûõ ýëåìåíòîâ (109 Kb)
Ðèñ.4. Ïðèñîåäèíåíèå áàçîâûõ ýëåìåíòîâ.

3. Êîìàíäû

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


Êîìàíäà (95 Kb)
Ðèñ.5. Êîìàíäà.

4. Ñïèñêè

Ñïèñêè ñîäåðæàò ãðóïïó áàçîâûõ ýëåìåíòîâ îäíîãî òèïà. Îïåðàöèè íàä ýëåìåíòàìè äîñòóïíû ÷åðåç êîíòåêñòíîå ìåíþ ïî êëèêó ìûøüþ íà ñïèñêå. ×åðåç ýëåìåíòû ñïèñêà ìîãóò âûïîëíÿòüñÿ îïåðàöèè ïåðåõîäà íà äðóãèå ñòðàíèöû. Ñïèñêè ìîãóò áûòü èíäåêñèðîâàííûìè. Ïðèìåð ñïèñêà ïðèâåäåí íà ðèñ. 6.


Ñïèñîê (53 Kb)
Ðèñ.6. Ñïèñîê.

5. Òàáëèöû

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


Òàáëèöà (96 Kb)
Ðèñ.7. Òàáëèöà.

6. Èçîáðàæåíèÿ

Èçîáðàæåíèÿ ïðèçâàíû ïåðåäàâàòü ãðàôè÷åñêóþ èíôîðìàöèþ â êîíôèãóðàòîðû. Ïðèìåð èçîáðàæåíèÿ ïðèâåäåí íà ðèñ. 8.


Èçîáðàæåíèå (101 Kb)
Ðèñ.8. Èçîáðàæåíèå.

7. Îøèáêè

Ïðåäñòàâëåíèå êîíôèãóðàòîðà ìîæåò íåñêîëüêî îòëè÷àòüñÿ íà ðàçíûõ òèïàõ áðàóçåðîâ. Ýòî ñâÿçàíî ñ òåì, ÷òî â îñíîâå äàííîãî ìîäóëÿ ëåæèò ìíîãî äîñòàòî÷íî ñëîæíûõ òåõíîëîãèé, à òàêæå îòëè÷èé èõ ðåàëèçàöèè íà ðàçíûõ òèïàõ WEB-äâèæêîâ.


Êðîìå òîãî, êàæäûé Web-áðàóçåð ñîäåðæèò ñîáñòâåííûå îøèáêè. ×àñòü îøèáîê áûëà îáîéäåíà â ïðîöåññå ðåàëèçàöèè, îäíàêî ÷àñòü îñòàëàñü â âèäó çíà÷èòåëüíûõ òðóäíîñòåé â èõ îáõîäå èëè-æå ôàêòè÷åñêîé íåâîçìîæíîñòè ýòî ñäåëàòü.


 äàííîì ðàçäåëå ñîäåðæèòñÿ òàáëèöà ïåðå÷íÿ îáíàðóæåííûõ îøèáîê WEB-áðàóçåðîâ, êîòîðûå ïðîÿâëÿþòñÿ â êîíôèãóðàòîðå.

Îøèáêà Îïèñàíèå Èñïðàâëåíèå
Mozilla FireFox 3.0.4 (óñòîé÷èâ, îøèáîê íåìíîãî)
Ñìåùåíèå âñïëûâàþùåãî îêíà ðåäàêòèðóåìîãî êîìáîáîêñà íà 5 ïèêñåëîâ ââåðõ-âëåâî. Ïðîáëåìà ñâÿçàíà ñ òåì, ÷òî âû÷èñëåíèå àáñîëþòíîé ïîçèöèè ýëåìåíòà äîêóìåíòà íå äîáèðàåò ðîâíî 5 ïèêñåëîâ. Îøèáêà íà 5 ïèêñåëîâ âèäíà â ñîïîñòàâëåíèè ñ êîîðäèíàòàìè êóðñîðà ìûøè è ïîëîæåíèåì âíîâü ñîçäàâàåìîãî àáñîëþòíî-ïîçèöèîíèðóåìîãî îêíà. Àëãîðèòì âû÷èñëåíèÿ ïîëîæåíèÿ:
for( ; obj != null; obj = obj.offsetParent ) posX += obj.offsetLeft;
Äëÿ óñòðàíåíèÿ ýòîé îøèáêè ê ðàñ÷¸òíîìó çíà÷åíèþ íà ýòîì áðàóçåðå ïðèáàâëÿåòñÿ 5 ïèêñåëîâ.
 ýëåìåíòå ñïèñêà (<select size="10"/>) âñåãäà îòîáðàæàåòñÿ âåðòèêàëüíûé ñêðîëëåð è íèêîãäà íå âêëþ÷àåòñÿ ãîðèçîíòàëüíûé. Äàííûé ýëåìåíò àêòèâíî èñïîëüçóåòñÿ äëÿ ôîðìèðîâàíèÿ êîíòåêñòíîãî ìåíþ è âûïàäàþùåãî ñïèñêà ðåäàêòèðóåìîãî êîìáîáîêñà. Äëÿ îáõîäà îøèáêè áðàóçåðà ïðèøëîñü âêëþ÷èòü ñïèñîê â áëîê ñî ñêðîëîì ñàìîãî áëîêà.
Íå îáíîâëÿåòñÿ ïîëå èçîáðàæåíèÿ. Äëÿ èñêëþ÷åíèÿ íåîáõîäèìîñòè ïåðåñòðîéêè êîíôèãóðèðóåìîé ñòðàíèöû ïðè îáíîâëåíèè çíà÷åíèé ïîëåé â äåðåâå îáúåêòîâ ñòðóêòóðû ñòðàíèöû, ïîëó÷åííîé ñ ïîìîùüþ XMLHttpRequest, ñîçäàþòñÿ ñâîéñòâà ñî ññûëêàìè íà îáúåêòû òåãîâ ïîëåé (addr_lab, addr_val_w).  îáúåêòàõ ñ èìåíåì òåãà "img" ýòè ñâîéñòâà áðàóçåðîì íå ñîçäàþòñÿ. Ïðîáëåìà íå ðåøåíà
Opera (óñòîé÷èâ, îøèáîê íåìíîãî)
Íå âêëþ÷àåòñÿ ñêðîëëåð áëîêà ñòðàíèöû. Íàïðèìåð, ïðè îòîáðàæåíèè øèðîêèõ èçîáðàæåíèé òðåíäà. Áëîê ÿâëÿåòñÿ ôèêñèðîâàííûì ñ ïàðàìåòðàìè { overflow: auto; width: 600px; }, îäíàêî, ïðè ïðåâûøåíèè ðàçìåðà âíóòðåííèõ ýëåìåíòîâ ñêðîëëåð íå âêëþ÷àåòñÿ. Ïðîáëåìà íå ðåøåíà.
Konqueror (î÷åíü íå óñòîé÷èâ íà äèíàìè÷åñêèõ ðåñóðñàõ è ñîäåðæèò ìíîæåñòâî îøèáîê)
Ñòàáèëüíûå ïàäåíèÿ áðàóçåðà. Áðàóçåð íåîäíîêðàòíî è ñòàáèëüíî ïàäàåò â ìîìåíòû âû÷èñëåíèÿ JavaScript è ïðè îïåðàöèÿõ ñ âíåøíèìè îêíàìè. Ïðîáëåìà íå ðåøåíà.
Íå âîçâðàùàåòñÿ ñêðîëë äåðåâà íàâèãàöèè. Åñëè äåðåâî íàâèãàöèè ðàçâåðíóòü äî ïîÿâëåíèÿ âåðòèêàëüíîãî ñêðîëà, çàòåì ïðîêðóòèòü åãî âíèç, ïîñëå ÷åãî ñâåðíóòü êðóïíóþ âåòêó, òî âåðòèêàëüíûé ñêðîëë èñ÷åçàåò, à ÷àñòü äåðåâà îñòà¸òñÿ íåâèäèìîé çà âåðõíåé ÷àñòüþ áëîêà. Ò.å. ñîäåðæèìîå áëîêà íå îáíîâëÿåòñÿ. Ïðîáëåìà íå ðåøåíà.
Íå îáíîâëÿþòñÿ èçîáðàæåíèÿ Â ïîëÿõ èçîáðàæåíèé äëÿ îáíîâëåíèÿ èçîáðàæåíèÿ èç ñåðâåðà èçìåíÿåòñÿ ñâîéñòâî "src". Áðàóçåð ýòîãî íå ÷óâñòâóåò, èíîãäà äàæå îáíîâëÿåò ðàçìåð ðàìêè, à èçîáðàæåíèå íå îáíîâëÿåò. Ìåòîäû äëÿ ïðåäîòâðàùåíèÿ êåøèðîâàíèÿ èçîáðàæåíèÿ ïðèìåíÿþòñÿ, íî íå ïîìîãàþò. Ïðîáëåìà íå ðåøåíà.
Ñõâàòûâàíèå èçîáðàæåíèé êíîïîê JavaScript ìîäóëÿ èñïîëüçóþò íå àñèíõðîííûå, à ñèíõðîííûå çàïðîñû ê ñåðâåðó äëÿ ñîõðàíåíèÿ ïîñëåäîâàòåëüíîñòè äåéñòâèé. Â ìîìåíòû òàêîãî çàïðîñà, åñëè îí áûë âûçâàí ñîáûòèåì îò èçîáðàæåíèÿ (èçîáðàæåíèå ÿâëÿåòñÿ êíîïêîé), èçîáðàæåíèå ñõâàòûâàåòñÿ êàê áóäòî äëÿ ïåðåíîñà, äàæå ïî êðàòêîâðåìåííûì êëèêàì ìûøè. Ïðîáëåìà íå ðåøåíà.
Íåâîçìîæíî âñòàâèòü íîâûé ýëåìåíò â äåðåâî îáúåêòîâ, ïîëó÷åííîå êàê ðåçóëüòàò XMLHttpRequest Äëÿ êîíòðîëÿ çà ìîäèôèêàöèåé ñòðóêòóðû êîíôèãóðàöèîííîé ñòðàíèöû èñïîëüçîâàëîñü ïðèâåäåíèå òåêóùåãî äåðåâà ñòðóêòóðû ê íîâîé, òîëüêî ÷òî ïîëó÷åííîé èç XMLHttpRequest.  ìîìåíò âñòàâêè íîâîãî ýëåìåíòà â äåðåâî ñòðóêòóðû ïîñðåäñòâîì insertBefore() ïðîèñõîäèò îøèáêà "DOM error 4". Åñëè âñòàâêà ïðîèçâîäèòñÿ â äåðåâî, ñîçäàííîå ñ íóëÿ (à íå èç XMLHttpRequest), ýòà îøèáêà íå ïðîèñõîäèò. Ïîõîæå ïðîáëåìà çàêëþ÷àåòñÿ â îòëè÷èè îáúåêòà "document" âëàäåëüöà ýòèõ äåðåâüåâ.  òàêîå äåðåâî íåâîçìîæíî äîáàâèòü óçåë, ñîçäàííûé êàê document.createElement(). Âñòàâëÿþòñÿ òîëüêî ñîçäàííûå êàê mytree.ownerDocument.createElement(). Ïðîöåäóðà ïðîâåðêè ñòðóêòóðû áûëà óïðîùåíà è ñâåäåíà ê îïðåäåëåíèþ ôàêòà èçìåíåíèÿ.
Íå ðàáîòàþò ìåõàíèçìû ôîðìèðîâàíèÿ êîíòåêñòíîãî ìåíþ íà Konqueror 4. Îáû÷íî äëÿ ôîðìèðîâàíèÿ êîíòåêñòíîãî ìåíþ èñïîëüçóåòñÿ îáðàáîò÷èê oncontextmenu, íà Firefox è IE èëè onmousedown ñ îáðàáîòêîé ïðàâîé êëàâèøè íà â îñòàëüíûõ áðàóçåðàõ.  Konqueror âîîáùå oncontextmenu íå ðàáîòàåò, à onmousedown ðàáîòàåò òîëüêî â Konqueror 3.5. Ïðîáëåìà íå ðåøåíà.

Ññûëêè

Referring pages: Doc
Doc/ProgramManual/part4
Doc/QuickStart
Function
Using/PLC
Using/PLC/firmware
Using/PLC/firmwareARM


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