FbPIDController

Gärtner

Level-2
Beiträge
49
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe schon immer den Fb_Control_PID_Adv in Codesys 2.3 eingesetzt für diese Aufgabe und hat gut Funktioniert. Nun, nachdem ich den Wechsel auf Codesys 3.5 vollzogen habe, musste ich feeststellen, dass der FbPIDController nicht wirklich regelt.

pidcontrollererweiterteeinstellungen.rOutputMin:=50;
pidcontrollererweiterteeinstellungen.rOutputMax:=100;
pidcontrollererweiterteeinstellungen.rPresetValueOff:=manuelleleistung;
pidcontrollererweiterteeinstellungen.rPresetValueOn:=manuelleleistung;
pidcontrollererweiterteeinstellungen.xPresetOff:=TRUE;
pidcontrollererweiterteeinstellungen.xPresetOn:=TRUE;
pidcontrollererweiterteeinstellungen.rKp:=5;
pidcontrollererweiterteeinstellungen.rTd:=5;
pidcontrollererweiterteeinstellungen.rTn:=1;
pidcontrollererweiterteeinstellungen.tCycleTime:=T#1S;
pidcontrollererweiterteeinstellungen.rDeadZone:=0.5;
pidcontrollererweiterteeinstellungen.xChangeInDirection:=FALSE;
reckpidregler(xEnable:= NOT manuelpidregler, rReferenceValue:=zielwert, rActualValue:=istuebergaberealinvers,rManualValue:=manuelleleistung,typConfigParameters:=pidcontrollererweiterteeinstellungen);

Zur Erklrärung mit der Ausgabe reckpidregler.wY_Analog wird ein 4-20mA Signal an ein BHKW zur Leistungregelung übergeben. Der Regelbereich beträgt 50%-100% der Leistung.
istuebergaberealinvers liefert den aktuellen Strombezug am Trafo. 0 entspräche dabei 500kW Bezug und 32767 entspricht dann 500kW Einspeisung. Der Zielwert ist 16750.
In der Vergangenheit haben solche Pid Regler für dieses Setting brauchbare Ergebnisse geliefert ohne Parameter feintuning. Aktuell scheine ich jedoch den Wald vor lautern Bäumen nicht zu sehen. Sobald der Reference Wert unter dem Zielwert sinkt, erhalte ich 32767 als Ergebnis und sobald der Wert über dem Sollwert ist erhlate ich die 50% also 16384 aber nie einen Wert dazwischen. Die verschiedenen Parameter habe ich schon in verschiedener Kombination geändert.
Hat jemand einen Hinweis?
 
Hi,

solche Bausteine richtig zu verwenden ist nicht immer leicht, auch da man nicht weiß was der jeweilige Programmierer für Überlegungen dazu angestellt hat. Dazu kommt, daß der Verstärkungsfaktor Kp sehr stark von den Dimensionen der Eingangsgrößen aber auch der Ausgangsgröße abhängig ist.

Schlussendlich sollte das über die dazugehörige Dokumentation herauslesen können. Leider ist diese oftmals nur sehr dürftig.

Zunächst einmal hast Du eine Zykluszeit von 1s angegeben, wird der Baustein wirklich nur im Sekundenraster aufgerufen?

Dann gibst Du immer sehr große Werte, z.B. 16384 und 32767, an. Werden diese Werte wirklich an die Bausteineingänge angelegt (Soll- und Istwert) oder rechnest Du die vorher noch in andere Werte um? Falls letzteres, dann gibt doch bitte nur diese Werte an. Falls ersteres woher soll der Regler wissen, das mit 32767 100% gemeint sind. Falls der Regler dann intern mit z.B. 100% als Zahlenwert arbeitet, dann sind selbst kleine 'Differenzen' gleich sehr hohe Werte. Gib also bitte mal die Werte an die wirklich an den Baustein gegeben werden oder zeige einen Screenshot davon.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
danke für die Rückmeldung. Die grundsätzliche Problematik ist mir bekannt.
Nach vielen versuchen habe ich den Regler getauscht auf:
Building.Util.PID_FIXCYCLE

dieser liefert bei den gleichen Parametern nun "brauchbare" Werte.
Das Problem ist, dass ich die Leistung des BHKW regel, welches darin sehr Träge ist. Gleichzeitig können sich Verbraucher kurzfristig zuschalten oder wegschalten. Im Grund habe ich ein Wert, welcher sich extemschnell ändert und den ich langsam beeinflussen kann.
Deswegen Glätte ich den Wert zusätzlich. In der Summer lief das in der Vergangenheit gut. Jetzt gerade sieht das auch vielversprechend aus. ABer genaueres werde ich sehen, wenn ich mir das Ergebnis über mehrere Tage und vor allem Nächste ansehe.
Interessanter Weise habe ich nach einigem preobieren wieder die gleichen Parameter wie in meinem 2.3er Projekt mit einem anderen Regler ;)

Ich muss mich noch ein wneig in Codesys 3.5 reinfinden. Gefällt mir immer besser, je mehr ich es kennen lerne. Jetzt spiele ich schon mit dem Gedanken alle Steuerungen nach 3.5 zu wechseln.
 
Wie sind denn die Parameter Td und Tn zu interpretieren? Mit den Werten "5" und "1" können das ja weder Sekunden noch Millisekunden sein?
 
Hallo,
von mir noch mal Rückmeldung. Ich habe diverde PID Regler probiert und mich auch intensiver mit der Regellogik beschäftigt.
Am Ende ist es dann doch wieder der FbPIDController aus der Wago Bibliothek geworden.
Der Fehler lag in den Parametern.
mit tN=10 tD=0 kP=5 bin ich im Moment zufrieden. Ich nutze also nur einen PI Regler. Ich werde nun noch mal mit dem d-Wert spielen.
Leider kann ich den nur Nachts testen, bzw das Ergebnis am nächsten Tag auswerten. Deswegen braucht jeder Test 24h :)
 
Zurück
Oben