English version
Óêðà¿íñüêà âåðñ³ÿ
Contents
Ââåäåíèå
Ðåëèç îòêðûòîé SCADA(Supervisory control and data acquisition) ñèñòåìû âåðñèè 0.6.4 ÿâëÿåòñÿ ïëàíîâûì ðåëèçîì âåòêè 0.6.0.  ðàìêàõ ýòîé âåðñèè ïðîäåëàíà ñóùåñòâåííàÿ ðàáîòà ïî ñòàáèëèçàöèè è àäàïòàöèè ê ïðàêòè÷åñêèì çàäà÷àì, à òàêæå ðåàëèçîâàíû çíà÷èòåëüíûå óëó÷øåíèÿ. Äàííàÿ âåðñèÿ ñèñòåìû OpenSCADA ïîçèöèîíèðóåòñÿ êàê îôèöèàëüíàÿ áåòà âåðñèÿ ñòàáèëüíîé âåðñèè 0.7.0 ñèñòåìû OpenSCADA äëÿ ïëàòôîðìû "Linux".
Ýòîò äîêóìåíò ÿâëÿåòñÿ îáðàáîòêîé(êîìïèëÿöèåé) äîêóìåíòà <ChangeLog> ñèñòåìû OpenSCADA âåðñèè 0.6.4, êîòîðûé ïðèçâàí âêðàòöå è íàãëÿäíî îñâåòèòü íîâûå âîçìîæíîñòè è èçìåíåíèÿ ñèñòåìû OpenSCADA. Äîêóìåíò âêëþ÷àåò èíôîðìàöèþ îá èçìåíåíèÿõ âûïîëíåííûõ â ðàìêàõ ñòàáèëèçàöèîííûõ ðåëèçîâ âåðñèè 0.6.3. Äåòàëüíî îçíàêîìèòüñÿ ñî âñåìè èçìåíåíèÿìè â ñèñòåìå OpenSCADA ìîæíî â ôàéëå ChangeLog èç ïàêåòà äèñòðèáóòèâà ñèñòåìû èëè çäåñü: http://wiki.oscada.org.ua/Works/ChangeLog .
Êëþ÷åâûìè îñîáåííîñòÿìè äàííîé âåðñèè ÿâëÿþòñÿ:
Ðåàëèçàöèÿ ïëàíîâûõ çàäà÷.
Îïòèìèçàöèÿ, ïîâûøåíèå ñòàáèëüíîñòè, óñòîé÷èâîñòè è ïðîèçâîäèòåëüíîñòè ñèñòåìû.
Óñîâåðøåíñòâîâàíèå è ñòàáèëèçàöèÿ ÑÂÓ.
Ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé ÿçûê è èíòåðôåéñà ïðîãðàììû íå Íåìåöêèé. Ìíîãîÿçûêîâàÿ ÁÄ.
Îáùåñèñòåìíûå ðàñøèðåíèÿ.
 ïðîöåññå ðàáîò íàä ðåëèçîì áûëè âíåñåíû ñëåäóþùèå èçìåíåíèÿ â ìîäóëè OpenSCADA:
Archive.FSArch -- 1.0.1 -> 1.3.1, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé, ñòàáèëèçàöèÿ, èçìåíåíèå API çàïðîñà çíà÷åíèé è ïîäñèñòåìû â öåëîì äî âåðñèè 2.
Archive.DBArch -- 0.7.1 -> 0.9.0, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé, ñòàáèëèçàöèÿ, èçìåíåíèå API çàïðîñà çíà÷åíèé è ïîäñèñòåìû â öåëîì äî âåðñèè 2.
DB.DBF -- 1.9.1 -> 2.0.1, îáíîâëåíèå ìåõàíèçìà ïîëó÷åíèÿ äàííûõ, ðàñøèðåíèå âîçìîæíîñòè ïðè ðàáîòå ñ êëþ÷àìè, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
DB.MySQL -- 1.4.1 -> 1.6.1, ñòàáèëèçàöèÿ, õðàíåíèå ìíîãîÿçûêîâûõ ïîëåé, íîâûé ìàêðîñ îáíàðóæåíèÿ áèáëèîòåêè MySQL, îáíîâëåíèå ìåõàíèçìà ïîëó÷åíèÿ äàííûõ, ðàñøèðåíèå âîçìîæíîñòè ïðè ðàáîòå ñ êëþ÷àìè, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
DB.SQLite -- 1.4.1 -> 1.6.1, ñòàáèëèçàöèÿ, õðàíåíèå ìíîãîÿçûêîâûõ ïîëåé, íîâûé ìàêðîñ îáíàðóæåíèÿ áèáëèîòåêè SQLite, îáíîâëåíèå ìåõàíèçìà ïîëó÷åíèÿ äàííûõ, ðàñøèðåíèå âîçìîæíîñòè ïðè ðàáîòå ñ êëþ÷àìè, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
DB.FireBird -- 0.8.1 -> 0.9.1, íîâûé ìàêðîñ îáíàðóæåíèÿ áèáëèîòåêè FireBird, îáíîâëåíèå ìåõàíèçìà ïîëó÷åíèÿ äàííûõ, ðàñøèðåíèå âîçìîæíîñòè ïðè ðàáîòå ñ êëþ÷àìè, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.DiamondBoards -- 1.1.0 -> 1.2.0, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.System -- 1.6.2 -> 1.7.0, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.BlockCalc -- 1.1.1 -> 1.2.1, ñòàáèëèçàöèÿ, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.JavaLikeCalc -- 1.3.0 -> 1.5.0, ñòàáèëèçàöèÿ, ðàñøèðåíèå ëèìèòà íà êîëè÷åñòâî ðåãèñòðîâ â ôóíêöèè äî 65535, ðåàëèçàöèÿ îáúåêòîâ, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.LogicLev -- 0.9.2 -> 1.0.1, íåêîòîðîå ðàñøèðåíèå ôóíêöèîíàëüíîñòè, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.SNMP -- 0.3.3 -> 0.4.0, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.Siemens -- 1.1.1 -> 1.2.1, ñòàáèëèçàöèÿ, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.ModBus -- 0.9.1 -> 1.0.1, ðàñøèðåíèå ôóíêöèîíàëüíîñòè, çíà÷èòåëüíàÿ ñòàáèëèçàöèÿ, âûäåëåíèå ïðîòîêîëüíîé ÷àñòè â îòäåëüíûé ìîäóëü Protocol.ModBus , çàìåíà ñîáñòâåííîãî ìåõàíèçìà ïîñëåäîâàòåëüíûõ òðàíñïîðòîâ íà ìîäóëü Transport.Serial , èñïîëüçîâàíèå èíäèâèäóàëüíîãî ìåõàíèçìà áëîêèðîâàíèÿ èñõîäÿùèõ òðàíñïîðòîâ, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.DCON -- 0.1.0 -> 0.3.0, ñòàáèëèçàöèÿ, ðàñøèðåíèå ïåðå÷íÿ ïîääåðæèâàåìîãî îáîðóäîâàíèÿ, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, çàìåíà ñîáñòâåííîãî ìåõàíèçìà ïîñëåäîâàòåëüíûõ òðàíñïîðòîâ íà ìîäóëü Transport.Serial , ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.DAQGate -- 0.3.3 -> 0.8.0, ïåðåèìåíîâàí èç DAQ.Transporter, ñòàáèëèçàöèÿ, ðàñøèðåíèå ôóíêöèîíàëüíîñòè, ðåàëèçàöèÿ âåðòèêàëüíîãî è ãîðèçîíòàëüíîãî ðåçåðâèðîâàíèÿ, ïîääåðæêà ïðîáðîñà àðõèâîâ óäàë¸ííûõ ñòàíöèé, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.SoundCard -- 0.6.0, íîâûé ìîäóëü ðåàëèçàöèè äîñòóïà ê âõîäíûì äàííûì çâóêîâîé êàðòû, ðåàëèçàöèÿ ðåçåðâèðîâàíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
DAQ.ICP_DAS -- 0.1.0, íîâûé ìîäóëü ðåàëèçàöèè ïîääåðæêè îáîðóäîâàíèÿ ôèðìû ICP DAS.
Transport.Sockets - 1.3.6 -> 1.4.0, ñòàáèëèçàöèÿ, íåêîòîðûå óëó÷øåíèÿ, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
Transport.SSL -- 0.8.0 -> 0.8.2, ñòàáèëèçàöèÿ, íåêîòîðûå óëó÷øåíèÿ, ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé.
Transport.Serial -- 0.5.0, íîâûé ìîäóëü
Protocol.HTTP -- 1.3.2 -> 1.4.1, ñòàáèëèçàöèÿ, ïîääåðæêà ðåæèìà Keep-Alive, ðàñøèðåíèå ìåõàíèçìà ìîäóëåé HTTP ïðîòîêîëà, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
Protocol.SelfSystem -- 0.8.0 -> 0.9.1, ñòàáèëèçàöèÿ, íîâîå API èñõîäÿùèõ çàïðîñîâ ïîäñèñòåìû "Ïðîòîêîëû", ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
Protocol.ModBus -- 0.5.0, íîâûé ìîäóëü ïðîòîêîëà ModBus âûäåëåííûé èç ìîäóëÿ DAQ.ModBus è ïîääåðæèâàþùèé ðåæèì ñåðâåðà èëè ïîä÷èí¸ííîãî ñåòè ModBus
Special.FLibComplex1 -- 1.0.3 -> 1.0.4, íåêîòîðûå óëó÷øåíèÿ â ôóíêöèè PID-ðåãóëÿòîðà, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
Special.FLibMath -- 0.5.1, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
Special.FLibSYS -- 0.7.0 -> 0.9.0, äîáàâëåíèå ïîëüçîâàòåëüñêèõ îáúåêòîâ è ôóíêöèé ðàáîòû ñ íèìè, çíà÷èòåëüíîå ðàñøèðåíèå áèáëèîòåêè â öåëîì, ñòàáèëèçàöèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
Special.SystemTests -- 1.3.6 -> 1.3.7, ìîäèôèêàöèÿ ïîä èçìåíåíèå API, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé.
UI.QTStarter -- 1.5.1 -> 1.5.3, äîáàâëåíà ôóíêöèÿ âñòàâêè ñâîåãî ðàçäåëà ìåíþ â îòêðûâàåìûå îêíà QT, ïåðåâîä âíóòðåííèõ ñîîáùåíèé QT, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
UI.QTCfg -- 1.7.0 -> 1.8.1, ñòàáèëèçàöèÿ, ïîääåðæêà äèíàìè÷åñêèõ ñòðóêòóð òàáëèö, óíèôèêàöèÿ èíòåðôåéñà óïðàâëåíèÿ OpenSCADA, ìåõàíèçì ïîèñêà ýëåìåíòà â âåòêå, íîâàÿ âåðñèÿ API ïðîòîêîëîâ OpenSCADA, âûáîð íåñêîëüêèõ ýëåìåíòîâ äåðåâà äëÿ ãðóïïîâîãî óäàëåíèÿ, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
UI.WebCfg -- 1.5.2 -> 1.5.3, ñòàáèëèçàöèÿ, ïîääåðæêà äèíàìè÷åñêèõ ñòðóêòóð òàáëèö, èñïîëüçîâàíèå îáùåãî ìåõàíèçìà àóòåíòèôèêàöèè, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
UI.WebCfgD -- 0.5.0 -> 0.6.2, ñòàáèëèçàöèÿ, ïîääåðæêà äèíàìè÷åñêèõ ñòðóêòóð òàáëèö, óíèôèêàöèÿ èíòåðôåéñà óïðàâëåíèÿ OpenSCADA, íîâàÿ âåðñèÿ API ïðîòîêîëîâ OpenSCADA, èñïîëüçîâàíèå îáùåãî ìåõàíèçìà àóòåíòèôèêàöèè, ïåðåâîä èíòåðôåéñà íà Íåìåöêèé è äîêóìåíòàöèè íà Àíãëèéñêèé.
UI.VCAEngine -- 0.8.0 -> 0.8.10
UI.Vision -- 0.8.0 -> 0.8.10
UI.WebVision -- 0.6.0 -> 0.6.10
1 Ðåàëèçàöèÿ ïëàíîâûõ çàäà÷
 ñîîòâåòñòâèè ñ ïëàíîì ðåëèçà áûëè âûïîëíåíû ñëåäóþùèå çàäà÷è:
Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ ôóíêöèÿìè :
Äëÿ óïðàâëåíèÿ ñåàíñîì áûëà äîáàâëåíà áèáëèîòåêà ïîëüçîâàòåëüñêèõ ôóíêöèé â ìîäóëü UI.VCAEngine. Â ñîñòàâ áèáëèîòåêè âîøëè ôóíêöèè: vcaWdgList(), vcaNodePresent(), vcaAttrList(), vcaAttrGet(), vcaAttrSet() è vcaSesUser().
Óïðàâëåíèå êîíòðîëëåðàìè ïîäñèñòåìû "Ñáîð äàííûõ" è îñòàëüíûìè îáúåêòàìè OpenSCADA áûëî ðåàëèçîâàíî ïóò¸ì äîáàâëåíèÿ òèïà äàííûõ Îáúåêò è ñîçäàíèÿ ôóíêöèè ïîëüçîâàòåëüñêîãî çàïðîñà FLibSYS.xmlCntrReq() ê èíòåðôåéñó óïðàâëåíèÿ.
Ìîäóëü DAQ.ModBus äîïîëíåí ìîäóëåì ïðîòîêîëà ModBus, ÷òî ïîçâîëèëî ðàáîòàòü â ðåæèìå ñåðâåðà(ïîä÷èí¸ííîãî) ñåòè ModBus.
Ðåàëèçîâàíû ìåõàíèçìû ðåçåðâèðîâàíèÿ.  ïîäñèñòåìó "Ñáîð äàííûõ" äîáàâëåí ìåõàíèçì ãîðèçîíòàëüíîãî ðåçåðâèðîâàíèÿ è âñå ìîäóëè ýòîé ïîäñèñòåìû àäàïòèðîâàíû äëÿ ïîääåðæêè ãîðèçîíòàëüíîãî ðåçåðâèðîâàíèÿ.  ìîäóëü DAQ.DAQGate äîáàâëåíû ôóíêöèè âåðòèêàëüíîãî ðåçåðâèðîâàíèÿ âêëþ÷àÿ âîññòàíîâëåíèå àðõèâîâ è øëþçîâàíèå àðõèâîâ óäàë¸ííûõ ñòàíöèé. Ðåàëèçîâàí ìåõàíèçì ãîðÿ÷åé êîìïåíñàöèè äûð â àðõèâàõ èç àðõèâîâ ðåçåðâíûõ èñòî÷íèêîâ.
 DAQ.JavaLikeCalc Äîáàâëåíà ïîëíàÿ ïîääåðæêà îáúåêòîâ è ìàññèâîâ. Ðåàëèçîâàíû ìåõàíèçìû äîñòóïà ê ýëåìåíòàì “.prop” è "[prop]". Ðåàëèçîâàíû ôóíêöèè îáúåêòîâ è èõ âûçîâ. ßçûê â öåëîì óíèôèöèðîâàí äëÿ ðàáîòû ñ ðàçíûìè òèïàìè äàííûõ ñ ïîìîùüþ îäíîé êîìàíäû âèðòóàëüíîé ìàøèíû.
Äîáàâëåíà ïîääåðæêà ñòèëåé äëÿ èíòåðôåéñîâ ÑÂÓ.
Ðåàëèçàöèÿ ïðèìèòèâîâ «Ñâÿçü» è «Ôóíêöèÿ» ÑÂÓ. -- Äàííàÿ ðàáîòà íå áûëà âûïîëíåíà è ïåðåíåñåíà ê ñëåäóþùåìó ðåëèçó.
2 Îïòèìèçàöèÿ, ïîâûøåíèå ñòàáèëüíîñòè, óñòîé÷èâîñòè è ïðîèçâîäèòåëüíîñòè ñèñòåìû.
 ïðîöåññå ðàáîò íàä äàííîé âåðñèåé, à òàêæå å¸ ïðàêòè÷åñêîé àäàïòàöèè, áûëî îáíàðóæåíî è èñïðàâëåíî â îáùåé ñëîæíîñòè áîëåå 180 îøèáîê.
Êðîìå èñïðàâëåíèÿ ìíîæåñòâà îøèáîê áûëà ïðîäåëàíà ðàáîòà ïî îïòèìèçàöèè ðàçëè÷íûõ êîìïîíåíòîâ OpenSCADA. Îñîáåííî çàìåòíîé îïòèìèçàöèè ïîäâåðãëàñü ñðåäà âèçóàëèçàöèè è óïðàâëåíèÿ (ÑÂÓ) è å¸ âèçóàëèçàòîðû. Îñíîâíûì âåêòîðîì â îïòèìèçàöèè ñòàëà îïòèìèçàöèÿ èñïîëüçóåìîé ïàìÿòè.
Ïåðå÷èñëèì íàèáîëåå ñóùåñòâåííûå îøèáêè èñïðàâëåíèå êîòîðûõ çíà÷èòåëüíî îòðàçèëîñü íà ïîâûøåíèè ñòàáèëüíîñòè:
Îáùåñèñòåìíûå:
Èñïðàâëåíû êîíôèãóðàöèîííûå ôàéëû äëÿ îáåñïå÷åíèÿ óäàë¸ííûõ ñîåäèíåíèé, ïî óìîë÷àíèþ.
Ñáîðêà ãëàâíîé ïóñêàþùåé ïðîãðàììû îòäåëåíà îò ñáîðêè áèáëèîòåêè â äèðåêòîðèþ src_call/ ñ öåëüþ îáåñïå÷åíèÿ áåçîøèáî÷íîé ñáîðêè RPM-ïàêåòîâ â ìíîãîïîòî÷íîì ðåæèìå.
Çàïóñêàþùèé ñêðèïò ðåæèìà ïîëüçîâàòåëÿ "openscada_start" èñïðàâëåí ñ öåëüþ êîïèðîâàíèÿ êîíôèãóðàöèîííîãî ôàéëà oscada_start.xml â /.openscada/oscada.xml è ëîêàëüíîãî èñïîëüçîâàíèÿ åãî.
Âûïîëíåíà àäàïòàöèÿ äëÿ èñïîëüçîâàíèÿ QT 4.5. Ãëîáàëüíî äîáàâëåíà ïåðåìåííàÿ îêðóæåíèÿ LC_NUMERIC=C ñ öåëüþ îêîí÷àòåëüíîãî èñïðàâëåíèÿ ïðîáëåìû ðàçäåëèòåëÿ â âåùåñòâåííûõ ÷èñëàõ íà ðàçëè÷íûõ ëîêàëÿõ.
Ðåæèì èñïîëüçîâàíèÿ êåøà ñèñòåìíîé ÁÄ èçìåí¸í äëÿ èñïîëüçîâàíèÿ òîëüêî â ñëó÷àå îòñóòñòâèÿ îñíîâíîé ÁÄ.
Äîáàâëåí ðåñóðñ äëÿ äîñòóïà ê XML-äåðåâó êîíôèãóðàöèîííîãî ôàéëà. Äëÿ äîñòóïà ê XML-äåðåâó èñïîëüçîâàí íå ðåæèì ãåíåðàöèè èñêëþ÷åíèé ïðè îøèáêàõ, ÷òî èñïðàâèëî óòå÷êó ðåñóðñîâ (Ñòýê) â íåêîòîðûõ êîíòåêñòàõ.
Èñïðàâëåí êîíôëèêò ðåñóðñà âîçíèêàþùèé ïðè ïîïûòêå óäàëåíèÿ îäíîãî è òîãî-æå äî÷åðíåãî ýëåìåíòà êîìïîíåíòà OpenSCADA èç ðàçíûõ ïîòîêîâ.
Äîáàâëåí ðåñóðñ äëÿ äîñòóïà ê êîíòåéíåðàì ñòðóêòóðû ýëåìåíòîâ TElem . Áûëè îáíàðóæåíû êîíôëèêòû ïðè èñïîëüçîâàíèè îáùåãî TElem èç ðàçíûõ TConfig , ðàçíûõ ïîòîêîâ â UI.WebVision .
Äîáàâëåíà ïîääåðæêà îáíîâëåíèÿ ñòàòóñà ñîåäèíåíèÿ óäàë¸ííûõ ñòàíöèé â ìîäóëå UI.QTCfg .
 ìîäóëü Protocol.HTTP :
Äîáàâëåíà ïîääåðæêà ðåæèìà "KeepAlive", êîòîðûé íóæåí äëÿ íîðìàëüíîé ðàáîòû WEB-áðàóçåðà Opera.
Èñïðàâëåí ïðîïóñê è íåïîëíàÿ îáðàáîòêà ñèìâîëà '\r' â êîíöå ñòðîê ïðîòîêîëà HTTP. Èñïðàâëåíà ðàáîòà â Konqueror 4.
ÑÂÓ:
Ñäåëàíî ìíîæåñòâî èñïðàâëåíèé è óëó÷øåíèé â ñâÿçêå âèçóàëèçàöèè è àðõèâèðîâàíèÿ.
Ðàáîòà ìåõàíèçìà òðåíäà ïðèìèòèâà «Äèàãðàììà» ÑÂÓ èñïðàâëåíà ïðè ðàáîòå íà äëèííûõ èíòåðâàëàõ âðåìåíè. Èñïðàâëåíà ðàáîòà ñ îòäåëüíî âûáðàííûì àðõèâàòîðîì.
Àëãîðèòì âûÿâëåíèÿ ôàêòà ìîäèôèêàöèè àòðèáóòîâ è âèäæåòîâ ìîäóëÿ UI.VCAEngine , ïðè èñïîëíåíèè ïðîåêòîâ, âûíåñåí â ôóíêöèþ modifChk() è äîðàáîòàí äëÿ ó÷¸òà âîçìîæíîñòè ïåðåïîëíåíèÿ è ñáðîñà ñ÷¸ò÷èêà òàêòîâ èñïîëíåíèÿ èíòåðôåéñà âèçóàëèçàöèè.
 ìîäóëü DAQ.ModBus âíåñåíî ìíîæåñòâî èñïðàâëåíèé è âûïîëíåíà ðåêîíñòðóêöèÿ äëÿ îáåñïå÷åíèÿ ïîääåðæêè ðàçëè÷íûõ èíòåðôåéñîâ, âêëþ÷àÿ ModBus/ASCII. Çàïèñü â êîíòðîëëåð ñäåëàíà òîëüêî â ñëó÷àå ðåàëüíîãî èçìåíåíèÿ çíà÷åíèé è çàïèñè íå EVAL çíà÷åíèé.
Äëÿ èñõîäÿùåãî òðàíñïîðòà ìîäóëÿ Transport.Sockets èñïðàâëåíî ïåðåïîäêëþ÷åíèå è âîññòàíîâëåíèå ñåàíñà, à òàêæå äîáàâëåí ïîäêîíòðîëüíûé òàéìàóò ñîåäèíåíèÿ.
Îïòèìèçàöèÿ è ïîâûøåíèå ïðîèçâîäèòåëüíîñòè:
Ðåæèì ðàáîòû ñ òàáëèöàìè ÁÄ èçìåí¸í íà ðåæèì íå çàêðûâàþùèé òàáëèöû ñðàçó ïî çàâåðøåíèþ ðàáîòû ñ íèìè. Çàêðûòèå ïðîèçâîäèòñÿ ÷åðåç ìèíóòó ïîñëå ïîñëåäíåãî èñïîëüçîâàíèÿ òàáëèöû. Òàêîé ïîäõîä çíà÷èòåëüíî ïîâûñèë ñêîðîñòü äîñòóïà ê ÁÄ.
Ðåàëèçîâàí êåø ðåñóðñîâ â ìîäóëå UI.WebVision. Ïîâûøàåò ïðîèçâîäèòåëüíîñòü ïðè ïîñòðîåíèè îáðàçîâ ïðèìèòèâîâ ElFigure íà îñíîâå èçîáðàæåíèé.
Ñòðóêòóðû ÁÄ ÑÂÓ èçìåíåíà äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè è èñêëþ÷åíèÿ ïîòåðÿííûõ çàïèñåé â ÁÄ. Âåðñèÿ API ÁÄ óñòàíîâëåíà â 2.
Äîáàâëåí èíäèâèäóàëüíûé ìåõàíèçì áëîêèðîâàíèÿ èñõîäÿùèõ òðàíñïîðòîâ. Èñïîëüçîâàíî äëÿ ìîíîïîëüíîãî äîñòóïà ê òðàíñïîðòó áåç áëîêèðîâàíèÿ âñåãî ïðîòîêîëà â DAQ.ModBus è Protocol.SelfSystem .
Îïòèìèçàöèè èñïîëüçîâàíèÿ ïàìÿòè:
Ðåàëèçîâàí òèï äàííûõ TVariant äëÿ ïðîçðà÷íîãî õðàíåíèÿ äàííûõ ðàçíûõ òèïîâ. Îáúåêò èñïîëüçîâàí äëÿ ïîëó÷åíèÿ ïðÿìîãî äîñòóïà ê àòðèáóòàì âèäæåòîâ “id” è “path” è èñêëþ÷åíèÿ èçáûòî÷íîãî õðàíåíèÿ äàííûõ ýòèõ àòðèáóòîâ â ìîäóëå VCA UI.VCAEngine .
Ãëîáàëüíûé îáúåêò ðåñóðñà è åãî èñïîëüçîâàíèå óíèôèöèðîâàíû. Äëÿ ðåñóðñà íà ÷òåíèå-çàïèñü èñïîëüçîâàíû POSIX ôóíêöèè pthread_rwlock_*().
Êîíòåéíåð ãðóïï äåòåé â TCntrNode ñäåëàí äèíàìè÷åñêèì.
Óïðîù¸í ìåõàíèçì õðàíåíèÿ àòðèáóòîâ â âèäæåòàõ ÑÂÓ.
Îáúåêò îïèñàíèÿ àòðèáóòîâ ÑÂÓ TFld èñïîëüçîâàí îäíîêðàòíî äëÿ íàñëåäîâàíûõ àòðèáóòîâ. Óìåíüøåíî ïîòðåáëåíèå ïàìÿòè äî 30%.
3 Óñîâåðøåíñòâîâàíèå è ñòàáèëèçàöèÿ ÑÂÓ.
Çàìåòíûå èçìåíåíèÿ áûëè âûïîëíåíû â ðàìêàõ ñðåäû âèçóàëèçàöèè è óïðàâëåíèÿ (ÑÂÓ), à èìåííî â ìîäóëÿõ äâèæêà ÑÂÓ UI.VCAEngine , âèçóàëèçàòîðîâ UI.Vision è UI.WebVision . Âíåñ¸ííûå èçìåíåíèÿ áûëè íàïðàâëåííû íà ñòàáèëèçàöèþ, îïòèìèçàöèþ ïîòðåáëåíèÿ ïàìÿòè è óëó÷øåíèå ïîëüçîâàòåëüñêèõ ñâîéñòâ ÑÂÓ.
Óëó÷øåíèÿ ÑÂÓ:
Äîáàâëåíà òðàíñëÿöèÿ ïåðåâîäà îñíîâíûõ äèàëîãîâ QT â ñòàíäàðò I18N.
Äîáàâëåíû ôóíêöèè ïîëüçîâàòåëüñêîãî API äëÿ ðàñøèðåííîãî äîñòóïà ê ýëåìåíòàì ñåàíñà ïðîåêòà èç ñêðèïòîâ ýëåìåíòîâ(âèäæåòîâ) âèçóàëèçàöèè.
Äîáàâëåíà ïîääåðæêà àëüôà-êàíàëà, ò.å. ïîëóïðîçðà÷íîñòè â óêàçàíèè öâåòà âñåõ ýëåìåíòîâ ïðèìèòèâà ElFigure ÑÂÓ.
Àòðèáóò “root” ÑÂÓ ïåðåìåù¸í â îñíîâíîé êîíòåéíåð àòðèáóòîâ âèäæåòîâ. Äîáàâëåí àòðèáóò “parent” äëÿ ïðåäîñòàâëåíèÿ èíôîðìàöèè î ðîäèòåëüñêîì âèäæåòå. Äîáàâëåíû àòðèáóòû “tipTool” è “tipStatus” äëÿ ïðåäîñòàâëåíèÿ âîçìîæíîñòè íàäåëåíèÿ âèäæåòîâ ÑÂÓ êîíòåêñòíûìè ïîäñêàçêàìè â ìîäóëå äâèæêà âèçóàëèçàöèè UI.VCAEngine .
 ìîäóëå UI.WebVision èçìåíåíà êîíöåïöèÿ ôîðìèðîâàíèÿ îáðàçà ïðèìèòèâà ElFigure íà ôîðìèðîâàíèå îáðàçîâ ñ çàïîëíåíèÿìè â îòäåëüíûõ èçîáðàæåíèÿõ è ïîñëåäóþùåé ñáîðêè èõ â ðåçóëüòèðóþùåå èçîáðàæåíèå.
Ðåàëèçîâàí ìåõàíèçì î÷èñòêè èçìåíåíèé âèäæåòîâ ÑÂÓ. ×àñòî íóæåí äëÿ ñáðîñà ëîêàëüíûõ èçìåíåíèé è äëÿ âîçâðàòà ê íàñëåäîâàííûì ñâîéñòâàì.
Ðåàëèçîâàíà ïîääåðæêà êîíòåêñòíîãî ìåíþ äëÿ âèäæåòîâ â ðåæèìå èñïîëíåíèÿ ïðîåêòîâ ÑÂÓ.
Ðåàëèçîâàíî ñêðûòèå ïàíåëè ìåíþ â ðåæèìå èñïîëíåíèÿ ïðîåêòà ìîäóëåì UI.Vision äëÿ íåïðèâèëåãèðîâàííûõ ïîëüçîâàòåëåé. Ïàíåëü ìåíþ â ðåæèìå èñïîëíåíèÿ òåïåðü ïîçèöèîíèðóåòñÿ êàê èíñòðóìåíò àäìèíèñòðàòîðà OpenSCADA, ñîäåðæàùèé îáùåñèñòåìíûå ôóíêöèè. Ôóíêöèè ïå÷àòè è ýêñïîðòà ïðîäóáëèðîâàíû íà ïàíåëè ñîñòîÿíèé.
Äîáàâëåí èíäèêàòîð ÷àñîâ íà ïàíåëè ñîñòîÿíèé â ðåæèìå èñïîëíåíèÿ ïðîåêòà ìîäóëåì UI.Vision äëÿ ïîëíîýêðàííîãî èñïîëíåíèÿ.
Ðåàëèçîâàíà áàçîâàÿ ïîääåðæêà ìíîãîäèñïëåéíûõ ñèñòåì â ìîäóëå UI.Vision.
Âíåñåíû èçìåíåíèÿ â ñòðóêòóðó ÁÄ ÑÂÓ, äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè è èñêëþ÷åíèÿ ïîòåðÿííûõ çàïèñåé â ÁÄ. Âåðñèÿ ñòðóêòóðû ÁÄ ÑÂÓ óâåëè÷åíà äî 2.
 ïðèìèòèâ ÑÂÓ "Äèàãðàììà" äîáàâëåíî ïðåäñòàâëåíèå ÷àñòîòíîãî ñïåêòðà äàííûõ àðõèâà çíà÷åíèé.
Äîáàâëåíà ïîëüçîâàòåëüñêàÿ ôóíêöèÿ vcaSesUser() â ïîëüçîâàòåëüñêîå API ÑÂÓ.
ÑÂÓ:  ïðèìèòèâ «Ïðîòîêîë» äîáàâëåíî ñâîéñòâî ïîðÿäêà ñîðòèðîâêè è ñâîéñòâà îïèñàíèÿ îôîðìëåíèÿ ýëåìåíòîâ. Äîáàâëåíà ïðîâåðêà íà îòêëþ÷åííîñòü òðåíäîâ, âêëþ÷àÿ è óñëîâèå íå êîððåêòíîãî öâåòà, â ïðèìèòèâ «Äèàãðàììà».
Äîáàâëåíà ïîääåðæêà ñòèëåé.
4 Ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé ÿçûê è èíòåðôåéñà ïðîãðàììû íå Íåìåöêèé. Ìíîãîÿçûêîâàÿ ÁÄ.
Ïðîäåëàíà áîëüøàÿ ðàáîòà ïî ïåðåâîäó èíòåðôåéñà ïðîãðàììû íà Íåìåöêèé Èðèíîé Ïîïêîâîé. Áûëè ïåðåâåäåíû èíòåðôåéñ ÿäðà OpenSCADA è ìîäóëåé: UI.WebVision, UI.QTCfg, DAQ.DCON, DAQ.LogicLev, DAQ.DAQGate, DAQ.DiamondBoards, DAQ.ModBus, DAQ.SoundCard, DAQ.Siemens, DAQ.SNMP, DAQ.System, DAQ.JavaLikeCalc, Protocol.HTTP, Protocol.SelfSystem, Special.FLibComplex1, Special.FLibMath, Special.FLibSYS, Transport.Serial, Special.SystemTests, UI.VCAEngine, UI.QTStarter, UI.Vision, UI.WebCfg. Âêëþ÷åí ïàò÷ Êëàóñà Ôåò÷åðà äëÿ êîððåêöèè ïåðåâîäà èíòåðôåéñà íà Íåìåöêèé.
Ëûñåíêî Ìàêñèìîì âûïîëíåí ïåðåâîä äîêóìåíòàöèè íà Àíãëèéñêèé äëÿ îáùåñèñòåìíîé äîêóìåíòàöèè è äëÿ ìîäóëåé: DB.SQLite, DB.MySQL, DB.FireBird, DB.DBF, Archive.DBArch, Archive.FSArch, DAQ.System, DAQ.LogicLev, DAQ.DAQGate, DAQ.JavaLikeCalc, DAQ.ModBus, DAQ.SoundCard, DAQ.Siemens, DAQ.SNMP, DAQ.DiamondBoards, DAQ.BlockCalc, Transport.Sockets, UI.WebCfgD, UI.QTStarter, UI.QTCfg, Transport.Serial, Transport.SSL, Protocol.SelfSystem, Protocol.HTTP.
 ÿäðî ñèñòåìû OpenSCADA äîáàâëåíà ïîääåðæêà ìíîãîÿçûêîâûõ òåêñòîâûõ ïåðåìåííûõ. Áëàãîäàðÿ ýòîé ôóíêöèè äåìîíñòðàöèîííûå ÁÄ îòäåëüíûõ ÿçûêîâ îáúåäèíåíû â îäíó ìíîãîÿçûêîâóþ ÁÄ, êîòîðàÿ âêëþ÷àåò Àíãëèéñêèé(áàçîâûé), Ðóññêèé è Óêðàèíñêèé ÿçûêè. Ìíîãîÿçûêîâîñòü ïîääåðæèâàåòñÿ ìîäóëÿìè ÁÄ DB.SQLite è DB.MySQL. Äåìîíñòðàöèîííûé êîíôèãóðàöèîííûé ôàéë òàêæå ïåðåâåäåí íà Àíãëèéñêèé(áàçîâûé), Ðóññêèé è Óêðàèíñêèé ÿçûêè.
5 Îáùåñèñòåìíûå ðàñøèðåíèÿ.
Ê äàííîìó ðåëèçó áûëî âíåñåíî äîñòàòî÷íî ìíîãî îáùåñèñòåìíûõ èçìåíåíèé, íàïðàâëåííûõ íà ðàñøèðåíèå ôóíêöèîíàëüíîñòè.
Ðàñøèðåíèå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ:
 áèáëèîòåêó ñèñòåìíîãî API Special.FLibSYS ïîëüçîâàòåëÿ äîáàâëåíû:
Ôóíêöèè: sysCall(), int2str(), str2real(), str2int(). Ôóíêöèÿ sysCall() îòêðûâàåò øèðîêèå âîçìîæíîñòè ïîëüçîâàòåëþ OpenSCADA ïóò¸ì âûçîâà ëþáûõ ñèñòåìíûõ ïðîãðàìì, óòèëèò è ñêðèïòîâ, à òàêæå ïîëó÷åíèÿ ïîñðåäñòâîì íèõ äîñòóïà ê îãðîìíîìó îáú¸ìó ñèñòåìíûõ äàííûõ.
Äîáàâëåíû ôóíêöèè dbReqSQL() è messGet(), êîòîðûå èñïîëüçóþò â êà÷åñòâå âîçâðàòà îáúåêòû.
Äîáàâëåí îáúåêò XMLNodeObj, ôóíêöèÿ xmlNode() äëÿ ñîçäàíèÿ îáúåêòà è ôóíêöèÿ xmlCntrReq() äëÿ îòïðàâêè çàïðîñà ê èíòåðôåéñó óïðàâëåíèÿ OpenSCADA.
Äîáàâëåí îáúåêò VArchObj è ôóíêöèè vArh(), vArhBuf() äëÿ åãî ñîçäàíèÿ. Èñïîëüçóåòñÿ äëÿ ïîëíîãî äîñòóïà ê àðõèâàì. Äîáàâëåíà ïîëüçîâàòåëüñêàÿ ôóíêöèÿ ïëàíèðîâàíèÿ â ñòàíäàðòå Cron tmCron().
Äîáàâëåíà ôóíêöèÿ FFT â îáúåêò àðõèâà VArchObj äëÿ îáðàáîòêè àðõèâà áûñòðûì ïðåîáðàçîâàíèåì â ðÿä Ôóðüå.
 îáúåêò ýêçåìïëÿðà (TValFunc) èñïîëíåíèÿ ôóíêöèé ñèñòåìû OpenSCADA (TFunction) äîáàâëåí àòðèáóò ïîëüçîâàòåëÿ äëÿ ïðåäîñòàâëåíèÿ âîçìîæíîñòè ðàçäåëåíèÿ ïðàâ íà èñïîëíåíèÿ ôóíêöèé ïîëüçîâàòåëüñêîãî API.
Ðåàëèçîâàí òèï äàííûõ TVariant äëÿ ïðîçðà÷íîãî õðàíåíèÿ äàííûõ ðàçíûõ òèïîâ. Îáúåêò èñïîëüçîâàí äëÿ ïîëó÷åíèÿ ïðÿìîãî äîñòóïà ê àòðèáóòàì âèäæåòîâ “id” è “path” è èñêëþ÷åíèÿ èçáûòî÷íîãî õðàíåíèÿ äàííûõ ýòèõ àòðèáóòîâ â ìîäóëå VCA UI.VCAEngine.
Ïðåäåë êîëè÷åñòâà ïåðåìåííûõ (ðåãèñòðîâ), èñïîëüçóåìûõ ïîëüçîâàòåëåì â ôóíêöèè, ðàñøèðåí ñ 255 äî 65535, â DAQ.JavaLikeCalc.
Ðåàëèçîâàíû ïîëüçîâàòåëüñêèå îáúåêòû. Ïîääåðæèâàåòñÿ áàçîâûé îáúåêò TVarObj è îáúåêò ìàññèâà TAreaObj. Äîáàâëåíà ïîääåðæêà âûõîäíûõ ïàðàìåòðîâ â ôóíêöèÿõ îáúåêòîâ.
 DAQ.JavaLikeCalc Äîáàâëåíà ïîëíàÿ ïîääåðæêà îáúåêòîâ è ìàññèâîâ. Ðåàëèçîâàíû ìåõàíèçìû äîñòóïà ê ýëåìåíòàì “.prop” è "[prop]". Ðåàëèçîâàíû ôóíêöèè îáúåêòîâ è èõ âûçîâû. ßçûê â öåëîì óíèôèöèðîâàí äëÿ ðàáîòû ñ ðàçíûìè òèïàìè äàííûõ ïðè ïîìîùè îäíîé êîìàíäû âèðòóàëüíîé ìàøèíû. Äîáàâëåíà ïîääåðæêà óñòàíîâêè âðåìåíè âûïîëíåíèÿ êîíòðîëëåðîâ â ñòàíäàðòå Cron.
Óäàëåíû ïðÿìûå ôóíêöèè äîñòóïà ê àðõèâàì. Âìåñòî íèõ äîëæíû èñïîëüçîâàòüñÿ âñòðîåííûå ôóíêöèè îáúåêòà àðõèâà.
Èçìåíåíèÿ äåìîíñòðàöèîííîé ÁÄ:
Ïîëíîöåííûå îáúåêòû ñèãíàëèçàöèè.
Ñîçäàí øàáëîí êàäðà ñâîäíûõ ãðàôèêîâ, ñîäåðæàùåãî äî 80 ãðàôèêîâ îäíîâðåìåííî.
Äîáàâëåíà êîíòåêñòíàÿ ïîìîùü ê ýëåìåíòàì ìíåìîñõåìû.
Îáíîâëåíà ïàíåëü íàâèãàöèè è äîáàâëåíû êíîïêè êâèòàöèè àâàðèéíûõ ñîîáùåíèé.
Äîáàâëåíû îáú¸ìíûå ýëåìåíòû òðóáîïðîâîäà.
Äîáàâëåíî êîíòåêñòíîå ìåíþ äëÿ øàðîâûõ êðàíîâ.
Óâåëè÷åí ðàçìåð øðèôòà çíà÷åíèé ýëåìåíòîâ âèäîâ àíàëîãîâûõ ñèãíàëîâ.
Îáíîâëåíû ïàíåëè óïðàâëåíèÿ òðåíäàìè è äîêóìåíòàìè.
Äåìî ÁÄ îáíîâëåíà äëÿ ðåàëèçàöèè ñòðóêòóðû ÁÄ ÑÂÓ âåðñèè 2.
Îáíîâëåí ïåðåâîä ÁÄ ÑÂÓ íà Àíãëèéñêèé è äîáàâëåí ïåðåâîä íà Óêðàèíñêèé.
Îáíîâëåí àëãîðèòì ñîçäàíèÿ àðõèâíûõ äîêóìåíòîâ.
Ôóíêöèè äîêóìåíòà äëÿ ñóììèðîâàíèÿ è óñðåäíåíèÿ ó÷àñòêà àðõèâà èñïðàâëåíû ñ öåëüþ èñïîëüçîâàíèÿ ïîñëåäíåãî çíà÷åíèÿ.
Äîáàâëåíî èìÿ ïîëüçîâàòåëÿ ñåàíñà äëÿ ðàçìåùåíèÿ â ïðîòîêîëå äåéñòâèÿ.
ÁÄ è êîíôèãóðàöèîííûé ôàéë ïåðåôîðìèðîâàíû äëÿ óñòàíîâêè ÿçûêîì ïî óìîë÷àíèþ Àíãëèéñêîãî.
Ðàñøèðåíà ôóíêöèîíàëüíîñòü ãëàâíîé ñòðàíèöû îáúåêòîâ ñèãíàëèçàöèè.
Óâåëè÷åíû øðèôòû êàäðà êîíòóðà, à òàê-æå äîáàâëåíû êíîïêè ñòóïåí÷àòîãî èçìåíåíèÿ çíà÷åíèÿ.
Ðàçíîå:
Äîáàâëåíà âîçìîæíîñòü èíäèâèäóàëüíîé çàãðóçêè èç âûáðàííîé ÁÄ èëè êîíôèãóðàöèîííîãî ôàéëà.
Ðåàëèçîâàíà ïîëíàÿ ïîääåðæêà ñïèñêîâ ðàçðåø¸ííûõ è çàïðåù¸ííûõ ìîäóëåé, çàìåíà ñïèñêà àâòîìàòè÷åñêèõ ìîäóëåé. Ðåàëèçîâàíà òàáëèöà äëÿ êîíòðîëÿ çà çàãðóæåííûìè ðàçäåëÿåìûìè áèáëèîòåêàìè (ìîäóëÿìè). Ðåàëèçîâàíî ðó÷íîå ïîäêëþ÷åíèå/îòêëþ÷åíèå ìîäóëåé.
Ðåæèì ðàáîòû ñ òàáëèöàìè ÁÄ èçìåí¸í íà ðåæèì íå çàêðûâàþùèé òàáëèöû ñðàçó ïî çàâåðøåíèþ ðàáîòû ñ íèìè. Çàêðûòèå ïðîèçâîäèòñÿ ÷åðåç ìèíóòó ïîñëå ïîñëåäíåãî èñïîëüçîâàíèÿ òàáëèöû. Òàêîé ïîäõîä çíà÷èòåëüíî ïîâûñèë ñêîðîñòü äîñòóïà ê ÁÄ.
Äîáàâëåíà ìèêðîñåêóíäíàÿ ÷àñòü âðåìåíè â ñèñòåìíûå ñîîáùåíèÿ OpenSCADA.
Äîáàâëåí ñïåöèàëüíûé ôëàã âûáîðà êëþ÷à äëÿ èñïîëüçîâàíèÿ åãî â ôóíêöèÿõ çàïðîñà ê ÁÄ dataSeek() è dataDel(), ÷òî ïîçâîëèëî âûáèðàòü êëþ÷è äëÿ çàïðîñà íå òîëüêî òåêñòîâîãî òèïà. Ôëàã èñïîëüçîâàí âî âñåõ èíòåðôåéñàõ.
Äîáàâëåí ìåõàíèçì ñòàòóñà äëÿ îáúåêòîâ êîíòðîëëåðîâ ïîäñèñòåìû «Ñáîð äàííûõ».
Äîêóìåíò ðóêîâîäñòâà ïî OpenSCADA îòôîðìàòèðîâàí äëÿ ïå÷àòè è äîáàâëåí â ðåïîçèòîðèé.
Óâåëè÷åíà âåðñèÿ API ìîäóëåé ïîäñèñòåì: "Àðõèâû" è "Ñáîð äàííûõ" äî 3 è "Ïðîòîêîë" äî 2.
Ðåàëèçîâàí ìåõàíèçì ñòàòóñà äëÿ îñíîâíûõ ïîäñèñòåì è èõ ìîäóëåé.
x86-çàâèñèìûé ìåõàíèçì èçìåðåíèÿ êîðîòêèõ èíòåðâàëîâ âðåìåíè âåçäå çàìåí¸í ñòàíäàðòíûì. Ôóíêöèÿ âû÷èñëåíèÿ ÷àñòîòû ïðîöåññîðà îòêëþ÷åíà äëÿ íå x86 è x86_64 àðõèòåêòóð.
Äîáàâëåíà âêëàäêà ôîðìèðîâàíèÿ SQL-çàïðîñà â ñòðàíèöó êîíôèãóðàöèè ÁÄ.
Äîáàâëåíà ïîääåðæêà ïîëíîñòüþ äèíàìè÷åñêèõ ñòðóêòóð ýëåìåíòà òàáëèöû â êîíôèãóðàòîðàõ UI.QTCfg, UI.WebCfg, UI.WebCfgD
Äîáàâëåí ìåõàíèçì ñèãíàëîâ, îñíîâàííûé íà API ñîîáùåíèé.
DAQ.DAQGate:
Ìîäóëü DAQ.Transporter ïåðåèìåíîâàí â DAQ.DAQGate è ðàñøèðåí äëÿ ïîääåðæêè ãîðèçîíòàëüíîãî è âåðòèêàëüíîãî ðåçåðâèðîâàíèÿ, à òàêæå äëÿ ðàáîòû ñ àðõèâàìè.
Ïîñòîÿííûå çàïðîñû ê óäàë¸ííîìó êîíòðîëëåðó ãðóïïèðîâàíû â îäèí çàïðîñ.
Äîáàâëåíî îáíîâëåíèå ñïèñêà ïàðàìåòðîâ è ñîåäèíåíèå àðõèâîâ ñ íèìè.
Èçìåíåíà êîíöåïöèÿ ñèíõðîíèçàöèè äëÿ DAQ.DAQGate è ðåçåðâèðîâàíèÿ ñáîðà äàííûõ.
Ïîðÿäîê óäàë¸ííûõ ñòàíöèé ñäåëàí çíà÷àùèì.
Âûïîëíåíà íåêîòîðàÿ î÷èñòêà êîäà.
Èñïðàâëåí äîñòóï ê àòðèáóòó îøèáêè “err”.
Ìåõàíèçì âîññòàíîâëåíèÿ èç àðõèâîâ íåñêîëüêî îáíîâëåí ñ öåëüþ èñïðàâëåíèÿ ïîòåðè çíà÷åíèé â DAQ.DAQGate è ñèñòåìå ðåçåðâèðîâàíèÿ.
DAQ.DCON: Âêëþ÷åí ïàò÷ Àëìàçà Êàðèìîâà äëÿ ìíîæåñòâà èñïðàâëåíèé è óëó÷øåíèé.
Äîáàâëåíà ôóíêöèÿ TSYS::cron() äëÿ ïëàíèðîâàíèÿ èñïîëíåíèÿ çàäà÷.
DB: Äîáàâëåíà çàïèñü çíà÷åíèå â ÿçûêå ïî óìîë÷àíèþ â ñëó÷àå ñîçäàíèÿ íîâîé çàïèñè è íå èñïîëüçîâàíèÿ ÿçûêà ïî óìîë÷àíèþ. Äîáàâëåíà âîçìîæíîñòü èñïîëüçîâàíèÿ ïåðåâîäîâ èç ìíîãîÿçûêîâîé ÁÄ â îäíîÿçûêîâîé êîíôèãóðàöèè.
Èçìåíåíèÿ ñáîðî÷íîé ñèñòåìû è ôàéëà ñïåöèôèêàöèè äëÿ ôîðìèðîâàíèÿ RPM-ïàêåòà:
Ñîçäàí øàáëîííûé ìîäóëü "=Tmpl=" äëÿ ïîäñèñòåì: "Òðàíñïîðòû" è "Ïðîòîêîëû".
Îáíîâëåí spec-ôàéë ôîðìèðîâàíèÿ RPM-ïàêåòîâ. Äëÿ òðåáîâàíèé äèñòðèáóòèâà Fedora àäàïòèðîâàí îòäåëüíûé spec-ôàéë Àëåêñååì Ïîïêîâûì è ïðè ó÷àñòèè ϸòðà Ëåìåíêîâà. Äîáàâëåíû autoconf ìàêðîñû äëÿ áîëåå ýôôåêòèâíîãî îáíàðóæåíèÿ ðåñóðñîâ ÁÄ MySQL, FireBird è SQLite. Èñïðàâëåíà è àäàïòèðîâàíà ñáîðêà ìîäóëåé íà libtool 2.2.
Èç ðåïîçèòîðèÿ óäàëåíû ôàéëû, êîòîðûå ìîãóò áûòü ñîçäàíû êîìàíäîé “autoreconf -iv”.
Âåðñèÿ áèáëèîòåêè OpenSCADA èçìåíåíà â 0:11:0.
6 Ïëàíû äàëüíåéøåãî ðàçâèòèÿ
Ê ïðîìûøëåííîìó ðåëèçó âåðñèè 0.7.0 çàïëàíèðîâàíî ðåøåíèå òàêèõ çàäà÷:
Ðåàëèçàöèÿ ïðèìèòèâîâ "Ñâÿçü" è "Ôóíêöèÿ" ÑÂÓ ñ öåëüþ ïðåäîñòàâëåíèÿ èíñòðóìåíòà ãðàôè÷åñêîãî ïðîãðàììèðîâàíèÿ.
Ðåàëèçàöèÿ ìîäóëÿ ÁÄ ÎÄÁÑ, PostgresSQL è òðàíñïîðòíîãî ìîäóëÿ ÁÄ.
Ðåàëèçàöèÿ íîâîãî ìåõàíèçìà/ìîäóëÿ òåñòîâ ñèñòåìû OpenSCADA.
Øèðîêîìàñøòàáíîå òåñòèðîâàíèå è ñòàáèëèçàöèÿ.
Ññûëêè
Referring pages:
Doc