Du wirst nicht darum herumkommen, daß Du Dir eine Struktur überlegst, wie Du allgemeingültig mit den Werten umgehen kannst.
Beispielsweise so als Pseudocode:
Code:
Struct Value
Struct Cmd1
Enabled : BOOL; // Es kann mit diesem Wert dieser Befehl ausgeführt werden
ActionValue : DINT; // Vergleichswert, wann der Befehl ausgeführt werden soll
Comparison : INT; // Ein Zahlenwert, der angibt, ob auf =/>/</>=/<= geprüft werden soll
Action : INT; // Ein Zahlenwert, der eine vordefinierte Aktion angibt oder eine Verknüpfung mit einem Gerät z.B.
End_Struct
Struct Cmd2
Enabled : BOOL; // Es kann mit diesem Wert dieser Befehl ausgeführt werden
ActionValue : DINT; // Vergleichswert, wann der Befehl ausgeführt werden soll
Comparison : INT; // Ein Zahlenwert, der angibt, ob auf =/>/</>=/<= geprüft werden soll
Action : INT; // Ein Zahlenwert, der eine vordefinierte Aktion angibt oder eine Verknüpfung mit einem Gerät z.B.
End_Struct
Struct Value
InUse : BOOL; // Dieser Wert ist eingestellt und soll im Programm benutzt werden
RAW : DINT; // Eingelesener Rohwert
Physical : REAL; // Umgerechnet auf Strom-/Spannungssignal
Phys_Unit : String(5); // Einheit mA / V
InputType : INT; // Ein Zahlenwert, der den Eingangstyp der Karte angibt, über eine zugehörige Tabelle kann dann die Skalierung automatisch erfolgen
Scaled : REAL; // Der umgerechnete Meßwert
Scaled_Unit : String(5); // Einheit des Meßwerts, z.B. "°C"
Name : String; // Name des Wertes, bspw. "Außentemperatur"
Struct Scaling
Factor : REAL; // Faktor zur Umrechnung des Meßwerts
Offset : REAL; // Offset zur Umrechnung des Meßwerts
End_Struct
End_Struct
End_Struct
Du mußt dann natürlich im Programm irgendwelche Aktionen bereits vordefinieren: Motor startet/stoppt, Prozeß wird angestoßen/gestoppt, irgendetwas Sinnvolles.
Dann kannst Du diese Aktionen als Textliste im HMI hinterlegen und der Kunde kann die Aktionen auswählen, die passieren sollen, bei Vergleich des ankommenden Wertes mit dem hinterlegten Wert.
Ggf. kannst Du auch das Scaling oder die Strom-/Spannungswerte weglassen, wenn Du über den JSON schon fertige Werte bekommst.
Aber wenn ein Kunde sowas wünscht, würde ich es über so eine Struktur machen, die kannst Du dann als Array ablegen, so daß X Werte verarbeitet werden können. Und dann über eine Schleife diese Struktur verarbeiten.
Dann ist das alles anonym und der Kunde kann sich das einstellen, wie er das will.
Alles mit dem Hintergedanken: Die eingestellten Daten können verloren gehen und der Kunde hat keine unendlichen Freiheiten (dann muß er das Programm selber schreiben), sondern Freiheiten in dem Maße, wie Du sie vordefinierst. Und genau hier muß eine genaue Absprache mit dem Kunden erfolgen, was er wünscht und was benötigt wird.