Modulo smartCORE "opcuaclient"
Descrizione
Il modulo OpcUaClient legge i valori di nodi predefiniti e scrive i dati in un canale corrispondente. La connessione a un server OPC UA può essere utilizzata senza alcun supporto di cifratura oppure con le security policy supportate da openssl. Facoltativamente è possibile specificare un nome utente e una password per la connessione al server OPC UA. Dopo che il client si è connesso correttamente a un server OPC UA, risolve i browsepath definiti in nodeid oppure, in caso di flag booleano, ogni nodo figlio che sia una variabile. I valori di questi nodi vengono letti ciclicamente e accodati in un channelbuffer dei valori dei nodi. Il channelbuffer viene prelevato ciclicamente e i valori vengono inseriti nel canale corrispondente.
Open62541
Installazione
Il modulo client OPC UA si basa su open62541 1.3. Open62541 può essere installato su Ubuntu come libreria condivisa con:
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
Configurazione
Configurazione JSON
La sezione seguente mostra l'intera configurazione JSON del client OPC UA. Se non viene indicato un nome, i nomi dei canali del modulo client OPC UA sono composti dai nomi dei browsepath. Senza un tipo di dati specificato, il canale può essere inizializzato solo quando il client OPC UA si connette correttamente ed è in grado di risolvere il browsepath.
Configurazione minima
{
"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" }]
}
]
}
}
Esempio Dalla configurazione precedente risulta il seguente nome di canale, se il client OPC UA si è connesso correttamente e ha risolto il browsepath:
- Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr3.CorrectionValueAbsolute
Se il client OPC UA non è in grado di risolvere i browsepath, non vengono prodotti aggiornamenti dei valori e non viene creato alcun canale
Configurazione con tutti i parametri
{
"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"
}
]
}
}
Esempio Dalla configurazione precedente risultano i seguenti nomi di canale, se il client OPC UA si è connesso correttamente e ha risolto i browsepath:
- "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"
Dalla configurazione precedente risultano i seguenti nomi di canale, se il client OPC UA non è riuscito a connettersi:
- "CorrectionValueAbsolute3"
Se il client OPC UA non è in grado di risolvere i browsepath, non vengono prodotti aggiornamenti dei valori
Elenco dei parametri di configurazione
| Nome del parametro | Must-have | Tipo di dati | Valore di default | Descrizione |
|---|---|---|---|---|
| serverURL | Sì | string | URL del server OPC UA | |
| userName | No | String | Nome utente per l'accesso al server OPC UA; di default l'accesso è anonimo | |
| password | No | String | Password per l'accesso al server OPC UA | |
| securityMode | No | string | None | Modalità di sicurezza della connessione: None, Sign, SignAndEncrypt |
| securityPolicyUri | No | string | Security policy URI dell'endpoint selezionato del server OPC UA | |
| pkiFolderPath | No | string | Percorso del file per il caricamento delle liste trust, revocation e issuer. I certificati devono essere memorizzati nelle seguenti sottocartelle: issuer/certs, issuer/crl, trusted/certs | |
| acceptAllCertificates | No | boolean | false | Questo flag stabilisce se il client accetta tutti i certificati del server |
| clientCertificateFile | No | string | Percorso del certificato del client, incluso il nome del file | |
| privateKeyFile | No | string | Percorso della chiave privata del client, incluso il nome del file | |
| produceInterval | No | integer | 100 | Intervallo di produzione dei canali in ms |
| pollInterval | No | integer | 100 | Intervallo di polling dei valori dei nodi OPC UA in ms |
| bufferSize | No | integer | 1024 | Dimensione del buffer di un valore di nodo OPC UA |
| channels | Sì | array | Array contenente la descrizione di un nodo OPC UA per i canali | |
| browsepath | Sì | array | Array contenente il browsepath di un nodo OPC UA. Il nodo iniziale è il nodo Objects (ns=0;i=85) | |
| browsepath/namespaceIndex | Sì | integer | Namespace index del browsename di un nodo OPC UA | |
| browsepath/name | Sì | string | Nome del browsename di un nodo OPC UA | |
| includeChildNodes | No | boolean | false | Booleano per eseguire il polling e produrre tutti i nodi figli di un nodo |
| name | No | string | Nome del canale specificato nella configurazione | |
| dataType | No | string | Tipo di dati del canale; può essere predefinito oppure ricavato dal client OPC UA | |
| physicalUnit | No | string | Unità fisica del canale; può essere predefinita oppure ricavata dal client OPC UA, se questa informazione è disponibile |
Informazioni sul modulo / scheda tecnica
| Informazione | Valore |
|---|---|
| Autore | optiMEAS GmbH |
| Consuma segnali | No |
| Produce segnali | Sì |
| Versione smartCORE | >= 1.0 |
| Dipendenze | Open62541 1.3, openssl |