DUTs ---- 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_txi_hxr_vac : ST_LibVersion := (iMajor := 2, iMinor := 0, iBuild := 0, iRevision := 0, nFlags := 1, sVersion := '2.0.0'); END_VAR GVL_Interfaces ^^^^^^^^^^^^^^ :: {attribute 'qualified_only'} VAR_GLOBAL //Adding Interface with LFE VAC PLC, PC2L1_VGC reading PC2L1_PIP {attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E15 (EL6692)^IO Outputs^PC2L1_PIP_01_rPress'} PC2L1_PIP_01_Interface_rPress AT%Q*: REAL; {attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E15 (EL6692)^IO Outputs^PC2L1_PIP_01_AT_VAC'} PC2L1_PIP_01_Interface_xAT_VAC AT%Q*: BOOL; {attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E15 (EL6692)^IO Outputs^PC2L1_PIP_01_PRESS_OK'} PC2L1_PIP_01_Interface_xPRESS_OK AT%Q*: BOOL; END_VAR GVL_TXI_VAC_FS ^^^^^^^^^^^^^^ :: VAR_GLOBAL {attribute 'pytmc' := ' pv: TV2L1:VFS:01 '} {attribute 'TcLinkTo' := '.q_xPress_OK := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xPress_OK; .q_xOPN_SW := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xOPN_SW; .q_xCLS_SW := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xCLS_SW; .q_xVAC_FAULT_Reset := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xVAC_FAULT_Reset; .q_xOverrideMode := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xOverrideMode; .q_xOverrideOpen := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xOverrideOpen; .i_xTrigger := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_xTrigger; .i_xVFS_Open := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_xVFS_Open; .i_xVFS_Closed := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_xVFS_Closed; .i_xVAC_FAULT_OK := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_xVAC_FAULT_OK; .i_xMPS_OK := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_xMPS_OK; .i_eVFS_State := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Outputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.q_eVFS_State; .q_xVetoValveOpenDO := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xVetoValveOpenDO; .q_xVetoValveClosed := TIPC^txi_hxr_vac^txi_hxr_vac Instance^VFSTask Inputs^GVL_TXI_VAC_FS.TV2L1_VFS_1.i_xVetoValveClosed'} TV2L1_VFS_1_Interface : FB_VFS_Interface; {attribute 'TcLinkTo' := ' .q_xClose_A := TIIB[100H1-L1S01-EK0 (EK1100)]^E1 (EL2202)^Channel 1^Output; .q_xClose_B := TIIB[100H1-L1S01-EK0 (EK1100)]^E1 (EL2202)^Channel 2^Output; .q_xClose_C := TIIB[100H1-L1S01-EK0 (EK1100)]^E2 (EL2202)^Channel 1^Output; .q_xOPN_DO := TIIB[100H1-L1S01-EK0 (EK1100)]^E2 (EL2202)^Channel 2^Output; .i_xClsLS := TIIB[100H1-L1S01-EK0 (EK1100)]^E3 (EL1004)^Channel 1^Input; .i_xOpnLS := TIIB[100H1-L1S01-EK0 (EK1100)]^E3 (EL1004)^Channel 2^Input; .i_xTrigger := TIIB[Term 1 (EK1200)]^E6 (EL1124)^Channel 1^Input'} TV2L1_VFS_1 : FB_VFS; END_VAR GVL_TXI_VAC_FS_PMPS ^^^^^^^^^^^^^^^^^^^ :: VAR_GLOBAL {attribute 'pytmc' := ' pv: PLC:TXI:LFE:VAC:FFO:02 '} {attribute 'TcLinkTo' := '.q_xFastFaultOut:=TIIB[FFO]^Channel 2^Output'} g_FastFaultOutput2 : FB_HardwareFFOutput:= (i_sNetID:='172.21.42.126.1.1'); //FFO for Fast Shutter Valves downstream of ST1L1 END_VAR GVL_TXI_VAC_GAUGES ^^^^^^^^^^^^^^^^^^ :: VAR_GLOBAL // B940-008-L0S23-PNL-1 (Fee) {attribute 'pytmc' := ' pv: ST1L1:PPS:GCC:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E16 (EK1122)^L0S23-PNL-1 EP1 (EP3174-0002)^ST1L1-GCC-01^Value; .q_xHV_DIS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E16 (EK1122)^L0S23-PNL-1 EP2 (EP2624-0002)^ST1L1-GCC-01^Output'} fb_ST1L1_PPS_GCC_01: FB_MKS500; {attribute 'pytmc' := ' pv: ST1L1:PPS:GPI:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E16 (EK1122)^L0S23-PNL-1 EP1 (EP3174-0002)^ST1L1-GPI-01^Value'} fb_ST1L1_PPS_GPI_01: FB_MKS275; // B950-100H1-L1S1-PNL-1 (H1.1) {attribute 'pytmc' := ' pv: TV2L1:PLEG:GCC:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP2 (EP3174-0002)^TV2L1-GCC-1^Value; .q_xHV_DIS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP3 (EP2624-0002)^TV2L1-GCC-1^Output'} fb_TV2L1_PLEG_GCC_01: FB_MKS500; {attribute 'pytmc' := ' pv: TV2L1:PLEG:GPI:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP2 (EP3174-0002)^TV2L1-GPI-1^Value'} fb_TV2L1_PLEG_GPI_01: FB_MKS275; // B950-100H1-L1S3-DRL-1 (H1.1) {attribute 'pytmc' := ' pv: TV4L1:PLEG:GCC:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[100H1-L1S03-EP2 (EP3174-0002)]^TV4L1-GCC-1^Value; .q_xHV_DIS := TIIB[100H1-L1S03-EP3 (EP2624-0002)]^TV4L1-GCC-1^Output'} fb_TV4L1_PLEG_GCC_01: FB_MKS500; {attribute 'pytmc' := ' pv: TV4L1:PLEG:GPI:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[100H1-L1S03-EP2 (EP3174-0002)]^TV4L1-GPI-1^Value'} fb_TV4L1_PLEG_GPI_01: FB_MKS275; {attribute 'pytmc' := ' pv: TV4L1:PLEG:GFS:01 '} {attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[Term 1 (EK1200)]^E1 (EL3064)^AI Standard Channel 1^Value; .q_xHV_DIS := TIIB[Term 1 (EK1200)]^E3 (EL2794)^Channel 1^Output '} fb_TV4L1_PLEG_GFS_01 : FB_MKS422; END_VAR GVL_TXI_VAC_PUMPS ^^^^^^^^^^^^^^^^^ :: VAR_GLOBAL //B940-009-R17-PCI-03 {attribute 'pytmc' := ' pv: ST1L1:PPS:PIP:01 '} {attribute 'TcLinkTo' := '.i_iPRESS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E8 (EL3064)^ST1L1_PIP_01^Value; .q_xHVEna_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E9 (EL2794)^ST1L1_PIP_01^Output; .i_xSP_DI := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E10 (EL1004)^ST1L1_PIP_01^Input'} fb_ST1L1_PPS_PIP_01: FB_PIP_GAMMA; {attribute 'pytmc' := ' pv: PC2L1:L2SI:PIP:01 '} {attribute 'TcLinkTo' := '.i_iPRESS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E8 (EL3064)^PC2L1_PIP_01^Value; .q_xHVEna_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E9 (EL2794)^PC2L1_PIP_01^Output; .i_xSP_DI := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E10 (EL1004)^PC2L1_PIP_01^Input'} fb_PC2L1_L2SI_PIP_01: FB_PIP_GAMMA; {attribute 'pytmc' := ' pv: TV2L1:PLEG:PIP:01 '} {attribute 'TcLinkTo' := '.i_iPRESS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E8 (EL3064)^TV2L1_PIP_01^Value; .q_xHVEna_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E9 (EL2794)^TV2L1_PIP_01^Output; .i_xSP_DI := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E10 (EL1004)^TV2L1_PIP_01^Input'} fb_TV2L1_PLEG_PIP_01: FB_PIP_GAMMA; {attribute 'pytmc' := ' pv: TV3L1:PLEG:PIP:01 '} {attribute 'TcLinkTo' := '.i_iPRESS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E8 (EL3064)^TV3L1_PIP_01^Value; .q_xHVEna_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E9 (EL2794)^TV3L1_PIP_01^Output; .i_xSP_DI := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E10 (EL1004)^TV3L1_PIP_01^Input'} fb_TV3L1_PLEG_PIP_01: FB_PIP_GAMMA; //B940-009-R17-PCI-04 {attribute 'pytmc' := ' pv: TV4L1:PLEG:PIP:01 '} {attribute 'TcLinkTo' := '.i_iPRESS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E11 (EL3064)^TV4L1_PIP_01^Value; .q_xHVEna_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E12 (EL2794)^TV4L1_PIP_01^Output; .i_xSP_DI := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E13 (EL1004)^TV4L1_PIP_01^Input'} fb_TV4L1_PLEG_PIP_01: FB_PIP_GAMMA; END_VAR GVL_TXI_VAC_VALVES ^^^^^^^^^^^^^^^^^^ :: VAR_GLOBAL {attribute 'TcLinkTo' := '.i_xOpnLS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP1 (EP2338-0002)^Channel 1^Input; .i_xClsLS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP1 (EP2338-0002)^Channel 2^Input; .q_xOPN_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S01-EP1 (EP2338-0002)^Channel 11^Output'} {attribute 'pytmc' := ' pv: TV2L1:PLEG:VGC:01 '} fb_TV2L1_PLEG_VGC_01: FB_VGC; {attribute 'TcLinkTo' := '.i_xOpnLS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S03-EP1 (EP2338-0002)^Channel 1^Input; .i_xClsLS := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S03-EP1 (EP2338-0002)^Channel 2^Input; .q_xOPN_DO := TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^E17 (EK1122)^100H1-L1S03-EP1 (EP2338-0002)^Channel 11^Output'} {attribute 'pytmc' := ' pv: TV4L1:PLEG:VGC:01 '} fb_TV4L1_PLEG_VGC_01: FB_VGC; END_VAR GVL_Variables ^^^^^^^^^^^^^ :: VAR_GLOBAL {attribute 'pytmc' := 'pv: TXI:LFE:VAC:OVRDON; field: ZNAM Override OFF; field: ONAM Override ON; io: io; '} xSystemOverrideMode1 : BOOL; (* Global system override for the prototype section*) {attribute 'pytmc' := ' pv: PLC:TXI:LFE:VAC:FFO:01 '} {attribute 'TcLinkTo' := '.q_xFastFaultOut:=TIIB[FFO]^Channel 1^Output'} g_FastFaultOutput1 : FB_HardwareFFOutput:= (i_sNetID:='172.21.42.126.1.1'); // change i_sNetID ?? {attribute 'pytmc' := ' pv: PLC:TXI:VAC:ARB:01 '} fbArbiter1 : FB_Arbiter(1); fbLogHandler : FB_loghandler; END_VAR POUs ---- MAIN ^^^^ :: PROGRAM MAIN VAR fbArbiterIO: FB_SubSysToArbiter_IO; fb_vetoArbiter: FB_VetoArbiter; END_VAR PRG_TXI_VAC_GAUGES(); PRG_TXI_VAC_PUMPS(); PRG_TXI_VAC_VALVES(); PRG_TXI_VAC_FS_Interfaces(); fbArbiterIO(i_bVeto:= PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.L_Stopper.ST1L1], Arbiter:= fbArbiter1, fbFFHWO:= g_FastFaultOutput1); g_FastFaultOutput1.bAutoReset := TRUE; fbArbiter1.AddRequest(nReqID := 16#FAFC, stReqBp := PMPS_GVL.cstFullBeam, sDevName := 'plc-txi-hxr-vac'); g_FastFaultOutput1.Execute(i_xVeto := PMPS_GVL.stCurrentBeamParameters.aVetoDevices[PMPS.L_Stopper.ST1L1]); //Run log handler fbLogHandler(); END_PROGRAM Related: * `PRG_TXI_VAC_FS_Interfaces`_ * `PRG_TXI_VAC_GAUGES`_ * `PRG_TXI_VAC_PUMPS`_ * `PRG_TXI_VAC_VALVES`_ PRG_TXI_VAC_FS ^^^^^^^^^^^^^^ :: PROGRAM PRG_TXI_VAC_FS VAR END_VAR //Fast Shutter Valve TV2L1_VFS_1( i_xVeto_Enable:=False, i_xPMPS_OK:= TRUE, i_xExt_OK:= TRUE, i_sDevName:= 'TV2L1:VFS:1', io_fbFFHWO:= g_FastFaultOutput2 ); (*FastFaultOuput*) g_FastFaultOutput2.Execute(bAutoReset:= TRUE); END_PROGRAM PRG_TXI_VAC_FS_Interfaces ^^^^^^^^^^^^^^^^^^^^^^^^^ :: PROGRAM PRG_TXI_VAC_FS_Interfaces VAR END_VAR //Fast Shutter Valve Interface TV2L1_VFS_1_Interface(IG := fb_TV4L1_PLEG_GFS_01.IG, Veto_valve := fb_TV2L1_PLEG_VGC_01.iq_stValve); //Veto Valve? Closest to fast shutter? END_PROGRAM PRG_TXI_VAC_GAUGES ^^^^^^^^^^^^^^^^^^ :: PROGRAM PRG_TXI_VAC_GAUGES VAR bm_dummy_gauge: ST_VG; END_VAR //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; // B940-008-L0S23-PNL-1 fb_ST1L1_PPS_GPI_01(PG=>); fb_ST1L1_PPS_GCC_01(PG := fb_ST1L1_PPS_GPI_01.PG, bEP := TRUE); // B950-100H1-L1S1-PNL-1 (H1.1) fb_TV2L1_PLEG_GPI_01(PG=>); fb_TV2L1_PLEG_GCC_01(PG := fb_TV2L1_PLEG_GPI_01.PG, bEP := TRUE); // B950-100H1-L1S3-DRL-1(H1.1) fb_TV4L1_PLEG_GPI_01(PG=>); fb_TV4L1_PLEG_GCC_01(PG := fb_TV4L1_PLEG_GPI_01.PG, bEP := TRUE); //MKS422 fb_TV4L1_PLEG_GFS_01(PG := bm_dummy_gauge); END_PROGRAM PRG_TXI_VAC_PUMPS ^^^^^^^^^^^^^^^^^ :: PROGRAM PRG_TXI_VAC_PUMPS VAR dummy_gauge : ST_VG; END_VAR //beamline dummy gauge dummy_gauge.xPRESS_OK := TRUE; dummy_gauge.xAT_VAC := TRUE; dummy_gauge.eState := ValidLo; dummy_gauge.rPRESS := 1e-4; //B940-009-R17-PCI-03 fb_PC2L1_L2SI_PIP_01(i_stGauge := dummy_gauge, i_xOverrideMode := xSystemOverrideMode1); GVL_Interfaces.PC2L1_PIP_01_Interface_rPress := fb_PC2L1_L2SI_PIP_01.q_IG.rPRESS; GVL_Interfaces.PC2L1_PIP_01_Interface_xAT_VAC := fb_PC2L1_L2SI_PIP_01.q_IG.xAT_VAC; GVL_Interfaces.PC2L1_PIP_01_Interface_xPRESS_OK := fb_PC2L1_L2SI_PIP_01.q_IG.xPRESS_OK; fb_ST1L1_PPS_PIP_01(i_stGauge := fb_ST1L1_PPS_GPI_01.PG, i_xOverrideMode := xSystemOverrideMode1); fb_TV2L1_PLEG_PIP_01(i_stGauge := fb_TV2L1_PLEG_GPI_01.PG, i_xOverrideMode := xSystemOverrideMode1); fb_TV3L1_PLEG_PIP_01(i_stGauge := fb_TV2L1_PLEG_GPI_01.PG, i_xOverrideMode := xSystemOverrideMode1); //B940-009-R17-PCI-04 fb_TV4L1_PLEG_PIP_01(i_stGauge := fb_TV4L1_PLEG_GPI_01.PG, i_xOverrideMode := xSystemOverrideMode1); END_PROGRAM Related: * `GVL_Interfaces`_ PRG_TXI_VAC_VALVES ^^^^^^^^^^^^^^^^^^ :: PROGRAM PRG_TXI_VAC_VALVES VAR END_VAR fb_TV2L1_PLEG_VGC_01( i_stUSG := fb_ST1L1_PPS_PIP_01.q_IG, i_stDSG := fb_TV2L1_PLEG_PIP_01.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_TV4L1_PLEG_VGC_01( i_stUSG := fb_TV3L1_PLEG_PIP_01.q_IG, i_stDSG := fb_TV4L1_PLEG_PIP_01.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 ); //Fast Shutter Valve interface //fb_TV2L1_PLEG_VFS_Interface(IG:=fb_TV2L1_PLEG_GFS_01, iq_stValve=> , Veto_Valve:= , i_xVAC_FAULT_OK=>); END_PROGRAM