Passa al contenuto principale

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 parametroMust-haveTipo di datiValore di defaultDescrizione
serverURLSìstringURL del server OPC UA
userNameNoStringNome utente per l'accesso al server OPC UA; di default l'accesso è anonimo
passwordNoStringPassword per l'accesso al server OPC UA
securityModeNostringNoneModalità di sicurezza della connessione: None, Sign, SignAndEncrypt
securityPolicyUriNostringSecurity policy URI dell'endpoint selezionato del server OPC UA
pkiFolderPathNostringPercorso 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
acceptAllCertificatesNobooleanfalseQuesto flag stabilisce se il client accetta tutti i certificati del server
clientCertificateFileNostringPercorso del certificato del client, incluso il nome del file
privateKeyFileNostringPercorso della chiave privata del client, incluso il nome del file
produceIntervalNointeger100Intervallo di produzione dei canali in ms
pollIntervalNointeger100Intervallo di polling dei valori dei nodi OPC UA in ms
bufferSizeNointeger1024Dimensione del buffer di un valore di nodo OPC UA
channelsSìarrayArray contenente la descrizione di un nodo OPC UA per i canali
browsepathSìarrayArray contenente il browsepath di un nodo OPC UA. Il nodo iniziale è il nodo Objects (ns=0;i=85)
browsepath/namespaceIndexSìintegerNamespace index del browsename di un nodo OPC UA
browsepath/nameSìstringNome del browsename di un nodo OPC UA
includeChildNodesNobooleanfalseBooleano per eseguire il polling e produrre tutti i nodi figli di un nodo
nameNostringNome del canale specificato nella configurazione
dataTypeNostringTipo di dati del canale; può essere predefinito oppure ricavato dal client OPC UA
physicalUnitNostringUnità fisica del canale; può essere predefinita oppure ricavata dal client OPC UA, se questa informazione è disponibile

Informazioni sul modulo / scheda tecnica​

InformazioneValore
AutoreoptiMEAS GmbH
Consuma segnaliNo
Produce segnaliSì
Versione smartCORE>= 1.0
DipendenzeOpen62541 1.3, openssl