DUTs

ST_EXT_ILK

TYPE ST_EXT_ILK :
STRUCT
    {attribute 'pytmc' := '
    pv: HV_SW;
    io: io;
    '}
    xIlk_sw: BOOL:=True; // EPICS control for switching the interlock on or off.
    {attribute 'pytmc' := '
    pv: ILK_DO;
    io: i;
    '}
    q_xILK_OK_DO: BOOL; // Readout of the external interlock's ouput value
    {attribute 'pytmc' := '
    pv: ILK_OK;
    io: i;
    '}
    xIlkOK  :       BOOL := FALSE; // Interlock Bit
    {attribute 'pytmc' := '
    pv: PRO_SP;
    io: io;
    '}
    rPRO_SP: REAL   := 1e-6; // Pressure below which the HV signal may turn on
END_STRUCT
END_TYPE
Related:

GVLs

Global_Version

{attribute 'TcGenerated'}
{attribute 'no-analysis'}
{attribute 'linkalways'}
// This function has been automatically generated from the project information.
VAR_GLOBAL CONSTANT
    {attribute 'const_non_replaced'}
    stLibVersion_plc_kfe_rix_vac : ST_LibVersion := (iMajor := 2, iMinor := 1, iBuild := 0, iRevision := 0, nFlags := 1, sVersion := '2.1.0');
END_VAR

GVL_KFE_RIX_VAC

VAR_GLOBAL

// MKS275 Gauges

{attribute 'pytmc' := ' pv: PC1K1:ZOS:GPI:1 '}
fb_PC1K1_ZOS_GPI_1 : FB_MKS275;
{attribute 'pytmc' := ' pv: MR1K2:SWITCH:GPI:1 '}
fb_MR1K2_SWITCH_GPI_1 : FB_MKS275;
{attribute 'pytmc' := ' pv: TV1K1:PLEG:GPI:1 '}
fb_TV1K1_PLEG_GPI_1 : FB_MKS275;
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    := TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 119 (EL3174)^AI Standard Channel 2^Value'}
{attribute 'pytmc' := ' pv: SL1K2:EXIT:GPI:1 '}
fb_SL1K2_EXIT_GPI_1 : FB_MKS275;
{attribute 'pytmc' := ' pv: MR2K2:FLAT:GPI:1 '}
fb_MR2K2_FLAT_GPI_1 : FB_MKS275;
{attribute 'pytmc' := ' pv: MR3K2:KBH:GPI:1 '}
fb_MR3K2_KBH_GPI_1 : FB_MKS275;
{attribute 'pytmc' := ' pv: MR4K2:KBV:GPI:1 '}
fb_MR4K2_KBV_GPI_1 : FB_MKS275;
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    := TIIB[Term 170 (EL3174-0002)]^AI Standard Channel 1^Value'}
{attribute 'pytmc' := ' pv: SP1K2:PAX:GPI:1 '}
fb_SP1K2_PAX_GPI_1 : FB_MKS275;
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    := TIIB[Term 170 (EL3174-0002)]^AI Standard Channel 3^Value'}
{attribute 'pytmc' := ' pv: SP1K2:PAX:GPI:2 '}
fb_SP1K2_PAX_GPI_2 : FB_MKS275;
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^EK1100_05_00^EL3174_05_11^AI Standard Channel 1^Value'}
{attribute 'pytmc' := ' pv: IM5K2:PPM:GPI:1 '}
fb_IM5K2_PPM_GPI_1 : FB_MKS275;

//New Superbee piranis
{attribute 'pytmc' := ' pv: TM2K2:ATM:GPI:1 '}
fb_TM2K2_ATM_GPI_1 : FB_MKS275;

{attribute 'pytmc' := ' pv: LI4K2:K2A:GPI:1 '}
fb_LI4K2_K2A_GPI_1 : FB_MKS275;

//MKS275 EP Gauges
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 111 (EP3174-0002)^AI Standard Channel 2^Value'}
{attribute 'pytmc' := ' pv: ST1K2:PPS:GPI:1 '}
fb_ST1K2_PPS_GPI_1 : FB_MKS275;

// MKS500 Gauges

{attribute 'pytmc' := ' pv: PC1K1:ZOS:GCC:1 '}
fb_PC1K1_ZOS_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: MR1K2:SWITCH:GCC:1 '}
fb_MR1K2_SWITCH_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: TV1K1:PLEG:GCC:1 '}
fb_TV1K1_PLEG_GCC_1 : FB_MKS500;

{attribute 'TcLinkTo' :=    '.i_iPRESS_R    :=      TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 119 (EL3174)^AI Standard Channel 1^Value;
                                 .i_xHV_ON      :=  TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 123 (EL1124)^Channel 1^Input;
                                 .i_xDisc_Active:=  TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 123 (EL1124)^Channel 2^Input;
                                 .q_xHV_DIS         :=      TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 118 (EL2624)^Channel 1^Output    '}
{attribute 'pytmc' := ' pv: SL1K2:EXIT:GCC:1 '}
fb_SL1K2_EXIT_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: MR2K2:FLAT:GCC:1 '}
fb_MR2K2_FLAT_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: IM2K2:PPM:GCC:1 '}
fb_IM2K2_PPM_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: MR3K2:KBH:GCC:1 '}
fb_MR3K2_KBH_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: IM3K2:PPM:GCC:1 '}
fb_IM3K2_PPM_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: MR4K2:KBV:GCC:1 '}
fb_MR4K2_KBV_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: IM4K2:PPM:GCC:1 '}
fb_IM4K2_PPM_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: IM5K2:PPM:GCC:1 '}
fb_IM5K2_PPM_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: TM2K2:K2B:GCC:1 '}
fb_TM2K2_K2B_GCC_1 : FB_MKS500;
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    :=      TIIB[Term 170 (EL3174-0002)]^AI Standard Channel 2^Value;
                                 .i_xHV_ON      :=  TIIB[Term 172 (EL1124)]^Channel 1^Input;
                                 .i_xDisc_Active:=  TIIB[Term 172 (EL1124)]^Channel 2^Input;
                                 .q_xHV_DIS         :=      TIIB[Term 167 (EL2624)]^Channel 2^Output'}
{attribute 'pytmc' := ' pv: SP1K2:PAX:GCC:1 '}
fb_SP1K2_PAX_GCC_1 : FB_MKS500;

//New Televac gauge
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    :=      TIIB[Term 170 (EL3174-0002)]^AI Standard Channel 4^Value;
                              .q_xHV_DIS            :=      TIIB[Term 167 (EL2624)]^Channel 1^Output'}
{attribute 'pytmc' := ' pv: SP1K2:PAX:GCC:2 '}
fb_SP1K2_PAX_GCC_2 : FB_MX7M;

//MKS500 EP Gauges
{attribute 'TcLinkTo' :=    '.i_iPRESS_R    :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 111 (EP3174-0002)^AI Standard Channel 1^Value;
                             .q_xHV_DIS             :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^K2S2-DRL-01 (EP2624-0002)^Channel 1^Output        '}
{attribute 'pytmc' := ' pv: ST1K2:PPS:GCC:1 '}
fb_ST1K2_PPS_GCC_1 : FB_MKS500;
{attribute 'pytmc' := ' pv: IM6K2:PPM:GCC:1 '}
fb_IM6K2_PPM_GCC_1 : FB_MKS500;


// MKS422
{attribute 'pytmc' := ' pv: TV4K2:GFS:1 '}
fb_TV4K2_GFS_1 : FB_MKS422;


// VGC Valves

{attribute 'pytmc' := ' pv: MR1K2:SWITCH:VGC:1 '}
fb_MR1K2_SWITCH_VGC_1 : FB_VGC;
{attribute 'pytmc' := ' pv: MR1K2:SWITCH:VGC:2 '}
fb_MR1K2_SWITCH_VGC_2 : FB_VGC;

{attribute 'TcLinkTo' :=    '.i_xOpnLS      :=      TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 120 (EL1004)^Channel 1^Input;
                                 .i_xClsLS  :=      TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 120 (EL1004)^Channel 2^Input;
                                .q_xOPN_DO  :=      TIID^Device 1 (EtherCAT)^B950_100H1_WALL (EK1100)^Term 121 (EL2004)^Channel 1^Output'}
{attribute 'pytmc' := ' pv: SL1K2:EXIT:VGC:1 '}
fb_SL1K2_EXIT_VGC_1 : FB_VGC;
{attribute 'pytmc' := ' pv: MR2K2:FLAT:VGC:1 '}
fb_MR2K2_FLAT_VGC_1 : FB_VGC;
{attribute 'pytmc' := ' pv: MR2K2:FLAT:VGC:2 '}
fb_MR2K2_FLAT_VGC_2 : FB_VGC;
{attribute 'pytmc' := ' pv: MR3K2:KBH:VGC:1 '}
fb_MR3K2_KBH_VGC_1 : FB_VGC;
{attribute 'pytmc' := ' pv: MR3K2:KBH:VGC:2 '}
fb_MR3K2_KBH_VGC_2 : FB_VGC;
{attribute 'pytmc' := ' pv: MR4K2:KBV:VGC:1 '}
fb_MR4K2_KBV_VGC_1 : FB_VGC;
{attribute 'pytmc' := ' pv: MR4K2:KBV:VGC:2 '}
fb_MR4K2_KBV_VGC_2 : FB_VGC;
{attribute 'pytmc' := ' pv: LI3K2:K2B:VWC:1 '}
fb_LI3K2_K2B_VWC_1 : FB_VGC;
{attribute 'TcLinkTo' :=    '.i_xOpnLS               :=     TIIB[EL1004_05_01]^Channel 3^Input;
                                 .i_xClsLS   := TIIB[EL1004_05_01]^Channel 4^Input ;
                                 .q_xOPN_DO  := TIIB[EL2004_05_02]^Channel 2^Output'}
{attribute 'pytmc' := ' pv: LI2K2:K2A:VWC:1 '}
fb_LI2K2_K2A_VWC_1 : FB_VGC;

// VGC EP Valves
{attribute 'TcLinkTo' :=    '.i_xOpnLS      :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 1^Input;
                                 .i_xClsLS  :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 2^Input;
                                .q_xOPN_DO  :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 11^Output'}
{attribute 'pytmc' := ' pv: ST1K2:PPS:VGC:1 '}
fb_ST1K2_PPS_VGC_1 : FB_VGC;
{attribute 'TcLinkTo' :=    '.i_xOpnLS      :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 5^Input;
                                 .i_xClsLS  :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 6^Input;
                                .q_xOPN_DO  :=      TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 62 (EK1122)^Box 110 (EP2338-0002)^Channel 15^Output'}
{attribute 'pytmc' := ' pv: SP1K2:PAX:VGC:1 '}
fb_SP1K2_PAX_VGC_1 : FB_VGC;


//SP1K2 VRCs
{attribute 'pytmc' := ' pv: SP1K2:PAX:VRC:1 '}
{attribute 'TcLinkTo' :=    '.i_xOpnLS               :=     TIIB[Term 157 (EL1004)]^Channel 1^Input;
                                 .i_xClsLS   := TIIB[Term 157 (EL1004)]^Channel 2^Input ;
                                 .q_xOPN_DO  := TIIB[Term 158 (EL2004)]^Channel 1^Output'}
fb_SP1K2_PAX_VRC_1 : FB_VRC;
{attribute 'pytmc' := ' pv: SP1K2:PAX:VRC:2 '}
{attribute 'TcLinkTo' :=    '.i_xOpnLS              :=      TIIB[Term 157 (EL1004)]^Channel 3^Input;
                                 .i_xClsLS          := TIIB[Term 157 (EL1004)]^Channel 4^Input ;
                                 .q_xOPN_DO := TIIB[Term 158 (EL2004)]^Channel 2^Output'}
fb_SP1K2_PAX_VRC_2 : FB_VRC;
{attribute 'pytmc' := ' pv: SP1K2:PAX:VRM:3 '}
{attribute 'TcLinkTo' :=    '.i_xOpnLS              :=      TIIB[Term 159 (EL1004)]^Channel 1^Input;
                                 .i_xClsLS          := TIIB[Term 159 (EL1004)]^Channel 2^Input ;
                                 .q_xOPN_DO := TIIB[Term 158 (EL2004)]^Channel 3^Output'}
fb_SP1K2_PAX_VRM_3 : FB_VRC;
{attribute 'pytmc' := ' pv: SP1K2:PAX:VRC:4 '}
{attribute 'TcLinkTo' :=    '.i_xOpnLS              :=      TIIB[Term 169 (EL1004)]^Channel 1^Input;
                                 .i_xClsLS          := TIIB[Term 169 (EL1004)]^Channel 2^Input ;
                                 .q_xOPN_DO := TIIB[Term 168 (EL2004)]^Channel 1^Output'}
fb_SP1K2_PAX_VRC_4 : FB_VRC;

//{attribute 'pytmc' := ' pv: SP1K2:PAX:VRC:5 '}
//{attribute 'TcLinkTo' :=  '.i_xOpnLS              :=      TIIB[Term 169 (EL1004)]^Channel 3^Input;
//                                .i_xClsLS         := TIIB[Term 169 (EL1004)]^Channel 4^Input ;
//                                 .q_xOPN_DO       := TIIB[Term 168 (EL2004)]^Channel 2^Output'}
//fb_SP1K2_PAX_VRC_5 : FB_VRC; (Not beign installed currently)

// PIP_Gamma Pumps

{attribute 'pytmc' := ' pv: PC1K1:ZOS:PIP:1 '}
fb_PC1K1_ZOS_PIP_1 : FB_PIP_GAMMA;
//{attribute 'pytmc' := ' pv: PC1K1:ZOS:PIP:2 '}
//fb_PC1K1_ZOS_PIP_2 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: MR1K2:SWITCH:PIP:1 '}
fb_MR1K2_SWITCH_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: TV1K1:PLEG:PIP:1 '}
fb_TV1K1_PLEG_PIP_1 : FB_PIP_GAMMA;
{attribute 'TcLinkTo' :=    '.i_iPRESS              :=      TIIB[B950_233_R02 (E3) (EL3064)]^AI Standard Channel 1^GVL_KFE_RIX_VAC.fb_ST1K2_PPS_PIP_1.i_iPRESS;
                                 .i_xSP_DI          :=  TIIB[B950_233_R02 (E4) (EL1004)]^Channel 1^GVL_KFE_RIX_VAC.fb_ST1K2_PPS_PIP_1.i_xSP_DI;
                                 .q_xHVEna_DO       := TIIB[B950_233_R02 (E2) (EL2794)]^Channel 1^GVL_KFE_RIX_VAC.fb_ST1K2_PPS_PIP_1.q_xHVEna_DO'}
{attribute 'pytmc' := ' pv: ST1K2:PPS:PIP:1 '}
fb_ST1K2_PPS_PIP_1 : FB_PIP_GAMMA;

{attribute 'TcLinkTo' :=    '.i_iPRESS              :=      TIIB[Term 7 (EL3064)]^AI Standard Channel 1^Value;
                                 .i_xSP_DI          :=  TIIB[Term 8 (EL1004)]^Channel 1^Input;
                                 .q_xHVEna_DO       := TIIB[Term 6 (EL2794)]^Channel 1^Output'}
{attribute 'pytmc' := ' pv: SL1K2:EXIT:PIP:1 '}
fb_SL1K2_EXIT_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: MR2K2:FLAT:PIP:1 '}
fb_MR2K2_FLAT_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: MR3K2:KBH:PIP:1 '}
fb_MR3K2_KBH_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: MR4K2:KBV:PIP:1 '}
fb_MR4K2_KBV_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: TV4K2:PIP:1 '}
fb_TV4K2_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: IM5K2:PPM:PIP:1 '}
fb_IM5K2_PPM_PIP_1 : FB_PIP_GAMMA;
{attribute 'pytmc' := ' pv: PA1K2:PIP:1 '}
fb_PA1K2_PIP_1 : FB_PIP_GAMMA;

{attribute 'pytmc' := ' pv: SP1K2:PAX:PIP:1 '}
{attribute 'TcLinkTo' :=    '.i_iPRESS              := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 53 (EL3064)^AI Standard Channel 2^Value ;
                               .q_xHVEna_DO         := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 52 (EL2794)^Channel 2^Output ;
                               .i_xSP_DI            := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 45 (EK1521-0010)^Term 47 (EK1501-0010)^Term 54 (EL1004)^Channel 2^Input '}
fb_SP1K2_PAX_PIP_1 : FB_PIP_GAMMA;

//SIP PIP NexTORR Pumps
{attribute 'pytmc' := ' pv: IM2K2:PPM:PIP:1 '}
fb_IM2K2_PPM_PIP_1 : FB_PIP_SIP;
{attribute 'pytmc' := ' pv: IM3K2:PPM:PIP:1 '}
fb_IM3K2_PPM_PIP_1 : FB_PIP_SIP;
{attribute 'pytmc' := ' pv: IM4K2:PPM:PIP:1 '}
fb_IM4K2_PPM_PIP_1 : FB_PIP_SIP;
{attribute 'pytmc' := ' pv: LI2K2:K2A:PIP:1 '}
fb_LI2K2_K2A_PIP_1 : FB_PIP_SIP;
{attribute 'pytmc' := ' pv: ST3K2:TERM:PIP:1 '}
fb_ST3K2_TERM_PIP_1 : FB_PIP_SIP;


//PAX Turbo pumps (Pfeiffer turbo pumps TC400 *)

{attribute 'pytmc' := ' pv: SP1K2:PAX:PTM:1 '}
{attribute 'TcLinkTo' :=    '.i_xAtSpd                    := TIIB[Term 160 (EL1004)]^Channel 1^Input ;
                               .i_xRemote         := TIIB[Term 160 (EL1004)]^Channel 2^Input ;
                               .i_xFaultNC            := TIIB[Term 160 (EL1004)]^Channel 3^Input;
                               .q_RunDO           := TIIB[Term 161 (EL2004)]^Channel 1^Output;
                               .q_xRemote         := TIIB[Term 161 (EL2004)]^Channel 2^Output ;
                               .q_PumpingStation  := TIIB[Term 161 (EL2004)]^Channel 3^Output'}
fb_SP1K2_PAX_PTM_01 : FB_PTM_Pfeiffer;
{attribute 'pytmc' := ' pv: SP1K2:PAX:PTM:2 '}
{attribute 'TcLinkTo' :=    '.i_xAtSpd                    := TIIB[Term 163 (EL1004)]^Channel 1^Input ;
                               .i_xRemote         := TIIB[Term 163 (EL1004)]^Channel 2^Input ;
                               .i_xFaultNC            := TIIB[Term 163 (EL1004)]^Channel 3^Input;
                               .q_RunDO           := TIIB[Term 165 (EL2004)]^Channel 1^Output;
                               .q_xRemote         := TIIB[Term 165 (EL2004)]^Channel 2^Output ;
                               .q_PumpingStation  := TIIB[Term 165 (EL2004)]^Channel 3^Output'}
fb_SP1K2_PAX_PTM_02 : FB_PTM_Pfeiffer;

//VFS

{attribute 'pytmc' := '             pv: TV1K2:VFS:1 '}
    {attribute 'TcLinkTo' :=        '.q_xPress_OK           :=      TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xPress_OK;
                                    .q_xOPN_SW                      :=  TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xOPN_SW;
                               .q_xCLS_SW                   :=  TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xCLS_SW;
                             .q_xVAC_FAULT_Reset:=  TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xVAC_FAULT_Reset;
                             .q_xOverrideMode       :=      TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xOverrideMode;
                                 .q_xOverrideOpen   := TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xOverrideOpen;
                                 .i_xTrigger                :=      TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_xTrigger;
                                 .i_xVFS_Open               := TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_xVFS_Open;
                                 .i_xVFS_Closed             :=      TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_xVFS_Closed;
                             .i_xVAC_FAULT_OK       :=  TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_xVAC_FAULT_OK;
                             .i_xMPS_OK                     :=  TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_xMPS_OK;
                             .i_eVFS_State          :=      TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Outputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.q_eVFS_State;
                                 .q_xVetoValveOpenDO := TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xVetoValveOpenDO;
                                 .q_xVetoValveClosed := TIPC^plc_kfe_rix_vac^plc_kfe_rix_vac Instance^FSTask Inputs^GVL_RIX_VAC_FS_DEVICES.fb_TV1K2_VFS_1.i_xVetoValveClosed        '}
fb_TV1K2_VFS_Interface : FB_VFS_Interface;


//Interface for KFE Valve - SP1K1-MONO-VGC-2
{attribute 'pytmc' :=' pv: PC1K1:ZOS:GCC:1:ILK'}
    st_RIX_ILK                      :       ST_EXT_ILK;

    {attribute 'TcLinkTo' :=        '.q_xILK_OK_DO  := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 11 (EL2794)^Channel 1^Output '}

    fb_RIX_ILK                      :       FB_EXT_ILK;


(*Pfeiffer serial*)
stPfeiffer_CTRL_SP1K2_PAX_PTM_01     : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_SP1K2_PAX_PTM_01      : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_SP1K2_PAX_PTM_01       : FB_PFEIFFER_COM;

stPfeiffer_CTRL_SP1K2_PAX_PTM_02     : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_SP1K2_PAX_PTM_02      : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_SP1K2_PAX_PTM_02       : FB_PFEIFFER_COM;


END_VAR
Related:

GVL_RIX_INTF

VAR_GLOBAL
    ads_watch_dog : FB_ADS_WATCHDOG;
    ads_watch_dog_qrix : FB_ADS_WATCHDOG;

    FB_MR3K2_FIM_ILK : FB_EXT_ILK;
    {attribute 'pytmc' := '
        pv: PLC:KFE:RIX:FIM:MR3K2:ILK
    '}
    ST_MR3K2_FIM_ILK : ST_EXT_ILK := (rPRO_SP := 8e-9);
    FB_MR4K2_FIM_ILK : FB_EXT_ILK;
    {attribute 'pytmc' := '
        pv: PLC:KFE:RIX:FIM:MR4K2:ILK
    '}
    ST_MR4K2_FIM_ILK : ST_EXT_ILK := (rPRO_SP := 8e-9);
END_VAR
Related:

GVL_RIX_VAC_FS_DEVICES

VAR_GLOBAL
    fb_TV1K2_VFS_1 : FB_VFS;
END_VAR

GVL_RIX_VAC_FSV_PMPS

VAR_GLOBAL
    {attribute 'pytmc' := '
        pv: PLC:KFE:RIX:VAC:K2:FFO:02
    '}
    {attribute 'TcLinkTo' := '.q_xFastFaultOut:=TIIB[PMPS_FFO (EL2202)]^Channel 2^Output'}
    g_FastFaultOutput2  :   FB_HardwareFFOutput:= (i_sNetID:='172.21.42.126.1.1');  //FFO for Fast Shutter Valves upstream of ST1K2_PPS
END_VAR

GVL_Serial_Com

//{attribute 'qualified_only'}
VAR_GLOBAL
    //COMM FUNCTION
    SerialRXBuffer_SP1K2_PAX_PTM_01     : ComBuffer;
    SerialTXBuffer_SP1K2_PAX_PTM_01     : ComBuffer;
    SerialRXBuffer_SP1K2_PAX_PTM_02     : ComBuffer;
    SerialTXBuffer_SP1K2_PAX_PTM_02     : ComBuffer;

    //Serial Terminal
    fbSerialLineControl_SP1K2_PAX_PTM_01     : SerialLineControl;
    fbSerialLineControl_SP1K2_PAX_PTM_02     : SerialLineControl;


    //SERIAL IO
    {attribute      'TcLinkTo'      :=      '.Status:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Status;
                                 .D[0]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 0;
                                 .D[1]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 1;
                                 .D[2]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 2;
                                 .D[3]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 3;
                                 .D[4]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 4;
                                 .D[5]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 5;
                                 .D[6]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 6;
                                 .D[7]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 7;
                                 .D[8]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 8;
                                 .D[9]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 9;
                                 .D[10]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 10;
                                 .D[11]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 11;
                                 .D[12]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 12;
                                 .D[13]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 13;
                                 .D[14]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 14;
                                 .D[15]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 15;
                                 .D[16]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 16;
                                 .D[17]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 17;
                                 .D[18]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 18;
                                 .D[19]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 19;
                                 .D[20]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 20;
                                 .D[21]:=TIIB[Term 162 (EL6021)]^COM TxPDO-Map Inputs^Data In 21
    '}
    stComIn_SP1K2_PAX_PTM_01 AT %I* : EL6inData22B;

    {attribute 'TcLinkTo'   :=      '.Ctrl:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Ctrl;
                                 .D[0]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 0;
                                 .D[1]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 1;
                                 .D[2]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 2;
                                 .D[3]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 3;
                                 .D[4]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 4;
                                 .D[5]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 5;
                                 .D[6]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 6;
                                 .D[7]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 7;
                                 .D[8]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 8;
                                 .D[9]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 9;
                                 .D[10]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 10;
                                 .D[11]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 11;
                                 .D[12]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 12;
                                 .D[13]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 13;
                                 .D[14]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 14;
                                 .D[15]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 15;
                                 .D[16]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 16;
                                 .D[17]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 17;
                                 .D[18]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 18;
                                 .D[19]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 19;
                                 .D[20]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 20;
                                 .D[21]:=TIIB[Term 162 (EL6021)]^COM RxPDO-Map Outputs^Data Out 21
    '}
    stComOut_SP1K2_PAX_PTM_01 AT %Q* : EL6outData22B;

    {attribute      'TcLinkTo'      :=      '.Status:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Status;
                                 .D[0]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 0;
                                 .D[1]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 1;
                                 .D[2]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 2;
                                 .D[3]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 3;
                                 .D[4]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 4;
                                 .D[5]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 5;
                                 .D[6]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 6;
                                 .D[7]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 7;
                                 .D[8]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 8;
                                 .D[9]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 9;
                                 .D[10]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 10;
                                 .D[11]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 11;
                                 .D[12]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 12;
                                 .D[13]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 13;
                                 .D[14]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 14;
                                 .D[15]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 15;
                                 .D[16]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 16;
                                 .D[17]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 17;
                                 .D[18]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 18;
                                 .D[19]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 19;
                                 .D[20]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 20;
                                 .D[21]:=TIIB[Term 166 (EL6021)]^COM TxPDO-Map Inputs^Data In 21
    '}
    stComIn_SP1K2_PAX_PTM_02 AT %I* : EL6inData22B;

    {attribute 'TcLinkTo'   :=      '.Ctrl:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Ctrl;
                                 .D[0]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 0;
                                 .D[1]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 1;
                                 .D[2]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 2;
                                 .D[3]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 3;
                                 .D[4]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 4;
                                 .D[5]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 5;
                                 .D[6]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 6;
                                 .D[7]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 7;
                                 .D[8]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 8;
                                 .D[9]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 9;
                                 .D[10]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 10;
                                 .D[11]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 11;
                                 .D[12]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 12;
                                 .D[13]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 13;
                                 .D[14]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 14;
                                 .D[15]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 15;
                                 .D[16]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 16;
                                 .D[17]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 17;
                                 .D[18]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 18;
                                 .D[19]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 19;
                                 .D[20]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 20;
                                 .D[21]:=TIIB[Term 166 (EL6021)]^COM RxPDO-Map Outputs^Data Out 21
    '}
    stComOut_SP1K2_PAX_PTM_02 AT %Q* : EL6outData22B;


END_VAR

GVL_Variables

VAR_GLOBAL

{attribute 'pytmc' := 'pv: RIX:FEE:VAC:OVRDON;
    field: ZNAM Override OFF;
     field: ONAM Override ON;
      io: io;
'}
xSystemOverrideMode1 : BOOL; (* Global system override for the prototype section*)

{attribute 'pytmc' := 'pv: RIX:HUT:VAC:OVRDON;
    field: ZNAM Override OFF;
     field: ONAM Override ON;
      io: io;
'}
xSystemOverrideMode2 : BOOL; (* Global system override for the prototype section*)

//Example implementation of the FFO
{attribute 'pytmc' := '
    pv: PLC:KFE:RIX:VAC:K2:FFO:01
'}
{attribute 'TcLinkTo' := '.q_xFastFaultOut:=TIIB[PMPS_FFO (EL2202)]^Channel 1^Output'}
g_FastFaultOutput1  :   FB_HardwareFFOutput:= (i_sNetID:='172.21.42.126.1.1');

{attribute 'pytmc' := '
    pv: PLC:KFE:RIX:VAC:ARB:01
'}
fbArbiter1 : FB_Arbiter(1);
{attribute 'pytmc' := '
    pv: PLC:KFE:RIX:VAC:ARB:02
'}
fbArbiter2 : FB_Arbiter(2);


fbLogHandler : FB_loghandler;

END_VAR

POUs

CheckBounds

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckBounds : DINT
VAR_INPUT
    index, lower, upper: DINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF  index < lower THEN
    CheckBounds := lower;
ELSIF  index > upper THEN
    CheckBounds := upper;
ELSE
    CheckBounds := index;
END_IF
{flow}

END_FUNCTION

CheckDivDInt

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivDInt : DINT
VAR_INPUT
    divisor:DINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF divisor = 0 THEN
    CheckDivDInt:=1;
ELSE
    CheckDivDInt:=divisor;
END_IF;
{flow}

END_FUNCTION

CheckDivLInt

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivLInt : LINT
VAR_INPUT
    divisor:LINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF divisor = 0 THEN
    CheckDivLInt:=1;
ELSE
    CheckDivLInt:=divisor;
END_IF;
{flow}

END_FUNCTION

CheckDivLReal

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivLReal : LREAL
VAR_INPUT
    divisor:LREAL;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF divisor = 0 THEN
    CheckDivLReal:=1;
ELSE
    CheckDivLReal:=divisor;
END_IF;
{flow}

END_FUNCTION

CheckDivReal

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
    divisor:REAL;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF divisor = 0 THEN
    CheckDivReal:=1;
ELSE
    CheckDivReal:=divisor;
END_IF;
{flow}

END_FUNCTION

CheckLRangeSigned

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckLRangeSigned : LINT
VAR_INPUT
    value, lower, upper: LINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF (value < lower) THEN
    CheckLRangeSigned := lower;
ELSIF(value > upper) THEN
    CheckLRangeSigned := upper;
ELSE
    CheckLRangeSigned := value;
END_IF

{flow}

END_FUNCTION

CheckLRangeUnsigned

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckLRangeUnsigned : ULINT
VAR_INPUT
    value, lower, upper: ULINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF (value < lower) THEN
    CheckLRangeUnsigned := lower;
ELSIF(value > upper) THEN
    CheckLRangeUnsigned := upper;
ELSE
    CheckLRangeUnsigned := value;
END_IF
{flow}

END_FUNCTION

CheckPointer

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
    ptToTest : POINTER TO BYTE; // Destination address of the pointer
    iSize : DINT;                   // Size of the type the pointer points to. (e.g: 20 for POINTER TO ARRAY [0..9] OF INT)
    iGran : DINT;                   // Granularity of the pointer access. This is the size of the biggest non-structured data type in the type the pointer points to. (e.g: 2 for POINTER TO ARRAY [0..9] OF INT)
    bWrite: BOOL;                   // Indicates read or write Access. TRUE = write access.
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF ptToTest=0 THEN
    ADSLOGSTR(ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_STRING,'CheckPointer failed due to invalid address.','');
ELSIF iSize<=0 THEN
    ADSLOGSTR(ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_STRING,'CheckPointer failed due to invalid size.','');
ELSIF iGran<=0 THEN
    ADSLOGSTR(ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_STRING,'CheckPointer failed due to invalid granularity.','');
// -> Please note that the following memory area check is time consuming:
//ELSIF F_CheckMemoryArea(pData:=ptToTest,nSize:=DINT_TO_UDINT(iSize)) = E_TcMemoryArea.Unknown THEN
//    ADSLOGSTR(ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_STRING,'CheckPointer failed due to unknown memory area.','');
END_IF
CheckPointer := ptToTest;
{flow}

END_FUNCTION

CheckRangeSigned

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckRangeSigned : DINT
VAR_INPUT
    value, lower, upper: DINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF (value < lower) THEN
    CheckRangeSigned := lower;
ELSIF(value > upper) THEN
    CheckRangeSigned := upper;
ELSE
    CheckRangeSigned := value;
END_IF
{flow}

END_FUNCTION

CheckRangeUnsigned

// Implicitly generated code : DO NOT EDIT
FUNCTION CheckRangeUnsigned : UDINT
VAR_INPUT
    value, lower, upper: UDINT;
END_VAR
// Implicitly generated code : Only an Implementation suggestion
{noflow}
IF (value < lower) THEN
    CheckRangeUnsigned := lower;
ELSIF(value > upper) THEN
    CheckRangeUnsigned := upper;
ELSE
    CheckRangeUnsigned := value;
END_IF
{flow}

END_FUNCTION

FB_EXT_ILK

FUNCTION_BLOCK FB_EXT_ILK
VAR_INPUT
    VG      :       ST_VG;
END_VAR
VAR_IN_OUT
    ILK     :       ST_EXT_ILK;
END_VAR
VAR_OUTPUT
END_VAR
VAR
    q_xILK_OK_DO     AT%Q*  :       BOOL; // Send the signal to indicate that the interlock pressure has been met.
END_VAR
// Indicate that the interlock condition is met.
ILK.xIlkOK                  := (VG.rPRESS < ILK.rPRO_SP) AND (VG.xPRESS_OK);
// Raise the output signal if the interlock condition is met AND the signal is enabled.
q_xILK_OK_DO                := (VG.rPRESS < ILK.rPRO_SP) AND (VG.xPRESS_OK) AND (ILK.xIlk_sw);
// Se PV  indicating the output status
ILK.q_xILK_OK_DO    := q_xILK_OK_DO;

END_FUNCTION_BLOCK
Related:

FB_PRO_ADS

(* This function block is created for interface devices between different PLC*)
(* Not all the Variables in the original structure is required, just few signals *)
(* The variable values are read via ADS using the symbol name*)
FUNCTION_BLOCK FB_PRO_ADS Extends FB_ADS
VAR_INPUT
    sNetId : String; //NetID of the Destination PLC controller
    nPort : uint; // port number
    sVarName : string;// the variable name of the declared gauge function block.
    iWatchdog:UDINT;//The watchdog variable name written to by the remote plc
END_VAR
VAR_OUTPUT
    {attribute 'pytmc' := 'pv:'}
    st_pro : ST_EbaraDryPump;
    bError: BOOL;
END_VAR
VAR
    fb_CheckWatchdog: FB_CheckWatchdog;
    fb_Read_PRO: FB_ReadAdsSymByName;
    ftReset: F_TRIG;
    xFirstPass: BOOL:= true;
END_VAR
ftReset(CLK:= fb_Read_PRO.bBusy OR xFirstPass);
xFirstPass := false;
(*calling ADS read function*)

//IG.xPRESS_OK := false;

fb_Read_PRO(
    bRead:=ftReset.Q ,
    sNetId:= sNetId,
    nPort:= nPort,
    sVarName:= CONCAT(sVarName,'.stPump'),
    nDestAddr:= ADR(st_pro),
    nLen:= SIZEOF(ST_EbaraDryPump),
    tTimeout:= ,
    eComMode:=eAdsComModeFastCom ,
    bBusy=> ,
    bError=> ,
    nErrorId=> );


(*Error*)
fb_CheckWatchdog(
    bEnable:= TRUE,
    tWatchdogTime:= T#900ms,
    nCnt:= iWatchdog ,
    bWatchdog=> ,
    nLastCnt=> );

bError:= fb_Read_PRO.bError OR fb_CheckWatchdog.bWatchdog;
tErrorPresent(CLK:=bError);

IF (fb_Read_PRO.bError OR fb_CheckWatchdog.bWatchdog) THEN
st_pro.i_xAlarm:= TRUE;
END_IF;

END_FUNCTION_BLOCK

MAIN

PROGRAM MAIN
VAR
fbArbiterIO: FB_SubSysToArbiter_IO;
fb_vetoArbiter: FB_VetoArbiter;
ff2_ff1_link_vac: FB_FastFault := (i_xAutoReset := TRUE, i_DevName := 'FF2 to FF1 Link', i_Desc := 'This is virtual FF2 fault, Please check the faulting device below', i_TypeCode := 16#9999);
END_VAR
PRG_KFE_RIX_VAC();
fbLogHandler();
PRG_RIX_INTF();

fbArbiterIO(i_bVeto:=  PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_OUT] AND NOT PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_IN],
    Arbiter:= fbArbiter1,
    fbFFHWO:= g_FastFaultOutput1);

g_FastFaultOutput1.bAutoReset := TRUE;
g_FastFaultOutput1.Execute(i_xVeto := PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_OUT]
                                       AND NOT PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_IN]);

// Temporary copy
g_FastFaultOutput2.Execute(i_xVeto := (PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_OUT]
                                      AND NOT PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.MR1K1_IN])
                                       OR PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.ST1K2]);

fb_vetoArbiter(bVeto:= PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.K_Stopper.ST1K2],
                HigherAuthority := fbArbiter1,
                LowerAuthority := fbArbiter2,
                FFO := g_FastFaultOutput2);


ff2_ff1_link_vac(
    io_fbFFHWO := g_FastFaultOutput1,
    i_xOK := g_FastFaultOutput2.q_xFastFaultOut);


//Code for Removing arbitration
fbArbiter1.AddRequest(nReqID := 16#FAFC, stReqBp := PMPS_GVL.cstFullBeam, sDevName := 'plc-rix-vac');
fbArbiter2.AddRequest(nReqID := 16#FAFD, stReqBp := PMPS_GVL.cstFullBeam, sDevName := 'plc-rix-vac');

END_PROGRAM
Related:

PRG_COM

PROGRAM PRG_COM
VAR

END_VAR
(*Instanitate Serial port com function *)
fbSerialLineControl_SP1K2_PAX_PTM_01(
    Mode:= SERIALLINEMODE_EL6_22B,
    pComIn:= ADR(stComIn_SP1K2_PAX_PTM_01),
    pComOut:= ADR(stComOut_SP1K2_PAX_PTM_01),
    SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_SP1K2_PAX_PTM_01)),
    TxBuffer:= SerialTXBuffer_SP1K2_PAX_PTM_01,
    RxBuffer:= SerialRXBuffer_SP1K2_PAX_PTM_01,
    Error=> ,
    ErrorID=> );

fbSerialLineControl_SP1K2_PAX_PTM_02(
    Mode:= SERIALLINEMODE_EL6_22B,
    pComIn:= ADR(stComIn_SP1K2_PAX_PTM_02),
    pComOut:= ADR(stComOut_SP1K2_PAX_PTM_02),
    SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_SP1K2_PAX_PTM_02)),
    TxBuffer:= SerialTXBuffer_SP1K2_PAX_PTM_02,
    RxBuffer:= SerialRXBuffer_SP1K2_PAX_PTM_02,
    Error=> ,
    ErrorID=> );

END_PROGRAM

PRG_KFE_RIX_VAC

PROGRAM PRG_KFE_RIX_VAC
VAR
vfs_dummy_gauge : ST_VG;
bm_dummy_gauge : ST_VG;

iWatchdog: UDINT;
qRIXS_ROUGH_GPI_02:FB_TGPI_ADS;
qRIXS_PRO_01:FB_PRO_ADS;

bSP1K2_PAX_VRC_1_ILK : BOOL := FALSE;
bSP1K2_PAX_VRC_2_ILK : BOOL := FALSE;
bSP1K2_PAX_VRC_3_ILK : BOOL := FALSE;
bSP1K2_PAX_VRC_4_ILK : BOOL := FALSE;
bSP1K2_PAX_VRC_5_ILK : BOOL := FALSE;

END_VAR
//ADS interfaces
qRIXS_ROUGH_GPI_02(
    sNetId:= '172.21.140.43.1.1',
    nPort:= 851,
    sVarName:= 'GVL_Devices.qRIXS_ROUGH_GPI_02',
    iWatchdog:= iWatchdog ,
    IG=> ,
    bError=> );
qRIXS_PRO_01(
    sNetId:= '172.21.140.43.1.1',
    nPort:= 851,
    sVarName:= 'GVL_Devices.qRIXS_PRO_01',
    iWatchdog:= iWatchdog ,
    st_pro=> ,
    bError=> );


// MKS275 Gauges

fb_PC1K1_ZOS_GPI_1(PG=>);
fb_PC1K1_ZOS_GPI_1.M_SetBits(30518);
fb_MR1K2_SWITCH_GPI_1(PG=>);
fb_MR1K2_SWITCH_GPI_1.M_SetBits(30518);
fb_TV1K1_PLEG_GPI_1(PG=>);
fb_TV1K1_PLEG_GPI_1.M_SetBits(30518);
fb_SL1K2_EXIT_GPI_1(PG=>);
fb_SL1K2_EXIT_GPI_1.M_SetBits(30518);
fb_ST1K2_PPS_GPI_1(PG=>);
fb_MR2K2_FLAT_GPI_1(PG=>);
fb_MR2K2_FLAT_GPI_1.M_SetBits(30518);
fb_MR3K2_KBH_GPI_1(PG=>);
fb_MR3K2_KBH_GPI_1.M_SetBits(30518);
fb_MR4K2_KBV_GPI_1(PG=>);
fb_MR4K2_KBV_GPI_1.M_SetBits(30518);
fb_SP1K2_PAX_GPI_1(PG=>);
fb_SP1K2_PAX_GPI_1.M_SetBits(30518);
fb_SP1K2_PAX_GPI_2(PG=>);
fb_SP1K2_PAX_GPI_2.M_SetBits(30518);
fb_IM5K2_PPM_GPI_1(PG=>);
fb_IM5K2_PPM_GPI_1.M_SetBits(30518);

//New Superbee piranis
fb_TM2K2_ATM_GPI_1(PG=>);
fb_TM2K2_ATM_GPI_1.M_SetBits(30518);
fb_LI4K2_K2A_GPI_1(PG=>);

//beamline dummy gauge
bm_dummy_gauge.xPRESS_OK := TRUE;
bm_dummy_gauge.xAT_VAC := TRUE;
bm_dummy_gauge.eState := ValidLo;
bm_dummy_gauge.rPRESS := 1e-4;

// MKS500 Gauges

fb_PC1K1_ZOS_GCC_1(PG := fb_PC1K1_ZOS_GPI_1.PG, bEP := FALSE);
fb_PC1K1_ZOS_GCC_1.M_SetBits(30518);
fb_MR1K2_SWITCH_GCC_1(PG := fb_MR1K2_SWITCH_GPI_1.PG, bEP := FALSE);
fb_MR1K2_SWITCH_GCC_1.M_SetBits(30518);
fb_TV1K1_PLEG_GCC_1(PG := fb_TV1K1_PLEG_GPI_1.PG, bEP := TRUE);
fb_TV1K1_PLEG_GCC_1.M_SetBits(30518);
fb_SL1K2_EXIT_GCC_1(PG := fb_SL1K2_EXIT_GPI_1.PG, bEP := FALSE);
fb_SL1K2_EXIT_GCC_1.M_SetBits(30518);
fb_ST1K2_PPS_GCC_1(PG := fb_ST1K2_PPS_GPI_1.PG, bEP := TRUE);
fb_MR2K2_FLAT_GCC_1(PG := fb_MR2K2_FLAT_GPI_1.PG, bEP := FALSE);
fb_MR2K2_FLAT_GCC_1.M_SetBits(30518);
fb_IM2K2_PPM_GCC_1(PG := fb_MR3K2_KBH_GPI_1.PG, bEP := FALSE);
fb_IM2K2_PPM_GCC_1.M_SetBits(30518);
fb_MR3K2_KBH_GCC_1(PG := fb_MR3K2_KBH_GPI_1.PG, bEP := False);
fb_MR3K2_KBH_GCC_1.M_SetBits(30518);
fb_IM3K2_PPM_GCC_1(PG := fb_MR4K2_KBV_GPI_1.PG, bEP := False);
fb_IM3K2_PPM_GCC_1.M_SetBits(30518);
fb_MR4K2_KBV_GCC_1(PG := fb_MR4K2_KBV_GPI_1.PG, bEP := False);
fb_MR4K2_KBV_GCC_1.M_SetBits(30518);
fb_IM4K2_PPM_GCC_1(PG := fb_MR4K2_KBV_GPI_1.PG, bEP := False);
fb_IM4K2_PPM_GCC_1.M_SetBits(30518);
fb_IM5K2_PPM_GCC_1(PG := bm_dummy_gauge, bEP := False);
fb_IM5K2_PPM_GCC_1.M_SetBits(30518);
fb_TM2K2_K2B_GCC_1(PG := bm_dummy_gauge, bEP := False);
fb_TM2K2_K2B_GCC_1.M_SetBits(30518);
fb_IM6K2_PPM_GCC_1(PG := bm_dummy_gauge, bEP := TRUE);
fb_SP1K2_PAX_GCC_1(PG := fb_SP1K2_PAX_GPI_1.PG, bEP := False);
fb_SP1K2_PAX_GCC_1.M_SetBits(30518);
fb_SP1K2_PAX_GCC_2(PG := fb_SP1K2_PAX_GPI_2.PG);
fb_SP1K2_PAX_GCC_2.M_SetBits(30518);

//MKS422
fb_TV4K2_GFS_1(PG := bm_dummy_gauge);

// VGC Valves

fb_MR1K2_SWITCH_VGC_1(
                         i_stUSG := fb_PC1K1_ZOS_PIP_1.q_IG,
                         i_stDSG := fb_MR1K2_SWITCH_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode1,
                         io_fbFFHWO := g_FastFaultOutput1, fbArbiter := fbArbiter1);
fb_MR1K2_SWITCH_VGC_2(
                         i_stUSG := fb_MR1K2_SWITCH_PIP_1.q_IG,
                         i_stDSG := fb_TV1K1_PLEG_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := fb_TV1K2_VFS_Interface.i_xVAC_FAULT_OK,
                         i_xOverrideMode := xSystemOverrideMode1,
                         io_fbFFHWO := g_FastFaultOutput1, fbArbiter := fbArbiter1);

fb_SL1K2_EXIT_VGC_1(
                         i_stUSG := fb_TV1K1_PLEG_PIP_1.q_IG,
                         i_stDSG := fb_SL1K2_EXIT_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := fb_TV1K2_VFS_Interface.i_xVAC_FAULT_OK,
                         i_xOverrideMode := xSystemOverrideMode1,
                         io_fbFFHWO := g_FastFaultOutput1, fbArbiter := fbArbiter1);

fb_ST1K2_PPS_VGC_1(
                         i_stUSG := fb_SP1K2_PAX_PIP_1.q_IG,
                         i_stDSG := fb_ST1K2_PPS_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode1,
                         io_fbFFHWO := g_FastFaultOutput1, fbArbiter := fbArbiter1);

fb_MR2K2_FLAT_VGC_1(
                         i_stUSG := fb_ST1K2_PPS_PIP_1.q_IG,
                         i_stDSG := fb_MR2K2_FLAT_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_MR2K2_FLAT_VGC_2(
                         i_stUSG := fb_MR2K2_FLAT_PIP_1.q_IG,
                         i_stDSG := fb_IM2K2_PPM_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_MR3K2_KBH_VGC_1(
                         i_stUSG := fb_IM2K2_PPM_PIP_1.q_IG,
                         i_stDSG := fb_MR3K2_KBH_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_MR3K2_KBH_VGC_2(
                         i_stUSG := fb_MR3K2_KBH_PIP_1.q_IG,
                         i_stDSG := fb_IM3K2_PPM_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_MR4K2_KBV_VGC_1(
                         i_stUSG := fb_IM3K2_PPM_PIP_1.q_IG,
                         i_stDSG := fb_MR4K2_KBV_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_MR4K2_KBV_VGC_2(
                         i_sDevName:='MR4K2_KBV_VGC_2',
                         i_stUSG := fb_MR4K2_KBV_PIP_1.q_IG,
                         i_stDSG := fb_IM5K2_PPM_GCC_1.IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_LI3K2_K2B_VWC_1(
                         i_stUSG := fb_TM2K2_K2B_GCC_1.IG,
                         i_stDSG := fb_TM2K2_K2B_GCC_1.IG,
                         i_xDis_DPIlk := FALSE,
                         i_xIsAperture := TRUE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

fb_SP1K2_PAX_VGC_1(
                         i_stUSG := fb_SL1K2_EXIT_PIP_1.q_IG,
                         i_stDSG := fb_SP1K2_PAX_PIP_1.q_IG,
                         i_xDis_DPIlk := FALSE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode1,
                         io_fbFFHWO := g_FastFaultOutput1, fbArbiter := fbArbiter1);

fb_LI2K2_K2A_VWC_1(
                         i_stUSG := fb_IM5K2_PPM_GCC_1.IG,
                         i_stDSG := fb_IM5K2_PPM_GCC_1.IG,
                         i_xDis_DPIlk := FALSE,
                         i_xIsAperture := TRUE,
                         i_xEPS_OK := TRUE,
                         i_xPMPS_OK := TRUE,
                         i_xExt_OK := TRUE,
                         i_xOverrideMode := xSystemOverrideMode2,
                         io_fbFFHWO := g_FastFaultOutput2, fbArbiter := fbArbiter2);

//PAX VRCs
bSP1K2_PAX_VRC_1_ILK := F_TurboGateValve_Protection_ILK(i_Turbo:=fb_SP1K2_PAX_PTM_01.iq_stPtm,
                                               i_stISG:=fb_SP1K2_PAX_GPI_1.PG,
                                               i_stBSG:=qRIXS_ROUGH_GPI_02.IG,
                                                 ScrollPump:=qRIXS_PRO_01.st_pro);
fb_SP1K2_PAX_VRC_1(i_xExtILK_OK:=bSP1K2_PAX_VRC_1_ILK,
            i_xOverrideMode:=xSystemOverrideMode1,
            iq_stValve =>);

bSP1K2_PAX_VRC_2_ILK := F_TurboGateValve_Protection_ILK(i_Turbo:=fb_SP1K2_PAX_PTM_02.iq_stPtm,
                                               i_stISG:=fb_SP1K2_PAX_GPI_2.PG,
                                               i_stBSG:=qRIXS_ROUGH_GPI_02.IG,
                                                 ScrollPump:=qRIXS_PRO_01.st_pro);
fb_SP1K2_PAX_VRC_2(i_xExtILK_OK:=bSP1K2_PAX_VRC_2_ILK,
            i_xOverrideMode:=xSystemOverrideMode1,
            iq_stValve =>);

//Manual Valve, only readback
fb_SP1K2_PAX_VRM_3(i_xExtILK_OK:=TRUE,
            i_xOverrideMode:=xSystemOverrideMode1,
            iq_stValve =>);

// backing PAX chamber
fb_SP1K2_PAX_VRC_4(i_xExtILK_OK :=  qRIXS_PRO_01.st_pro.eState = E_PumpState.pumpRUNNING, i_xOverrideMode := xSystemOverrideMode1, iq_stValve =>)   ;


//PAX Turbo Pumps (PTM) ILK
fb_SP1K2_PAX_PTM_01(i_xExtIlkOK:= fb_SP1K2_PAX_VRC_4.M_IsOpen()
                AND F_TurboExtILKLogic_2(Turbo:=fb_SP1K2_PAX_PTM_01.iq_stPTM,BackingGauge:=qRIXS_ROUGH_GPI_02.IG, InletGauge:=fb_SP1K2_PAX_GPI_1.PG, ScrollPump:= qRIXS_PRO_01.st_pro) );

fb_SP1K2_PAX_PTM_02(i_xExtIlkOK:= fb_SP1K2_PAX_VRC_4.M_IsOpen()
                AND F_TurboExtILKLogic_2(Turbo:=fb_SP1K2_PAX_PTM_02.iq_stPTM,BackingGauge:=qRIXS_ROUGH_GPI_02.IG, InletGauge:=fb_SP1K2_PAX_GPI_2.PG, ScrollPump:= qRIXS_PRO_01.st_pro) );


(*********SERIAL COMMUNICATION**********)
(*Pfeiffer pumps*)
//SP1K2_PAX_PTM_01
(*Assign adresses to the pfeiffer controllers connected to this serial terminal*)
stPfeiffer_CTRL_SP1K2_PAX_PTM_01[1].iSerialAddress:= 1;
stPfeiffer_CTRL_SP1K2_PAX_PTM_01[1].xEnableComm:= TRUE;
(*Instanitate the Function block for serial communication with Pfeiffer*)
fbPfeifferCom_SP1K2_PAX_PTM_01(astPfeifferControl:= stPfeiffer_CTRL_SP1K2_PAX_PTM_01,
                              astPfeifferStatus:= stPfeiffer_RBK_SP1K2_PAX_PTM_01,
                              SerialRXBuffer:= SerialRXBuffer_SP1K2_PAX_PTM_01,
                              SerialTXBuffer:= SerialTXBuffer_SP1K2_PAX_PTM_01);
(*Copy Status Pv's into the PTM structure*)
fb_SP1K2_PAX_PTM_01.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_SP1K2_PAX_PTM_01[1],
                            st_Pfeiffer_CTRL:= stPfeiffer_CTRL_SP1K2_PAX_PTM_01[1]);

//SP1K2_PAX_PTM_02
(*Assign adresses to the pfeiffer controllers connected to this serial terminal*)
stPfeiffer_CTRL_SP1K2_PAX_PTM_02[1].iSerialAddress:= 1;
stPfeiffer_CTRL_SP1K2_PAX_PTM_02[1].xEnableComm:= TRUE;
(*Instanitate the Function block for serial communication with Pfeiffer*)
fbPfeifferCom_SP1K2_PAX_PTM_02(astPfeifferControl:= stPfeiffer_CTRL_SP1K2_PAX_PTM_02,
                              astPfeifferStatus:= stPfeiffer_RBK_SP1K2_PAX_PTM_02,
                              SerialRXBuffer:= SerialRXBuffer_SP1K2_PAX_PTM_02,
                              SerialTXBuffer:= SerialTXBuffer_SP1K2_PAX_PTM_02);
(*Copy Status Pv's into the PTM structure*)
fb_SP1K2_PAX_PTM_02.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_SP1K2_PAX_PTM_02[1],
                            st_Pfeiffer_CTRL:= stPfeiffer_CTRL_SP1K2_PAX_PTM_02[1]);

// PIP_Gamma Pumps

fb_PC1K1_ZOS_PIP_1(i_stGauge := fb_PC1K1_ZOS_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);
fb_MR1K2_SWITCH_PIP_1(i_stGauge := fb_MR1K2_SWITCH_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);
fb_TV1K1_PLEG_PIP_1(i_stGauge := fb_TV1K1_PLEG_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);
fb_SL1K2_EXIT_PIP_1(i_stGauge := fb_SL1K2_EXIT_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);
fb_ST1K2_PPS_PIP_1(i_stGauge := fb_ST1K2_PPS_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);
fb_MR2K2_FLAT_PIP_1(i_stGauge := fb_MR2K2_FLAT_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode2);
fb_MR3K2_KBH_PIP_1(i_stGauge := fb_MR3K2_KBH_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode2);
fb_MR4K2_KBV_PIP_1(i_stGauge := fb_MR4K2_KBV_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode2);
fb_TV4K2_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_IM5K2_PPM_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_PA1K2_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_SP1K2_PAX_PIP_1(i_stGauge := fb_ST1K2_PPS_GPI_1.PG, i_xOverrideMode := xSystemOverrideMode1);  //change interlock to SP1K2 GPI once connected

//SIP Pumps
fb_IM2K2_PPM_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_IM3K2_PPM_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_IM4K2_PPM_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_LI2K2_K2A_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);
fb_ST3K2_TERM_PIP_1(i_stGauge := bm_dummy_gauge, i_xOverrideMode := xSystemOverrideMode2);

//Fast shutter Valve Interface
vfs_dummy_gauge.xPRESS_OK := TRUE;
vfs_dummy_gauge.rPRESS := 0.0000001;
fb_TV1K2_VFS_Interface(IG:=fb_TV4K2_GFS_1.IG, iq_stValve=> , Veto_Valve:=fb_MR4K2_KBV_VGC_2.iq_stValve, i_xVAC_FAULT_OK=> );
//TV1K2_VFS_Interface(IG:= fb_TV4K2_GFS_1.IG);


//Interface for KFE VAC SP1K1-ZOS-VGC-2
// Update interlock signals for RIX
fb_RIX_ILK(
    VG      :=      fb_PC1K1_ZOS_PIP_1.q_IG, //fb_PC1K1_ZOS_GCC_1.IG,
    ILK     :=      st_RIX_ILK
);

END_PROGRAM
Related:

PRG_KFE_RIX_VAC_FS

PROGRAM PRG_KFE_RIX_VAC_FS
VAR
END_VAR
//Fast Shutter Valve

fb_TV1K2_VFS_1(
    i_xVeto_Enable:=False,
    i_xPMPS_OK:= TRUE,
    i_xExt_OK:= TRUE,
    i_sDevName:= 'TV1K2:VFS:1',
    io_fbFFHWO:= g_FastFaultOutput2
);
(*FastFaultOuput*)
g_FastFaultOutput2.Execute(bAutoReset:= TRUE);

END_PROGRAM

PRG_RIX_INTF

PROGRAM PRG_RIX_INTF
VAR
{attribute 'pytmc' := '
        pv: PLC:KFE:RIX:FIM:COMBO:ILK
        io: i;
'}
FB_FIM_ILK  AT%Q*   :       BOOL;
END_VAR
ads_watch_dog(
    sNetId := '172.21.140.47.1.1', // AMS NET ID of the PLC reading from this PLC
    nPort := 851, // ADS port of the PLC reading from this PLC
    sVarName := 'PRG_ADS_Interfaces.i_iWatchdog', // Full name of the UDINT provided to the 'iWatchdog' parameter in the interface functions on the PLC reading from this PLC
);

ads_watch_dog_qrix(
    sNetId := '172.21.140.43.1.1', // AMS NET ID of the PLC reading from this PLC
    nPort := 851, // ADS port of the PLC reading from this PLC
    sVarName := 'PRG_SampleChamber.iWatchdog', // Full name of the UDINT provided to the 'iWatchdog' parameter in the interface functions on the PLC reading from this PLC
);

FB_MR3K2_FIM_ILK(
    VG := fb_MR3K2_KBH_PIP_1.q_IG,
    ILK := ST_MR3K2_FIM_ILK,
);

FB_MR4K2_FIM_ILK(
    VG := fb_MR4K2_KBV_PIP_1.q_IG,
    ILK := ST_MR4K2_FIM_ILK,
);

FB_FIM_ILK := ( ST_MR3K2_FIM_ILK.q_xILK_OK_DO AND ST_MR4K2_FIM_ILK.q_xILK_OK_DO );

END_PROGRAM