NEWS
Heizkreisregelungen - JS
-
Die Pumpe schaltet aber nach 3 Minuten wider ein. `
Und das passiert auch durch den JavaScript adapter oder könnt es irgendwo anders her ?
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Und das passiert auch durch den JavaScript adapter oder könnt es irgendwo anders her ? `
Auch das lässt sich durch ein zusätzliches Log feststellentimer = setTimeout(function() { setState(idpump, 1); log('FBH-Pumpe Ein, Typ von Ladung: ' + typeof ladung); }, 300000); // 5 Minuten Verzögerung -
Auch das lässt sich durch ein zusätzliches Log feststellen `
man sieht es auch am object wen man mit de maus drauf stehen bleibt :)
979_aenderung.jpg -
Aus der Anforderung zur Ladung kommt es nicht obwohl mir dieser Eintrag
etwas verdächtig vorkommt:
Warum hier innerhalb nicht mal einer Sekunde 4x geschalten wird??

Ich werde mir mal das Script zur Ladung des Boilers nochmals ansehenob es von dort kommt.
-
Hier noch ein Skript (nicht getestet) zur Ansteuerung des 3-Punkt-Antriebs (Mischer)
// 3-Punkt-Ansteuerung aus Stellsignal const Laufzeit = 150; // Laufzeit des Stellantriebs in s const Stellmax = 100; // max. Stellsignal (%) const minMove = 2; // mindest Positionsänderung des Antriebs (in %) const idy = 'javascript.0...'; // Datenpunkt-ID Stellsignal const idAuf = '...'; // Datenpunkt-ID Antrieb Richtung Auf const idZu = '...'; // Datenpunkt-ID Antrieb Richtung Zu var faktor = 1000 * Laufzeit / Stellmax; // Faktor ms/% var lastPos = 0; // letzte Position (Stellsignal) var motor = true; // Indikator: Antrieb in Bewegung function move(pos) { if(!motor) { if(pos - lastPos > minMove) { setState(idAuf, true); motor = true; if(timer) clearTimeout(timer); timer = setTimeout(function() { setState(idAuf, false); motor = false; }, faktor * (pos - lastPos)); lastPos = pos; } else if(lastPos - pos > minMove) { setState(idZu, true); motor = true; var deltaPos = lastPos - pos; if(pos === 0) deltaPos = deltaPos + 10; // Synchronistation "Zu" if(timer) clearTimeout(timer); timer = setTimeout(function() { setState(idZu, false); motor = false; }, faktor * deltaPos); lastPos = pos; } } } on(idy, function(dp) { move(dp.state.val); }); // Bei Skriptstart fährt Antrieb erst auf Position 0 (Zu) setState(idAuf, false); setState(idZu, true); var timer = setTimeout(function() { setState(idZu, false); motor = false; move(getState(idy).val); // Fahren in Sollposition }, 1000 * (Laufzeit + 10));EDIT: Skriptstart erweitert auf Fahren in Sollposition
@paul53 Hallo Paul 53, ich habe das PI-Regler-Script für die Vorlauftemperatur in Verbindung mit dem 3-Punkt-Mischer-Script getestet. Es funktioniert soweit super. Vielen Dank für die tolle Umsetzung für eine Idee, die ich schon länger hatte aber nicht umzusetzen wusste. Eine Sache habe ich gefunden, wobei meine Javascript Kenntnisse nicht reichen, um den Fehler zu finden. Wenn das Stellsignal vom PI-Regler 100 % beträgt, fährt beim Start des Mischer-Scripts nach der Initialisierungsfahrt der Mischer nicht wieder auf. Das Stellsignal ist 100 und der Mischer fährt nicht mehr. Wenn ich kurz manuell das Stellsignal auf einen Wert unter 100 setze, fährt der Mischer auf und die Regelung funktioniert wieder super. Das tritt jedesmal nach der Initialisierung auf, wenn 100 % als Stellsignal anliegen. Hast du evtl. eine Idee?
MfG Silvio
-
@paul53 Hallo Paul 53, ich habe das PI-Regler-Script für die Vorlauftemperatur in Verbindung mit dem 3-Punkt-Mischer-Script getestet. Es funktioniert soweit super. Vielen Dank für die tolle Umsetzung für eine Idee, die ich schon länger hatte aber nicht umzusetzen wusste. Eine Sache habe ich gefunden, wobei meine Javascript Kenntnisse nicht reichen, um den Fehler zu finden. Wenn das Stellsignal vom PI-Regler 100 % beträgt, fährt beim Start des Mischer-Scripts nach der Initialisierungsfahrt der Mischer nicht wieder auf. Das Stellsignal ist 100 und der Mischer fährt nicht mehr. Wenn ich kurz manuell das Stellsignal auf einen Wert unter 100 setze, fährt der Mischer auf und die Regelung funktioniert wieder super. Das tritt jedesmal nach der Initialisierung auf, wenn 100 % als Stellsignal anliegen. Hast du evtl. eine Idee?
MfG Silvio
@SilSchm sagte:
Das Stellsignal ist 100 und der Mischer fährt nicht mehr.
Der Trigger, der die Mischerbewegung anstößt, benötigt eine Wertänderung, die nicht erfolgt, wenn das Stellsignal auf 100 % bleibt. Erweitere bitte den Scriptstart (Zeilen 14 bis 20) um das Fahren in die Sollposition:
// Bei Skriptstart fährt Antrieb auf Position 0 (Zu) setState(idAuf, false); setState(idZu, true); var timer = setTimeout(function() { setState(idZu, false); motor = false; move(getState(idy).val); // Fahren in Sollposition }, 1000 * (Laufzeit + 10));