Normierung PI Regler Ausgabewert

Fetzi49

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe ein kleines Problem mit der Normierung des Ausgabewertes meines Software PI Regler aus der Oscat Lib.
Ich benutze den Baustein CTRL_PI in Beckhoff TwinCat 3.
Mein PI Regler soll über eine Geschwindigkeit (Istwert Vorgabe in U/min) sowie über einen Sollwert der über eine Rampe ebenfalls in U/min vorgegeben wird ein Hydraulik PWM Ventil Steuern.
Die Funktion des Hydraulikventils ist wie folgt : Wenn sich das Ventil öffnet erhöhe ich die Drehzahl (max Wert 200 Bar), schließe ich das Ventil verringere ich die Drehzahl (min Wert 0 Bar).
Also mein Problem ist das bei der Normierung des Ausgabe wertes irgendwie ständig nur Unsinn rausbekomme damit habe wie normiere ich den PI Ausgabewert (Realwert) in Bar ?
Sorry aber irgendwie kriege ich das nicht wirklich hin hat jemand von euch einen Denkanstoß oder einen Lösungsansatz ?
PI_Regler_Oscat(
ACT:= Act_value_rpm,
SET:= Nominal_value_rpm,
SUP:= 0.1,
OFS:= 0.0,
M_I:= 0.0,
MAN:= Man,
RST:= Reset,
KP:= 1.0,
KI:= 0.0,
LL:= 0.0,
LH:= 200.0,);

PI_Regler_Oscat.y ; (*Ausgabewert in REAL für das PWM Ventil*)
PI_Regler_Oscat.DIFF; (*Ausgabewert Regeldifferenz in REAL*)
PI_Regler_Oscat.LIM; (*Ausgabe in BOOL Limit erreicht*)
 
Ich vermute, Dein Regler gibt aus, wann und wie lange das Ventil weiter aufgefahren bzw. zugefahren werden muss.
Da wirst Du den Zusammenhang zwischen dem ReglerAusgang und dem Ergebnis in bar lange suchen können bzw. integrieren müssen.
Wäre es nicht sinnvoller, den Istwert weiter zu verarbeiten?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Heinileini,
der Regler gibt mir am Ausgang (Y) einen Realwert aus welcher über die Eingänge LL und LH limitiert ist.
Meine Idee war nun den Ausgabewert direkt über einen Analogwert auf meine PWM Sollwert zu geben und somit das Ventil zu Regeln.
Wenn Ich direkt die Drehzahl weiterverarbeite muss ich diese ja auch wieder wandeln ich dachte die Variante mit der direkten Wertnomierung wäre vielleicht die
elegantere Lösung ?
 
Du willst eine Drehzahl regeln und Änderungen der Drehzahl gibst Du über den Sollwert vor, den Du langsam veränderst (Rampe).
So weit, so klar.
Die Drehzahl beeinflusst Du per PWM über ein Hydraulik(Proportional?)Ventil.
Wie wird das Ventil angesteuert?
Die PWM wandelt einen Zahlenwert (z.B. 16 Bit) oder einen AnalogWert (z.B. 0V .. 10V) in 1 Bit (Ein/Aus) und variiert das Verhältnis von EinschaltDauer zur PeriodenLänge (= EinschaltDauer + AusschaltDauer).
Was macht das Ventil mit dieser Information?
Musst Du dem Ventil eine Spannung vorgeben, die z.B. besagt bei 10V Ventil zu 100% öffnen und bei 0V zu 0%? Ist Das Ventil überhaupt in der Lage, das PWM-Signal in einen Analogwert zu wandeln?
Oder gibst Du vor, das Ventil soll jetzt aufgefahren werden bzw. zugefahren und wenn Du das Ventil in der aktuellen Stellung stehen lassen willst, gibst Du nichts mehr an das Ventil aus?
Wer oder was macht jetzt aus der VentilEinstellung, die also irgendwie einen Druck (bar) beeinflusst, noch die Umwandlung in Drehzahl? Treibst Du eine Turbine an?
Irgendwie ist mir noch reichlich unklar, wie die Zusammenhänge sind.

PS:
Was meinst Du überhaupt mit PWM Ventil? Macht das Ventil die Umwandlung in Ein/Aus?
Am besten wäre mal eine Skizze, dass man sehen kann, was wo ist, was in der PLC realisiert werden muss, was ausserhalb der PLC vorhanden ist und angesteuert werden muss und, wo das Problem der Normierung mit den unsinnigen Werten auftritt.
Hast Du eine digitale Schnittstelle zur Peripherie? Das PWM-Signal? Oder eine analoge?
 
Zuletzt bearbeitet:
Hallo,


Du beschreibst das alles ziemlich unglücklich.


Erst schreibst Du von Geschwindigkeit und gibst dann U/min an,Ok damit kann man leben. Später sprichst Du von Drehzahl in Bar, das paßt nun gar nicht.


Ich vermute mal Deine max. Drehzahl stellt sich bei max. Druck von 200 Bar ein. Die erreichst Du, wenn das Ventil zu 100% (PWM) angesteuert wird. Die minimale Drehzahl dann entsprechend bei 0 Bar und 0% Ansteuerung des Ventils.


Jetzt zu Deinen Einstellwerten. Mit KP= 1.0 und KI=0.0 hast Du einen P-Regler, der I-Anteil ist deaktiviert.
Mit dem Faktor 1 bedeutet das jetzt bei Dir, daß 1 U/min Unterschied zu einem 1 Bar am Ausgang wird. Da gibt es jetzt aber das Problem, daß Du nur positive Werte am Ausgang zuläßt (zwischen 0 und 200 Bar), d.h. der Regler gibt nur Werte größer 0 raus, wenn die Differenz größer 0 ist, sonst nur 0.
Nun arbeitet ein P-Regler nur, wenn eine Differenz zwischen Soll- und Istwert vorhanden ist. Das bedeutet, daß wenn Soll=Ist Drehzahl ist am Reglerausgang 0 liegt. Das funktioniert nur, wenn Du ein Stellglied mit I-Verhalten hast, nach Deiner unvollständigen Beschreibung ist das wohl aber nicht der Fall. Daher solltest Du auch den I-Anteil des Reglers aktivieren. Sonst hast du eine bleibende Regelabweichung.

Am besten auch noch den Offset auf die Mitte des Ausgangsbereichs (hier 100) legen.

Sieh Dir am besten mal die Grafik im Oscat Handbuch zum Regler an und dann rechne ein paar Beispiele von Hand durch.


Ansonsten, wie schon gesagt, mußt Du mehr Informationen liefern.


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun arbeitet ein P-Regler nur, wenn eine Differenz zwischen Soll- und Istwert vorhanden ist. Das bedeutet, daß wenn Soll=Ist Drehzahl ist am Reglerausgang 0 liegt.
Ich kenne den OSCAT-Regler nicht, doch üblicherweise erhöht ein Regler schrittweise den Ausgang (Stellwert) solange bis Istwert=Sollwert. Wenn Istwert>Sollwert, dann wird der Stellwert verringert. Wenn Istwert=Sollwert, dann bleibt der Ausgang wie er ist (weil dann hat er den passenden Arbeitspunkt genau getroffen)

Also mein Problem ist das bei der Normierung des Ausgabe wertes irgendwie ständig nur Unsinn rausbekomme damit habe wie normiere ich den PI Ausgabewert (Realwert) in Bar ?
Wie gibst Du den Sollwert oder Stellwert an das Ventil? Direkt als digitaler Zahlenwert 0 - 200 über einen Feldbus oder andere Datenkommunikation? Oder über einen Analogausgang? Was gibt der Analogausgang aus? Vielleicht 0 - 32000 entspricht 0 - 10V? Was für einen Eingang hat das Stellventil (0-10V oder 4-20mA oder ...)? Dein OSCAT-Reglerbaustein soll am Ausgang 0.0 - 200.0 ausgeben? Üblicherweise verwendet man 0.0 - 100.0 (%) oder 0.0 - 1.0 (normiert), das lässt sich leichter verstehbar zu einem Analog-Stellwert umrechnen. Wie erhältst Du die Ist-Drehzahl? Ist das ein Analogeingang der erst in Drehzahl umgerechnet werden muß? Hinweis: Sollwert und Istwert müssen die selbe physikalische Größe sein, man kann nicht Bar mit U/min oder Volt mit Bar oder MilliBar mit Bar oder Äpfel mit Birnen vergleichen, weil dann könnte nie "Istwert = Sollwert" rauskommen.

Harald
 
Der Regler im Startpost ist als reiner P-Regler mit einem KP von 1,0 beschaltet.
Was bedeutet das für einen statischen Test: Bei einer Differenz von 10,0 zwichten ACT und SET ist der Ausgang auch 10,0.
Der Reglerausgang ist durch LL (LowLimit) und LH (Highlimit) begrenzt auf 0.0...200.0. Eine Skalierung findet nicht statt.
Über SUP wird der Ausgang für eine Regeldifferenz von +/-0.1 auf 0 gehalten (Rauschunterdrückung).

Der OSCAT-Regler an sich ist schön einfach strukturiert und funzt. Eventuell wichtig wäre noch: Er berechnet selbst die vergangene Zeit, gibt also rechnerisch korrekte Werte für den D/I-Anteil aus. Entscheidend ist aber dennoch die Aufrufzeit im Sinne der "Abtastzeit".

Übrigens: Bei der Regelaufgabe muss ich passen. Ich habe nicht verstanden wo vorn und hinten ist.

Edit: Für die Mathematiker die Übertragungsfunktion Y = KP * DIFF + KI * INTEG(DIFF) + OFFSET
wobei DIFF = SET_POINT – ACTUAL aus der OSCAT-Doku

Eine Ausgangsskalierung im Sinne einer Stellgliedanpassung muss also separat nachgeschaltet werden. Man kann es aber durch geeignete Wahl von KP iVm LL und LH auch erledigen.
 
Zuletzt bearbeitet:
Zurück
Oben