Hallo liebe Forumsmitglieder,
vor kurzem habe ich mir eine WAGO SPS PFC100 mit ein paar I/O-Modulen sowie eine WAGO KNX-Schnittstelle 753-646 angeschafft. Die mitgelieferte Bibliothek WagoAppKNX liefert bereits alles, um in wenigen Schritten Messwerte auf Kommunikationsobjekte auf den KNX-Bus zu legen oder Daten zu empfangen.
Prinzipiell funktioniert mein Code, aber er ist schlecht wartbar, weil er extrem redundant ist und ich keine Idee habe, wie ich die Redundanzen vermeiden kann. Hintergrund ist der, dass ich ein ganzes Array gleichartiger Messwerte habe, die ich gerne in einer simplen Schleife auf den KNX-Bus legen will. Laut WagoAppKNX legt jedoch der Name der Instanz einer WagoAppKNX.FbDPT-Klasse den Namen des Kommunikationsobjekts fest, wobei noch dazu eine gewisse Namenskonvention eingehalten werden muss.
Konkret habe ich mehr als zwanzig Temperaturfühler, die jeweils Messwert, Drahtbruch- und Kurzschlusserkennung aufweisen, sodass ich gerne in einer Schleife die Kommunikationsobjekte über eine Array-Struktur anlegen würde. Hier ist ein Auszug aus meinem aktuellen Code (ST) für nur zwei Temperaturfühler:
Für mich stellt sich nun die Frage, ob es für dieses Problem nicht einen besseren Ansatz gibt als alles beliebig oft zu kopieren, um dann im Wartungsfall auch wieder alles x-mal durchgehen zu müssen.
Viele Grüße
Peter
vor kurzem habe ich mir eine WAGO SPS PFC100 mit ein paar I/O-Modulen sowie eine WAGO KNX-Schnittstelle 753-646 angeschafft. Die mitgelieferte Bibliothek WagoAppKNX liefert bereits alles, um in wenigen Schritten Messwerte auf Kommunikationsobjekte auf den KNX-Bus zu legen oder Daten zu empfangen.
Prinzipiell funktioniert mein Code, aber er ist schlecht wartbar, weil er extrem redundant ist und ich keine Idee habe, wie ich die Redundanzen vermeiden kann. Hintergrund ist der, dass ich ein ganzes Array gleichartiger Messwerte habe, die ich gerne in einer simplen Schleife auf den KNX-Bus legen will. Laut WagoAppKNX legt jedoch der Name der Instanz einer WagoAppKNX.FbDPT-Klasse den Namen des Kommunikationsobjekts fest, wobei noch dazu eine gewisse Namenskonvention eingehalten werden muss.
Konkret habe ich mehr als zwanzig Temperaturfühler, die jeweils Messwert, Drahtbruch- und Kurzschlusserkennung aufweisen, sodass ich gerne in einer Schleife die Kommunikationsobjekte über eine Array-Struktur anlegen würde. Hier ist ein Auszug aus meinem aktuellen Code (ST) für nur zwei Temperaturfühler:
Code:
PROGRAM PLC_PRG VAR M1_001_Temperatur_11 : WagoAppKNX.FbDPT_Value_Temp_pro; M1_002_Drahtbruch_11 : WagoAppKNX.FbDPT_Bool_pro; M1_003_Kurzschluss_11 : WagoAppKNX.FbDPT_Bool_pro; M1_004_Temperatur_12 : WagoAppKNX.FbDPT_Value_Temp_pro; M1_005_Drahtbruch_12 : WagoAppKNX.FbDPT_Bool_pro; M1_006_Kurzschluss_12 : WagoAppKNX.FbDPT_Bool_pro; END_VAR M1_001_Temperatur_11(bPortKNX := 1, dwIndex_DPT := 1, rValue_IN := rTemp_11, xUpdate_KNX := xUpdate_11, xRead_KNX := FALSE, tMinSendTime := tMinSendTime_KNX, rSendOnDelta := 0, typDPT := retainTemp_11); M1_002_Drahtbruch_11(bPortKNX := 1, dwIndex_DPT := 2, xSwitch_IN := xDrahtbruch_11, xUpdate_KNX := TRUE, xRead_KNX := FALSE, tMinSendTime := tMinSendTime_KNX, typDPT := retainDrahtbruch_11); M1_003_Kurzschluss_11(bPortKNX := 1, dwIndex_DPT := 3, xSwitch_IN := xKurzschluss_11, xUpdate_KNX := TRUE, xRead_KNX := FALSE, tMinSendTime := tMinSendTime_KNX, typDPT := retainKurzschluss_11); M1_004_Temperatur_12(bPortKNX := 1, dwIndex_DPT := 4, rValue_IN := rTemp_12, xUpdate_KNX := xUpdate_12, xRead_KNX := FALSE, tMinSendTime := tMinSendTime_KNX, rSendOnDelta := 0, typDPT := retainTemp_12); M1_005_Drahtbruch_12(bPortKNX := 1, dwIndex_DPT := 5, xSwitch_IN := xDrahtbruch_12, xUpdate_KNX := TRUE, xRead_KNX := FALSE, typDPT := retainDrahtbruch_12); M1_006_Kurzschluss_12(bPortKNX := 1, dwIndex_DPT := 6, xSwitch_IN := xKurzschluss_12, xUpdate_KNX := TRUE, xRead_KNX := FALSE, tMinSendTime := tMinSendTime_KNX, typDPT := retainKurzschluss_12);
Viele Grüße
Peter