OpenSCADAWiki: Doc/OPCUA ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/OPCUA from 2016-01-29 13:03:16..

Ìîäóëè "OPC-UA", ïîäñèñòåì "Ñáîð äàííûõ" è "Òðàíñïîðòíûå ïðîòîêîëû"

Ïàðàìåòð Ìîäóëü 1 Ìîäóëü 2 Áèáëèîòåêà
ID: OPC_UA OPC_UA libOPC_UA
Èìÿ: Êëèåíò OPC-UA Ñåðâåð OPC-UA Áèáëèîòåêà ðåàëèçàöèè OPC-UA â OpenSCADA
Òèï: Ñáîð Äàííûõ Ïðîòîêîë Áèáëèîòåêà
Èñòî÷íèê: daq_OPC_UA.so daq_OPC_UA.so libOPC_UA.{h,cpp}
Âåðñèÿ: 1.6.2 1.6.6 1.0.1
Àâòîð: Ðîìàí Ñàâî÷åíêî
Îïèñàíèå: Ïðåäîñòàâëÿåò ðåàëèçàöèþ OPC-UA êëèåíòñêîãî ñåðâèñà. Ïðåäîñòàâëÿåò ðåàëèçàöèþ OPC-UA ñåðâèñà ñåðâåðà. Ïðåäîñòàâëÿåò ðåàëèçàöèþ ïðîòîêîëà OPC-UA â ÷àñòè êëèåíòà è ñåðâåðà, â âèäå îòäåëüíîé áèáëèîòåêè.
Ëèöåíçèÿ: GPL2 GPL2 LGPL3

Contents

Ââåäåíèå

OPC (OLE for Process Control) — ýòî ñåìåéñòâî ïðîòîêîëîâ è òåõíîëîãèé, ïðåäîñòàâëÿþùèõ åäèíûé èíòåðôåéñ äëÿ óïðàâëåíèÿ îáúåêòàìè àâòîìàòèçàöèè è òåõíîëîãè÷åñêèìè ïðîöåññàìè. Ñîçäàíèå è ïîääåðæêó ñïåöèôèêàöèé OPC êîîðäèíèðóåò ìåæäóíàðîäíàÿ íåêîììåð÷åñêàÿ îðãàíèçàöèÿ OPC Foundation, ñîçäàííàÿ â 1994 ãîäó âåäóùèìè ïðîèçâîäèòåëÿìè ñðåäñòâ ïðîìûøëåííîé àâòîìàòèçàöèè.


 âèäó òîãî, ÷òî çíà÷èòåëüíîå âëèÿíèå â îðãàíèçàöèè OPC Foundation èìååò êîðïîðàöèÿ Microsoft, ïðîòîêîëû OPC äî ïîñëåäíåãî âðåìåíè áûëè îäíîïëàòôîðìåííûìè è çàêðûòûìè, ïî ïðè÷èíå ïðèâÿçêè ê çàêðûòûì òåõíîëîãèÿì MS Windows. Îäíàêî, ñ íåäàâíèõ ïîð, îðãàíèçàöèåé OPC Foundation áûëè ñîçäàíû òàêèå ìíîãîïëàòôîðìåííûå ðåøåíèÿ, êàê OPC XML-DA è OPC-UA. Íàèáîëüøèé èíòåðåñ èç íèõ ïðåäñòàâëÿåò OPC-UA, êàê óíèôèöèðóþùèé âñå ïðîòîêîëû ðàííèõ âåðñèé â ðàìêàõ îòêðûòûõ è ìíîãîïëàòôîðìåííûõ òåõíîëîãèé.


Äàííûé ìîäóëü ðåàëèçóåò ïîääåðæêó èíòåðôåéñà è ïðîòîêîëà OPC-UA êàê â âèäå êëèåíòñêîãî ñåðâèñà, òàê è â âèäå ñåðâåðà OPC-UA. Êëèåíòñêèé ñåðâèñ OPC-UA ðåàëèçóåòñÿ îäíîèì¸ííûì ìîäóëåì ïîäñèñòåìû "Ñáîð äàííûõ", à ñåðâåð ðåàëèçóåòñÿ ìîäóëåì ïîäñèñòåìû "Ïðîòîêîëû". Âåñü êîä ðåàëèçàöèè ýòèì ìîäóëåì ñïåöèôèêè ïðîòîêîëà OPC-UA áûë âûíåñåí, ïî ïðîñüáå ïîëüçîâàòåëåé, â îòäåëüíóþ áèáëèîòåêó, êîòîðàÿ ðàñïðîñòðàíÿåòñÿ ïîä ëèöåíçèåé LGPL3.


 òåêóùåé âåðñèè äàííûõ ìîäóëåé è áèáëèîòåêè ðåàëèçóþòñÿ áèíàðíàÿ ÷àñòü ïðîòîêîëà è áàçîâûå ñåðâèñû â íåáåçîïàñíîì ðåæèìå è áåçîïàñíûõ ðåæèìàõ ïîëèòèê "Base128Rsa15" è "Base256".  ïîñëåäñòâèè ïëàíèðóåòñÿ ðàñøèðåíèå ìîäóëÿ äëÿ ðàáîòû ÷åðåç HTTP/SOAP è ðåàëèçàöèè îñòàëüíûõ ñåðâèñîâ OPC-UA, ïî ïîòðåáíîñòè.


Õîòÿ ïðîòîêîë OPC-UA è ÿâëÿåòñÿ ìíîãîïëàòôîðìåííûì, åãî ñïåöèôèêàöèÿ è SDK íå ÿâëÿþòñÿ ñâîáîäíîäîñòóïíûìè, à ïðåäîñòàâëÿþòñÿ òîëüêî ÷ëåíàì îðãàíèçàöèè OPC Foundation. Ïî ýòîé ïðè÷èíå ðåàëèçàöèÿ äàííûõ ìîäóëåé ñòîëêíóëàñü ñî çíà÷èòåëüíûìè ïðåïÿòñòâèÿìè è ïðîáëåìàìè.


Âî ïåðâûõ, ïðîòîêîë OPC-UA ñëîæåí è ðåàëèçàöèÿ åãî âîîáùå áåç ñïåöèôèêàöèè êðàéíå òðóäî¸ìêà. Ïî ýòîé ïðè÷èíå ðàáîòû íàä äàííûìè ìîäóëÿìè äîëãîå âðåìÿ íå íà÷èíàëàñü, è òîëüêî áëàãîäàðÿ ñïîíñîðñêîé ïîìîùè îäíîé èç îðãàíèçàöèé-÷ëåíà OPC Foundation ïðîåêò OpenSCADA ïîëó÷èë äîêóìåíòàöèþ ñïåöèôèêàöèè. Ïðè ýòîì SDK è èñõîäíûå òåêñòû ANSIÑ-API ïðîòîêîëà OPC-UA ïîëó÷åíû íå áûëè ïî ïðè÷èíå íåñîâìåñòèìîñòè èõ ëèöåíçèè ñ GPL è, êàê ñëåäñòâèå, ïîòåíöèàëüíîé óãðîçû íàðóøåíèÿ ëèöåíçèè ïðè ðàáîòå ñ èñõîäíûìè òåêñòàìè, ÷òî ìîãëî ïðèâåñòè ê ïîñëåäóþùèì þðèäè÷åñêèì ïðîáëåìàì ïðè ñâîáîäíîì ðàñïðîñòðàíåíèè äàííûõ ìîäóëåé.


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


Äëÿ îòëàäêè ôóíêöèîíèðîâàíèÿ ìîäóëåé èñïîëüçîâàëîñü äåìîíñòðàöèîííîå ÏÎ ôèðìû Unified Automation, â ñîñòàâå OPC-UA êëèåíòà — UAExpert è ñåðâåðà — "OPC-UA Demo Server", èç ïàêåòà SDK.  âèäó ïîñòîÿííîãî ðàçâèòèÿ ñàìîãî êëèåíòà "UAExpert", â ïëàíå èíòåðïðåòàöèè ñïåöèôèêàöèè OPC-UA, íîâûå åãî âåðñèè ÷àñòî èìåþò ïðîáëåìû ïðè ðàáîòå ñ ñåðâåðîì OPC-UA îò OpenSCADA.  öåëîì ðåçóëüòàòû ñîâìåñòèìîñòè ðàáîòû ñ êëèåíòàìè è ñåðâåðàìè ðàçëè÷íûõ ïðîèçâîäèòåëåé ìîæíî ïîëó÷èòü â ïðèëîæåíèè.

1. Ïðîòîêîë OPC-UA

OPC-UA — ýòî ïëàòôîðìî-íåçàâèñèìûé ñòàíäàðò, ñ ïîìîùüþ êîòîðîãî ñèñòåìû è óñòðîéñòâà ðàçëè÷íîãî òèïà ìîãóò âçàèìîäåéñòâîâàòü ïóò¸ì îòïðàâêè ñîîáùåíèé ìåæäó êëèåíòîì è ñåðâåðîì ÷åðåç ðàçëè÷íûå òèïû ñåòåé. Ïðîòîêîë ïîääåðæèâàåò áåçîïàñíîå âçàèìîäåéñòâèå ïóò¸ì âàëèäàöèè êëèåíòîâ è ñåðâåðîâ, à òàêæå ïðîòèâîäåéñòâèÿ àòàêàì. OPC-UA îïðåäåëÿåò ïîíÿòèå Ñåðâèñû, êîòîðûå ñåðâåðà ìîãóò ïðåäîñòàâëÿòü, à òàêæå ñåðâèñû, êîòîðûå ñåðâåð ïîääåðæèâàåò äëÿ êëèåíòà. Èíôîðìàöèÿ ïåðåäà¸òñÿ â âèäå òèïîâ äàííûõ, îïðåäåë¸ííûõ OPC-UA è ïðîèçâîäèòåëåì, êðîìå òîãî ñåðâåðà îïðåäåëÿþò îáúåêòíóþ ìîäåëü, äëÿ êîòîðîé êëèåíòû ìîãóò îñóùåñòâëÿòü äèíàìè÷åñêèé îáçîð.


OPC-UA ïðåäîñòàâëÿåò ñîâìåùåíèå èíòåãðèðîâàííîãî àäðåñíîãî ïðîñòðàíñòâà è ñåðâèñíîé ìîäåëè. Ýòî ïîçâîëÿåò ñåðâåðó èíòåãðèðîâàòü äàííûå, íàðóøåíèÿ (Alarms), ñîáûòèÿ (Events) è èñòîðèþ â ýòîì àäðåñíîì ïðîñòðàíñòâå, à òàêæå ïðåäîñòàâëÿòü äîñòóï ê íèì ïîñðåäñòâîì èíòåãðèðîâàííûõ ñåðâèñîâ. Ñåðâèñû òàêæå ïðåäîñòàâëÿþò èíòåãðèðîâàííóþ ìîäåëü áåçîïàñíîñòè.


OPC-UA ïîçâîëÿåò ñåðâåðàì ïðåäîñòàâëÿòü äëÿ êëèåíòîâ îïðåäåëåíèÿ òèïîâ, äëÿ äîñòóïà ê îáúåêòàì èç àäðåñíîãî ïðîñòðàíñòâà. OPC-UA äîïóñêàåò ïðåäîñòàâëåíèå äàííûõ â ðàçëè÷íûõ ôîðìàòàõ, âêëþ÷àÿ áèíàðíûå ñòðóêòóðû è XML-äîêóìåíòû. ×åðåç àäðåñíîå ïðîñòðàíñòâî êëèåíòû ìîãóò çàïðîñèòü ó ñåðâåðà ìåòàäàííûå, êîòîðûå îïèñûâàþò ôîðìàò äàííûõ.


OPC-UA äîáàâëÿåò ïîääåðæêó ìíîæåñòâåííîé ñâÿçíîñòè ìåæäó óçëàìè âìåñòî ïðîñòîãî îãðàíè÷åíèÿ èåðàðõè÷íîñòüþ. Òàêàÿ ãèáêîñòü â êîìáèíàöèè ñ îïðåäåëåíèåì òèïîâ ïîçâîëÿåò ïðèìåíÿòü OPC-UA äëÿ ðåøåíèÿ çàäà÷ â øèðîêîé ïðîáëåìíîé îáëàñòè.


OPC-UA ñïðîåêòèðîâàí äëÿ îáåñïå÷åíèÿ íàä¸æíîé âûäà÷è äàííûõ. Îñíîâíàÿ îñîáåííîñòü âñåõ OPC ñåðâåðîâ — ñïîñîáíîñòü âûäàâàòü äàííûå è ñîáûòèÿ.


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


OPC-UA ñïåöèôèêàöèÿ ñïðîåêòèðîâàíà êàê ÿäðî â ñëîå, èçîëèðîâàííîì îò ïîäëåæàùèõ êîìïüþòåðíûõ òåõíîëîãèé è ñåòåâûõ òðàíñïîðòîâ. Ýòî ïîçâîëÿåò OPC-UA ïðè íåîáõîäèìîñòè ðàñøèðÿòüñÿ íà áóäóùèå òåõíîëîãèè áåç îòòîðæåíèÿ îñíîâû äèçàéíà. Íà äàííûé ìîìåíò ñïåöèôèêàöèåé îïðåäåëåíû äâà ñïîñîáà êîäèðîâàíèÿ äàííûõ: XML/text è UA Binary. Â äîïîëíåíèå, îïðåäåëåíî äâà òèïà òðàíñïîðòíîãî ñëîÿ: TCP è HTTP/SOAP.


OPC-UA ñïðîåêòèðîâàí êàê ðåøåíèå äëÿ ìèãðàöèè ñ OPC êëèåíòîâ è ñåðâåðîâ, êîòîðûå îñíîâàíû íà Microsoft COM òåõíîëîãèÿõ. OPC COM ñåðâåðà (DA, HDA è A&E) ìîãóò áûòü ëåãêî îòðàæåíû â OPÑ-UA. Ïðîèçâîäèòåëè ìîãóò ñàìîñòîÿòåëüíî îñóùåñòâëÿòü òàêóþ ìèãðàöèþ èëè æå ðåêîìåíäîâàòü ïîëüçîâàòåëÿì èñïîëüçîâàòü îá¸ðòêè è êîíâåðòîðû ìåæäó ýòèìè ïðîòîêîëàìè. OPC-UA óíèôèöèðóåò ïðåäûäóùèå ìîäåëè â åäèíîì àäðåñíîì ïðîñòðàíñòâå ñ åäèíûì ìíîæåñòâîì ñåðâèñîâ.

2. Ìîäóëü ðåàëèçàöèè ñåðâåðà

Ìîäóëü ñåðâåðà ñîäåðæèò êîä ðåàëèçàöèè ñåðâåðíîé ÷àñòè OPC-UA — ñåðâåðíûõ ñåðâèñîâ, â ÷àñòè ñïåöèôè÷íîé äëÿ OpenSCADA, è èñïîëüçóÿ áèáëèîòåêó äëÿ OPC-UA ñïåöèôè÷íîé ÷àñòè. Äëÿ ïîñòðîåíèÿ OPC-UA ñåðâåðà äîñòàòî÷íî ñîçäàòü âõîäÿùèé òðàíñïîðò, îáû÷íî ýòî TCP-òðàíñïîðò ìîäóëÿ Sockets, è âûáðàòü â í¸ì ìîäóëü äàííîãî ïðîòîêîëà, à òàêæå ñêîíôèãóðèðîâàòü õîòÿ áû îäèí êîíå÷íûé óçåë ìîäóëÿ ïðîòîêîëà, î ÷¸ì íèæå.

2.1. Îáñëóæèâàíèå çàïðîñîâ ïî ïðîòîêîëó OPC-UA

Âõîäÿùèå çàïðîñû ê ìîäóëþ-ïðîòîêîëó îáðàáàòûâàþòñÿ ìîäóëåì â ñîîòâåòñòâèè ñî ñêîíôèãóðèðîâàííûìè êîíå÷íûìè óçëàìè OPC-UA (EndPoints) (ðèñ.1).


Êîíå÷íûå óçëû ïðîòîêîëà. (60 Kb)
Ðèñ.1. Êîíå÷íûå óçëû ïðîòîêîëà.

Êîíå÷íûé óçåë ïðîòîêîëà OPC-UA ýòî ôàêòè÷åñêè îáúåêò ñåðâåðà OPC-UA. Êîíå÷íûå óçëû â OPC-UA ìîãóò áûòü êàê ëîêàëüíûìè, òàê è óäàë¸ííûìè. Ëîêàëüíûé êîíå÷íûé óçåë ïðåäíàçíà÷åí äëÿ ïðåäîñòàâëåíèÿ ðåñóðñîâ ñòàíöèè OpenSCADA ïî ïðîòîêîëó OPC-UA, â òîæå âðåìÿ óäàë¸ííûå êîíå÷íûå óçëû ñëóæàò äëÿ âûïîëíåíèÿ êàê ñåðâèñà îáçîðà äîñòóïíûõ OPC-UA óçëîâ, òàê è äëÿ øëþçîâàíèÿ çàïðîñîâ ê óäàë¸ííûì ñòàíöèÿì.  äàííîé âåðñèè ìîäóëÿ ïîääåðæèâàåòñÿ òîëüêî êîíôèãóðàöèÿ ëîêàëüíûõ êîíå÷íûõ óçëîâ.


Îáùàÿ êîíôèãóðàöèÿ êîíå÷íîãî óçëà îñóùåñòâëÿåòñÿ íà ãëàâíîé âêëàäêå ñòðàíèöû êîíå÷íîãî óçëà (ðèñ.2) ïàðàìåòðàìè:


Ãëàâíàÿ âêëàäêà ñòðàíèöû êîíå÷íîãî óçëà. (125 Kb)
Ðèñ.2. Ãëàâíàÿ âêëàäêà ñòðàíèöû êîíå÷íîãî óçëà.

3. Ìîäóëü ñáîðà äàííûõ

Ìîäóëü ñáîðà äàííûõ ïðåäîñòàâëÿåò âîçìîæíîñòü îïðîñà è çàïèñè àòðèáóòîâ çíà÷åíèÿ(13) óçëîâ òèïà "Ïåðåìåííàÿ".

3.1. Îáúåêò êîíòðîëëåðà äàííûõ

Äëÿ äîáàâëåíèÿ èñòî÷íèêà äàííûõ OPC-UA ñîçäà¸òñÿ è êîíôèãóðèðóåòñÿ îáúåêò êîíòðîëëåðà â ñèñòåìå OpenSCADA. Ïðèìåð âêëàäêè êîíôèãóðàöèè îáúåêòà êîíòðîëëåðà äàííîãî òèïà èçîáðàæåí íà ðèñóíêå 3.


Âêëàäêà êîíôèãóðàöèè êîíòðîëëåðà. (137 Kb)
Ðèñ.3. Âêëàäêà êîíôèãóðàöèè îáúåêòà êîíòðîëëåðà.

Ñ ïîìîùüþ ýòîé âêëàäêè ìîæíî óñòàíîâèòü:

 (2 Kb) ×àñòî âñòðå÷àåòñÿ ñèòóàöèÿ, êîãäà óòî÷í¸ííûé àäðåñ ÿâëÿåòñÿ ñèìâîëüíûì, êîòîðûé â ýòîé ñåòè íå ðåçîëâèòñÿ, èç-çà íåêîððåêòíîé íàñòðîéêè ñåðâåðà.  òàêèõ ñëó÷àÿõ íóæíî îñòàâèòü èñõîäíûé IP-àäðåñ èëè èìÿ êîòîðîå ðåçîëâèòñÿ â IP ïðàâèëüíî.

Ñ öåëüþ îáëåã÷åíèÿ èäåíòèôèêàöèè óçëîâ íà óäàë¸ííîé ñòàíöèè, à òàêæå âûáîðà èõ äëÿ âñòàâêè â îáúåêòå ïàðàìåòðà êîíòðîëëåðà, â ñàìîì îáúåêòå êîíòðîëëåðà ïðåäóñìîòðåíà âêëàäêà íàâèãàöèè ïî óçëàì óäàë¸ííîé ñòàíöèè "Îáçîð óçëîâ ñåðâåðà", ãäå ìîæíî ïðîéòè ïî äåðåâó îáúåêòîâ è îçíàêîìèòñÿ ñ èõ àòðèáóòàìè (ðèñ.4).


Âêëàäêà "Îáçîð óçëîâ ñåðâåðà" ñòðàíèöû êîíòðîëëåðà. (125 Kb)
Ðèñ.4. Âêëàäêà "Îáçîð óçëîâ ñåðâåðà" ñòðàíèöû îáúåêòà êîíòðîëëåðà.

3.2. Ïàðàìåòðû

Ìîäóëü ñáîðà äàííûõ ïðåäîñòàâëÿåò òîëüêî îäèí òèï ïàðàìåòðîâ — "Ñòàíäàðò". Äîïîëíèòåëüíûì êîíôèãóðàöèîííûì ïîëåì ïàðàìåòðà äàííîãî ìîäóëÿ (ðèñ.5) ÿâëÿåòñÿ ïåðå÷åíü óçëîâ OPC-UA è ïîëå îäíîñòðî÷íîé íàâèãàöèè ïî óçëàì OPC-UA äëÿ âñòàâêè âûáðàííûõ óçëîâ òèïà "Ïåðåìåííàÿ" â óêàçàííûé ïåðå÷åíü. Àòðèáóò â ýòîì ïåðå÷íå çàïèñûâàåòñÿ ñëåäóþùèì îáðàçîì: {ns}:{id}.
Ãäå:

ns — îáëàñòü èì¸í, ÷èñëîì; íóëåâîå çíà÷åíèå ìîæåò áûòü îïóùåíî;
id — èäåíòèôèêàòîð óçëà, ÷èñëîì, ñòðîêîé, ñòðîêîé áàéò èëè GUID.

Ïðèìåðû:

84 — êîðíåâîé óçåë;
3:"BasicDevices2" — óçåë áàçîâûõ óñòðîéñòâ â îáëàñòè èì¸í 3 è â âèäå ñòðîêè;
4:"61626364" — óçåë â îáëàñòè èì¸í 4 è â âèäå ñòðîêè áàéò;
4:{40d95ab0-50d6-46d3-bffd-f55639b853d4} — óçåë â îáëàñòè èì¸í 4 è â âèäå GUID.

Âêëàäêà êîíôèãóðàöèè ïàðàìåòðà. (102 Kb)
Ðèñ.5. Âêëàäêà êîíôèãóðàöèè îáúåêòà ïàðàìåòðà.

 (2 Kb) Óçëû òèïà "Ïåðåìåííàÿ" ñî çíà÷åíèåì â âèäå ñòðóêòóðû ïðî÷èòàòü öåëèêîì îáû÷íî íåëüçÿ ïîýòîìó íåîáõîäèìî å¸ ýëåìåíòû âñòàâëÿòü â ïåðå÷åíü óçëîâ ÷òåíèÿ îòäåëüíî.


 ñîîòâåòñòâèè ñ óêàçàííûì ñïèñêîì óçëîâ âûïîëíÿåòñÿ îïðîñ è ñîçäàíèå àòðèáóòîâ ïàðàìåòðà (ðèñ.6).


Âêëàäêà àòðèáóòîâ ïàðàìåòðà. (80 Kb)
Ðèñ.6. Âêëàäêà àòðèáóòîâ ïàðàìåòðà.

4. Áèáëèîòåêà libOPC_UA

Îñíîâûâàÿñü íà íàðàáîòêàõ äàííîãî ìîäóëÿ ïðîòîêîëüíûé êîä OPC-UA áûë âûíåñåí â îòäåëüíóþ áèáëèîòåêó è îïóáëèêîâàí ïîä ëèöåíçèåé LGPLv3. Äàííûå äåéñòâèÿ âûïîëíåíû ñ öåëüþ ïðåäîñòàâèòü âîçìîæíîñòü ïðîñòîãî äîáàâëåíèÿ ïîääåðæêè ïðîòîêîëà OPC-UA ñòîðîííèìè ïðîåêòàìè. Áèáëèîòåêà ïðåäñòàâëåíà äâóìÿ ôàéëàìè libOPC_UA.h, libOPC_UA.cpp; ïîääåðæèâàåòñÿ è ñîäåðæèòñÿ â ñîñòàâå äàííîãî ìîäóëÿ, ò.å. ïîñëåäíþþ âåðñèþ Âû ìîæåòå çàãðóçèòü çäåñü: http://oscada.org/svn/trunk/OpenSCADA/src/moduls/daq/OPC_UA/libOPC_UA.


Áèáëèîòåêà, êàê è äàííûé ìîäóëü, íàïèñàí íà ÿçûêå ïðîãðàììèðîâàíèÿ C++. Ñòàòè÷åñêàÿ äèàãðàììà êëàññîâ, îòðàæàþùàÿ àðõèòåêòóðó áèáëèîòåêè, ïðèâåäåíà íà ðèñóíêå 7. Ñîãëàñíî äèàãðàììå êëàññîâ áèáëèîòåêà âûïîëíåíà â îáëàñòè èì¸í "OPC", à àðõèòåêòóðíî å¸ ìîæíî ðàçäåëèòü íà êëèåíòñêóþ "Client" è ñåðâåðíóþ "Server" ÷àñòè, êîòîðûå óíàñëåäîâàíû îò îáùåãî êëàññà ïðîòîêîëà "UA". Êðîìå íåïîñðåäñòâåííî êëàññîâ ïðîòîêîëà "OPC-UA" áèáëèîòåêà âêëþ÷àåò â ñåáÿ íàáîð ôóíêöèé è êëàññîâ äëÿ îáðàáîòêè èëè õðàíåíèÿ äàííûõ ïðîòîêîëà, îòäåëüíî èç êîòîðûõ íóæíî îòìåòèòü êëàññ óçëà ÿçûêà XML "XML_N", èñïîëüçóåìûé äëÿ óíèôèêàöèè îáðàùåíèé ê API áèáëèîòåêè.


Ñòàòè÷åñêàÿ äèàãðàììà êëàññîâ áèáëèîòåêè libOPC_UA. (42 Kb)
Ðèñ.7. Ñòàòè÷åñêàÿ äèàãðàììà êëàññîâ áèáëèîòåêè libOPC_UA.

Èñïîëüçîâàíèå áèáëèîòåêè, â öåëîì, çàêëþ÷àåòñÿ â íàñëåäîâàíèè îò êëàññà "Client" è/èëè "Server", ñîãëàñíî ñ ôóíêöèÿìè êîíå÷íîé ïðîãðàììû, è ïîñëåäóþùåé ðåàëèçàöèè âèðòóàëüíûõ ôóíêöèé ñâîéñòâ êëèåíòà/ñåðâåðà, â êîíòåêñòå ïðîòîêîëà OPC-UA, à òàêæå òðàíñïîðòíîé ÷àñòè êîììóíèêàöèè, ò.å. ïîäêëþ÷åíèå/îòêðûòèå ê TCP-ñîêåòó è ïåðåäà÷ó/÷òåíèå íåñòðóêòóðèðîâàííîãî ïîòîêà äàííûõ. Ïîñëåäóþùèå çàïðîñû è îáðàáîòêà çàïðîñîâ äàííûõ (äëÿ ñåðâåðà) îñóùåñòâëÿþòñÿ ÷åðåç âûçîâ ôóíêöèè reqService(), çàïðîñ ê ñåðâèñó, è/èëè îáðàáîòêîé âèðòóàëüíîé ôóíêöèè reqData() çàïðîñà ê äàííûì, ò.å. ïî ñóòè èíòåãðàöèÿ â ìîäåëü äàííûõ ïðèëîæåíèÿ.

4.1. Ñëóæåáíûå îáúåêòû, ôóíêöèè è êëàññ UA

Äàííûå

Òèïû ðåàëèçàöèé (enum — SerializerType):


Òèï çàïðîñà îòêðûòèÿ êàíàëà áåçîïàñíîñòè (enum — SC_ReqTP):


Ðåæèì áåçîïàñíîñòè ñîîáùåíèÿ (enum — MessageSecurityMode):


Òèï àóòåíòèôèêàöèè (enum — AuthTp):


Êëàññû óçëîâ (enum — NodeClasses):


Íàïðàâëåíèå îáçîðà (enum — BrowseDirection):


Âîçâðàòíàÿ ìåòêà âðåìåíè (enum — TimestampsToReturn):


Äîñòóï (enum — Access):


Ýëåìåíòû ìàñêè îïèñàíèÿ îáçîðíîãî çàïðîñà (enum — RefDscrResMask):


Èäåíòèôèêàòîðû àòðèáóòîâ óçëà (enum — AttrIds):


Ñîñòîÿíèå ïîäïèñêè (enum — SubScrSt):


Ðåæèìû ìîíèòîðèíãà (enum — MonitoringMode):

Âíåøíèå ôóíêöèè

 áèáëèîòåêó âêëþ÷åí ðÿä âíåøíèõ ôóíêöèé îáúåêòà TSYS ÿäðà OpenSCADA, äëÿ óïðîùåíèÿ è óíèôèêàöèè ðÿäà âíóòðåííèõ îïåðàöèé:

Îøèáêà OPC (OPCError)

Îáúåêò îøèáêè "OPCError" ÿâëÿåòñÿ óðåçàííîé êîïèåé îáúåêòà "TError" ÿäðà OpenSCADA.


Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

XML-òåã (XML_N)

Îáúåêò "XML_N" ÿâëÿåòñÿ óðåçàííîé êîïèåé îáúåêòà XMLNode ÿäðà OpenSCADA.


Ïóáëè÷íûå ìåòîäû:

Îáúåêò óçëà OPC-UA (NodeId)

Äàííûå:
Òèïû äàííûõ (enum — NodeId::Type):


Ïóáëè÷íûå ìåòîäû:

Êîðíåâîé îáúåêò ïðîòîêîëà OPC-UA (UA)

Ïóáëè÷íûå ìåòîäû:

Âêëþ÷åííûé îáúåêò ïàðàìåòðîâ áåçîïàñíîñòè (SecuritySetting)

Ïóáëè÷íûå äàííûå:


Ïóáëè÷íûå ìåòîäû:

4.2. Îñíîâíîé îáúåêò êëèåíòà (Client->UA)

Ïðèìåíåíèå: Ïðÿìî íàñëåäóåòñÿ ïîëüçîâàòåëüñêèì îáúåêòîì — êëèåíò OPC-UA.


Ïóáëè÷íûå ìåòîäû:


Çàùèù¸ííûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò ñåàíñà êëèåíòà (SClntSess)

Ïóáëè÷íûå äàííûå:


Ïóáëè÷íûå ìåòîäû:

4.3. Îñíîâíîé îáúåêò ñåðâåðà (Server->UA)

Ïðèìåíåíèå: Ïðÿìî íàñëåäóåòñÿ ïîëüçîâàòåëüñêèì îáúåêòîì — ñåðâåð OPC-UA.


Ïóáëè÷íûå ìåòîäû:


Çàùèù¸ííûå ìåòîäû:

Âêëþ÷åííûé îáúåêò êàíàëà áåçîïàñíîñòè (SecCnl)

Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò ñåàíñà (Sess)

Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò òî÷êè ïðîäîëæåíèÿ îáçîðà (ContPoint)

Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò ïîäïèñêè (Subscr)

Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò ýëåìåíòà ìîíèòîðèíãà (MonitItem)

Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò ýëåìåíòà çíà÷åíèÿ (Val)

Ïóáëè÷íûå ìåòîäû:


Ïóáëè÷íûå àòðèáóòû:

Âêëþ÷åííûé îáúåêò êîíå÷íîé òî÷êè (EP)

Ïóáëè÷íûå ìåòîäû:


Çàùèù¸ííûå ìåòîäû:


Çàùèù¸ííûå àòðèáóòû:

5. Ïðèâàòíûå êëþ÷è è ñåðòèôèêàòû

Äëÿ ðàáîòû êëèåíòñêîé è ïðîòîêîëüíîé ÷àñòè OPC-UA íåîáõîäèìî ñîçäàíèå è ïîìåùåíèå ïðèâàòíîãî êëþ÷à è ñåðòèôèêàòà â êîíôèãóðàöèþ îáúåêòà êëèåíòà è ñåðâåðà.  îáùåì ñëó÷àå äîñòàòî÷íî ñîçäàíèÿ îáû÷íîãî ñàìîïîäïèñàííîãî ñåðòèôèêàòà è ïðèâàòíîãî êëþ÷à áåç ïàðîëÿ, îäíàêî äëÿ èñêëþ÷åíèÿ ïðåäóïðåäèòåëüíûõ ñîîáùåíèé íåîáõîäèìî äîáàâèòü ðÿä ñëóæåáíûõ ïîëåé â ñåðòèôèêàò. Ýòî ìîæíî ñäåëàòü âçÿâ ôàéë êîíôèãóðàöèè ñîçäàíèÿ ñåðòèôèêàòà è âûïîëíèòü ñëåäóþùóþ ïðîöåäóðó:

6. Çàìå÷àíèÿ

 ïðîöåññå ðåàëèçàöèè ìîäóëåé ïîääåðæêè OPC-UA áûë îáíàðóæåí ðÿä íåñîîòâåòñòâèé îôèöèàëüíîãî SDK ñî ñïåöèôèêàöèåé OPC-UA:

7. Ïðèëîæåíèå: Òàáëèöà ñîâìåñòèìîñòè ñ ðåàëèçàöèÿìè OPC-UA äðóãèõ ïðîèçâîäèòåëåé

Action source page doesn't exist yet(/Home Page En / Doc / OPCUA?)

Ññûëêè

Referring pages: Doc
Function
Works/RoadMap


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