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