Ankündigung

Einklappen
Keine Ankündigung bisher.

WAGO KNX-Klemme 753-646 unter e!COCKPIT bei vielen gleichartigen KO

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    WAGO KNX-Klemme 753-646 unter e!COCKPIT bei vielen gleichartigen KO

    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:

    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);
    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
Lädt...
X