PROGRAM Main
VAR
// Motors
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_1_V_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_1_V_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ1:JAWS:YWIDTH
'}
M1 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_1_Vertical_Gap
fbMotionStageM1 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_1_V_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_1_V_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ1:JAWS:YCENTER
'}
M2 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_1_Vertical_Offset
fbMotionStageM2 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_1_H_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_1_H_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ1:JAWS:XWIDTH
'}
M3 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_1_Horizontal_Gap
fbMotionStageM3 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_1_H_Offset_EL7031]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_1_H_Offset_EL7031]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ1:JAWS:XCENTER
'}
M4 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_1_Horizontal_Offset
fbMotionStageM4 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_2_V_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_2_V_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ2:JAWS:YWIDTH
'}
M5 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_2_Vertical_Gap
fbMotionStageM5 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_2_V_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_2_V_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ2:JAWS:YCENTER
'}
M6 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_2_Vertical_Offset
fbMotionStageM6 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_2_H_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_2_H_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ2:JAWS:XWIDTH
'}
M7 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_2_Horizontal_Gap
fbMotionStageM7 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_2_H_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_2_H_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ2:JAWS:XCENTER
'}
M8 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_2_Horizontal_Offset
fbMotionStageM8 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_3_V_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_3_V_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ3:JAWS:YWIDTH
'}
M9 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_3_Vertical_Gap
fbMotionStageM9 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_3_V_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_3_V_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ3:JAWS:YCENTER
'}
M10 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_3_Vertical_Offset
fbMotionStageM10 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_3_H_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_3_H_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ3:JAWS:XWIDTH
'}
M11 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_3_Horizontal_Gap
fbMotionStageM11 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_3_H_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_3_H_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ3:JAWS:XCENTER
'}
M12 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_3_Horizontal_Offset
fbMotionStageM12 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_4_V_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_4_V_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ4:JAWS:YWIDTH
'}
M13 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_4_Vertical_Gap
fbMotionStageM13 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_4_V_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_4_V_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ4:JAWS:YCENTER
'}
M14 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_4_Vertical_Offset
fbMotionStageM14 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_4_H_Gap_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_4_H_Gap_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ4:JAWS:XWIDTH
'}
M15 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_4_Horizontal_Gap
fbMotionStageM15 : FB_MotionStage;
{attribute 'TcLinkTo' := '.bLimitForwardEnable :=TIIB[JJ_4_H_Offset_EL7037]^STM Status^Status^Digital input 1;
.bLimitBackwardEnable :=TIIB[JJ_4_H_Offset_EL7037]^STM Status^Status^Digital input 2'}
{attribute 'pytmc' := '
pv: XPP:USR:JJ4:JAWS:XCENTER
'}
M16 : DUT_MotionStage := (bPowerSelf:=True,
// nEnableMode:=ENUM_StageEnableMode.ALWAYS,
nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
nBrakeMode:= ENUM_StageBrakeMode.NO_BRAKE,
nHomingMode := ENUM_EpicsHomeCmd.LOW_LIMIT); // JJ_4_Horizontal_Offset
fbMotionStageM16 : FB_MotionStage;
END_VAR
// Hardware Enable
M1.bHardwareEnable := TRUE;
fbMotionStageM1(stMotionStage:=M1);
M2.bHardwareEnable := TRUE;
fbMotionStageM2(stMotionStage:=M2);
M3.bHardwareEnable := TRUE;
fbMotionStageM3(stMotionStage:=M3);
M4.bHardwareEnable := TRUE;
fbMotionStageM4(stMotionStage:=M4);
M5.bHardwareEnable := TRUE;
fbMotionStageM5(stMotionStage:=M5);
M6.bHardwareEnable := TRUE;
fbMotionStageM6(stMotionStage:=M6);
M7.bHardwareEnable := TRUE;
fbMotionStageM7(stMotionStage:=M7);
M8.bHardwareEnable := TRUE;
fbMotionStageM8(stMotionStage:=M8);
M9.bHardwareEnable := TRUE;
fbMotionStageM9(stMotionStage:=M9);
M10.bHardwareEnable := TRUE;
fbMotionStageM10(stMotionStage:=M10);
M11.bHardwareEnable := TRUE;
fbMotionStageM11(stMotionStage:=M11);
M12.bHardwareEnable := TRUE;
fbMotionStageM12(stMotionStage:=M12);
M13.bHardwareEnable := TRUE;
fbMotionStageM13(stMotionStage:=M13);
M14.bHardwareEnable := TRUE;
fbMotionStageM14(stMotionStage:=M14);
M15.bHardwareEnable := TRUE;
fbMotionStageM15(stMotionStage:=M15);
M16.bHardwareEnable := TRUE;
fbMotionStageM16(stMotionStage:=M16);
END_PROGRAM