Forum: Mikrocontroller und Digitale Elektronik Regelkreis zur thermischen Speicherung von Strom


von Martin m. (studentmg)


Angehängte Dateien:

Lesenswert?

Hallo Community!

Ich stehe vor der Herausforderung einen Regler zu entwerfen. in Bild_1 
kann man grob das Umfeld erkennen. Bild_2 zeigt wie ich mir das ganze 
vorstelle:

Ein Generator (z.B. PV Anlage) speist über einen Smart meter in das 
Niederspannugsnetz ein.
Der Smart meter misst Energie bezug oder Rückspeisen in das Netz.
Ist der Eigenverbrauch im Haushalt kleiner als die erzeugte Energie 
entsteht ein Überschuss. Diesen Überschuss möchte ich durch eine 
Leistungsgesteuerte
Heizpatrone (So weit wie möglich) selbst in Wärme umsetzen.

Nun zur Frage: welchen Regler brauche ich dafür?

1.P-Regler: Angenommen ein Überschuss X tritt auf und mein Regler stellt 
über das Stellglied X ein. Das würde dazu führen, dass bei der nächsten 
Messung ein Überschuss von 0 eintritt und der regler wieder 0 einstellt:

Ich kriege ein Pendelndes System!

Wie lässt sich das ganze Vermeiden?

Mit besten Grüßen

Student

von klaus (Gast)


Lesenswert?

Martin mg schrieb:
> 1.P-Regler: Angenommen ein Überschuss X tritt auf und mein Regler stellt
> über das Stellglied X ein. Das würde dazu führen, dass bei der nächsten
> Messung ein Überschuss von 0 eintritt und der regler wieder 0 einstellt:
>
> Ich kriege ein Pendelndes System!
>
> Wie lässt sich das ganze Vermeiden?

mit nem PI-Regler

von Anon Y. (anonymous)


Lesenswert?

Du solltest dir erst den Unterschied zwischen kWh und kW klar machen.

von Gerhard W. (gerhard86)


Lesenswert?

Wie schon erwähnt, PI, aber dann mit sehr kleinem P-Anteil, oder auch 
ein PT1. Deine Strecke ist ja schnell und hat Verstärkung 1 (10W 
Änderung am Heizkörper verursachen sofort 10W Änderung am Ausgang). Ein 
P-Anteil der zu einer Verstärkung bei offenem Kreis von >1 führt wird 
daher, wie du erkannt hast, freilich Schwingungen bei der halben 
Abtastfrequenz erzeugen. Also musst du die Verstärkung des Reglers 
deutlich unter der Abtastfrequenz absenken oder überhaupt klein halten.

PS: Ist das eigentlich ein Rechenbeispiel, ein Schüler-/Studentenprojekt 
oder soll das ein reales System und praktisch eingesetzt werden?

von Purzel H. (hacky)


Lesenswert?

Naja, die Leute haben eine Solaranlage, aber keine Einspeiseverguetung. 
Daher soll das Einzuspeisende verbraten werden ... duemmlich.

von Gerhard W. (gerhard86)


Lesenswert?

In der Zeichnung fehlt der Packen Leistungswiderstände oder der 
Heizkörper mit Magnetventil am Dach, damit man auch ja nix herschenkt 
falls man das Warmwasser nicht brauchen sollte ;-)

von Martin m. (studentmg)


Lesenswert?

>klaus schrieb:
>
> Martin mg schrieb:
>> 1.P-Regler: Angenommen ein Überschuss X tritt auf und mein Regler stellt
>> über das Stellglied X ein. Das würde dazu führen, dass bei der nächsten
>> Messung ein Überschuss von 0 eintritt und der regler wieder 0 einstellt:
>>
>> Ich kriege ein Pendelndes System!
>>
>> Wie lässt sich das ganze Vermeiden?
>
> mit nem PI-Regler
>
>
>Gerhard W. schrieb ebenfalls:
>Wie schon erwähnt, PI, aber dann mit sehr kleinem P-Anteil



Daran habe ich auch schon gedacht. Schauen wir uns dafür die Formel
(Für ein PI-Regler)an:

Nun angenommen wir sind wieder an der Stelle bei der wir einen 
Überschuss X=0 haben. Damit ist die Regeldifferenz e(t)= x-w 
[w:Führungsgröße = 0]
-> e(t)=0
 Integrationskonstante ist doch auch 0.

Sofort sind wir wieder bei unserem Pendel!

Noch andere Ideen?



>Siebzehn oder Fuenfzehn schrieb:
> Naja, die Leute haben eine Solaranlage, aber keine Einspeiseverguetung.
> Daher soll das Einzuspeisende verbraten werden ... duemmlich.

>Gerhard W schrieb auch:
>In der Zeichnung fehlt der Packen Leistungswiderstände oder der
>Heizkörper mit Magnetventil am Dach, damit man auch ja nix herschenkt
>falls man das Warmwasser nicht brauchen sollte ;-)


Der Hintergrund wird in diesem Beitrag erläutert:
http://www.volker-quaschning.de/artikel/2013-03-Heizen-mit-PV-Strom/index.php


>Gerhard W schrieb:
>PS: Ist das eigentlich ein Rechenbeispiel, ein Schüler-/Studentenprojekt
>oder soll das ein reales System und praktisch eingesetzt werden?

Das soll ein reales System werden!

von Achim S. (Gast)


Lesenswert?

Martin mg schrieb:
> Nun angenommen wir sind wieder an der Stelle bei der wir einen
> Überschuss X=0 haben. Damit ist die Regeldifferenz e(t)= x-w
> [w:Führungsgröße = 0]
> -> e(t)=0
>  Integrationskonstante ist doch auch 0.
>
> Sofort sind wir wieder bei unserem Pendel!

Nö: wenn die momentane Regeldifferenz e(t)=0 ist bedeutet das ja nicht, 
dass das Integral über die bisherige Regeldifferenz auch Null ist: das 
Integral ändert nur einfach seinen Wert nicht weiter.

Sobald die Regeldifferenz also Null wird, springt y_R deswegen nicht 
auch auf Null, sondern es bleibt bei dem bisherigen Wert stehen (und die 
Regeldifferenz bleibt idealerweise bei Null stehen).

Martin mg schrieb:
> Der Hintergrund wird in diesem Beitrag erläutert:
> http://www.volker-quaschning.de/artikel/2013-03-Heizen-mit-PV-Strom/index.php

Na ja, dann wartet aber lieber bis zum für 2016 prognostizierten 
Preisverfall, ehe ihr die Anlage in Betrieb wirklich nehmt. Bei mir 
zuhause ist es übrigens so, dass der Wärmespeicher bei Sonnenschein 
ohnehin bis zur Maximaltemperatur aufgeheizt ist. Zusätzliches 
elektrisches Heizen würde nur zum früheren Abschalten der Kollektoren 
führen und wäre genau so effizient, wie die Umgebungsluft direkt zu 
heizen.

von Jürgen (jliegner)


Lesenswert?

Achim S. schrieb:
> Na ja, dann wartet aber lieber bis zum für 2016 prognostizierten
> Preisverfall, ehe ihr die Anlage in Betrieb wirklich nehmt.

Na mit dem Preisverfall wäre ich vorsichtig. Wenn man sich heute so ein 
Solarmodul an sieht, das z.B. 140€ bei 200Wpk kostet, dann sehe ich da 
keine großen Preistendenzen nach unten mehr. Für den Preis bekommt man 
kaum eine gleichgroße Verbundglasscheibe. Auch werden die 
Installationskosten nicht weniger und die Preise für das Montagesystem 
fallen sicher auch nicht ins Bodenlose. Je weniger die Module kosten, 
desto weniger macht sich eine weitere Verbilligung im Gesamtsystem 
bemerkbar. Aber eins steht fest, auf die Einspeisevergütung kann man 
nicht mehr setzen. Selbst wenn man beim direkten Heizen noch weniger 
Wirkungsgrad hat als mit Kollektoren, die Option Strom für alles 
Mögliche hat man in der Hinterhand. Und wenn der Strom erst über die 
Wärmepumpe geht ist es noch besser.
Es steht nicht immer der absolute finanzielle Nutzen im Vordergrund. Für 
einen Satz Alufelgen für's SUV bekommt man schon gut 3KWpk Solarmodule. 
Und wenn damit nur der Pool um 2 Grad wärmer wird oder man wie zur Zeit 
der frierenden Frau ein paar Grad mehr in die Bude zaubert, der Nutzen 
ist größer als der von Alu-Felgen.

von Achim S. (Gast)


Lesenswert?

"Preisverfall" war eine schlechte Formulierung von mir. Die oben 
verlinkte Studie sagt für 2016 die "Oil Parity" voraus und folgert, dass 
es sich ab dann lohnt, den privat erzeugten Solarstrom in der Heizung zu 
verbraten. Ich bezweifle diese Argumentation, deshalb habe ich Martin 
zum "Abwarten" geraten.

Jürgen Liegner schrieb:
> Für
> einen Satz Alufelgen für's SUV bekommt man schon gut 3KWpk Solarmodule.

Ich würde mir zwar auch eher eine kleine Photovoltaikanlage kaufen als 
Alufelgen für einen nicht vorhandenen SUV. Aber bloß weil Alufelgen für 
mich ein völlig unsinniger Invest wären bedeutet das noch lange nicht, 
dass ich eine Photovoltaikanlage zum Heizen von Wasser für sinnvoll 
halte ;-)

von Martin m. (studentmg)


Lesenswert?

Achim S. schrieb:

> Martin mg schrieb:
>> Der Hintergrund wird in diesem Beitrag erläutert:
>> http://www.volker-quaschning.de/artikel/2013-03-Heizen-mit-PV-Strom/index.php
>
> Na ja, dann wartet aber lieber bis zum für 2016 prognostizierten
> Preisverfall, ehe ihr die Anlage in Betrieb wirklich nehmt. Bei mir
> zuhause ist es übrigens so, dass der Wärmespeicher bei Sonnenschein
> ohnehin bis zur Maximaltemperatur aufgeheizt ist. Zusätzliches
> elektrisches Heizen würde nur zum früheren Abschalten der Kollektoren
> führen und wäre genau so effizient, wie die Umgebungsluft direkt zu
> heizen.

Da hab ich mich ungenau ausgedrückt:

Ich möchte einen Prüfstand aufbauen um experimentell das Modell zu 
überprüfen - mehr nicht.


>Achim S. (Gast)  schrieb:
>Nö: wenn die momentane Regeldifferenz e(t)=0 ist bedeutet das ja nicht,
>dass das Integral über die bisherige Regeldifferenz auch Null ist: das
>Integral ändert nur einfach seinen Wert nicht weiter.
>
>Sobald die Regeldifferenz also Null wird, springt y_R deswegen nicht
>auch auf Null, sondern es bleibt bei dem bisherigen Wert stehen (und die
>Regeldifferenz bleibt idealerweise bei Null stehen).

Ich habe den PI-Regler in Matlab simuliert und tatsächlich: Achim S. hat 
Recht.
Allerdings: Wie kann ich 0 als untere Grenze festlegen?
Damit Y_R nicht bei einem mangel im negativen Bereich bleibt?

von Martin m. (studentmg)


Lesenswert?

Hallo Liebe Community

Ich bin endlich bei der Software für den PIC-uC angekommen.

Als C-Code habe ich das hier gefunden:

  e = w - x;                  //Vergleich
  esum = esum + e;            //Integration I-Anteil
  y = Kp*e + Ki*Ta*esum;      //Reglergleichung
  if (y < 0) {y = 0;}         //Begrenzung Stellgröße
  if (y > 1000) {y = 1000;}
  Kaskade = y;                //Übergabe Stellgröße

Quelle: http://www.rn-wissen.de/index.php/Regelungstechnik

Nun habe ich anstatt des Dimmers aus Bild_2  5 Verschiedene Heizpatronen 
genommen (50;100;200;250;400)W, die es mir erlauben in 50Watt Schritten 
von 0-1kW die Heizleistung einzustellen. Diese 5 Heizpatronen sind 
jeweils per solid state relais an an einen Digital out des PIC 18f25k22 
uC angeschlossen.

Jetzt suche ich einen Vorschlag wie ich die Kaskade programmieren könnte 
um die verschiedenen Liestungen einzustellen.

Beste Grüße

von Jörg K. (joergk)


Lesenswert?

Vorsicht:
Du begrenzst zwar die Stellgröße y, nicht aber den Integralteil esum.
Wenn Dein Regler also z.B. am oberen Stellgrößenanschlag liegt (Du also 
noch mehr Strom hast also Du verheizen kannst), steigt zwar die 
Stellgröße nicht mehr (wegen y>1000), aber esum integriert fröhlich die 
Regelabweichung weiter.
Stichwort zum grugeln: Windup

Jörg

von Martin m. (studentmg)


Lesenswert?

Jörg K. schrieb:
> Vorsicht:
> Du begrenzst zwar die Stellgröße y, nicht aber den Integralteil esum.
> Wenn Dein Regler also z.B. am oberen Stellgrößenanschlag liegt (Du also
> noch mehr Strom hast also Du verheizen kannst), steigt zwar die
> Stellgröße nicht mehr (wegen y>1000), aber esum integriert fröhlich die
> Regelabweichung weiter.
> Stichwort zum grugeln: Windup
>
> Jörg

Danke schnell verbessert:

    e = w - x;                        //Vergleich
    esum = esum + e;                  //Integration I-Anteil
    if (esum < -1000) {esum = -1000;} //Begrenzung I-Anteil
    if (esum > 1000) {esum = 1000;}
    y = Kp*e + Ki*Ta*esum;            //Reglergleichung
    if (y < 0) {y = 0;}               //Begrenzung Stellgröße
    if (y > 1000) {y = 1000;}
    Kaskade = y;                      //Übergabe Stellgröße

Bleibt aber die Frage wie ich die Kaskaden Funktion am sinnvollsten 
lösen könnte.
Mir fällt erstmal nur eine große if, else abfrage ein

von joergk (Gast)


Lesenswert?

Hm, würde es so machen:
Zwischenspeicher = Soll-Leistung
Zwischenspeicher > 400W -> 400W einschalten, 
Zwischenspeicher:=Zwischenspeicher-400W
Zwischenspeicher 250W -> 250W einschalten, 
Zwischenspeicher:=Zwischenspeicher-250W
und so weiter...

Jörg

von Mar V. (marvol)


Lesenswert?

Hallo Martin,

dies ist ein spannendes Projekt. Mit dem Pendel am Anfang hast Du 
sicherlich recht, wenn alle Baugruppe ohne Zeitverzögerung arbeiten, 
aber wenn Du die Ansteuerung mit Zeitverzögerung oder als PT1 
deklarierst funktioniert dies mit einem PI-Regler recht gut (Habs in der 
Simulation ausprobiert).

Nun aber zur Kaskade: Wir nehmen nur Heizpatronen, die ihren Wert 
verdoppeln, also 50,100,200,400 - damit kann man einen Wert von 750 W 
erreichen. Es wird nun die Stellgröße auf binär umgewandelt:

50  --> 2^0 --> 1
100 --> 2^1 --> 2
200 --> 2^2 --> 4
400 --> 2^3 --> 8
-----------------
750 ----------> 15

Die Stellgröße muss also durch 750/15=50 geteilt werden, dann ergibt 
sich eine Integerzahl von 0 bis 15. Nun wird aus der Integerzahl das 
jeweilige Bit extrahiert (kann jeder uC).

Beispiel:

Stellgröße 300 -> 300/50 = 6 --> Binär 0110 --> 100+200= 300 W
Stellgröße 450 -> 450/50 = 9 --> Binär 1001 -->  50+450= 450 W

usw....

Der Trick ist eigentlich nur der, dass die Heizperioden den Faktor 2 
besitzen. Dann kannst Du Dir die ganzen If-then-else sparen.

Ich hoffe es war verständlich.

Gruß
Marvol

von Martin m. (studentmg)


Lesenswert?

> Ich hoffe es war verständlich.
>
> Gruß
> Marvol

Ich denke schon aber mich plagt noch eine andere Überlegung:
Falls y zwischen 2 Lestungsstufen liegt : Also Überschuss von z.B. 70 
Watt
würde dann die Leistung zwischen 100 und 50 Watt pendeln? und vor allem 
wie lässt sich das dann verhindern?

Grüße

von Mar V. (marvol)


Lesenswert?

Hallo Martin,

okay, ich habe einen Zwischenschritt nicht sauber erläutert. Es wird ein 
Casting auf Integer erfolgen.

Beispiel 70:

Stellgröße=70 --> 70/50 = 1.4
intStellgröße = int(1.4) = 1   -> Binär: 0001

Beim Integer werden die Nachkommastellen abgeschnitten.

Somit pendelt die Vorgabe nicht zwischen zwei Werten sondern bringt nur 
50W. Der Fehler ist somit 20 W.

Wie groß ist dann der max. Fehler?

Beispiel 399.9:

Stellgröße=399.9 --> 399.9/50 = 7.998
intStellgröße = int(7.998) = 7   -> Binär: 0111

Es wird somit eine Leistung von 50+100+200=350 W eingestellt. Der Fehler 
liegt bei 49.9W. Dies kann man nun beliebig fortführen, der max. Fehler 
ist immer kleiner der kleinsten Kaskade.

Die Programmierung ist relativ einfach:

AusgangBinär_1 = int(Stellgröße/50.0) & 1;  // 50 W
AusgangBinär_2 = int(Stellgröße/50.0) & 2;  // 100 W
AusgangBinär_4 = int(Stellgröße/50.0) & 4;  // 200 W
AusgangBinär_8 = int(Stellgröße/50.0) & 8;  // 400 W

Allerdings muss vermieden werden, dass negative Zahlen als Stellgröße 
auftreten.

Soll allerdings der Wert 70 genau gefahren werden, so muss sicherlich 
eine Pulsmodulation (PWM) eingesetzt werden, die dann etwas aufwendiger 
ist.

Noch ein Hinweis, wenn das Thermoelement die Grenztemperatur erreicht, 
muss die Stellgröße zu Null gesetzt werden, der PI-Regler deaktiviert 
werden und vorallem die Integrationssumme esum zu Null gesetzt werden, 
sonst kommt es beim Wiederanfahren zu einem Überschwinger.

Gruß
Marvol

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.