smartCORE Modul "opcuaclient"
Beschreibung
Das OpcUaClient Modul liest die Werte vordefinierter Nodes und schreibt die Daten in einen entsprechenden Kanal. Die Verbindung zu einem OPC UA Server kann ohne Verschlüsselung oder mit den von OpenSSL unterstützten Security Policies genutzt werden. Optional können für die Verbindung zum OPC UA Server ein Benutzername und ein Passwort angegeben werden. Sobald der Client erfolgreich mit einem OPC UA Server verbunden ist, löst er die definierten Browsepaths in NodeIds auf - oder, bei gesetztem booleschem Flag, jeden untergeordneten Node, der eine Variable ist. Die Werte dieser Nodes werden zyklisch gelesen und in einen Nodevalue-Channelbuffer eingereiht. Der Channelbuffer wird zyklisch abgearbeitet und in den zugehörigen Kanal geschrieben.
Open62541
Installation
Das OPC UA Client Modul basiert auf open62541 1.3. Open62541 kann unter Ubuntu wie folgt als Shared Library installiert werden:
git clone https://github.com/open62541/open62541.git
cd open62541
git checkout 1.3
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON -DUA_FORCE_WERROR=OFF -DUA_NAMESPACE_ZERO=FULL -DUA_ENABLE_ENCRYPTION=OPENSSL ..
make -j8
sudo make install
Konfiguration
JSON-Konfiguration
Im folgenden Abschnitt wird die gesamte JSON-Konfiguration des OPC UA Clients gezeigt. Die Kanalnamen des OPC UA Client Moduls setzen sich aus den Namen des Browsepaths zusammen, wenn kein Name angegeben ist. Ohne angegebenen Datentyp kann der Kanal erst initialisiert werden, wenn der OPC UA Client erfolgreich verbunden ist und den Browsepath auflösen kann.
Minimale Konfiguration
{
"module" : "OpcUaClient",
"factory" : "opcuaclient",
"config" : {
"serverURL" : "opc.tcp://opcua.umati.app:4840",
"channels" : [
{
"browsepath" : [ { "namespaceIndex" : 4, "name" : "Machines" }, { "namespaceIndex" : 22, "name" : "BasicGMS" }, { "namespaceIndex" : 9, "name" : "ResultManagement" }, { "namespaceIndex" : 9, "name" : "CorrectionsFolder" }, { "namespaceIndex" : 22, "name" : "Corr3" }, { "namespaceIndex" : 9, "name" : "CorrectionValueAbsolute" }]
}
]
}
}
Beispiel Aus der oben angegebenen Konfiguration ergibt sich der folgende Kanalname, wenn der OPC UA Client erfolgreich verbunden ist und den Browsepath aufgelöst hat:
- Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr3.CorrectionValueAbsolute
Kann der OPC UA Client die Browsepaths nicht auflösen, werden keine Wertaktualisierungen erzeugt und kein Kanal angelegt.
Konfiguration mit allen Parametern
{
"module":"OpcUaClient",
"factory":"opcuaclient",
"config":{
"serverURL" : "opc.tcp://opcua.umati.app:4840",
"userName" : "User",
"password" : "1234",
"securityMode" : "Sign",
"securityPolicyUri" : "http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256",
"pkiFolderPath" : "/home/Optimeas/clientPki",
"clientCertificateFile" : "/home/Optimeas/clientPki/own/certs/client_cert.der",
"privateKeyFile" : "/home/Optimeas/clientPki/own/private/client_key.der",
"produceInterval" : 100,
"pollInterval" : 100,
"bufferSize" : 1024,
"channels" :[
{
"browsepath" : [ { "namespaceIndex" : 4, "name" : "Machines" }, { "namespaceIndex" : 22, "name" : "BasicGMS" }, { "namespaceIndex" : 9, "name" : "ResultManagement" }, { "namespaceIndex" : 9, "name" : "CorrectionsFolder" }, { "name" : "Corr2", "namespaceIndex" : 22}],
"includeChildNodes": true
},
{
"browsepath" : [ { "namespaceIndex" : 4, "name" : "Machines" }, { "namespaceIndex" : 22, "name" : "BasicGMS" }, { "namespaceIndex" : 9, "name" : "ResultManagement" }, { "namespaceIndex" : 9, "name" : "CorrectionsFolder" }, { "name" : "Corr3", "namespaceIndex" : 22}, {"name" : "CorrectionValueAbsolute", "namespaceIndex": 9} ],
"name" : "CorrectionValueAbsolute3",
"dataType" : "double",
"physicalUnit" : "μm"
}
]
}
}
Beispiel Aus der oben angegebenen Konfiguration ergeben sich die folgenden Kanalnamen, wenn der OPC UA Client erfolgreich verbunden ist und die Browsepaths aufgelöst hat:
- "Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr2.CharacteristicIdentfier"
- "Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr2.Identifier"
- "Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr2.CorrectionValueAbsolute"
- "Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr2.LowerControlLimit"
- "Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr2.UpperControlLimit"
- "CorrectionValueAbsolute3"
Aus der oben angegebenen Konfiguration ergeben sich die folgenden Kanalnamen, wenn der OPC UA Client keine Verbindung herstellen konnte:
- "CorrectionValueAbsolute3"
Kann der OPC UA Client die Browsepaths nicht auflösen, werden keine Wertaktualisierungen erzeugt.
Parameterliste Konfiguration
| Parametername | Erforderlich | Datentyp | Default | Beschreibung |
|---|---|---|---|---|
| serverURL | JA | string | URL des OPC UA Servers | |
| userName | Nein | string | Benutzername für die Anmeldung am OPC UA Server, Standard ist anonym | |
| password | Nein | string | Passwort für die Anmeldung am OPC UA Server | |
| securityMode | Nein | string | None | Sicherheitsmodus der Verbindung: None, Sign, SignAndEncrypt |
| securityPolicyUri | Nein | string | Security Policy URI des gewählten Endpoints des OPC UA Servers | |
| pkiFolderPath | Nein | string | Dateipfad zum Laden der Trust-, Revocation- und Issuer-Liste. Zertifikate müssen in folgenden Unterordnern abgelegt werden: issuer/certs, issuer/crl, trusted/certs | |
| acceptAllCertificates | Nein | boolean | false | Legt fest, ob der Client alle Serverzertifikate akzeptiert |
| clientCertificateFile | Nein | string | Pfad des Client-Zertifikats einschließlich Dateiname | |
| privateKeyFile | Nein | string | Pfad des privaten Client-Schlüssels einschließlich Dateiname | |
| produceInterval | Nein | integer | 100 | Produce-Intervall der Kanäle in ms |
| pollInterval | Nein | integer | 100 | Abfrageintervall der OPC UA Node-Werte in ms |
| bufferSize | Nein | integer | 1024 | Puffergröße eines OPC UA Node-Werts |
| channels | JA | array | Array mit je einer OPC UA Node-Beschreibung pro Kanal | |
| browsepath | JA | array | Array mit dem Browsepath eines OPC UA Nodes. Startnode ist der Objects-Node (ns=0;i=85) | |
| browsepath/namespaceIndex | JA | integer | Namespace-Index des Browsenamens eines OPC UA Nodes | |
| browsepath/name | JA | string | Name des Browsenamens eines OPC UA Nodes | |
| includeChildNodes | Nein | boolean | false | Boolean, um alle untergeordneten Nodes eines Nodes abzufragen und zu produzieren |
| name | Nein | string | In der Konfiguration festgelegter Name des Kanals | |
| dataType | Nein | string | Datentyp des Kanals, kann vordefiniert oder vom OPC UA Client ermittelt werden | |
| physicalUnit | Nein | string | Physikalische Einheit des Kanals, kann vordefiniert oder vom OPC UA Client ermittelt werden, sofern diese Information verfügbar ist |
Modulinformationen/-profil
| Information | Wert |
|---|---|
| Autor | optiMEAS GmbH |
| Konsumiert Signale | Nein |
| Produziert Signale | Ja |
| smartCORE Version | >= 1.0 |
| Abhängigkeiten | Open62541 1.3, openssl |