PLC Variante I (Trigger via XtsUtility)
Sie haben die Möglichkeit, die Mover ID-Erkennung über die PLC Variante I auszulösen. Um die Suche automatisch anzusteuern, können Sie die folgenden Beispiel-Codes für das Processing Unit-Objekt und das TcIoXtsDrv-Objekt nutzen:
XTS Processing Unit-Objekt
// Declaration Part
PROGRAM MAIN
VAR
stMoverRef : ARRAY [1..cAxcnt] OF AXIS_REF;
fbXtsUnit : FB_XtsUnit;
eMoverIdDetectionMode : MoverIdDetectionMode:= MoverIdDetectionMode.Mover1;
//Should be the same as shown in the TcIoXtsDrv object
bStartMoverIdDetection : BOOL := TRUE; //Can also be written to trigger the process
manually after start up
bMoverIdDetectionError : BOOL;
bMoverIdDetected : BOOL;
bMoverIdDetectionActive : BOOL;
END_VAR
VAR CONSTANT
cAxcnt : INT:=10; // Example
END_VAR
//----------------------------------------------------------------------------------------------------
// Programm Part
// Cyclic call of the main block of the XtsUtility Library.
fbXtsUnit(Axis := stMoverRef);
// Check if the position detection of the Movers has been completed.
IF NOT fbXtsUnit.stXtsUnit.stTcIoXtsDrv.stParameter.bAreAllMoverPositionsValid THEN
// If not all Mover positions are valid, do not process any further.
RETURN;
END_IF
// Mover1 Functionality
// Check if "MoverIdDetectionMode" has been activated.
IF eMoverIdDetectionMode = E_MoverIdDetectionMode.Mover1 THEN
// Check if the "MoverIdDetection" has already been started or the Mover1 was found.
IF bStartMoverIdDetection AND NOT (bMoverIdDetectionActive OR bMoverIdDetected) THEN
bStartMoverIdDetection:=FALSE;
// Trigger the "MoverIdDetection".
fbXtsUnit.stXtsUnit.stTcIoXtsDrv.ipTcXtsIo.TriggerMoverIdDetection();
bMoverIdDetectionActive:=TRUE;
END_IF
// Check for error or success of "MoverIdDetection".
bMoverIdDetectionError := fbXtsUnit.stXtsUnit.stTcIoXtsDrv.stParameter.bHasMoverIdDetectionError;
bMoverIdDetected := fbXtsUnit.stXtsUnit.stTcIoXtsDrv.stParameter.bIsMoverIdDetectionValid;
// If the detection has an error, check for errors in output and try again.
IF bMoverIdDetectionError THEN
bMoverIdDetectionActive:=FALSE;
RETURN;
END_IF
// Do not process any further until the "MoverId" was deteced.
IF NOT bMoverIdDetected THEN
RETURN;
END_IF
bMoverIdDetectionActive:=FALSE;
// If the "MoverIdDetection" was not activated,
// then the start of the "MoverIdDetection" and the search of Mover1 is skipped.
ELSE
;
END_IF
TcIoXtsDrv-Objekt
// Declaration Part
PROGRAM MAIN
VAR
fbXtsEnvironment : FB_TcIoXtsEnvironment;
bInit : BOOL;
bStartMoverIdDetection : BOOL:=TRUE; // Can also be written to trigger the process
manually after start up
bMoverIdDetectionError : BOOL;
bMoverIdDetected : BOOL;
bMoverIdDetectionActive : BOOL;
END_VAR
//----------------------------------------------------------------------------------------------------
// Programm part
//Trigger only once in init.
IF NOT bInit THEN
IF fbXtsEnvironment.Init(TRUE) THEN
fbXtsEnvironment.Init(FALSE);
bInit:=TRUE;
END_IF
RETURN;
END_IF
// Check if the position detection of the Movers has been completed.
IF NOT fbXtsEnvironment.XpuTcIo(1).GetAreAllPositionsValid() THEN
// If not all Mover positions are valid, do not process any further.
RETURN;
END_IF
// Mover1 Functionality
// Check if "MoverIdDetectionMode" has been activated under the XtsProcessingUnit object.
IF fbXtsEnvironment.XpuTcIo(1).GetMoverIdDetectionMode() = MoverIdDetectionMode.Mover1 THEN
// Check if the "MoverIdDetection" has already been started or the Mover1 was found.
IF bStartMoverIdDetection AND NOT (bMoverIdDetectionActive OR bMoverIdDetected) THEN
bStartMoverIdDetection:=FALSE;
// Trigger the "MoverIdDetection".
fbXtsEnvironment.XpuTcIo(1).TriggerMoverIdDetection();
END_IF
// Check for error or success of "MoverIdDetection".
bMoverIdDetectionError := fbXtsEnvironment.XpuTcIo(1).GetHasMoverIdDetectionError();
bMoverIdDetected := fbXtsEnvironment.XpuTcIo(1).GetIsMoverIdDetectionValid();
bMoverIdDetectionActive := fbXtsEnvironment.XpuTcIo(1).GetIsMoverIdDetectionActive();
// If the detection has an error, check for errors in output and try again.
IF bMoverIdDetectionError THEN
RETURN;
END_IF
// Do not process any further until the "MoverId" was deteced.
IF NOT bMoverIdDetected THEN
RETURN;
END_IF
// Do not process any further until the "MoverId" was deteced.
IF NOT bMoverIdDetected THEN
RETURN;
END_IF
// If the "MoverIdDetection" was not activated in the XtsProcessingUnit object,
// then the activation of the "MoverIdDetection" and the search of Mover1 is skipped.
ELSE
;
END_IF