Promotic
Přihlášení logon

PmOpcUaClient - Ovladač pro komunikaci s OPC UA serverem

Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné shlédnout "PROMOTIC video kurz 4 - Komunikační ovladače".

Základní vlastnosti ovladače:
- Použití tohoto ovladače vyžaduje zakoupení licence PmOPC. Při vývoji aplikace ve freeware módu PmFree nebo s vývojovou licencí a při jejím testování v runtime je tato komponenta vždy funkční.
- Komunikace je pro Ethernet (aplikace PROMOTIC je klient).
- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmaComm.
Ovladač podporuje použití objektů PmaCommGroup a PmaCommMsg. Pro běžné případy přenosu dat je lepší použít objekt PmaCommGroup.
Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace ve skupině "OPC"
- Tento ovladač je dostupný od verze Pm9.0.9.


Ovladač podporuje následující OpcUa datové typy:
- Boolean: Dvoustavová logická hodnota (true nebo false).
V aplikaci PROMOTIC je reprezentován datovým typem Boolean.
Pro čtení i zápis.
- SByte: Celé číslo (1 bajt) v rozsahu: -128 do 127 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Integer.
Pro čtení i zápis.
- Byte: Celé číslo (1 bajt) v rozsahu: 0 do 255 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Byte.
Pro čtení i zápis.
- Int16: Celé číslo (2 bajty) v rozsahu: -32 768 do 32 767 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Integer.
Pro čtení i zápis.
- UInt16: Celé číslo (2 bajty) v rozsahu: 0 do 65 535 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Long.
Pro čtení i zápis.
- Int32: Celé číslo (4 bajty) v rozsahu: -2 147 483 648 do 2 147 483 647 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Long.
Pro čtení i zápis.
- UInt32: Celé číslo (4 bajty) v rozsahu: 0 do 4 294 967 295 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Double.
Pro čtení i zápis.
- Int64: Celé číslo (8 bajty) v rozsahu: -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Double.
Pro čtení i zápis.
- UInt64: Celé číslo (8 bajty) v rozsahu: 0 do 18 446 744 073 709 551 615 včetně.
V aplikaci PROMOTIC je reprezentován datovým typem Double.
Pro čtení i zápis.
- Float: 4-bajt reálné číslo ve formátu IEEE-754 (32-bit).
V aplikaci PROMOTIC je reprezentován datovým typem Single.
Pro čtení i zápis.
- Double: 8-bajt reálné číslo ve formátu IEEE-754 (64-bit).
V aplikaci PROMOTIC je reprezentován datovým typem Double.
Pro čtení i zápis.
- String: Sekvence Unicode znaků (textový řetězec).
V aplikaci PROMOTIC je reprezentován datovým typem String.
Pro čtení i zápis.
- DateTime: Datum a čas.
V aplikaci PROMOTIC je reprezentován datovým typem Date.
Pro čtení i zápis.
OPC-UA přenáší čas vždy jako UTC čas. Při příjmu systém PROMOTIC tento čas přepočte do lokálního času a opačně při zaslání lokální čas přepočte do UTC času.
- ByteString: Pole bajtů.
V aplikaci PROMOTIC je reprezentován datovým typem Object typu PmBuffer.
Zatím jen pro čtení.
- StatusCode: Číselný identifikátor chyby nebo stavu, který je spojen s hodnotou nebo operací.
V aplikaci PROMOTIC je reprezentován datovým typem Double.
Pro čtení i zápis.
- QualifiedName: Jméno kvalifikované jmenným prostorem.
V aplikaci PROMOTIC je reprezentován datovým typem String.
Zatím jen pro čtení.
- LocalizedText: Text s volitelným identifikátorem národního prostředí.
V aplikaci PROMOTIC je reprezentován datovým typem String.
Pro čtení i zápis.
- Array: Pole hodnot.
V aplikaci PROMOTIC je reprezentován datovým typem Array.
Zatím jen pro čtení.
- ExtensionObject: Struktura, která obsahuje datový typ specifický pro aplikaci.
V aplikaci PROMOTIC je reprezentován datovým typem Object typu PmMap.
Zatím jen pro čtení.
Objekt obsahuje následující vlastnosti:
TypeId - (Long) Identifikátor struktury.
Encoding - (Long) Číslo určuje co bude obsahovat objekt PmBuffer ve vlastnosti Body:
0 = objekt je prázný
1 = objekt obsahuje ByteString, tzn. řetězec bajtů.
2 = objekt obsahuje XmlElement, tzn. XML text.
Body - (objekt PmBuffer) Tento objekt obsahuje hodnoty struktury zakódované podle vlastnosti Encoding.


Doporučené hodnoty parametrů objektu PmaComm:

Doporučené hodnoty pro Parametry Ethernet-klient:
Síťová adresaURL adresa OPC-UA serveru.
Číslo vzdáleného TCP/UDP portuPort OPC-UA serveru (obvykle hodnota 4840).
 
Viz: Wikipedia: Seznam čísel portů TCP a UDP používaných protokoly pro provoz síťových aplikací.
Typ Ethernet přenosuTCP
Připojit až při prvním přenosuNEzatrhnout (povinné)
Zavřít spojení po každém přenosuNEzatrhnout (povinné). Po každém navázání spojení je nutno přenést několik inicializačních zpráv a kdyby se spojení často uzavíralo tak by se velmi snížila rychlost komunikace.
Popis a doporučené hodnoty pro Parametry protokolu:
Výběr nastavení pomocí připojení k serveruPo stisknutí tohoto tlačítka se otevře okno, které zakomunikuje s OpcUa serverem a získá od něj koncové body (endpoints) a podporované typy zabezpečení.
Každý typ zabezpečení má také číselnou hodnotu Security Level (úroveň zabezpečení). Čím větší hodnota, tím vyšší stupeň zabezpečení.
 
Získané informace se zobrazí v tomto okně a požadovaný typ zabezpečení lze vybrat. Tímto se nastaví konfigurátory:
- URL koncového bodu
- Režim zabezpečení (Security Mode)
- Bezpečnostní politika (Security Policy)
- Typ autentizace

URL koncového boduZadává se zde URL adresa koncového bodu OPC-UA serveru.
Používá se pokud server umožňuje přesměrování na jiné servery, v jiném případě stačí zadat prázdný řetězec (tím se automaticky vybere první koncový bod podporovaný serverem).
Hodnota bývá v podobě "opc.tcp://URL:Port".
Zabezpečení (Security):
Režim zabezpečení (Security Mode)Určuje, jak je zabezpečena komunikace mezi OPC UA klientem a serverem.
Existují tři režimy zabezpečení:
None - Tento režim nezajišťuje žádné zabezpečení.
Používá se hlavně pro testovací účely nebo v izolovaných sítích, kde bezpečnost není prioritou.
Sign - Zprávy nejsou šifrovány, ale jsou digitálně podepsány odesílatelem.
To zajišťuje autentizaci (ověření, že zpráva pochází od oprávněného odesílatele) a integritu (ověření, že zpráva nebyla změněna během přenosu).
Data jsou stále viditelná a čitelná, ale nelze je upravit, aniž by to bylo odhaleno.
Sign&Encrypt - Toto je nejbezpečnější režim.
Zprávy jsou digitálně podepsány (pro autentizaci a integritu) a zároveň šifrovány (pro důvěrnost).
To znamená, že data jsou nejen chráněna před neoprávněnými změnami, ale jsou také nečitelná pro kohokoli kromě zamýšleného příjemce.
Bezpečnostní politika (Security Policy)Tento konfigurátor je viditelný pouze pokud "Režim zabezpečení (Security Mode) = Sign" nebo "Sign&Encrypt".
 
Specifikuje algoritmy, které se mají použít:
- Algoritmy šifrování: Jaký algoritmus se použije pro šifrování dat (např. AES-128, AES-256).
- Algoritmy podepisování: Jaký algoritmus se použije pro digitální podpis (např. SHA-256, SHA-384).
- Algoritmy pro autentizaci: Jaký algoritmus se použije pro ověření identity klienta a serveru (např. pomocí digitálních certifikátů X.509).
 
Tento ovladač podporuje následující bezpečnostní politiky:
Auto - Ovladač vybere bezpečnostní politiku sám porovnáním podporovaných politik serverem a ovladačem.
Vybere se podporovaná politika která má nejvyšší úroveň zabezpečení (Security Level).
Basic256Sha256 - Vyžaduje použití X.509 certifikátů pro autentizaci klienta a serveru.
Algoritmus symetrického šifrování: AES-256 (se 256-bitovým klíčem).
Algoritmus asymetrického šifrování: RSA-OAEP + SHA-1.
Algoritmus podpisu: (RSA-PKCS15) + SHA-256.
Aes128_Sha256_RsaOaep - Vyžaduje použití X.509 certifikátů pro autentizaci klienta a serveru.
Algoritmus symetrického šifrování: AES-128 (se 128-bitovým klíčem).
Algoritmus asymetrického šifrování: RSA-OAEP.
Algoritmus podpisu: SHA-256.
Aes256_Sha256_RsaPss - Reprezentuje jeden z nejvyšších a nejnovějších standardů pro ochranu komunikace.
Vyžaduje použití X.509 certifikátů pro autentizaci klienta a serveru.
Algoritmus symetrického šifrování: AES-256 (se 256-bitovým klíčem).
Algoritmus asymetrického šifrování: RSA-PSS.
Algoritmus podpisu: SHA-256.
Basic256 - Zastaralé. Definuje starší, ale stále používaný standard pro ochranu komunikace. Tato politika je považována za předchůdce modernějších a bezpečnějších politik, jako je Basic256Sha256.
Vyžaduje použití X.509 certifikátů pro autentizaci klienta a serveru.
Algoritmus symetrického šifrování: AES-256 (se 256-bitovým klíčem).
Algoritmus asymetrického šifrování: RSA-PKCS15 + SHA-1.
Algoritmus podpisu: SHA-1.
Basic128Rsa15 - Zastaralé. Je nejstarší a nejslabší politika zabezpečení v rámci specifikace OPC UA.
Vyžaduje použití X.509 certifikátů pro autentizaci klienta a serveru.
Algoritmus symetrického šifrování: AES-128 (se 128-bitovým klíčem).
Algoritmus asymetrického šifrování: RSA-PKCS15 + SHA-1.
Algoritmus podpisu: SHA-1.
Cesta k lokálnímu privátnímu klíčiTento konfigurátor je viditelný pouze pokud "Režim zabezpečení (Security Mode) = Sign" nebo "Sign&Encrypt".
 
Je to cesta k souboru obsahující lokální privátní klíč (soubor s příponou .der nebo .pem).
Cesta k lokálnímu certifikátuTento konfigurátor je viditelný pouze pokud "Režim zabezpečení (Security Mode) = Sign" nebo "Sign&Encrypt".
 
Je to cesta k souboru obsahující lokální certifikát (soubor s příponou .der nebo .pem).
Vytvořit nový privátní klíč / certifikát...Tento konfigurátor je viditelný pouze pokud "Režim zabezpečení (Security Mode) = Sign" nebo "Sign&Encrypt".
 
Pomocí tohoto tlačítka lze otevřít okno ve kterém lze definovat parametry a následně vytvořit dva soubory: privátní klíč a samopodepsaný certifikát.
Tyto nové soubory lze pak uvést v konfigurátoru "Cesta k lokálnímu privátnímu klíči" a "Cesta k lokálnímu certifikátu".
Takto vzniklé soubory slouží hlavně pro testovací účely.
 
Pro produkční prostředí je důrazně doporučeno, aby byl certifikát podepsán certifikační autoritou (CA), ať už interní firemní, nebo veřejnou.
Pro testování a vývoj ale bohatě stačí samopodepsaný certifikát.
 
Povolení klientského certifikátu (obvykle soubor s příponou .der nebo .pem) na straně OPC UA serveru se provádí v jeho konfiguračním softwaru.
Každý výrobce má specifický postup, ale princip je vždy stejný: certifikát je nutné nahrát do "Trusted" (důvěryhodného) úložiště certifikátů na serveru.
Autentizace (Authentication):
Typ autentizaceZde se zadává typ autentizace klienta.
(Autentizace typu "2=Certificate" zatím není tímto ovladačem podporována.)
0=Anonymous - Anonymní autentizace, tzn. klient autentizaci nepoužívá.
1=UserName - Autentizace jménem a heslem.
JménoJméno klienta.
Tento konfigurátor je viditelný pouze pokud "Typ autentizace = (1=UserName)".
HesloHeslo pro dané jméno klienta.
Tento konfigurátor je viditelný pouze pokud "Typ autentizace = (1=UserName)".

Dodatečné parametryProzatím nechat prázdnou hodnotu.

Popis komunikace pomocí objektu PmaCommGroup

Pro tento ovladač lze použít objekty PmaCommGroup.
Proměnné v objektu PmaCommGroup (nebo ještě lépe proměnné v objektu PmaData s datovým rozšířením ExtComm) mohou být v libovolném množství, libovolného typu v libovolném pořadí. Ovladač sám optimálním způsobem pomocí vnitřně vytvořených komunikačních zpráv vyčítá data ze zařízení.
Proměnné se vyčítají všechny (pokud konfigurátor "Obnovování dat povoleno" je zatržen). Při zápisu do proměnné se posílá do zařízení pouze tato jedna proměnná (pokud konfigurátor "Automaticky zasílat při zápisu do položky" je zatržen).

Obnovování hodnot proměnných registrovaných v objektu PmaCommGroup:
Ovladač při své inicializaci zaregistruje všechny proměnné do OPC serveru (OPC systémová zpráva CreateMonitoredItems) a informuje server o požadované době odpovědi podle nastaveného konfigurátoru "Obnovovací perioda komunikace [ms]".
Potom ovladač pošle žádost o poslání zprávy při změně těchto proměnných (OPC systémová zpráva PublishRequest). OPC server pak při změně proměnné (nebo pokud není žádná změna, tak do doby zadané v konfigurátoru "Obnovovací perioda komunikace [ms]") pošle zprávu obsahující informace o všech změněných proměnných (OPC systémová zpráva PublishResponse).
Ovladač po příjmu této zprávy ihned znovu pošle zprávu PublishRequest. Tímto způsobem jsou aktualizavané hodnoty proměnných objektu PmaCommGroup se zadanou periodou Obnovovací perioda komunikace [ms].

Popis konfigurátoru "ItemId":
ItemId je textový identifikátor položky, který slouží pro adresování položky v zařízení. Z konfigurátoru ItemId ovladač pozná, jak se má hodnota položky přijímat nebo vysílat.
Text lze buď napsat ručně, nebo sestavit v okně, které se otevře tlačítkem vpravo od konfigurátoru.
Pro zadání lze použít Makro výraz (vyhodnocuje se po spuštění aplikace).
Identifikátor ItemId může mít podobu například "ns2,str,xxxx", kde:
- ns2: Určuje, do kterého jmenného prostoru (ns=namespace) OPC-UA serveru proměnná patří (0, 1, 2 ...).
- str: Určuje typ identifikátoru proměnné.
str = Identifikátor proměnné je textový řetězec.
nmb = Identifikátor proměnné je číslo.
- xxxx: Identifikátor proměnné. Tento text závisí pouze na OPC-UA serveru.


Popis konfigurátoru "PmaCommGroup > Parametry > Speciální parametry":
Typ čtení času hodnoty proměnnéUrčuje, zda s hodnotou proměnné se bude z OPC-UA serveru číst i čas této hodnoty.
Pokud se čas bude číst, pak se tento čas uloží do vlastnosti PmVar.TimeSource.
No - Čas hodnoty se nebude číst.
Source - Bude se číst čas zdroje, tzn. čas který OPC-UA server vyčetl ze zařízení, se kterým komunikuje (pokud server dokáže ze zařízení tento čas vyčíst).
Server - Bude se číst čas vyčtení hodnoty OPC-UA serverem.
Maximální počet proměnných v jedné registrující zprávěMaximální počet proměnných které se najednou zaregistrují do OPC serveru v jedné zprávě (OPC zpráva typu CreateMonitoredItems).
Tento konfigurátor je přednastaven jako vypnutý (a tedy všechny proměnné se zaregistrují najednou pomocí jedné zprávy).
 
Tento konfigurátor většinou není potřeba zapínat. Zapnout je ho potřeba například když OPC server neumožní registrovat mnoho proměnných v jedné zprávě (v praxi jsme se setkali s omezením 990 proměnných). Pokud je nutno nastavit nějaký počet, pak je nejlepší tento počet zadat co největší.

Popis komunikace pomocí objektu PmaCommMsg:

Seznam a popis komunikačních zpráv:
- 1 = ReadData:
Parametry zprávy:
Maximální počet čtených položekMaximální počet položek, které se mohou přijímat najednou v odpovědi této zprávy.
Požadovaný počet čtených položek se pak určuje v proměnné VarCountRequest v kartě "Data-příjem".
V kartě "Data-zaslání" jsou proměnné:
VarCountRequest: (Long) Požadovaný počet čtených položek.
Hodnota musí být menší nebo rovna hodnotě v konfigurátoru "Maximální počet čtených položek".
ItemId1: (String) Identifikátor první čtené položky.
Tvar tohoto identifikátoru je stejný jako v objektu PmaCommGroup, viz Popis konfigurátoru "ItemId".
Za těmito proměnnými jsou další proměnné ItemId2, ItemId3 ... Jejich počet je určen hodnotou v konfigurátoru "Maximální počet čtených položek".
V kartě "Data-příjem" jsou proměnné:
VarCountResponse: (Long) Skutečný počet přečtených položek.
Value1: (Variant) První čtená hodnota.
Za těmito proměnnými jsou další proměnné Value2, Value3 ... Jejich počet je určen hodnotou v konfigurátoru "Maximální počet čtených položek".

- 2 = WriteData:
Parametry zprávy:
Maximální počet zapisovaných položekMaximální počet položek, které v této zprávě mohou být posílány najednou.
Požadovaný počet zapisovaných položek se pak určuje v proměnné VarCount v kartě "Data-zaslání".
V kartě "Data-zaslání" jsou proměnné:
VarCount: (Long) Požadovaný počet zapisovaných položek.
Hodnota musí být menší nebo rovna hodnotě v konfigurátoru "Maximální počet zapisovaných položek".
ItemId1: (String) Identifikátor první zapisované položky.
Tvar tohoto identifikátoru je stejný jako v objektu PmaCommGroup, viz Popis konfigurátoru "ItemId".
Value1: (Variant) První zasílaná hodnota.
Za těmito proměnnými jsou další proměnné ItemId2, Value2, ItemId3, Value3 ... Jejich počet je určen hodnotou v konfigurátoru "Maximální počet zapisovaných položek".
V kartě "Data-příjem" jsou proměnné:
StatusCode: (Long) OPC-UA hodnota, která indikuje stav vyslání.
Hodnota 0 znamená vše v pořádku.
Nenulové hodnoty indikují chybu (viz OPC-UA norma, Part 4, Kapitola 7.34-StatusCode).

- 3 = Send CloseSecureChannel:
V kartě "Data-zaslání" není žádná proměnná.
V kartě "Data-příjem" není žádná proměnná.

Tuto zprávu lze poslat do OPC-UA serveru například:
- při zastavení aplikace (metoda PmaCommMsg.Run lze volat v události PmaRoot.onAppStopBegin) nebo
- pokud je potřeba znovu restarovat OPC-UA spojení.

Historie:
Pm9.00.34: Opravená chyba: Opravy chyb při šifrování hesla.
Pm9.00.33: Zprovozněno podepisování a šifrování
Pm9.00.32:
- Zprovozněna komunikace pomocí objektu PmaCommMsg pro zprávy typu 1 = ReadData a 2 = WriteData.
- Zprovozněn zápis datových typů: String, LocalizedText a StatusCode.
Pm9.00.29:
- Zprovozněn příjem datového typu ExtensionObject, tzn. příjem datové struktury.
- Opravená chyba: Nefungovalo správně čtení a zápis hodnoty typu String pokud hodnota obsahovala diakritické znaky.
Pm9.00.23: Opravená chyba: Pro tento ovladač je zprovozněna metoda PmaComm.OpenPort a vlastnost PmaCommGroup.UpdateEnabled.
Pm9.00.21: Oprava: Pokud v objektu PmaCommGroup bylo hodně proměnných, pak nefungoval příjem dat.
Nový konfigurátor "PmaCommGroup > Parametry > Speciální parametry > Maximální počet proměnných v jedné registrující zprávě".
Pm9.00.19: Opravená chyba: Pokud se nebylo možno připojit, pak vznikaly stále nové požadavky na vytvoření spojení a staré požadavky se neukončily.
Pm9.00.16:
- Zprovozněna možnost autentizace typu UserName (tzn. musí se zadat jméno a heslo).
- Opravená chyba: Po určité době (např. po 5 minutách) docházelo k restaru tohoto ovladače.
Pm9.00.15: Opravená chyba: Nefungoval příjem komunikační zprávy rozdělené do více podzpráv.
Pm9.00.13: Opravená chyba: Při zápisu do proměnných v objektu PmaCommGroup se někdy ukončila komunikace.
Pm9.00.09: Vytvořeno
© MICROSYS, spol. s r.o.Update cookies preferences