MC_AxCtrlSlowDownOnPressure_BkPlcMc (ab V3.0)
Der Funktionsbaustein bremst eine Achse so ab, dass in dem durch ReadingMode ausgewählten Istwert ein gewünschter Vorgabewert nicht überschritten wird. Dabei gelten die Regeln der ablösenden Druckregelung.
Die Erfassung des Istdruck kann in den meisten Fällen mit Bausteinen vom Typ MC_AxRtReadPressureSingle_BkPlcMc oder MC_AxRtReadPressureDiff_BkPlcMc erfolgen.
Eingänge
VAR_INPUT
EnableP: BOOL:=FALSE;
EnableM: BOOL:=FALSE;
Reset: BOOL:=TRUE;
FirstAuxParamIdx: INT:=0.0;
kP: LREAL:=0.0;
Tn: LREAL:=0.0;
PreSet: LREAL:=0.0;
ReadingMode: E_TcMcPressureReadingMode:=iTcHydPressureReadingDefault;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
EnableP | BOOL | Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Ausgabewert bei einer Bewegung in positiver Richtung zu beeinflussen. |
EnableM | BOOL | Durch ein TRUE an diesem Eingang wird dem Regler erlaubt, den Ausgabewert bei einer Bewegung in negativer Richtung zu beeinflussen. |
Reset | BOOL | Durch ein TRUE an diesem Eingang wird der Regler zurückgesetzt. Der Speicher des I-Anteils wird abgelöscht. |
FirstAuxParamIdx | INT | Hier kann ein Bereich in den Axis_Ref_BkPlcMc.ST_TcHydAxParam.fCustomerData als Parameter-Interface aktiviert werden. |
kP | LREAL | Der Verstärkungsfaktor des P-Anteils. |
Tn | LREAL | Die Nachstellzeit des I-Anteils. |
PreSet | LREAL | Hier kann ein Voreinstellwert festgelegt werden, mit dem ein Initialwert für den I-Anteil des Reglers berechnet wird. Auf diesen Wert wird der I-Anteil bei Aktivierung vorgeladen. |
ReadingMode | E_TcMcPressureReadingMode | Hier kann die zu regelnde Istgröße festgelegt werden. Als Defaultwert wird Axis_Ref_BkPlcMc.ST_TcHydAxRtData.fActPressure ausgewählt. |
Ein-/Ausgänge
VAR_INOUT
Axis: Axis_Ref_BkPlcMc;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Axis | Axis_Ref_BkPlcMc | Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben. |
Ausgänge
VAR_OUTPUT
Response: LREAL;
Active: BOOL;
Error: BOOL;
ErrorID: UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Response | LREAL | Der Ausgabewert des Druckreglers. |
Active | BOOL | Ein TRUE an diesem Ausgang signalisiert, dass der Baustein einen Response erzeugt, um die Druckregelung zu übernehmen. |
Error | BOOL | Hier wird das Auftreten eines Fehlers signalisiert. |
ErrorID | UDINT | Hier wird eine codierte Fehlerursache bereitgestellt. |
Verhalten des Bausteins
Durch ein TRUE an Reset wird der Baustein unabhängig von den anderen Steuersignalen in einen Ruhezustand versetzt. Dann ist ActiveFALSE und Response := 0.0, weil sowohl der P- als auch der I-Anteil gelöscht sind.
Der Eingang ReadingMode legt fest, welche Variable in der stAxRtData Struktur die zu regelnde Größe enthält.
- iTcHydPressureReadingDefault, iTcHydPressureReadingActPressure: fActPressure wird geregelt.
- iTcHydPressureReadingActForce: fActForce wird geregelt.
- jeder andere Wert deaktiviert den Regler.
Der Sollwert ist in fSetPressure in der stAxRtData Struktur der Achse vorzugeben. |
Das Verhalten des Bausteins wird im aktiven Betrieb durch die Eingänge EnableP und EnableM festgelegt. Sie legen fest, ob der Baustein bei einer Bewegung in positiver oder negativer Richtung eingreifen soll. Es ist dabei zu beachten, dass der Baustein die Aufgabe hat, einer aktiven Fahrbewegung entgegen zu wirken. Wenn also eine Fahrbewegung in positiver Richtung ausgeführt wird, die einen festgelegten Druck nicht überschreiten soll ist EnableP zu setzen. Bei entgegengesetzter Fahrtrichtung gibt EnableM eine druckbegrenzende Reglerreaktion in positiver Richtung frei.
Zunächst ermittelt der Baustein, ob er den aktiven Zustand annehmen oder beenden muss. Dazu werden die Signale EnableP, EnableM, das Vorzeichen von ST_TcHydAxRtData.fSetSpeed und die Differenz zwischen SetPressure und dem ausgewählten Istwert ausgewertet.
Beim Übergang in den aktiven Zustand wird der I-Anteil mit PreSet initialisiert. Dabei wird er mit einem Startwert geladen, der in Kombination mit ST_TcHydAxRtData.fSetSpeed den Wert von PreSet ergibt. Wenn der zu SetPressure passende Ausgabewert bekannt ist kann dies für ein schnelleres Erreichen des ausgeregelten Zustands genutzt werden. In der Praxis sollte die Wahl dieses Parameters vom Verhalten der Regelstrecke abhängig gemacht werden. Diese ist vor allem durch die Nachgiebigkeit des eingepressten Objekts, aber auch durch die gewählte Geschwindigkeit beeinflusst. Ist der Anstieg im Vergleich zur verwendeten Tn eher langsam sollte als Vorgabe der aktuelle Stellwert aus ST_TcHydAxRtData.fSetSpeed verwendet werden. Reagiert der Istdruck mit einem schnellen Anstieg ist ein Wert zu empfehlen, der den Solldruck und die Druckverstärkung des Ventils berücksichtigt.
Anschließend wird mit kP ein P-Anteil und mit Tn ein I-Anteil berechnet. Die Summe dieser Regler-Anteile wird als Response ausgegeben und der Zustand des Reglers mit TRUE an Active signalisiert.
Der Übergang in den inaktiven Zustand führt zu einem Löschen der Regleranteile und wird mit FALSE an Active markiert.
Integration des Bausteins in die Applikation
Ein Baustein dieses Typs muss nach der Istwert- und Istdruck-Erfassung und nach der Stellwert-Generierung aufgerufen werden. Werden Bausteine zur Geschwindigkeit- oder Positionsregelung aufgerufen sind diese ebenfalls vor dem Druckregler-Baustein zu platzieren oder die Reaktionen der Regler sind mit entsprechender Sorgfalt zu koordinieren.
Der Druckregler berechnet zwar eine Reaktion, trägt sie aber nicht in die ST_TcHydAxRtData Struktur ein. Dies ist von der Applikation in Abhängigkeit von Active und unter eventueller Berücksichtigung von Signalen anderer Regler zu tun. In der Regel wird dabei Response auf die Variable ST_TcHydAxRtData.fLagCtrlOutput zugewiesen. Der nach dem Reglerbaustein zu platzierende MC_AxRtFinish_BkPlcMc Baustein berücksichtigt die Reaktion dann automatisch.
Durch einen Wert größer als 0 in FirstAuxParamIdx kann der Baustein veranlasst werden drei aufeinander folgende Werte in den fCustomerData der Parameter-Struktur als Tn, kP und PreSet zu verwenden. Ist in Axis.pStAxAuxLabels die Adresse eines geeigneten ARRAY[..] OF STRING() eingetragen werden die Parameter automatisch mit einer Bezeichnung versehen. |