MC_AxCtrlAutoZero_BkPlcMc (ab V3.0)

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 1:

Der Funktionsbaustein führt einen automatischen Nullpunktabgleich aus. Dieser Baustein darf nur bei Nullschnitt-Ventilen verwendet werden.

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 2: Eingänge

VAR_INPUT
    Enable:         BOOL:=FALSE;
    EnableOnMoving: BOOL:=FALSE;
    OffsetLimit:    LREAL:=0.0;
    Tn:             LREAL:=0.0;
    Threshold:      LREAL:=0.1;
    Filter:         LREAL:=0.1;
END_VAR

Name

Typ

Beschreibung

Enable

BOOL

Dieser Eingang kontrolliert die Aktivität der Kompensation.

EnableOnMoving

BOOL

Dieser Eingang kontrolliert die Aktivität der Kompensation.

OffsetLimit

LREAL

[V] Der Wert in fZeroCompensation wird auf diesen Wert begrenzt.

Tn

LREAL

[s] Die Nachstellzeit der Kompensation. Dies ist die Zeit für eine Änderung um 10V. Es werden Werte >100s empfohlen.

Threshold

LREAL

[V] Parameter für das Done Signal.

Filter

LREAL

[s] Parameter für das Done Signal.

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 3: 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.

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 4: Ausgänge

VAR_OUTPUT
    Error:          BOOL;
    ErrorID:        UDINT;
    Active:         BOOL;
    Limiting:       BOOL;
    Done:           BOOL;
END_VAR

Name

Typ

Beschreibung

Error

BOOL

Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID

UDINT

Hier wird eine codierte Fehlerursache bereitgestellt.

Active

BOOL

Hier wird signalisiert, dass der Baustein den Wert von fZeroCompensation in ST_TcHydAxParam aktiv verstellt.

Limiting

BOOL

Hier wird signalisiert, dass der Wert von fZeroCompensation in ST_TcHydAxParam die von OffsetLimit festgelegte Grenze erreicht hat.

Done

BOOL

Hier wird ein Einpendeln des Offsetabgleichs signalisiert.

Aufgabe des Bausteins

Wenn ein Hydraulik-Zylinder bei abgeschaltetem Lageregler (kP=0.0) driftet oder bei aktivem Lageregler mit einem permanentem Schleppabstand neben dem Ziel steht kann dies bei Verwendung eines Nullschnitt-Ventils mit einer Offset-Kompensation korrigiert werden.

Ein Hydraulik-Zylinder steht dann still wenn er sich im Kraftgleichgewicht befindet. Im einfachsten Fall (Zylinder mit gleichen Flächen, keine äußeren Kräfte durch Gravitation oder einen Prozess) ist dieses Gleichgewicht dann erfüllt, wenn auf beiden Flächen gleiche Drücke anstehen. Bei einem Differential-Zylinder müssen sich hierzu die Drücke umgekehrt zu den Flächen verhalten. Bei äußeren Kräften sind diese einzubeziehen. Damit die erforderlichen Druckverhältnisse zustande kommen wird als Druckdifferenz ein Anteil des Systemdrucks benötigt. Dieser wird bei einem Nullschnitt-Ventil über die Druckverstärkungskennlinie definiert.

Eine weitere mögliche Ursache für einen Offset ist eine Differenz zwischen dem hydraulischen Nullpunkt des Ventils und dem logischen Nullpunkt der Ausgabe-Hardware. Hier handelt es sich um unvermeidbare Exemplarstreuungen.

Es wird also eine kleine Ansteuerung des Ventils von bis zu etwa ±0.5V benötigt. Nähere Angaben hierzu sind dem Datenblatt der Ventil- und Hardware-Hersteller zu entnehmen.

Verhalten des Bausteins: Freigabe-Logik

So lange das Enable des Bausteins oder die Reglerfreigabe der Achse FALSE sind wird der Baustein nicht Active. Der Vergleichswert für die Beobachtung der Kompensation wird initialisiert und die Zeitmessung für die Done Meldung wird zurückgesetzt.

Sind die Freigaben erfüllt und die Achse ist nicht im Idle Zustand (d.h. sie führt eine aktive Bewegung aus) wird nur noch die Zeitmessung für die Done Meldung zurückgesetzt.

Sind die Freigaben erfüllt und die Achse ist im Idle-Zustand wird der Block ‚Compensation&Timing‘ durchlaufen.

Unabhängig von diesen Vorbedingungen wird der Block ‚Feedback‘ durchlaufen.

Freigabe Logik:

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 5:

Verhalten des Bausteins: Compensation&Timing

Aus dem Schleppabstand und der Reaktion des Reglers wird ein Korrekturwert gebildet. Dabei wird die Bandbreite der möglichen Regler-Parametrierung der Achse berücksichtigt. Aus diesem Korrekturwert und Tn wird ein Delta (eine maximale Änderung der ZeroCompensation pro Zyklus) gebildet. Dabei legt Tn eine Rampenzeit für einen Anstieg um 10V fest. Das Delta wird so begrenzt, dass diese Rampensteigung nicht überschritten wird. So kann eine störend schnelle Änderung vermieden werden, bei der die Korrektur instabil wird. Es sind Werte >100 Sekunden zu empfehlen.

Für die Kompensation wird eine Toleranzschwelle verwendet. Hier wird LagAmpDx (Schwellwert des I-Anteils im Lageregler) verwendet.
Wenn der Korrekturwert größer/gleich der Toleranzschwelle ist und die Istgeschwindigkeit größer/gleich Null ist (d.h. der verbleibende Korrekturwert wird nicht bereits abgebaut) wird der Baustein Active und die Kompensation wird in jedem Zyklus um das beschriebene Delta reduziert.
Wenn der Korrekturwert kleiner/gleich der Toleranzschwelle ist und die Istgeschwindigkeit kleiner/gleich Null ist (d.h. der verbleibende Korrekturwert wird nicht bereits abgebaut) wird der Baustein Active und die Kompensation wird in jedem Zyklus um das beschriebene Delta erhöht.
Wenn der Korrekturwert absolut kleiner als die Toleranzschwelle ist wird Active FALSE.

Ist die Kompensation um mehr als Threshold vom Vergleichswert OldValue verschieden wird die Zeitmessung zurückgesetzt und die aktuelle Kompensation als neuer Vergleichswert aktualisiert. Andernfalls wird die Zeitmessung mit der Zykluszeit erhöht. So wird die Zeit erfasst, die benötigt wird um eine Änderung der Kompensation um mindestens Threshold anzusammeln.

Compensation&Timing:

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 6:

Verhalten des Bausteins: Feedback

Es wird eine Begrenzung der Kompensation auf ±OffsetLimit vorgenommen und an Limiting signalisiert.

Wenn die Zeitmessung bei aktivem Baustein die in Filter eingestellte Zeit erreicht wird Done gemeldet. Beispiel: Wenn als Threshold 0.05 und als Filter 2.0 eingestellt sind wird Done gemeldet, wenn die Kompensation innerhalb der letzten 2 Sekunden um weniger als 0.05V nachjustiert wurde.

Feedback

MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 7:
MC_AxCtrlAutoZero_BkPlcMc (ab V3.0) 8:

Die Begrenzung auf den von OffsetLimit festgelegten Wertebereich ist auch dann aktiv, wenn der Baustein nicht aktiv ist. Der Ausgang Limiting wird aktualisiert.

Der Wert OffsetLimit und ST_TcHydAxParam.fZeroCompensation werden als Offsetspannung betrachtet. Somit entspricht der Wert 10.0 einer Vollaussteuerung. In der Regel ist für OffsetLimit je nach Einsatzfall ein Wert zwischen 0.1 und 1.0 sinnvoll.

Integration des Bausteins in die Applikation

In der Aufrufreihenfolge der Bausteine einer Achse sollte ein MC_AxCtrlAutoZero_BkPlcMc Baustein unmittelbar vor dem MC_AxRtFinish_BkPlcMc Baustein stehen. Wird an Stelle der Einzelbausteine ein MC_AxStandardBody_BkPlcMc Baustein aufgerufen sollte der MC_AxCtrlAutoZero_BkPlcMc vor diesem Baustein aufgerufen werden.

Hinweis

Gefährliche Achsbewegung

Wenn beim Betrieb der Achse Situationen vorkommen, in denen die Achse eine Reglerfreigabe anstehen hat, aber nicht ihr normales Bewegungsverhalten zeigt ist es zwingend erforderlich, den MC_AxCtrlAutoZero_BkPlcMc Bausteins zu disablen. Denkbare Ursachen für eine solche Situation sind zum Beispiel das Anfahren eines Blocks mit oder ohne Übergang in eine Druckregelung oder ein Absenken oder Abschalten der Versorgung. Wird dies nicht beachtet kann der Wert von fZeroCompensation in ST_TcHydAxParam in willkürlicher Richtung bis zur festgelegten Begrenzung laufen. Sobald die Achse zu einem späteren Zeitpunkt wieder reaktionsfähig wird ist eine unter Umständen gefährliche Bewegung unvermeidbar. Das Positionierverhalten wird anschließend stark beeinträchtigt sein. Wird der Baustein ohne EnableOnMoving aufgerufen kann er den verstellten Offset dann unter Umständen nicht mehr automatisch korrigieren. Die Achse wird dann außerhalb des Zielfensters stehen bleiben und niemals oder zumindest erst nach einer erheblichen Zeit die Bewegung als abgeschlossen melden.

Bei Kombination mit einem MC_AxStandardBody_BkPlcMc Baustein werden alle Reaktionen des MC_AxCtrlAutoZero_BkPlcMc Bausteins um einen SPS Zyklus verzögert wirksam. In der Regel ist dies kein Problem. Sollte dieser Versatz störend sein müssen die Einzelbausteine für Encoder usw. verwendet und der MC_AxCtrlAutoZero_BkPlcMc Baustein unmittelbar vor dem MC_AxRtFinish_BkPlcMc Baustein aufgerufen werden.