Seite 1 von 2

Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 22. Dez 2022 14:40
von mr.b4
Hallo zusammen,

ich habe meinen Kaminofen etwas getunt.
Der hat jetzt einen Abgastemperaturfühler und einen Servo an der Luftklappe.

Passend dazu habe ich in OH das PID Plug-In gefunden.

https://www.openhab.org/addons/automati ... ontroller/

Leider funktioniert es nicht so wie es soll.
Es wird keine Stellwert an das entsprechende Item mit Stellglied (0-100% Dimmer) ausgegeben
Ganz egal was ich an Paramern in den Regler schreibe.

Laufen tut der Regler irgendwie, denn die Regelabweichung (PID Fehler) wird korrekt ausgegebenen.

Die Doku und die Settings schweigen sich auch darüber aus, ob man das Stellsignal im Detail weiter konfigurieren muss.
Aktuell ist es in der Rule eine "Item Action" ohne Wert. (den soll der Regler dann einfügen - macht er aber ned)

Code: Alles auswählen

configuration: {}
triggers:
  - id: b437ceba-68ef-479c-8e8a-0f12bc9a362d
    label: PID Controller Trigger
    configuration:
      kd: 10
      kdTimeConstant: 1
      kp: 20
      ki: 10
      loopTime: 1000
      input: Kaminofen_Abgastemperatur
      setpoint: Abgastemperatur_Soll
      integralMinValue: 0
      integralMaxValue: 100
      eInspector: PID_Fehler
    type: pidcontroller.trigger
conditions:
  - id: "2"
    configuration:
      itemName: Status_PID
      operator: =
      state: ON
    type: core.ItemStateCondition
actions:
  - id: "1"
    configuration:
      itemName: Zuluftklappe_inv
    type: core.ItemCommandAction

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 22. Dez 2022 23:49
von udo1toni
Vorweg: Ich habe keine Ahnung von Pid Regelkreisen, ich weiß nur, dass die ganze Angelegenheit nicht trivial ist (und damit meine ich nicht die Umsetzung in Code, sondern die korrekte Verwendung eines solchen Regelglieds).

Der Ausgang ist jedenfalls kein Dimmer Item, sondern ein Number Item, das wird Dein Problem sein. Ich habe das mal bei mir in der Testumgebung ausprobiert, und mit einem Number Item bekomme ich einen Wert am Ausgang, der unter 0 sinkt, wenn die gemessene Temperatur zu hoch ist und über 0 steigt, wenn die Temperatur zu niedrig ist. Wenn beide Temperaturen gleich sind ändert ich der Wert nur minimal.

Ich gehe davon aus, dass Du eine weitere Rule brauchst, um aus dem Zahlenwert eine Klappenstellung abzuleiten, wobei der Wertebereich natürlich auch festgelegt werden muss, also meinetwegen -100 = 0%, + 100 = 100%, 0 = 50%
Aber wie gesagt, ich habe keine Ahnung von dem Zeug.

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 23. Dez 2022 10:46
von mr.b4
Vielen Dank.
Das deckt sich mit meinen letzten Ergebnissen.
Es war naiv anzunehmen, dass dieser Regler ein (für meinen Fall) passendes Signal ausgibt.

Wenn man das als P-Regler betriebt wird einfach die die mit P multiplizierte Differenz aus Soll und Ist ausgegeben.

Das in ein sinnvolles Stellsignal zu wandeln wäre eigentlich in dem Plug-In gut aufgehoben, hat der Entwickler aber an den Anwender ausgelagert.

Ziel meiner Bastelei (ähm Entwicklung) ist einfach, dass nach dem Anfeuern die Luft automatisch auf ein gutes Niveau zurück gefahren wird.
Wenn man das übersieht ist das teure Holz sehr schnell weg...

Und nachdem der Ofen abgebrannt ist, soll die Luftklappe ganz schließen (hat weniger dem PID-Regler zu tun) damit die Dunsthaube auch bei geschlossenem Fenster wieder eine Freigabe erhält.

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 5. Feb 2023 22:59
von mad-mike
Was soll denn der Dimmer wohl für eine Aufgabe übernehmen?

Habe damit jetzt paar Mal gespielt.
Ich meine einen Stellmotor (Mischer) mit plus und minus Impulsen zu versorgen, habe ich nun schon hinbekommen.


Habe bei meiner Spielerei erstmal ein Item Sollwert Slider erstellt und einen einfachen Temperatur Sensor welcher hier rumliegt als "ist" wert verknüpft...

Nun kann man mit dem Wert und einer Rule halt positive und negative Impulse ausgeben.

Als nächstes würde ich versuchen wollen die Impuls Zeit in abhängigkeit von dem "Integralwert" zu setzen.

Heißt um den Wert 0 soll nix passieren, bei 10 bzw -10 soll dann 1sek in die jeweilige Richtung laufen.... Usw.

Mal gucken die nächsten Tage.

Nur wie gesagt, ein Dimmer verstehe ich nicht.

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 6. Feb 2023 08:16
von Mclupo
Normalerweise braucht ein PID Regler als Eingangsgrösse einen stetigen Wert, z.B ein analoges Thermoelement.
Wenn die Rule alle 1s den PID Regler triggert, aber der Temperaturwert nur minimum alle 15 Minuten erneuert wird (machen meine z-wave Temperaturgeber ), macht das alles keinen Sinn, bzw. der Regler springt ziemlich stark.
Wie sind denn die Erfahrungen mit der Ofensteuerung?

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 6. Feb 2023 08:50
von mad-mike
So wie ich es verstanden habe mit meinem Beobachtung:

Der PID Regler triggert auf "every Change" vom Temperatur Sensor. (Habe die einen ds20b18 verlinkt) Und der pid triggert sich selbst mit einer Loop Funktion. Hier habe ich Mal 30 Sekunden eingestellt.

So wird der integral wert positiv und negativ gerechnet.

Es bedarf einer schlauen rule, damit man hiermit einen 3 Punkt Stellmotor betreiben kann.

Habe erstmal ganz naiv angefangen: wenn wert über 0 dann Mischer plus, wenn wert unter 0 dann Mischer Minus....

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 6. Feb 2023 09:39
von Mclupo
Schade um den Strom, den du mit dem PID Regler verballerst. Der rechnet 30 mal den selben Wert ( 15 Minuten für neue Temperatur / 30 sec looptine), bis er endlich eine neue Temperatur bekommt. Die ist vielleicht so unterschiedlich, dass der D Regler hochschiesst und dein Stellglied auf Vollausschlag geht.
In so einem Fall ist die Berechnung des Ausgangs besser mit einer normalen Rule, die bei Aktualisierung der Temperatur triggert.

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 6. Feb 2023 10:20
von mad-mike
Der rechnet immer neu.

Das bedeutet, mit jedem Trigger Event, gibt einen neuen integral wert. (Bis er halt am Ende angekommen ist.)

Auch wenn es keine Änderungen an der Sensorik gibt, wird sich der Wert verändern damit eine Aktion durchgeführt werden kann...

Und der sendet alle 30 Sekunden ein "refresh" das heißt das der Wert theoretisch alle 30 Sekunden aktualisiert wird.

Kann den loop Timer auch auf 15 Minuten stellen. Bringt nur nix wenn der Temperatur Sensor früher schon ein Update liefert.

Wie gesagt, das habe ich beobachtet bis jetzt.

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 11. Feb 2023 20:35
von mad-mike
bin hier ja noch immer am Probieren.

Nun wollte ich versuchen mit dem Integralwert Laufzeiten beeinflussen.

Im Positiven bereich hat dies auch geklappt, aber im Negativen gibt´s -> verständlicherweise, eine warnmeldung...

Wie kann ich aus einer Negativ Zahl das vorzeichen weg bekommen??

Code: Alles auswählen

Thread::sleep((PID.state as DecimalType).longValue * 1000)

Re: Kaminofen mit OH3 Steuern * PID-Regler

Verfasst: 11. Feb 2023 22:18
von udo1toni
Die benötigte Funktion dafür heißt Math::abs() oder alternativ Math.abs() (sollte beides gehen)

Code: Alles auswählen

Thread.sleep(Math.abs((PID.state as DecimalType).longValue) * 1000)