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)

Führungsregler

Regelstrecke    Regelverhalten

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.

4.1) Zweipunkt-Regler

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

nach_oben

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.

nach_oben

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

nach_oben

4.3) Dreipunkt-Regler

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.

nach_oben

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.

nach_oben

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.

. nach_oben

4.6) 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.

4.7) Regelstrecke

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.

nach_oben

4.8) Regelverhalten

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.

 nach_oben

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.

nach_oben

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

'2) Zeiten

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

zurück zu Definitionen

'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

zurück zu Definitionen

' 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

zurück zu Definitionen

' Unterprogramme

#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

zurück zu Definitionen

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.

nach_oben

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.

nach_oben

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.

 

nach_oben

------------------------ ENDE     Kapitel Regelungstechnik ------    zur  Startseite ---

Kostenlose Zähler und Statistiken für Ihre Website bei www.motigo.com