DUTs

GVLs

POUs

Main

PROGRAM Main
VAR
    // Motors
    // CVMI Axes
    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasJetX-EL7041]^STM Status^Status^Digital input 2;
                              .bLimitBackwardEnable:=TIIB[GasJetX-EL7041]^STM Status^Status^Digital input 1'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:01
    '}
    M1 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Jet X

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasJetY-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[GasJetY-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:02
    '}
    M2 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Jet Y

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasJetZ-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[GasJetZ-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:03
    '}
    M3 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Jet Z

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasNeedleX-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[GasNeedleX-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:04
    '}
    M4 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Needle X

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasNeedleY-EL7041]^STM Status^Status^Digital input 2;
                              .bLimitBackwardEnable:=TIIB[GasNeedleY-EL7041]^STM Status^Status^Digital input 1'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:05
    '}
    M5 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Needle Y

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[GasNeedleZ-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[GasNeedleZ-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:06
    '}
    M6 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Gas Needle Z

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[SamplePaddle-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[SamplePaddle-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:CVMI:MMS:07
    '}
    M7 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // Sample Paddle

    // KTOF Axes
    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[KTOF_X-EL7041]^STM Status^Status^Digital input 1;
                              .bLimitBackwardEnable:=TIIB[KTOF_X-EL7041]^STM Status^Status^Digital input 2'}
    {attribute 'pytmc' := '
        pv: TMO:KTOF:MMS:01
    '}
    M8 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // KTOF X

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[KTOF_Y-EL7041]^STM Status^Status^Digital input 2;
                              .bLimitBackwardEnable:=TIIB[KTOF_Y-EL7041]^STM Status^Status^Digital input 1'}
    {attribute 'pytmc' := '
        pv: TMO:KTOF:MMS:02
    '}
    M9 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // KTOF Y

    {attribute 'TcLinkTo' := '.bLimitForwardEnable:=TIIB[KTOF_Z-EL7041]^STM Status^Status^Digital input 2;
                              .bLimitBackwardEnable:=TIIB[KTOF_Z-EL7041]^STM Status^Status^Digital input 1'}
    {attribute 'pytmc' := '
        pv: TMO:KTOF:MMS:03
    '}
    M10 : DUT_MotionStage := (bPowerSelf:=TRUE,
    nEnableMode:=ENUM_StageEnableMode.DURING_MOTION,
//    nEnableMode:=ENUM_StageEnableMode.ALWAYS,
    nHomingMode := ENUM_EpicsHomeCmd.ABSOLUTE_SET); // KTOF Z

    // CVMI Axes
    fbMotionStageM1 : FB_MotionStage;
    fbMotionStageM2 : FB_MotionStage;
    fbMotionStageM3 : FB_MotionStage;
    fbMotionStageM4 : FB_MotionStage;
    fbMotionStageM5 : FB_MotionStage;
    fbMotionStageM6 : FB_MotionStage;
    fbMotionStageM7 : FB_MotionStage;
    // KTOF Axes
    fbMotionStageM8 : FB_MotionStage;
    fbMotionStageM9 : FB_MotionStage;
    fbMotionStageM10 : FB_MotionStage;


    // LED Channels
    {attribute 'TcLinkTo' := '.iIlluminatorINT := TIIB[LED_CH1-2_EL2502]^PWM Outputs Channel 1^PWM output'}
    {attribute 'pytmc' := '
            pv: TMO:CVMI:LED:01
            io: io
    '}
    bLedOutput1 : FB_LED;

    {attribute 'TcLinkTo' := '.iIlluminatorINT := TIIB[LED_CH1-2_EL2502]^PWM Outputs Channel 2^PWM output'}
    {attribute 'pytmc' := '
            pv: TMO:CVMI:LED:02
            io: io
    '}
    bLedOutput2 : FB_LED;


    {attribute 'TcLinkTo' := '.iIlluminatorINT := TIIB[LED_CH3-4_EL2502]^PWM Outputs Channel 1^PWM output'}
    {attribute 'pytmc' := '
            pv: TMO:CVMI:LED:03
            io: io
    '}
    bLedOutput3 : FB_LED;

    {attribute 'TcLinkTo' := '.iIlluminatorINT := TIIB[LED_CH3-4_EL2502]^PWM Outputs Channel 2^PWM output'}
    {attribute 'pytmc' := '
            pv: TMO:CVMI:LED:04
            io: io
    '}
    bLedOutput4 : FB_LED;
END_VAR
// Hardware Enable
    // CVMI
    // Gas Jet
    M1.bHardwareEnable := TRUE;
    M2.bHardwareEnable := TRUE;
    M3.bHardwareEnable := TRUE;
    // Gas Needle
    M4.bHardwareEnable := TRUE;
    M5.bHardwareEnable := TRUE;
    M6.bHardwareEnable := TRUE;
    // Sample Paddle
    M7.bHardwareEnable := TRUE;
    // KTOF
    M8.bHardwareEnable := TRUE;
    M9.bHardwareEnable := TRUE;
    M10.bHardwareEnable     := TRUE;

    // fbMotionStage
    // CVMI
    // Gas Jet
    fbMotionStageM1(stMotionStage:=M1);
    fbMotionStageM2(stMotionStage:=M2);
    fbMotionStageM3(stMotionStage:=M3);
    // Gas Needle
    fbMotionStageM4(stMotionStage:=M4);
    fbMotionStageM5(stMotionStage:=M5);
    fbMotionStageM6(stMotionStage:=M6);
    // Sample Paddle
    fbMotionStageM7(stMotionStage:=M7);
    // KTOF
    fbMotionStageM8(stMotionStage:=M8);
    fbMotionStageM9(stMotionStage:=M9);
    fbMotionStageM10(stMotionStage:=M10);


// Set LED output scaling
    bLedOutput1.iTermBits := 14;
    bLedOutput2.iTermBits := 14;
    bLedOutput3.iTermBits := 14;
    bLedOutput4.iTermBits := 14;

END_PROGRAM