4. Regelungstechnik (Grundlagen) Stand: 23.10.2009
Zweipunkt-Regler (EIN - AUS) Schaltdifferenz (Hysterese)
Adaptiver_Regler, Zweipunkt-Regler
mit automatischer Schaltdifferenz
Dreipunkt-Regler (EIN 1 – AUS – EIN 2)
P-Regler PID-Regler, getaktete 2-
und 3-Punkt-Regler (siehe auch Mischventil)
Stellungsregler , Mischventil
mit Rückmeldung (Potentiometer)
Einstellen eines Reglers,
Inbetriebnahme, Automatik - Hand
Fenster-Regelung AUF-Halt-ZU, Wintergarten, Gewächshaus
Mischventil ohne Rückmeldung, Programm-Beispiel, Programm laden
Regelung einer Bewässerung Beregnung,
Messung der Erdfeuchte NEU
Messwert-Dämpfung,
Messwertberuhigung, automatischer Abgleich NEU
Man muss nicht immer
wieder das Rad neu erfinden.
Mit Abschreiben und
Kopieren erreicht man schneller das Ziel.
4.0) Regelung
Ein Regler hat einen Ist-Wert und einen Soll-Wert als Eingänge und einen Stellwert als Ausgang.
Der Wirkungskreis ist bei einer Regelung geschlossen.
Steigt die Temperatur (Istwert) bei einer Temperaturregelung, verringert der Regler seinen Stellwert, woraufhin die Temperatur fällt.
Der Zweipunkt-Regler hat als Stellwert (Ausgang) nur die Zustände „EIN“ und „AUS“.
Die Soll-Ist-Abweichung besteht aus der Ein-Ausschalt-Differenz.
Das Verhältnis Ein / (Ein+Aus) ist der Stellwert und hat integralen Charakter, weil der Stellwert nicht von der Soll-Ist-Abweichung abhängt wie bei einem P-Regler.
define Istwert.................... byte ' Temperaturmessung
define Sollwert ................. byte ' gewünschte
Temperatur
define Schalt_Differenz ... byte ' Hysterese
(Soll-Differenz)
if Istwert < Sollwert then goto EIN ' Temperatur ist
kleiner, dann Einschalten der Heizung
if Istwert < (Sollwert + Schalt_Differenz) then goto
ENDE ' Temperatur kleiner als Ausschaltpunkt
K1 = OFF : goto ENDE ' Relais ausschalten
#EIN ' Einschaltpfad
K1 = ON ' Relais einschalten
#ENDE
Häufiges Einschalten ist meist unerwünscht, deshalb wird die Schaltdifferenz benutzt.
Häufiges Einschalten kann auch auf direktem Weg verhindert werden, indem eine Mindest-Wartezeit nach dem Ausschalten ablaufen muss, bevor das Einschalten frei gegeben wird. Dabei wird jedoch die Regelung zeitweilig verhindert. Besser ist das häufige Einschalten selbsttätig zu regeln durch Verändern der Reglerparameter in einem adaptiven Regler.
4.2)
Adaptiver Regler (Beispiel Zweipunktregler)
Bei Heizungen ist ein häufiges Schalten unerwünscht, weil die Verluste (Schornstein aufheizen) ansteigen. Außerdem treten mehr Schadstoffe beim Anfahren auf.
Die Schaltdifferenz kann man optimieren, wenn man sie von der Schalthäufigkeit abhängig macht, d.h. sie ist eine Variable, die im Regelvorgang berechnet wird.
Der Regler passt
sich automatisch der Regelstrecke an.
4.2.1) Der
Regler
Schaltdifferenz mit festem und berechnetem Anteil.
Solldiff ist ein 20-fach-Mittelwert-Speicher und bildet sich
automatisch (siehe 4.2.3).
Beträgt sein Wert 240, ist die Schaltdifferenz 240 / 20 = 12
Grad zuzüglich fest 5 Grad.
if Istwert < Sollwert then goto EIN '
Einschalten der Heizung
if Istwert < (Sollwert + 5 + Solldiff / 20) then goto ENDE
if K1 = ON gosub Rechnen ' (K1 wird als Flanke benutzt)
if K1 = ON then PausenDauer = 0 ' (K1 wird als Flanke
benutzt)
K1 = OFF ' Heizung ausschalten
goto ENDE
#EIN ' Einschaltpfad
if K1 = OFF then EinDauer =
0 '
(K1 wird als Flanke benutzt)
K1 = ON ' Heizung einschalten
#ENDE
Bei jedem Ausschalten wird mit gosub Rechnen die
Schaltdifferenz geringfügig angepasst.
Hierzu wird die Zykluszeit (EinDauer + PausenDauer)
gemessen.
4.2.2) Einschaltdauer und Pausendauer (Brennzyklus)
if
(HalbMinpuls = OFF) then goto
Ende422 ' HalbMinpuls halbe Minuten
if (K1 = OFF)
then goto Pause'
if (EinDauer > 254) then goto Ende422
EinDauer = EinDauer +1' halbe Minuten Zeitmessung Einschaltdauer Brenner
Goto Ende422
#Pause
if (PausenDauer > 254) then goto Ende422
PausenDauer = PausenDauer +1' halbe Minuten Zeitmessung Einschaltdauer Brenner
#Ende422
goto ...
4.2.3) Gleitende Soll-Differenz für Ein-/Ausschalten
Die Zeitvorgabe 15 Minuten bedeutet, dass der Regler
anstrebt 4-mal je Stunde einzuschalten.
Solldiff ist ein Mittelwertspeicher von 0 bis 254.
#Rechnen ' Unterprogramm
Wert2 = 30 ' Bezugspunkt 15 Minuten (30 halbe Minuten)
Wert1 = EinDauer + PausenDauer' Zykluszeit Brenner ein + aus
if wert1 < wert2 then goto Zyklusklein
if solldiff < 1 then return
solldiff = solldiff - 1 : return
#Zyklusklein
if solldiff > 254 then return
solldiff = solldiff + 1 : return
Der Dreipunkt-Regler hat als Stellwert (Ausgang) drei
Zustände.
Beispiele: AUS – Langsam – Schnell, AUF – Halt – ZU, Links
– AUS - Rechts
MEHR - AUS – WENIGER oder Heizen EIN -
AUS - Kühlen EIN.
if Istwert < Sollwert then
goto Heizen ' Temperatur ist kleiner 1. Einschaltpunkt
if Istwert > (Sollwert +
Schalt_Differenz) then goto Kühlen ' T ist größer als 2. Einschaltpunkt
K1 = OFF : K2 = OFF : goto ENDE ' Ausschaltpunkt
#Heizen ' 1.
Einschaltpunkt
K1 = ON : K2 = OFF : goto ENDE '
Relais Heizen einschalten
#Kühlen ' 2. Einschaltpunkt
K2 = ON : K1 = OFF : goto ENDE '
Relais Kühlen einschalten
#ENDE
Der getaktete Dreipunkt-Regler wird im Abschnitt 4.11
erläutert.
4.4) P-Regler, PID-Regler, getaktete 2- und 3-Punkt-Regler
4.4.1) Regler mit Analogausgang und Begriffe
Diese Regler haben als Ausgang einen analogen Stellwert. Bei der C-Control-Station V1.1 sind die vorhandenen Analog-Ausgänge (DA mit Puls-Weiten-Modulation) nicht herausgeführt. Ohne Eingriff in die Station können an Ports durch Anschluss elektronischer Potentiometer oder mit I2C-Modulen Analogausgänge hergestellt werden.
Deshalb werden hier die Begriffe erläutert.
Beim P-Regler ist der Stellwert = Soll-Ist-Differenz * Verstärkung, wobei die Soll-Ist-Differenz (Sollwert – Istwert) mit Verstärkungsfaktor der Proportionalteil P ist. Der Verstärkungsfaktor kann natürlich auch 0,5 sein, indem durch 2 geteilt wird ( / 2) oder andere Werte z.B. *15/10.
Ein P-Regler mit Analogausgang muss immer eine Soll-Ist-Differenz haben, um ein Stellsignal ausgeben zu können. Eine bleibende Regelabweichung ist also normal. Jeder zeitliche Eingriff ist schädlich, denn das bedeutet Totzeit, die zum Schwingen des Regelkreises führen kann.
Der Integral-Anteil sorgt für Erhöhung oder Senkung des Stellwerts bis keine Abweichung mehr vorhanden ist. Ein Zeittakt sorgt für das Zeitverhalten des Integralteils:
if
sekpuls then I = I
+ Soll – Ist
Besonders bei
großer Totzeit (Verzögerung bis der Istwert reagiert) ist zweckmäßig, den Wert
des I-Teils zu begrenzen, um Regelschwingungen zu vermeiden, z.B.: I = Min (I , 3).
Sinnvoll kann auch
sein, den I-Teil nur dort voll wirken zu lassen, wo er gebraucht wird, bei der
Beseitigung der bleibenden Regelabweichung z.B.:
if (Soll – Ist) > 5 then I = 3
Ober- und unterhalb
lautet die Begrenzung z.B.: if abs (Soll- Ist) > 5
then I = 3
Der Differenzial-Teil stellt die Änderungsgeschwindigkeit des Istwertes fest und steuert dagegen und verhindert dadurch Überschwingen des Istwertes:
If
sekpuls = OFF then goto EndeD
D = Ist – altIst : altIst = Ist ' aktueller Istwert minus alter Istwert sowie Setzen des altIst
Steigt z.B. der Temperatur-Istwert schnell von einer Sekunde zur anderen, ergibt sich ein großer D-Wert, der „bremsend“ beim Stellwert eingesetzt wird.
Beim PI-Regler lautet der Stellwert = P + I . Sobald keine Soll-Ist-Differenz vorliegt, ist der P-Anteil Null und der I-Anteil bleibt konstant. Der Stellwert ist dann gleich dem I-Anteil.
Beim PID-Regler lautet der Stellwert = P + I – D . Erläuterung: Ein schneller Anstieg des Istwertes vermindert den Stellwert.
Beim PI- und PID-Regler können der I- und D-Anteil auch noch durch z.B. /2 oder /3 vermindert werden. Dies kann sinnvoll sein, um kleine Istwertschwankungen abzufangen. Besonders beim D-Teil wird bei Soll-Ist-Differenz = 1 nach der Teilung durch 2 der D-Teil = 0 und eine „ruhige Zone“ entsteht.
4.4.2) Getaktete 2- und 3-Punkt-Regler
Diese getakteten Regler haben P-Verhalten. Entweder die Einschaltzeit oder die Pausenzeit ist proportional zur Soll-Ist-Differenz bei konstanter Zykluszeit (Ein + Pausenzeit). Bei kleiner werdender Abweichung wird z.B. die Einschaltzeit kleiner und die Pausenzeit länger. Dadurch wird ein Überschwingen vermieden. Ein Integral-Anteil kann dafür sorgen, dass die Regelabweichung minimiert wird.
Beispiel: getakteter 2-Punkt-Regler
If ZeittaktImpuls = OFF then goto Ende ' z.B. jede Sekunde Ein
If Zykluszähler < 100 then goto Regeln ' Zyklus läuft z.B. 100 sec
Zykluszähler = 0 ' Zyklus
neu setzen
#Regeln
Stellwert = (Soll – Ist) *Verstärkung ' P-Anteil bilden z.B. 60
Ventil = Stellwert > Zykluszähler ' bei z.B. 60 sec wird das Ventil ausgeschaltet
Zykluszähler = Zykluszähler +1
Elektrothermische Heizkörperventile haben eine Stellzeit von 2 bis 3 Minuten.
Mit dem Programm
wird es durch diese thermische Trägheit praktisch zum stetigen Ventil.
4.5) Motor-Mischventil mit Potentiometer, Stellungsregler
Die Vorlauftemperatur wird oft mit einem motorisch
betriebenen Mischventil geregelt.
Hat das Mischventil eine Stellungsrückmeldung (z.B.
Potentiometer), dann spricht man von einer Stellungsreglung. Das Potentiometer
ist der Istwertgeber und meldet die Stellung des Ventils, z.B. 0 bis 100%
offen. Dieser Stellungs-Istwert wird an einen Analog-Eingang angeschlossen.
Der Sollwert 0 bis 100% wird dem Stellungs-Regler
vorgegeben. Entsprechend der Soll-Ist-Differenz wird das Relais für AUF bzw. ZU
eingeschaltet. Die Stellzeit wird aus der Soll-Ist-Abweichung berechnet und in
lange oder kurze Impulse umgesetzt (PI-Verhalten). Möglich ist auch die
Impulslänge konstant zu halten und die Impulshäufigkeit (z.B. mit der
Pausenzeit) abhängig von der Soll-Ist-Differenz zu machen. Die
Temperatur-Regelung übernimmt ein Führungsregler.
Vorgenannter Stellungsregler benötigt als Sollwert 0 bis
100% AUF. Dieser Sollwert kommt vom Ausgang des Temperaturreglers. Der
Stellwert (Ausgang) des Temperaturreglers ist also der Sollwert (Eingang) für
den Stellungsregler. Der Temperaturregler führt damit den Stellungsregler und
wird deshalb Führungsregler genannt. Die Vorlauftemperatur (Istwert) wird mit
dem Temperaturregler (Führungsregler) geregelt, indem die Soll-Ist-Differenz
den Stellwert bestimmt, der als Sollwert dem Stellungsregler befiehlt mehr oder
weniger zu öffnen.
Die Regelstrecke ist die Anlage oder Maschine, auf die der
Regler einwirkt.
Das ist z.B. der
Heizungskreislauf oder die Heizung des Warmwasserbehälters.
Wenn das Regelventil öffnet, dauert es eine Zeitspanne bis
das heißere Wasser den Temperaturfühler erreicht hat.
Diese Zeitspanne heißt Totzeit.
Wenn mit voller Leistung geheizt wird, steigt die
Temperatur mehr oder weniger schnell an je nach Speichergröße.
Diese Zeit nennt man Anlaufzeit.
Die Stabilität einer Regelung wird wesentlich durch diese
beiden Größen bestimmt.
Die Totzeit bewirkt eine schlechte Stabilität, weil der
Regler während der Totzeit weiter öffnet, also eventuell zuviel. Ein langsames
Ansteigen der Temperatur aufgrund der Speichergröße (große Anlaufzeit) bewirkt
eine gute Stabilität der Regelung. Je größer das Verhältnis Totzeit/Anlaufzeit
ist, desto schwieriger die Regelung.
Der Ist-Wert wird durch den Regler auf den eingestellten
Soll-Wert gefahren. Dieser zeitliche Übergang kann langsam erfolgen oder
schnell mit einmaligen Überschwingen. Wenn es aber zu ständigem Schwingen des
Ist-Wertes kommt, ist die Regelung instabil. Beim P-Regler muss die Verstärkung
reduziert werden und beim Zweipunkt- und Dreipunkt-Regler die Taktzeit
(Stellzeit, Intervallzeit).
Ein langsames
Motor-Regelventil bewirkt nicht eine stabile Regelung, sondern bedeutet viel
Totzeit. Im folgenden Beispiel wird gezeigt, wie das Zeitverhalten vom Regler
bestimmt wird abhängig von der Soll-Ist-Abweichung.
4.9) Einstellen eines Reglers
(Inbetriebnahme)
Der I- und D-Anteil wird abgeschaltet und der Regler als
P-Regler betrieben. Durch eine plötzliche Sollwert-Änderungen erzwingt man
Regelvorgänge. Die Verstärkung (im Beispiel der Stellfaktor) wird immer weiter
erhöht bis der Ist-Wert schwingt, d.h. den Sollwert ständig über- und
unterschreitet.
Die halbe bis viertel Verstärkung (bzw. Stellfaktor) wird
als idealer Wert endgültig benutzt.
Danach wird der I-Anteil wieder eingeschaltet und später
der D-Anteil und jeweils die Versuche wiederholt mit Verändern dieser Anteile.
Treten Probleme auf, ist zweckmäßig, den Stellwert
von Hand zu fahren und dabei den Istwert zu beobachten. Dazu wird die Regelung
von „Automatik“ auf „Hand“ umgeschaltet, d.h. der Stellwert wird
nicht von der Regelung gegeben sondern von einem Zähler, den man mit Tasten
zwischen 0 und 255 einstellen kann.
Es gibt natürlich Regelstrecken, die nicht zum Schwingen
gebracht werden können. Zum Beispiel ist das nicht möglich beim Aufheizen eines
Heißwasserspeichers, weil die Heizleistung im Vergleich zu der Speicherwirkung
zu klein ist. Das System ist träge und allein schon dadurch stabil.
4.10)
Fenster-Regelung AUF – Halt - ZU
Fenster mit motorischem Antrieb (z.B. Wintergarten) können
mit AUF–Halt–ZU in beliebige Öffnungs-Stellung gefahren werden. Hierzu kann das
folgende Beispiel für Motor-Mischventil benutzt werden. Statt der
Vorlauftemperatur wird die Raumtemperatur gemessen.
Eine weitere Variante wäre ein Schatten- und ein
Sonnenfühler, d.h. ein Temperatursensor wird im Schattenbereich montiert und
der andere Sensor wird im Raum der Sonne ausgesetzt. Hierdurch wird ein
frühzeitiges Erfassen der Sonnenwirkung erreicht. Die beiden Temperaturwerte
werden addiert und halbiert oder sogar prozentual gewichtet.
Zusätzlich kann man einen Ventilator einschalten. Hierfür
nutzt man den Istwert mit Überschreitung eines Grenzwertes, oder man schaltet
bei Dauersignal AUF zeitverzögert den Ventilator ein.
4.11)
Motor-Mischventil ohne
Rückmeldung, Programmbeispiel
Die Vorlauftemperatur wird oft mit
einem motorisch betriebenen Mischventil geregelt. Der Regler im folgendem
Programm ist ein getakteter Dreipunkt-Regler.
Dieses Programm regelt die Vorlauftemperatur mit einem
einfachen Mischventil ohne Stellungsrückmeldung des Ventils. Die Stellzeit für
AUF bzw. ZU wird aus der Soll-Ist-Abweichung und dem Stellfaktor berechnet und
ist größer bei großer Abweichung.
Die
Intervallzeit ist die Summe aus Stellzeit und Pausenzeit. Sie beträgt 5 Minuten
für Nachregeln bei kleinen Abweichungen. Bei größerer Abweichung wird die
Pausenzeit abgebrochen und der Regler reagiert sofort.
Der Sollwert wird mit den Tasten F1 und F2 eingestellt und
über LED 1 bis 4 angezeigt.
Bei Unter- bzw.
Überschreiten der Ist-Temperatur blinken LEDs.
Folgend wird ein vollständiges Programm für c-control
Station V1.1 ohne LCD-Anzeige gezeigt:
symbolische_Konstante , Zeiten , Bedienung , Stellzeit
berechnen , Mischer auf-zu , Intervallzeit , Unterprogramme , .
. . . . nach_oben
define Schritt byte ' Byte 1
define Intervallzeit byte '(2) Stellzeit + Pausenzeit Mischer
define Stellzeit byte ' (3) Stellzeit laut Soll-Ist-Differenz
define Wert1 byte[7] ' Zwischenspeicher 1 (Bit 49-56)
define Wert2 byte[8] ' Zwischenspeicher 2
define Sollwert byte'
define Bit81_88 byte[11] ' (statische Bits 81 bis 88)
define wert1Bit0 Bit [49]'für bit-Handling des byte wert1 (Zwischenspeicher)
define wert1Bit4 Bit [53]
define wert1Bit5 Bit [54]
define FlankeZeitpuls Bit[82] ' Flankenbit für Sek-Takt
define BitAUF Bit[86] ' Richtungs-Bit
define HalbSekPuls Bit[87] ' Bit HalbSekundenImpuls (ca. 0,6 sec)
define Sekpuls Bit[88] ' Bit 1,2 sec für Intervallzeit
zurück zu Definitionen . . . . nach_oben
'1) Vorbesetzung und symbolische Konstante
sollwert = 80 ' Vorbesetzung bei Start 40 Grad (80 Halbe Grad)
define Sollzeit 250 'x 1,2 sec (max 255x1,2 Sekunden) (Stellzeit + Pausenzeit)
define Stellfaktor 20 ' entspricht 2,0 für Stellzeit
#LOOP ' Anfang des Programms
HalbSekpuls = OFF : Sekpuls = OFF
wert1 = TIMER '(max 255 x 20 ms = 5,1 SEK)
if wert1bit4 = ON then goto
weiter21 ' ca. 0,6 sec
FlankeZeitpuls = OFF : goto Ende2
#weiter21
if FlankeZeitpuls = ON then goto
Ende2
FlankeZeitpuls = ON : HalbSekpuls = ON ' für Bedienung Tastatur
Sekpuls = wert1bit5 'ca. 1,2 sec für Mischer
#Ende2
'3) Bedienung (Impulse) und LED-Anzeige
' Wird der Taster festgehalten, taktet der Sollwert hoch
bzw. runter.
' Die LEDs
können blinken oder dauernd Ein bzw. Aus sein.
if HalbSekpuls = ON then gosub Schalter else gosub LED
'4) *** Hauptprogramm Regelung ***
' Die errechnete Stellzeit sind Sekunden.
gosub T1H 'Vorlauftemperatur T1 in halben Graden
if wert1 > sollwert then goto zu 'Istwert größer Sollwert
if wert1 < sollwert then goto auf ' Istwert kleiner Sollwert
goto AUS ' Totzone 1 Grad
#zu ' Mischer-Richtung
BitAUF = OFF 'Richtungsbit
wert2 = wert1 - Sollwert ' Ist-Soll-Differenz
goto weiter41
#auf
BitAUF = ON 'Richtungsbit
wert2 = Sollwert - wert1' Soll-Ist-Differenz
#weiter41 'Berechnung der Stellzeit
if wert2 > 2 then goto weiter42 ' wenn 3 halbeGrade Abweichung
Stellzeit = wert2 ' Stellzeit ohne Stellfaktor bei 1 halbeGrad = 1 sec
#weiter42 ' Stellzeit mit Stellfaktor bei großer Abweichung
Stellzeit = wert2 * Stellfaktor/10 ' Soll-Ist-Differenz halbe Grad = Stellzeit in sec
#weiter43 ' Bearbeitung der Intervallzeit
if Intervallzeit >= Sollzeit
then goto NeuStart
if (Sekpuls = OFF) then goto Ende4
' (1 Sek-Impuls)
Intervallzeit = Intervallzeit + 1
' Schrittregister wird je Sekunde einmal durchlaufen (Mindest-Schaltzeit)
if (Schritt = 1) then goto Schritt1' Mischer öffnen
if (Schritt = 2) then goto Schritt2' Mischer schließen
if (Schritt = 3) then goto Schritt3' Rest Intervallzeit (Pausenzeit)
if BitAUF =ON then Schritt = 1 else
Schritt = 2
'goto Ende4
#SCHRITT1 ' Mischer öffnen
if BitAUF = OFF Then goto NeuStart
if Intervallzeit >= Stellzeit then Schritt = 3 ' wenn Stellzeit erreicht
K1 = ON ' Relais für AUF
K2 = OFF
goto Ende4
#SCHRITT2 ' Mischer
schließen
if BitAUF = ON Then goto NeuStart
if Intervallzeit >= Stellzeit then Schritt = 3
K2 = ON ' Relais für ZU
K1 = OFF
goto Ende4
#SCHRITT3 ' Rest Intervallzeit mit Abbruch
K1 = OFF
K2 = OFF
' Die Intervallzeit wird bei großer Temperaturdifferenz abgebrochen.
' Das beschleunigt die richtige Mischerstellung.
if wert1 > sollwert + 3 then goto NeuStart 'Istwert größer Sollwert
if wert1 < sollwert - 3 then goto NeuStart ' Totzone + - 2,0 Grad
goto Ende4 '(Intervallzeit läuft zu Ende)
#NeuStart
Intervallzeit = 0 ' Stellzeit + Pause
#AUS
K1 = OFF
K2 = OFF
Schritt = 0
#Ende4
goto loop ' Schleife, zurück zum Anfang
#T1H ' Temperatur (Station V1.1)
wert1 = T1 - 50 ' halbe Grad
RETURN
#Schalter
if F1 then goto weiter61' F 1 nicht betätigt -->
Sollwert = Sollwert + 1 ' Sollwert halbe grad
Return
#weiter61
if F2 then return' F 2 nicht
betätigt -->
Sollwert = Sollwert - 1 'Sollwert halbe grad
Return
#LED ' Sollwert-Anzeige mit LEDs bzw. Ist-Wert min LED1 , max LED4 blinkt
' Die Werte bei leuchtender LED müssen addiert werden (weil keine andere Anzeige).
' Beispiel LED1 und LED 3 leuchten: 40 + 1 + 4 = 45 Grad Sollwert
gosub T1H ' Ist-Temperatur (80 halbe Grad = 40 Grad)
wert2 = wert1 / 2 'wert2 hat Ist-Temperatur / 2 also Grad
wert1 = (Sollwert / 2) - 40 ' Zur Sollwert-LED-Anzeige 40 Grad addieren
if wert2 < 36 then goto LED1BL 'Ist-Temperatur unter 36 Grad (LED 1 blinkt)
LED1 = wert1Bit0 ' bedeutet + 1 Grad
goto LED2
#LED1BL
if LED1 = OFF then LED1
= ON else LED1 = OFF' LED-Blinken (besser siehe #LED4BL)
#LED2
LED2 = wert1Bit1 ' bedeutet + 2 Grad
LED3 = wert1Bit2 ' bedeutet + 4
if wert2 > 55 then goto LED4BL '
Ist-Temperatur über 55 Grad (LED 4 blinkt)
LED4 = wert1Bit3 ' bedeutet + 8
Return
#LED4BL
LED4 = not LED4 ' LED-Blinken (siehe auch bei #LED1BL)
Return
Vollständiges Programm hier laden: ReglerDreipunkt V15.bas nach_oben
4.12)
Regelung einer Bewässerung (Beregnung)
Im Kapitel Softwarebausteine ist eine Schaltuhr für Beregnung für Pflanzen beschrieben. Die zeitliche Bewässerung schützt nicht vor Überwässerung bei Regen oder Trockenheit bei Sonne. Hiergegen muss eine Messung der Erdfeuchtigkeit eingesetzt werden.
Erdfeuchtefühler sind sehr teuer, weil die langfristig sichere Messung aufwändig ist. Versuchsweise kann man zwei Kohle-Elektroden aus alter Zink-Kohle-Batterie (z.B. Flachbatterie 4,5 Volt) nutzen. Auch Elektrokohlen von Motoren sind geeignet. Die Kohlestäbe sind leitfähig, sind sicher vor Korrosion und haben eine Metallkappe, an die man leicht die Messleitung anlöten kann. Gegebenenfalls isoliert man die Metallteile durch Silikonmasse oder Kunststoffkleber.
Eine Elektrode wird mit Ground verbunden und die zweite über einen Vorwiderstand an + 5 V. Dieser Spannungsteiler wird an einen Analog-Eingang angeschlossen. Um Polarisation zu vermeiden, kann man statt fest + 5 V besser einen Ausgang nehmen und nur Einschalten, wenn man messen möchte.
Mit dieser Messung erhält man ein Maß für die Erdfeuchte (Bodenfeuchte). Je trockener die Erde desto höher ist der elektrische Widerstand und desto höher ist der Analogwert. Dies kann der Istwert für eine Regelung sein. Entweder kann man die Schaltuhr für die zeitbegrenzte Bewässerung freigeben oder nur einmal am Tag abfragen und für begrenzte Zeit die Bewässerung einschalten.
Der Messwert unmittelbar nach der Bewässerung kann als Grundwert für einen automatischen Abgleich gespeichert werden. Bei der Austrocknung steigt der Analogwert.
Einschaltwert = Grundwert + (ein fester Wert).
Für Blumengießen bei Abwesenheit schaltet man je nach Trockenheit eine preiswerte 12V-Pumpe oder ein Ventil (z.B. Waschmaschinenventil) zeitbegrenzt ein.
4.13)
Messwert-Dämpfung, automatischer Abgleich
Im vorherigen Abschnitt ist ein Verfahren zum automatischen Abgleich genannt; der Bezugswert wird bei einem Ereignis gespeichert (dort Widerstandswert nach Bewässerung).
Im Abschnitt Adaptiver Regler ist ebenfalls ein automatischer Abgleich beschrieben (dort Bezugswert, um Schalthäufigkeit zu reduzieren).
In diesem Abschnitt wird ein Bezugswert mit Durchschnittswerten gebildet.
Mit den folgenden Verfahren kann man auch schwankende Messwerte (z.B. Störeinstreuungen) dämpfen (siehe auch Kapitel Tipps).
Auch Langzeitwerte (anstelle echter Mittelwerte) können gebildet werden, z.B. mittlere Vorlauftemperatur einer Heizung.
Langzeitwerte können auch Bezugsgröße sein. Zum Beispiel kann die Abweichung einer Temperatur von dem Langzeitwert angezeigt oder ausgewertet werden (Temperatur steigt oder fällt).
Auch ein automatischer Abgleich kann erfolgen, z.B. kann der örtliche Luftdruck (Höhe über NN) als Langzeitwert gebildet werden und damit entfällt das Einstellen von Hand je nach Höhe über NN. Der Luftdruck verringert sich je 8 Meter Höhe um 1 hPa. Der Langzeitwert weicht entsprechend der Höhe von dem Normaldruck 1013 hPa (NN) ab.
Der automatische Abgleich ist die Differenz (1013 – Langzeitwert) und wird zum aktuellem Luftdruck addiert. Möchte man in einem Byte speichern, muss noch ein Sockelbetrag benutzt werden.
Define w1
byte ' Langzeitwert
Define AufAb byte ' Messwert
Define w2 word ' Rechenwert (Hilfswert)
(1) Dämpfungsfaktor wählbar (hier 10000)
Der Langzeitwert w1 des Messwertes hat hier dasselbe Format wie der Messwert, ist also kein Vielfaches. Der Dämpfungsfaktor kann bis maximal 32768 minus maximaler Messwert z.B. als Konstante (10000) oder als weitere Variable gewählt werden.
w2 = w2 – w1 + AufAb ' Rechenwert
#pruefe
if w2 >= 0 then goto w2plus
w1 = w1 – 1 ' Langzeitwert minus 1
w2 = w2 + 10000 ' dafür Rechenwert plus 10000
goto pruefe '(Schleife falls > 19999)
#w2plus
if w2 < 10000 then goto fertig1
w1 = w1 + w2/10000 ' Langzeitwert z.B. plus 1
w2 = w2 MOD 10000 ' dafür Rechenwert Restwert kleiner 10000
#fertig1
(2) Dämpfungsfaktor
vereinfachtes Programm
Das Programm wird einfach, wenn 32 768 die Überschreitung des Rechenwertes darstellt, denn dann braucht nur Minus abgefragt zu werden. Der Dämpfungswert w1 wird mit +1 erhöht bzw. mit –1 gesenkt. Da dies wertmäßig 32768 entspricht, wird der Restwert w2 um 32768 geändert.
Eine der folgenden Methoden kann verwendet werden, um der Restwert positiv zu machen.
w2 = w2 + 32768 oder w2 = w2 – 32768 oder w2 = w2 AND &H7FFF
Im Zeittakt wird das Programm bearbeitet und dadurch legt man die Stärke der Dämpfung fest. Bei Sekundentakt ist die Dämpfung geringer als im Minutentakt.
if Sekpuls = OFF
then goto fertig2 ' Beispiel Zeittakt
Hier werden auch mehrere Programmiermethoden dargestellt.
1. Variante
1
w2 = w2 – w1 + AufAb ' Rechenwert
wird erhöht oder gesenkt
if w2 >= 0 then goto fertig2 'Rechenwert positiv, dann Dämpfungswert nicht ändern
if AufAb > w1 then w1 = w1 +1 else w1 = w1 - 1 'Dämpfungswert wird verändert
w2 = w2 + 32768 ' dafür in Rechenwert Restwert bilden
2.
Variante
2 (ohne goto)
wert12 = AufAb – w1 'Differenz
w2 = w2 + wert12 'Restwert +- Differenz
'Mit dem Rechentrick +-Wert geteilt durch Absolutwert wird +1 bzw. 0 bzw. –1 erzeugt.
if w2 < 0 then wert12 = wert12 / ABS (wert12) else wert12 = 0 ' wert12 wird +1 bzw. 0 bzw. -1
w1 = w1 + wert12 ' +- 1 ist wertmäßig +- 32768
w2 = w2 AND &H7FFF ' falls negativ wertmäßig -+ 32768
3. Variante
3
Define wert3 byte ' Hilfswert
Byte wert3 wird nur temporär genutzt und kann deshalb auch temporär in anderen Programmen genutzt werden.
Minus entsteht auch bei Unterschreitung des Rechenwertes, deshalb ist wert3 als Richtungswert notwendig. Da wert3 ein Byte ist und nicht minus 1 beinhalten kann, wird mit einem Rechentrick gearbeitet und der Wert um +1 angehoben. Dadurch wird statt (+1 und -1) mit (2 und 0) gearbeitet. Im Rechenschritt wird der richtige Wert mit –1 wieder hergestellt.
w2 = w2 – w1 + AufAb ' Rechenwert
wird erhöht oder gesenkt
if w2 >= 0 then goto fertig2
if AufAb > w1 then wert3 = 2 else wert3 = 0 ' Rechentrick
w1 = w1 + wert3 – 1 'Dämpfungswert plus oder minus 1
w2 = w2 + 32768 ' dafür in Rechenwert Restwert bilden
#fertig2
(3) Langzeitwert
(Dämpfungsmesswert) anzeigen oder damit arbeiten
Der Langzeitwert w1 des Messwertes hat dasselbe Format wie der Messwert, ist also kein Vielfaches. Dadurch kann er einfach benutzt werden, z.B.:
Abweichung = w1 – AufAb ' zeigt die Abweichung des Messwertes vom Langzeitwert
(4) Kommastellen
des Messwertes
Hierbei wird der Restwert bewertet.
Der maximale Restwert w2 kann 32767 betragen und entspricht 0, 999.. .
Er muss also durch 3277 geteilt werden. Sinngemäß ist die Aufrundung des Teilers auch bei 2 Kommastellen notwendig.
1 Kommastelle = w2 / 3277
2 Kommastellen = w2 / 328
(5) Langzeitwert
remanent speichern
Der Langzeitwert w1 (Dämpfungsmesswert) und der Rechenwert w2 werden im EEPROM z.B. Speicherplatz 4 und 6 statt in Variablen gespeichert (Details siehe Kapitel Softwarebausteine). Bei Wiederanlauf nach Spannungsausfall oder Reset und auch bei Neuladen des Programms bleiben die Werte erhalten.
Zur Bearbeitung
werden die Werte in den temporären Variablen wert12 (statt w2) und wert3 (statt
w1) geladen.
if Sekpuls = OFF then goto fertig5 ' Beispiel Zeittakt
Nach Holen (Lesen)
liegt der Rechenwert w2 in wert12.
Zeiger = 4 : input# wert12 ' Hole Speicher 4 nach Word wert12
(w2)
Anschließend wird der bisherige Langzeitwert w1 nach wert3 geholt.
Input# wert3 ' Hole Speicher 6 nach Variable wert3 (w1)
if AufAb = wert3 then goto fertig5 ' keine Änderung
wert12 = wert12 – wert3 + AufAb ' neuen Rechenwert w2 bilden
if wert12 >= 0 then goto w2Speichern
Wert12 = wert12 AND &H7FFF ' Rechenwert -32768 (w2), d.h. in positiv ändern
Zeiger = 4 : print# wert12 ' Schreibe Inhalt von wert12 auf Speicher 4 (w2)
' Langzeitwert (w1) plus oder minus 1 (wertmäßig +- 32768)
if AufAb > wert3
then wert3 = wert3 +1 else wert3
= wert3 - 1
Print# wert3 ' Schreibe Inhalt von wert3 auf Speicher 6 (w1)
goto fertig5
#w2Speichern
Zeiger = 4 : print# wert12 ' Schreibe Inhalt von wert12 auf Speicher 4 (w2)
#fertig5
Die temporären Variablen wert12 und wert3 werden auch in anderen Programmen benutzt.
4.14)
Messwert-Dämpfung Beispiel
Der Istwert kann durch verschiedene Einflüsse schwanken. Hierdurch wird eine Regelung „unruhig“. Das folgende Beispiel zeigt das Prinzip einer Dämpfung (Messwert-Beruhigung) z.B. bei der Station V1.1. Der Dämpfungsfaktor kann gewählt werden. Ein größerer Faktor macht die Messung träger. Eine zu große Dämpfung erzeugt allerdings in Regelkreisen eine Regelverzögerung, die zum Schwingen führen kann und bei den Regelparametern P I D ausgeglichen werden muss. Bei dem folgenden Verfahren liegt der Dämpfungswert als Vielfaches vom Messwert vor.
define T1 AD[5]' Temperatursensor 1, Innentemperatur (aktueller Messwert in halbe Grade)
define temp1 word ' 4-fach-Dämpfungswert Temperatur (halbe Grade und 4-fach)
define Daempfung 4 ' Dämpfungsfaktor als Konstante (möglich ist auch Variable z.B. im Byte)
#Innentemp Return temp1 / (2*Daempfung) ' in Grad, Errechnet mit Dämpfungswert
alternativ möglich ist auch
#Innentemp Return temp1 / (Daempfung SHL 1) ' in Grad, Errechnet mit Dämpfungswert
'*** Hauptprogramm ***
gosub T1M 'Temperatur messen, Mittelwert bilden aus T1 in halben Graden
alternativ taktweise
if Sekpuls then gosub T1M '
if InnenTemp >= OGsollwert then K1 = ON ' Beispiel
'*** Unterprogramm ***
#T1M '*** Temperatur 4-fach Wert halbe Grade (für Station V1.1) ***
temp1 = temp1 + (T1 - 50) - temp1 / Daempfung ' Dämpfungswert bilden
Der Messwert (Halbe Grade) wird hinzugefügt und ein Teil Dämpfungswert (Altwert) wird abgezogen.
------------------------ ENDE Kapitel Regelungstechnik ------ zur Startseite ---