Heizung Ladepumpe Ansteuerung mit Kaltanlauf

Zuviel Werbung?
-> Hier kostenlos registrieren
Teil 3:

NETWORK
TITLE =Schaltzeit nach gewählter Funktion
//Abfrage welche Funktion gewählt ist, danach die Istzeit mit der eingestellten
//Schaltzeit vergleichen und mit VKE=1 eine Variable setzen.
//Funktion 1: Montag bis Freitag
//Funktion 2: Samstag & Sonntag
//Funktion 3: Montag bis Sonntag
//================================================Funktion 1
U( ;
U #Mo_bis_Fr; //Funktion Montag bis Freitag
UN #Sa_bis_So;
UN #Mo_bis_So;
U #Woche;
) ;
SPB MoFr;
SPA FKT2;
//--------------------------------------
MoFr: U #Schaltzeit1_aktiviert; // Kanal 1 aktiv?
SPB ON2;
SPA NXT3;
ON2: L #Uhrzeit; // Istzeit mit
L #Einschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoFr_T1_Ein; // Fkt1 T1 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoFr_T1_Ein; // Fkt1 T1 Ausschalten
//--------------------------------------
NXT3: U #Schaltzeit2_aktiviert; // Kanal 2 aktiv?
SPB ON3;
SPA NXT4;
ON3: L #Uhrzeit; // Istzeit mit
L #Einschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoFr_T2_Ein; // Fkt1 T2 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoFr_T2_Ein; // Fkt1 T2 Ausschalten
//--------------------------------------
NXT4: U #Schaltzeit3_aktiviert; // Kanal 3 aktiv?
SPB ON4;
SPA NXT5;
ON4: L #Uhrzeit; // Istzeit mit
L #Einschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoFr_T3_Ein; // Fkt1 T3 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoFr_T3_Ein; // Fkt1 T3 Ausschalten
//--------------------------------------
NXT5: U #Schaltzeit4_aktiviert; // Kanal 4 aktiv?
SPB ON5;
SPA NXT6;
ON5: L #Uhrzeit; // Istzeit mit
L #Einschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoFr_T4_Ein; // Fkt1 T4 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoFr_T4_Ein; // Fkt1 T4 Ausschalten

NXT6: NOP 0;

//================================================Funktion 2
FKT2: U( ;
U #Sa_bis_So;
UN #Mo_bis_Fr;
UN #Mo_bis_So;
U #Wochenende;
) ;
SPB SaSo;
SPA FKT3;
//--------------------------------------
SaSo: U #Schaltzeit1_aktiviert; // Kanal 1 aktiv?
SPB ON6;
SPA NXT7;
ON6: L #Uhrzeit; // Istzeit mit
L #Einschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_SaSo_T1_Ein; // Fkt2 T1 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_SaSo_T1_Ein; // Fkt2 T1 Ausschalten

//--------------------------------------
NXT7: U #Schaltzeit2_aktiviert; // Kanal 2 aktiv?
SPB ON7;
SPA NXT8;
ON7: L #Uhrzeit; // Istzeit mit
L #Einschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_SaSo_T2_Ein; // Fkt2 T2 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_SaSo_T2_Ein; // Fkt2 T2 Ausschalten

//--------------------------------------
NXT8: U #Schaltzeit3_aktiviert; // Kanal 3 aktiv?
SPB ON8;
SPA NXT9;
ON8: L #Uhrzeit; // Istzeit mit
L #Einschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_SaSo_T3_Ein; // Fkt2 T3 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_SaSo_T3_Ein; // Fkt2 T3 Ausschalten
//--------------------------------------
NXT9: U #Schaltzeit4_aktiviert; // Kanal 4 aktiv?
SPB ON9;
SPA NX10;
ON9: L #Uhrzeit; // Istzeit mit
L #Einschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_SaSo_T4_Ein; // Fkt2 T4 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_SaSo_T4_Ein; // Fkt2 T4 Ausschalten

NX10: NOP 0;

//================================================Funktion 3
FKT3: U #Mo_bis_So;
UN #Mo_bis_Fr;
UN #Sa_bis_So;
SPB MoSo;
SPA NX14;
//--------------------------------------
MoSo: U #Schaltzeit1_aktiviert; // Kanal 1 aktiv?
SPB ON10;
SPA NX11;
ON10: L #Uhrzeit; // Istzeit mit
L #Einschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoSo_T1_Ein; // Fkt3 T1 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_1; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoSo_T1_Ein; // Fkt3 T1 Ausschalten

//--------------------------------------
NX11: U #Schaltzeit2_aktiviert; // Kanal 2 aktiv?
SPB ON11;
SPA NX12;
ON11: L #Uhrzeit; // Istzeit mit
L #Einschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoSo_T2_Ein; // Fkt3 T2 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_2; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoSo_T2_Ein; // Fkt3 T2 Ausschalten

//--------------------------------------
NX12: U #Schaltzeit3_aktiviert; // Kanal 3 aktiv?
SPB ON12;
SPA NX13;
ON12: L #Uhrzeit; // Istzeit mit
L #Einschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoSo_T3_Ein; // Fkt3 T3 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_3; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoSo_T3_Ein; // Fkt3 T3 Ausschalten
//--------------------------------------
NX13: U #Schaltzeit4_aktiviert; // Kanal 3 aktiv?
SPB ON13;
SPA NX14;
ON13: L #Uhrzeit; // Istzeit mit
L #Einschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
S #Funktion_MoSo_T4_Ein; // Fkt3 T4 Einschalten

L #Uhrzeit; // Istzeit mit
L #Ausschalten_4; // Schaltzeit vergleichen
>=D ; // größer gleich?
R #Funktion_MoSo_T4_Ein; // Fkt3 T4 Ausschalten

NX14: NOP 0;
//--------------------------------
NETWORK
TITLE =Schaltuhrausgang

U #Mo_bis_Fr;
U( ;
O #Funktion_MoFr_T1_Ein;
O #Funktion_MoFr_T2_Ein;
O #Funktion_MoFr_T3_Ein;
O #Funktion_MoFr_T4_Ein;
) ;
O ;
U #Sa_bis_So;
U( ;
O #Funktion_SaSo_T1_Ein;
O #Funktion_SaSo_T2_Ein;
O #Funktion_SaSo_T3_Ein;
O #Funktion_SaSo_T4_Ein;
) ;
O ;
U #Mo_bis_So;
U( ;
O #Funktion_MoSo_T1_Ein;
O #Funktion_MoSo_T2_Ein;
O #Funktion_MoSo_T3_Ein;
O #Funktion_MoSo_T4_Ein;
) ;
= #Schaltuhr_aktiviert;
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Matze,

vielen Dank. Ich habe derweil eine schöne Lösung, die ich dir auch gern zukommen lassen kann. Dazu später.

Ich habe schnell eine Krücke zusammengeschustert und möchte euch gern um Rat fragen. Anbei ein PDF mit einem FC.

Netzwerke 7, 8 und 9 sind die drei Wochenzeitprogramme. Ich überprüfe mit dem FC20, ob eine Einschaltzeit vorliegt, und zwar für Heizung, Warmwasser und Zirkulation. Wenn ja, wird ein Bit gesetzt. Mein Problem ist nur, dass ich am Anfang des Bausteins die Bits manuell zusücksetzen muss, da wenn sich die Betriebsart ändert, ich das 0 von dem FC20 teilweise ja gar nicht mehr erhalte und das Bit auf eins stehen bleibt. Gleiches passierte, als ich für alle Netzwerke nur eine Variable für Heizung ein, WW ein und Zirk ein verwendet habe. Vielleicht hat jemand eine schönere Idee?

Netzwerk17: Wenn ich dieses Netzwerk weiter vorn im Baustein platziere, dann sind auf einmal andere Bits mit gesetzt. Wieso auch immer, die Adressierung ist eindeutig. Vielleicht sieht jemand dort gleich den Fehler. Derzeitig funktioniert es zwar, mir gefällt es aber nicht so ganz.

Die Betriebsarten sind von 0 bis 6, 0 ist aus, 1 Wochenprogramm 1, 2 Wopro2, 3 Wopro3 (jeweils eigene Zeitschaltzeiten)...

Danke euch.


MfG

Olaf

Anhang anzeigen FC4.pdf
 
Ich überprüfe mit dem FC20, ob eine Einschaltzeit vorliegt, und zwar für Heizung, Warmwasser und Zirkulation. Wenn ja, wird ein Bit gesetzt. Mein Problem ist nur, dass ich am Anfang des Bausteins die Bits manuell zusücksetzen muss, da wenn sich die Betriebsart ändert, ich das 0 von dem FC20 teilweise ja gar nicht mehr erhalte und das Bit auf eins stehen bleibt.
Anhang anzeigen 17000
Hallo Olaf,
wo bekommst du die Schaltzeiten her, gibst du die fest vor oder hast du ein HMI?
Wie der FC20 funktioniert habe ich grad nicht vorm Auge.
Aber du kannst doch bei der Vorgabe der Schaltzeit auf TOD#00:00:00.000 vergleichen, wenn ungleich hast du eine Schaltzeit, wenn gleich dann nicht.
Die Bits am Anfang manuell Rücksetzen ist nicht die eleganteste Lösung, denke ich. Da du entsprechend der Zykluszeit ein "flankerndes Bit" hättest - wenn ich mich nicht täusche.
mfg
DerMatze
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich erhalte eine 0 oder eine 1 von dem FC, also 1 wenn die Zeitschaltuhr geschaltet hat und die Heizung heizen sollte. Wenn aber ein anderes Wochenprogramm aktiv ist, dann erhalte ich natürlich von dem FC keinen neueren Wert mehr von dem alten Aufruf.

Daher habe ich die FC-Temp-Bits zurückgesetzt. Die von dem DB notfalls gestern auch.

Eine bessere Lösung wäre schon erstrebenswert, das war das, was ich nachts schnell hingeschustert habe, da ich meine alte Steuerung nun demontiert habe. Es ist ja nun Frühling :D
 
Zuletzt bearbeitet:
Wenn aber ein anderes Wochenprogramm aktiv ist, dann erhalte ich natürlich von dem FC keinen neueren Wert mehr von dem alten Aufruf.

Einfach den FC gegen einen FB tauschen, die Temp Variablen in Stat schieben und für jedes Wochenprogramm einen IDB anlegen fertig. Dann rufst du den FB mit dem jeweiligen zugehörigen IDB auf und du brauchst nix manuell rücksezten.
z.B. Heizung FB20/DB120
Zirkulation FB20/DB121
Warmwasser FB20/DB122

mfg
DerMatze
 
Zurück
Oben