OPC Unified Architecture Data Access Client

OPC Unified Architecture Data Access Client

Protokol OPC Unified Architecture Data Access Client

Popis protokolu


Protokol OPC UA je ďalšou generáciou OPC štandardu, ktorý poskytuje kohézny, bezpečný a spoľahlivý platformovo nezávislý rámec pre prístup k realtime dátam. Hlavný rozdiel oproti predchádzajúcim verziám OPC štandardu spočíva v tom, že namiesto COM/DCOM technológie na medziprocesnú komunikáciu je použitá TCP/IP komunikácia. Daný protokol podporuje dva typy kódovania dát (binárne kódovanie a XML). Doterajšia implementácia OPC klienta zatiaľ podporuje iba binárne kódovanie.

Základné pojmy


Endpoint: fyzická adresa na sieti, ktorá dovoľuje klientovi pristupovať k jednej alebo viacerým službám poskytovaných serverom.

Session: možno chápať ako abstraktné spojenie OPC UA servera a klienta na aplikačnej vrstve OSI vrstvy.

Monitored item: klientsky zadefinovaná entita na OPC UA serveri používaná na monitorovanie hodnôt.

Subscription: klientsky zadefinovaný objekt na OPC UA serveri používaný na vracanie notifikácii o zmene monitorovaných itemoch.

Inicializácia komunikácie


Počas inicializácie komunikácie dochádza medzi klientom a serverom k výmene niekoľkých správ. V prípade binárneho kódovania je prvá správa, ktorú klient odošle serveru "Hello Message". V nej klient navrhne serveru veľkosti prijímacích a odosielacích buffrov a maximálne veľkosti správ, ktoré môžu byť počas TCP komunikácie vymieňané. Taktiež v nej zadefinuje URL adresu endpointu. Server mu odpovie "Acknowledge message", v ktorej navrhnuté parametre potvrdí alebo upraví podľa svojich limitov.

Ďalšia správa, ktorá je odoslaná klientom je "OpenSecureChannel message". Ňou sa klient snaží vytvoriť komunikačný kanál, po ktorom budú vymieňané dáta. V rámci výmeny tejto správy sa klient so serverom dohodnú, či sa použije režim podpisovania a kryptovania alebo iba nekryptovaný režim. Implementácia OPCUA klienta v D2000 podporuje iba nekryptovaný režim.

Po vytvorení komunikačného kanálu môže klient poslať správu na vytvorenie session, "CreateSession Message", teda spojenia na úrovni aplikačnej vrstvy OSI modelu. Po úspešnom potvrdení žiadosti serverom je potrebné session aktivovať správou "ActivateSession Message". V aktivačnej správe sa klient so serverom dohodnú na algoritmoch pre podpisovanie a šifrovanie, teda v prípade, že dané režimy boli zvolené pri vytváraní komunikačného kanálu.

Po aktivovaní session môžu byť vymieňané všetky typy správ slúžiace na správu objektov v adresnom priestore OPC UA servera. Klient v tejto fáze vytvorí pre všetky stanice v rámci komunikačnej linky subscription s parametrami nastavenými na úrovni komunikačnej stanice.

Do novovytvorených subscription je následne potrebné vložiť monitored items. Tie zodpovedajú inštanciám meraných bodov s parametrami, ktoré je možné nastaviť v adresnom dialógu.

Od daného okamihu server v periodických intervaloch nastavených v parametroch subscription informuje klienta o zmenách na monitorovaných objektoch pomocou

"Publish message" správy. V prípade, že na monitorovaných objektoch nedôjde ku zmene, server raz za (Max KeepAlive Count * Publishing Interval) sekúnd pošle "Publish message", ktorej primárna úloha je oznámiť klientovi, že subscription je stále aktívna. Podobný kontrolný mechanizmus je urobený taktiež aj na strane klienta - posiela "Publish request" raz za (Max KeepAlive Count * Publishing Interval). Ak do času (LifeTime Count * Publishing Interval) klient nepošle požiadavku "Publish request", tak subscription na strane servera zaniká.

OPC UA komunikácia bola testovaná s:

  • Simatic S-7 OPC UA Server

  • Bernecker PLC embedded OPC UA Server

  • Zenon OPC UA Server

  • Prosoft EtherNet/IP to Modbus TCP/IP to OPC UA Server Gateway (PLX32-EIP-MBTCP-UA)

Vynútené prerušenie spojenia: Keď sa všetky stanice na linke dostanú do simulácie alebo majú zastavenú komunikáciu, linka sa odpojí (dôjde ku zavretiu komunikačného socketu). Keď aspoň jedna stanica bude mať vypnutú simuláciu a nebude mať zastavenú komunikáciu (záložka Parametre objektu Stanica), linka sa znovu pripojí.

Konfigurácia komunikačnej linky


Kategória komunikačnej linky: OPC UA Client
Host address: Adresa OPC UA servera. Možno zadať mená podľa konvencie UNC (napr. "\\server" alebo "server", doménové DNS mená (napr. "domain.com", "example.company.com") alebo IP adresy ("196.54.23.113"). V prípade redundantných systémov je možné zadávať aj viacero mien/adries oddelených čiarkami alebo bodkočiarkami.
Používanie alternatívnej komunikačnej cesty (druhé alebo ďalšie meno/adresa) danou stanicou signalizuje nastavenie flagu FLB a flagov FLN, FLO, FLP v stave stanice.
TCP port: TCP port OPC UA servera (napr. 4840).
EndpointUrl: Adresa endpointu (napr. opc.tcp://localhost:4840)
Pozn: pri použití nastavenia Client Type=Secure sa nepoužívajú priamo nastavenia Host address ani TCP port. Ak sa ale v rámci EndpointUrl použije reťazec #HOST#, tak bude nahradzovaný IP adresami/menami zadanými v parametri Host address. Toto je použiteľné pri konfigurovaní spojenia na redundantný OPC server, ktorý má viacero IP adries/mien.
Encoding type: Typ kódovania použitého pri výmene dát (aktuálne podporované je iba Binary encoding).

Konfigurácia protokolu na úrovni komunikačnej linky


Názov parametra

Popis

Jednotka

Náhradná hodnota

Názov parametra

Popis

Jednotka

Náhradná hodnota

Client Type

Typ použitého klienta (ovládača na OPC UA komunikáciu):

  • Default - pôvodná implementácia OPC UA klienta. Podporuje autentifikáciu (parameter Authentication Type) typu Anonymous/Username. Nepodporuje kryptovanie ani podpisovanie správ

  • Secure - nová implementácia OPC UA klienta s podporou bezpečnosti. Podporuje rozšírené možnosti autentifikácie, kryptovanie aj podpisovanie správ.

Default

Secure

Default

Session Name

Textový identifikátor session (Application name). Identifikátor session by mal byť unikátny v rámci inštancie klienta, vďaka čomu je možné rýchlejšie vyhľadávanie problémov v logoch klienta alebo servera.

String

Kom process

Application URI

Unikátny identifikátor, ktorý jednoznačne označuje konkrétnu inštanciu aplikácie. Pri použití TLS certifikátov je nutné, aby Application URI bolo rovnaké, ako je v klientskom certifikáte (viď "urn:Scada:Ipesoft:D2000 Kom" v sekcii o generovaní certifikátov).

String

 

Requested Channel Lifetime

Navrhovaný čas, pred uplynutím ktorého je potrebné vykonať znovuotvorenie kanála. V prípade, že k nemu nedôjde v danom čase, kanál sa uzavrie a nebude možné v rámci neho vymieňať dáta.

hh:mm:ss

01:00:00

Requested Session Timeout

Navrhovaný čas, pred uplynutím ktorého je potrebné medzi klientom a serverom poslať ľubovoľnú správu. V prípade, že sa nepošle do daného času, uvoľnia sa zdroje držané na serveri v rámci danej session. Primárnou úlohou tohto parametra je odstránenie session, ktoré sa z nejakého neočakávaného dôvodu stali neaktívne.

mm:ss

01:00

Authentication Type

Typ autentifikácie použitej voči OPC UA serveru. Podporené typy sú:

  • Anonymous: pripojenie sa anonymne

  • Username : pripojenie sa za použitia užívateľského mena a hesla

  • Certificate: pripojenie sa za použitia x509 certifikátu (iba pre Client Type = Secure)

Anonymous / Username

Anonymous

Token User Name

Ak Authentication type = Username, tak užívateľské meno použité v autentifikácii.
Ak Authentication type = Certificate, tak cesta k užívateľskému certifikátu (napr. D:\user_cert.der).

 

 

Token Password

Ak Authentication type = Username, tak heslo použité v autentifikácii.
Ak Authentication type = Certificate, tak cesta k užívateľskému súkromnému kľúču (napr. D:\user_private_key.pem).

 

 

Security Policy

Bezpečnostná politika (iba pre Client Type = Secure; pre Client Type = Default sa používa bezpečnostná politika None):

  • None - bezpečnostná politika None

  • Basic128Rsa15 - bezpečnostná politika Basic128Rsa15 (považovaná za zastaralú kvôli použitiu slabého hashovacieho algoritmu SHA-1)

  • Basic256 - bezpečnostná politika Basic256 (považovaná za zastaralú kvôli použitiu slabého hashovacieho algoritmu SHA-1)

  • Basic256Sha256 - bezpečnostná politika Basic256Sha256

  • Aes128Sha256RsaOaep - bezpečnostná politika Aes128Sha256RsaOaep

  • Aes256Sha256RsaPss - bezpečnostná politika Aes256Sha256RsaPss

None
Basic128Rsa15
Basic256
Basic256Sha256
Aes128Sha256RsaOaep
Aes256Sha256RsaPss

None

SecurityMode

Spôsob zabezpečenia správ v OPC UA komunikácii (iba pre Client Type = Secure; pre Client Type = Default sa používa spôsob zabezpečenia None):

  • None - správy nie sú zabezpečené

  • Sign - správy sú podpísané (zabezpečenie proti modifikácii, ale nie proti odposluchu)

  • Sign & Encrypt - správy sú zakryptované a podpísané (zabezpečenie proti modifikácii aj proti odposluchu)

None
Sign
Sign & Encrypt

None

Preferred Policy Id

Identifikátor preferovanej Security Policy (iba pre Client Type = Default na kryptovanie hesla). Pokiaľ OPC UA ponúka viacero bezpečnostných politík, je možné vybrať konkrétnu podľa identifikátora zaslaného OPC serverom (identifikátor je možné zistiť z logov). Príklady identifikátora (textový tvar je v zátvorkách):
PolicyId: 30 (0)
PolicyId: 31 (1)
PolicyId: 75 73 65 72 6E 61 6D 65 5F 62 61 73 69 63 31 32 38 52 73 61 31 35 (username_basic128Rsa15)
PolicyId: 75 73 65 72 6E 61 6D 65 5F 62 61 73 69 63 32 35 36 53 68 61 32 35 36 (username_basic256Sha256)

-

-

Reconnect Delay

Čakanie po rozpade spojenia, pred opakovaným nadviazaním spojenia.

mm:ss.mss

00:10.000

Error Connect Delay

Čakanie po neúspešnom pokuse o nadviazanie spojenia.

mm:ss.mss

00:02.000

Object Reinit Delay

Čakanie po neúspešnom pokuse o vytvorenie monitored items. Ak je nulové, pokus sa neopakuje. Ak je nenulové, pokus sa opakuje po definovanom čakaní.
Pozn: v prípade konkrétneho OPC UA servera (Simatic S-7) mohlo dôjsť k tomu, že sa po reštarte PLC nepodarilo vytvorenie monitored items, ale o nejaký čas (po skončení kompletnej inicializácie PLC?) sa vytvorenie už podarilo.

sec

0

Disconnect On ServiceFault

Ukončenie spojenia po príjme správy ServiceFault.

YES/NO

NO

Max Array Length

Maximálna podporená veľkosť poľa udáva počet elementov, s ktorými OPC UA dokáže pracovať

-

100.000

Verify Certs

Overenie platnosti serverovského certifikátu. Štandardne sa kontroluje obdobie platnosti a zhoda názvu servera s menom zadaným v konfigurácii linky (Host address). Túto kontrolu je možné vypnúť.

Stretli sme sa napr. s PLC B&R, ktoré majú štandardne certifikát s menom br-automation a pokiaľ nie je možné pregenerovať tento certifikát, je nutné vypnúť kontrolu platnosti.

YES/NO

YES

Debug Mode

Pomocou daného parametru je možné zmeniť počet informácií o chode komunikácie. Režimy Extended/Full odporúčame zapínať iba pri detekcii problémov a ladení komunikácie. Režim "Full + Trace (Secure only)" je platný iba pre Client Type = Secure.

Normal/Extended/Full/
Full + Trace (Secure only)

Normal

Debug Threads

Parameter určuje vlákno, resp. vlákna, ktoré budú posielať informačné výpisy o chode komunikácie.

Receiving/Sending/Others treads/All threads

All threads

Poznámka: všetky X509 certifikáty použité v OPC UA komunikácii sa nachádzajú v nasledovných podadresároch adresára kom-opcua v aplikačnom adresári:

  • own - adresár s vlastným certifikátom KOM procesu (súbor cert.der). Pokiaľ tento súbor neexistuje, je vygenerovaný.
    Pozor - tento automaticky generovaný certifikát bude mať dobu platnosti iba 1 rok, preto odporúčame nahradiť ho dlhodobejšie platným certifikátom!

  • private - adresár s privátnym kľúčom k vlastnému certifikátu KOM procesu (súbor private.pem)

  • rejected - adresár s odmietnutými certifikátmi

  • trusted - adresár s dôveryhodnými certifikátmi (pri prvom nadviazaní spojenia s OPC UA serverom je jeho certifikát uložený do tohto adresára)

Konfigurácia protokolu na úrovni komunikačnej stanice


Parametre na úrovni komunikačnej stanice zodpovedajú nastaveniu jednej subscription. Teda jedna komunikačná stanica je ekvivalentná jednej inštancii subscription v rámci session.

Názov parametra

Popis

Jednotka

Náhradná hodnota

Requested Publishing Interval

Hodnota, v akých časových intervaloch má server poslať informáciu o zmene monitored items v rámci inštancie subscription pomocou "Publish message".
Pozn: parameter určuje navrhovanú hodnotu parametra, ktorú OPC UA server môže zmeniť, napr. Bernecker-Rainer vracal vždy hodnotu "Publishing Interval" aspoň 50 ms, hoci požadovaný interval bol menší.

mi:ss.mss

00:05.000

Requested LifeTime Count

Ak do času daného (LifeTime Count * Publishing Interval) nepríde od klienta žiadosť o dáta / subscription zaniká. Je potrebné, aby hodnota tohto parametra bola minimálne 3 krát väčšia, ako hodnota "Requested Max KeepAlive Count".
Pozn: parameter určuje navrhovanú hodnotu parametra, ktorú OPC UA server môže zmeniť, napr. Bernecker-Rainer vracal vždy hodnotu "LifeTime Count" maximálne 600, hoci požadovaná hodnota bola väčšia.


Number

1000

Requested Max KeepAlive Count

V prípade, že v objektoch subscription nedôjde ku zmene, server po uplynutí času (Max Notifications Per Publish * Publishing Interval) pošle keep-alive správu, ktorú klient potvrdí tým, že pošle novú žiadosť o dáta.
Pozn: parameter určuje navrhovanú hodnotu parametra, ktorú OPC UA server môže zmeniť, napr. Bernecker-Rainer vracal vždy hodnotu "Max KeepAlive Count" maximálne 200, hoci požadovaná hodnota bola väčšia.

Number

5

Max Notifications Per Publish

Parameter udáva maximálny počet notifikácii o zmene objektu, ktorú server môže poslať v jednej "Publish message". Nulový parameter indikuje, že počet notifikácii nie je obmedzený.

Number

0

Publishing Enabled

Parameter zapína/vypína publishing v rámci subscription.

YES/NO

YES

Priority

Udáva relatívnu prioritu jednej subscription. V prípade, že server má poslať viac notifikácii, subscription s väčšou prioritou bude uprednostnený.

0-255

0

Samples Queue Size

Pomocou tohto parametra je možné pre každý monitorovaný item v subscription vytvoriť na strane servera frontu objektov s danou dĺžkou.

Number

0

Discard Oldest

Pri zaplnení fronty budú z nej vyhadzované najstaršie hodnoty (YES) alebo nahradzované najnovšie hodnoty (NO).

YES/NO

YES

Read Timestamp

Časové značky používané pri čítaní hodnoty:

  • None - nepoužije sa čas získaný z OPC servera (hodnota dostane časovú značku s aktuálnym časom)

  • Source - použije sa SourceTimestamp

  • Server - nastaví sa ServerTimestamp (prednastavená hodnota)

  • Newer - použije sa novší z časov SourceTimestamp a ServerTimestamp

-

Server

Write Timestamp

Časové značky používané pri zápise hodnoty:

  • None - nenastaví sa žiadna časová značka

  • Source - nastaví sa SourceTimestamp (na čas zapisovanej hodnoty)

  • Server - nastaví sa ServerTimestamp (na aktuálny čas)

  • Both - nastaví sa SourceTimestamp aj ServerTimestamp

Pozn: ak OPC server nepodporuje zápis časových značiek, podľa normy má vrátiť chybu Bad_WriteNotSupported (2155020288).

-

None

Write Status Code

Pri zápise bude zapisovaná položka StatusCode. 
Pozn: podľa normy vráti OPC UA Wrapper chybu Bad_WriteNotSupported (2155020288), ak je zapisovaná položka StatusCode pri zápise do OPC DA  Servera verzie 2.05a.

YES/NO

YES

Write Whole Array

Pri zápise položky poľa sa najskôr načíta celé pole a potom sa celé zapíše. Pokiaľ je tento parameter nastavený na hodnotu NO, zapisuje sa iba konkrétna položka poľa,
Pozn: ak OPC server nepodporuje zápis konkrétnej položky poľa, podľa normy má vrátiť chybu Bad_WriteNotSupported (2155020288).
Pozn: ak je tento parameter aktívny, na meranom bode typu pole nesmie byť nastavený parameter Write only.

YES/NO

NO

Accept Older Time

Budú akceptované hodnoty, ktoré nie sú staršie ako špecifikovaný časový interval (oproti časovej značke aktuálnej hodnoty meraného bodu). Po zápise sa môže stať, že spätne vyčítaná hodnota je staršia (bežne o niekoľko ms) oproti času zápisu, pokiaľ komunikačný počitač a OPC UA server nemajú presnú synchronizáciu času. V logu linky sa môžu vyskytovať chybové hlášky:
Ignoring value for I/O tag <name>, current timestamp=<current_time> is newer than received <old_time>
Zvýšenie hodnoty parametra Accept Older Time spôsobí spracovanie takýchto starších hodnôt a potlačenie chybovej hlášky.

hh:mi:ss

00:00:00

Read Mode

Spôsob čítania hodnôt:

  • Subscribe: komunikácia pomocou subscription a notifikácií (štandardná)

  • Subscribe+Read: ako Subscribe, navyše sa posielajú periodické Read správy (podľa časových parametrov stanice)