Heizungsregler

Hallo,

hier habe ich euch mal eine Heizkreisregler gestrickt. Das Ausgangssignal ist hier für den DS2890, es kann aber auch z.B. 0-10 oder was auch immer mit erzeugt werden. Die im Beispiel eingetragenen Variablen bitte durch eure ersetzen.

Funktionsbeschreibung:

Der Regler fängt das Arbeiten an sobald $frgext = True ist. Es wird dann anhand der Aussentemperatur eine Vorlauftemperatur errechnet. Die Vorlauftemperatur errechnet sich aus der Aussentemperatur und den Parametern $steil und $kh. Einen weiteren Einfluss auf die Heizkurve kann man über eine Einzelraumregelung nehmen. Hierzu muss am Parameter $maxabw die maximale Regelabweichung der Einzelraumregler eingetragen werden. Mit $sw kann zusätzlich der Sollwert (Raum) angegeben werden. Die Einflussstärke der Einzelraumregelung auf die Heizkurve kann mit dem Parameter $verst erfolgen. Ein üblicher Wert ist hier 3, d.h. bei 1K Abweichung wird der Vorlauf um 3°C erhöht.

<?
 $debug=false;
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : PI_Regler.ips.php
Trigger  :
Interval :  3 Sekunde
Version 0.2
Made by Thomas Reger (msr_junky)

Erklärungen:

Das Triggerintervall sollte so schnell wie möglich eingestellt werden. Bei stabilen Regelkreisen kann auch mit einer längeren Zeit gearbeitet werden.
Das Optimum muß selbst gefunden werden, da sich jeder Regelkreis anderst verhält.

Mit den Parametern $Xp (Proportionalbereich) und $Tn Nachstellzeit für den I-Anteil) wird die Geschwindigkeit des Reglers beeinflusst.
Bei zu niedrigen Werten kann der Regler in Schwingung geraten. In der Praxis haben sich die vorgegebenen Werte für 80% aller Regelkreise als problemlos herausgestellt.
Sollte der Regler trotzdem Schwingen, sollten die Werte beginnend mit $Xp langsam erhöht werden.

Mit den Parametern $Ymin und $Ymax kann man den Arbeitsbereich des Regelsignals festlegen.

Mit dem Parameter $Frg kann man den Regler Ein/Aus-Schalten z.B. über ein Zeitflag oder einem Schalter oder einem Standby-Modul (Sommer/Winterumschaltung)

*/
$frgext= true;
$steil = 3;//Steilheit EF
$kh = 5; //Parallelverschiebung KH
$maxvl = 75; //Max. Vorlauftemp.
$minvl = 20; //Min. Vorlauftemp.
$sw = 21; // Raumsollwert fest vorgeben oder dynamisch aus Abfrage der Raumsollwerte
$maxabw = GetValueFloat("Heizung_Maxabweichung_EZR");//Max. Regelabweichung von EZR (EZR = Einzelraumregelung)
$verst = 3; //Raumeinfluss auf Heizkurve, gängiger Wert ist 3

//Aussentemperatur abfragen
$at = GetValueFloat("Aussentemperatur"); // AT
//Berechnung
$t1 = ($at/(320-$at*4));
$t2= pow($sw,$t1);
$swhk  =  Min(Max((((0.55)*$steil *($t2) *((-$at +20)*2)+ $sw + $kh) + ($maxabw * $verst)), $minvl ), $maxvl );
//Ausgabe Sollwert
SetValueFloat("Heizung_Sollwert_Vorlauf_HK",$swhk); //Ausgabe berechneter Sollwert Vorlauf

If ($debug == true){
echo $swhk."
";
echo $at."
";
}

  $Xp = 15;    // Proportionalbereich
  $Tn = 45;    // Nachstellzeit
  $Ymin = 0;   // Min.-Regelsignal
  $Ymax = 255;  // Max.-Regelsignal
  $Frg = $frgext;    // Freigabe z.B. von Standbymodul
  $Sw = $swhk;    // Sollwert
  $VL = GetValueFloat("VL_stat_Hzg");  // Fühler nach dem geregelt werden soll
  $iah = GetValueFloat("PI_Regler_IAnteil_HK");         //alter berechneter I-Anteil des Reglers
  $timeold=GetValueInteger("PI_Regler_last_HK");        // Letzer Durchlauf des Reglers

  //Berechnung
  $timediff= time() - $timeold;
  $iah = (max(min((($Sw  - $VL )  * $timediff * (1 / $Tn ) + $iah), $Ymax ), $Ymin )) * $Frg;  //Berechnung I-Anteil
  $Y= (max(min((($Sw  - $VL ) * 10 / $Xp  + $iah), $Ymax ), $Ymin )) * $Frg;   //Berechnung Regelsignal
  $xw = $VL  - $Sw;   //Berechnung Regelabweichung
  Settype($Y,"Integer");
  TMEX_F2C_SetPosition(44330,$Y);
  $signal = (100/$Ymax)*$Y;
  SetValueFloat("Heizung_RM_HV_HK",$signal); //Rückmeldung Regelsignal 0-100%

  // Ausgabe
  SetValueFloat("PI_Regler_IAnteil_HK",$iah);
  SetValueInteger("PI_Regler_last_HK",time());

  // Kontrolle
  If ($debug == True ) {
  echo "Zeitdifferenz".$timediff." 
";
  echo "I_Anteil alt = ".$iah." 
";
  echo "I-Anteil = ".$iah." 
";
  echo "Regelsignal = ".$Y." 
";
  echo "Regelabweichung = ".$xw." 
";
  }
?>

Viel Erfolg.

Gruß
Thomas

Hallo Namensvetter,

erst einmal Danke für Deine Arbeit!
Da ich etwas unbedarft mit Heizungssteuerung bin, ein paar Fragen an den Profi.

Istzustand bei mir:

  • Erdgasheizung im Keller von Junkers ca. 12 Jahre alt
  • in den Stockwerken je ein Verteilerkasten mit Regelventilen
  • wenige Heizkörper für Bäder die im Vereilerkasten mit Handventilen geregelt werden und am Heizkörper selber
  • Raumregler mit Stellrad in den einzelnen Räumen für Fußbodenheizung

Fragen:

  • Was ist hier sinnvoll zu machen?
  • Lohnt sich der Aufwand?
  • Welche Hardware brauche ich?

Hi,

  • wenige Heizkörper für Bäder die im Vereilerkasten mit Handventilen geregelt werden und am Heizkörper selber

Hängen die Heizkörper an einem separaten Strang von der Heizung oder am Fußbodenheizkreis mit dran?
Oder, hast du einen Heizkreis für alles (also FBH und Heizkörper)?

Wenn ja, hast du eine Witterungsgeführte Heizungsregelung oder fährt der Vorlauf immer die gleiche Temperatur?
Ist da evtl. ein Mischventil nach dem Kessel und hast du einen Aussenfühler?

Gruß
Thomas

Hängen die Heizkörper an einem separaten Strang von der Heizung oder am Fußbodenheizkreis mit dran?

Zwei Kreisläufe vom Stockwerkverteilerkasten. 1x Stellventil für FB Heizung automatisch. / 1 x Stellventil für Heizkörper im Verteilerkasten was ich per Hand stellen kann.

…hast du einen Aussenfühler?

Ja.

Zwei Kreisläufe vom Stockwerkverteilerkasten

ok und zum Verteilerkasten geht dann nur eine Leitung vom Kessel dahin oder?
Ist zwischen Kessel und Verteilerkasten noch ein Mischventil und eine Pumpe?
Schaltet der Aussenfühler im Sommer die Pumpe aus?

Gruß
Thomas

ok und zum Verteilerkasten geht dann nur eine Leitung vom Kessel dahin oder?
Ist zwischen Kessel und Verteilerkasten noch ein Mischventil und eine Pumpe?
Schaltet der Aussenfühler im Sommer die Pumpe aus?

  1. Ja. Ein hin (nehme mal an das ist der Vorlauf:D rot und eine zurück blau)
  2. Also von der Gastherme gehen viele Leitungen weg, in einer Leitung ist eine kleine Pumpe mit einer Zeitschaltuhr, aber die ist denke ich fürs Warmwasser. Eine andere Pumpe sehe ich nicht. In der Therme wird halt eine sein.
  3. Es gibt einen Sommer- und Winterbetrieb, dort sind Uhrzeiten und Temperaturen hinterlegt.

ok im Vorlauf sitzt dann also kein Mischer. Die Pumpe für den Heizungsvorlauf wird in der Therme sitzen.
Jetzt ist noch die Frage ob dein Vorlauf das ganze Jahr mit der gleichen Vorlauftemperatur fährt oder gleitend mit der Aussentemperatur.

Ist der Kessel evtl. modulierend?

Gruß
Thomas

Ist der Kessel evtl. modulierend?

Halleluja, jetzt gehts ans Eingemachte.
Also ich habe eine Junkers CERAPUR mit einer TA210E Bedieneinheit. Vieleicht hilft Dir das.

na das sind doch mal Daten :slight_smile:
Es scheint so zu sein das du eine witterungsgeführte Regelung hast. Diese regelt den Kessel (ist sogar ein Brennwertgerät laut Beschreibung) stetig auf die entsprechende Vorlauftemperatur, also alles bestens. Eigentlich müsste doch alles passen, warum willst du da was ändern?
Hast du einen hohen Verbrauch, ist es kalt im Haus :confused:

Gruß
Thomas

Nein, eigentlich alles ok. Hatte letztes Jahr 26.000 KWh Verbrauch bei ca. 250m² Wohnfläche. Weis nicht ob das zu viel ist… Das einzige was mir gefallen würde währ eine Änderung der Temperatur und Visualisierung per IPS. Müßte ich da nur die Raumregler wechseln oder auch die Ventile?

was sind das für Ventile, Auf-Zu oder stetige?

Danke für die telef. Hilfe.:wink:

Hallo,
das Danken auch hier im Forum zu verewigen ist natürlich eine tolle Idee ;-).
Ergänzt durch eine kurze Zusammenfassung wäre es perfekt; bitte lass’ uns
nicht dumm sterben ;-). Ich gehe davon aus, dass Du nun der Ansicht bist,
nur an einigen Stellen noch zusätzliche Temperaturfühler zu setzen, um dies’
dann in IPS zu visualisieren (ev. ergänzt durch einen Wärmemengenzähler),
allerdings sonst die ganze Steuerung Deiner Heizungsanlage dieser selbst
überläßt und demnach auch keine Ventile tauschen wirst. Richtig oder falsch?
Gruss.

Hallo symconnewbie,

Dein Orakel trifft zu 100% zu. :wink: