PI-Regler und PWM

Hallo alle,
ich versuche mich gerade an einem PI Regler für eine kleine Testinstallation. Die berechnete Stellgröße wird anschließend für PWM umgerechnet und soll dann thermoelektrische Stellantriebe fahren. Ist ja nichts besonderes und gibt es so tausendfach zu kaufen.
Ich hänge jetzt etwas an der Umsetzung der ScriptTimer. Das PWm Skript rechnet sich anhand der Einstellungen die An/ Aus Zykluszeiten aus, startet dann entsprechend einen Scriptimer, startet einen zweiten Scripttimer beim zweiten lauf (mit der aus Zeit) und so weiter.
Leider ist das System etwas instabil, insb. wenn jetzt an warmen Tagen die Regelabweichung negativ wird und er in einen Dauer Aus Modus gehen muss. Bietet IP Symcon irgendeine bessere Möglichkeit für PWM Regelungen oder kann ich einfach mit den ScriptTimern nicht richtig umgehen?
Danke

Versuche es doch erstmal hiermit Heating Control — IP-Symcon :: Automatisierungssoftware

Ausbauen kann man das immer noch.

Einen 2Pkt. Regler will ich ja gerade nicht^^

Die PWM Lösung soll die kleinen Heizkörper ja immer ein bisschen warm halten. Die Werte die der PI ausspuckt sind ja auch völlig okay. Z.B. für den einen Raum gibt er mir bei 0.6K Regelabweichung gerade 30% (d.h. bei einer Zykluszeit von 5min muss er 100 sek an sein, 200 sek zu, da läuft auch und ist jetzt ein bisschen hoch eingestellt).

Der Code dahinter ist auch ganz simpel:


if ($an)
	{
		ESERA_SetDigitalOutput(49286 /*[Esera\Erdgeschoss\11229 8x8A 8-Channel Binaer Output, DOUT - Büro]*/, 1, 0);
		SetValue(54944 /*[Heizung\Erdgeschoss\Arbeitszimmer\Regler\pwm\lastRun]*/, false);
		IPS_SetScriptTimer($_IPS['SELF'], $zeit_aus);
	}
	else
	{
		ESERA_SetDigitalOutput(49286 /*[Esera\Erdgeschoss\11229 8x8A 8-Channel Binaer Output, DOUT - Büro]*/, 1, 1);
		SetValue(54944 /*[Heizung\Erdgeschoss\Arbeitszimmer\Regler\pwm\lastRun]*/, true);
		IPS_SetScriptTimer($_IPS['SELF'], $zeit_an);
	}
   

Das ganze läuft dann ein paar Stunden und dann bleibt der Timer irgendwann hängen und ruft das Skript kommentarlos nicht nochmal auf.

Für alle, die es wissen wollen.Scheinbar klappt das SetScriptTimer zum Stoppen des Timers nicht immer. Nach ca. 3-4h hat der Timer einfach aufgehört. Mit der jetzigen Variante scheint es zu gehen:

Das zyklische Event für den piRegler und den pwm lassen sich über das Frontend setzen und der pwm startet einfach nur noch das nächste Skript, dass nach der bestimmten Laufzeit den Stellantrieb wieder abschaltet.