Ovladač OPC UA klient umožňuje číst a zapisovat hodnoty uzlů
(nodes) OPC UA serveru.
Seznam sekcí: - OPC UA
- Činnost ovladače
- Parametry ovladače
- Konfigurace ovladače
OPC UA
OPC UA je univerzálním standardem pro komunikaci a
sdílení dat mezi různými zařízeními od různých výrobců. Standard
byl navržen jako multiplatformní nástupce klasického OPC.
Není již tedy závislý na COM technologií společnosti Microsoft.
OPC UA obsahuje i další rozšíření jako např. generování a
zpracovávání událostí, přístup k historický k datům, vzdálené
spouštění funkcí apod. Standard definující OPC UA vytvořilo OPC
Foundation viz: https://www.opcfoundation.org.
Komunikace OPC UA může pracovat prostřednictvím dvou
protokolů:
Server může podporovat jeden nebo oba protokoly. Specifikace
protokolu je součástí URL (adresy) serveru:
opc.tcp://ua_server.mii.cz
http://ua_server.mii.cz
Klient OPC UA pro Control Web podporuje obě možnosti
komunikace.
Adresní prostor OPC UA Serveru
Adresní prostor OPC UA serverů je hierarchický. Skládá se z
uzlů (nodes) a vazeb mezi nimi (reference).
Každá reference spojuje dva uzly. Existuje několik typů
referencí. Například reference typu Organizes se
používá k vytvoření hierarchické struktury adresního prostoru
serveru. Adresní prostor si můžeme představit jako strom, kde
vazba mezi uzly je tvořená referencemi.
Existuje několik typů uzlů:
Objekt | Popis |
---|
Proměnná (Variable) | Pro nás nejdůležitější typ uzlu. Tento uzel obsahuje
data, která můžeme číst nebo zapisovat. Data musí odpovídat
typu. Typ proměnné definuje reference HasTypeDefinition.
| Objekt (Object) | Uzel tohoto typu slouží k vytváření hierarchické
struktury. Neobsahuje hodnotu. | Metoda (Method) | Metoda, kterou může klient
volat. | Pohled (View) | Pohledy umožňují zobrazit část adresního
prostoru. | Datový typ (DataType) | Definice datového typu. | Typ proměnné (VariableType) | Definice typu proměnné. | Typ objektu (ObjectType) | Definice typu objektu. | Typ reference (ReferenceType) | Definice typu reference. |
Identifikátor uzlu
Každý uzel má jednoznačný identifikátor (NodeId).
Identifikátor je možné použít k přímému přístupu k uzlu,
bez ohledu na jeho umístění v adresním prostoru serveru.
Je například možné číst nebo zapisovat jeho hodnotu,
případně další atributy. Toho využívá ovladač OPC UA
klient pro Control Web. Identifikátory uzlů jsou
definicí v parametrickém souboru propojeny na čísla
kanálů. Čtením nebo zápisem kanálu vyvoláme čtení nebo
zápis hodnoty uzlu v OPC serveru.
Identifikátor uzlu se skládá ze tří části:
- Index jmenného prostoru (name space
index)
Adresní prostor serveru bývá zpravidla rozdělen
na jmenné prostory. Identifikátor (třetí část
identifikátoru uzlu) je jedinečný pouze ve svém adresním
prostoru.
- Typ identifikátoru (identifier
type)
Určuje typ následující poslední položky
(identifikátoru). Možné hodnoty jsou:
číslo (v zápisu označeno písmenem n)
řetězec (v zápisu označeno písmenem
s)
GUID (v zápisu označeno písmenem g)
OPAQUE pole bajtů (v zápisu označeno písmenem
b)
- Identifikátor
Jednoznačný identifikátor v rámci daného jmenného
prostoru.
Formát zápisu identifikátoru je následující:
ns=<name space index>; n|s|g|b = <id>
příklad identifikátoru:
ns=5;s=Sinusoid3
index jmenného prostoru se v zápisu nemusí uvádět,
potom se předpokládá, že je to 0. Například:
i=1234
Datové typy
Datové typu mohou být základní (built-in) a strukturované
definované v adresním prostoru serveru. Strukturované typy se
definují jako struktura z jiných typů. Ovladač OPC UA klient
pro Control Web dokáže číst hodnoty uzlů, jejichž typ je
základní (build-in). V následující tabulce je seznam všech
základních typů definovaných v OPC UA, které podporuje
ovladač:
Objekt | Popis |
---|
Boolean | Logická hodnota, může být v aplikaci spojená s
kanálem typu boolean nebo s libovolným
numerickým kanálem. | Byte | Hodnota z rozsahu 0..255. V aplikaci může být spojená
s libovolným numerickým kanálem. | Double, Float | Desetinná čísla. V aplikaci může být spojená s
libovolným numerickým kanálem. | Int16, Int32, Int64 | Celá čísla se znaménkem. V aplikaci může být spojená
s libovolným numerickým kanálem. | SByte | Hodnota z rozsahu -128..127. V aplikaci může být
spojená s libovolným numerickým kanálem. | String | Řetězec, v aplikaci může být spojen s kanálem typu
string. | UInt16, Uint32, UInt64 | Celá čísla bez znaménka. V aplikaci může být spojená
s libovolným numerickým kanálem. | ExpandedNodeId, NodeId,
QualifiedName | Popis uzlu. V aplikaci může být spojen s kanálem typu
string. | LocalizedText | Řetězec, který může obsahovat informaci o jazyku. V
aplikaci může být spojen s kanálem typu string.
Jazyk je vložen na začátek řetězce a oddělen dvojtečkou.
Příklad zápisu: cz:Text Text Pokud
není jazyk uveden, bude na začátku textu jenom
dvojtečka: :abc abc abc | ExtensionObject | ExtensionObject je možné pouze číst. Do
Control Web je převeden jako pole kanálů
typu shortcard. |
Následující datové typy ovladač v aktuální verzi
nepodporuje:
ByteString | | DataValue | | DateTime | | DiagnosticInfo | | Guid | | StatusCode | | Variant | | XmlElement |
Zabezpečení
Ve specifikaci OPC UA je kladen velký důraz na
bezpečnost. Dle specifikace OPC UA jsou tři možnosti
zabezpečení komunikačního kanálu:
Žádné zabezpečení (none) - Nejsou vyžadovány
certifikáty, komunikační kanál není zabezpečený.
Podepsané - Mezi klientem a serverem je vytvořen
komunikační kanál. Jednotlivé zprávy jsou podepisované
certifikáty serveru nebo klienta.
Podepsané a kryptované - Mezi klientem a serverem je
vytvořen komunikační kanál. Jednotlivé zprávy jsou
podepisované certifikáty serveru nebo klienta a kryptované.
Tato varianta je nejbezpečnější a doporučená.
Pokud je to vyžadováno, má každá strana komunikace svůj
certifikát, který ji jednoznačně identifikuje. Při navazování
komunikace je vytvořen šifrovaný komunikační kanál. Klient i
server mohou povolit komunikaci s jakýmkoliv protějškem
(jakýkoliv certifikát považují z důvěryhodný) nebo je nutné
buď používat certifikáty vydané důvěryhodnou certifikační
autoritou nebo v konfiguraci serveru a klienta certifikát
druhé strany označit a důvěryhodný.
Postup může být například následující: Ovladač OPC UA
klient pro Control Web vytváří svůj bezpečnostní
certifikát automaticky při prvním spuštění na daném počítači.
Při prvním pokusu o připojení získá klient (ovladač)
certifikát serveru. Protože nenajde certifikát ve svém seznamu
důvěryhodných certifikátů, uloží získaný certifikát do svého
seznamu nedůvěryhodných certifikátů a se serverem se odmítne
spojit. Uživatel nyní musí spustit konfiguraci zabezpečení a
certifikát označit za důvěryhodný. Ovladač tento certifikát
přesune do svého seznamu důvěryhodných certifikátů a při
následujícím pokusu o spojení server neodmítne. Obdobně může
být nutné označit certifikát klienta v konfiguraci
serveru.
Pro konfiguraci certifikátů je součástí instalace ovladače
správce certifikátů. Správce certifikátů je možné spustit z
konfigurátoru ovladače. Podrobněji v kapitole konfigurace certifikátů Konfigurace certifikátů.
Subscription - odběr informací o změnách
V klasickém OPC i v novém OPC UA je jako doporučený způsob
komunikace uváděna notifikace o změně hodnoty klienta ze
serveru. Klient si určuje, které změny a jak často pro něj má
server sledovat.
Při tomto způsobu komunikace klient zvolí uzly, jejichž
hodnoty ho zajímají. K nim vytvoří odpovídající sledované
položky (monitored items). U každé nastavíme
požadovanou periodu vzorkování (sampling interval).
Monitorovaná položka je vlastně identifikátor uzlu rozšířený o
periodu. Monitorovaná položka sleduje změny hodnoty (s danou
periodou) a záznam o změně ukládá do fronty.
Pro určitou skupinu takto vytvořených položek vytvoří
klient odběr (subscription). Odběru nastavíme
periodu odesílání změn (publishing interval).
Perioda odesílání změn může být delší než perioda vzorkování.
Potom může být při jednom odeslání změn posláno několik změn
stejného uzlu. U každé změny je zaznamenána časová značka
(time stamp).
Ovladač OPC UA klient pro Control Web tento způsob
komunikace podporuje (v parametrickém souboru se skupina uzlů
v subscription vytvoří v sekci monitored_items).
Profily
OPC UA specifikace je velmi rozsáhlá, ale naštěstí nemusí
každý server ani klient podporovat všechny vlastnosti. Aby
existoval přehled, které vlastnosti daný server podporuje,
vznikly takzvané profily. Každý profil definuje seznam
vlastností, které server může implementovat. Existuje seznam
profilů pro klienty, pro servery, seznam komunikačních profilů
(transport profiles) a bezpečnostních profilů
(security profiles). Aktuální přehled všech
profilů je možné najít na webu OPC Foundation.
Činnost ovladače
Ovladač se při spuštění aplikace připojí k OPC UA serveru.
Podle definice v parametrickém souboru je každý kanál
(identifikovaný svým číslem) spojený s určitým uzlem (node)
v adresním prostoru serveru.
Komunikace hodnot může probíhat dle požadavků aplikace, čtením
nebo zápisem některého kanálu. Čtení kanálu vyvolá čtení hodnoty
ze serveru. Zápis do kanálu vyvolá odeslání hodnoty do
serveru.
Další možnost je definovat u některých kanálů periodu s níž
bude server informovat klienta - tedy ovladač o změně hodnoty.
Ovladač změnu promítne do kanálu a vyvolá odpovídající událostní
procedury v datových sekcích aplikace.
Pokud dojde při běhu aplikace k rozpadu spojení se serverem,
nebo pokud se nepodaří navázat spojení při startu aplikace,
pokouší se ovladač spojení obnovit.
Parametry ovladače
Veškeré parametry ovladače se nastavují v parametrickém
souboru. Celý soubor parametrů je rozdělen do několika sekcí.
Název sekce je uveden v hranatých závorkách. V sekci jsou uvedeny
za jménem a znakem = jednotlivé parametry. Na jednom řádku může
být definován jeden parametr.
Základní nastavení ovladače obsahuje sekce server.
Kanály se definují v sekcích monitored_items a items.
V sekci monitored_items jsou definované kanály u
nichž bude požadováno zasílání notifikací o změně hodnoty ze
serveru. V sekci items jsou definovány kanály, které
mohou být komunikovány pouze dle požadavků aplikace. Sekcí monitored_items
a items může být v parametrickém souboru libovolný
počet.
Parametry pro základní nastavení ovladače — sekce [server]
V této sekci se nastavují společné parametry komunikace s
OPC serverem.
[server]
URL = <server url>
security = yes | no
ignore_connect_error = yes | no
write_array_index_range = yes | no
keep_alive_interval = <number>
URL | Adresa serveru | security | Parametr určuje jestli se klient připojuje k serveru,
který používá zabezpečení komunikace (identifikační
certifikát a kryptovaný komunikační kanál). Pokud je
parametr security nastavený na hodnotu no,
připojí se klient pouze k serveru, který umožňuje
nezabezpečený komunikační kanál. Pokud je nastaven na
hodnotu yes připojí se pouze k serveru, který
zabezpečený komunikační kanál podporuje. | ignore_connect_error | Pokud je parametr nastaven na hodnotu yes (ignorovat
chybu připojení) je možné aplikaci spustit i v případě, kdy
není možné navázat spojení se serverem. V případě že je
parametr nastaven na hodnotu no nebo není v
parametrickém souboru uveden a server není k dispozici,
aplikace nebude spuštěna. | write_array_index_range | Některé OPC UA servery neumí zapisovat jenom část
pole, ale vždy vyžadují zapsat pole celé (OPC UA specifikace
toto chování umožňuje). Pokud nastavíme parametru na hodnotu
no, bude ovladač vždy zapisovat celá
pole. write_array_index_range = no | keep_alive_interval | Parametr definuje periodu kontroly spojení se
serverem a periodu obnovy přerušeného spojení. Parametr je v
ms. |
Příklad parametrů v sekci [server]:
[server]
URL = opc.tcp://opcua.mii.cz:53530/OPCUA/SimulationServer
security = no
ignore_connect_error = yes
Konfigurace kanálů ovladače — sekce
[monitored_items]a[items]
V těchto sekcích se definuje spojení kanálů s konkrétními
uzly v adresním prostoru serveru. Na jenom řádku se definuje
jeden kanál, pokud je uzel skalární nebo rozsah kanálů pokud
je uzel pole. Pokud je uzel vícerozměrné pole je v ovladači
převedeno na odpovídající jednorozměrné pole. Na jednom řádku
se vždy definuje odkaz na jeden uzel. Pokud je uzel skalár
může být spojen pouze s jedním číslem kanálu.
Následuje způsob zápisu parametrů a jejich možné
hodnoty:
[items]
<From>, <Type>, <Direction> = <NodeId>
<From>..<To>, <Type>, <Direction> = <NodeId>
From | číslo prvního kanálu. | To | číslo posledního kanálu. | Type | typ kanálu v Control Webu. Možné hodnoty odpovídají datovým typům v
Control Webu a jsou následující: boolean | | shortint | | shortcard | | integer | | cardinal | | longint | | longcard | | shortreal | | real | | string |
| Direction | Směr kanálu. Možné hodnoty jsou: input | vstupní kanál | output | výstupní kanál | bidirect | bidirectional | obousměrný kanál |
| NodeId | Identifikátor uzlu, tak jak byl popsán v kapitole
Identifikátor uzlu. |
V sekcích monitored_items je nutné definovat
periodu zaznamenávání změn hodnot uzlu (sampling_interval)
a periodu odesílání změněných hodnot klientovi (publishing_interval).
Parametr sampling_interval muže být různý pro
jednotlivé kanály, proto je možné ho v sekci opakovat. Hodnota
parametru je použitá pro všechny následující uzly. Parametr
publishing_interval je společný pro celou sekci a
muže být v sekci definovaný pouze jednou a to vždy před
definicí kanálů.
Příklad parametrů:
[server]
URL = opc.tcp://opcua.mii.cz:53530/OPCUA/SimulationServer
security = no
ignore_connect_error = yes
[monitored_items]
publishing_interval = 2000
sampling_interval = 1000
102, real,input = ns=3;s=ByteAnalogItem
103, real, input = ns=5;s=Sinusoid1
sampling_interval = 2000
104, real, input = ns=5;s=Square1
105, real, input = ns=5;s=Triangle1
[items]
106, real, input = ns=5;s=Triangle1
300..304, real, bidirect = ns=3;s=ByteArray
[monitored_items]
publishing_interval = 5000
sampling_interval = 5000
200..204, real, bidirect = ns=3;s=ByteArray
Konfigurace ovladače
Pro pohodlnou konfiguraci ovladače (vytvoření parametrického
souboru) je k dispozici konfigurační nástroj. Konfiguraci ovladače
je možné spustit z datového editoru vývojové verze
systému Control Web.
Konfigurátor se připojí k zadanému OPC UA serveru. Zobrazí jeho
adresní prostor a umožní vkládání identifikátorů uzlů do
parametrického souboru.
V levé části okna konfigurátoru je v přehledném stromu zobrazen
parametrický soubor. Pokud vybereme některou položku stromu můžeme
v tabulce pod stromem nastavovat její parametry. Pokud vybereme
první položku stromu "OPC UA Server" můžeme nastavovat základní
parametry připojení (v parametrickém souboru je to sekce
[server]). U každého parametru je zobrazena nápověda.
V pravé části konfigurátoru je zobrazen strom adresního
prostoru připojeného serveru. Pokud je vybrána některá položka,
konfigurátor pod stromem zobrazí její parametry. Pokud je vybrán
uzel typu proměnná je možné ho tlačítkem "Vložit do PARu" přidat
do parametrického souboru (strom vlevo).
Konfigurace certifikátů
V konfigurátoru ovladače je také možné konfigurovat
certifikáty. Konfiguraci certifikátů spustíme tlačítkem
. Konfigurace
certifikátů se spustí v samostatném procesu a vyžaduje
oprávnění administrátora.
Konfigurátor zobrazí seznam všech certifikátů klienta (tedy
certifikáty všech serverů s nimiž ovladač komunikoval i svůj
vlastní certifikát).
Tlačítkem Důvěřovat je možné odmítnutý
certifikát označit za důvěryhodný.
|