DUTs

GVLs

GVL_GMD

VAR_GLOBAL

// ST_Volume

st_GMD : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_10_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_RoughingLine : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_20_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_30_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_50_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_60_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);
st_EM1K0_GMD_VRC_70_VOL : ST_Volume := (rVolume := 1E3, rPressure := Global_Pressure, rVLeak := Global_Leak);

// ST_MKS_275

st_EM1K0_GMD_GPI_10 : ST_MKS_275 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GPI_40 : ST_MKS_275 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GPI_70 : ST_MKS_275 := (q_xGaugeConnected := TRUE);

// FB_MKS_275

fb_EM1K0_GMD_GPI_10 : FB_MKS_275;
fb_EM1K0_GMD_GPI_40 : FB_MKS_275;
fb_EM1K0_GMD_GPI_70 : FB_MKS_275;

// ST_MechPump

st_EM1K0_GMD_PTM_10 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PTM_20 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PTM_30 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PRT_40 : ST_MechPump := (rMRE:=10, rBasePress:=1E-3);
st_EM1K0_GMD_PTM_40 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PTM_50 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PTM_60 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);
st_EM1K0_GMD_PTM_70 : ST_MechPump := (iMaxSpd:=1000, rBasePress:=1E-9, rMaxLoad:=0.95);

// FB_TurboPump

fb_EM1K0_GMD_PTM_10 : FB_TurboPump;
fb_EM1K0_GMD_PTM_20 : FB_TurboPump;
fb_EM1K0_GMD_PTM_30 : FB_TurboPump;
fb_EM1K0_GMD_PTM_40 : FB_TurboPump;
fb_EM1K0_GMD_PTM_50 : FB_TurboPump;
fb_EM1K0_GMD_PTM_60 : FB_TurboPump;
fb_EM1K0_GMD_PTM_70 : FB_TurboPump;

// ST_VacuumValve

st_EM1K0_GMD_VRC_10 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);
st_EM1K0_GMD_VRC_20 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);
st_EM1K0_GMD_VRC_30 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);
st_EM1K0_GMD_VRC_50 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);
st_EM1K0_GMD_VRC_60 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);
st_EM1K0_GMD_VRC_70 : ST_VacuumValve := (q_xClsLS := TRUE, q_xOpnLS := FALSE);

// FB_VacuumValve

fb_EM1K0_GMD_VRC_10 : FB_VacuumValve;
fb_EM1K0_GMD_VRC_20 : FB_VacuumValve;
fb_EM1K0_GMD_VRC_30 : FB_VacuumValve;
fb_EM1K0_GMD_VRC_50 : FB_VacuumValve;
fb_EM1K0_GMD_VRC_60 : FB_VacuumValve;
fb_EM1K0_GMD_VRC_70 : FB_VacuumValve;

// ST_MKS_422

st_EM1K0_GMD_GCC_10 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_20 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_30 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_40 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_50 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_60 : ST_MKS_422 := (q_xGaugeConnected := TRUE);
st_EM1K0_GMD_GCC_70 : ST_MKS_422 := (q_xGaugeConnected := TRUE);

// FB_MKS_422

fb_EM1K0_GMD_GCC_10 : FB_MKS_422;
fb_EM1K0_GMD_GCC_20 : FB_MKS_422;
fb_EM1K0_GMD_GCC_30 : FB_MKS_422;
fb_EM1K0_GMD_GCC_40 : FB_MKS_422;
fb_EM1K0_GMD_GCC_50 : FB_MKS_422;
fb_EM1K0_GMD_GCC_60 : FB_MKS_422;
fb_EM1K0_GMD_GCC_70 : FB_MKS_422;

// FB_RoughPump

fb_EM1K0_GMD_PRT_40 : FB_RoughPump;

END_VAR

GVL_VARIABLES

{attribute 'global_init_slot' := '40500'} // make sure variables are initialized before other GVLs
VAR_GLOBAL

Global_Leak : REAL := 0;
Global_Pressure : REAL := 0.0079;
New_Pressure : REAL := 22.0; //Torr
Global_OverridePressure : BOOL := FALSE;

END_VAR

POUs

MAIN

PROGRAM MAIN
VAR
END_VAR
PRG_DIAGNOSTIC();
OverridePressure();
PRG_GMD();

END_PROGRAM

OverridePressure

PROGRAM OverridePressure
VAR
    fb_SetPressure : FB_SetChamberPressure;
END_VAR
fb_SetPressure(chamber := st_GMD, rNewPressure := New_Pressure, Override := Global_OverridePressure);

END_PROGRAM

PRG_DIAGNOSTIC

PROGRAM PRG_DIAGNOSTIC
VAR
   heartbeat AT %Q* : UINT := 0;
END_VAR
heartbeat := heartbeat + 1;
IF heartbeat > 65000
   THEN heartbeat := 0;
END_IF

END_PROGRAM

PRG_GMD

PROGRAM PRG_GMD
VAR
END_VAR
// FB_MKS_275

fb_EM1K0_GMD_GPI_10(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GPI_10);
fb_EM1K0_GMD_GPI_40(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GPI_40);
fb_EM1K0_GMD_GPI_70(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GPI_70);

// FB_TurboPump

fb_EM1K0_GMD_PTM_10(stVlInlet := st_EM1K0_GMD_VRC_10_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_10);
fb_EM1K0_GMD_PTM_20(stVlInlet := st_EM1K0_GMD_VRC_20_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_20);
fb_EM1K0_GMD_PTM_30(stVlInlet := st_EM1K0_GMD_VRC_30_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_30);
fb_EM1K0_GMD_PTM_40(stVlInlet := st_GMD, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_40);
fb_EM1K0_GMD_PTM_50(stVlInlet := st_EM1K0_GMD_VRC_50_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_50);
fb_EM1K0_GMD_PTM_60(stVlInlet := st_EM1K0_GMD_VRC_60_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_60);
fb_EM1K0_GMD_PTM_70(stVlInlet := st_EM1K0_GMD_VRC_70_VOL, stVlOutlet := st_RoughingLine, stPump := st_EM1K0_GMD_PTM_70);

// FB_VacuumValve

fb_EM1K0_GMD_VRC_10(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_10_VOL, stValve := st_EM1K0_GMD_VRC_10);
fb_EM1K0_GMD_VRC_20(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_20_VOL, stValve := st_EM1K0_GMD_VRC_20);
fb_EM1K0_GMD_VRC_30(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_30_VOL, stValve := st_EM1K0_GMD_VRC_30);
fb_EM1K0_GMD_VRC_50(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_50_VOL, stValve := st_EM1K0_GMD_VRC_50);
fb_EM1K0_GMD_VRC_60(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_60_VOL, stValve := st_EM1K0_GMD_VRC_60);
fb_EM1K0_GMD_VRC_70(stAVol := st_GMD, stBvol := st_EM1K0_GMD_VRC_70_VOL, stValve := st_EM1K0_GMD_VRC_70);

// FB_MKS_422

fb_EM1K0_GMD_GCC_10(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_10);
fb_EM1K0_GMD_GCC_20(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_20);
fb_EM1K0_GMD_GCC_30(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_30);
fb_EM1K0_GMD_GCC_40(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_40);
fb_EM1K0_GMD_GCC_50(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_50);
fb_EM1K0_GMD_GCC_60(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_60);
fb_EM1K0_GMD_GCC_70(stVolume := st_GMD, stGauge := st_EM1K0_GMD_GCC_70);

// FB_RoughPump

fb_EM1K0_GMD_PRT_40(stVolInlet := st_RoughingLine, stPump := st_EM1K0_GMD_PRT_40);

END_PROGRAM