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: * `ST_EXT_ILK`_ 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: * `FB_EXT_ILK`_ * `GVL_RIX_VAC_FS_DEVICES`_ * `ST_EXT_ILK`_ 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: * `FB_EXT_ILK`_ * `ST_EXT_ILK`_ 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: * `ST_EXT_ILK`_ 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_KFE_RIX_VAC`_ * `PRG_RIX_INTF`_ 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: * `FB_PRO_ADS`_ 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