Module smartCORE « opcuaclient »
Description
Le module OpcUaClient récupère les valeurs de nœuds prédéfinis et écrit les données dans un canal correspondant. La connexion à un serveur OPC UA peut être utilisée sans prise en charge du chiffrement ou avec les politiques de sécurité prises en charge par openssl. En option, un nom d'utilisateur et un mot de passe peuvent être spécifiés pour la connexion au serveur OPC UA. Lorsque le client s'est connecté avec succès à un serveur OPC UA, il résout les browsepaths définis en nodeid(s) ou, en cas d'indicateur booléen, tous les nœuds enfants qui sont des variables. Les valeurs de ces nœuds sont lues cycliquement et placées dans une file d'attente du tampon de canal nodevalue. Le tampon de canal est ensuite vidé cycliquement vers le canal correspondant.
Open62541
Installation
Le module client OPC UA est basé sur open62541 1.3 Open62541 peut être installé sous Ubuntu en tant que bibliothèque partagée avec :
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
Configuration
Configuration JSON
La section suivante présente l'intégralité de la configuration JSON du client OPC UA. Lorsqu'aucun nom n'est indiqué, les noms de canaux du module client OPC UA sont composés des noms des browsepaths. Sans type de données spécifié, le canal ne peut être initialisé que lorsque le client OPC UA s'est connecté avec succès et est en mesure de résoudre le browsepath.
Configuration minimale
{
"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" }]
}
]
}
}
Exemple Le nom de canal suivant résulte de la configuration indiquée ci-dessus, lorsque le client OPC UA s'est connecté avec succès et a résolu le browsepath :
- Machines.BasicGMS.ResultManagement.CorrectionsFolder.Corr3.CorrectionValueAbsolute
Si le client OPC UA n'a pas pu résoudre les browsepaths, aucune mise à jour de valeur n'est produite et aucun canal n'est créé
Configuration avec tous les paramètres
{
"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"
}
]
}
}
Exemple Les noms de canaux suivants résultent de la configuration indiquée ci-dessus, lorsque le client OPC UA s'est connecté avec succès et a résolu les browsepaths :
- "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"
Le nom de canal suivant résulte de la configuration indiquée ci-dessus, lorsque le client OPC UA n'a pas pu se connecter :
- "CorrectionValueAbsolute3"
Si le client OPC UA n'a pas pu résoudre les browsepaths, aucune mise à jour de valeur n'est produite
Liste des paramètres de configuration
| Nom du paramètre | Obligatoire | Type de données | Valeur par défaut | Description |
|---|---|---|---|---|
| serverURL | Oui | string | URL du serveur OPC UA | |
| userName | Non | String | Nom d'utilisateur pour la connexion au serveur OPC UA, par défaut anonyme | |
| password | Non | String | Mot de passe pour la connexion au serveur OPC UA | |
| securityMode | Non | string | None | Mode de sécurité de la connexion : None, Sign, SignAndEncrypt |
| securityPolicyUri | Non | string | URI de la politique de sécurité de l'endpoint sélectionné du serveur OPC UA | |
| pkiFolderPath | Non | string | Chemin de fichier pour charger les listes de confiance, de révocation et d'émetteurs. Les certificats doivent être stockés dans les sous-dossiers suivants : issuer/certs, issuer/crl, trusted/certs | |
| acceptAllCertificates | Non | boolean | false | Cet indicateur détermine si le client accepte tous les certificats de serveur |
| clientCertificateFile | Non | string | Chemin du certificat client, nom de fichier inclus | |
| privateKeyFile | Non | string | Chemin de la clé privée du client, nom de fichier inclus | |
| produceInterval | Non | integer | 100 | Intervalle de production des canaux en ms |
| pollInterval | Non | integer | 100 | Intervalle d'interrogation (polling) des valeurs de nœuds OPC UA en ms |
| bufferSize | Non | integer | 1024 | Taille du tampon d'une valeur de nœud OPC UA |
| channels | Oui | array | Tableau contenant une description de nœud OPC UA pour les canaux | |
| browsepath | Oui | array | Tableau contenant le browsepath d'un nœud OPC UA. Le nœud de départ est le nœud Objects (ns=0;i=85) | |
| browsepath/namespaceIndex | Oui | integer | Index d'espace de noms du browsename d'un nœud OPC UA | |
| browsepath/name | Oui | string | Nom du browsename d'un nœud OPC UA | |
| includeChildNodes | Non | boolean | false | Booléen pour l'interrogation et la production de tous les nœuds enfants d'un nœud |
| name | Non | string | Nom du canal spécifié dans la configuration | |
| dataType | Non | string | Type de données du canal, peut être prédéfini ou récupéré par le client OPC UA | |
| physicalUnit | Non | string | Unité physique du canal, peut être prédéfinie ou récupérée par le client OPC UA, si cette information est disponible |
Informations sur le module / fiche signalétique
| Information | Valeur |
|---|---|
| Auteur | optiMEAS GmbH |
| Consomme des signaux | Non |
| Produit des signaux | Oui |
| Version smartCORE | >= 1.0 |
| Dépendances | Open62541 1.3, openssl |