// Steuerung der elektrischen Heizpatrone
// Ziel: Wenn Heizung = 0 und die Boilertemperatur kleiner Solltemperatur
// soll Askoload, Leistung und Zaehler gesetzt werden
float Tempsoll,Tempist,Tempdelta,Leistung,PV;
int nEvents,Zaehler,Askoload,Heizung;
while(TRUE)
{
nEvents = getinputevent();
if (nEvents & 0x3c)
{
Heizung = getinput(0);
PV = getinput(1);
Tempsoll = getinput(2);
Tempist = getinput(3);
Tempdelta = Tempsoll - Tempist;
if (Heizung==0)
{
if (Tempdelta>=0)
{
Askoload = PV / 0.629;
Leistung = Askoload * 0.629;
Zaehler = 1;
}else{
Askoload = 0;
Leistung = 0;
Zaehler = 0;
}
}else{
Askoload = 0;
Leistung = 0;
Zaehler = 0;
}
setoutput(0,Askoload);
setoutput(1,Leistung);
setoutput(2,Zaehler);
setoutput(3,Tempdelta);
setoutput(4,Heizung);
setoutput(5,Tempsoll);
setoutput(6,Tempdelta);
}
sleep(100);
}
Das Problem ist, dass die Progammzeile "Tempdelta = Tempsoll - Tempist" den Wert immer nur updatet, wenn beide Werte (Tempsoll und Tempist) verändert werden. Wird nur Tempist geändert, bleibt der alte Wert stehen.
Was mache ich falsch?
Danke für Eure Hilfe.
Kommentar