Zum Hauptinhalt springen

Konfiguration

Zusammenfassung

In diesem Abschnitt wird die Konfiguration des smartCORE durch den Benutzer erläutert.

Aufbau der Konfiguration

Die Konfiguration der smartCORE Software besteht im Wesentlichen aus zwei auf dem Edge-Device gespeicherten Konfigurationsdateien,

  • der statischen Konfiguration /sdi/config/smartcore.json, sowie
  • der dynamischen Konfiguration (bzw. anwendungsspezifischen Messkonfiguration) /sdi/config/smartcore_dynamic.json

Beide Konfigurationsdateien stellen inhaltlich JSON dar und unterliegen im wesentlichen folgender Struktur

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

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

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

...
}
},

...
]
}

Hierbei stellt timeout eine Zeitspanne dar, innerhalb derer auf die Modulinitialisierung gewartet wird. Andernfalls gilt die Initialisierung einzelner Module als fehlgeschlagen. Die Standardeinstellung dieses Parameters beträgt 10.000 ms (10 s).

Innerhalb der Liste "plugins" sind die Factories (Klassen) sämtlicher verwendeter Module aufzuführen.

Innerhalb der Liste "modules" werden dann sämtliche verwendeten Modulinstanzen in Form von JSON Objekten konfiguriert. Für eine Modulkonfiguration gilt dann immer folgende Struktur

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

...
}
}

Der JSON-Wert eines Parameters kann hierbei nicht nur Skalare unterschiedlicher Datentypen repräsentieren, sondern auch darüberhinaus JSON-Objekte (Strukturen) oder JSON-Arrays (Listen).

Die statische Konfiguration /sdi/config/smartcore.json beinhaltet darüberhinaus globale Parameter.

Externe Konfigurationsdateien (configFile)

Zusätzlich zum "config"-Objekt kann eine Modulinstanz über den optionalen Parameter "configFile" auf eine externe JSON-Datei verweisen. Der Inhalt dieser Datei wird vor dem Inline-"config" eingelesen und mit ihm zusammengeführt — das Inline-"config" gewinnt bei Konflikten immer.

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

Die Datei motor_base.json enthält direkt ein JSON-Objekt in der gleichen Syntax wie "config":

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

Das Ergebnis der Zusammenführung ist äquivalent zu:

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

Pfadauflösung: Der Pfad wird relativ zum Konfigurationsverzeichnis /sdi/config/ aufgelöst. Unterverzeichnisse sind möglich ("subfolder/motor_base.json"), absolute Pfade werden unverändert verwendet.

Verwendungszweck: Gemeinsame Basisparameter (z. B. Buseigenschaften) können in einer Datei abgelegt und von mehreren Modulinstanzen referenziert werden, ohne sie in jede smartcore_dynamic.json zu duplizieren.

Merge-Verhalten:

  • Skalare und Objekte: Der Wert aus "config" überschreibt den Wert aus der Datei.
  • Arrays: Einträge aus der Datei und aus "config" werden verkettet.

Fehlerbehandlung: Ist die Datei nicht vorhanden oder enthält ungültiges JSON, wird ein Warnhinweis ins Log geschrieben und die Datei übersprungen. Der Start von smartCORE wird dadurch nicht abgebrochen.