English version
Ðóññêàÿ âåðñèÿ
Contents
Âñòóï
Ðåë³ç â³äêðèòî¿ SCADA(Supervisory control and data acquisition) ñèñòåìè âåðñ³¿ 0.6.3 º ïëàíîâèì ðåë³çîì ã³ëêè 0.6.0. Ó ìåæàõ ö³º¿ âåðñ³¿ âèêîíàíî âåëèêó ðîáîòó ïî ñòàá³ë³çàö³¿ òà àäàïòàö³¿ äî ïðàêòè÷íèõ çàâäàíü.
Öåé äîêóìåíò º îáðîáêîþ (êîìï³ëÿö³ºþ) äîêóìåíòà <ChangeLog> ñèñòåìè OpenSCADA âåðñ³¿ 0.6.3, ÿêèé ïðèçíà÷åíî êîðîòêî òà íàî÷íî îñâ³òëèòè íîâ³ ìîæëèâîñò³ òà çì³íè ñèñòåìè OpenSCADA. Äåòàëüíî îçíàéîìèòèñÿ ç³ âñ³ìà çì³íàìè ó ñèñòåì³ OpenSCADA ìîæíà ó ôàéë³ ChangeLog ç ïàêåòó äèñòðèáóòèâà ñèñòåìè àáî òóò: http://diyaorg.dp.ua/oscadawiki/Works/ChangeLog (RU).
Êëþ÷îâèìè îñîáëèâîñòÿìè ö³º¿ âåðñ³¿ º:
Ðåàë³çàö³ÿ ïëàíîâèõ çàäà÷.
ϳäâèùåííÿ ñòàá³ëüíîñò³, ñò³éêîñò³ òà ïðîäóêòèâíîñò³ ñèñòåìè.
Óäîñêîíàëåííÿ òà ñòàá³ë³çàö³ÿ ÑÂÊ.
Çàãàëüíîñèñòåìí³ ðîçøèðåííÿ.
Ó ïðîöåñ³ ðîá³ò íàä ðåë³çîì áóëî âíåñåíî íàñòóïí³ çì³íè ó ìîäóë³ OpenSCADA:
Archive.FSArch (1.0.1) -- Ñòàá³ë³çàö³ÿ. Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
Archive.DBArch (0.7.1) -- Ñòàá³ë³çàö³ÿ. Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DB.DBF (1.9.1) -- Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DB.MySQL (1.4.1) -- Ñòàá³ë³çàö³ÿ. Äîäàííÿ ìîæëèâîñò³ çáåð³ãàííÿ äàòè òà ÷àñó ó ïîë³ MySQL ç òèïîì DATETIME. Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DB.SQLite (1.4.1) -- Ñòàá³ë³çàö³ÿ. Çàáåçïå÷åííÿ ìîæëèâîñò³ ðîáîòè ç ôàéëàìè ÁÄ ò³ëüêè äëÿ ÷èòàííÿ. Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DB.FireBird (0.8.1) -- Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DAQ.BlockCalc (1.1.1) -- Ñòàá³ë³çàö³ÿ. Ïåðåêëàä ³íòåðôåéñó íà ͳìåöüêó.
DAQ.JavaLikeCalc (1.3.0) -- Ñòàá³ë³çàö³ÿ. Äîäàííÿ ï³äòðèìêè îáëàñòåé íàéìåíóâàíü ôóíêö³é API êîðèñòóâà÷à. Äîäàííÿ êëþ÷îâèõ ñë³â using òà return.
DAQ.SNMP (0.3.3) -- Ñòàá³ë³çàö³ÿ.
DAQ.LogicLev (0.9.2) -- Ñòàá³ë³çàö³ÿ.
DAQ.ModBus (0.9.1) -- Ñòàá³ë³çàö³ÿ.
DAQ.DCON (0.1.0) -- Íîâèé ìîäóëü: Ó äåðåâî âèõ³äíèõ òåêñò³â ïðîåêòó âêëþ÷åíî ìîäóëü ðåàë³çàö³¿ äæåðåëà äàíèõ çà ïðîòîêîëîì DCON (Almaz Karimov).
DAQ.Siemens (1.1.1) -- Ñòàá³ë³çàö³ÿ.
DAQ.System (1.6.2) -- Ñòàá³ë³çàö³ÿ. Àäàïòîâàíî äî ï³äòðèìêè á³áë³îòåêè libsensors âåðñ³¿ 3 (API âåðñ³¿ 4).
DAQ.Transporter (0.3.3) -- Ñòàá³ë³çàö³ÿ.
Transport.Sockets (1.3.6) -- Ñòàá³ë³çàö³ÿ. Äîäàíî ïîëå ñòàíó äëÿ òðàíñïîðò³â.
Transport.SSL (0.8.0) -- Íîâèé ìîäóëü: Ìîäóëü òðàíñïîðòó “SSL”, áàçîâàíèé íà á³áë³îòåö³ øèôðóâàííÿ OpenSSL.
Special.FLibComplex1 (1.0.3) -- Ñòàá³ë³çàö³ÿ.
Special.FLibSYS (0.7.0) -- Äîäàíî ïàðàìåòðè äëÿ ïðÿìîãî äîñòóïó äî àðõ³â³â ó ôóíêö³¿: varhBeg(), varhEnd(), varhGetR(), varhGetB() òà varhGetS(). Äîäàíî íîâ³ ôóíêö³¿: strPath2Sep(), strEnc2HTML() è real2str(). Ôóíêö³þ tmCtime() çàì³íåíà íà tmFStr().
UI.QTCfg (1.7.0) -- Ñòàá³ë³çàö³ÿ. Äëÿ ôîðìóâàííÿ äåðåâà íàâ³ãàòîðó âèêîðèñòàíî îïòèìèçîâàíèé çà ÷àñîì çàïèò ã³ëêè âêëàäåíèõ åëåìåíò³â ãëèáèíîþ ó îäèí ð³âåíü. Äîäàíî îáìåæåííÿ ðîçì³ðó ³äåíòèô³êàòîð³â îá'ºêò³â ÿê³ ââîäÿòüñÿ.
UI.VCAEngine (0.8.0) -- Ñòàá³ë³çàö³ÿ. Îïòèì³çàö³ÿ íà ïðîäóêòèâí³ñòü. Äîäàíî ãðóïîâèé çàïèò àòðèáóò³â â³äæåò³â ã³ëêè â³äæåò³â ñåàíñ³â âèêîíàííÿ ïðîåêò³â. Ðåàë³çîâàíî ïðèì³òèâ "Äîêóìåíò". ϳäòðèìêà äèíàì³÷íèõ âëàñòèâîñòåé ô³ãóð ïðèì³òèâó "ElFigure". Áàãàòî ð³çíèõ óäîñêîíàëåíü.
UI.Vision (0.8.0) -- Ñòàá³ë³çàö³ÿ. Îïòèì³çàö³ÿ ïðîäóêòèâíîñò³. Ðåàë³çàö³ÿ äèíàì³çàö³¿ âñ³õ ïàðàìåòð³â åëåìåíò³â ïðèì³òèâó "ElFigure". Ðåàë³çàö³ÿ ïðèì³òèâó "Äîêóìåíò". Äîäàííÿ ôóíêö³¿ äðóêó òà åêñïîðòó ó ðåæèì³ âèêîíàííÿ. Äëÿ çàïèòó äàíèõ êàäð³â âèêîðèñòàíî ãðóïîâèé çàïèò, çíà÷íî ï³äâèùóþ÷èé ïðîäóêòèâí³ñòü. Îïòèì³çàö³ÿ àëãîðèòìó ñîðòóâàííÿ âêëàäåíèõ â³äæåò³â êàäð³â, ùî çíà÷íî ï³äâèùèëè ïðîäóêòèâí³ñòü ðîáîòè âåëèêèõ ìíåìîñõåì. Çì³íà êîíöåïö³¿ ôîðìóâàííÿ åëåìåíò³â ïðèì³òèâó "ElFigure", ÿêà äîçâîëèëà çíà÷íî ï³äâèùèòè ïðîäóêòèâí³ñòü. Ðåàë³çàö³ÿ ôóíêö³¿ â³çóàëüíîãî ìàñøòàáóâàííÿ ðîçðîáëþâàíèõ êàäð³â. Ðåàë³çàö³ÿ ìàñøòàáó øðèôòó ó âñ³õ ïðèì³òèâàõ. Áàãàòî ð³çíèõ óäîñêîíàëåíü.
UI.WebVision (0.6.0) -- Ñòàá³ë³çàö³ÿ. Ðåàë³çàö³ÿ äèíàì³çàö³¿ âñ³õ ïàðàìåòð³â åëåìåíò³â ïðèì³òèâó "ElFigure". Ðåàë³çàö³ÿ ïðèì³òèâó "Äîêóìåíò". Äëÿ çàïèò³â äàíèõ êàäð³â âèêîðèñòàíî ãðóïîâèé çàïèò, ÿêèé çíà÷íî ï³äâèùóºïðîäóêòèâí³ñòü. Ðåàë³çàö³ÿ ïðèì³òèâó "Ïðîòîêîë". Áàãàòî ð³çíèõ óäîñêîíàëåíü.
UI.WebCfg (1.5.2) -- Ñòàá³ë³çàö³ÿ ìîäóëÿ. Äîäàííÿ ä³é çàâàíòàæåííÿ òà çáåðåæåííÿ ïîòî÷íî¿ ñòîð³íêè.
UI.WebCfgD (0.5.0) -- Íîâèé ìîäóëü: Ðåàë³çàö³ÿ äèíàì³÷íîãî Web-êîíô³ãóðàòîðà OpenSCADA.
UI.WebDbg -- Âèäàëåííÿ ìîäóëÿ: Ìîäóëü â³äïðàöþâàííÿ âçàºìî䳿 ç Web-³íòåðôåéñàìè.
1 Ðåàë³çàö³ÿ ïëàíîâèõ çàäà÷
Ó â³äïîâ³äíîñò³ ç ïëàíîì ðåë³çó áóëî âèêîíàíî íàñòóïí³ çàâäàííÿ:
Ðåàë³çàö³ÿ ï³äòðèìêè ãðóïîâèõ çàïèò³â ó ìîâ³ êîíòðîëþ òà êåðóâàííÿ OpenSCADA òà îïòèì³çàö³ÿ íà éîãî îñíîâ³ ìåðåæåâèõ êîìóí³êàö³é ð³çíèõ ï³äñèñòåì OpenSCADA. -- Ó â³äïîâ³äíîñò³ ç öèì çàâäàííÿì áóëî âèêîíàíî:
Ðåàë³çàö³ÿ ñåðâ³ñíîãî çàïèòó ã³ëêè àòðèáóò³â â³äæåò³â '/serv/attrBr'. Çàïèò ïðèçíà÷åíî îïòèì³çóâàòè îáì³í ì³æ â³çóàë³çàòîðîì òà ðóø³ºì â³çóàë³çàö³¿ øëÿõîì çàì³íè áàãàòüîõ ì³ëêèõ çàïèò³â îäíèì âåëèêèì. Ó âèïàäêó îáì³íó çà ïîñåðåäíèöòâîì ìåðåæåâèõ âèñîêîëàòåíòíèõ êàíàë³â äàíèé ìåõàí³çì ñóòòåâî ï³äâèùóº ïðîäóêòèâí³ñòü. Çàïèò áóëî âèêîðèñòàíî ó ìîäóëÿõ UI.Vision òà UI.WebVision.
Ðåàë³çîâàíî ãðóïîâèé çàïèò äåðåâà á³áë³îòåê â³äæåò³â UI.Vision. Äîçâîëèâ ï³äâèùèòè ïðîäóêòèâí³ñòü çàâàíòàæåííÿ òà îáðîáêè âåëèêèõ äåðåâ á³áë³îòåê â³äæåò³â, îñîáëèâî ó ìåðåæ³.
Ðåàë³çîâàíî òà âèêîðèñòàíî îïòèì³çîâàíèé çà ÷àñîì çàïèò åëåìåíò³â íàùàäê³â äåðåâà íàâ³ãàö³¿ ó UI.QTCfg òà UI.WebCfgD. Äîçâîëèâ âèêëþ÷èòè çàéâ³, ôðàãìåíòîâàí³, çàïèòè, ï³äâèùèâøè òèì ñàìèì çàãàëüíó øâèäê³ñòü ôîðìóâàííÿ äåðåâà îá'ºêò³â, îñîáëèâî ÷åðåç ìåðåæó.
Ðîçðîáêà òà ðåàë³çàö³ÿ êîíöåïö³¿ ïðèì³òèâó ÑÂÊ “Äîêóìåíò”, ïðèçíà÷åíîãî äëÿ ôîðìóâàííÿ çâ³òíî¿ äîêóìåíòàö³¿. -- Êîíöåïö³ÿ ïðèì³òèâó "Äîêóìåíò" áóëà ðîçðîáëåíà òà ðåàë³çîâàíà. Ðåàë³çàö³ÿ çà÷åïèëà çàáåçïå÷åííÿ ï³äòðèìêè íà áîö³ ðóø³ÿ ÑÂÊ (UI.VCAEngine) òà â³çóàë³çàòîð³â UI.Vision òà UI.WebVision.
̳ãðàö³ÿ ìîäóëÿ êîíô³ãóðàö³¿ ñèñòåìè OpenSCADA UI.WebCfg íà äèíàì³÷íèé ³íòåðôåéñ DHTML. -- Áóëî âèêîíàíî íå ì³ãðàö³þ, à ñòâîðåííÿ íîâîãî ìîäóëÿ êîíô³ãóðàö³¿ OpenSCADA íà îñíîâ³ Web DHTML. Ìîäóëü îòðèìàâ íàçâó UI.WebCfgD. Íà öåé ÷àñ ó äèñòðèáóòèâ³ OpenSCADA ïðèñóòí³ îáèäâà ìîäóë³.
Ðåàë³çàö³ÿ áåçïå÷íîãî òðàíñïîðòó íà îñíîâ³ OpenSSL. -- Ðåçóëüòàòîì ðåàë³çàö³¿ òðàíñïîðòó íà îñíîâ³ OpenSSL ñòàâ ìîäóëü ï³äñèñòåìè "Òðàíñïîðòè" OpenSCADA - Transport.SSL. Öåé ìîäóëü ðåàë³çóº ñòàíäàðòè øèôðóâàííÿ òðàô³êó SSL v2, SSL v3 òà TLS v1 ÿê äëÿ âõ³äíèõ, òàê ³ äëÿ âèõ³äíèõ òðàíñïîðò³â.
Ðåàë³çàö³ÿ ïðèì³òèâ³â ÑÂÊ “Link” òà “Function”. -- Öÿ ðîáîòà íå áóëà âèêîíàíà òà ïåðåíåñåíà äî íàñòóïíîãî ðåë³çó.
Ïåðåêëàä òðèâàº
2 Ïîâûøåíèå ñòàáèëüíîñòè, óñòîé÷èâîñòè è ïðîèçâîäèòåëüíîñòè ñèñòåìû.
 ïðîöåññå ðàáîò íàä äàííîé âåðñèåé, à òàêæå å¸ ïðàêòè÷åñêîé àäàïòàöèè, áûëî îáíàðóæåíî è èñïðàâëåíî îêîëî 120 îøèáîê. Áîëüøèíñòâî îøèáîê áûëî îáíàðóæåíî â êîìïîíåíòàõ ñðåäû âèçóàëèçàöèè è óïðàâëåíèÿ (90 îøèáîê).
Êðîìå èñïðàâëåíèÿ ìíîæåñòâà îøèáîê áûëà ïðîäåëàíà ðàáîòà ïî îïòèìèçàöèè ðàçëè÷íûõ êîìïîíåíòîâ OpenSCADA. Îñîáåííî çàìåòíîé îïòèìèçàöèè ïîäâåðãëàñü ñðåäà âèçóàëèçàöèè è óïðàâëåíèÿ (ÑÂÓ) è å¸ âèçóàëèçàòîðû. Îñíîâíûì âåêòîðîì â îïòèìèçàöèè áûëà îïòèìèçàöèÿ íà ïðîèçâîäèòåëüíîñòü.
Ïåðå÷èñëèì íàèáîëåå ñóùåñòâåííûå îøèáêè, èñïðàâëåíèå êîòîðûõ çíà÷èòåëüíî îòðàçèëîñü íà ïîâûøåíèè ñòàáèëüíîñòè:
Èñïîëüçîâàíà ôóíêöèÿ QWidget::deleteLater() äëÿ óäàëåíèÿ âèäæåòîâ è óñòðàíåíèÿ ïðîáëåìû ïàäåíèÿ OpenSCADA â íåêîòîðûõ ñèòóàöèÿõ óäàëåíèÿ âèäæåòîâ QT4.
Íåêîððåêòíîå óäàëåíèå ýëåìåíòîâ std::map â ïðèìèòèâå "ElFigure" ìîäóëÿ UI.Vision è UI.WebVision ïðèâîäÿùåå ê ïàäåíèþ ñèñòåìû ïîä íàãðóçêîé, ïîñëå ñóòîê ðàáîòû.
Îòñóòñòâèå ðåñóðñà íà äîñòóï ê ñòðîêîâûì àòðèáóòàì ïàðàìåòðîâ ïîäñèñòåìû "Ñáîð äàííûõ". Íà íàãðóæåííûõ ñèñòåìàõ ñ êîíêóðåíòíûì äîñòóïàì ê îáùèì äàííûì, íàïðèìåð ïðè çàïóñêå íåñêîëüêèõ ñåàíñîâ îäíîãî ïðîåêòà âèçóàëèçàöèè ïðîèñõîäèëà îøèáêà ïàìÿòè.
Îêîí÷àòåëüíî èñêëþ÷åíî ïàäåíèå ñèñòåìû ïðè ñìåíå ñâÿçè â ìîäóëå UI.Vision, ïîñëå çàêðûòèÿ äèàëîãà ñ óâåäîìëåíèåì îá óñòàíîâêå íå âñåõ ñâÿçåé.
Èñïðàâëåíà íå÷óâñòâèòåëüíîñòü ê ðåãèñòðó ñòðîêîâûõ êëþ÷åâûõ ïîëåé ÁÄ MySQL, ÷òî ïðèâîäèëî ê ïåðåñå÷åíèþ ñâîéñòâ ýëåìåíòîâ âèçóàëèçàöèè.
Äîáàâëåíà ïîääåðæêà ñèìâîëîâ ïåðåâîäà ñòðîê â àòðèáóòàõ è èìåíàõ òåãîâ XML. Èñïðàâëåíà îøèáêà ïðè ïåðåäà÷å áîëüøèõ òåêñòîâ â àòðèáóòàõ.
Ïåðåñìîòðåí ìåõàíèçì äîñòóïà ê îòëàäî÷íûì ñîîáùåíèÿ. Òåïåðü îòëàäêà âêëþ÷àåòñÿ îïðåäåëåíèåì ïåðåìåííîé OSC_DEBUG ñ óðîâíåì îò 0 äî 5. Ãäå 5 óðîâåíü íàèáîëåå äåòàëèçèðóþùèé è äîëæåí èñïîëüçîâàòüñÿ ñ îñòîðîæíîñòüþ.
Ðåàëèçîâàí ìåõàíèçì îãðàíè÷åíèÿ ââîäà êîëè÷åñòâà ñèìâîëîâ èäåíòèôèêàòîðîâ îáúåêòîâ OpenSCADA â ñîîòâåòñòâèè ñ ðàçìåðíîñòüþ çíà÷åíèé èõ êàê êëþ÷åé ÁÄ.
Äîáàâëåíî êîäèðîâàíèå èäåíòèôèêàòîðîâ îáúåêòîâ OpenSCADA äëÿ ïðåäîòâðàùåíèÿ ââîäà íåäîïóñòèìûõ â èäåíòèôèêàòîðå ñèìâîëîâ.
Óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè:
Ðåàëèçîâàí ñåðâèñíûé çàïðîñ âåòâè àòðèáóòîâ âèäæåòîâ '/serv/attrBr'. Çàïðîñ ïðèçâàí îïòèìèçèðîâàòü îáìåí ìåæäó âèçóàëèçàòîðîì è äâèæêîì âèçóàëèçàöèè ïóò¸ì çàìåíû ìíîæåñòâà ìåëêèõ çàïðîñîâ îäíèì êðóïíûì.  ñëó÷àå îáìåíà ïî ñåòåâûì âûñîêîëàòåíòíûì êàíàëàì äàííûé ìåõàíèçì ñóùåñòâåííî ïîâûøàåò ïðîèçâîäèòåëüíîñòü.
Èñïîëüçîâàí áèíàðíûé àëãîðèòì ñîðòèðîâêè êó÷è ïðè ñîðòèðîâêå âëîæåííûõ âèäæåòîâ ó÷èòûâàÿ èõ ïîðÿäîê. Ïðîáëåìà ñòàðîãî àëãîðèòìà íà÷àëà çàìåòíî ñêàçûâàòüñÿ ïîñëå 500 âëîæåííûõ âèäæåòîâ.
Äîáàâëåí è èñïîëüçîâàí ãðóïïîâîé çàïðîñ äåðåâà áèáëèîòåê âèäæåòîâ UI.Vision.
Ðåàëèçîâàí è èñïîëüçîâàí íîâûé, îïòèìèçèðîâàííûé ïî âðåìåíè, çàïðîñ äî÷åðíèõ ýëåìåíòîâ äåðåâà íàâèãàöèè â UI.QTCfg è UI.WebCfgD.
3 Óñîâåðøåíñòâîâàíèå è ñòàáèëèçàöèÿ ÑÂÓ.
Íàèáîëåå çíà÷èìûå èçìåíåíèÿ áûëè âûïîëíåíû â ðàìêàõ ñðåäû âèçóàëèçàöèè è óïðàâëåíèÿ (ÑÂÓ), à èìåííî â ìîäóëÿõ äâèæêà ÑÂÓ UI.VCAEngine, âèçóàëèçàòîðîâ UI.Vision è UI.WebVision. Âíåñ¸ííûå èçìåíåíèÿ áûëè íàïðàâëåííû íà ñòàáèëèçàöèþ, îïòèìèçàöèþ ïðîèçâîäèòåëüíîñòè è óëó÷øåíèå ïîëüçîâàòåëüñêèõ ñâîéñòâ ÑÂÓ.
Óëó÷øåíèÿ ÑÂÓ:
Äëÿ ïðèìèòèâà "ElFigure" äîáàâëåíà ïîääåðæêà äèíàìè÷åñêèõ è ñòàòè÷åñêèõ òî÷åê; äèíàìè÷åñêèõ øèðèí, öâåòîâ, è èçîáðàæåíèé; äèíàìè÷åñêèõ ñòèëåé ëèíèé. Âñ¸ ýòî ïðåäîñòàâèëî âîçìîæíîñòü ñîçäàâàòü î÷åíü ñëîæíûå äèíàìè÷åñêèå ôèãóðû â ðàìêàõ îäíîãî âèäæåòà, à òàêæå èñêëþ÷èëî èçáûòî÷íîñòü â íàëè÷èè îòäåëüíûõ àòðèáóòîâ êîîðäèíàò òî÷åê äëÿ áîëüøèõ è ñëîæíûõ ñòàòè÷åñêèõ èçîáðàæåíèé.
Ðåàëèçîâàíà ïîääåðæêà ïðèìèòèâà «Äîêóìåíò» â UI.VCAEngine, UI.Vision è UI.WebVision. Ðåàëèçàöèÿ ïðèìèòèâà äîêóìåíòà ïðåäîñòàâèëà âîçìîæíîñòü ñîçäàâàòü îò÷¸òíóþ äîêóìåíòàöèþ ðàçëè÷íîé ñëîæíîñòè è ñâîéñòâ â îêðóæåíèÿõ áèáëèîòåêè QT è Web-òåõíîëîãèé ñèñòåìû OpenSCADA.
Äîáàâëåíà ðåàëèçàöèÿ ôóíêöèé ïå÷àòè è ýêñïîðòà â îêíå èñïîëíÿåìîãî ïðîåêòà. Ïå÷àòü è ýêñïîðò ðåàëèçîâàíû äëÿ: ñòðàíèö, äèàãðàìì è äîêóìåíòîâ. Ýêñïîðò ñòðàíèö è äèàãðàìì îñóùåñòâëÿåòñÿ â èçîáðàæåíèÿ, à äîêóìåíòà â XHTML.
Èçìåíåíà êîíöåïöèÿ îòîáðàæåíèÿ ïðèìèòèâà "ElFigure" ñ öåëüþ çíà÷èòåëüíîãî ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè â ðåæèìå ðàçðàáîòêè è èñïîëíåíèÿ. Èçìåíåíèå çàêëþ÷àåòñÿ â ïðåäâàðèòåëüíîé ïðîðèñîâêå íà èçîáðàæåíèè, è ïîñëåäóþùåé åãî îòïðàâêè íà ýêðàí ïðè çàïðîñå íà îáíîâëåíèå.  ñëó÷àÿõ ôîðìèðîâàíèÿ áîëüøèõ ñòàòè÷åñêèõ èçîáðàæåíèé, à ïîâåðõ íèõ ðàçìåùåíèÿ äèíàìèêè îáùàÿ ïðîèçâîäèòåëüíîñòü èíòåðôåéñà çíà÷èòåëüíî ïîâûøàåòñÿ.
Ðåàëèçîâàíà ôóíêöèÿ ñâîáîäíîãî âèçóàëüíîãî ìàñøòàáà ðåäàêòèðóåìûõ êàäðîâ âèçóàëüíîãî èíòåðôåéñà ìîäóëÿ UI.Vision. Ôóíêöèÿ ïðèçâàíà îáëåã÷èòü ðàçðàáîòêó êàê ìåëêèõ, íî ñëîæíûõ ýëåìåíòîâ, òàê è áîëüøèõ ïàíîðàìíûõ êàäðîâ.
Ðåàëèçîâàíà ôóíêöèÿ ìàñøòàáèðîâàíèÿ øðèôòà âñåõ ïðèìèòèâîâ ìîäóëåé âèçóàëèçàöèè UI.Vision è UI.WebVision. Ìàñøòàáèðîâàíèå âñåõ ïðèìèòèâîâ ñòàëî áîëåå àäåêâàòíûì â øèðîêîì äèàïàçîíå çíà÷åíèé.
Äîðàáîòàíî ïîëíîöåííîå ìàñøòàáèðîâàíèå ïðèìèòèâà "Äèàãðàììà" ìîäóëåé âèçóàëèçàöèè UI.Vision è UI.WebVision.
UI.WebVision: Çíà÷èòåëüíîå ðàñøèðåíèå ôóíêöèîíàëüíîñòè ìîäóëÿ, à èìåííî:
Ðåàëèçîâàíî èñïîëüçîâàíèå øðèôòîâ TTF è FontConfig äëÿ äîñòóïà ê íèì. TTF øðèôòû èñïîëüçîâàíû äëÿ ôîðìèðîâàíèå íàäïèñåé ïðèìèòèâà "Äèàãðàììà", ÷òî ñäåëàëî òðåíäû áîëåå ñõîæèìè ñ íèìè-æå â UI.Vision.
äîáàâëåíà ïðîâåðêà ïðàâ äîñòóïà;
ðåàëèçîâàíî îòêðûòèå ñòðàíèö èíòåðôåéñà â îòäåëüíûõ, âñïëûâàþùèõ, îêíàõ;
ðåàëèçîâàí êîíòðîëü àêòèâíîãî ðåæèìà â ýëåìåíòàõ ïðèìèòèâà "FormEl";
äîáàâëåíî áëîêèðîâàíèå îáíîâëåíèÿ ýëåìåíòîâ ïðèìèòèâà "FormEl", íà ìîìåíò ðåäàêòèðîâàíèÿ ïîëüçîâàòåëåì;
ðåàëèçîâàí ïðèìèòèâ «Ïðîòîêîë».
Äîáàâëåíà ïîääåðæêà òèïîâ èêîíîê OpenSCADA “png”, “gif”, “jpg” è “jpeg”.
4 Îáùåñèñòåìíûå ðàñøèðåíèÿ.
Ê äàííîìó ðåëèçó áûëî âíåñåíî äîñòàòî÷íî ìíîãî îáùåñèñòåìíûõ èçìåíåíèé íàïðàâëåííûõ íà ðàñøèðåíèå ôóíêöèîíàëüíîñòè.
Èçìåíåíèÿ ñáîðî÷íîé ñèñòåìû è ôàéëà ñïåöèôèêàöèè äëÿ ôîðìèðîâàíèÿ RPM-ïàêåòà:
Ôàéë ñïåöèôèêàöèè ñîçäàíèÿ RPM ïàêåòîâ àäàïòèðîâàí äëÿ ôîðìèðîâàíèÿ noarch ïàêåòîâ íà ALTLinux. Ñîçäàí ñîáñòâåííûé ñêðèïò 'mkdist' äëÿ ñîçäàíèÿ «÷èñòîãî» àðõèâà äèñòðèáóòèâà, ñ êîððåêöèåé ôóíêöèîíèðîâàíèÿ êîìàíäû 'make dist'.
Ïàêåòû äîêóìåíòàöèè óíèôèöèðîâàíû. Èíôîðìàöèîííàÿ äîêóìåíòàöèÿ ïîìåùåíà â áèíàðíûé ïàêåò, à äîêóìåíòàöèÿ íà ïðîãðàììó âûäåëåíà â îòäåëüíûé ïàêåò.
Èñïðàâëåíî ðàçìåùåíèå áèáëèîòåê è èõ ññûëîê ïî ïàêåòàì.
Èçìåíåíà âåðñèÿ áèáëèîòåêè ÿäðà OpenSCADA íà "0:10:0".
Èçìåíåíèÿ êîíôèãóðàöèè OpenSCADA è äåìîíñòðàöèîííîé ÁÄ:
Äîáàâëåíà ïîääåðæêà ðàáîòû OpenSCADA â äèðåêòîðèè ïîëüçîâàòåëÿ. Äëÿ çàïóñêà â ïîëüçîâàòåëüñêîì ðåæèå äîáàâëåí ñêðèïò 'openscada_start'.
Äëÿ QT êîíôèãóðàòîðà (UI.QTCfg) ïîëüçîâàòåëü ïî óìîë÷àíèþ óñòàíîâëåí â 'root'.
Äîáàâëåíà êîíôèãóðàöèÿ ñîáñòâåííîãî èíòåðôåéñà OpenSCADA íà ïîðòó 10005 â êîíôèãóðàöèîííûå ôàéëû äèñòðèáóòèâà.
Äîáàâëåíî êîíôèãóðàöèîííîå ïîëå ïóòè ê èêîíêàì OpenSCADA. Ïîëå êîíôèãóðàöèè ïóòè ê ìîäóëÿì OpenSCADA ïåðåìåùåíî íà ãëàâíóþ ñòðàíèöó ñèñòåìû.
Îáíîâëåíà äåìîíñòðàöèîííàÿ ÁÄ:
ôàéë ÁÄ ñðåäû âèçóàëèçàöèè ðàçäåë¸í íà ôàéëû ÁÄ: vcaBase, vcaTest è vcaAGLKS;
äîáàâëåíû êàäðû äèíàìè÷åñêèõ îò÷¸òîâ íà îñíîâå ïðèìèòèâà «Äîêóìåíò»;
äîáàâëåíû îò÷¸òû â àðõèâíîì ðåæèìå;
ñòðàíèöà ãðóïïû ãðàôèêîâ îáíîâëåíà è èñïðàâëåíà;
äîáàâëåíà ìíåìîñõåìà è ãðóïïà ãðàôèêîâ âî âòîðîé ñèãíàëüíûé îáúåêò;
äîáàâëåíà ñòðàíèöà êîíôèãóðàöèè ïàðàìåòðîâ ÏÈÄ-ðåãóëÿòîðà;
äîáàâëåíà ïàíåëü íàâèãàöèè äëÿ äîêóìåíòîâ;
ïàíåëü óïðàâëåíèÿ ïàðàìåòðàìè ðàñøèðåíà äëÿ ïîääåðæêè äèñêðåòíûõ ïàðàìåòðîâ (îòñåêàòåëè);
êðàíû ïîäêëþ÷åíû ê ðåàëüíûì óñòðîéñòâàì äèíàìè÷åñêîé ìîäåëè ÊÑ íà îñíîâíîé ìíåìîñõåìå.
Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ:
Special.FLibSYS:
ôóíêöèÿ ïîëüçîâàòåëüñêîãî API äëÿ ïðåîáðàçîâàíèÿ äàòû è âðåìåíè â ñòðîêó tmCtime() çàìåíåíà íà ôóíêöèþ ïðåäñòàâëåíèÿ äàòû è âðåìåíè â ïðîèçâîëüíîì ôîðìàòå tmFStr();
â ôóíêöèè ïîëüçîâàòåëüñêîãî API: varhBeg(), varhEnd(), varhGetR(), varhGetB() è varhGetS() äîáàâëåí ïàðàìåòð ïðÿìîãî äîñòóïà ê àðõèâó;
äîáàâëåíû ôóíêöèè: strPath2Sep(), strEnc2HTML() è real2str().
Äîáàâëåíà ïîääåðæêà îáëàñòåé âèäèìîñòè äëÿ ïîëüçîâàòåëüñêèõ ôóíêöèé.  ìîäóëå DAQ.JavaLikeCalc äîáàâëåíî êëþ÷åâîå ñëîâî “using”, äëÿ óêàçàíèÿ îáëàñòè âèäåìîñòè, è êëþ÷åâå ñëîâî “return”.
Ðàçíîå:
Ðåàëèçîâàí èíòåðôåéñ ñòàòóñà òðàíñïîðòîâ. Ïðåäíàçíà÷åí äëÿ äåòàëèçàöèè òåêóùåãî ñîñòîÿíèÿ è ïðåäîñòàâëåíèÿ ñòàòèñòèêè îáìåíà.
Äîáàâëåíà âîçìîæíîñòü õðàíåíèÿ è äîñòóïà ê èñïîëíÿåìûì èíñòðóêöèÿì XML-óçëà.
Äîáàâëåí øàáëîí ìîäóëÿ (src/moduls/ui/=Tmpl=) ïîäñèñòåìû «Ïîëüçîâàòåëüñêèå èíòåðôåéñû». Øàáëîí ïðåäíàçíà÷åí äëÿ ñîçäàíèÿ ìîäóëåé äàííîé ïîäñèñòåìû íà åãî îñíîâå è ñëåäóÿ êîììåíòàðèÿì â èñõîäíîì òåêñòå.
Äîáàâëåíû ïåðåâîäû Èðèíû è Àëåêñåÿ Ïîïêîâûõ íà Íåìåöêèé ÿçûê äëÿ ìîäóëåé: Archive.DBArch, Archive.FSArch, DB.SQLite, DB.MySQL, DB.FireBird, DB.DBF, DAQ.BlockCalc.
Ìîäóëü DAQ.System àäàïòèðîâàí ê ïîääåðæêå libsensors âåðñèè 3.
5 Ïëàíû äàëüíåéøåãî ðàçâèòèÿ
Ê ðåëèçó ñëåäóþùåé âåðñèè çàïëàíèðîâàíû ðåøåíèÿ òàêèõ çàäà÷:
Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ ôóíêöèÿìè:
óïðàâëåíèÿ ñåàíñîì ñðåäû âèçóàëèçàöèè è óïðàâëåíèÿ (ÑÂÓ);
óïðàâëåíèÿ ïîäñèñòåìîé "Ñáîð äàííûõ" (DAQ);
Âûíîñ òðàíñïîðòíîé è ïðîòîêîëüíîé ÷àñòè ìîäóëÿ DAQ.ModBus â ïîäñèñòåìû "Òðàíñïîðòû" è "Òðàíñïîðòíûå ïðîòîêîëû". Ðåàëèçàöèÿ ðåæèìà "Slave" ñåòè ModBus.
Ñîçäàíèå èíòåðôåéñà ñòàòóñà êîíòðîëëåðîâ ïîäñèñòåìû DAQ äëÿ êîíòðîëÿ çà ñîñòîÿíèåì èñòî÷íèêà äàííûõ è ñòàòèñòèêîé ñáîðà äàííûõ.
Ðåàëèçàöèÿ ïðèìèòèâîâ "Ñâÿçü" è "Ôóíêöèÿ" ÑÂÓ.
Ðåàëèçàöèÿ ñòèëåé è ìåíåäæåðà òåì â ÑÂÓ.
Ðåàëèçàöèÿ ïîääåðæêè ìàññèâîâ â ÿçûêå ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ JavaLikeCalc è OpenSCADA â öåëîì.
Ðåàëèçàöèÿ ìåõàíèçìîâ ðåçåðâèðîâàíèÿ ïîäñèñòåìû "Ñáîð äàííûõ".
Ññûëêè
Referring pages:
HomePageUk/Doc