Homing
![]() | Corefunction wird nicht von Umrichterachsen unterstützt Diese Corefunction wird von Umrichterachsen nicht unterstützt. Jede Verwendung wird DEVICE_NOTINIT melden und eine Fehlermeldung auslösen. |

Die Eigenschaft bietet einen Zugang zu einer Reihe von Homing-Funktionen.
Alle diese Funktionen gehören zur Gruppe der flankengesteuerten Kernfunktionen.
Es gibt zwei Gruppen von Homing-Funktionen: Einleitende oder weiterführende Funktionen (AbsoluteSwitch, AbsoluteSwitchDetect, Block, BlockDetect, LimitSwitch, LimitSwitchDetect) und beendende Funktionen (Abort, Finish).
Das Auslösen einer Funktion der ersten Gruppe ändert das Verhalten der Achse, indem der Homing-Modus aktiviert wird. Wenn diese Änderung bereits von einer anderen Funktion dieser Gruppe durchgeführt wurde, hat dies keine Auswirkungen. In diesem Modus deaktiviert die zugrundeliegende Bewegungstechnologie eine Reihe von Mechanismen wie Schleppüberwachung, Geschwindigkeitsvorsteuerung, Software-Positionsendschalter usw.
Hinweis | |
Unerwartetes Verhalten Achsen im Homing-Modus reagieren möglicherweise auf unerwartete Weise auf Bewegungskommandos. |
Als letzter Schritt eines Homing-Ablaufs werden die Funktionen der zweiten Gruppe verwendet, um den Homing-Modus zu beenden und die Achse in ein normales Verhalten zu versetzen.
Syntax:
FUNCTION_BLOCK FB_HomingMain
Eigenschaften
Name | Typ | Zugriff | Beschreibung |
---|---|---|---|
I_HomingAbort | Get | Ein aktives Homing wird erfolglos abgebrochen. | |
I_HomingAbsoluteSwitch | Get | Das Homing wird an einer von einem binären Sensor gemeldeten Position durchgeführt. | |
I_HomingAbsoluteSwitchDetection | Get | An einer von einem binären Sensor gemeldeten Position wird die Istposition festgehalten. | |
I_HomingBlock | Get | Das Homing wird an einem mechanischen Anschlag durchgeführt. | |
I_HomingBlockDetection | Get | An einem mechanischen Anschlag wird die Istposition festgehalten. | |
I_HomingFinish | Get | Ein aktives Homing wird erfolgreich abgeschlossen. | |
I_HomingLimitSwitch | Get | Das Homing wird an einer von einem Hardware-Endschalter gemeldeten Position durchgeführt. | |
I_HomingLimitSwitchDetection | Get | An einer von einem Hardware-Endschalter gemeldeten Position wird die Istposition festgehalten. |
Schnittstellen
Typ | Beschreibung |
---|---|
I_HomingMain | Standardschnittstelle auf FB_HomingMain. |
Beispiel:
CASE nState OF
0: // parameterise homing functions
// homing block
iAxisBase.Homing.Block.SetParameterGeneral(
eDirection := E_AdaptableHomingDirection.eNegative,
fVelocity := 20.0,
fAcceleration := 0.0,
fDeceleration := 0.0,
fJerk := 0.0,
tTimeLimit := T#60S,
fDistanceLimit := 800.0,
fTorqueLimit := 0.0
);
iAxisBase.Homing.Block.SetParameter(
fSetPosition:=0.0,
fDetectionVelocityLimit:=5.0,
tDetectionVelocityTime:=T#0.5S,
fTorqueTolerance:=0.0,
bOptionsDisableDriveAccess := TRUE,
bOptionsInstantLagReduction := TRUE,
bOptionsTorquePolarityInverted := FALSE
);
// homing block detect
iAxisBase.Homing.BlockDetect.SetParameterGeneral(
eDirection:=E_AdaptableHomingDirection.ePositive,
fVelocity:=50.0,
fAcceleration:=0.0,
fDeceleration:=0.0,
fJerk:=0.0,
tTimeLimit:=T#60S,
fDistanceLimit:=800.0,
fTorqueLimit:=0.0
);
iAxisBase.Homing.BlockDetect.SetParameter(
fDetectionVelocityLimit:=5.0,
tDetectionVelocityTime:=T#0.25S,
fTorqueTolerance:=0.0,
bOptionsDisableDriveAccess := FALSE,
bOptionsInstantLagReduction := TRUE,
bOptionsTorquePolarityInverted := FALSE
);
// homing finish
iAxisBase.Homing.Finish.SetParameter(
fDistance:=-20.0,
fVelocity:=50.0,
fAcceleration:=0.0,
fDeceleration:=0.0,
fJerk:=0.0,
bOptionsDisableDriveAccess := FALSE
);
// start with homing on block
IF FAILED(iAxisBase.Homing.Block.DoHoming(TRUE)) THEN
nState := -1;
ELSE
nState := nState + 1;
END_IF
1: // after block, start block detect
IF iAxisBase.Homing.Block.FailedState THEN
nState := -1;
ELSIF iAxisBase.Homing.Block.DoneState THEN
iAxisBase.Homing.Block.DoHoming(FALSE);
IF FAILED(iAxisBase.Homing.BlockDetect.DoHoming(TRUE)) THEN
nState := -1;
ELSE
nState := nState + 1;
END_IF
END_IF
2: // after blcok detect, finish
IF iAxisBase.Homing.BlockDetect.FailedState THEN
nState := -1;
ELSIF iAxisBase.Homing.BlockDetect.DoneState THEN
iAxisBase.Homing.BlockDetect.DoHoming(FALSE);
IF FAILED(iAxisBase.Homing.Finish.DoFinish(TRUE)) THEN
nState := -1;
ELSE
nState := nState + 1;
END_IF
END_IF
3: // waiting for finish
IF iAxisBase.Homing.Finish.FailedState THEN
nState := -1;
ELSIF iAxisBase.Homing.Finish.DoneState THEN
iAxisBase.Homing.Finish.DoFinish(FALSE);
nState := nState + 1;
END_IF
4, // done
-1: // error
iAxisBase.Homing.Block.DoHoming(FALSE);
iAxisBase.Homing.BlockDetect.DoHoming(FALSE);
iAxisBase.Homing.Finish.DoFinish(FALSE);
END_CASE
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.35 | PC oder CX (x64, x86) | Tc3_PlasticFunctions v3.12.4.26 oder höher |