MC_Home_BkPlcMc (ab V3.0)
Der Funktionsbaustein startet und überwacht die Referenzfahrt einer Achse.
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) |
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
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:
- Eine Referenzfahrt kann nur aus einem fehlerfreien Stillstand begonnen werden. Ist dies nicht der Fall wird mit Error und ErrorID:=dwTcHydErrCdNotStartable bzw. dem vorliegenden Errorcode reagiert.
- Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stopp-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
- Wenn eine der in den Achs-Parametern angegebene Geschwindigkeiten zu klein (weniger als 1% der Referenzgeschwindigkeit) ist wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.
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.
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.