UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
[Gelöst] Erste Versuche mit LE - PID-Regler
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Erste Versuche mit LE - PID-Regler
Moin,
ich versuche mich gerade testweise am experimentellen LE und habe mir dazu den PID-Regler vorgenommen. Drei Dinge sind mir aufgefallen (eventuell noch Hinweise auf Bugs oder Verbesserungsmöglichkeiten?):
1.
Mein als Ausgang gewähltes Objekt K-270 ist in der ETS und durch den Import folglich auch im TWS mit DPT 5.001 (0...100%) hinterlegt, das habe ich mehrfach überprüft. Der LE zeigt die Werte im Diagnosemodus (Doktormodus) aber dennoch scheinbar in absoluten Zahlen an. Ich hätte erwartet, dass da dann Prozentwerte angezeigt werden. Siehe Screenshot roter Kreis. Ist das noch ein Bug oder mache ich einen Gedankenfehler?
Auch Grafana zeigt mir hier nur absolute Werte an, wenn ich den Grafanabutton im LE Diagnosemodus klicke.
Der KNX Busmonitor liefert jedoch Prozentwerte -> in dem aktuellen Fall erwartete 100%, weil die 25°C Solltemperatur ja deutlich über der aktuellen Raumtemperatur liegen.
2.
Die mit blau eingekreiste Zahl irritiert mich dazu. Die Regel habe ich heute gegen grob 8:00 Uhr erstellt. Seit dem ist von keiner PA ein Wert auf den Bus geschrieben worden. Ich habe im Doktormodus mal manuell 25°C eingegeben um zu sehen, was denn so passiert. Das hat soweit funktioniert. Anschließend habe ich ausversehen das Taskfenster geschlossen. Ich bin mir recht sicher, dass ich die Logik vorher nicht gespeichert habe.
Als ich dann in einem neuen Taskfenster wieder in den LE gegangen bin, standen die 25°C noch immer in der Logik. Das heißt mein zu Testzwecken manuell eingegebene Wert bleibt auch dauerhaft anliegen obwohl er nicht auf den Bus geschrieben wird? Das verhalten war für mich erst überraschend, ist aber für mich jetzt nachvollziehbar.
Woran erkenne ich denn nun aber, dass die Logik grundsätzlich wieder auf Bussignale reagiert und der manuell eingegebene Wert nicht die Logik einfriert. Ich nehme an, dass erzeuge ich grundsätzlich per Klick auf das orange hinterlegt X, in dem Popoup, zur Eingabe manueller Werte. Aber es gibt kein optisches Feedback, dass jetzt wieder der nächste vom Bus gesendete Werte übernommen wird. In meinem Fall wird der Sollwert leider nicht zyklisch gesendet, weil die Zeitschaltuhr im Inzennio Z41 diese Möglichkeit m.E. nicht bietet.
3.
Deaktiviert man den Doktor-/Diagnosemodus, so bleibt die Logik dennoch vollständig aufgeklappt mit allen letzten Werten und der kleinen Grafik unterhalb der Logik sichtbar. Lediglich das grüne Stetoskopzeichen neben der Logic-ID verschwindet und der Diagnosebutton wechselt von grün auf grau. Die Werte sind nicht mehr anklickbar. Ich hätte erwartet, dass aber auch alle Anzeigewerte wieder verschwinden, so dass ein optischer Zustand hergestellt wird, wie wenn man eine Logik nach dem öffnen des LE oder nach dem Anlegen sieht. Das wäre dann aus meiner Sicht konsequenter und aufgeräumter.
VG,
Sven
ich versuche mich gerade testweise am experimentellen LE und habe mir dazu den PID-Regler vorgenommen. Drei Dinge sind mir aufgefallen (eventuell noch Hinweise auf Bugs oder Verbesserungsmöglichkeiten?):
1.
Mein als Ausgang gewähltes Objekt K-270 ist in der ETS und durch den Import folglich auch im TWS mit DPT 5.001 (0...100%) hinterlegt, das habe ich mehrfach überprüft. Der LE zeigt die Werte im Diagnosemodus (Doktormodus) aber dennoch scheinbar in absoluten Zahlen an. Ich hätte erwartet, dass da dann Prozentwerte angezeigt werden. Siehe Screenshot roter Kreis. Ist das noch ein Bug oder mache ich einen Gedankenfehler?
Auch Grafana zeigt mir hier nur absolute Werte an, wenn ich den Grafanabutton im LE Diagnosemodus klicke.
Der KNX Busmonitor liefert jedoch Prozentwerte -> in dem aktuellen Fall erwartete 100%, weil die 25°C Solltemperatur ja deutlich über der aktuellen Raumtemperatur liegen.
2.
Die mit blau eingekreiste Zahl irritiert mich dazu. Die Regel habe ich heute gegen grob 8:00 Uhr erstellt. Seit dem ist von keiner PA ein Wert auf den Bus geschrieben worden. Ich habe im Doktormodus mal manuell 25°C eingegeben um zu sehen, was denn so passiert. Das hat soweit funktioniert. Anschließend habe ich ausversehen das Taskfenster geschlossen. Ich bin mir recht sicher, dass ich die Logik vorher nicht gespeichert habe.
Als ich dann in einem neuen Taskfenster wieder in den LE gegangen bin, standen die 25°C noch immer in der Logik. Das heißt mein zu Testzwecken manuell eingegebene Wert bleibt auch dauerhaft anliegen obwohl er nicht auf den Bus geschrieben wird? Das verhalten war für mich erst überraschend, ist aber für mich jetzt nachvollziehbar.
Woran erkenne ich denn nun aber, dass die Logik grundsätzlich wieder auf Bussignale reagiert und der manuell eingegebene Wert nicht die Logik einfriert. Ich nehme an, dass erzeuge ich grundsätzlich per Klick auf das orange hinterlegt X, in dem Popoup, zur Eingabe manueller Werte. Aber es gibt kein optisches Feedback, dass jetzt wieder der nächste vom Bus gesendete Werte übernommen wird. In meinem Fall wird der Sollwert leider nicht zyklisch gesendet, weil die Zeitschaltuhr im Inzennio Z41 diese Möglichkeit m.E. nicht bietet.
3.
Deaktiviert man den Doktor-/Diagnosemodus, so bleibt die Logik dennoch vollständig aufgeklappt mit allen letzten Werten und der kleinen Grafik unterhalb der Logik sichtbar. Lediglich das grüne Stetoskopzeichen neben der Logic-ID verschwindet und der Diagnosebutton wechselt von grün auf grau. Die Werte sind nicht mehr anklickbar. Ich hätte erwartet, dass aber auch alle Anzeigewerte wieder verschwinden, so dass ein optischer Zustand hergestellt wird, wie wenn man eine Logik nach dem öffnen des LE oder nach dem Anlegen sieht. Das wäre dann aus meiner Sicht konsequenter und aufgeräumter.
VG,
Sven
Zuletzt geändert von Robert_Mini am Fr Mai 31, 2019 11:00 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 558 Mal
Hallo Sven,
Die Umwandlung in die DPT-spezifische Darstellung, mit der impliziten physikalischen Einheit, erfolgt ausschließlich im KNX-Daemon/-Logger.
Wenn du also, zusätzlich zum KNX-Objekt K-270, noch eine Zeitserie als Ziel hinzufügen würdest, würde in dieser Zeitserie tatsächlich der Wert "92911,75" abgespeichert. Mit anderen Worten: Der Wert "92911,75" wird einmal an den KNX-Daemon/-Logger geschickt, wo er an den Wertebereich des DPTs (255 <=> 100%) angepasst wird, und zum anderen an die Zeitserie gesendet, die diesen Wert in seiner ursprünglichen abspeichern kann und auch macht.
Gekoppelt: / Abgekoppelt: (Zum Wechseln der Zustände auf das Symbol klicken)
Ein automatisches Wiederherstellen der Werte nach beenden des Debug-Modus wird nicht gemacht. Es kann ja durchaus beabsichtigt sein, dass der manuell eingegebene Wert erhalten bleiben soll. Es gibt Überlegungen, dieses Verhalten in Zukunft zu verändern.
Aktuell muss man, will man den ursprünglichen Wert restaurieren, den alten Wert vor dem Beenden des Debug-Modus manuell schreiben.
Trotzdem viel Spaß beim Ausprobieren.
Die Logik-Engine (LE) kennt nur reine Zahlen (ohne Einheit). Der Grafana-Link im Debug-Modus spiegelt die Sichtweise des LE wider.Robosoc hat geschrieben: ↑Do Mai 23, 2019 9:11 am 1.
Mein als Ausgang gewähltes Objekt K-270 ist in der ETS und durch den Import folglich auch im TWS mit DPT 5.001 (0...100%) hinterlegt, das habe ich mehrfach überprüft. Der LE zeigt die Werte im Diagnosemodus (Doktormodus) aber dennoch scheinbar in absoluten Zahlen an. Ich hätte erwartet, dass da dann Prozentwerte angezeigt werden. Siehe Screenshot roter Kreis. Ist das noch ein Bug oder mache ich einen Gedankenfehler?
Auch Grafana zeigt mir hier nur absolute Werte an, wenn ich den Grafanabutton im LE Diagnosemodus klicke.
Die Umwandlung in die DPT-spezifische Darstellung, mit der impliziten physikalischen Einheit, erfolgt ausschließlich im KNX-Daemon/-Logger.
Wenn du also, zusätzlich zum KNX-Objekt K-270, noch eine Zeitserie als Ziel hinzufügen würdest, würde in dieser Zeitserie tatsächlich der Wert "92911,75" abgespeichert. Mit anderen Worten: Der Wert "92911,75" wird einmal an den KNX-Daemon/-Logger geschickt, wo er an den Wertebereich des DPTs (255 <=> 100%) angepasst wird, und zum anderen an die Zeitserie gesendet, die diesen Wert in seiner ursprünglichen abspeichern kann und auch macht.
Die Logik reagiert, parallel zu den manuell eingegebenen Werten, auch immer auf die Objekt-Werte (hier: "Bussignale") solange der Eingang nicht abgekoppelt wurde:Robosoc hat geschrieben: ↑Do Mai 23, 2019 9:11 am 2.
...
Woran erkenne ich denn nun aber, dass die Logik grundsätzlich wieder auf Bussignale reagiert und der manuell eingegebene Wert nicht die Logik einfriert. Ich nehme an, dass erzeuge ich grundsätzlich per Klick auf das orange hinterlegt X, in dem Popoup, zur Eingabe manueller Werte. Aber es gibt kein optisches Feedback, dass jetzt wieder der nächste vom Bus gesendete Werte übernommen wird. In meinem Fall wird der Sollwert leider nicht zyklisch gesendet, weil die Zeitschaltuhr im Inzennio Z41 diese Möglichkeit m.E. nicht bietet.
Gekoppelt: / Abgekoppelt: (Zum Wechseln der Zustände auf das Symbol klicken)
Ein automatisches Wiederherstellen der Werte nach beenden des Debug-Modus wird nicht gemacht. Es kann ja durchaus beabsichtigt sein, dass der manuell eingegebene Wert erhalten bleiben soll. Es gibt Überlegungen, dieses Verhalten in Zukunft zu verändern.
Aktuell muss man, will man den ursprünglichen Wert restaurieren, den alten Wert vor dem Beenden des Debug-Modus manuell schreiben.
Das sehe ich auch so, und steht auch so auf der Liste, aber weit hinten in der Prio.Robosoc hat geschrieben: ↑Do Mai 23, 2019 9:11 am 3.
Deaktiviert man den Doktor-/Diagnosemodus, so bleibt die Logik dennoch vollständig aufgeklappt mit allen letzten Werten und der kleinen Grafik unterhalb der Logik sichtbar. Lediglich das grüne Stetoskopzeichen neben der Logic-ID verschwindet und der Diagnosebutton wechselt von grün auf grau. Die Werte sind nicht mehr anklickbar. Ich hätte erwartet, dass aber auch alle Anzeigewerte wieder verschwinden, so dass ein optischer Zustand hergestellt wird, wie wenn man eine Logik nach dem öffnen des LE oder nach dem Anlegen sieht. Das wäre dann aus meiner Sicht konsequenter und aufgeräumter.
Trotzdem viel Spaß beim Ausprobieren.
Gruß,
Stefan K.
Stefan K.
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Alles klar, danke. Jetzt habe ich auch den Grund für die Stecker (gekoppelt und abgekoppelt) verstanden. Das ist eine gute Lösung!
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Hallo Stefan,S. Kolbinger hat geschrieben: ↑Do Mai 23, 2019 1:50 pm Der Wert "92911,75" wird einmal an den KNX-Daemon/-Logger geschickt, wo er an den Wertebereich des DPTs (255 <=> 100%) angepasst wird
Bist Du Dir sicher, dass Der Wert im KNX-Daemon umgewandelt wird, bzw. Dass das korrekt geschieht? Mein PID Regler regelt im gesamten Wertebereich, dass kann ich in Grafana sehen. Aber bisher bleibt der absolute Wert immer im hohe negativen Bereich. skaliert auf 0-100% hätte ich jetzt dann aber erwartet, dass 10 bis 15% in der Knx Adresse ankommen sollte. Tut es aber nicht.
Vg, Sven
Zuletzt geändert von Robosoc am Mi Mai 29, 2019 5:09 am, insgesamt 2-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 558 Mal
Hallo Sven,
Aber ich glaube zu wissen, wo hier das Missverständnis liegt.
Es wird nicht der maximale Wertebereich von "float" (-3.4E+38 ... 3.4E+38) auf 0-100% abgebildet, sondern die Zahl am Ausgang (Stellwert) ist bereits der Zielwert (nur ohne die Einheit; hier: [%]) und wird, je nachdem welcher DPT das Ziel hat, bestmöglichst angepasst.
Wenn also das Zielobjekt den DPT 5.001 (0% ... 100%) hat, geschieht die Anpassung folgendermaßen:
Ziel sollte es in deinem Fall sein, den Stellwert im Bereich von 0 bis 100 zu halten.
Die Werte für die Parameter Ki und Kd sind auf die Zeiteinheit von einer Sekunde normiert, d.h. Ki wird mit Einheit [1/s] und Kd mit [1s] angenommen.
Da sich die Temperaturen bei einer Heizungssteuerung eher langsam ändern (mehrere Minuten bis Stunden), würde ich für einen guten Startwert von Ki einen Wert von 0.0001 ... 0.001 nehmen.
Den Kd-Wert würde ich zu Anfang auf 0 setzen und erst mal als reinen PI-Regler betreiben. Erst wenn man gute Werte für Kp und Ki gefunden hat und der Stellwert sicher im Bereich 0..100% liegt, würde ich, falls noch nötig, vorsichtig an der Kd-Schraube drehen.
Klar bin ich mir sicher, ich hab's doch programmiertRobosoc hat geschrieben: ↑Di Mai 28, 2019 9:48 pm ...
Bist Du Dir sicher, dass Der Wert im KNX-Daemon umgewandelt wird, bzw. Dass das korrekt geschieht? Mein PID Regler regelt im gesamten Wertebereich, dass kann ich in Grafana sehen. Aber bisher bleibt der absolute Wert immer im hohe negativen Bereich. skaliert auf 0-100% hätte ich jetzt dann aber erwartet, dass 10 bis 15% in der Knx Adresse ankommen sollte. Tut es aber nicht.
...
Aber ich glaube zu wissen, wo hier das Missverständnis liegt.
Es wird nicht der maximale Wertebereich von "float" (-3.4E+38 ... 3.4E+38) auf 0-100% abgebildet, sondern die Zahl am Ausgang (Stellwert) ist bereits der Zielwert (nur ohne die Einheit; hier: [%]) und wird, je nachdem welcher DPT das Ziel hat, bestmöglichst angepasst.
Wenn also das Zielobjekt den DPT 5.001 (0% ... 100%) hat, geschieht die Anpassung folgendermaßen:
Float-Wert | DPT 5.001 | |
---|---|---|
X < 0.0 | -> | 0 (0%) |
0.0 <= X <= 100.0 | -> | 0 .. 255 (0% .. 100%) |
X > 100.0 | -> | 255 (100%) |
Die Werte für die Parameter Ki und Kd sind auf die Zeiteinheit von einer Sekunde normiert, d.h. Ki wird mit Einheit [1/s] und Kd mit [1s] angenommen.
Da sich die Temperaturen bei einer Heizungssteuerung eher langsam ändern (mehrere Minuten bis Stunden), würde ich für einen guten Startwert von Ki einen Wert von 0.0001 ... 0.001 nehmen.
Den Kd-Wert würde ich zu Anfang auf 0 setzen und erst mal als reinen PI-Regler betreiben. Erst wenn man gute Werte für Kp und Ki gefunden hat und der Stellwert sicher im Bereich 0..100% liegt, würde ich, falls noch nötig, vorsichtig an der Kd-Schraube drehen.
Gruß,
Stefan K.
Stefan K.
-
- Reactions:
- Beiträge: 424
- Registriert: Mo Aug 13, 2018 6:31 pm
- Hat sich bedankt: 192 Mal
- Danksagung erhalten: 147 Mal
Sehr schön dargestellt, wäre vielleicht auch etwas für die Knowledgebase!
Und es gilt wie immer: Regler parametrisieren ist häufig eher Kunst als Wissenschaft... Der D-Anteil des Reglers soll ja die Reaktion auf schnelle Änderungen ermöglichen, daher denke ich auch nicht, dass er bei einer Regelung der Raumtemperatur benötigt wird!
Und es gilt wie immer: Regler parametrisieren ist häufig eher Kunst als Wissenschaft... Der D-Anteil des Reglers soll ja die Reaktion auf schnelle Änderungen ermöglichen, daher denke ich auch nicht, dass er bei einer Regelung der Raumtemperatur benötigt wird!
TWS 2500 ID: 145 + 1x TP-UART + 2x DS9490R, VPN geschlossen, Reboot nach Absprache / wiregate198 (im Ruhestand)
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Gerade notiert.
(Falls jemand Lust/Zeit hat: Mithilfe in der Logik Doku für die KB gerne erwünscht ).
In jedem Fall helfen Rückmeldungen und kurze Beschreibungen zu Logiken als Basis für die KB.
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Danke auch von meiner Seite. Habe es verstanden und spiele jetzt mit den Einstellungen und kann das von Dir beschriebene Float zu DPT5.001 jetzt bestätigen. Das hatte ich weiter oben missverstanden!
VG, Sven
VG, Sven
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Setze das mal auf gelöst.
@S. Kolbinger:
Heißt das, dass am Ausgang der Logik der gesamte Float bereicht dargestellt wird und erst bei der Konvertierung in den DPT auf 0 -100% beschränkt wird und dann auf 0-255 bei DPT 5.001 umgerechnet wird?
Oder ist das nur im Doctormodus so?
Ich finde das ein wenig verwirrend (und ungewöhnlich), schöner wäre es, wenn der Reglerausgang schon auf 0-100% gekappt wird, da ein Reglerausgang > 100 und <0 ja keinen Sinn macht.
Robert
@S. Kolbinger:
Heißt das, dass am Ausgang der Logik der gesamte Float bereicht dargestellt wird und erst bei der Konvertierung in den DPT auf 0 -100% beschränkt wird und dann auf 0-255 bei DPT 5.001 umgerechnet wird?
Oder ist das nur im Doctormodus so?
Ich finde das ein wenig verwirrend (und ungewöhnlich), schöner wäre es, wenn der Reglerausgang schon auf 0-100% gekappt wird, da ein Reglerausgang > 100 und <0 ja keinen Sinn macht.
Robert
Zuletzt geändert von Robert_Mini am Fr Mai 31, 2019 11:04 am, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 558 Mal
Hi Robert,
Um es ganz klar zu sagen:
Der PID-Regler wie er aktuell auswählbar ist, ist ein universeller Regler und möglichst allgemein gehalten.
Will man damit eine brauchbare Heizungsregelung realisieren, sind noch weitere Bausteine notwendig.
Wie du bereits erwähnt hast, muss man in der Logik eine Bereichseinschränkung des Stellwerts entsprechend des verwendeten Stellglieds vornehmen. Eventuell auch eine Offsetanpassung auf eine mittlere Einstellung (am besten nahe dem Wert für den eingeschwungenen Zustand der Regelung).
Ich werde mal eine erste Heizungsregel-Logik zusammenstellen. Könnte aber ein bis zwei Tage dauern, bin gerade noch anderweitig ( ) beschäftigt
Hinzugefügt nach 50 Minuten 29 Sekunden:
Noch nicht der Weisheit letzter Schluss, aber damit sollte es schon mal besser gehen:
Das ist korrekt. Die Logik-Engine -- genau wie auch der Dispatcher -- berücksichtigen nicht die eventuellen Einschränkung des Zielobjektes, z.B. durch den DPT.Robert_Mini hat geschrieben: ↑Fr Mai 31, 2019 11:00 am Heißt das, dass am Ausgang der Logik der gesamte Float bereicht dargestellt wird und erst bei der Konvertierung in den DPT auf 0 -100% beschränkt wird und dann auf 0-255 bei DPT 5.001 umgerechnet wird?
Da gebe ich dir vollkommen Recht. Umso mehr es in dem beschriebenen Fall zu einem wegdriften des Stellwertes durch den Integral-Anteil kommen kann, falls diese Einschränkung dem Regler nicht bekannt sind.Robert_Mini hat geschrieben: ↑Fr Mai 31, 2019 11:00 am Ich finde das ein wenig verwirrend (und ungewöhnlich), schöner wäre es, wenn der Reglerausgang schon auf 0-100% gekappt wird, da ein Reglerausgang > 100 und <0 ja keinen Sinn macht.
Um es ganz klar zu sagen:
Der PID-Regler wie er aktuell auswählbar ist, ist ein universeller Regler und möglichst allgemein gehalten.
Will man damit eine brauchbare Heizungsregelung realisieren, sind noch weitere Bausteine notwendig.
Wie du bereits erwähnt hast, muss man in der Logik eine Bereichseinschränkung des Stellwerts entsprechend des verwendeten Stellglieds vornehmen. Eventuell auch eine Offsetanpassung auf eine mittlere Einstellung (am besten nahe dem Wert für den eingeschwungenen Zustand der Regelung).
Ich werde mal eine erste Heizungsregel-Logik zusammenstellen. Könnte aber ein bis zwei Tage dauern, bin gerade noch anderweitig ( ) beschäftigt
Hinzugefügt nach 50 Minuten 29 Sekunden:
Noch nicht der Weisheit letzter Schluss, aber damit sollte es schon mal besser gehen:
Code: Alles auswählen
{
"Level": [
["$Reference","float",20.0],
["$Controlled","float",20.0],
["$Manipulate","float",0.0],
["$Kp","float",0],
["$Ki","float",0],
["$Kd","float",0],
["$Konst50","float",50.0],
["$Konst1","float",1.0],
["$Out","float",0.0],
["$VAR<Inhibit?>", "bool", false]
],
"Module": [
["Break", ["$VAR<Inhibit?>"] ],
["PID controller","$Reference","$Controlled","$Manipulate","$Kp","$Ki","$Kd"],
["Limiter","$Manipulate","$Manipulate",0,["-$Konst50","$Konst50"]],
["Polynomial","$Manipulate","$Out",["$Konst50","$Konst1"]]
],
"Input": [
["Soll","Soll-Wert","$Reference","c"],
["Ist","Ist-Wert","$Controlled","a"],
["Kp","Proportional-Term","$Kp","u"],
["Ki","Integral-Term","$Ki","u"],
["Kd","Diverential-Term","$Kd","u"],
["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u" ]
],
"Output": [
["Stell","Stellgröße","$Out","a"]
]
}
Gruß,
Stefan K.
Stefan K.