Aller au contenu principal

Configuration

Résumé​

Cette section explique la configuration de smartCORE par l'utilisateur.

Structure de la configuration​

La configuration du logiciel smartCORE se compose essentiellement de deux fichiers de configuration enregistrés sur l'edge device,

  • la configuration statique /sdi/config/smartcore.json, ainsi que
  • la configuration dynamique (ou configuration de mesure spécifique à l'application) /sdi/config/smartcore_dynamic.json

Les deux fichiers de configuration sont au format JSON et suivent pour l'essentiel la structure suivante

{
"timeout": 10000,
"plugins":
[
"SomePluginFactory",
"AnotherPluginFactory",

...
],
"modules":
[
{
"module": "SomePluginInstance",
"factory": "SomePluginFactory",
"config":
{
"someKey": "someValue",

...
}
},
{
"module": "AnotherPluginInstance",
"factory": "AnotherPluginFactory",
"config":
{
"anotherKey": 42,

...
}
},

...
]
}

Ici, timeout représente un intervalle de temps pendant lequel l'initialisation des modules est attendue. Dans le cas contraire, l'initialisation des modules concernés est considérée comme ayant échoué. Le réglage par défaut de ce paramètre est de 10 000 ms (10 s).

Dans la liste "plugins", il faut indiquer les factories (classes) de tous les modules utilisés.

Dans la liste "modules", toutes les instances de modules utilisées sont ensuite configurées sous forme d'objets JSON. La configuration d'un module suit alors toujours la structure suivante

{
"module": <Name der Modulinstanz>,
"factory": <Factory bzw. Klasse der Modulinstanz>,
"config" :
{
<Parameter>: <JSON-Wert des Parameters>,

...
}
}

La valeur JSON d'un paramètre peut représenter non seulement des scalaires de différents types de données, mais aussi des objets JSON (structures) ou des tableaux JSON (listes).

La configuration statique /sdi/config/smartcore.json contient en outre des paramètres globaux.

Fichiers de configuration externes (configFile)​

En plus de l'objet "config", une instance de module peut référencer un fichier JSON externe au moyen du paramètre optionnel "configFile". Le contenu de ce fichier est lu avant le "config" en ligne et fusionné avec lui — le "config" en ligne l'emporte toujours en cas de conflit.

{
"module": "motor1",
"factory": "modbus",
"configFile": "motor_base.json",
"config":
{
"address": 5
}
}

Le fichier motor_base.json contient directement un objet JSON avec la même syntaxe que "config" :

{
"baudrate": 19200,
"parity": "none",
"stopBits": 1
}

Le résultat de la fusion est équivalent à :

"config":
{
"baudrate": 19200,
"parity": "none",
"stopBits": 1,
"address": 5
}

Résolution du chemin : le chemin est résolu par rapport au répertoire de configuration /sdi/config/. Les sous-répertoires sont possibles ("subfolder/motor_base.json"), les chemins absolus sont utilisés tels quels.

Finalité : des paramètres de base communs (p. ex. les propriétés du bus) peuvent être enregistrés dans un fichier et référencés par plusieurs instances de modules, sans avoir à les dupliquer dans chaque smartcore_dynamic.json.

Comportement de fusion :

  • Scalaires et objets : la valeur de "config" écrase la valeur du fichier.
  • Tableaux : les entrées du fichier et de "config" sont concaténées.

Gestion des erreurs : si le fichier est absent ou contient du JSON invalide, un avertissement est écrit dans le journal et le fichier est ignoré. Le démarrage de smartCORE n'est pas interrompu pour autant.

Canal d'état ConfigValid : dès qu'une instance de module utilise "configFile", elle crée en plus un canal booléen :

System.<factory>.<modulinstanz>.ConfigValid
ValeurSignification
trueTous les fichiers référencés ont été lus et fusionnés
falseAu moins un fichier était absent ou contenait du JSON invalide et a été ignoré

Le canal suit le même schéma de nommage que le canal ConfigVersion. Il est écrit une seule fois au démarrage du module et ne change plus ensuite. Les modules sans "configFile" ne créent pas ce canal.

Il est ainsi possible, même plus tard, de voir dans le fichier de mesure si une mesure a été effectuée avec une configuration complète — le fichier journal seul ne répond pas durablement à cette question.