Àâòîð: /RomanSavochenko
Îòêðûòàÿ SCADA ñèñòåìà OpenSCADA ïðèíàäëåæèò ê êëàññó SCADA(Supervisory Control and Data Aquisition) ñèñòåì. Ñèñòåìû äàííîãî êëàññà èñïîëüçóþòñÿ êàê ýëåìåíò ñèñòåì àâòîìàòèçàöèè òåõíîëîãè÷åñêèõ ïðîöåññîâ(ÀÑÓ-ÒÏ).
Ñèñòåìà OpenSCADA ñòðîèòñÿ êàê ìîäóëüíàÿ è âûñîêîìàñøòàáèðóåìàÿ ñèñòåìà. Ñëåäîâàòåëüíî âíóòðåííÿÿ ñòðóêòóðà ñèñòåìû äîëæíà óäîâëåòâîðÿòü âûñîêèì òðåáîâàíèÿì ãèáêîñòè.
Ëþáàÿ SCADA ñèñòåìà ïðåäîñòàâëÿåò âîçìîæíîñòü àðõèâèðîâàíèÿ ñîáðàííûõ äàííûõ, ò.å. ôîðìèðîâàíèå èñòîðèè èçìåíåíèÿ (äèíàìèêè) ïðîöåññîâ. Àðõèâû, óñëîâíî, ìîæíî ðàçäåëèòü íà äâà òèïà: àðõèâû ñîîáùåíèé è àðõèâû çíà÷åíèé.
Îñîáåííîñòüþ àðõèâîâ ñîîáùåíèé ÿâëÿåòñÿ òî, ÷òî àðõèâèðóþòñÿ, òàê íàçûâàåìûå, ñîáûòèÿ. Õàðàêòåðíûì ïðèçíàêîì ñîáûòèÿ ÿâëÿåòñÿ âðåìÿ âîçíèêíîâåíèÿ ýòîãî ñîáûòèÿ. Àðõèâû ñîîáùåíèé, îáû÷íî, èñïîëüçóþòñÿ äëÿ àðõèâèðîâàíèÿ ñîîáùåíèé â ñèñòåìå, ò.å. âåäåíèå ëîãîâ è ïðîòîêîëîâ.  çàâèñèìîñòè îò èñòî÷íèêà ñîîáùåíèÿ ìîãóò êëàññèôèöèðîâàòüñÿ ïî ðàçëè÷íûì êðèòåðèÿì. Íàïðèìåð, ýòî ìîãóò áûòü ïðîòîêîëû àâàðèéíûõ ñèòóàöèé, ïðîòîêîëû äåéñòâèé îïåðàòîðîâ, ïðîòîêîëû ñáîåâ ñâÿçè è äð.
Îñîáåííîñòüþ àðõèâîâ çíà÷åíèé ÿâëÿåòñÿ èõ ïåðèîäè÷íîñòü, îïðåäåëÿåìàÿ ïðîìåæóòêîì âðåìåíè ìåæäó äâóìÿ ñìåæíûìè çíà÷åíèÿìè. Àðõèâû çíà÷åíèé ïðèìåíÿþòñÿ äëÿ àðõèâèðîâàíèÿ èñòîðèè íåïðåðûâíûõ ïðîöåññîâ. Ïîñêîëüêó ïðîöåññ íåïðåðûâíûé, òî è àðõèâèðîâàòü åãî ìîæíî òîëüêî ïóò¸ì ââåäåíèÿ ïîíÿòèÿ êâàíòîâàíèÿ îïðîñà çíà÷åíèé, ïîñêîëüêó èíà÷å ìû ïîëó÷àåì àðõèâû áåñêîíå÷íûõ ðàçìåðîâ ââèäó íåïðåðûâíîñòè ñàìîé ïðèðîäû ïðîöåññà. Êðîìå ýòîãî, ïðàêòè÷åñêè, ìû ìîæåì ïîëó÷àòü çíà÷åíèÿ ñ ïåðèîäîì îãðàíè÷åííûì ñàìèìè èñòî÷íèêàìè äàííûõ. Íàïðèìåð, äîâîëüíî êà÷åñòâåííûå èñòî÷íèêè äàííûõ, â ïðîìûøëåííîñòè, ðåäêî ïîçâîëÿþò ïîëó÷àòü äàííûå ñ ÷àñòîòîé áîëåå 1êÃö. È ýòî áåç ó÷¸òà ñàìèõ äàò÷èêîâ, èìåþùèõ åù¸ ìåíåå êà÷åñòâåííûå õàðàêòåðèñòèêè.
Äëÿ âåäåíèÿ àðõèâîâ, â ñèñòåìå OpenSCADA, ïðåäóñìîòðåíà ïîäñèñòåìà "Àðõèâû". Äàííàÿ ïîäñèñòåìà, â ñîîòâåòñòâèè ñ òèïàìè àðõèâîâ, ñîñòîèò èç äâóõ ÷àñòåé: àðõèâ ñîîáùåíèé è àðõèâû çíà÷åíèé. Ïîäñèñòåìà, â öåëîì, ÿâëÿåòñÿ ìîäóëüíîé, ÷òî ïîçâîëÿåò ñîçäàâàòü àðõèâû, îñíîâàííûå íà ðàçëè÷íîé ïðèðîäå è ñïîñîáàõ õðàíåíèÿ äàííûõ.
Ìåõàíèçì àðõèâèðîâàíèÿ ñîîáùåíèé óæå ðàçðàáîòàí è ôóíêöèîíèðóåò â ñèñòåìå OpenSCADA, â òî âðåìÿ êàê ìåõàíèçì àðõèâèðîâàíèÿ çíà÷åíèé âñ¸ åù¸ îòñóòñòâóåò. Îñíîâíîé öåëüþ äàííîãî, äî÷åðíåãî ïðîåêòà, è ÿâëÿåòñÿ ðàçðàáîòêà ìåõàíèçìà àðõèâèðîâàíèÿ çíà÷åíèé (íåïðåðûâíûõ ïðîöåññîâ).  ïðîöåññå ðåàëèçàöèè äàííîãî ïðîåêòà ìîæåò ïðåòåðïåòü èçìåíåíèé, òàêæå, è ìåõàíèçì àðõèâèðîâàíèÿ ñîîáùåíèé, â íàïðàâëåíèè óíèôèêàöèè ìåõàíèçìîâ äîñòóïà ê àðõèâàì ñîîáùåíèé.
Ôóíêöèîíàëüíî, ðàçðàáîòêà ïðåäíàçíà÷åíà äëÿ ïðåäîñòàâëåíèÿ â ñèñòåìå OpenSCADA ìåõàíèçìà àðõèâèðîâàíèÿ äàííûõ íåïðåðûâíûõ ïðîöåññîâ, êîòîðûå ìîãóò áûòü ïîëó÷åíû èç ðàçëè÷íûõ èñòî÷íèêîâ äàííûõ.
Ýêñïëóàòàöèîííûì íàçíà÷åíèåì ðàçðàáîòêè ÿâëÿåòñÿ:
Àðõèòåêòóðíî, àðõèâèðîâàíèå çíà÷åíèé íåïðåðûâíûõ ïðîöåññîâ äîëæíî óäîâëåòâîðÿòü ñëåäóþùèì òðåáîâàíèÿì:
Èñõîäÿ èç àðõèòåêòóðíûõ òðåáîâàíèé ìîæíî ñôîðìóëèðîâàòü ñëåäóþùèå òðåáîâàíèÿ ê îòäåëüíûì êîìïîíåíòàì.
Òðåáîâàíèÿ ê ïîäñèñòåìå àðõèâèðîâàíèÿ:
Òðåáîâàíèÿ ê îáúåêòó áóôåðà çíà÷åíèé:
Òðåáîâàíèå ê ìåõàíèçìó ñâÿçûâàíèÿ ñ àòðèáóòàìè:
Ìîäóëüíàÿ ÷àñòü àðõèâà çíà÷åíèé äîëæíà îáåñïå÷èòü:
Êëþ÷åâûì êîìïîíåíòîì àðõèâèðîâàíèÿ çíà÷åíèé íåïðåðûâíûõ ïðîöåññîâ ÿâëÿåòñÿ îáúåêò áóôåðà çíà÷åíèé. Áóôåð çíà÷åíèé ïðåäíàçíà÷åí äëÿ õðàíåíèÿ ìàññèâà çíà÷åíèé, ïîëó÷åííûõ ñ îïðåäåë¸ííîé ïåðèîäè÷íîñòüþ îïðîñà(êâàíòîì âðåìåíè). Áóôåð çíà÷åíèé ìîæåò èñïîëüçîâàòüñÿ êàê äëÿ íåïîñðåäñòâåííîãî õðàíåíèÿ áîëüøèõ ìàññèâîâ çíà÷åíèé â àðõèâàõ çíà÷åíèé, ïåðåä íåïîñðåäñòâåííûì "ñáðîñîì" íà ôèçè÷åñêèå íîñèòåëè, òàê è äëÿ ìàíèïóëÿöèé ñ êàäðàìè çíà÷åíèé, ò.å. â ôóíêöèÿõ ïîêàäðîâîãî çàïðîñà çíà÷åíèé è èõ ïîìåùåíèÿ â áóôåðà àðõèâîâ.
Ó÷èòûâàÿ ïðèðîäó âíóòðåííèõ äàííûõ ñèñòåìû OpenSCADA, íàäåëèì áóôåð çíà÷åíèé âîçìîæíîñòüþ õðàíèòü äàííûå ÷åòûð¸õ òèïîâ: öåëûå, âåùåñòâåííûå, ëîãè÷åñêèå è ñòðîêîâûå. Êðîìå òîãî, ñ öåëüþ îïòèìèçàöèè õðàíåíèÿ, ïðåäîñòàâèì ïîääåðæêó ñëåäóþùèõ ðåæèìîâ áóôåðà:
Êàê âèäíî íà ðèñ.1, ïîëó÷åííûå äàííûå ïðåäâàðèòåëüíî ñîõðàíÿþòñÿ â áóôåðå àðõèâà. Äàëåå, äàííûå âûáèðàþòñÿ àðõèâàòîðàìè â ñîîòâåòñòâèè ñ ñîáñòâåííûìè êðèòåðèÿìè è ïîìåùàþòñÿ â õðàíèëèùà.  ìîìåíò çàïðîñà äàííûõ èç èñòîðèè, â íà÷àëå, ïðîâåðÿåòñÿ áóôåð íà íàëè÷èå çàïðîøåííûõ äàííûõ, à çàòåì îïðàøèâàþòñÿ àðõèâû â ïîñëåäîâàòåëüíîñòè óìåíüøåíèÿ êà÷åñòâà àðõèâà. Ôèçè÷åñêèå àðõèâû âûñòðàèâàþòñÿ â öåïî÷êó äëÿ îáåñïå÷åíèÿ ïîñëåäîâàòåëüíîãî îïðîñà â ñîîòâåòñòâèè ñ êà÷åñòâîì àðõèâàòîðîâ.
Áóôåð çíà÷åíèé ñîäåðæèò òîëüêî êîëüöåâîé ìàññèâ çíà÷åíèé, áåç êàêèõ ëèáî ìåõàíèçìîâ ðàáîòû ñ ôèçè÷åñêèì õðàíèëèùåì. Ýòî ñâÿçàííî ñ òåì, ÷òî ôóíêöèþ ôèçè÷åñêîãî õðàíèëèùà ìîãóò âûïîëíÿòü ðàçëè÷íûå ñðåäñòâà, îò ôàéëîâ íà ôàéëîâîé ñèñòåìå äî òàáëèö íà ÑÓÁÄ. Äëÿ ñâÿçè ñ ôèçè÷åñêèì õðàíèëèùåì èñïîëüçóåòñÿ ìîäóëè. Ìîäóëü ïðåäîñòàâëÿåò ðåàëèçàöèþ ìåõàíèçìà ñâÿçè ñ ôèçè÷åñêèì õðàíèëèùåì, îáúåêò êîòîðîãî âêëþ÷àåòñÿ â öåïî÷êó ôèçè÷åñêèõ àðõèâîâ äàííîãî àðõèâà. Òàêèì îáðàçîì, ðåçóëüòèðóþùèé àðõèâ ñêëàäûâàåòñÿ èç ïðîìåæóòî÷íîãî áóôåðà è îáúåêòîâ ðàçëè÷íûõ àðõèâàòîðîâ. Äîñòóï ê ïîëó÷åíîìó ñëî¸íîìó àðõèâó ïðîèçâîäèòñÿ öåíòðàëèçîâàíî, â ïîñëåäîâàòåëüíîñòè ñîîòâåòñòâóþùåé êà÷åñòâó åãî ñîñòàâëÿþùèõ.
Àðõèâ çíà÷åíèé ñîçäà¸òñÿ êàê íåçàâèñèìûé êîìïîíåíò, êîòîðûé âêëþ÷àåò áóôåð îáðàáàòûâàåìûé àðõèâàòîðàìè. Îñíîâíûì ïàðàìåòðîì àðõèâà çíà÷åíèÿ ÿâëÿåòñÿ èñòî÷íèê äàííûõ.  ðîëè èñòî÷íèêà äàííûõ ìîãóò âûñòóïàòü àòðèáóòû ïàðàìåòðîâ ñèñòåìû OpenSCADA, à òàêæå äðóãèå âíåøíèå èñòî÷íèêè äàííûõ (ïàññèâíûé ðåæèì). Äðóãèìè èñòî÷íèêàìè äàííûõ ìîãóò áûòü: ñåòåâûå àðõèâàòîðû óäàë¸ííûõ OpenSCADA ñèñòåì, ñðåäà ïðîãðàììèðîâàíèÿ ñèñòåìû OpenSCADA è äð. Íå ìåíåå âàæíûìè ïàðàìåòðàìè àðõèâà ÿâëÿþòñÿ ïàðàìåòðû áóôåðà. Îò ýòèõ ïàðàìåòðîâ çàâèñèò âîçìîæíîñòü ðàáîòû àðõèâàòîðîâ. Òàê, ïåðèîäè÷íîñòü çíà÷åíèé â áóôåðå äîëæíà áûòü íå áîëüøå ïåðèîäè÷íîñòè ñàìîãî áûñòðîãî àðõèâàòîðà, à ðàçìåð áóôåðà íå ìåíåå äâîéíîãî ðàçìåðà äëÿ ñîäåðæàíèÿ çíà÷åíèé äëÿ ñàìîãî ìåäëåííîãî àðõèâàòîðà.  ïðîòèâíîì ñëó÷àå âîçìîæíû ïîòåðè äàííûõ!
Èñõîäÿ èç âûøåèçëîæåííûõ ðàçìûøëåíèé, ìîæíî ñôîðìèðîâàòü àðõèòåêòóðó ìåõàíèçìà àðõèâèðîâàíèÿ çíà÷åíèé. Ïðåäñòàâèì ýòó àðõèòåêòóðó â âèäå ñòàòè÷åñêîé äèàãðàììû êëàññîâ (ðèñ.2). Íà ðèñ.2 ïðåäñòàâëåíà ñòàòè÷åñêàÿ äèàãðàììà êëàññîâ ïîäñèñòåìû àðõèâèðîâàíèÿ â öåëîì, âêëþ÷àÿ è àðõèâèðîâàíèå ñîîáùåíèé.  òàáëèöå 1 ïðåäñòàâëåíî îïèñàíèå êëàññîâ äèàãðàììû êëàññîâ.
Òàáëèöà 1. Êëàññû àðõèâèðîâàíèÿ çíà÷åíèé íåïðåðûâíûõ ïðîöåññîâ
Êëàññ | Îòâåòñòâåííîñòü | Ñâÿçè |
TParam | Êëàññ ïàðàìåòðà ëîãè÷åñêîãî óðîâíÿ. Ñîäåðæèò àòðèáóòû (îáúåêò TValue). Èñïîëüçóåòñÿ äëÿ ôîðìèðîâàíèÿ ïàðàìåòðîâ íåîáõîäèìîé ñòðóêòóðû. | Íàñëåäóåò îáúåêò çíà÷åíèé TValue, êîòîðûé ñîäåðæèò àòðèáóòû. |
TParamContr | Êëàññ ïàðàìåòðà ôèçè÷åñêîãî óðîâíÿ. Ñîäåðæèò àòðèáóòû (îáúåêò TValue). Ïðåäîñòàâëÿåòñÿ èñòî÷íèêîì äàííûõ "DAQ". Èìååò, ïðåäîïðåäåë¸ííóþ èñòî÷íèêîì äàííûõ, ñòðóêòóðó. | Íàñëåäóåò îáúåêò çíà÷åíèé TValue, êîòîðûé ñîäåðæèò àòðèáóòû. |
TValue | Êëàññ àòðèáóòîâ ïàðàìåòðîâ. Íåïîñðåäñòâåííî ñîäåðæèò àòðèáóòû TVal. Ïðàêòè÷åñêè, âûïîëíÿåò ôóíêöèþ êîíòåéíåðà àòðèáóòîâ ïàðàìåòðîâ TVal. | ßâëÿåòñÿ êîíòåéíåðîì àòðèáóòîâ çíà÷åíèé. Íàñëåäóåòñÿ êëàññàìè ðåàëèçóþùèìè ïàðàìåòð (ôèçè÷åñêèé, ëîãè÷åñêèé óðîâíè). |
TVal | Êëàññ àòðèáóòà ïàðàìåòðà. Ñîäåðæèò àòðèáóò è èíòåðôåéñ äîñòóïà ê íåìó. Õðàíèò ïîñëåäíåå çíà÷åíèå àòðèáóòà (âìåñòå ñ òî÷êîé âðåìåíè). | Ñîäåðæèòñÿ â êîíòåéíåðå àòðèáóòîâ TValue. Ìîæåò ñâÿçûâàòüñÿ ñ àðõèâîì äëÿ õðàíåíèÿ èñòîðèè. |
TValBuf | Êëàññ áóôåðà çíà÷åíèé. Ñîäåðæèò, â êîëüöåâîì áóôåðå óêàçàííîãî òèïà, èñòîðèþ èçìåíåíèÿ çíà÷åíèé. Ïðåäîñòàâëÿåò ìåõàíèçìû ðàçìåùåíèÿ çíà÷åíèÿ èëè êàäðà çíà÷åíèé, à òàêæå ìåõàíèçìû çàïðîñà çíà÷åíèÿ è êàäðà çíà÷åíèé. Ìîæåò òàêæå èñïîëüçîâàòüñÿ äëÿ âðåìåííîãî õðàíåíèÿ êàäðîâ çíà÷åíèé, ñ öåëüþ çàïðîñà èëè ðàçìåùåíèÿ â áóôåðàõ ýòîãî æå òèïà. | Íàñëåäóåòñÿ àðõèâîì TVArchive. |
TVArchEl | Êëàññ ýëåìåíòà àðõèâà àðõèâàòîðà. Ñîäåðæèò èíòåðôåéñ äëÿ îáðàáîòêè áóôåðà àðõèâà è äëÿ äîñòóïà ê çíà÷åíèÿì ôèçè÷åñêîãî àðõèâà. | Ñîäåðæèòñÿ â àðõèâàòîðå TVArchivator. Ññûëêè íà íåãî õðàíÿòñÿ â ñïèñêå õðàíèëèù àðõèâà TVArchive. Íàñëåäóåòñÿ êëàññîì ñâÿçûâàíèÿ ñ õðàíèëèùåì ModVArchEl. |
TVArchivator | Êëàññ àðõèâàòîðà çíà÷åíèé. Ñîäåðæèò êëàññû ýëåìåíòîâ àðõèâà àðõèâàòîðà TVArchEl. | Ñîäåðæèòñÿ â êîíòåéíåðå òèïà àðõèâà TTipArchivator. Íàñëåäóåòñÿ ìîäóëüíûì îáúåêòîì ñâÿçè ñ õðàíèëèùåì ModVArch |
TMArchivator | Êëàññ àðõèâàòîðà ñîîáùåíèé. Îáñëóæèâàåò çàïðîñû ê ñîîáùåíèÿì â àðõèâå. | Ñîäåðæèòñÿ â êîíòåéíåðå òèïà àðõèâà TTipArchivator. Íàñëåäóåòñÿ ìîäóëüíûì îáúåêòîì ñâÿçè ñ õðàíèëèùåì ModMArch |
TTipArchivator | Êëàññ òèïà àðõèâàòîðà. Òèï àðõèâàòîðà - îäèí äëÿ àðõèâàòîðîâ ñîîáùåíèé è çíà÷åíèé. | Ñîäåðæèò àðõèâàòîðû ñîîáùåíèé è çíà÷åíèé äàííîãî òèïà. Ñîäåðæèòñÿ â ïîäñèñòåìå "Àðõèâû". Íàñëåäóåòñÿ êîðíåâûì îáúåêòîì ìîäóëÿ ïîäñèñòåìû "Àðõèâû" ModArch. |
TVArchive | Êëàññ àðõèâà. Ñîäåðæèò îïèñàíèå èñòî÷íèêà äàííûõ, áóôåð è ñïèñîê öåëåâûõ àðõèâàòîðîâ, èñïîëüçóåìûõ äëÿ àðõèâèðîâàíèÿ çíà÷åíèé TVArchEl. | Ñîäåðæèòñÿ â îáúåêòå ïîäñèñòåìû àðõèâèðîâàíèÿ TArchiveS. Íàñëåäóåò îáúåêò áóôåðà TValBuf. Ñîäåðæèò ñïèñîê ýëåìåíòîâ ôèçè÷åñêèõ àðõèâîâ TVArchEl. Èñïîëüçóåòñÿ àòðèáóòîì çíà÷åíèé TVal äëÿ àññîöèàöèè åãî ñ àðõèâîì. |
TArchiveS | Êëàññ ïîäñèñòåìû "Àðõèâû". Ñîäåðæèò àðõèâû çíà÷åíèé TVArchive. Ñîäåðæèò ïðîìåæóòî÷íûé áóôåð àðõèâà ñîîáùåíèé. Ïðåäîñòàâëÿåò ìåõàíèçì öåíòðàëèçîâàíîãî äîñòóïà ê àðõèâèðîâàííûì ñîîáùåíèÿì. | Ñîäåðæèò ìîäóëè àðõèâàòîðîâ TTipArchivator. Ñîäåðæèò àðõèâû çíà÷åíèé è áóôåð àðõèâà ñîîáùåíèé. |
ModArch | Êîðíåâîé îáúåêò ìîäóëÿ ñâÿçè ñ õðàíèëèùåì. | Íàñëåäóåò îáúåêò òèïà àðõèâàòîðà TTipArchivator. |
ModVArch | Ìîäóëüíûé îáúåêò ðåàëèçàöèè ñâÿçè ñ õðàíèëèùåì çíà÷åíèé. | Íàñëåäóåò îáúåêò àðõèâàòîðà çíà÷åíèé TVArchivator. |
ModMArch | Ìîäóëüíûé îáúåêò ðåàëèçàöèè ñâÿçè ñ õðàíèëèùåì ñîîáùåíèé. | Íàñëåäóåò îáúåêò àðõèâàòîðà ñîîáùåíèé TMArchivator. |
ModVArchEl | Ìîäóëüíûé îáúåêò ýëåìåíòà àðõèâà çíà÷åíèé. | Íàñëåäóåò îáúåêò ýëåìåíòà àðõèâà çíà÷åíèé TVArchEl. |
Èç ÷èñëà ýòèõ êëàññîâ íóæíî ðàçðàáîòàòü:
À òàêæå äîðàáîòàòü êëàññû:
Íà ðèñ. 3 ïðåäñòàâëåíà äèíàìèêà ïðîöåññà çàïèñè ñîîáùåíèé ãåíåðèðóåìûõ îáúåêòàìè ñèñòåìû OpenSCADA â àðõèâ ñîîáùåíèé. Äèíàìèêà ïðåäñòàâëåíà â âèäå UML äèàãðàììû êîîïåðàöèè. Ðàññìîòðèì äàííûé ïðîöåññ:
Íà ðèñ. 4 ïðåäñòàâëåíà äèíàìèêà ïðîöåññà çàïðîñà ñîîáùåíèé, îáúåêòàìè ñèñòåìû OpenSCADA, èç àðõèâà ñîîáùåíèé. Äèíàìèêà ïðåäñòàâëåíà â âèäå UML äèàãðàììû êîîïåðàöèè.
Ðàññìîòðèì äàííûé ïðîöåññ:
Íà ðèñ. 5 ïðåäñòàâëåíà äèíàìèêà ïðîöåññà ïàññèâíîãî àðõèâèðîâàíèÿ çíà÷åíèé. Äèíàìèêà ïðåäñòàâëåíà â âèäå UML äèàãðàììû êîîïåðàöèè. Ðåæèì ïàññèâíîãî àðõèâèðîâàíèÿ ïîäðàçóìåâàåò ôóíêöèîíèðîâàíèå àðõèâà çíà÷åíèÿ â ðåæèìå îæèäàíèÿ âõîäíûõ çíà÷åíèé. Èñòî÷íèêîì âõîäíûõ çíà÷åíèé ìîãóò áûòü êàê àòðèáóòû ïàðàìåòðîâ òàê è äðóãèå âíåøíèå èñòî÷íèêè äàííûõ. Íàïðèìåð, äðóãèìè âíåøíèìè èñòî÷íèêàìè äàííûõ ìîãóò âûñòóïàòü: ñðåäà ïðîãðàììèðîâàíèÿ ñèñòåìû OpenSCADA, ñåòåâûå èñòî÷íèêè äàííûõ (ñåòåâîé àðõèâàòîð óäàë¸ííîé OpenSCADA ñòàíöèè) è äð.
Ðàññìîòðèì ïðîöåññ ïàññèâíîãî àðõèâèðîâàíèÿ çíà÷åíèé:
Òàêèì îáðàçîì ïðîèçâîäèòñÿ àðõèâèðîâàíèå çíà÷åíèé â àðõèâàòîðàõ ñ ðàçëè÷íûìè ïàðàìåòðàìè. Ïðè ýòîì ðåàëüíîå ðàçìåùåíèå çíà÷åíèé â õðàíèëèùàõ áóôåðèçèðîâàíî, è ìîæåò âûïîëíÿòüñÿ íåçàâèñèìî, òåì ñàìûì íå ïðåïÿòñòâóÿ ïðîöåññó ðàçìåùåíèÿ çíà÷åíèé â áóôåðàõ.
Ïðîöåññ ïàññèâíîãî àðõèâèðîâàíèÿ êàäðîâ çíà÷åíèé àíàëîãè÷åí, òîëüêî âìåñòî ðàçìåùåíèÿ îäíîãî çíà÷åíèÿ âûïîëíÿåòñÿ ðàçìåùåíèÿ êàäðà è âìåñòî ôóíêöèé òèïà setS(), setI() èñïîëüçóåòñÿ ôóíêöèÿ setVal().
Íà ðèñ. 6 ïðåäñòàâëåíà äèíàìèêà ïðîöåññà àêòèâíîãî àðõèâèðîâàíèÿ çíà÷åíèé. Äèíàìèêà ïðåäñòàâëåíà â âèäå UML äèàãðàììû êîîïåðàöèè. Ðåæèì àêòèâíîãî àðõèâèðîâàíèÿ ïîäðàçóìåâàåò íåïîñðåäñòâåííûé îïðîñ àðõèâîì èñòî÷íèêà çíà÷åíèé, ñ öåëüþ ïîëó÷åíèÿ çíà÷åíèé. Íà íàñòîÿùèé ìîìåíò çàêëàäûâàåòñÿ ïîääåðæêà òîëüêî àòðèáóòîâ ïàðàìåòðîâ â êà÷åñòâå òàêèõ èñòî÷íèêîâ.
Ðàññìîòðèì ïðîöåññ àêòèâíîãî àðõèâèðîâàíèÿ çíà÷åíèé:
Îñîáåííîñòüþ àêòèâíîãî àðõèâèðîâàíèÿ ÿâëÿåòñÿ ïåðåîäè÷åñêèé îïðîñ, àêòèâíûìè àðõèâàìè, èñòî÷íèêîâ çíà÷åíèé. Äëÿ ýòèõ öåëåé áóäåò ïðåäóñìîòðåí îòäåëüíûé ïîòîê. Ìèíèìàëüíàÿ ïåðèîäè÷íîñòü îïðîñà àêòèâíûõ àðõèâîâ ïðåäóñìàòðèâàåòñÿ íà óðîâíå 1 ñåê. Áîëåå âûñîêàÿ ÷àñòîòà îïðîñà äîëæíà äîñòèãàòüñÿ â ïàññèâíîì ðåæèìå àðõèâèðîâàíèÿ, ïóò¸ì çàãðóçêè çíà÷åíèé êàäðàìè.
Íà ðèñ. 7 ïðåäñòàâëåíà äèíàìèêà ïðîöåññà çàïðîñà çíà÷åíèé èç àðõèâà. Äèíàìèêà ïðåäñòàâëåíà â âèäå UML äèàãðàììû êîîïåðàöèè. Çàïðîñèòü çíà÷åíèå èç àðõèâà ìîæíî íåñêîëüêèìè ñïîñîáàìè. Ïåðâûé ñïîñîá ýòî ïðîçðà÷íûé çàïðîñ çíà÷åíèÿ ïàðàìåòðà ñ óêàçàíèåì ìåòêè âðåìåíè.  ýòîì ñëó÷àå çàïðîñ ïåðåíàïðàâëÿåòñÿ àññîöèèðîâàíîìó ñ àòðèáóòîì àðõèâó. Âòîðîé ñïîñîá ýòî íåïîñðåäñòâåííîå îáðàùåíèå ê àðõèâó. Âòîðûì ñïîñîáîì ìîæíî çàïðàøèâàòü êàê îòäåëüíûå çíà÷åíèÿ òàê è êàäðû çíà÷åíèé.
Ðàññìîòðèì ïðîöåññ çàïðîñà çíà÷åíèé èç àðõèâà:
Îòäåëüíûå ðåàëèçàöèè õðàíèëèù ìîãóò ïîääåðæèâàòü èíèöèàòèâó ïî ñîçäàíèþ àðõèâîâ, êîòîðûå â õðàíèëèùå åñòü, à â ñèñòåìå îòñóòñòâóþò. Òàêàÿ ñèòóàöèÿ âîçìîæíà äëÿ õðàíèëèù íà ôàéëîâîé ñèñòåìå. Íàïðèìåð, ïðè ïåðåíîñå àðõèâîâ ñ îäíîé ñòàíöèè íà äðóãóþ.  òàêèõ ñëó÷àÿõ, ìîäóëü ìîæåò ñàìîñòîÿòåëüíî äîáàâëÿòü àðõèâû â ñèñòåìó, ïðè çàãðóçêå.
 ñîîòâåòñòâèè ñ ðàçìûøëåíèÿìè âûøå, ðåàëèçóåì àðõèâèðîâàíèå çíà÷åíèé. Äëÿ öåëåâîé ðåàëèçàöèè ñîñòàâèì ïëàí ðåàëèçàöèè:
Öåëè ïðèñëåäóåìûå ðåàëèçàöèåé:
Ñîçäàí áóôåð ñ ïîääåðæêîé ñëåäóþùèõ ðåæèìîâ:
Áóôåðîì ïîääåðæèâàåòñÿ, òàêæå, âîçìîæíîñòü êîïèðîâàíèå èç îäíîãî áóôåðà â äðóãîé, ÷òî ìîæåò áûòü èñïîëüçîâàíî äëÿ ïîêàäðîâîãî çàïðîñà èëè çàãðóçêè.  ïðîöåññå êîïèðîâàíèÿ ìîæíî óêàçûâàòü ãðàíèöû êîïèðóåìûõ çíà÷åíèé.
Çàïðîñîì îòäåëüíûõ çíà÷åíèé ïîääåðæèâàåòñÿ ðåæèì ïðèòÿãèâàíèÿ êàê ê áîëüøåìó òàê è ê ìåíüøåìó çíà÷åíèþ â àðõèâå. Ýòî ïîçâîëÿåò âûïîëíÿòü îáõîä áóôåðà êàê ñâåðõó òàê è ñíèçó ïî ìåòîäó óâåëè÷åíèÿ èëè óìåíüøåíèÿ ïîëó÷åíîãî âðåìåíè íà åäèíèöó.
 ïðîöåññå ðåàëèçàöèè ñîçäàíû: îáúåêò àðõèâà (TVArchive), îáúåêò àðõèâàòîðà çíà÷åíèé (TVArchivator) è ýëåìåíò àðõèâà TVArchEl.
TVArchive ñîäåðæèòñÿ íåïîñðåäñòâåííî â ïîäñèñòåìå àðõèâèðîâàíèÿ. Îáúåêò âûïîëíÿåò ñáîð äàííûõ îò èñòî÷íèêîâ è íàêîïëåíèå èõ â ïðîìåæóòî÷íîì áóôåðå. Äàëåå äàííûå íàêîïëåííûå â áóôåðå ìîãóò âûáèðàòüñÿ àðõèâàòîðàìè â ñîîòâåòñòâèè ñ èõ õàðàêòåðèñòèêàìè. TVArchive òàêæå ñëóæèò äëÿ öåíòðàëèçîâàííîãî äîñòóïà ê äàííûì àðõèâà. Ïðè÷¸ì êàê ê äàííûì â áóôåðå, òàê è ê äàííûì àðõèâàòîðîâ. Ïîääåðæèâàþòñÿ ðåæèìû îáùåãî è èíäèâèäóàëüíîãî äîñòóïà ê àðõèâó.  ðåæèìå îáùåãî äîñòóïà äàííûå ñîáèðàþòñÿ êàê ñ áóôåðà òàê è ñî âñåõ àðõèâàòîðîâ.  ðåæèìå èíäèâèäóàëüíîãî äîñòóïà ìîæíî ïîëó÷èòü äàííûå òîëüêî èç óêàçàííîãî àðõèâàòîðà èëè áóôåðà. Äîñòóï ê àðõèâàì ïðîèçâîäèòñÿ ÷åðåç âêëàäêó "Àðõèâû çíà÷åíèé" ïîäñèñòåìû "Àðõèâû" (ðèñ. 8).  ýòîé âêëàäêå ìîæíî âûïîëíÿòü îñíîâíûå äåéñòâèÿ íàä àðõèâàìè: ñîçäàíèå, óäàëåíèå è ïåðåõîä. Êðîìå ýòîãî, âêëàäêà ñîäåðæèò ïîëå óñòàíîâêè ïåðèîäè÷íîñòè àêòèâíîãî ñáîðà äàííûõ. Çíà÷åíèå óêàçûâàåòñÿ â ìèëëèñåêóíäàõ è äîëæíî áûòü ìåíüøå ñàìîãî áûñòðîãî àêòèâíîãî àðõèâà.
Äëÿ óïðàâëåíèÿ àðõèâîì çíà÷åíèé ñîçäàíà êîíôèãóðàöèîííàÿ ñòðàíèöà (íà ÿçûêå ñöåíàðèåâ èíòåðôåéñà óïðàâëåíèÿ). Ñòðàíèöà ñîäåðæèò òðè âêëàäêè: "Àðõèâ", "Àðõèâàòîðû" è "Çíà÷åíèÿ". Âêëàäêà "Àðõèâ" ñîäåðæèò îñíîâíûå äàííûå àðõèâà (ðèñ. 9). Çäåñü ìîæíî îïðåäåëèòü òàêèå ïàðàìåòðû:
Àðõèâ ìîæåò áûòü â äâóõ ñîñòîÿíèÿõ: "Èñïîëíÿåòñÿ" è "Îñòàíîâëåí".  ñîñòîÿíèè "Îñòàíîâëåí" àðõèâ íå ñâÿçàí íè ñ àðõèâàòîðàìè íè ñ èñòî÷íèêîì äàííûõ.  ñîñòîÿíèè "Èñïîëíÿåòñÿ" àðõèâ ñâÿçûâàåòñÿ ñ èñòî÷íèêîì äàííûõ (èëè ïîëó÷àåò çíà÷åíèå îò ïàññèâíîãî èñòî÷íèêà) è ïîäêëþ÷àåòñÿ ê àðõèâàòîðàì. Äëÿ óêàçàíèÿ íåîáõîäèìîñòè çàïóñêà ïðåäíàçíà÷åí ïðèçíàê "Çàïóñêàòü".
Àðõèâ ìîæåò õðàíèòüñÿ íà îäíîé èç äîñòóïíûõ ÁÄ, ÷òî óêàçûâàåòñÿ â ïîëå "ÁÄ àðõèâà (ìîäóëü.áä)".
 ñîîòâåòñòâèè ñ òèïàìè äàííûõ ïîääåðæèâàåìûõ ñèñòåìîé "OpenSCADA" àðõèâîì ïîääåðæèâàþòñÿ òèïû çíà÷åíèé: Ëîãè÷åñêèé, Öåëûé, Âåùåñòâåííûé è Ñòðîêîâûé.
 êà÷åñòâå èñòî÷íèêà äàííûõ àðõèâ ïîääåðæèâàåò:
Ïåðèîäè÷íîñòü áóôåðà äîëæíà óñòàíàâëèâàòüñÿ â ìèíèìàëüíîå çíà÷åíèå ïåðèîäè÷íîñòè àðõèâàòîðîâ.
Ðàçìåð áóôåðà äîëæåí ñîãëàñîâûâàòüñÿ ñ ïåðèîäè÷íîñòüþ îáðàùåíèÿ àðõèâàòîðîâ ê áóôåðó. Ðåêîìåíäóåòñÿ óñòàíàâëèâàòü ðàçìåð àðõèâà ñ öåëüþ õðàíåíèÿ çíà÷åíèé â òå÷åíèè âðåìåíè â äâà ðàçà áîëüøåãî ïåðèîäè÷íîñòè îáðàùåíèÿ ê áóôåðó(àðõèâèðîâàíèÿ) ñàìîãî ìåäëåííîãî àðõèâàòîðà.
Ïðèçíàê "Ƹñòêàÿ ñåòêà áóôåðà" óêàçûâàåò íà ïðèìåíåíèå ìåõàíèçìà æ¸ñòêîãî êâàíòîâàíèÿ ñ ïðèâÿçêîé çíà÷åíèé ê ñåòêå êâàíòà, áåç õðàíåíèÿ âðåìåíè îòäåëüíî âçÿòîãî çíà÷åíèÿ.  ïðîòèâíîì ñëó÷àå èñïîëüçóåòñÿ ìÿãêàÿ ñåòêà, ò.å. âìåñòå ñ çíà÷åíèå õðàíèòñÿ è âðåìÿ.
Ïðèçíàê "Âûñîêîå ðàçðåøåíèå âðåìåíè áóôåðà" óêàçûâàåò íà õðàíåíèå çíà÷åíèé ñ òî÷íîñòüþ 1 ìêñ. Èíà÷å òî÷íîñòü ñîñòàâëÿåò 1 ñåê. Èñïîëüçóåòñÿ ïðè àðõèâèðîâàíèè áûñòðûõ ïðîöåññîâ.
Âêëàäêà "Àðõèâàòîðû" ñîäåðæèò èíôîðìàöèþ ïî àðõèâàòîðàì îáñëóæèâàþùèì äàííûé àðõèâ (ðèñ. 10). Çäåñü ìîæíî ëåãêî ïîäêëþ÷èòü èëè îòêëþ÷èòü àðõèâ ê íóæíûì àðõèâàòîðàì, à òàêæå ïîëó÷èòü èíôîðìàöèþ î ðàçìåðå àðõèâà íà ðàçëè÷íûõ àðõèâàòîðàõ.
Âêëàäêà "Çíà÷åíèÿ" ñîäåðæèò ôîðìó äëÿ ïðîñìîòðà çíà÷åíèé â àðõèâå (ðèñ. 11). Ñ ïîìîùüþ ýòîé ôîðìû ìîæíî ïðîñìàòðèâàòü çíà÷åíèÿ çà ëþáîé ïðîìåæóòîê âðåìåíè êàê äëÿ âñåõ àðõèâàòîðîâ âìåñòå, òàê è äëÿ êàæäîãî àðõèâàòîðà îòäåëüíî.
TVArchivator ÿâëÿåòñÿ ìîäóëüíûì îáúåêòîì ïîäñèñòåìû "Àðõèâû", ñîäåðæàùåì ðåàëèçàöèþ àðõèâàòîðà çíà÷åíèé îòäåëüíî âçÿòîãî ìîäóëÿ. Îáúåêò ñîäåðæèò ðåàëèçàöèþ äîñòóïà ê ôèçè÷åñêîìó àðõèâó. Îáùåé çàäà÷åé äàííîãî îáúåêòà ÿâëÿåòñÿ ñáîð äàííûõ ïî áóôåðàì àðõèâîâ, àðõèâèðîâàíèå è ïðåäîñòàâëåíèå äîñòóïà ê çíà÷åíèÿì â àðõèâå. Àðõèâàòîð ñîäåðæèò ýëåìåíòû àðõèâîâ (TVArchEl), êîòîðûå îí è îáðàáàòûâàåò.
Äîñòóï ê àðõèâàòîðàì çíà÷åíèé, êàê è ê àðõèâàòîðàì ñîîáùåíèé, ïðîèçâîäèòñÿ ÷åðåç âêëàäêó "Àðõèâàòîðû" ñòðàíèöû ìîäóëÿ, ïîäñèñòåìû "Àðõèâû" (ðèñ.12). Íà ýòîé ñòðàíèöå ïðåäñòàâëåíû ñïèñêè àðõèâàòîðîâ ñîîáùåíèé è çíà÷åíèé.
Äëÿ óïðàâëåíèÿ àðõèâàòîðîì çíà÷åíèé ñîçäàíà êîíôèãóðàöèîííàÿ ñòðàíèöà (íà ÿçûêå ñöåíàðèåâ). Ñòðàíèöà ñîäåðæèò äâå âêëàäêè: "Àðõèâàòîð" è "Àðõèâû". Âêëàäêà "Àðõèâàòîð" ñîäåðæèò îñíîâíûå äàííûå (ðèñ. 13). Çäåñü ìîæíî îïðåäåëèòü òàêèå ïàðàìåòðû:
Àðõèâàòîð ìîæåò áûòü â ñîñòîÿíèè "Îñòàíîâëåí" è "Âûïîëíÿåòñÿ".  ñîñòîÿíèè "Îñòàíîâëåí" àðõèâàòîð íå îáðàáàòûâàåò àðõèâû è âîîáùå ñ íèìè íèêàê íå ñâÿçûâàåòñÿ.  ñîñòîÿíèè "Âûïîëíÿåòñÿ" àðõèâàòîð ñîäåðæèò ýëåìåíòû àðõèâîâ (TVArchEl) è âûïîëíÿåò ïåðèîäè÷åñêóþ îáðàáîòêó áóôåðîâ àðõèâîâ. Ïåðèîä îáðàáîòêè áóôåðîâ îïðåäåëÿåòñÿ ïåðèîäîì àðõèâèðîâàíèÿ. Äëÿ óêàçàíèÿ íåîáõîäèìîñòè çàïóñêà ïðåäíàçíà÷åí ïðèçíàê "Çàïóñêàòü".
Àðõèâàòîð ìîæåò õðàíèòüñÿ íà îäíîé èç äîñòóïíûõ ÁÄ, ÷òî óêàçûâàåòñÿ â ïîëå "ÁÄ àðõèâàòîðà (ìîäóëü.áä)".
Êàæäûé àðõèâàòîð ñîäåðæèò çíà÷åíèÿ ñ óêàçàííûì ïåðèîäîì. Åñëè ïåðèîäè÷íîñòü çíà÷åíèé àðõèâàòîðà áîëüøå ÷åì â áóôåðå àðõèâà, òî ïðîèçâîäèòñÿ óñðåäíåíèå èëè äðóãàÿ îïåðàöèÿ îáúåäèíåíèÿ çíà÷åíèé. Îïåðàöèÿ îáúåäèíåíèÿ ðåàëèçóåòñÿ â ìîäóëå àðõèâàòîðà.
Äëÿ ôèçè÷åñêîé àäðåñàöèè àðõèâîâ ïðåäóñìîòðåíî ïîëå àäðåñà.  çàâèñèìîñòè îò ðåàëèçàöèè ìîäóëÿ àðõèâàòîðà ýòî ïîëå ìîæåò èìåòü ðàçëè÷íîå çíà÷åíèå. Òàê, äëÿ àðõèâàòîðà íà ôàéëîâóþ ñèñòåìó (ÔÑ), ýòî ïîëå ñîäåðæèò ïóòü ê äèðåêòîðèè ñ àðõèâàìè.
Ñ öåëüþ îöåíêè íàãðóçêè íà àðõèâèðîâàíèå, íà äàííîé ñòðàíèöå ñîäåðæèòñÿ ïàðàìåòð âðåìåíè àðõèâèðîâàíèÿ. Ðåàëüíîå âðåìÿ àðõèâèðîâàíèÿ äîëæíî áûòü ìåíüøå ïåðèîäà àðõèâèðîâàíèÿ!
 çàâèñèìîñòè îò ìîäóëÿ ðåàëèçóþùåãî äîñòóï ê õðàíèëèùó, íà äàííîé ñòðàíèöå ìîãóò ñîäåðæàòüñÿ âêëàäêè ñî ñïåöèàëèçèðîâàííûìè äëÿ ìîäóëÿ íàñòðîéêàìè. Òàê, ìîäóëü àðõèâèðîâàíèÿ íà ôàéëîâóþ ñèñòåìó ñîäåðæèò âêëàäêó "Äîïîëíèòåëüíûå îïöèè" (ðèñ. 14). Çäåñü ñîäåðæàòüñÿ ñëåäóþùèå ïàðàìåòðû:
Äëÿ ïðèíóäèòåëüíîãî âûïîëíåíèÿ ïðîâåðêè äèðåêòîðèè àðõèâàòîðà íà âêëàäêå ïðåäóñìîòðåíà êíîïêà "Ïðîâåðèòü äèðåêòîðèþ àðõèâàòîðà ñåé÷àñ".
Âêëàäêà "Àðõèâû" ñîäåðæèò ïåðå÷åíü àðõèâîâ, îáñëóæèâàåìûõ àðõèâàòîðîì (ðèñ. 15). Ìîäóëè àðõèâàòîðîâ ìîãóò äîáàâëÿòü ñâîþ èíôîðìàöèþ â ýòó âêëàäêó. Òàê, àðõèâàòîð íà ôàéëîâóþ ñèñòåìó äîáàâëÿåò ñþäà èíôîðìàöèþ ïî ðàçìåðàì ôàéëîâ íà ôàéëîâîé ñèñòåìå ïî êàæäîìó àðõèâó.
Ñ öåëüþ óïðîùåíèÿ çàäà÷è íàçíà÷åíèÿ àðõèâîâ äëÿ àòðèáóòîâ ïàðàìåòðîâ íà ñòðàíèöå êîíôèãóðàöèè ïàðàìåòðà áûëà äîáàâëåíà âêëàäêà "Àðõèâèðîâàíèå" (ðèñ.16). Íà ýòîé âêëàäêå ñîäåðæèòñÿ ñïèñîê àòðèáóòîâ ñ ïåðå÷íåì àðõèâàòîðîâ â êîëîíêàõ. Ïðîñòûì âûáîðîì àðõèâàòîðîâ ìîæíî íàçíà÷àòü àðõèâû äëÿ àòðèáóòîâ.
Äëÿ ðåàëèçàöèè àðõèâèðîâàíèÿ íà ôàéëîâóþ ñèñòåìó ïðåäúÿâëÿþòñÿ ñëåäóþùèå òðåáîâàíèÿ:
 ñîîòâåòñòâèè ñ âûøåèçëîæåííûìè òðåáîâàíèÿìè, ïðèíÿòî ðåøåíèå îðãàíèçàöèè àðõèâèðîâàíèÿ ìåòîäîì ìíîæåñòâåííîñòè ôàéëîâ (äëÿ êàæäîãî èñòî÷íèêà). Öèêëè÷íîñòü àðõèâà ïðîèçâîäèòñÿ íà óðîâíå ôàéëîâ, ò.å. ñîçäàåòñÿ íîâûé ôàéë à ñàìûé ñòàðûé óäàëÿåòñÿ. Äëÿ áûñòðîãî ñæàòèÿ èñïîëüçóåòñÿ ìåòîä ïðèòÿãèâàíèÿ ê ïîñëåäíåìó îäèíàêîâîìó çíà÷åíèþ. Äëÿ ýòèõ öåëåé â ôàéëå àðõèâà ïðåäóñìàòðèâàåòñÿ áèòîâàÿ òàáëèöà óïàêîâêè ðàçìåðîì îäèí â îäèí ñ êîëè÷åñòâîì õðàíèìûõ äàííûõ. Ò.å. êàæäûé áèò ñîîòâåòñòâóåò îäíîìó çíà÷åíèþ â àðõèâå. Çíà÷åíèå áèòà óêàçûâàåò íà íàëè÷èå çíà÷åíèÿ. Äëÿ ïîòîêà îäèíàêîâûõ çíà÷åíèé áèòû áóäóò îáíóëåíû.  ñëó÷àå ñ àðõèâîì ñòðîê, òàáëèöà ÿâëÿåòñÿ íå áèòîâîé à áàéòîâîé è ñîäåðæèò äëèíó óêàçàííîãî çíà÷åíèÿ.  ñëó÷àå ïîñòóïëåíèÿ ïîòîêà îäèíàêîâûõ çíà÷åíèé äëèíà áóäåò íóëåâîé è ÷èòàòüñÿ áóäåò ïåðâîå îäèíàêîâîå çíà÷åíèå. Ïîñêîëüêó òàáëèöà áàéòîâàÿ, òî àðõèâ ñìîæåò õðàíèòü ñòðîêè äëèíîé íå áîëåå 255 ñèìâîëîâ. Òàêèì îáðàçîì, ìåòîäèêè õðàíåíèÿ, êàê è äàííûå, ìîæíî ðàçäåëèòü íà äàííûå ôèêñèðîâàííîãî è íå ôèêñèðîâàííîãî ðàçìåðà. Îáùàÿ ñòðóêòóðà ôàéëà àðõèâà ïðèâåäåíà íà ðèñ. 17.
Ïðè ñîçäàíèè íîâîãî ôàéëà àðõèâà ôîðìèðóåòñÿ çàãîëîâîê (ñòðóêòóðà çàãîëîâêà â òàáëèöå 2), íóëåâàÿ áèòîâàÿ òàáëèöà óïàêîâêè àðõèâà è ïåðâîå íåäîñòîâåðíîå çíà÷åíèå. Òàêèì îáðàçîì, ïîëó÷èòñÿ àðõèâ èíèöèàëèçèðîâàííûé íåäîñòîâåðíûìè çíà÷åíèÿìè.  äàëüíåéøåì, íîâûå çíà÷åíèÿ áóäóò âñòàâëÿòüñÿ â îáëàñòü çíà÷åíèé ñ êîððåêòèðîâêîé èíäåêñíîé òàáëèöû óïàêîâêè. Èç ýòîãî ñëåäóåò, ÷òî ïàññèâíûå àðõèâû áóäóò âûðîæäàòüñÿ â ôàéëû, ðàçìåðîì â çàãîëîâîê è áèòîâóþ òàáëèöó.
Òàáëèöà 2. Ñòðóêòóðà çàãîëîâêà ôàéëà àðõèâà
Ïîëå | Îïèñàíèå | Ðàçìåð áàéò(áèò) |
f_tp | Ñèñòåìíîå èìÿ àðõèâà ("OpenSCADA Val Arch.") | 20 |
archive | Èìÿ àðõèâà êîòîðîìó ïðèíàäëåæèò ôàéë. | 20 |
beg | Âðåìÿ íà÷àëà àðõèâíûõ äàííûõ (ìêñ) | 8 |
end | Âðåìÿ êîíöà àðõèâíûõ äàííûõ (ìêñ) | 8 |
period | Ïåðèîäè÷íîñòü àðõèâà (ìêñ) | 8 |
vtp | Òèï çíà÷åíèÿ â àðõèâå (Ëîãè÷åñêèé, Öåëûé, Âåùåñòâåííûé, Ñòðîêà) | (3) |
hgrid | Ïðèçíàê èñïîëüçîâàíèÿ æ¸ñòêîé ñåòêè â áóôåðå àðõèâà | (1) |
hres | Ïðèçíàê èñïîëüçîâàíèÿ âðåìåíè âûñîêîãî ðàçðåøåíèÿ (ìêñ) â áóôåðå àðõèâà | (1) |
reserve | Ðåçåðâ | 14 |
term | Ñèìâîë îêîí÷àíèÿ çàãîëîâêà àðõèâà (0x55) | 1 |
Ðàçúÿñíåíèå ìåõàíèçìà ïîñëåäîâàòåëüíîé óïàêîâêè ïðèâåäåíî íà ðèñ. 18. Êàê ìîæíî âèäåòü èç ðèñóíêà, ïðèçíàê óïàêîâêè ñîäåðæèò äëèíó (íå ôèêñèðîâàííûå òèïû) èëè ïðèçíàê óïàêîâêè (ôèêñèðîâàííûå òèïû) îòäåëüíî âçÿòîãî çíà÷åíèÿ. Ýòî çíà÷èò, ÷òî äëÿ ïîëó÷åíèÿ ñìåùåíèÿ íóæíîãî çíà÷åíèÿ íåîáõîäèìî ñëîæèòü äëèíû âñåõ ïðåäûäóùèõ äåéñòâèòåëüíûõ çíà÷åíèé. Âûïîëíåíèå äàííîé îïåðàöèè êàæäûé ðàç è äëÿ êàæäîãî çíà÷åíèÿ ÿâëÿåòñÿ êðàéíå íàêëàäíîé îïåðàöèåé. Ïîýòîìó, áûë âíåäð¸í ìåõàíèçì êåøèðîâàíèÿ ñìåùåíèé çíà÷åíèé. Ìåõàíèçì êåøèðóåò ñìåùåíèÿ çíà÷åíèé ÷åðåç ïðåäîïðåäåë¸ííîå èõ êîëè÷åñòâî, à òàêæå êåøèðóåò ñìåùåíèå ïîñëåäíåãî çíà÷åíèÿ ê êîòîðîìó ïðîèçâîäèëñÿ äîñòóï (îòäåëüíî íà çàïèñü è ÷òåíèå).
Èçìåíåíèÿ çíà÷åíèé ñóùåñòâóþùåãî àðõèâà çàëîæåíî, è ïðåäñòàâëÿåò ñîáîé âñòàâêó êàäðà çíà÷åíèé â ñåðåäèíó ôàéëà. Çà ñ÷¸ò îïòèìèçàöèè ïðîöåññà âñòàâêè, ïóò¸ì èñïîëüçîâàíèÿ ïàêåòíîãî ìåõàíèçìà, äàííûé ïðîöåññ íå ÿâëÿåòñÿ íàêëàäíûì äëÿ ñèñòåìû.
Íàèáîëåå óñòàðåâøèå ôàéëû àðõèâà ïàêóþòñÿ ñòàíäàðòíûì àðõèâàòîðîì gzip. Ïðè äîñòóïå ê çíà÷åíèÿì òàêîãî àðõèâà, âûïîëíÿåòñÿ ïðåäâàðèòåëüíàÿ ðàñïàêîâêà.
Ó÷èòûâàÿ âûñîêóþ ðàñïðåäåë¸ííîñòü ðàçðàáîòêè, â öåëîì, è çíà÷èòåëüíóþ ñëîæíîñòü ðåàëèçàöèè îòäåëüíûõ óçëîâ, òðåáóåòñÿ âûïîëíåíèå òåñòèðîâàíèÿ ñ íàïèñàíèåì ãðóïïû òåñòîâ äëÿ êðèòè÷åñêèõ óçëîâ.
Íàèáîëåå ñëîæíûìè, â ðåàëèçàöèè è ïðîâåðêå, óçëàìè ÿâëÿþòñÿ îáúåêò áóôåðà çíà÷åíèé (TValBuf) è ôèçè÷åñêîå õðàíèëèùå çíà÷åíèé íà ôàéëîâóþ ñèñòåìó (ìîäóëü BaseArh). Ýòî ñâÿçàííî ñ òåì, ÷òî â äàííûõ îáúåêòàõ, íåïîñðåäñòâåííî, ðåàëèçóþòñÿ ìåõàíèçìû õðàíåíèÿ äàííûõ ðàçëè÷íûõ òèïîâ. Äëÿ íàïèñàíèÿ òåñòîâ âûáðàíà ñòðàòåãèÿ ÷¸ðíîãî ÿùèêà è ìåòîä ïîêðûòèÿ ôóíêöèîíàëüíûõ âîçìîæíîñòåé. Îïèñàíèÿ òåñòîâ áóôåðà çíà÷åíèé ïðèâåäåíî â òàáëèöå 3. Îïèñàíèå òåñòîâ àðõèâèðîâàíèÿ çíà÷åíèé íà ôàéëîâóþ ñèñòåìó ïðèâåäåíî â òàáëèöå 4.
Òàáëèöà 3. Òåñòû áóôåðà çíà÷åíèé
Íîìåð | Îïèñàíèå |
1 | Ñîçäàíèå áóôåðà ñ ïðåäîïðåäåë¸ííûìè ïàðàìåòðàìè (Òèï: ñòðîêà; Ðàçìåð: 10; Ïåðèîä: 1c; Æåñòêàÿ ñåòêà; Íèçêîå ðàçðåøåíèå âðåìåíè) |
2 | Èçìåíåíèå ïàðàìåòðîâ áóôåðà (Ìÿãêàÿ ñåòêà; Âûñîêîå ðàçðåøåíèå âðåìåíè; Ðàçìåð: 2000; Ïåðèîä: 0) |
3 | Óäàëåíèå áóôåðà |
4 | Çàïîëíåíèå è ïðîâåðêà ñòðîêîâîãî áóôåðà ñ æ¸ñòêîé ñåòêîé |
5 | Çàïîëíåíèå è ïðîâåðêà öåëî÷èñëåííîãî áóôåðà ñ æ¸ñòêîé ñåòêîé |
6 | Çàïîëíåíèå è ïðîâåðêà ñòðîêîâîãî áóôåðà ñ ìÿãêîé ñåòêîé è âûñîêèì ðàçðåøåíèåì âðåìåíè |
7 | Çàïîëíåíèå è ïðîâåðêà öåëî÷èñëåííîãî áóôåðà ñ ìÿãêîé ñåòêîé è âûñîêèì ðàçðåøåíèåì âðåìåíè |
8 | Çàïîëíåíèå è ïðîâåðêà ñòðîêîâîãî áóôåðà ñ ìÿãêîé ñåòêîé è íèçêèì ðàçðåøåíèåì âðåìåíè |
9 | Çàïîëíåíèå è ïðîâåðêà öåëî÷èñëåííîãî áóôåðà ñ ìÿãêîé ñåòêîé è íèçêèì ðàçðåøåíèåì âðåìåíè |
10 | Çàïîëíåíèå è ïðîâåðêà ñâîáîäíîãî ñòðîêîâîãî áóôåðà ñ âûñîêèì ðàçðåøåíèåì âðåìåíè |
11 | Çàïîëíåíèå è ïðîâåðêà ñâîáîäíîãî öåëî÷èñëåííîãî áóôåðà ñ âûñîêèì ðàçðåøåíèåì âðåìåíè |
12 | Çàïîëíåíèå è ïðîâåðêà ñâîáîäíîãî ñòðîêîâîãî áóôåðà ñ íèçêèì ðàçðåøåíèåì âðåìåíè |
13 | Çàïîëíåíèå è ïðîâåðêà ñâîáîäíîãî öåëî÷èñëåííîãî áóôåðà ñ íèçêèì ðàçðåøåíèåì âðåìåíè |
Òàáëèöà 4. Òåñòû àðõèâèðîâàíèÿ çíà÷åíèé íà ôàéëîâóþ ñèñòåìó
Íîìåð | Îïèñàíèå |
1 | Ïðîñòîå çàïîëíåíèå è ïðîâåðêà àðõèâà |
2 | Âñòàâêà â ñåðåäèíó çíà÷åíèÿ, äóáëèðóþùåãî ïî íèçó |
3 | Âñòàâêà â ñåðåäèíó çíà÷åíèÿ, äóáëèðóþùåãî ïî âåðõó ñ íàëè÷èåì ðàíåå äóáëèðóþùåãî ñíèçó |
4 | Âñòàâêà â ñåðåäèíó çíà÷åíèÿ, ïîâòîðíî äóáëèðóþùåãî, ïî íèçó, ñ íàëè÷èåì ðàíåå äóáëèðóþùåãî ñâåðõó |
5 | Âñòàâêà â ñåðåäèíó íåäóáëèðóþùåãî çíà÷åíèÿ |
6 | Âñòàâêà â ñåðåäèíó äóáëèðóþùåãî çíà÷åíèÿ, ñ íàëè÷èåì ðàíåå òàêîãî æå äóáëèðîâàíèÿ ñâåðõó |
7 | Âñòàâêà íåäóáëèðóþùåãî çíà÷åíèÿ ñ íàëè÷èåì ðàíåå äóáëèðîâàíèÿ ñíèçó |
8 | Âñòàâêà â êîíåö àðõèâíîãî ôàéëà òð¸õ çíà÷åíèé, äâà â òåêóùèé è îäíî â íîâûé. Ïðîâåðêà ÷¸òêîñòè ãðàíèö. |
Âñå âûøåïåðå÷èñëåííûå òåñòû ðåàëèçîâàíû â ìîäóëå òåñòèðîâàíèÿ ÿäðà ñèñòåìû OpenSCADA SystemTests.
 ïðîöåññå òåñòèðîâàíèÿ áûëî îáíàðóæåíî áîëåå 10 îøèáîê. Âñå îáíàðóæåííûå îøèáêè áûëè ëîêàëèçîâàíû è óñòðàíåíû.