Passa al contenuto principale

Configurazione

Questa sezione illustra la configurazione di smartCORE da parte dell'utente.

Struttura della configurazione​

La configurazione del software smartCORE è composta essenzialmente da due file di configurazione salvati sull'edge device,

  • la configurazione statica /sdi/config/smartcore.json, e
  • la configurazione dinamica (ovvero la configurazione di misura specifica dell'applicazione) /sdi/config/smartcore_dynamic.json

Entrambi i file di configurazione sono in formato JSON e seguono essenzialmente la struttura seguente

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

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

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

...
}
},

...
]
}

timeout rappresenta un intervallo di tempo entro il quale si attende l'inizializzazione dei moduli. In caso contrario l'inizializzazione dei singoli moduli viene considerata non riuscita. L'impostazione predefinita di questo parametro è 10.000 ms (10 s).

Nell'elenco "plugins" devono essere indicate le factory (classi) di tutti i moduli utilizzati.

Nell'elenco "modules" vengono poi configurate tutte le istanze di modulo utilizzate sotto forma di oggetti JSON. Per la configurazione di un modulo vale sempre la struttura seguente

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

...
}
}

Il valore JSON di un parametro può rappresentare non solo scalari di diversi tipi di dati, ma anche oggetti JSON (strutture) o array JSON (liste).

La configurazione statica /sdi/config/smartcore.json contiene inoltre parametri globali.

File di configurazione esterni (configFile)​

Oltre all'oggetto "config", un'istanza di modulo può fare riferimento a un file JSON esterno tramite il parametro opzionale "configFile". Il contenuto di questo file viene letto prima di "config" inline e unito ad esso: in caso di conflitti prevale sempre "config" inline.

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

Il file motor_base.json contiene direttamente un oggetto JSON con la stessa sintassi di "config":

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

Il risultato dell'unione equivale a:

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

Risoluzione del percorso: il percorso viene risolto rispetto alla directory di configurazione /sdi/config/. Sono possibili sottodirectory ("subfolder/motor_base.json"), mentre i percorsi assoluti vengono utilizzati senza modifiche.

Scopo d'uso: i parametri di base comuni (ad es. le proprietà del bus) possono essere salvati in un file e referenziati da più istanze di modulo, senza duplicarli in ogni smartcore_dynamic.json.

Comportamento dell'unione:

  • Scalari e oggetti: il valore di "config" sovrascrive il valore del file.
  • Array: le voci del file e di "config" vengono concatenate.

Gestione degli errori: se il file non esiste o contiene JSON non valido, viene scritto un avviso nel log e il file viene ignorato. L'avvio di smartCORE non viene quindi interrotto.

Canale di stato ConfigValid: non appena un'istanza di modulo utilizza "configFile", crea inoltre un canale bool:

System.<factory>.<modulinstanz>.ConfigValid
ValoreSignificato
trueTutti i file referenziati sono stati letti e uniti
falseAlmeno un file mancava o conteneva JSON non valido ed è stato ignorato

Il canale segue lo stesso schema di denominazione del canale ConfigVersion. Viene scritto una sola volta all'avvio del modulo e in seguito non cambia più. I moduli senza "configFile" non creano il canale.

In questo modo, anche in seguito è possibile verificare dal file di misura se una misura è stata eseguita con la configurazione completa: il solo file di log non fornisce una risposta duratura a questa domanda.