MC_Home_BkPlcMc (ab V3.0)

MC_Home_BkPlcMc (ab V3.0) 1:

Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse.

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

VAR_INPUT
    Execute:        BOOL;
    Position:       LREAL;
    HomingMode:     MC_HomingMode_BkPlcMc;
    CalibrationCam: BOOL;
    BufferMode:     MC_BufferMode_BkPlcMc:=Aborting_BkPlcMc;    (ab/from V3.0.8)
END_VAR

Name

Typ

Beschreibung

Execute

BOOL

Eine steigende Flanke an diesem Eingang startet die Referenzfahrt.

Position

LREAL

[mm] Die Referenzposition.

HomingMode

MC_HomingMode_BkPlcMc

Hier wird die zu verwendende Methode festgelegt.

CalibrationCam

BOOL

Hier kann der Referenzierindex (Nocken) direkt übergeben werden.

BufferMode

MC_BufferMode_BkPlcMc

reserviert. Dieser Eingang wurde vorbereitend ergänzt und sollte derzeit nicht oder mit der Konstanten Aborting_BkPlcMc belegt werden. (ab V3.0.8)

MC_Home_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_Home_BkPlcMc (ab V3.0) 4: Ausgänge

VAR_OUTPUT
    Busy:           BOOL;
    Done:           BOOL;
    CommandAborted: BOOL;
    Error:          BOOL;
    ErrorID:        UDINT;
END_VAR

Name

Typ

Beschreibung

Busy

BOOL

Hier wird signalisiert, dass ein Kommando abgearbeitet wird.

Done

BOOL

Hier wird die erfolgreiche Abarbeitung der Referenzfahrt signalisiert.

CommandAborted

BOOL

Hier wird ein Abbruch der Referenzfahrt signalisiert.

Error

BOOL

Hier wird das Auftreten eines Fehlers signalisiert.

ErrorID

UDINT

Hier wird eine codierte Fehlerursache bereitgestellt.

Verhalten des Bausteins

Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:

Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten wird die Referenzfahrt initiiert. Der genaue Ablauf wird von HomingMode festgelegt. Sollte während der Abarbeitung der Referenzfahrt vom Bewegungsalgorithmus ein Fehlercode signalisiert wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Referenzfahrt durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Ein erfolgreicher Abschluss der Referenzfahrt wird mit Done gemeldet.

Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Referenzfahrt auf FALSE gesetzt wird die eingeleitete Referenzfahrt unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done) werden für einen Zyklus gegeben.

Hinweis Wenn die Applikation nicht selbst eine Referenzposition festlegt, sondern ein mit den Maschinendaten abgespeicherter und geladener Wert Verwendung finden soll ist die Benutzung von fEnc_DefaultHomePosition in pStAxParams vorgesehen. Sollten situationsabhängig verschiedene Werte benötigt werden, sollte auf fCustomerData[] in pStAxParams zurückgegriffen werden.

Ist als Encoder-Typ iTcMc_EncoderSim eingestellt, wird unabhängig von HomingMode und Axis_Ref_BkPlcMc.stAxParams.nEnc_HomingType der Modus MC_Direct_BkPlcMc wirksam.

MC_DefaultHomingMode_BkPlcMc

Die Referenziermethode wird nicht durch die Applikation sondern durch Axis_Ref_BkPlcMc.stAxParams.nEnc_HomingType festgelegt. Dabei gelten die folgenden Regeln:

nEnc_HomingType

MC_HomingMode_BkPlcMc

iTcMc_HomingOnBlock

MC_Block_BkPlcMc

iTcMc_HomingOnIndex

MC_AbsSwitch_BkPlcMc

iTcMc_HomingOnSync

MC_RefPulse_BkPlcMc

iTcMc_HomingOnExec

MC_Direct_BkPlcMc

MC_AbsSwitch_BkPlcMc

Die Achse wird mit Axis_Ref_BkPlcMc.stAxParams.fEnc_RefIndexVelo in der durch bEnc_RefIndexPositive festgelegten Richtung bewegt. Nimmt CalibrationCam den Zustand TRUE an oder wird in Axis_Ref_BkPlcMc.stAxRtData.nDeCtrlDWord die Referenznocke (Bit 5, dwTcHydDcDwRefIndex) erkannt stoppt die Achse. Anschließend wird sie mit fEnc_RefSyncVelo in der durch bEnc_RefSyncPositive festgelegten Richtung bewegt, bis die Referenznocke wieder verlassen wird. Der Istwert der Achse wird auf den Wert der Referenzposition gesetzt.

MC_LimitSwitch_BkPlcMc

Derzeit nicht unterstützt.

MC_RefPulse_BkPlcMc

Die Achse wird mit Axis_Ref_BkPlcMc.stAxParams.fEnc_RefIndexVelo in der durch bEnc_RefIndexPositive festgelegten Richtung bewegt. Nimmt CalibrationCam den Zustand TRUE an oder wird in Axis_Ref_BkPlcMc.stAxRtData.nDeCtrlDWord die Referenznocke (Bit 5, dwTcHydDcDwRefIndex) erkannt stoppt die Achse. Anschließend wird sie mit fEnc_RefSyncVelo in der durch bEnc_RefSyncPositive festgelegten Richtung bewegt, bis die Referenznocke wieder verlassen wird. Dann wird das Hardware-Latch des Encoders aktiviert und die Achse so lange weiter bewegt, bis das Latch gültig wird. Nach dem Stoppen der Achse wird der Istwert der Achse auf einen Wert gesetzt, der aus der Referenzposition und der seit dem Sync-Puls des Encoders zurückgelegten Strecke errechnet wird.

MC_Direct_BkPlcMc

Der Istwert der Achse wird unmittelbar auf den Wert der Referenzposition gesetzt.

MC_Absolute_BkPlcMc

Derzeit nicht unterstützt.

MC_Block_BkPlcMc

Die Achse wird mit Axis_Ref_BkPlcMc.stAxParams.fEnc_RefIndexVelo in der durch bEnc_RefIndexPositive festgelegten Richtung bewegt. Wird für eine Zeitdauer von 2 Sekunden keine Bewegung festgestellt, gilt der Festanschlag (Block) als erreicht. Der Istwert der Achse wird auf den Wert der Referenzposition gesetzt.

Ab einer Version 3.0.41 vom 12.10.2017 ist es möglich, die Zeitdauer für die Erkennung des Blocks zu verändern. Siehe hierzu ST_TcHydAxRtData.fBlockDetectDelay.

MC_FlyingSwitch_BkPlcMc

Derzeit nicht unterstützt.

MC_FlyingRefPulse_BkPlcMc

Derzeit nicht unterstützt.