Char Broil Elektro Smoker // PID für ext. Relais (MQTT => Shelly on/off), ich verstehe Pitmaster nicht?!

Juwei

New member
Hallo zusammen,

ich habe einen Char Broil Elektro Smoker so umgebaut, dass die Heizspirale durch einen Shelly ein-/ausgeschaltet werden kann.
Shelly, wie auch das WLanThermo hängt an einem ioBroker, über den ich das steuern würde.

So stelle ich mir das vor (mit Pitmaster):
Javascript:
on({id: 'mqtt.0.WLanThermo.MINIV3.status.data', 'change': 'any'}, function(obj){
    const data = JSON.parse(obj.state.val);
    if (data.pitmaster.pm[0].value === 100) {
        setState('shelly.0.SHSW-25#10ACDD#1.Relay0.Switch', true);
    }
    else {
        setState('shelly.0.SHSW-25#10ACDD#1.Relay0.Switch', false);
    }
});

Bedeutet, wenn der pitmaster (SSR) value auf 100 steht, dann schalte den Shelly Switch ein, bei 0 schalte den Shelly aus.
Soweit die Theorie.

Und jetzt kommt mein Problem:
WIE funktioniert diese Pitmaster-Einstellung? Genauer die PID?

Mein erster Test mit Soll-Temperatur 50 Grad hat auch bei 72 Grad noch 100% angezeigt...
Aktuell als ersten Test habe ich Kp 150, Ki 0,01 und Kd 5 eingestellt (alles geraten, wollt erstmal eine Ausgangswert haben an dem ich dann tunen kann).
Aber ich habe nicht verstanden, die diese 3 Werte zusammenspielen.

Hat jemand einen Tipp mit welcher Einstellung ich mal beginnen kann und wie ich welchen Parameter verändere, um das Verhalten zu korrigieren?

Viele Grüße,
Jürgen
 

s.ochs

BOFH
Teammitglied
Admin
Hi Jürgen,

interessantes Projekt!

Aber was genau erwartest du? Du hättest gerne bei jeder Temperatur unter Solltemperatur einen Pitmasterwert von 100 und bei allen Temperaturen über Solltemperatur einen Pitmasterwert von 0? Das wär jedoch nicht das klassische Verhalten eines PID-Reglers sondern eines Zweitpunktreglers. Ein Zweipunktregler führt unweigerlich zu einem schwingenden Regelverhalten. Du kannst dir das ganz gut anhand einer Autobahnfahrt vorstellen: beim Zweipunktregler trittst du immer voll aufs Gas, bis die Zielgeschwindigkeit von z. B. 130 km/h erreicht ist. Dann gehst du schlagartig komplett vom Gas. Durch die Verluse (Reibung etc.) fällt die Geschwindigkeit unter Soll und die trittst wieder voll aufs Gas ...

Ein PID macht das anders, sein Ziel ist der Aufbau eines konstanten Pitmasterwerts (zwischen 0 und 100), so dass beim Erreichen der Solltemperatur das "Gaspedal leicht durchgedrückt wird", eben genau so viel, wie nötig um Soll zu halten. Dazu gehört aber auch, dass der Pitmasterwert auch über Soll noch einen Wert größer Null hat. Und, die PID-Parameter müssen natürlich auch zum System passen. Da dürfte es aktuell noch dran mangeln. Zu beachten wäre hier auch die zeitliche Verzögerung, die durch den "Weg" über iobroker und den Shelly entsteht. Auch das ist Teil des "Systemverhaltens".

Man kann einen PID dazu "zwingen" sich wie ein Zweipunktregler zu verhalten. In diesem Fall muss man den proportionalen Anteil so groß machen, das er das Regelverhalten komplett überwiegt. Die Temperatur-Reglerauflösung liegt beim WT bei 0,1 °C. Der P-Anteil des Reglers ergibt sich, wie der Name schon vermuten lässt, aus einem proportionalen Verhalten zur Soll-Differenz. Die kleinste Soll-Differenz oberhalb von Soll wäre demnach - 0,1 °C. Um den Pitmasterwert von 100 runter auch 0 zu bekommen, braucht es also ein Kp = 1000, denn 1000*-0,1 = -100. Das selbe funktioniert dann auch beim Unterschreiten der Solltemperatur. Hier wird dann durch eine Soll-Differenz von +0,1 °C ein Pitmasterwert-Sprung von 0 auf 100 erzeugt. Ki und Kp sind in diesem Fall zu vernachlässigen (auf Null setzen), da sie eh nicht gegen den P-Anteil ankommen würden.
Je nachdem wie groß der Zeitverzug zwischen WT und Shelly und nochmal zwischen Heizspirale und Messposition ist, kann es bei dieser Art des Betriebs zu recht großen Temperatur-Überschwingern kommen. Müsste man sich dann mal im Betrieb ansehen.

Der andere Weg wäre den PID "richtig" zu nutzen. Nur bin ich nicht sicher, ob der Shelly das lange mit macht. In diesem Fall wird nämlich mit jedem ganzzahligen Pitmasterwert von 0 - 100 gearbeitet. Da das Relais aber nur die Zustände aus / an kennt, werden die Zustände zwischen 0 und 100 über ein zeitliches Takten der Stellgröße erreicht. Wir arbeiten beim WT im Aktorprofil "SSR" mit einer Trägerfrequenz von 0,5 Hz. Ein Beispiel: der PID-Regler berechnet einen notwendigen Pitmasterwert von 50 %. Eine Trägerfrequenz von 0,5 Hz bedeutet eine Periode von 2 Sekunden. Also wird bei einem Pitmasterwert von 50 % das Relais 1 Sekunde lang "an" und 1 Sekunde lang "aus" betrieben. Nach Ablauf der 2 Sekunden beginnt das Ganze von vorne. Somit hast du also bei allen Pitmasterwerten außer 0 und 100 immer zwei Schaltwechsel am Relais, alle 2 Sekunden. Macht in der Stunde rund 1800 Schaltvorgänge. Bei einem Shelly mit mechanischem Relay dürfte das unweigerlich nach 1-2 Longjobs zu einem Ausfall des Relais führen. Würde man diesen Weg gehen, kann dir niemand direkt die "richtigen" PID-Parameter nennen. Dazu müsste man sich das Regelverhalten genau ansehen und dann entsprechend die Parameter anpassen.

Einem SSR wiederum würden diese häufigen Schaltvorgänge nichts ausmachen. Ebenso der Heizspirale selbst. Daher die Frage: ist der Weg über iobroker und Shelly notwendig? Ein räumliches Problem dürfte ja nicht vorliegen, da die Temperatur ja direkt am Grill vom WT gemessen wird? Oder könnte ein SSR auch direkt an den Pitmasterausgang am WT angeschlossen werden, welches die Heizspirale schaltet?

Gruß
Steffen
 

Juwei

New member
Hi Steffen,
Danke für die ausführliche Antwort!
Genau, ich habe zu kompliziert gedacht - habe die integrierte Funktion des WLanThermo nicht bedacht und wollte es über MQTT lösen.
Einen SSR (10A) habe ich mir bereits bestellt und werde es damit testen.
Mit welchen PID Werten sollte ich damit starten und wie teste ich es - auf 100 Grad einstellen und so lange testen, bis er nicht mehr schwingt?
Die Auto-Tune Option habe ich nicht mehr gefunden, aber hier im Forum davon gelesen. Gibt's sowas noch?

Beste Grüße,
Jürgen
 

s.ochs

BOFH
Teammitglied
Admin
Hi Jürgen,

starte mal mit Kp = 100 / Ki = 0,2 / Kd = 0
Lass den Smoker komplett abkühlen. Dann stellst du den Pitmaster auf "auto" mit einer Solltemperatur von 110 °C und lässt ihn mal zwei Stunden laufen. Diesen Vorgang zeichnest du mit der Cloud auf und stellst ihn dann hier rein. Zusammen mit einem Foto von der Position des Fühlers im Garraum und eines von der Ablufteinstellung (hat der Char Broil Elektro sowas überhaupt?). Dann sehen wir uns das Verhalten mal gemeinsam an.

Die Autotune-Option ist nicht mehr drin, da die Fehlbedienungs-Quote einfach zu groß war. Ein Autotune verleitet dazu den "Fehler" im Regler zu suchen. In der Regel liegt ein schlechtes Regelverhalten aber an der nicht Regelbarkeit des Grills durch falsche Konfiguration (Abluft, Fremdluft, Kohlebett ...). Ein Autotune bringt da keine Lösung, er macht es im Gegenzug nur schlimmer.

Ist in deinem Fall ist es etwas anders, da kein Kohleglutbett sondern eine elektrische Heizung die Energie liefert. Die elektrische Heizung ist deutlich vorhersagbarer und konstanter. Aber mit dem oben beschriebenen Vorgehen klappt das auch ohne Autotune.

Gruß
Steffen
 

Juwei

New member
Hallo Steffen,

habe jetzt den SSR 10 DA drin.

Aktuelle Einstellungen:
"Kp": 100,
"Ki": 0.2,
"Kd": 0,
"DCmmin": 0,
"DCmmax": 100,
"opl": 1,

So schaut's im Elektro-Smoker aus, Temp-Fühler habe ich unter die Ebene gehängt. Noch nicht 100% so wie ich es haben will, aber der Fühler ist zu dick für die Klammer, die ich habe.

IMG_3603.jpeg
Eine "Ablufteinstellung" hat er nicht, nur diese beiden Abluftgitter oben.

Hier das Chart:
Bildschirmfoto 2023-07-22 um 12.42.09.png

Um 10:43 habe ich die Tür mal aufgemacht, um den Tempsensor anders zu positionieren.

Ich verstehe noch nicht die Soll-Ist Berechnung für P und wie ich das Verhalten theoretisch nachstellen kann. Dann könnte ich mit ner Excel ein bischen spielen. Werd mich da mal noch intensiver mit beschäftigen - interessiert mich einfach, wie PID funktioniert.

Beste Grüße und vielen Dank für diesen tollen Regler, macht schon jetzt Spaß und freue mich schon aufs nächste PP :),
Jürgen
 
Zuletzt bearbeitet:

s.ochs

BOFH
Teammitglied
Admin
Hi Jürgen,

vielen Dank für den Plot. Du brauchst gar nicht viel Rumrechnen. Einfach mal das Systemverhalten ansehen:

Systemverhalten.png

Die maximale Heizrate des Systems liegt bei etwa 1 °C / 10 Sekunden. Die Abkühlrate ist recht ähnlich, was schonmal gut ist. Das System läuft etwas nach. Heißt, das Heizelement "glüht" nach der Abschaltung noch etwas nach und/oder der Abstand zwischen Heizelement und Fühler ist noch etwas groß, sodass an der Fühlerposition alles erst mit einem Zeitverzug von etwa 1 Minute ankommt. Aber lassen wir den Fühler erstmal dort, wo er ist.

Was aktuell noch nicht ganz passt, ist das Verhältnis aus I-Anteil und P-Anteil. Der I-Anteil wird durch den hohen P-Anteil sehr schnell abgebaut, sodass sich kein konstanter Stellwert einstellen kann. Jetzt ist die Frage, I-Anteil hoch oder P-Anteil runter. Aufgrund des 5 K Überschwingers würde ich mir erstmal ansehen, wie viel Leistung überhaupt zum Halten einer gewissen Temperatur gebraucht wird. Daher mein Vorschlag:
Wechsle mal von "auto" in den Modus "manual" und gib dort eine konstante Leistung von 20 % vor. Das lässt du 2 Stunden so laufen und dann sehen wir uns an, welche Temperatur dabei raus kommt. Solltest du nach 30 Minuten merken, dass die Temperatur mit 20 % weit über 130 °C hinaus geht, dann auf 10 % absenken. Sollten 20 % nicht reichen um 50 °C zu halten, dann einmal bitte auf 40 % verdoppeln. Sobald sich eine konstante Temperatur ergibt, können wir den Test beenden und dann schauen ob wir Kp senken oder Ki erhöhen.

Gruß
Steffen
 

s.ochs

BOFH
Teammitglied
Admin
Achso, und dann bräuchte ich noch die Info, welche Zieltemperatur(en) du später mit dem Grill anfahren möchtest.
 

Juwei

New member
Vielen Dank!
20% eingestellt. Zieltemperatur fürs PP sind zwischen 100 und 110 Grad. Da der Regler das jetzt sehr genau macht, würde ich einfach das Mittelfeld mit 105 fahren. :)
 

s.ochs

BOFH
Teammitglied
Admin
Super, dann schauen wir mal, wie viel Leistung das System "schluckt". Wie sieht deine "Beladung" im Regelfall aus? Reden wir von einem 3-5 kg PP oder machst du den kompletten Smoker voll? Das frisst natürlich dann auch noch einiges an Leistung und müssen wir beachten. Aktuell ist der Smoker ja leer, geh ich mal von aus?
 

Juwei

New member
Ja, ist aktuell leer ;) Wenn ich PP mach (in 2 Wochen wieder), dann i.d.R. 2x 3kg Stücke auf den beiden Ebenen (dazwischen der Temp-Sensor).

Temperaturkurve mit den 20% wird allmählich flacher... mal schauen wo es sich einpendelt.
1690028725444.png
 

Juwei

New member
Ich frage mich tatsächlich eher, warum Char Broil von Haus aus keinen PID Controller einbaut. Die Abweichungen, als auch die Schwankungen von dem Ding waren echt extrem. Mit den PID 100/0,2/0 ist es schon um Welten besser, als vom Werk...
 

s.ochs

BOFH
Teammitglied
Admin
Die Abweichungen, als auch die Schwankungen von dem Ding waren echt extrem. Mit den PID 100/0,2/0 ist es schon um Welten besser, als vom Werk...
Und da werden wir auf jeden Fall schon besser.

Temperaturkurve mit den 20% wird allmählich flacher... mal schauen wo es sich einpendelt.
Gut, das reicht schon. Bitte einmal den Pitmaster komplett deaktivieren und die Tür für 10 min öffnen, damit die Temperatur runter geht. In der Zwischenzeit schreibe ich dir das weitere Vorgehen.
 

s.ochs

BOFH
Teammitglied
Admin
Ok, also mit 25 % der absoluten Leistung schafft das System etwa 75 °C. Die notwendige Leistung für 105 °C dürfte demnach bei etwa 30 - 35 % liegen. Daher wäre mein Vorschlag die Leistung für den 105 °C -Betrieb zu drosseln. Warum? Ich will den 5 °C- Schwinger kleiner bekommen. Je kleiner der Schwinger, desto mehr Regeldynamik können wir nutzen (P-Anteil). Allerdings bedeutet eine Drosselung auch, dass das erste Hochheizen von Raumtemperatur auf Solltemperatur etwas länger dauert. Bei maximaler Leistung dauert es etwa 15 min. Wären 20 - 25 min für dich auch ok, oder ist dir ein schnelles Hochheizen wichtig? Grob gesagt geht immer nur eins: schnell hochheizen -> größerer erster Schwinger; kleinerer erster Schwinger -> langsamer hochheizen.
 

s.ochs

BOFH
Teammitglied
Admin
Mein Vorschlag: wir senken die maximal abgegebene Leistung auf 70 % der Absolutleistung. Also: DCmax = 70 %
Jetzt brauchen wir die neue max. Heizrate und den genauen Überschwinger. Dazu bitte wie folgt vorgehen: Wenn das System runter auf <40 °C ist, stellst du im Modus "manual" einen Pitmasterwert von 100 % ein (DCmax vorher auf 70 % eingestellt). Heizen lassen, bis die Temperatur von 105 °C erreicht wurde. Dann den Pitmaster komplett deaktivieren, damit wir einen unbeeinflussten ersten Schwinger sehen. Dann mir Bescheid geben.

Der Unterschied zwischen Pitmasterwert (0-100 %) und maximal abgegebene Leistung (DCmax) ist dir klar? Der Pitmasterwert ist ein relativer Wert, der sich immer zwischen DCmin (hier immer 0%) und DCmax bewegt. Ein Pitmasterwert von 100 % bei einem DCmax von 70 % bedeutet, dass wir 70 % der maximalen Leistung des Heizelements abrufen.

Warum hat das System mehr Leistung, als wir für 105 °C wirklich brauchen? Herstellerseitig will man natürlich auch Temperaturen von >200 °C erreichen, also braucht es eine höhere Maximalleistung. Für die 105 °C ist das aber eher "hinderlich". Ist wie mit einem Ferarri durch die 30iger Zone zu fahren... Falls du Sorge hast, dann später mal für ein anderes Gericht nicht die 200 °C zu erreichen: dafür legst du dir einfach ein zweites PID-Profil an, in dem DCmax = 100 eingestellt ist. Ein Regler arbeitet immer um einen Arbeitspunkt, in unserem Fall eine Temperatur. Eine Reglereinstellung die sowohl für 105 °C als auch für 200 °C optimal funktioniert, gibt es nicht. Zu großer Kompromiss.
 

Juwei

New member
Aufheizphase bei 24h Garzeit ist nicht so entscheidend, genauso wie der erste Schwinger - davon wird das Fleisch nicht schwarz.

100% @ 70% DCmax läuft....
 

s.ochs

BOFH
Teammitglied
Admin
Wie geht es weiter: der erste Überschwinger bestimmt die Dynamik des Systems. Grobe Faustregel: Kp = 100 / Überschwinger.

Und der I-Anteil? Jetzt müssen wir doch einmal etwas rechnen :D. Wir wissen, dass wir für einen konstanten Betrieb von 105 °C etwa 40 % der Heizleistung brauchen (abhängig von den äußeren Bedingungen). Der P-Anteil des PID wird berechnet aus Kp* Abweichung zu Soll. Er wird also immer dann zu Null, wenn wir die Solltemperatur genau erreicht haben. Für die Erzeugung der gedachten 40% also ungeeignet. Dafür ist der I-Anteil da. Beim I-Anteil werden alle "vergangenen" Abweichungen zu Soll aufsummiert und mit Ki multipliziert. "Vergangen" heißt in diesem Fall Abweichungen die im Bereich 100/Kp zu Soll liegen. Der Pitmasterwert/Stellwert wiederum ergibt sich aus der Addition der Regleranteile P + I + D. Also brauchen wir beim Erreichen des Sollwerts einen I-Anteil von ca. 40 % (D ist bei uns Null). Wie lang hat der I-Anteil nun Zeit, um diese 40 % zu erzeugen? Hier kommt die Heizrate ins Spiel.

So, jetzt warte ich kurz auf das Erreichen der 105 °C und dann arbeiten wir direkt mit den richtigen Werten.
 

Juwei

New member
3,2 Grad lief es drüber, seither geht es wieder abwärts.

Nach Deiner Rechnung müsste Kp damit 96 sein, richtig?
 

s.ochs

BOFH
Teammitglied
Admin
Nein, Kp =96 schafft dein System nicht. Damit wär es überfordert.

Faustformel: Kp = 100 / Überschwinger = 100 / 3,2 K = (ca.) 30
 

s.ochs

BOFH
Teammitglied
Admin
Mit einem Kp = 30 und einer Heizrate von ca. 1K/22s hat der I-Anteil etwa 1 Minute Zeit um sich aufzubauen.
 
Oben Unten