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
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:
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