NEWS
Heizungsregelung --- timeout?
-
@samyd sagte: Einspeisung gelegt, ist bei mir immer positiv. Ist das so richtig?
Nein, der Wert muss auch negativ werden, da sich sonst der I-Anteil des Reglers nur in eine Richtung (größer) bewegen kann. Ziehe den Bezug ab.
... oder einen festen Zielwert
@samyd sagte in Heizungsregelung --- timeout?:
Ist es richtig, dass Tn die Nachstellzeit für den Sollwert ist?
Ja.
@samyd sagte in Heizungsregelung --- timeout?:
Wie binde ich ein, dass die Heizung sich ausschaltet, wenn keine Einspeisung über eine gewisse Zeit erfolgt?
Bei einem Sollwert von 5°C ist die Heizung praktisch aus.
-
@paul53 : Ich habe das Objekt jetzt vom Smartmeter genommen, hier ist Bezug und Einspeisung enthalten.
Bei einem positiven Wert sollte der Regler hoch fahren, bei einem negativen Wert runter regeln, richtig? Dann sollte bei Bezug der Wert negativ sein und bei Einspeisung negativ??
Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell, vermutlich wird die Reaktion der Heizung (Stromaufnahme) nicht hinter her kommen.
-
@samyd sagte: hier ist Bezug und Einspeisung enthalten.
Bezug - Einspeisung?
Ändere den Trigger auf "wurde aktualisiert", damit der I-Anteil kontinuierlich hoch-/runter läuft, auch wenn der Trigger-Wert konstant ist.
@samyd sagte in Heizungsregelung --- timeout?:
Das mit der Nachstellzeit klappt noch nicht ganz. Der Output läuft zu schnell
Ja, 2 Minuten sind recht wenig für thermische Prozesse.
-
@paul53 : das mit Tn scheint irgendwie nicht ganz zu klappen?! Der Regler läuft bei der Trigger-Aktualisierung zu schnell hoch bzw. runter und das nach ein paar Sekunden. Anscheinend regelt er nicht entsprechend der Einstellung bei Tn??
-
@samyd sagte: Der Regler läuft bei der Trigger-Aktualisierung zu schnell hoch bzw. runter und das nach ein paar Sekunden. Anscheinend regelt er nicht entsprechend der Einstellung bei Tn??
Mit welchem Zyklus wird getriggert?
Wenn Tn keinen Einfluss hat, ist sicherlich noch ein Fehler enthalten. Poste mal den Blockly-Export in Code tags. -
@paul53 : Es wird alle 6 Sekunden getriggert.
-
@samyd
Das ist nicht der Export. Poste bitte die Javascript-Ansicht ohne die letzte Zeile in Code tags. Etwa so:var i, Xp, Tn, p, lasti, output; i = 0; Xp = 1600; Tn = 300; // Einspeisung - Bezug on({id: 'default', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; p = parseFloat((parseFloat(25) / Xp)) * (parseFloat((obj.state ? obj.state.val : "")) - 200); lasti = i; i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn)); output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2; if (output > 30) { output = 30; i = lasti; } if (output < 5) { output = 5; i = lasti; } if (output != getState("0_userdata.0.Blockly.Soll_Temperatur").val) { setState("0_userdata.0.Blockly.Soll_Temperatur"/*Sollwert*/, output); } });
-
@paul53 : sorry
@paul53 :
var i, Xp, Tn, p, lasti, output; i = 0; Xp = 1600; Tn = 120; // Einspeisung/Bezug on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; p = parseFloat((parseFloat(25) / Xp)) * (parseFloat(getState("javascript.0.variables.Einspeisung").val) - getState("javascript.0.variables.Netzbezug").val); lasti = i; i = (typeof i == 'number' ? i : 0) + parseFloat(p) * (parseFloat((parseFloat((obj.state ? obj.state.ts : "")) - (obj.oldState ? obj.oldState.ts : ""))) / (parseFloat(1000) * Tn)); output = parseFloat(Math.round(parseFloat((parseFloat(15) + parseFloat(p) + i)) * 2)) / 2; if (output > 30) { output = 30; i = lasti; } if (output < 5) { output = 5; i = lasti; setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.mode"/*mode*/, ('' + 'OFF')); } if (output != getState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature").val) { setState("vaillant.0.xxx.systemcontrol.zones01.heating.configuration.setpoint_temperature"/*setpoint_temperature*/, output); console.warn(output); } });
-
@samyd
Kein Fehler zu finden. Erhöhe mal Tn auf 600. -
@paul53 : Tn steht auf 600, regelt aber immer noch krass hin und her...
-
@samyd sagte: regelt aber immer noch krass hin und her...
Dann muss die Leistung (Einspeisung - Bezug) stark schwanken, so dass diese Schwankungen des Ausgangs durch den P-Anteil bedingt sind. Da hilft nur, Xp zu vergrößern.