Zum Hauptinhalt springen

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​

ParameternameErforderlichDatentypDefaultBeschreibung
serverURLJAstringURL des OPC UA Servers
userNameNeinstringBenutzername für die Anmeldung am OPC UA Server, Standard ist anonym
passwordNeinstringPasswort für die Anmeldung am OPC UA Server
securityModeNeinstringNoneSicherheitsmodus der Verbindung: None, Sign, SignAndEncrypt
securityPolicyUriNeinstringSecurity Policy URI des gewählten Endpoints des OPC UA Servers
pkiFolderPathNeinstringDateipfad zum Laden der Trust-, Revocation- und Issuer-Liste. Zertifikate müssen in folgenden Unterordnern abgelegt werden: issuer/certs, issuer/crl, trusted/certs
acceptAllCertificatesNeinbooleanfalseLegt fest, ob der Client alle Serverzertifikate akzeptiert
clientCertificateFileNeinstringPfad des Client-Zertifikats einschließlich Dateiname
privateKeyFileNeinstringPfad des privaten Client-Schlüssels einschließlich Dateiname
produceIntervalNeininteger100Produce-Intervall der Kanäle in ms
pollIntervalNeininteger100Abfrageintervall der OPC UA Node-Werte in ms
bufferSizeNeininteger1024Puffergröße eines OPC UA Node-Werts
channelsJAarrayArray mit je einer OPC UA Node-Beschreibung pro Kanal
browsepathJAarrayArray mit dem Browsepath eines OPC UA Nodes. Startnode ist der Objects-Node (ns=0;i=85)
browsepath/namespaceIndexJAintegerNamespace-Index des Browsenamens eines OPC UA Nodes
browsepath/nameJAstringName des Browsenamens eines OPC UA Nodes
includeChildNodesNeinbooleanfalseBoolean, um alle untergeordneten Nodes eines Nodes abzufragen und zu produzieren
nameNeinstringIn der Konfiguration festgelegter Name des Kanals
dataTypeNeinstringDatentyp des Kanals, kann vordefiniert oder vom OPC UA Client ermittelt werden
physicalUnitNeinstringPhysikalische Einheit des Kanals, kann vordefiniert oder vom OPC UA Client ermittelt werden, sofern diese Information verfügbar ist

Modulinformationen/-profil​

InformationWert
AutoroptiMEAS GmbH
Konsumiert SignaleNein
Produziert SignaleJa
smartCORE Version>= 1.0
AbhängigkeitenOpen62541 1.3, openssl