Started change to new pattern with FB_AxisPTP
This commit is contained in:
@@ -45,6 +45,9 @@
|
|||||||
</SelectedLibraryCategories>
|
</SelectedLibraryCategories>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="DUTs\E_CmdResult.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="PlcTask.TcTTO">
|
<Compile Include="PlcTask.TcTTO">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -72,6 +75,9 @@
|
|||||||
<Compile Include="POUs\Components\AxisPTP\FB_AxisPTP.TcPOU">
|
<Compile Include="POUs\Components\AxisPTP\FB_AxisPTP.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="POUs\Components\AxisPTP\ST_AxisPTP_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Controller\FB_Limit.TcPOU">
|
<Compile Include="POUs\Components\Controller\FB_Limit.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
24
BasicComponents/DUTs/E_CmdResult.TcDUT
Normal file
24
BasicComponents/DUTs/E_CmdResult.TcDUT
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="E_CmdResult" Id="{280b22d6-e4fc-482b-8eba-52154be334ab}">
|
||||||
|
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||||
|
{attribute 'strict'}
|
||||||
|
{attribute 'to_string'}
|
||||||
|
TYPE E_CmdResult :
|
||||||
|
(
|
||||||
|
// Command accepted and in execution
|
||||||
|
ACCEPTED := 0,
|
||||||
|
|
||||||
|
// Component currently busy with another command
|
||||||
|
BUSY := 1,
|
||||||
|
|
||||||
|
// Command currently not allowed
|
||||||
|
REJECTED := 2,
|
||||||
|
|
||||||
|
// Component has error
|
||||||
|
ERROR := 3
|
||||||
|
) INT;
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -6,16 +6,24 @@
|
|||||||
{attribute 'to_string'}
|
{attribute 'to_string'}
|
||||||
TYPE E_AXIS_PTP_STATE :
|
TYPE E_AXIS_PTP_STATE :
|
||||||
(
|
(
|
||||||
OFF := 0,
|
IDLE := 0,
|
||||||
WAIT_FOR_ENABLE,
|
START_ENABLE,
|
||||||
ENABLED,
|
WAIT_ENABLE,
|
||||||
HOMING,
|
START_DISABLE,
|
||||||
MOVING_ABSOLUTE,
|
WAIT_DISABLE,
|
||||||
MOVING_RELATIVE,
|
START_HOMING,
|
||||||
MOVING_VELOCITY,
|
WAIT_HOMING,
|
||||||
MOVING_MODULO,
|
START_MOVING_ABSOLUTE,
|
||||||
HALTING,
|
WAIT_MOVING_ABSOLUTE,
|
||||||
WAIT_FOR_DISABLE,
|
START_MOVING_RELATIVE,
|
||||||
|
WAIT_MOVING_RELATIVE,
|
||||||
|
START_MOVING_VELOCITY,
|
||||||
|
WAIT_MOVING_VELOCITY,
|
||||||
|
START_MOVING_MODULO,
|
||||||
|
WAIT_MOVING_MODULO,
|
||||||
|
START_HALTING,
|
||||||
|
WAIT_HALTING,
|
||||||
|
ENTER_ERROR,
|
||||||
ERROR,
|
ERROR,
|
||||||
RESET
|
RESET
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
<POU Name="FB_AxisPTP" Id="{5a7035b7-f11b-403b-9828-9d2d1f662a54}" SpecialFunc="None">
|
<POU Name="FB_AxisPTP" Id="{5a7035b7-f11b-403b-9828-9d2d1f662a54}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_AxisPTP
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_AxisPTP
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xEnable : BOOL;
|
|
||||||
xCalibrationCam AT %I* : BOOL;
|
|
||||||
xInvertCalibrationCam : BOOL := FALSE;
|
xInvertCalibrationCam : BOOL := FALSE;
|
||||||
xEnablePositive : BOOL := TRUE;
|
xEnablePositive : BOOL := TRUE;
|
||||||
xEnableNegative : BOOL := TRUE;
|
xEnableNegative : BOOL := TRUE;
|
||||||
@@ -22,16 +20,20 @@ VAR_OUTPUT
|
|||||||
xHomed : BOOL;
|
xHomed : BOOL;
|
||||||
lrActPosition : LREAL;
|
lrActPosition : LREAL;
|
||||||
xIsStopped : BOOL;
|
xIsStopped : BOOL;
|
||||||
|
|
||||||
|
// Outputs for execute pattern
|
||||||
xBusy : BOOL;
|
xBusy : BOOL;
|
||||||
xDone : BOOL;
|
xDone : BOOL := TRUE;
|
||||||
xError : BOOL;
|
xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
|
VAR_IN_OUT
|
||||||
|
stIO : ST_AxisPTP_IO;
|
||||||
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
// ========
|
// ========
|
||||||
// Axis fbs
|
// Axis fbs
|
||||||
// ========
|
// ========
|
||||||
|
|
||||||
_fbAxis : AXIS_REF;
|
|
||||||
_fbPower : MC_Power;
|
_fbPower : MC_Power;
|
||||||
_fbHome : MC_Home;
|
_fbHome : MC_Home;
|
||||||
_fbMoveAbsolute : MC_MoveAbsolute;
|
_fbMoveAbsolute : MC_MoveAbsolute;
|
||||||
@@ -42,20 +44,6 @@ VAR
|
|||||||
_fbReset : MC_Reset;
|
_fbReset : MC_Reset;
|
||||||
|
|
||||||
|
|
||||||
// ======================
|
|
||||||
// Axis fbs control flags
|
|
||||||
// ======================
|
|
||||||
|
|
||||||
_xEnable : BOOL;
|
|
||||||
_xStartHomeing : BOOL;
|
|
||||||
_xStartMoveAbsolute : BOOL;
|
|
||||||
_xStartMoveRelative : BOOL;
|
|
||||||
_xStartMoveVelocity : BOOL;
|
|
||||||
_xStartMoveModulo : BOOL;
|
|
||||||
_xHalt : BOOL;
|
|
||||||
_xReset : BOOL;
|
|
||||||
|
|
||||||
|
|
||||||
// =====================
|
// =====================
|
||||||
// Sequence control data
|
// Sequence control data
|
||||||
// =====================
|
// =====================
|
||||||
@@ -82,30 +70,17 @@ VAR
|
|||||||
|
|
||||||
_xCanExecNewCmd : BOOL;
|
_xCanExecNewCmd : BOOL;
|
||||||
|
|
||||||
_eState : E_AXIS_PTP_STATE;
|
_eState : E_AXIS_PTP_STATE := E_AXIS_PTP_STATE.IDLE;
|
||||||
|
|
||||||
|
|
||||||
// =============
|
|
||||||
// Ouput buffers
|
|
||||||
// =============
|
|
||||||
|
|
||||||
_xDone : BOOL;
|
|
||||||
_xBusy : BOOL;
|
|
||||||
_xError : BOOL;
|
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Call axis interface
|
<ST><![CDATA[// Call axis interface
|
||||||
_fbAxis.ReadStatus();
|
stIO.io_fbAxisRef.ReadStatus();
|
||||||
|
|
||||||
IF _fbAxis.Status.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF xInvertCalibrationCam THEN
|
IF xInvertCalibrationCam THEN
|
||||||
_xCalibrationCam := NOT xCalibrationCam;
|
_xCalibrationCam := NOT stIO.i_xCalibrationCam;
|
||||||
ELSE
|
ELSE
|
||||||
_xCalibrationCam := xCalibrationCam;
|
_xCalibrationCam := stIO.i_xCalibrationCam;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
@@ -114,81 +89,45 @@ END_IF
|
|||||||
// =================
|
// =================
|
||||||
|
|
||||||
_fbPower(
|
_fbPower(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Enable:= _xEnable,
|
|
||||||
Enable_Positive:= xEnablePositive,
|
Enable_Positive:= xEnablePositive,
|
||||||
Enable_Negative:= xEnableNegative,
|
Enable_Negative:= xEnableNegative,
|
||||||
Override:= rOverride);
|
Override:= rOverride);
|
||||||
|
|
||||||
IF _fbPower.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
_fbHome(
|
_fbHome(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xStartHomeing,
|
|
||||||
Position:= _lrHomingPos,
|
Position:= _lrHomingPos,
|
||||||
HomingMode:= _eHomingMode,
|
HomingMode:= _eHomingMode,
|
||||||
bCalibrationCam:= _xCalibrationCam);
|
bCalibrationCam:= _xCalibrationCam);
|
||||||
|
|
||||||
IF _fbHome.Error THEN
|
_fbReset(Axis:= stIO.io_fbAxisRef);
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
_fbReset(
|
|
||||||
Axis:= _fbAxis,
|
|
||||||
Execute:= _xReset);
|
|
||||||
|
|
||||||
IF _fbReset.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
_fbMoveAbsolute(
|
_fbMoveAbsolute(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xStartMoveAbsolute,
|
|
||||||
Position:= _lrTargetPosition,
|
Position:= _lrTargetPosition,
|
||||||
Velocity:= lrVelocity,
|
Velocity:= lrVelocity,
|
||||||
Acceleration:= 0,
|
Acceleration:= 0,
|
||||||
Deceleration:= 0,
|
Deceleration:= 0,
|
||||||
Jerk:= 0);
|
Jerk:= 0);
|
||||||
|
|
||||||
IF _fbMoveAbsolute.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
_fbMoveRelative(
|
_fbMoveRelative(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xStartMoveRelative,
|
|
||||||
Distance:= _lrRelativeDistance,
|
Distance:= _lrRelativeDistance,
|
||||||
Velocity:= lrVelocity,
|
Velocity:= lrVelocity,
|
||||||
Acceleration:= 0,
|
Acceleration:= 0,
|
||||||
Deceleration:= 0,
|
Deceleration:= 0,
|
||||||
Jerk:= 0);
|
Jerk:= 0);
|
||||||
|
|
||||||
IF _fbMoveRelative.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
_fbMoveVelocity(
|
_fbMoveVelocity(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xStartMoveVelocity,
|
|
||||||
Velocity:= lrVelocity,
|
Velocity:= lrVelocity,
|
||||||
Acceleration:= 0,
|
Acceleration:= 0,
|
||||||
Deceleration:= 0,
|
Deceleration:= 0,
|
||||||
Jerk:= 0,
|
Jerk:= 0,
|
||||||
Direction:= _eMoveDirection);
|
Direction:= _eMoveDirection);
|
||||||
|
|
||||||
IF _fbMoveVelocity.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
_fbMoveModulo(
|
_fbMoveModulo(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xStartMoveModulo,
|
|
||||||
Position:= _lrTargetPosition,
|
Position:= _lrTargetPosition,
|
||||||
Velocity:= lrVelocity,
|
Velocity:= lrVelocity,
|
||||||
Acceleration:= 0,
|
Acceleration:= 0,
|
||||||
@@ -196,179 +135,121 @@ _fbMoveModulo(
|
|||||||
Jerk:= 0,
|
Jerk:= 0,
|
||||||
Direction:= _eMoveDirection);
|
Direction:= _eMoveDirection);
|
||||||
|
|
||||||
IF _fbMoveModulo.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
_fbHalt(
|
_fbHalt(
|
||||||
Axis:= _fbAxis,
|
Axis:= stIO.io_fbAxisRef,
|
||||||
Execute:= _xHalt,
|
|
||||||
Deceleration:= 0,
|
Deceleration:= 0,
|
||||||
BufferMode := MC_BufferMode.MC_Aborting,
|
BufferMode := MC_BufferMode.MC_Aborting,
|
||||||
Jerk:= 0);
|
Jerk:= 0);
|
||||||
|
|
||||||
IF _fbHalt.Error THEN
|
|
||||||
_xError := TRUE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
// ====================
|
// ====================
|
||||||
// Handle state machine
|
// Handle state machine
|
||||||
// ====================
|
// ====================
|
||||||
|
|
||||||
CASE _eState OF
|
CASE _eState OF
|
||||||
E_AXIS_PTP_STATE.OFF:
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
IF xEnable THEN
|
// Check for error
|
||||||
_xEnable := TRUE;
|
IF stIO.io_fbAxisRef.Status.Error THEN
|
||||||
_xBusy := TRUE;
|
|
||||||
_xDone := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.WAIT_FOR_ENABLE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
_eState := E_AXIS_PTP_STATE.ERROR;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
// =========
|
||||||
|
// Enableing
|
||||||
|
// =========
|
||||||
|
E_AXIS_PTP_STATE.START_ENABLE:
|
||||||
|
_fbPower.Enable := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_ENABLE;
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.WAIT_FOR_ENABLE:
|
E_AXIS_PTP_STATE.WAIT_ENABLE:
|
||||||
IF _fbPower.Status AND (NOT _xError) THEN
|
IF _fbPower.Status AND (NOT _fbPower.Error) THEN
|
||||||
_xBusy := FALSE;
|
xBusy := FALSE;
|
||||||
_xDone := TRUE;
|
xDone := TRUE;
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xError THEN
|
IF _fbPower.Error THEN
|
||||||
_xEnable := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_xBusy := FALSE;
|
END_IF
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
|
// =======
|
||||||
|
// Homeing
|
||||||
|
// =======
|
||||||
|
E_AXIS_PTP_STATE.START_HOMING:
|
||||||
|
_fbHome.Execute := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_HOMING;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_HOMING:
|
||||||
|
IF _fbHome.Done THEN
|
||||||
|
_fbHome.Execute := FALSE;
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbHome.Error THEN
|
||||||
|
_fbHome.Execute := FALSE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// =============
|
||||||
|
// Move absolute
|
||||||
|
// =============
|
||||||
|
E_AXIS_PTP_STATE.START_MOVING_ABSOLUTE:
|
||||||
|
_fbMoveAbsolute.Execute := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_MOVING_ABSOLUTE;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_MOVING_ABSOLUTE:
|
||||||
|
IF _fbMoveAbsolute.Done THEN
|
||||||
|
_fbMoveAbsolute.Execute := FALSE;
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbMoveAbsolute.Error THEN
|
||||||
|
_fbMoveAbsolute.Execute := FALSE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.ENABLED:
|
// =============
|
||||||
|
// Move relative
|
||||||
|
// =============
|
||||||
|
E_AXIS_PTP_STATE.START_MOVING_RELATIVE:
|
||||||
|
_fbMoveRelative.Execute := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_MOVING_RELATIVE;
|
||||||
|
|
||||||
IF _xExecuteMoveAbs THEN
|
E_AXIS_PTP_STATE.WAIT_MOVING_RELATIVE:
|
||||||
_xExecuteMoveAbs := FALSE;
|
IF _fbMoveRelative.Done THEN
|
||||||
_xStartMoveAbsolute := TRUE;
|
_fbMoveRelative.Execute := FALSE;
|
||||||
_eState := E_AXIS_PTP_STATE.MOVING_ABSOLUTE;
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xExecuteMoveRel THEN
|
IF _fbMoveRelative.Error THEN
|
||||||
_xExecuteMoveRel := FALSE;
|
_fbMoveRelative.Execute := FALSE;
|
||||||
_xStartMoveRelative := TRUE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_eState := E_AXIS_PTP_STATE.MOVING_RELATIVE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteHoming THEN
|
|
||||||
_xExecuteHoming := FALSE;
|
|
||||||
_xStartHomeing := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HOMING;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteMoveVelocity THEN
|
|
||||||
_xExecuteMoveVelocity := FALSE;
|
|
||||||
_xStartMoveVelocity := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.MOVING_VELOCITY;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteMoveModulo THEN
|
|
||||||
_xExecuteMoveModulo := FALSE;
|
|
||||||
_xStartMoveModulo := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.MOVING_MODULO;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF (NOT xEnable) AND (NOT _xError) THEN
|
|
||||||
_xEnable := FALSE;
|
|
||||||
_xBusy := TRUE;
|
|
||||||
_xDone := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.WAIT_FOR_DISABLE;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_xEnable := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.HOMING:
|
// =============
|
||||||
IF (NOT _fbHome.Busy) AND (NOT _xError) THEN
|
// Move velocity
|
||||||
_xStartHomeing := FALSE;
|
// =============
|
||||||
_xBusy := FALSE;
|
E_AXIS_PTP_STATE.START_MOVING_VELOCITY:
|
||||||
_xDone := TRUE;
|
_fbMoveVelocity.Execute := TRUE;
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
_eState := E_AXIS_PTP_STATE.WAIT_MOVING_VELOCITY;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_MOVING_VELOCITY:
|
||||||
|
IF _fbMoveVelocity.Busy THEN
|
||||||
|
_fbMoveVelocity.Execute := FALSE;
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xExecuteHalt THEN
|
|
||||||
_xExecuteHalt := FALSE;
|
|
||||||
_xStartHomeing := FALSE;
|
|
||||||
_xHalt := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HALTING;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_xStartHomeing := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.MOVING_ABSOLUTE:
|
|
||||||
IF (NOT _fbMoveAbsolute.Busy) AND (NOT _xError) THEN
|
|
||||||
_xStartMoveAbsolute := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_xDone := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteHalt THEN
|
|
||||||
_xExecuteHalt := FALSE;
|
|
||||||
_xStartMoveAbsolute := FALSE;
|
|
||||||
_xHalt := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HALTING;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_xStartMoveAbsolute := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.MOVING_RELATIVE:
|
|
||||||
IF (NOT _fbMoveRelative.Busy) AND (NOT _xError) THEN
|
|
||||||
_xStartMoveRelative := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_xDone := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteHalt THEN
|
|
||||||
_xExecuteHalt := FALSE;
|
|
||||||
_xStartMoveAbsolute := FALSE;
|
|
||||||
_xHalt := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HALTING;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_xStartMoveRelative := FALSE;
|
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.MOVING_VELOCITY:
|
|
||||||
IF _fbMoveVelocity.Error THEN
|
IF _fbMoveVelocity.Error THEN
|
||||||
_xBusy := FALSE;
|
_fbMoveVelocity.Execute := FALSE;
|
||||||
_xStartMoveVelocity := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xExecuteHalt THEN
|
|
||||||
_xExecuteHalt := FALSE;
|
|
||||||
_xStartMoveVelocity := FALSE;
|
|
||||||
_xHalt := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HALTING;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
@@ -389,8 +270,7 @@ CASE _eState OF
|
|||||||
|
|
||||||
IF _xError THEN
|
IF _xError THEN
|
||||||
_xStartMoveModulo := FALSE;
|
_xStartMoveModulo := FALSE;
|
||||||
_xBusy := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
@@ -403,9 +283,7 @@ CASE _eState OF
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xError THEN
|
IF _xError THEN
|
||||||
_xHalt := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
@@ -417,17 +295,19 @@ CASE _eState OF
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xError THEN
|
IF _xError THEN
|
||||||
_xEnable := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_xBusy := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.ENTER_ERROR:
|
||||||
|
xError := TRUE;
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := FALSE;
|
||||||
|
|
||||||
|
_eState := E_AXIS_PTP_STATE.ERROR;
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.ERROR:
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
IF xConfirmAlarms THEN
|
IF xConfirmAlarms THEN
|
||||||
_xBusy := FALSE;
|
|
||||||
_xReset := TRUE;
|
_xReset := TRUE;
|
||||||
_xError := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.RESET;
|
_eState := E_AXIS_PTP_STATE.RESET;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
@@ -435,164 +315,224 @@ CASE _eState OF
|
|||||||
E_AXIS_PTP_STATE.RESET:
|
E_AXIS_PTP_STATE.RESET:
|
||||||
IF _fbReset.Done THEN
|
IF _fbReset.Done THEN
|
||||||
_xReset := FALSE;
|
_xReset := FALSE;
|
||||||
_xError := FALSE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.OFF;
|
_eState := E_AXIS_PTP_STATE.OFF;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
ELSE
|
ELSE
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
_eState := E_AXIS_PTP_STATE.ERROR;
|
||||||
_xError := TRUE;
|
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
// Can the axis perform a new move command
|
|
||||||
_xCanExecNewCmd := (NOT _xBusy) AND _fbPower.Status AND (NOT _xError);
|
|
||||||
|
|
||||||
// Copy internal buffers to outputs
|
// Copy internal buffers to outputs
|
||||||
xEnabled := _fbPower.Status;
|
xEnabled := _fbPower.Status;
|
||||||
xHomed := _fbAxis.Status.Homed;
|
xHomed := stIO.io_fbAxisRef.Status.Homed;
|
||||||
lrActPosition := _fbAxis.NcToPlc.ActPos;
|
lrActPosition := stIO.io_fbAxisRef.NcToPlc.ActPos;
|
||||||
xIsStopped := _fbAxis.Status.StandStill OR _fbAxis.Status.Disabled;
|
xIsStopped := stIO.io_fbAxisRef.Status.StandStill OR stIO.io_fbAxisRef.Status.Disabled;]]></ST>
|
||||||
xDone := _xDone;
|
|
||||||
xBusy := _xBusy;
|
|
||||||
xError := _xError;]]></ST>
|
|
||||||
</Implementation>
|
</Implementation>
|
||||||
|
<Method Name="M_Disable" Id="{9ad5c9f5-bbf1-4888-86a0-ffdb2251d9c0}">
|
||||||
|
<Declaration><![CDATA[METHOD M_Disable : E_CmdResult
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[CASE _eState OF
|
||||||
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_DISABLE;
|
||||||
|
|
||||||
|
xBusy := TRUE;
|
||||||
|
xDone := FALSE;
|
||||||
|
M_Disable := E_CmdResult.ACCEPTED;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
|
M_Disable := E_CmdResult.ERROR;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
M_Disable := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Enable" Id="{d68c8a7b-c709-4efe-872c-84892228bb19}">
|
||||||
|
<Declaration><![CDATA[METHOD M_Enable : E_CmdResult
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[CASE _eState OF
|
||||||
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_ENABLE;
|
||||||
|
|
||||||
|
xBusy := TRUE;
|
||||||
|
xDone := FALSE;
|
||||||
|
M_Enable := E_CmdResult.ACCEPTED;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
|
M_Enable := E_CmdResult.ERROR;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
M_Enable := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
<Method Name="M_Halt" Id="{f6e3b049-4121-4299-b0f5-55178ecb35c3}">
|
<Method Name="M_Halt" Id="{f6e3b049-4121-4299-b0f5-55178ecb35c3}">
|
||||||
<Declaration><![CDATA[METHOD M_Halt
|
<Declaration><![CDATA[METHOD M_Halt : E_CmdResult
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xBusy THEN
|
<ST><![CDATA[_eState := E_AXIS_PTP_STATE.START_HALTING;
|
||||||
_xExecuteHalt := TRUE;
|
|
||||||
_xDone := FALSE;
|
xBusy := TRUE;
|
||||||
xDone := FALSE;
|
xDone := FALSE;
|
||||||
_xBusy := TRUE;
|
M_Halt := E_CmdResult.ACCEPTED;]]></ST>
|
||||||
xBusy := TRUE;
|
|
||||||
END_IF]]></ST>
|
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Homing" Id="{816a1a43-38da-49f0-b902-c1027a6ba127}">
|
<Method Name="M_Homing" Id="{816a1a43-38da-49f0-b902-c1027a6ba127}">
|
||||||
<Declaration><![CDATA[METHOD M_Homing : BOOL
|
<Declaration><![CDATA[METHOD M_Homing : E_CmdResult
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
lrHomingPosition : LREAL := Tc2_MC2.DEFAULT_HOME_POSITION;
|
lrHomingPosition : LREAL := Tc2_MC2.DEFAULT_HOME_POSITION;
|
||||||
eHomingMode : MC_HomingMode := MC_HomingMode.MC_DefaultHoming;
|
eHomingMode : MC_HomingMode := MC_HomingMode.MC_DefaultHoming;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xCanExecNewCmd THEN
|
<ST><![CDATA[// Reject command if axis is not enabled
|
||||||
_xCanExecNewCmd := FALSE;
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
M_Homing := E_CmdResult.REJECTED;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
_lrHomingPos := lrHomingPosition;
|
CASE _eState OF
|
||||||
_eHomingMode := eHomingMode;
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
_xExecuteHoming := TRUE;
|
_eState := E_AXIS_PTP_STATE.START_HOMING;
|
||||||
|
|
||||||
_xDone := FALSE;
|
xBusy := TRUE;
|
||||||
xDone := FALSE;
|
xDone := FALSE;
|
||||||
_xBusy := TRUE;
|
M_Homing := E_CmdResult.ACCEPTED;
|
||||||
xBusy := TRUE;
|
|
||||||
|
|
||||||
M_Homing := TRUE;
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
ELSE
|
M_Homing := E_CmdResult.ERROR;
|
||||||
M_Homing := FALSE;
|
|
||||||
END_IF]]></ST>
|
ELSE
|
||||||
|
M_Homing := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_MoveAbs" Id="{f67a4861-cdb0-4dd2-93c8-1ae9dbc9a9a6}">
|
<Method Name="M_MoveAbs" Id="{f67a4861-cdb0-4dd2-93c8-1ae9dbc9a9a6}">
|
||||||
<Declaration><![CDATA[METHOD M_MoveAbs : BOOL;
|
<Declaration><![CDATA[METHOD M_MoveAbs : E_CmdResult
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
lrTargetPos : LREAL;
|
lrTargetPos : LREAL;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xCanExecNewCmd THEN
|
<ST><![CDATA[// Reject command if axis is not enabled
|
||||||
_xCanExecNewCmd := FALSE;
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
M_MoveAbs := E_CmdResult.REJECTED;
|
||||||
_lrTargetPosition := lrTargetPos;
|
RETURN;
|
||||||
_xExecuteMoveAbs := TRUE;
|
|
||||||
|
|
||||||
_xDone := FALSE;
|
|
||||||
xDone := FALSE;
|
|
||||||
_xBusy := TRUE;
|
|
||||||
xBusy := TRUE;
|
|
||||||
|
|
||||||
M_MoveAbs := TRUE;
|
|
||||||
ELSE
|
|
||||||
M_MoveAbs := FALSE;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
CASE _eState OF
|
||||||
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
|
_lrTargetPosition := lrTargetPos;
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_MOVING_ABSOLUTE;
|
||||||
|
|
||||||
|
xBusy := TRUE;
|
||||||
|
xDone := FALSE;
|
||||||
|
M_MoveAbs := E_CmdResult.ACCEPTED;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
|
M_MoveAbs := E_CmdResult.ERROR;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
M_MoveAbs := E_CmdResult.BUSY;
|
||||||
|
END_CASE
|
||||||
]]></ST>
|
]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_MoveModulo" Id="{1a5eaefa-5bb1-4438-b3e0-80c1a34fc0ee}">
|
<Method Name="M_MoveModulo" Id="{1a5eaefa-5bb1-4438-b3e0-80c1a34fc0ee}">
|
||||||
<Declaration><![CDATA[METHOD M_MoveModulo : BOOL
|
<Declaration><![CDATA[METHOD M_MoveModulo : E_CmdResult
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
lrTargetPos : LREAL;
|
lrTargetPos : LREAL;
|
||||||
eMoveDirection : MC_Direction;
|
eMoveDirection : MC_Direction;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xCanExecNewCmd THEN
|
<ST><![CDATA[// Reject command if axis is not enabled
|
||||||
_xCanExecNewCmd := FALSE;
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
M_MoveModulo := E_CmdResult.REJECTED;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
_lrTargetPosition := lrTargetPos;
|
CASE _eState OF
|
||||||
_eMoveDirection := eMoveDirection;
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
_xExecuteMoveModulo := TRUE;
|
_lrTargetPosition := lrTargetPos;
|
||||||
|
_eMoveDirection := eMoveDirection;
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_MOVING_MODULO;
|
||||||
|
|
||||||
_xDone := FALSE;
|
xBusy := TRUE;
|
||||||
xDone := FALSE;
|
xDone := FALSE;
|
||||||
_xBusy := TRUE;
|
M_MoveModulo := E_CmdResult.ACCEPTED;
|
||||||
xBusy := TRUE;
|
|
||||||
|
|
||||||
M_MoveModulo := TRUE;
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
ELSE
|
M_MoveModulo := E_CmdResult.ERROR;
|
||||||
M_MoveModulo := FALSE;
|
|
||||||
END_IF]]></ST>
|
ELSE
|
||||||
|
M_MoveModulo := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_MoveRel" Id="{51e5fe82-5e25-4de0-84c7-b4d6560c312f}">
|
<Method Name="M_MoveRel" Id="{51e5fe82-5e25-4de0-84c7-b4d6560c312f}">
|
||||||
<Declaration><![CDATA[METHOD M_MoveRel : BOOL;
|
<Declaration><![CDATA[METHOD M_MoveRel : E_CmdResult
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
lrRelDist : LREAL;
|
lrRelDist : LREAL;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xCanExecNewCmd THEN
|
<ST><![CDATA[// Reject command if axis is not enabled
|
||||||
_xCanExecNewCmd := FALSE;
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
M_MoveRel := E_CmdResult.REJECTED;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
_xBusy := TRUE;
|
CASE _eState OF
|
||||||
_lrRelativeDistance := lrRelDist;
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
_xExecuteMoveRel:= TRUE;
|
_lrRelativeDistance := lrRelDist;
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_MOVING_RELATIVE;
|
||||||
|
|
||||||
_xDone := FALSE;
|
xBusy := TRUE;
|
||||||
xDone := FALSE;
|
xDone := FALSE;
|
||||||
_xBusy := TRUE;
|
M_MoveRel := E_CmdResult.ACCEPTED;
|
||||||
xBusy := TRUE;
|
|
||||||
|
|
||||||
M_MoveRel := TRUE;
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
ELSE
|
M_MoveRel := E_CmdResult.ERROR;
|
||||||
M_MoveRel := FALSE;
|
|
||||||
END_IF]]></ST>
|
ELSE
|
||||||
|
M_MoveRel := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_MoveVelocity" Id="{fd4ad471-f522-45f2-a138-ebe509907cf6}">
|
<Method Name="M_MoveVelocity" Id="{fd4ad471-f522-45f2-a138-ebe509907cf6}">
|
||||||
<Declaration><![CDATA[METHOD M_MoveVelocity : BOOL;
|
<Declaration><![CDATA[METHOD M_MoveVelocity : E_CmdResult
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
eDirection : MC_Direction := MC_Direction.MC_Positive_Direction;
|
eDirection : MC_Direction := MC_Direction.MC_Positive_Direction;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xCanExecNewCmd THEN
|
<ST><![CDATA[// Reject command if axis is not enabled
|
||||||
_xCanExecNewCmd := FALSE;
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
M_MoveRel := E_CmdResult.REJECTED;
|
||||||
_xBusy := TRUE;
|
RETURN;
|
||||||
_xExecuteMoveVelocity := TRUE;
|
|
||||||
_eMoveDirection := eDirection;
|
|
||||||
|
|
||||||
_xDone := FALSE;
|
|
||||||
xDone := FALSE;
|
|
||||||
_xBusy := TRUE;
|
|
||||||
xBusy := TRUE;
|
|
||||||
|
|
||||||
M_MoveVelocity := TRUE;
|
|
||||||
ELSE
|
|
||||||
M_MoveVelocity := FALSE;
|
|
||||||
END_IF
|
END_IF
|
||||||
]]></ST>
|
|
||||||
|
CASE _eState OF
|
||||||
|
E_AXIS_PTP_STATE.IDLE:
|
||||||
|
_eMoveDirection := eDirection;
|
||||||
|
_eState := E_AXIS_PTP_STATE.START_MOVING_VELOCITY;
|
||||||
|
|
||||||
|
xBusy := TRUE;
|
||||||
|
xDone := FALSE;
|
||||||
|
M_MoveRel := E_CmdResult.ACCEPTED;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
|
M_MoveRel := E_CmdResult.ERROR;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
M_MoveRel := E_CmdResult.BUSY;
|
||||||
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
</POU>
|
</POU>
|
||||||
|
|||||||
12
BasicComponents/POUs/Components/AxisPTP/ST_AxisPTP_IO.TcDUT
Normal file
12
BasicComponents/POUs/Components/AxisPTP/ST_AxisPTP_IO.TcDUT
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_AxisPTP_IO" Id="{e9334c76-7085-45c0-b389-151c48bf0632}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_AxisPTP_IO :
|
||||||
|
STRUCT
|
||||||
|
i_xCalibrationCam AT %I* : BOOL;
|
||||||
|
io_fbAxisRef : AXIS_REF;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
Reference in New Issue
Block a user