Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 46422

Wago 750-841 Kommunikation Helios Lüftungsanlage

$
0
0
Hallo Zusammen,

ein sehr spezielles Thema ;) Ich habe o.g. Konstellation bei mir im Einsatz und wurde nun von einigen
Leuten gefragt wie ich das ganze umgesetzt habe. Deshalb habe ich mir gedacht das es für andere auch interessant sein könnte.

Anbei mein Code, er ist nicht perfekt läuft aber nun seit > 1 Jahr sehr gut.

Info vorne Weg:

Folgende Variablen werden von der Anlage gelesen:

Temperatur_Aussen: REAL;
Temperatur_Zuluft: REAL;
Temperatur_Fortluft: REAL;
Temperatur_Abluft: REAL;
Filterwechsel_Restlaufzeit_Tage: DINT;

Folgende Variablen werden geschrieben:


Lueftung_Plus: BOOL;
Lueftung_Minus: BOOL;

Die zwei o.g. Bool steuern die Luefterstufe die dann an
die Lüftungsanlage gesendet wird


Luefterstufe: BYTE;


Bypass_Min_Aussentemperatur: INT;
Bypass_Ablufttemperatur: INT;
Maximalwert_Temperatur_Aussen: REAL;

Bypass:

Den Bypass kann man nicht direkt steuern, daher manipuliere ich
die beiden Schwellwerte.

Max. Außentemp: Ist es zu warm schaltet die Anlage ab,
da sonst das Haus zu sehr aufheizt.


Das mal im groben, anbei nun das Programm.
Fragen beantworte ich gern.


Deklaration:

Code:

PROGRAM LUEFTUNG_ALLGEMEIN
VAR

    LUEFTUNGSANLAGE: ETHERNET_MODBUSMASTER_TCP;
    Lueftung_Empfangsdaten: ARRAY[0..19] OF BYTE;
    Lueftung_Sendedaten: ARRAY[0..9] OF WORD;
    Lueftung_Sendedaten_Puffer: ARRAY[0..5,0..9] OF WORD;
    Lueftung_Senden_Start: BOOL;
    Lueftung_Reset: BOOL;

    Temperatur_Aussen: REAL;
    Temperatur_Zuluft: REAL;
    Temperatur_Fortluft: REAL;
    Temperatur_Abluft: REAL;
    Filterwechsel_Restlaufzeit_Tage: DINT;

      Lueftung_Plus: BOOL;
    Lueftung_Minus: BOOL;


    SK1_NR: INT;
    SK1_NR_ALT:INT;
    R_TRIG_SENDEN: R_TRIG;
    TON_TIMEOUT_SENDEN: TON;
    TON_AUSSENTEMP_MAX: TON;
    R_TRIG_AUSSENTEMP: R_TRIG;
    F_TRIG_AUSSENTEMP: F_TRIG;
    TON_CLK:TON;
END_VAR

VAR RETAIN PERSISTENT
    Luefterstufe: BYTE;
      Bypass_Min_Aussentemperatur: INT;
    Bypass_Ablufttemperatur: INT;
      Maximalwert_Temperatur_Aussen: REAL;
END_VAR

VAR_TEMP
    TMP_ZEHNERSTELLE: INT;
    TMP_EINSERSTELLE:INT;
    TMP_CNT_I:INT;
END_VAR
VAR_INPUT
    ueftung_Sendedaten_Puffer: BOOL;
END_VAR

Programm:

Code:

LUEFTUNGSANLAGE(
strIP_ADDRESS:='192.168.51.40',
wPORT := 502,
bUNIT_ID := 180
bFUNCTION_CODE := 16#17,
wREAD_ADDRESS := 1,
wREAD_QUANTITY := 10,
ptREAD_DATA := ADR(Lueftung_Empfangsdaten),
wWRITE_ADDRESS := 1,
wWRITE_QUANTITY := 10,
ptSEND_DATA := ADR(Lueftung_Sendedaten),
xSTART := (Lueftung_Senden_Start),
xRESET :=Lueftung_Reset,
tTIME_OUT := t#3s
);

TON_TIMEOUT_SENDEN(IN:= Lueftung_Senden_Start, PT:= t#5s);
R_TRIG_SENDEN(CLK:=LUEFTUNGSANLAGE.xREADY);

(* Sendepuffer verwalten *)
(* ########################################################### *)

(* Wenn etwas im Sendepuffer steht dies senden *)
IF Lueftung_Sendedaten_Puffer[0,0] <> 16#00 THEN
Lueftung_Sendedaten[0] := Lueftung_Sendedaten_Puffer[0,0];
Lueftung_Sendedaten[1] := Lueftung_Sendedaten_Puffer[0,1];
Lueftung_Sendedaten[2] := Lueftung_Sendedaten_Puffer[0,2];
Lueftung_Sendedaten[3] := Lueftung_Sendedaten_Puffer[0,3];
Lueftung_Sendedaten[4] := Lueftung_Sendedaten_Puffer[0,4];
Lueftung_Sendedaten[5] := Lueftung_Sendedaten_Puffer[0,5];
Lueftung_Sendedaten[6] := Lueftung_Sendedaten_Puffer[0,6];
Lueftung_Sendedaten[7] := Lueftung_Sendedaten_Puffer[0,7];
Lueftung_Sendedaten[8] := Lueftung_Sendedaten_Puffer[0,8];
Lueftung_Sendedaten[9] := Lueftung_Sendedaten_Puffer[0,9];
Lueftung_Senden_Start  := TRUE;
END_IF;



(* Wenn Daten erfolgreich gesendet wurden diese löschen *)
IF R_TRIG_SENDEN.Q THEN

    Lueftung_Senden_Start  := FALSE;

    Lueftung_Sendedaten[0] := 16#00;
    Lueftung_Sendedaten[1] := 16#00;
    Lueftung_Sendedaten[2] := 16#00;
    Lueftung_Sendedaten[3] := 16#00;
    Lueftung_Sendedaten[4] := 16#00;
    Lueftung_Sendedaten[5] := 16#00;
    Lueftung_Sendedaten[6] := 16#00;
    Lueftung_Sendedaten[7] := 16#00;
    Lueftung_Sendedaten[8] := 16#00;
    Lueftung_Sendedaten[9] := 16#00;

(* Puffer aufrücken *)
FOR TMP_CNT_I:=0 TO 4 DO
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),0];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),1];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),2];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),3];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),4];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),5];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),6];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),7];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),8];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),9];

END_FOR

    (* Letzten Puffereintrag löschen *)
    Lueftung_Sendedaten_Puffer[5,0] := 16#00;
    Lueftung_Sendedaten_Puffer[5,1] := 16#00;
    Lueftung_Sendedaten_Puffer[5,2] := 16#00;
    Lueftung_Sendedaten_Puffer[5,3] := 16#00;
    Lueftung_Sendedaten_Puffer[5,4] := 16#00;
    Lueftung_Sendedaten_Puffer[5,5] := 16#00;
    Lueftung_Sendedaten_Puffer[5,6] := 16#00;
    Lueftung_Sendedaten_Puffer[5,7] := 16#00;
    Lueftung_Sendedaten_Puffer[5,8] := 16#00;
    Lueftung_Sendedaten_Puffer[5,9] := 16#00;

END_IF;

(* Bei Timeout senden zurücksetzen *)
IF TON_TIMEOUT_SENDEN.Q THEN
    Lueftung_Senden_Start  := FALSE;
END_IF;

(* Takt erzeugen für zyklische Abfragen *)
TON_CLK(IN:=NOT TON_CLK.Q,PT:=t#10s);

(* SK1 NR Wegsichern und erhöhen mit jedem Takt *)
SK1_NR_ALT := SK1_NR;
IF TON_CLK.Q THEN
    SK1_NR:=SK1_NR + 10;
END_IF;

(* Wenn die SK1_NR zu groß ist diese zurücksetzen *)
IF SK1_NR > 60 THEN
    SK1_NR:=0;
END_IF;

(* Timer für Auswertung ob Außentemperatur über Grenzwerk ist *)
TON_AUSSENTEMP_MAX(IN:=(Temperatur_Aussen <  Maximalwert_Temperatur_Aussen), PT:=t#30s);
R_TRIG_AUSSENTEMP(CLK:=TON_AUSSENTEMP_MAX.Q);
F_TRIG_AUSSENTEMP(CLK:=TON_AUSSENTEMP_MAX.Q);


(* Sendedaten aufbereiten *)
(* ########################################################### *)


(* Sendetelegramm - Temperatur Aussen  v00104*)

IF SK1_NR = 0 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3034;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Zuluft  v00105*)
IF SK1_NR = 10 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3035;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Fortluft  v00106*)
IF SK1_NR = 20 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3036;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Abluft  v00107*)
IF SK1_NR = 30 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3037;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Filterwechsel Restlaufzeit in Minuten  v01033*)
IF SK1_NR = 40 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3333;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Bypass min. Temperatur Aussentemperatur v01036*)
TMP_ZEHNERSTELLE := (Bypass_Min_Aussentemperatur / 10);
TMP_EINSERSTELLE := (Bypass_Min_Aussentemperatur - (TMP_ZEHNERSTELLE * 10));

IF FALSE AND SK1_NR = 50 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3336;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30 +  TMP_ZEHNERSTELLE;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#3000 +  (TMP_EINSERSTELLE * 256);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;

(* Sendetelegramm - Bypass min. Temperatur Aussentemperatur v01035*)

TMP_ZEHNERSTELLE := (Bypass_Ablufttemperatur / 10);
TMP_EINSERSTELLE := (Bypass_Ablufttemperatur -  (TMP_ZEHNERSTELLE * 10));

IF FALSE AND SK1_NR = 60 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3335;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30 +  TMP_ZEHNERSTELLE;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#3000 +  (TMP_EINSERSTELLE * 256);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Lüfterdrehzahl verstellen  v00102*)

IF Lueftung_Plus THEN
Luefterstufe := Luefterstufe + 1;
END_IF;

IF Lueftung_Minus THEN
Luefterstufe := Luefterstufe - 1;
END_IF;

IF Luefterstufe < 0 THEN
Luefterstufe := 0;
END_IF

IF Luefterstufe > 4 THEN
Luefterstufe := 4;
END_IF


(* Wenn die Aussentemperatur unter die Max Temperatur gefallen
    ist die Belüftung wieder auf die eingestellte Stufe einschalten    *)
IF R_TRIG_AUSSENTEMP.Q OR Lueftung_Plus OR Lueftung_Minus THEN

Lueftung_Plus := FALSE;
Lueftung_Minus := FALSE;



(*
FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3032;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := (16#3D30 +  Luefterstufe);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

END_FOR;
*)
END_IF;

(* Wenn die Aussentemperatur über die Max Temperatur gestiegen
    ist die Belüftung abschalten    *)
IF FALSE AND F_TRIG_AUSSENTEMP.Q THEN


FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3032;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

END_FOR;

END_IF;






(* Auswertung der Empfangsdaten *)
(* ########################################################### *)


(* Temperatur Aussen wurde empfangen v104*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#34 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Aussen :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Zuluft wurde empfangen v105*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#35 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Zuluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Fortluft wurde empfangen v1064*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#36 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Fortluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Abluft wurde empfangen v107*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#37 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Abluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF

(* Restlaufzeit bis Filterwechsel wurde empfangen v1033*)
IF
Lueftung_Empfangsdaten[2] = 16#30 AND
Lueftung_Empfangsdaten[3] = 16#31 AND
Lueftung_Empfangsdaten[4] = 16#33 AND
Lueftung_Empfangsdaten[5] = 16#33
THEN

Filterwechsel_Restlaufzeit_Tage :=
(
(
(BYTE_TO_DINT(Lueftung_Empfangsdaten[06] - 48) * 00100000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[09] - 48) * 00010000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[08] - 48) * 00001000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[11] - 48) * 00000100) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[10] - 48) * 00000010) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[13] - 48) * 00000001)
)
/60
/24
)
;

END_IF

Grüße

Marcel

Viewing all articles
Browse latest Browse all 46422


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>