Ñòàòóñ: Ôîðìèðîâàíèå
Ââåäåíèå
Äàííûé ðåëèç ÿâëÿåòñÿ ïëàíîâûì âûïóñêîì ðàáî÷åé âåðñèè ñèñòåìû OpenSCADA, êîòîðûå îáû÷íî îñóùåñòâëÿþòñÿ ñ ïåðèîäè÷íîñòüþ 3-4 ìåñÿöà. Îñíîâíîé öåëüþ äàííîãî ðåëèçà ÿâëÿåòñÿ ñòàáèëèçàöèÿ è îòðàáîòêà êëþ÷åâûõ ôóíêöèé ïåðåä âûïóñêîì ñëåäóþùåé âåðñèè OpenSCADA ïðîäîëæèòåëüíîé ïîääåðæêè (LTS) 0.8.0. Êðîìå îñíîâíûõ çàäà÷ â ðàìêàõ äàííîãî ðåëèçà ïðîäåëàíà áîëüøàÿ ðàáîòà ïî ñòàáèëèçàöèè, ÷èñòêå èñõîäíîãî êîäà, âñåñòîðîííåìó ðàñøèðåíèþ âîçìîæíîñòåé, à òàêæå îïðîáîâàíèå íà âñòðàèâàåìûõ è ìîáèëüíûõ óñòðîéñòâàõ àðõèòåêòóðû ARM.
Äàííûé äîêóìåíò ÿâëÿåòñÿ îáðàáîòêîé(êîìïèëÿöèåé) äîêóìåíòà "ChangeLog" ñèñòåìû OpenSCADA âåðñèè 0.7.2, êîòîðûé ïðèçâàí âêðàòöå è íàãëÿäíî îñâåòèòü íîâûå âîçìîæíîñòè. Äåòàëüíåå îçíàêîìèòüñÿ ñ èçìåíåíèÿìè â ñèñòåìå OpenSCADA ìîæíî â ôàéëå "ChangeLog" èç äèñòðèáóòèâà ñèñòåìû èëè çäåñü: http://wiki.oscada.org/Works/ChangeLog.
Êëþ÷åâûìè îñîáåííîñòÿìè äàííîé âåðñèè ÿâëÿþòñÿ:
- Ðåàëèçàöèÿ ïëàíîâûõ çàäà÷.
- Îïòèìèçàöèÿ, ïîâûøåíèå ñòàáèëüíîñòè, óñòîé÷èâîñòè è ïðîèçâîäèòåëüíîñòè ñèñòåìû.
- Óñîâåðøåíñòâîâàíèå è ñòàáèëèçàöèÿ ãðàôè÷åñêîé ïîäñèñòåìû.
- Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ.
- Îáùåñèñòåìíûå ðàñøèðåíèÿ.
- Ïóáëèêàöèÿ ðåøåíèé OpenSCADA.
Íîâûå è îáíîâëåííûå ìîäóëè:
- Archive.DBArch (0.9.5) — Äîáàâëåíû ëèìèòû çàïðîñà äàííûõ ïî âðåìåíè çàïðîñà è åù¸ íåêîòîðûå ðàñøèðåíèÿ.
- Archive.FSArch (1.5.0) — Ïîâûøåíèå ïðîèçâîäèòåëüíîñòè ÷òåíèÿ èíäåêñîâ ôàéëîâ àðõèâîâ çíà÷åíèé. Àäàïòàöèÿ õðàíåíèÿ è ÷òåíèÿ âåùåñòâåííîãî ê ARM FPA. Äîáàâëåíû ëèìèòû çàïðîñà äàííûõ ïî âðåìåíè çàïðîñà. Íåêîòîðûå ðàñøèðåíèÿ. Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ.
- DB.FireBird (0.9.7) — Ñòàáèëèçàöèÿ.
- DB.MySQL (1.7.1) — Ñòàáèëèçàöèÿ.
- DB.PostgreSQL (0.9.2) — Ñòàáèëèçàöèÿ.
- DB.SQLite (1.6.4) — Ñòàáèëèçàöèÿ.
- DAQ.BFN (0.5.1) — Î÷èñòêà êîäà.
- DAQ.BlockCalc (1.5.0) — Äîáàâëåíî ïëàíèðîâàíèå âûçîâîâ ïî CRON. Äîáàâëåí çàïóñêàþùèé è îñòàíàâëèâàþùèé âûçîâ áëîêîâ. Ñòàáèëèçàöèÿ.
- DAQ.DAQGate (0.9.5) — Äîáàâëåíî ïëàíèðîâàíèå âûçîâîâ ïî CRON. Ñòàáèëèçàöèÿ.
- DAQ.DCON (0.5.1) — Ñòàáèëèçàöèÿ.
- DAQ.DiamondBoards (1.2.5) — Äîáàâëåíà âîçìîæíîñòü ñìåíû òèïà ïàðàìåòðà. Ñòàáèëèçàöèÿ.
- DAQ.ICP_DAS (0.8.0) — Äîáàâëåíà áèáëèîòåêà API "ICP DAS" libi8k.a äëÿ àðõèòåêòóðû ARM è âêëþ÷åíà âîçìîæíîñòü ñáîðêè ìîäóëÿ äëÿ ARM. Ñòàáèëèçàöèÿ.
- DAQ.JavaLikeCalc (1.9.5) — Äîáàâëåí ïðÿìîé, äèíàìè÷åñêèé âûçîâ áèáëèîòå÷íûõ ôóíêöèé. Äîáàâëåíî ïðÿìîå îáúåäèíåíèå ñòðîêîâûõ êîíñòàíò. Äîáàâëåí óñëîâíûé âûçîâ àðãóìåíòîâ âûðàæåíèÿ (âòîðîãî àðãóìåíòà) ñ ëîãè÷åñêèìè îïåðàöèÿìè ||(OR) è &&(AND). Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ. Íåêîòîðûå ðàñøèðåíèÿ.
- DAQ.LogicLev (1.2.0) — Ñòàáèëèçàöèÿ. Äîáàâëåíà âîçìîæíîñòü ñìåíû òèïà ïàðàìåòðà. Äîáàâëåíî ïëàíèðîâàíèå âûçîâîâ ïî CRON. Íåêîòîðîå ðàñøèðåíèå.
- DAQ.ModBus (1.2.0) — Äîáàâëåíà ïîääåðæêà òèïà ïàðàìåòðà "Ëîãè÷åñêèé" äëÿ ðàáîòû ïî øàáëîíó ïàðàìåòðà, à òàêæå ôóíêöèè ïîëüçîâàòåëüñêîãî API äëÿ îòïðàâêè ïðîèçâîëüíûõ-íåñòàíäàðòíûõ ModBus-çàïðîñîâ èç øàáëîíîâ. Äîáàâëåíà è èñïîëüçîâàíà ôóíêöèÿ ôîðìèðîâàíèÿ ñîîáùåíèé î íàðóøåíèÿõ â êîíòðîëëåðå. Äîáàâëåíà ïîääåðæêà ôóíêöèé ãðóïïîâîé çàïèñè (0x0F, 0x10). Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ.
- DAQ.OPC_UA (0.6.2) — Ñòàáèëèçàöèÿ. Àäàïòàöèÿ õðàíåíèÿ è ÷òåíèÿ âåùåñòâåííîãî ê ARM FPA.
- DAQ.SNMP (0.6.1) — Ñòàáèëèçàöèÿ. Íåêîòîðûå óëó÷øåíèÿ.
- DAQ.Siemens (1.3.0) — Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ. Âåðñèÿ áèáëèîòåêè LibnoDave îáíîâëåíà äî 0.8.4.6. Äîáàâëåíî ïëàíèðîâàíèå âûçîâîâ ïî CRON. Äîáàâëåíà ôóíêöèÿ ïåðåïîäêëþ÷åíèÿ äëÿ "Industrial Ethernet" ñîåäèíåíèé. Íåêîòîðûå ðàñøèðåíèÿ.
- DAQ.System (1.7.5) — Ñòàáèëèçàöèÿ. Äîáàâëåíî ïëàíèðîâàíèå âûçîâîâ ïî CRON.
- Transport.SSL (1.0.0) — Ñòàáèëèçàöèÿ. Íåêîòîðûå óëó÷øåíèÿ.
- Transport.Serial (0.7.3) — Ñòàáèëèçàöèÿ.
- Transport.Sockets (1.5.0) — Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ.
- Protocol.HTTP (1.6.0) — Äîáàâëåíà ïîääåðæêà ïîëüçîâàòåëüñêèõ øàáëîíîâ äëÿ âíóòðåííåãî ñîäåðæèìîãî ìîäóëÿ. Äîáàâëåíà ãåíåðàöèÿ ñîîáùåíèé àóòåíòèôèêàöèè ïîëüçîâàòåëåé. Äîáàâëåíà ïîääåðæêà âñåõ îñíîâíûõ âàðèàíòîâ çàâåðøåíèÿ ñòðîêè ïðè ðàçáîðå HTTP-çàïðîñà.
- Protocol.ModBus (0.6.3) — Ñòàáèëèçàöèÿ. Íåêîòîðûå óëó÷øåíèÿ.
- Protocol.OPC_UA (0.6.2) — Ñòàáèëèçàöèÿ.
- Protocol.SelfSystem (0.9.5) — Ñòàáèëèçàöèÿ.
- Protocol.UserProtocol (0.6.2) — Ñòàáèëèçàöèÿ.
- Special.FLibComplex1 (1.1.0) — Äîáàâëåí ïðÿìîé, äèíàìè÷åñêèé âûçîâ áèáëèîòå÷íûõ ôóíêöèé.
- Special.FLibMath (0.6.0) — Äîáàâëåí ïðÿìîé, äèíàìè÷åñêèé âûçîâ áèáëèîòå÷íûõ ôóíêöèé.
- Special.FLibSYS (1.0.0) — Äîáàâëåí ïðÿìîé, äèíàìè÷åñêèé âûçîâ áèáëèîòå÷íûõ ôóíêöèé.
- UI.QTCfg (2.1.0) — Ñòàáèëèçàöèÿ. Çíà÷èòåëüíûå ðàñøèðåíèÿ è óëó÷øåíèÿ. Ðåàëèçàöèÿ ðÿä ôóíêöèé äëÿ ïîâûøåíèÿ óäîáñòâà.
- UI.QTStarter (1.6.2) — Ñòàáèëèçàöèÿ. Øðèôò ñîîáùåíèå â "ñïëåøå" çàôèêñèðîâàí â ðàçìåðå 10 ïèêñåëîâ, äëÿ îáåñïå÷åíèÿ åäèíîîáðàçíîãî îòîáðàæåíèÿ.
- UI.VCAEngine (1.2.0) — Ñòàáèëèçàöèÿ. Çíà÷èòåëüíûå ðàñøèðåíèÿ è óëó÷øåíèÿ.
- UI.Vision (1.2.0) — Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ. Çíà÷èòåëüíûå ðàñøèðåíèÿ è óëó÷øåíèÿ.
- UI.WebCfg (1.5.6) — Ñòàáèëèçàöèÿ.
- UI.WebCfgD (0.8.0) — Ñòàáèëèçàöèÿ. Çíà÷èòåëüíûå ðàñøèðåíèÿ è óëó÷øåíèÿ.
- UI.WebUser (0.6.2) — Ñòàáèëèçàöèÿ.
- UI.WebVision (1.0.0) — Çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ. Çíà÷èòåëüíûå ðàñøèðåíèÿ è óëó÷øåíèÿ.
1 Ðåàëèçàöèÿ ïëàíîâûõ çàäà÷
 ñîîòâåòñòâèè ñ ïëàíîì ðåëèçà áûëè âûïîëíåíû ñëåäóþùèå çàäà÷è:
- Ðåàëèçàöèÿ ìåõàíèçìà îòêàòîâ èçìåíåíèé ðåäàêòèðîâàíèÿ â Vision. —  ðàìêàõ îêíà âèçóàëüíîãî ðåäàêòèðîâàíèÿ âèäæåòîâ ðåàëèçîâàí ìíîãîóðîâíåâûé ìåõàíèçì îòêàòà èçìåíåíèé äëÿ âñåõ îñíîâíûõ îïåðàöèé: âèçóàëüíîå èçìåíåíèå ãåîìåòðèè, èçìåíåíèå çíà÷åíèÿ àòðèáóòà âèäæåòà, äîáàâëåíèå/óäàëåíèå âèäæåòà, êîïèðîâàíèå âèäæåòà è ðåäàêòèðîâàíèå âèäæåòîâ íà îñíîâå ïðèìèòèâà "ElFigure".
- Àäàïòàöèÿ ñèñòåìû OpenSCADA äëÿ ðàáîòû íà àïïàðàòíîé ïëàòôîðìå ARM. —  äîïîëíåíèè ê ïåðâè÷íîé àäàïòàöèè, â ïðîøëîì ðåëèçå, äëÿ ïëàíøåòà N800 (http://wiki.oscada.org/Works/Tests/ARM ) áûëà âûïîëíåíà ñáîðêà è àäàïòàöèÿ OpenSCADA äëÿ ñëîæíîãî (î÷åíü ñòàðîãî) ïðîãðàìíîãî îêðóæåíèÿ êîíòðîëëåðà LP-5451, à òàê-æå ñáîðêà äëÿ êîíòðîëëåðà
SMH2Gi è ñìàðòôîíîâ ôèðìà Nokia: N900, N950, N9.  ðàìêàõ ñáîðêè è àäàïòàöèè íà ðàçëè÷íûå ìîáèëüíûå óñòðîéñòâà áûëè âûïîëíåíû ñëåäóþùèå çàäà÷è:
- DAQ.ICP_DAS: Äîáàâëåíà áèáëèîòåêà API "ICP DAS" libi8k.a äëÿ àðõèòåêòóðû ARM è âêëþ÷åíà âîçìîæíîñòü ñáîðêè ìîäóëÿ äëÿ ARM.
- SYS, DAQ.OPC_UA: Äîáàâëåíû ñèñòåìíûå ôóíêöèè floatLE(), floatLErev(), doubleLE(), doubleLErev() äëÿ ïðåîáðàçîâàíèÿ ôîðìàòà õðàíåíèÿ âåùåñòâåííîãî ÷èñëà íà ðàçëè÷íûõ àðõèòåêòóðàõ.
- SYS: Âûïîëíåíà àäàïòàöèÿ äëÿ ñáîðêè ñ GLibC âåðñèè ìåíüøå 2.5 (2.3.2).
- Archive.FSArch:
- Èñïðàâëåíî õðàíåíèå âåùåñòâåííîãî ÷èñëà ôîðìàòà LE â àðõèâå, íà àðõèòåêòóðå ARM.
-  àëãîðèòìå áûñòðîãî ïîäñ÷¸òà êîëè÷åñòâà áèòîâ èñïîëüçîâàíî ôóíêöèþ íåâûðàâíåííîãî ÷òåíèÿ TSYS::getUnalign32().
- Ðàçìåð ïîëÿ êîäèðîâêè â ïëîñêîì àðõèâå ñîîáùåíèÿ ðàñøèðåí ñ 9 äî 99 ñèìâîëîâ.
2 Îïòèìèçàöèÿ, ïîâûøåíèå ñòàáèëüíîñòè, óñòîé÷èâîñòè è ïðîèçâîäèòåëüíîñòè ñèñòåìû
 ïðîöåññå ðàáîò íàä äàííîé âåðñèåé, à òàêæå å¸ ïðàêòè÷åñêîé àäàïòàöèè, áûëî îáíàðóæåíî è èñïðàâëåíî â îáùåé ñëîæíîñòè îêîëî 170 îøèáîê. Òàê-æå áûëà ïðîäîëæåíà ðàáîòà ïî ÷èñòêå êîäà îò ïðåäóïðåæäàþùèõ ñîîáùåíèé êîìïèëÿòîðà, ñ ôëàãîì "-Wall".
Ïåðå÷èñëèì íàèáîëåå ñóùåñòâåííûå îøèáêè, èñïðàâëåíèå êîòîðûõ çíà÷èòåëüíî îòðàçèëîñü íà ïîâûøåíèè ñòàáèëüíîñòè:
- SYS:
- Èñïðàâëåíû âíåïëàíîâûå âûçîâû ïî ðàñïèñàíèþ, ñâÿçàííûå ñ ðàññèíõðîíèçàöèåé çíà÷åíèé ôóíêöèé time() è clock_gettime(CLOCK_REALTIME,&sp_tm).
- Èñïðàâëåíà ïðîâåðêà è îæèäàíèå ïîòîêîâ íà äîñòóïíîñòü ïðè ïåðåêðûòèè ñ îñòàíîâêîé ïðåäûäóùåãî, îäíîèì¸ííîãî ïîòîêà.
- Îòêëþ÷åíî îæèäàíèå èíèöèàëèçàöèè äëÿ îòñîåäèíÿåìûõ çàäà÷ ñ öåëüþ ïðåäîòâðàùåíèÿ çàâèñàíèÿ íà îæèäàíèè áûñòðî çàêðûâàåìûõ çàäà÷.
- Èñïðàâëåíà ðàáîòà ôóíêöèé íåâûðàâíåííîãî ÷òåíèÿ getUnalign*() íà ARM. Ïðîáëåìà îáíàðóæåíà íà PXA270.
- Archive.FSArch:
- Èñïðàâëåíî ÷òåíèå äàííûõ èç áóôåðà àðõèâà â ñîîòâåòñòâèè ñ ðàçìåðîì áóôåðà â àëãîðèòìå áûñòðîãî âû÷èñëåíèÿ êîëè÷åñòâà áèòîâ.
- Èñïðàâëåíî ïîìåùåíèå ñìåùåíèÿ â êåø èç àëãîðèòìà áûñòðîãî âû÷èñëåíèÿ êîëè÷åñòâà áèòîâ.
- Èñïðàâëåíà íåêîððåêòíàÿ îáðàáîòêà êîíöà íåâûðàâíåííûõ áëîêîâ áûñòðîãî àëãîðèòìà ïîäñ÷¸òà êîëè÷åñòâà áèòîâ.
- Äîáàâëåí ìîíîïîëüíûé ðåñóðñ ê âûçîâó ôóíêöèè calcVlOff() ñ öåëüþ ïðåäîòâðàùåíèÿ íåêîððåêòíîé ðàáîòû ñ êåøåì.
- Transport, DAQ.AMRDevs, DAQ.DCON, DAQ.ICP_DAS, DAQ.ModBus, DAQ.OPC_UA, Protocol.HTTP: Èñïðàâëåíî èñïîëüçîâàíèå ôóíêöèè TTransportOut::messIO() ïðè çàïðîñå õâîñòà è ïîëó÷åíèè íóëåâîãî îòâåòà.
- DAQ.ModBus, Transport.Serial, UI.WebCfg, UI.WebCfgD, UI.WebUser, UI.WebVision: Èñïðàâëåíî îøèáî÷íîå èñïîëüçîâàíèå ñèìâîëà çàâåðøåíèÿ ñòðîêè '\n' äëÿ ìíîæåñòâà ïðîãðàììíûõ ïëàòôîðì UNIX, MAC, DOS/Windows, ïóò¸ì çàìåíû íà"\x0A" .
- Transport.*: Èñïðàâëåíî èñïîëüçîâàíèå áåççíàêîâîãî òèïà â âîçâðàòå ôóíêöèé read() è write(). Äîáàâëåíû ðåñóðñû ê ñ÷¸ò÷èêàì âõîäíûõ/âûõîäíûõ çàïðîñîâ.
- Transport.Sockets: Èñïðàâëåí ïðîïóñê èíèöèàëèçàöèè ðàçìåðà âîçâðàòíîãî çíà÷åíèÿ äëÿ ôóíêöèè getsockopt().
- DAQ.JavaLikeCalc: Èñïðàâëåíî ïàäåíèå ôóíêöèè replace(), îáúåêòà "RegExp".
- DAQ.Siemens: Èñïðàâëåíî ïîëó÷åíèå è çàïèñü çíà÷åíèé âåùåñòâåííûõ òèïîâ. Èñïðàâëåíî ïåðåïîäêëþ÷åíèå â ñëó÷àå îøèáêè. Èñïðàâëåíî èñïîëüçîâàíèå ñâîéñòâà ðàçìåðà öåëîãî, âåùåñòâåííîãî è ñòðîêîâîãî òèïîâ. Äîáàâëåíà î÷èñòêà ñâÿçåé ïàðàìåòðà ïðè åãî âûêëþ÷åíèè.
- UI.Vision, UI.WebVision: Èñïðàâëåí äîñòóï çà ãðàíèöó âåêòîðà ïðè îòðèñîâêå ãðàôèêîâ ïðèìèòèâà "FormEls".
- UI.VCAEngine: Ïðåäîòâðàùåíà âîçìîæíîñòü ïîòåðè èçìåíåíèé â ñåðâåðå âèçóàëèçàöèè ïðè îòîáðàæåíèè â âèçóàëèçàòîðàõ ïóò¸ì ïðåäâàðèòåëüíîãî ñîõðàíåíèÿ çíà÷åíèÿ òàêòîâîãî ñ÷¸ò÷èêà â ñåðâèñíîì çàïðîñå "openList".
- UI.WebVision:
- Èñïðàâëåíî îòêðûòèå è çàìåíà êîðíåâîé ñòðàíèöû.
- Èñïðàâëåíà îáðàáîòêà ìàñøòàáà âëîæåííûõ ñòðàíèö, ñ ó÷¸òîì ìàñøòàáà êîðíåâîé.
Îïòèìèçàöèÿ è ïîâûøåíèå ïðîèçâîäèòåëüíîñòè:
- SYS: Ìåõàíèçì ðåñóðñà îáúåêòà "ResString" çàìåí¸í ñ RW-áëîêèðîâîê íà ìþòåêñ, ñ öåëüþ ïîâûñèòü ïðîèçâîäèòåëüíîñòü è ñîêðàòèòü ïîòðåáëåíèå ïàìÿòè.
- Archive.FSArch: Îáðàáîòêà èíäåêñíîé òàáëèöû àðõèâà çíà÷åíèé çíà÷èòåëüíî óñêîðåíà ïîñðåäñòâîì èñïîëüçîâàíèÿ áûñòðîãî àëãîðèòìà âû÷èñëåíèÿ êîëè÷åñòâà áèòîâ â 32-ðàçðÿäíîì öåëîì.
- UI.WebCfgD: Èñïîëüçîâàí ãðóïïîâîé çàïðîñ ñîäåðæèìîãî ñòðàíèö äëÿ çíà÷èòåëüíîãî ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè íà ìåäëåííûõ è âûñîêîëàòåíòíûõ êàíàëàõ.
- UI.Vision: Ïîâûøåíà ïðîèçâîäèòåëüíîñòü îòðèñîâêè çàïîëíåíèé ïðèìèòèâà "ElFigure".
- UI.VCAEngine:
- Âûïîëíåíû ìåðîïðèÿòèÿ ïî ïîâûøåíèþ ñêîðîñòè çàïóñêà ñåàíñà ïðîåêòà â ÷èñëå: ïðîïóùåíà èíèöèàëèçàöèÿ áàçîâûõ àòðèáóòîâ ââèäó èõ ïîñëåäóþùåãî íàñëåäîâàíèÿ.
- Óäàëåí ïåðåâîä íåêîòîðûõ ñîîáùåíèé âðåìåíè èñïîëíåíèÿ ñåàíñà.
- Ðåàëèçîâàíî âêëþ÷åíèå òîëüêî íóæíûõ ñòðàíèö ïðè çàïóñêå ñåàíñà. Îñòàëüíûå ñòðàíèöû èñïîëíÿþùåãîñÿ ñåàíñà âêëþ÷àþòñÿ ïî ìåðå îáðàùåíèÿ ê íèì. Ýòî ïîçâîëèëî çíà÷èòåëüíî ïîâûñèòü ñêîðîñòü çàïóñêà ñåàíñà, à òàêæå óìåíüøèòü çàâèñèìîñòü ñêîðîñòè çàïóñêà îò ñëîæíîñòè ïðîåêòà âèçóàëèçàöèè.
- Ðåàëèçàöèÿ àðõèâíîãî ðåæèìà ïðèìèòèâà "Äîêóìåíò" èçìåíåíà íà ïðÿìóþ ðàáîòó ñ ÁÄ, ÷òî ïîçâîëèëî ðàñøèðèòü ãëóáèíó àðõèâà äî 1000000 äîêóìåíòîâ è áåç óùåðáà äëÿ îïåðàòèâíîé ïàìÿòè.
3 Óñîâåðøåíñòâîâàíèå è ñòàáèëèçàöèÿ ãðàôè÷åñêîé ïîäñèñòåìû
Çàìåòíàÿ ðàáîòà áûëà âûïîëíåíà â ðàìêàõ ãðàôè÷åñêîé ïîäñèñòåìû, à èìåííî â ìîäóëÿõ äâèæêà ÑÂÓ UI.VCAEngine, âèçóàëèçàòîðîâ UI.Vision è UI.WebVision, à òàêæå êîíôèãóðàòîðàõ. Âíåñ¸ííûå èçìåíåíèÿ áûëè íàïðàâëåííû íà ñòàáèëèçàöèþ, îïòèìèçàöèþ ïîòðåáëåíèÿ ïàìÿòè è óëó÷øåíèå ïîëüçîâàòåëüñêèõ ñâîéñòâ.
Óëó÷øåíèÿ ãðàôè÷åñêîé ïîäñèñòåìû:
- UI.VCAEngine, UI.Vision, UI.WebVision:
- Èñïðàâëåíî îáðàùåíèå çà ãðàíèöû ìàññèâà (âåêòîðà) ïðè ïîñòðîåíèè òðåíäîâ, ïðèìèòèâà "Äèàãðàììà".
- Äîáàâëåíî è ðåàëèçîâàíî ñâîéñòâî øèðèíû ãðàôèêà, ïðèìèòèâà "Äèàãðàììà".
- Äîáàâëåíà ïåðèîäè÷åñêàÿ ïðîâåðêà äåðåâà âèäæåòîâ ñòðàíèöû ñ öåëüþ îáíàðóæåíèÿ ôàêòà óäàëåíèÿ âèäæåòîâ, ïóò¸ì çàïðîñà ïîëíîãî ïåðå÷íÿ âèäæåòîâ.
- Ðåàëèçîâàíî îòîáðàæåíèå ãðàôèêîâ, ãðóïïû ãðàôèêîâ ïðèìèòèâà "Äèàãðàììà" â øêàëå çíà÷åíèÿ â ñëó÷àå îòëè÷èÿ øêàë âñåõ ãðàôèêîâ íå áîëåå ÷åì íà 20%.
- Äîáàâëåíà è ðåàëèçîâàíà âîçìîæíîñòü âûáîðà ðåæèìà ïîäòâåðæäåíèÿ äëÿ ýëåìåíòîâ ðåäàêòèðîâàíèÿ ñòðîêè è òåêñòà ïðèìèòèâà "Ýëåìåíòû ôîðìû".
- Èñïðàâëåíà âîçìîæíîñòü ïîòåðè íåêîòîðûõ èçìåíåíèé â ìîäåëè, ïðè îòîáðàæåíèè èõ â âèçóàëèçàòîðàõ.
- Äîáàâëåíî è ðåàëèçîâàíî ñâîéñòâî êîëè÷åñòâà çíà÷åíèé íà ïèêñåë â ãðàôèêàõ ïðèìèòèâà "Äèàãðàììà", ñ öåëüþ óïðàâëåíèÿ äåòàëèçàöèåé ýêñïîðòà â CSV è ò.ä.
- Ðåàëèçîâàíà ëîãàðèôìè÷åñêàÿ øêàëà çíà÷åíèé äëÿ ãðàôèêîâ ïðèìèòèâà "Äèàãðàììà".
- UI.VCAEngine:
- Ðåàëèçîâàíî âêëþ÷åíèå ñòðàíèö ñåàíñà ïðîåêòà ïî íàäîáíîñòè, ñ öåëüþ ïîâûøåíèÿ ñêîðîñòè çàïóñêà è îïòèìèçàöèè èñïîëüçîâàíèÿ îïåðàòèâíîé ïàìÿòè.
- Ïðèìèòèâ "Äîêóìåíò" ïåðåäåëàí äëÿ âåäåíèÿ àðõèâîâ, àðõèâíîãî ðåæèìà, ïîëíîñòüþ â ÁÄ, à òàêæå äîáàâëåíà ôóíêöèÿ ïîëüçîâàòåëüñêîãî API äëÿ äîñòóïà ê ýëåìåíòàì àðõèâà.
- Äîáàâëåíà ïåðèîäè÷åñêàÿ (30 ìèíóò) ïðîâåðêà è çàêðûòèå óæå íåèñïîëüçîâàííûõ (ïîòåðÿííûõ) ñåàíñîâ ïðîåêòîâ.
- Óäàë¸í ïðåäûäóùèé (ïðîòèâîðå÷èâûé) ìåõàíèçì îòêàòà óäàëåíèÿ âëîæåííûõ âèäæåòîâ è çàìåí¸í ïîëíîöåííûì ìåõàíèçìîì îòêàòîâ â âèçóàëèçàòîðå UI.Vision.
- Âûïîëíåíà îïòèìèçàöèÿ èñïîëüçîâàíèÿ ïàìÿòè ýëåìåíòàìè ñåàíñà äî 20%.
- Óäàëåíà ïîääåðæêà ïåðâîé, óñòàðåâøåé, âåðñèè ñòðóêòóðû ÁÄ ñðåäû âèçóàëèçàöèè.
- Äîáàâëåíî îãðàíè÷åíèå íà âðåìÿ ãåíåðàöèè äîêóìåíòîâ â ïðèìèòèâå "Äîêóìåíò" â 5 ñåêóíä.
- Äîáàâëåíà ïîääåðæêà òèïà àòðèáóòîâ "Îáúåêò" è "Òåêñò".
- Îòêëþ÷åíà ïðèíóäèòåëüíàÿ èíèöèàëèçàöèÿ íîâûõ ïîëüçîâàòåëüñêèõ àòðèáóòîâ â EVAL.
- Ïðèìèòèâ "Äîêóìåíò" ïåðåêëþ÷åí â ðåæèì ïîëíîãî ðàçáîðà XML ñ öåëüþ ïîëíîöåííîãî ñîõðàíåíèÿ ðàçìåòêè XHTML.
- Äîáàâëåíî ñâîéñòâî ñîõðàíåíèÿ ñîîòíîøåíèÿ ñòîðîí ãëàâíîé ñòðàíèöû ïðè ðàçâîðà÷èâàíèè ãëàâíîãî îêíà èñïîëíåíèÿ ñåàíñà ïðîåêòà.
- Äîáàâëåíà èíäèêàöèÿ ñîñòîÿíèÿ êîððåêòíîñòè ññûëîê â âèäå "(+)" â êîíöå.
- UI.Vision:
- Äîáàâëåíà ðåàëèçàöèÿ ïîëíîöåííûõ îòêàòîâ è ïîâòîðîâ èçìåíåíèé ïðè âèçóàëüíîì ðåäàêòèðîâàíèè âèäæåòîâ.
- Óëó÷øåíèÿ â îòçûâ÷èâîñòè è îáíîâëåíèè èçìåíåíèé â ñåàíñå èñïîëíåíèÿ ïðîåêòà: îïòèìèçèðîâàíà ïðîèçâîäèòåëüíîñòü îòðèñîâêè ïðèìèòèâà "ElFigure", îáðàáîòêà èçìåíåíèÿ óðîâíÿ âèäæåòà "geomZ".
- Äîáàâëåí ýêñïîðò â CSV ôîðìàò èç ïðèìèòèâîâ "Äèàãðàììà" è "Äîêóìåíò".
- Ââåäåíî îãðàíè÷åíèå íà ðàçìåð äèàëîãîâ ââîäà è âêëþ÷åíî àäàïòèâíîå îïðåäåëåíèå èõ ðàçìåðîâ ïî ñîäåðæèìîìó.
- Ðåàëèçîâàíî ñâîéñòâî ñîõðàíåíèÿ ñîîòíîøåíèÿ ñòîðîí ãëàâíîé ñòðàíèöû ïðè ðàçâîðà÷èâàíèè ãëàâíîãî îêíà èñïîëíåíèÿ ñåàíñà ïðîåêòà.
- Ïîëíîñòüþ ïåðåïèñàí ìåõàíèçì èñïîëíåíèÿ ïðàâèë ïîäñâåòêè ñèíòàêñèñà.
- Äîáàâëåíî ñîçäàíèå íîâîãî ñåàíñà ïîñëå âîññòàíîâëåíèÿ óäàë¸ííîãî ïîäêëþ÷åíèÿ è îòñóòñòâèè ïðåäûäóùåãî ñåàíñà.
- Ôîí îêíà ðåäàêòèðóåìîãî âèäæåòà óñòàíîâëåí â øàáëîí QT::Dense7Pattern ñ öåëüþ óñòðàíåíèÿ âîçìîæíîãî ïåðåêðûòèÿ ïî öâåòó.
- Äîáàâëåíà îáðàáîòêà ñîáûòèé âûáîðà âèäæåòà ïðè íàæàòèè â îáëàñòè ñêðîëèíãà, íî çà ïðåäåëàìè âèäæåòà.
- Ïðèìèòèâ "Ýëåìåíòàðíàÿ ôèãóðà":
- Âûïîëíåíà ðåîðãàíèçàöèÿ îïåðàöèé èç äèàëîãà ñâîéñòâ è êîíòåêñòíîãî ìåíþ ñ äèíàìè÷åñêèìè è ñòàòè÷åñêèìè ñâîéñòâàìè.
-  ïðîöåññå äîáàâëåíèÿ ôèãóðû ðåàëèçîâàíà å¸ îòðèñîâêà ïðè ïåðåìåùåíèè êóðñîðà ìûøè.
- UI.WebVision:
- Èñïðàâëåíà îáðàáîòêà ìàñøòàáà âëîæåííûõ êàäðîâ, à òàêæå ïåðåñìîòðåí ìåõàíèçì ôîðìèðîâàíèÿ-âêëþ÷åíèÿ ñêðîëà.
- Äîáàâëåíà ôóíêöèÿ ïðåîáðàçîâàíèÿ èçîáðàæåíèé íà ñòîðîíå ñåðâåðà. Ôóíêöèþ ïðåîáðàçîâàíèÿ èñïîëüçîâàíî äëÿ èçìåíåíèÿ ðàçìåðà è îáåñöâå÷èâàíèÿ èçîáðàæåíèé íåàêòèâíûõ êíîïîê.
- Ðåàëèçîâàíî îòêðûòèå ìàëûõ îêîí âëîæåííûõ ñòðàíèö â âèäå DIV-áëîêîâ, ÷òî ðåøàåò ïðîáëåìó áëîêèðîâêè è ïðîäîëæèòåëüíîãî îòêðûòèÿ âíåøíèõ îêîí ìíîãèìè áðàóçåðàìè.
- Ãëàâíàÿ ñòðàíèöà èíòåðôåéñà îòöåíòðîâàíà â îêíå áðàóçåðà.
- UI.QTCfg:
- Äîáàâëåíî îãðàíè÷åíèå íà âûñîòó ñòðîê òàáëèö â ïîëîâèíó âûñîòû òàáëèöû.
- Ââåäåíî îãðàíè÷åíèå íà ðàçìåð äèàëîãà ââîäà è âêëþ÷åíî àäàïòèâíîå îïðåäåëåíèå åãî ðàçìåðà ïî ñîäåðæèìîìó.
- Ó ýëåìåíòîâ äîñòóïíûõ äëÿ èçìåíåíèÿ âûñîòû ïîëüçîâàòåëåì, äëÿ îáåñïå÷åíèÿ ðàáîòû âåçäå, óñòàíîâëåí ôèêñèðîâàííûé ñòèëü "StyledPanel".
- Äîáàâëåíà ôóíêöèÿ ïîëíîòåêñòîâîãî ðåäàêòèðîâàíèÿ òåêñòà ÿ÷ååê òàáëèö.
- Äâèæîê âîñïðîèçâåäåíèÿ ïðàâèë ïîäñâåòêè ñèíòàêñèñà ïîëíîñòüþ ïåðåïèñàí äëÿ óïðîùåíèÿ è ïðåäîòâðàùåíèÿ ñêðûòûõ îøèáîê.
- UI.WebCfgD:
- Óìåíüøåíà ÿðêîñòü îáåñöâå÷åííûõ-ïàññèâíûõ êíîïîê.
- Âñå îêíà äèàëîãîâ ðåàëèçîâàíû â âèäå DIV-áëîêîâ ñ öåëüþ èñêëþ÷èòü ïðîáëåìû è çàäåðæêè â îòêðûòèè âíåøíèõ îêîí ðàçëè÷íûìè áðàóçåðàìè.
- Èñïîëüçîâàí ãðóïïîâîé çàïðîñ ñîäåðæèìîãî ñòðàíèö äëÿ çíà÷èòåëüíîãî ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè íà ìåäëåííûõ è âûñîêîëàòåíòíûõ êàíàëàõ.
- Äîáàâëåíà èíôîðìàöèÿ â ñòðîêå ñòàòóñà î òåêóùåì ïîëüçîâàòåëå è âîçìîæíîñòü åãî ñìåíû.
- Âûïîëíåíà àäàïòàöèÿ äëÿ ðàáîòû â ïîëíóþ øèðèíó ýêðàíà.
4 Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ
Áûëî ïðîäîëæåíî ôîðìèðîâàíèå îáúåêòíîãî API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ, êîòîðîå ïðåäóñìàòðèâàåò èíòåãðàöèþ ïîëüçîâàòåëüñêèõ ôóíêöèé â äåðåâî îáúåêòîâ ñèñòåìû OpenSCADA. Êðîìå ýòîãî áûë âíåñåí ðÿä èçìåíåíèé â ñóùåñòâóþùèå áèáëèîòåêè ôóíêöèé ïîëüçîâàòåëüñêîãî API.
 ÷àñòíîñòè áûëè îñóùåñòâëåíû ñëåäóþùèå èçìåíåíèÿ:
- SYS:
- Äîáàâëåíû ôóíêöèè ðàáîòû ñ ôàéëàìè: SYS.fileRead() è SYS.fileWrite().
- Ê API îáúåêòà XMLNodeObj äîáàâëåíà ôóíêöèÿ getElementBy() äëÿ ïîèñêà âëîæåííûõ óçëîâ ïî çíà÷åíèþ àòðèáóòà.
- Äîáàâëåíà ôóíêöèÿ îñóùåñòâëåíèÿ êîäèðîâàíèÿ òåêñòà ìåæäó ðàçëè÷íûìè ñèìâîëüíûìè êîäèðîâêàìè.
- Äîáàâëåíà ôóíêöèÿ NodeObj.nodePath().
- TConfig, TBD, TTransportIn, TTransportOut, TUser, TGroup, TPrmTmplLib, TPrmTempl, TParamContr, TController, TVArchive, TVArchivator, TMArchivator: Äîáàâëåíû ôóíêöèè ïîëüçîâàòåëüñêîãî API cfg() è cfgSet() äëÿ äîñòóïà ê êîíôèãóðàöèè îáúåêòîâ (õðàíÿùåéñÿ â ÁÄ).
- DAQ:
- Äîáàâëåíà ôóíêöèÿ TController::alarmSet() äëÿ ãåíåðàöèè òèïîâûõ íàðóøåíèé â îáúåêòå êîíòðîëëåðà ìîäóëåé ïîäñèñòåìû "Ñáîð äàííûõ".
- Äîáàâëåíà ôóíêöèÿ SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"].arch() äëÿ ïðÿìîãî îáðàùåíèÿ ê îáúåêòó àðõèâà, ñâÿçàííîãî ñ àòðèáóòîì ïàðàìåòðà.
- Äîáàâëåíû ôóíêöèè ïîëüçîâàòåëüñêîãî API enable() è start() äëÿ ïðÿìîãî êîíòðîëÿ çà ñîñòîÿíèåì îáúåêòà êîíòðîëëåðà.
- DAQ.JavaLikeCalc, Special.FLibComplex1, Special.FLibMath, Special.FLibSYS: Äîáàâëåíà ôóíêöèÿ äèíàìè÷åñêîãî âûçîâà áèáëèîòå÷íûõ ôóíêöèé SYS.DAQ.JavaLikeCalc["lib_{Lib}"].funcId(prms, ...).
- Archive: Äîáàâëåíû ôóíêöèè ïîëüçîâàòåëüñêîãî API status(), end() è begin() äëÿ äîñòóïà ê ñîñòîÿíèþ è ñâîéñòâàì îáúåêòà àðõèâàòîðà ñîîáùåíèé.
- DAQ.JavaLikeCalc:
- Äëÿ òèïà äàííûõ "null" äîáàâëåíà ôóíêöèÿ isEVal(), êîòîðàÿ âñåãäà âîçâðàùàåò "true".
- Ê îáúåêòàì áèáëèîòå÷íûõ ôóíêöèé äîáàâëåíà ôóíêöèÿ ïîëüçîâàòåëüñêîãî API call().
- DAQ.ModBus: Äîáàâëåíà ôóíêöèÿ ïîëüçîâàòåëüñêîãî API messIO() â îáúåêò êîíòðîëëåðà "ModBus" ñ öåëüþ ïðåäîñòàâëåíèÿ âîçìîæíîñòè îòïðàâêè íåñòàíäàðòíûõ ModBus-çàïðîñîâ ïðÿìî èç øàáëîíà ïàðàìåòðà.
5 Îáùåñèñòåìíûå ðàñøèðåíèÿ
 îáùåñèñòåìíîå API ñèñòåìû OpenSCADA áûëè âíåñåíû çíà÷èòåëüíûå èçìåíåíèÿ è ðàñøèðåíèÿ ñ öåëüþ îáùåé ñòàáèëèçàöèè è ðàñøèðåíèÿ:
- SYS:
- Îáúåêò õðàíåíèÿ ñòðîêè ñ ðåñóðñîì "ResString" çíà÷èòåëüíî ðàñøèðåí íà ïðåäìåò ïðîçðà÷íîãî ïðåîáðàçîâàíèÿ èç/â òèï std::string.
- Äîáàâëåíà âîçìîæíîñòü ñîõðàíåíèÿ â êîíôèãóðàöèîííûé ôàéë:
- Äîáàâëåí ïðåôèêñ ÁÄ "<cfg>" äëÿ ïðåäñòàâëåíèÿ êîíôèãóðàöèîííîãî ôàéëà â ðîëè èñòî÷íèêà çàãðóçêè/ñîõðàíåíèÿ êîíôèãóðàöèè.
- Ôóíêöèè TDBS::dataSeek() è TDBS::dataDel() îáíîâëåíû äëÿ ñòðîãîé îáðàáîòêè êîíôèãóðàöèîííîãî ôàéëà.
- Ôóíêöèÿ chkSelDB() àäàïòèðîâàíà äëÿ ïîääåðæêè çàïèñè â êîíôèãóðàöèîííûé ôàéë.
- Äîáàâëåíî ñîõðàíåíèå áîëüøèõ è ìíîãîñòðî÷íûõ çíà÷åíèé ïîëåé êîíôèãóðàöèè â òåêñòîâîì ïîëå îòäåëüíîãî òåãà êîíôèãóðàöèîííîãî ôàéëà.
- Òèï "long long", îáû÷íî 64-ðÿçðÿäíîå öåëîå çàìåí¸í âåçäå íà áîëåå îïðåäåë¸ííûé "int64_t" íà âñåõ àðõèòåêòóðàõ.
- Îáúåêòû ïîòîêîâ OpenSCADA æ¸ñòêî ñëèíêîâàíû ñî ñâîèì ïîòîêîì. Äîáàâëåíà ñòàòèñòèêà çàãðóçêè è âûçîâîâ ïåðèîäè÷íûõ ïîòîêîâ.
- Ðåàëèçîâàíà âîçìîæíîñòü ïðîâåðêè çàãðóæàåìûõ îáúåêòîâ íà èõ îòñóòñòâèå â ÁÄ è óäàëåíèå. Ôóíêöèÿ ïðîâåðêè àêòèâèðóåòñÿ òîëüêî â ñëó÷àå ïðÿìîé çàãðóçêè èç ÁÄ.
- Äîáàâëåíà ñèñòåìíàÿ ïåðèîäè÷åñêàÿ ôóíêöèÿ perSYSCall() âûçîâà îáúåêòîâ ïîäñèñòåì è èõ ìîäóëåé. Èñïîëüçóåòñÿ äëÿ ñåðâèñíûõ öåëåé íåíàãðóæåííûõ è ðåäêèõ çàäà÷ ìîäóëåé è ïîäñèñòåì.
- Ôóíêöèÿ òåñòèðîâàíèÿ âûðàæåíèÿ ïî øàáëîíó ïåðåìåùåíà â îáúåêò TRegExp.
- SYS.XMLNode:
- Ïîëíîñòüþ óäàë¸í êîä èñïîëüçîâàíèÿ XML-ïàðñåðà "Expat".
- Äîáàâëåíà âîçìîæíîñòü çàãðóçêè òåêñòîâûõ ÷àñòåé òåãà â îòäåëüíûå-ñïåöèàëüíûå òåãè, â ïîëíîì ðåæèìå. Ïðåäíàçíà÷åíî äëÿ ïîëíîãî ñîõðàíåíèÿ êîíôèãóðàöèè òåãà.
- Äîáàâëåíà âîçìîæíîñòü çàãðóçêè è ñîõðàíåíèÿ áëîêîâ êîììåíòàðèåâ â îòäåëüíûå-ñïåöèàëüíûå òåãè, â ïîëíîì ðåæèìå.
- DOC:
- Âûïîëíåíà ïðîâåðêà è èñïðàâëåíèå Àíãëèéñêèõ òåêñòîâ â ÿäðå OpenSCADA. Îáíîâëåíû ïåðåâîäû ÿäðà OpenSCADA íà Íåìåöêèé, Ðóññêèé è Óêðàèíñêèé ÿçûêè.
- Âûïîëíåíà ïðîâåðêà è èñïðàâëåíèå Àíãëèéñêèõ òåêñòîâ ìîäóëåé OpenSCADA. Îáíîâëåíû ïåðåâîäû ìîäóëåé OpenSCADA íà Íåìåöêèé, Ðóññêèé è Óêðàèíñêèé ÿçûêè.
- Îáíîâëåíû âñå îñíîâíûå äîêóìåíòû íà äîñòóïíûõ ÿçûêàõ: openscada.pdf, build.pdf, properties.pdf, "OpenSCADA API", "Ïðî OpenSCADA", "Áèáëèîòåêà TechApp", "Quick Start", "WLib Îñíîâíûå", "WLib Ýëåìåíòû ìíåìîñõåì".
- Áàçû äàííûõ áèáëèîòåê: Áèáëèîòåêà îñíîâíûõ âèçóàëüíûõ ýëåìåíòîâ äîïîëíåíà êàäðàìè ðåàëèçàöèè ðåäàêòèðîâàíèÿ è èñïîëíåíèÿ "Ðåöåïòîâ"-"Ïîëüçîâàòåëüñêèõ ïðîãðàìì", à êàäð ãëàâíîé ñòðàíèöû äîïîëíåí ìåõàíèçìîì "ïðîèãðûâàíèÿ" ìîäåëåé òåõíîëîãè÷åñêèõ ïðîöåññîâ (ÒÏ).
- DB: Äîáàâëåíî âðåìåííîå îãðàíè÷åíèå â 5 ñåêóíä è ïîëå óêàçàíèÿ íà÷àëüíîãî ñìåùåíèÿ äëÿ çàïðîñà ñîäåðæèìîãî áîëüøèõ òàáëèö.
- DAQ: Äîáàâëåíà âîçìîæíîñòü âûáîðà òèïà àòðèáóòà øàáëîíà "Îáúåêò". Ïðåäíàçíà÷åíî â ïåðâóþ î÷åðåäü äëÿ õðàíåíèÿ âíóòðåííèõ äàííûõ â îáúåêòå è íå ìîæåò áûòü èñïîëüçîâàíî êàê òèï àòðèáóòà ïàðàìåòðà îáúåêòà êîíòðîëëåðà èñòî÷íèêà äàííûõ.
- TArchives: Äîáàâëåíà âîçìîæíîñòü èñïîëüçîâàíèÿ ðåãóëÿðíûõ âûðàæåíèé ïðè ïîèñêå ïî êàòåãîðèè ïîñðåäñòâîì "/match/"
- Transport: Òèïû ôîðìàòîâ èñõîäÿùèõ çàïðîñîâ ðàñøèðåíû âàðèàíòàìè òåêñòà ñ ðàçíûì çàâåðøåíèåì ñòðîêè: LF, CR, CR/LF.
- DAQ, DAQ.DiamondBoards, DAQ.ModBus, DAQ.LogicLev: Äîáàâëåíà âîçìîæíîñòü ñìåíû òèïà ïàðàìåòðà äëÿ îòêëþ÷åííûõ ïàðàìåòðîâ ìíîãîòèïîâûõ ìîäóëåé ïîäñèñòåìû "Ñáîð äàííûõ".
- DAQ.LogicLev, DAQ.Siemens, DAQ.ModBus:  ñëó÷àå âûïîëíåíèÿ ïî ðàñïèñàíèþ â àòðèáóò "f_frq" çàïèñûâàåòñÿ âðåìÿ ïîñëå ïîñëåäíåãî âû÷èñëåíèÿ â îòðèöàòåëüíîì çíà÷åíèè. Äîáàâëåíû èíèöèàëèçèðóþùèå è îñòàíàâëèâàþùèå âûçîâû ïðè âêëþ÷åíèè/âûêëþ÷åíèè ïàðàìåòðà.
- TArchives, Archive.DBArch, Archive.FSArch: Äîáàâëåíà âðåìåííàÿ ãðàíèöà ïðè çàïðîñå ñîîáùåíèé èç àðõèâà.
- SYS.TConfig, Archives, DAQ, Security, Transports, Archive.*, DAQ.*, Protocol.UserProtocol, Transport.*, UI.VCAEngine, UI.WebUser: Õðàíåíèå ñòðîêîâûõ êîíôèãóðàöèîííûõ ïîëåé ïåðåâåäåíî â îáúåêò ðåñóðñíîé ñòðîêè "ResString".
6 Ïóáëèêàöèÿ ðåøåíèé OpenSCADA
 ïðîöåññå îñóùåñòâëåíèÿ ðàáîò íàä äàííûì ðåëèçîì íà ðàçíûõ êîíôåðåíöèÿõ è âûñòàâêàõ áûëè ïðåäñòàâëåíû ðåøåíèÿ íà îñíîâå ïðîåêòà OpenSCADA:
Çàêëþ÷åíèå
Äàííûì ðåëèçîì ñèñòåìû OpenSCADA ôàêòè÷åñêè çàâåðøåíà ðàáîòà ïî àäàïòàöèè íà àïïàðàòíóþ àðõèòåêòóðó ARM, ÷òî âûðàçèòñÿ â ïðåäîñòàâëåíèè è ïóáëèêàöèè îôèöèàëüíûõ ñáîðîê ðåëèçà 0.7.2 äëÿ ìîáèëüíûõ óñòðîéñòâ.
Õîòÿ âûïóñê äàííîãî ðåëèçà íåñêîëüêî çàïîçäàë è çàòÿíóëñÿ îí âñ¸ æå áûë òùàòåëüíî ïîäãîòîâëåí è ñòàíåò õîðîøåé îñíîâîé äëÿ äîâîäêè êîäîâîé áàçû ïðîåêòà ê ïðåäñòîÿùåìó îòâåòñòâåííîìó ðåëèçó 0.8.0 LTS. Êðîìå ýòîãî äàííûé ðåëèç ìîæíî èñïîëüçîâàòü è äëÿ ïîâñåìåñòíîãî âíåäðåíèÿ è ïðèìåíåíèÿ â îòâåòñòâåííûõ çàäà÷àõ ñ ïîñëåäóþùèì ïëàâíûì ïåðåõîäîì íà 0.8.0 LTS ïîñëå åãî âûõîäà.
Ïîñëåäóþùèå óñèëèÿ ðàçðàáîò÷èêîâ áóäóò íàïðàâëåíû íà çàâåðøåíèÿ ïëàíîâûõ çàäàíèé è ïîäãîòîâêå ê âûïóñêó ðåëèçà OpenSCADA ïðîäîëæèòåëüíîé ïîääåðæêè (LTS) âåðñèè 0.8.0.
Ññûëêè