DUTs
GVLs
GVL_FWM
//{attribute 'qualified_only'}
VAR_GLOBAL
(*
{attribute 'pytmc' := 'pv: DREAM:COIL'}
{attribute 'TcLinkTo' := '.iRaw := TIIB[K4S8_DRL_03_E21_EL3052]^AI Standard Channel 1^Value'}
fbDreamCoilFlowMeter : FB_FDQ_FlowMeter;
*)
{attribute 'TcLinkTo' := '.iRaw := TIIB[K4S8_DRL_03_E21_EL3052]^AI Standard Channel 1^Value'}
fbCoilFlowMeter : FB_AnalogInput := (iTermBits:=15, fTermMax:=60, fTermMin:=0);
{attribute 'pytmc' := '
pv: DREAM:COIL:FWM:VAL
io: i
field: EGU "lpm"
'}
fCoilCoolantFlowMeterRBV : LREAL;
END_VAR
GVL_PLC_Interface
//{attribute 'qualified_only'}
VAR_GLOBAL
(*ETHERCAT BRRIDGE COM STATUS*)
//0: Other side is in OP state, >0: Error
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^SYNC Inputs^TxPDO state'}
bEcatBridge_TxPDO_state AT %I* :BOOL;
//0: External device connectd, 1: External device not connected
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^SYNC Inputs^External device not connected'}
bEcatBridge_External_device_not_connected AT %I* : BOOL;
//0 = Data valid, 1 = Data invalid
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^WcState^WcStateIn'}
bEcatBridge_WcState AT %I* : BOOL;
(*Inputs from TMO Beamline*)
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Inputs^HUTCH_PLC_NAME'}
sHUTCH_PLC_NAME AT %I* : STRING(8);
(*Outputs to TMO Beamline PLC*)
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^ENDSTATION_PLC_NAME'}
sENDSTATION_PLC_NAME AT %Q* : STRING(8):= 'DREAM';
{attribute 'TcLInkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^DREAM_TURBOS_ALL_AtSpd'}
{attribute 'pytmc' := '
pv: PLC:DREAM:VAC:TURBOS_ALL_ATSPD
io: i
'}
bDREAM_TURBOS_ALL_AtSpd AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^DREAM_MAIN_xAT_VAC'}
bDREAM_MAIN_xAT_VAC AT %Q* : BOOL;
{attribute 'TcLInkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^DREAM_MAIN_xPRESS_OK'}
bDREAM_MAIN_xPRESS_OK AT %Q* : BOOL;
{attribute 'TcLINKTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^DREAM_MAIN_rPRESS'}
fDREAM_MAIN_rPRESS AT %Q* : REAL;
{attribute 'TcLinkTo' := 'TIIB[R20_DRL_03_E14_EL6695]^IO Outputs^DREAM_HV_SAFETY_ENABLE'}
bDREAM_HV_SAFETY_ENABLE AT %Q* : BOOL;
(*ISEG HV Crate Safety Loop*)
{attribute 'TcLInkTo' := 'TIIB[K4S8_DRL_04_E14_EL2624]^Channel 4^Output'}
{attribute 'pytmc' := '
pv: TMO:PLC:DREAM:VAC:HV_SAFETY_ENABLE
io:i
'}
bHighVoltageSafteyLoopEnable AT %Q* : BOOL := FALSE; (*When Enables the High voltage Saftey loop is closed and HV can start.*)
(*Interlock output to control COIL PS*)
{attribute 'TcLInkTo' := 'TIIB[K4S8_DRL_04_E14_EL2624]^Channel 3^Output'}
{attribute 'pytmc' := '
pv: PLC:DREAM:COIL_PS:ILK
io: i
'}
bCoilPS_ILK AT %Q* : BOOL := FALSE;
END_VAR
GVL_Serial_Com
//{attribute 'qualified_only'}
VAR_GLOBAL
//COMM FUNCTION
SerialRXBuffer_DREAM_NC_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_NC_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_NC_PTM_02 : ComBuffer;
SerialTXBuffer_DREAM_NC_PTM_02 : ComBuffer;
SerialRXBuffer_DREAM_DP1_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_DP1_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_DP2_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_DP2_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_DP3_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_DP3_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_MC_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_MC_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_MC_PTM_02 : ComBuffer;
SerialTXBuffer_DREAM_MC_PTM_02 : ComBuffer;
SerialRXBuffer_DREAM_CAT1_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_CAT1_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_CAT2_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_CAT2_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_ROUGH2_PTM_01 : ComBuffer;
SerialTXBuffer_DREAM_ROUGH2_PTM_01 : ComBuffer;
SerialRXBuffer_DREAM_ROUGH2_PTM_02 : ComBuffer;
SerialTXBuffer_DREAM_ROUGH2_PTM_02 : ComBuffer;
//Serial Terminal
fbSerialLineControl_DREAM_NC_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_NC_PTM_02 : SerialLineControl;
fbSerialLineControl_DREAM_DP1_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_DP2_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_DP3_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_MC_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_MC_PTM_02 : SerialLineControl;
fbSerialLineControl_DREAM_CAT1_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_CAT2_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_ROUGH2_PTM_01 : SerialLineControl;
fbSerialLineControl_DREAM_ROUGH2_PTM_02 : SerialLineControl;
//SERIAL IO
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM TxPDO-Map Inputs^Data In 21
'}
stComIn_DREAM_NC_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_03_E12_EL6021]^COM RxPDO-Map Outputs^Data Out 21
'}
stComOut_DREAM_NC_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM TxPDO-Map Inputs^Data In 21
'}
stComIn_DREAM_NC_PTM_02 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_03_E15_EL6021]^COM RxPDO-Map Outputs^Data Out 21
'}
stComOut_DREAM_NC_PTM_02 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM TxPDO-Map Inputs^Data In 21
'}
stComIn_DREAM_DP1_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_03_E18_EL6021]^COM RxPDO-Map Outputs^Data Out 21
'}
stComOut_DREAM_DP1_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[R20_DRL_03_E9_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_DP2_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[R20_DRL_03_E9_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_DP2_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[R20_DRL_03_E10_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_DP3_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[R20_DRL_03_E10_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_DP3_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[R20_DRL_03_E11_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_MC_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[R20_DRL_03_E11_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_MC_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[R20_DRL_03_E12_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_MC_PTM_02 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[R20_DRL_03_E12_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_MC_PTM_02 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_CAT1_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_04_E7_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_CAT1_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_CAT2_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_04_E8_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_CAT2_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Inputs^Data In 21
'}
stComIn_DREAM_ROUGH2_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_04_E6_EL6001]^COM Outputs^Data Out 21
'}
stComOut_DREAM_ROUGH2_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Status;
.D[0]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 0;
.D[1]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 1;
.D[2]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 2;
.D[3]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 3;
.D[4]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 4;
.D[5]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 5;
.D[6]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 6;
.D[7]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 7;
.D[8]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 8;
.D[9]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 9;
.D[10]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 10;
.D[11]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 11;
.D[12]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 12;
.D[13]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 13;
.D[14]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 14;
.D[15]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 15;
.D[16]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 16;
.D[17]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 17;
.D[18]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 18;
.D[19]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 19;
.D[20]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 20;
.D[21]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM TxPDO-Map Inputs^Data In 21
'}
stComIn_DREAM_ROUGH2_PTM_02 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Ctrl;
.D[0]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 0;
.D[1]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 1;
.D[2]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 2;
.D[3]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 3;
.D[4]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 4;
.D[5]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 5;
.D[6]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 6;
.D[7]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 7;
.D[8]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 8;
.D[9]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 9;
.D[10]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 10;
.D[11]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 11;
.D[12]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 12;
.D[13]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 13;
.D[14]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 14;
.D[15]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 15;
.D[16]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 16;
.D[17]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 17;
.D[18]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 18;
.D[19]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 19;
.D[20]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 20;
.D[21]:=TIIB[K4S8_DRL_04_E17_EL6021]^COM RxPDO-Map Outputs^Data Out 21
'}
stComOut_DREAM_ROUGH2_PTM_02 AT %Q* : EL6outData22B;
END_VAR
GVL_VAC_GAUGES
//{attribute 'qualified_only'}
VAR_GLOBAL
(*Nozzle Chamber GPI*)
{attribute 'pytmc' :=' pv: DREAM:NC:GPI:01'}
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E6_EL3174-0002]^AI Standard Channel 1^Value'}
DREAM_NC_GPI_01 : FB_CVM201;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E5_EL3174-0002]^AI Standard Channel 1^Value;
.i_xHV_ON := TIIB[K4S8_DRL_03_E4_EL1084]^Channel 3^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_03_E1_EL2624]^Channel 1^Output
'}
(*Nozzle Chamber GCC*)
{attribute 'pytmc' :=' pv: DREAM:NC:GCC:01'}
DREAM_NC_GCC_01: FB_CCM501;
(*DP1 GHC*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E5_EL3174-0002]^AI Standard Channel 2^Value;
.i_xHV_ON := TIIB[K4S8_DRL_03_E4_EL1084]^Channel 4^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_03_E1_EL2624]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP1:GHC:01'}
DREAM_DP1_GHC_01 : FB_IMG401;
(*DP1 GPI*)
{attribute 'pytmc' :=' pv: DREAM:DP1:GPI:01'}
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E6_EL3174-0002]^AI Standard Channel 2^Value'}
DREAM_DP1_GPI_01 : FB_CVM201;
(*DP2 GHC*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E5_EL3174-0002]^AI Standard Channel 3^Value;
.i_xHV_ON := TIIB[K4S8_DRL_03_E4_EL1084]^Channel 1^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_03_E1_EL2624]^Channel 3^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP2:GHC:01'}
DREAM_DP2_GHC_01 : FB_IMG401;
(*DP3 GHC*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_03_E5_EL3174-0002]^AI Standard Channel 4^Value;
.i_xHV_ON := TIIB[K4S8_DRL_03_E4_EL1084]^Channel 2^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_03_E1_EL2624]^Channel 4^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP3:GHC:01'}
DREAM_DP3_GHC_01 : FB_IMG401;
(*MC HOT CATHODE GUAGE*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[R03_DRL_01_E3_EL3174-0002]^AI Standard Channel 1^Value;
.i_xHV_ON := TIIB[R03_DRL_01_E1_EL1004]^Channel 1^Input;
.i_xCH2_SEL := TIIB[R03_DRL_01_E1_EL1004]^Channel 2^Input;
.i_xERR_CH1 := TIIB[R03_DRL_01_E1_EL1004]^Channel 3^Input;
.i_xERR_CH2 := TIIB[R03_DRL_01_E1_EL1004]^Channel 4^Input;
.q_xHV_DIS_CH1 := TIIB[R03_DRL_01_E2_EL2624]^Channel 1^Output;
.q_xHV_DIS_CH2 := TIIB[R03_DRL_01_E2_EL2624]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:MC:GHC'}
DREAM_MC_GHC : FB_IE514;
(*MC GPI*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_04_E16_EL3174-0002]^AI Standard Channel 1^Value'}
{attribute 'pytmc' := 'pv: DREAM:MC:GPI:01'}
DREAM_MC_GPI_01 : FB_MKS275;
(*CATCHER 1*)
{attribute 'TcLinkTo' := ' .i_iPRESS_R := TIIB[K4S8_DRL_04_E16_EL3174-0002]^AI Standard Channel 2^Value;
.i_xHV_ON := TIIB[K4S8_DRL_04_E15_EL1084]^Channel 1^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_04_E14_EL2624]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:CAT1:GHC:01'}
DREAM_CAT1_GHC_01 : FB_IMG401;
(*CATCHER 2*)
{attribute 'TcLinkTo' := ' .i_iPRESS_R := TIIB[K4S8_DRL_04_E16_EL3174-0002]^AI Standard Channel 3^Value;
.i_xHV_ON := TIIB[K4S8_DRL_04_E15_EL1084]^Channel 2^Input;
.q_xHV_DIS := TIIB[K4S8_DRL_04_E14_EL2624]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:CAT2:GHC:01'}
DREAM_CAT2_GHC_01 : FB_IMG401;
(*ROUGHING PIRANIs*)
//Micro piranis 925
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[WALL_E_PPL_01_EP1_EP4374-0002]^AI Inputs Channel 1^Value'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH1:GPI:01'}
DREAM_ROUGH1_GPI_01 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_04_EP1_EP4374-0002]^AI Inputs Channel 1^Value'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH1:GPI:02'}
DREAM_ROUGH1_GPI_02 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[WALL_E_PPL_01_EP1_EP4374-0002]^AI Inputs Channel 2^Value'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:GPI:01'}
DREAM_ROUGH2_GPI_01 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_04_EP1_EP4374-0002]^AI Inputs Channel 2^Value'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:GPI:02'}
DREAM_ROUGH2_GPI_02 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[K4S8_DRL_04_EP2_EP4374-0002]^AI Inputs Channel 1^Value'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:GPI:03'}
DREAM_ROUGH2_GPI_03 : FB_9XX;
END_VAR
- Related:
GVL_VAC_PUMPS
//{attribute 'qualified_only'}
VAR_GLOBAL
(*NOZZLE CHAMBER*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_03_E13_EL1004]^Channel 1^Input;
.i_xFaultNC := TIIB[K4S8_DRL_03_E13_EL1004]^Channel 3^Input;
.i_xRemote := TIIB[K4S8_DRL_03_E13_EL1004]^Channel 2^Input;
.q_RunDO := TIIB[K4S8_DRL_03_E14_EL2004]^Channel 1^Output;
.q_PumpingStation := TIIB[K4S8_DRL_03_E14_EL2004]^Channel 3^Output;
.q_xRemote := TIIB[K4S8_DRL_03_E14_EL2004]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:NC:PTM:01'}
DREAM_NC_PTM_01 : FB_PTM_Pfeiffer;
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_03_E16_EL1004]^Channel 1^Input;
.i_xFaultNC := TIIB[K4S8_DRL_03_E16_EL1004]^Channel 3^Input;
.i_xRemote := TIIB[K4S8_DRL_03_E16_EL1004]^Channel 2^Input;
.q_RunDO := TIIB[K4S8_DRL_03_E17_EL2004]^Channel 1^Output;
.q_PumpingStation := TIIB[K4S8_DRL_03_E17_EL2004]^Channel 3^Output;
.q_xRemote := TIIB[K4S8_DRL_03_E17_EL2004]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:NC:PTM:02'}
DREAM_NC_PTM_02 : FB_PTM_Pfeiffer;
(*DP1*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_03_E19_EL1004]^Channel 1^Input;
.i_xFaultNC := TIIB[K4S8_DRL_03_E19_EL1004]^Channel 3^Input;
.i_xRemote := TIIB[K4S8_DRL_03_E19_EL1004]^Channel 2^Input;
.q_RunDO := TIIB[K4S8_DRL_03_E20_EL2004]^Channel 1^Output;
.q_PumpingStation := TIIB[K4S8_DRL_03_E20_EL2004]^Channel 3^Output;
.q_xRemote := TIIB[K4S8_DRL_03_E20_EL2004]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP1:PTM:01'}
DREAM_DP1_PTM_01 : FB_PTM_Pfeiffer;
(*DP2*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[R20_DRL_03_E4_EL1004]^Channel 2^Input;
.i_xFaultNC := TIIB[R20_DRL_03_E4_EL1004]^Channel 1^Input;
.q_RunDO := TIIB[R20_DRL_03_E7_EL2794]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP2:PTM:01'}
DREAM_DP2_PTM_01 : FB_PTM_TurboDrive;
(*DP3*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[R20_DRL_03_E4_EL1004]^Channel 4^Input;
.i_xFaultNC := TIIB[R20_DRL_03_E4_EL1004]^Channel 3^Input;
.q_RunDO := TIIB[R20_DRL_03_E7_EL2794]^Channel 3^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP3:PTM:01'}
DREAM_DP3_PTM_01 : FB_PTM_TurboDrive;
(*MAIN CHAMBER*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[R20_DRL_03_E5_EL1004]^Channel 2^Input;
.i_xFaultNC := TIIB[R20_DRL_03_E5_EL1004]^Channel 1^Input;
.q_RunDO := TIIB[R20_DRL_03_E7_EL2794]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:MC:PTM:01'}
DREAM_MC_PTM_01 : FB_PTM_TurboDrive;
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[R20_DRL_03_E5_EL1004]^Channel 4^Input;
.i_xFaultNC := TIIB[R20_DRL_03_E5_EL1004]^Channel 3^Input;
.q_RunDO := TIIB[R20_DRL_03_E7_EL2794]^Channel 4^Output
'}
{attribute 'pytmc' :=' pv: DREAM:MC:PTM:02'}
DREAM_MC_PTM_02 : FB_PTM_TurboDrive;
(*BOOSTER TURBO PUMPS ROUGHING*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_04_E3_EL1004]^Channel 2^Input;
.i_xFaultNC := TIIB[K4S8_DRL_04_E3_EL1004]^Channel 1^Input;
.q_RunDO := TIIB[K4S8_DRL_04_E5_EL2794]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:ROUGH2:PTM:01'}
DREAM_ROUGH2_PTM_01 : FB_PTM_TurboDrive;
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_04_E10_EL1004]^Channel 3^Input;
.i_xFaultNC := TIIB[K4S8_DRL_04_E10_EL1004]^Channel 4^Input;
.q_RunDO := TIIB[K4S8_DRL_04_E18_EL2794]^Channel 1^Output;
.q_xReset := TIIB[K4S8_DRL_04_E18_EL2794]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:ROUGH2:PTM:02'}
DREAM_ROUGH2_PTM_02 : FB_PTM_Pfeiffer;
(*CATCHER 1*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_04_E3_EL1004]^Channel 4^Input;
.i_xFaultNC := TIIB[K4S8_DRL_04_E3_EL1004]^Channel 3^Input;
.q_RunDO := TIIB[K4S8_DRL_04_E5_EL2794]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:CAT1:PTM:01'}
DREAM_CAT1_PTM_01 : FB_PTM_TurboDrive;
(*CATCHER 2*)
{attribute 'TcLinkTo' := '.i_xAtSpd := TIIB[K4S8_DRL_04_E4_EL1004]^Channel 2^Input;
.i_xFaultNC := TIIB[K4S8_DRL_04_E4_EL1004]^Channel 1^Input;
.q_RunDO := TIIB[K4S8_DRL_04_E5_EL2794]^Channel 3^Output
'}
{attribute 'pytmc' :=' pv: DREAM:CAT2:PTM:01'}
DREAM_CAT2_PTM_01 : FB_PTM_TurboDrive;
(*Serial Interface*)
(*Pfeiffer TC400 serial*)
stPfeiffer_CTRL_DREAM_NC_PTM_01 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_DREAM_NC_PTM_01 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_DREAM_NC_PTM_01 : FB_PFEIFFER_COM;
stPfeiffer_CTRL_DREAM_NC_PTM_02 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_DREAM_NC_PTM_02 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_DREAM_NC_PTM_02 : FB_PFEIFFER_COM;
stPfeiffer_CTRL_DREAM_DP1_PTM_01 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_DREAM_DP1_PTM_01 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_DREAM_DP1_PTM_01 : FB_PFEIFFER_COM;
(*Leybold TD20 serial*)
stTD20_RBK_DREAM_DP2_PTM_01 : ST_TD20Status;
fbTD20Com_DREAM_DP2_PTM_01 : FB_OERLIKON_TD20_COM;
stTD20_RBK_DREAM_DP3_PTM_01 : ST_TD20Status;
fbTD20Com_DREAM_DP3_PTM_01 : FB_OERLIKON_TD20_COM;
stTD20_RBK_DREAM_MC_PTM_01 : ST_TD20Status;
fbTD20Com_DREAM_MC_PTM_01 : FB_OERLIKON_TD20_COM;
stTD20_RBK_DREAM_MC_PTM_02 : ST_TD20Status;
fbTD20Com_DREAM_MC_PTM_02 : FB_OERLIKON_TD20_COM;
(*Leybold TD400 serial*)
stTD400_RBK_DREAM_CAT1_PTM_01 : ST_TD400Status;
stTD400_CTRL_DREAM_CAT1_PTM_01 : ST_TD400Control;
fbTD400Com_DREAM_CAT1_PTM_01 : FB_OERLIKON_TD400_COM;
fbTD400SerialIO_DREAM_CAT1_PTM_01: FB_OERLIKON_TD400_TO_PTM;
stTD400_RBK_DREAM_CAT2_PTM_01 : ST_TD400Status;
stTD400_CTRL_DREAM_CAT2_PTM_01 : ST_TD400Control;
fbTD400Com_DREAM_CAT2_PTM_01 : FB_OERLIKON_TD400_COM;
fbTD400SerialIO_DREAM_CAT2_PTM_01: FB_OERLIKON_TD400_TO_PTM;
stTD400_RBK_DREAM_ROUGH2_PTM_01 : ST_TD400Status;
stTD400_CTRL_DREAM_ROUGH2_PTM_01 : ST_TD400Control;
fbTD400Com_DREAM_ROUGH2_PTM_01 : FB_OERLIKON_TD400_COM;
fbTD400SerialIO_DREAM_ROUGH2_PTM_01: FB_OERLIKON_TD400_TO_PTM;
(*Pfeiffer TC110 serial*)
stPfeiffer_CTRL_DREAM_ROUGH2_PTM_02 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferControl;
stPfeiffer_RBK_DREAM_ROUGH2_PTM_02 : ARRAY[1..gcMaxPfeifferPumps] OF ST_PfeifferStatus;
fbPfeifferCom_DREAM_ROUGH2_PTM_02 : FB_PFEIFFER_COM;
END_VAR
- Related:
GVL_VAC_VALVES
//{attribute 'qualified_only'}
VAR_GLOBAL
(*DP1 ISOLATION VALVE*)
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_03_E10_EL1004]^Channel 1^Input;
.i_xClsLS := TIIB[K4S8_DRL_03_E10_EL1004]^Channel 2^Input;
.q_xOPN_DO := TIIB[K4S8_DRL_03_E11_EL2004]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP1:VRC:01'}
DREAM_DP1_VRC_01: FB_VRC;
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_03_E10_EL1004]^Channel 3^Input;
.i_xClsLS := TIIB[K4S8_DRL_03_E10_EL1004]^Channel 4^Input;
.q_xCLS_DO := TIIB[K4S8_DRL_03_E11_EL2004]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:DP1:VRC:02'}
DREAM_DP1_VRC_02: FB_VRC_NO;
(*CATCHER 1 ISOLATION VALVE*)
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_04_E1_EL1004]^Channel 1^Input;
.i_xClsLS := TIIB[K4S8_DRL_04_E1_EL1004]^Channel 2^Input;
.q_xOPN_DO := TIIB[K4S8_DRL_04_E2_EL2004]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:CAT1:VRC:01'}
DREAM_CAT1_VRC_01: FB_VRC;
(*ANGLE VALVES ROUGHING*)
//Pneumatic valves
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_04_E9_EL1004]^Channel 1^Input;
.i_xClsLS := TIIB[K4S8_DRL_04_E9_EL1004]^Channel 2^Input;
.q_xOPN_DO := TIIB[K4S8_DRL_04_E11_EL2004]^Channel 1^Output
'}
{attribute 'pytmc' :=' pv: DREAM:ROUGH1:VRC:01'}
DREAM_ROUGH1_VRC_01: FB_VRC; //replacing with VRC function
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_04_E9_EL1004]^Channel 3^Input;
.i_xClsLS := TIIB[K4S8_DRL_04_E9_EL1004]^Channel 4^Input;
.q_xOPN_DO := TIIB[K4S8_DRL_04_E11_EL2004]^Channel 2^Output
'}
{attribute 'pytmc' :=' pv: DREAM:ROUGH2:VRC:01'}
DREAM_ROUGH2_VRC_01: FB_VRC; //replacing with VRC function
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[K4S8_DRL_04_E10_EL1004]^Channel 1^Input;
.i_xClsLS := TIIB[K4S8_DRL_04_E10_EL1004]^Channel 2^Input;
.q_xOPN_DO := TIIB[K4S8_DRL_04_E11_EL2004]^Channel 3^Output
'}
{attribute 'pytmc' :=' pv: DREAM:ROUGH2:VRC:02'}
DREAM_ROUGH2_VRC_02: FB_VRC; //replacing with VRC function
(*VENT VALVES ROUGHING*)
//FLow Control valves MKS248
{attribute 'TcLinkTo' := '.q_iRawPosition := TIIB[WALL_E_PPL_01_EP1_EP4374-0002]^AO Outputs Channel 3^Analog output'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH1:VFV:01'}
DREAM_ROUGH1_VFV_01 : FB_MKS248;
{attribute 'TcLinkTo' := '.q_iRawPosition := TIIB[K4S8_DRL_04_EP1_EP4374-0002]^AO Outputs Channel 3^Analog output'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH1:VFV:02'}
DREAM_ROUGH1_VFV_02 : FB_MKS248;
{attribute 'TcLinkTo' := '.q_iRawPosition := TIIB[WALL_E_PPL_01_EP1_EP4374-0002]^AO Outputs Channel 4^Analog output'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:VFV:01'}
DREAM_ROUGH2_VFV_01 : FB_MKS248;
{attribute 'TcLinkTo' := '.q_iRawPosition := TIIB[K4S8_DRL_04_EP1_EP4374-0002]^AO Outputs Channel 4^Analog output'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:VFV:02'}
DREAM_ROUGH2_VFV_02 : FB_MKS248;
{attribute 'TcLinkTo' := '.q_iRawPosition := TIIB[K4S8_DRL_04_EP2_EP4374-0002]^AO Outputs Channel 3^Analog output'}
{attribute 'pytmc' := 'pv: DREAM:ROUGH2:VFV:03'}
DREAM_ROUGH2_VFV_03 : FB_MKS248;
END_VAR
GVL_Variables
//{attribute 'qualified_only'}
VAR_GLOBAL
{attribute 'pytmc' := '
pv: PLC:DREAM:VAC:OVRDON
io: io
'}
bSystemOverrideMode : BOOL := FALSE; (* Global system override for the DREAM Vacuum System*)
{attribute 'pytmc' := '
pv: PLC:DREAM:ON_BEAMLINE
io: i
'}
bOnBeamline : BOOL := FALSE;
{attribute 'pytmc' := '
pv: PLC:DREAM:HV_MIN_PRESS
io: i
'}
fHighVoltageMinPressure : REAL := 1e-05; (*Hard coded High voltage Minimum Enable Pressure*)
END_VAR
POUs
F_TurboIlkLogic
FUNCTION F_TurboIlkLogic : BOOL
VAR_INPUT
i_stTurbo : ST_PTM; //Turbo Pump
//i_stISG : ST_VG; //Gauge measuring inlet Pressure e.g Pirani
i_stBackingGauge : ST_VG; //Gauge measuring backing pressure
i_stRoughValve : ST_VRC; //Roughing Valve on the turbo pump backing line
END_VAR
VAR
END_VAR
F_TurboIlkLogic := i_stBackingGauge.rPRESS < i_stTurbo.rBackingPressureSP AND i_stBackingGauge.xPRESS_OK AND
i_stRoughValve.i_xOpnLS;
END_FUNCTION
FB_IE514
(*This function is for the IE514 connected to controller IM540*)
(*This function provides ILK and Set Point Protection for the IE514*)
FUNCTION_BLOCK FB_IE514 EXTENDS FB_GaugeBase
VAR_IN_OUT
END_VAR
VAR_INPUT
PG : ST_VG;
END_VAR
VAR_OUTPUT
{attribute 'pytmc' := '
pv:01
'}
IG_CH1 : ST_VG;
{attribute 'pytmc' := '
pv:02
'}
IG_CH2 : ST_VG;
END_VAR
VAR
rV : REAL; //Raw value in volts calculated from iTermBits
rPRESS : REAL; //Calculated pressure from raw voltage
tHvDis_CH1 : TON := (PT := T#20S); //HV turn on timer
tHvDis_CH2 : TON := (PT := T#20S); //HV turn on timer
rtHvSw_CH1 : R_TRIG;
rtHvSw_CH2 : R_TRIG;
tAction_CH1 : R_TRIG;
tAction_CH2 : R_TRIG;
bCh1Sel : BOOL;
bCh2Sel : BOOL;
ePrevStateIG_CH1 : E_PressureState;
ePrevStateIG_CH2 : E_PressureState;
//rDefaultVAC_SP: REAL := 9E-3; // as per manual
iTermBits : UINT := 30518; // The terminal's maximum value in bits default el3174 as per vacuum architecture
binit : BOOL := TRUE; // Do something at startup
(*IOs to be linked*)
/// Controls and I/Os
i_iPRESS_R AT %I* : INT; // input raw pressure in bits (ADC) // 'TcLinkTo' (EL3174) ^Input
q_xHV_DIS_CH1 AT %Q* : BOOL; // Enable Gauge High Voltage on CH1 when True // 'TcLinkTo' (EL2124) ^Output
q_xHV_DIS_CH2 AT %Q* : BOOL; // Enable Gauge High Voltage on CH2 when True // 'TcLinkTo' (EL2124) ^Output
i_xHV_ON AT %I* : BOOL; // True when EMI is on // 'TcLinkTo' (EL1004 or EL1008) ^Input
i_xERR_CH1 AT %I* : BOOL; // TRUE when NO error is present on assigned channel
i_xERR_CH2 AT %I* : BOOL; // TRUE when NO error is present on assigned channel
i_xCH2_SEL AT %I* : BOOL; // TRUE when CH2 selected, FALSE when CH1 selected
END_VAR
VAR CONSTANT
cMaxPressure : REAL := 7.5E-5; //Torr
cMinPressure : REAL := 7.5E-14; //Torr
cGaugeMinVoltage : REAL := 1.111; //minimum voltage corresponds to 7.5E-13 (7.498E-13)Torr which should be the minimum pressure IE514 can read.
cGaugeMaxVoltage : REAL := 10.0; //maximum voltage corresponds 7.5E-5 Torr which should be the maximum pressure IE514 can read.
cGaugeDisconnected : REAL := 10.2; //voltage when gauge is disconnected.
cGaugeOff : REAL := 10.2; //voltage when gauge is turned off
cDeadband : REAL := 0.05; //deadband in voltage
END_VAR
VAR PERSISTENT
//Persistent variables for CH1
rVAC_SP_CH1 : REAL;
rPRO_SP_CH1 : REAL;
rHYS_PR_CH1 : REAL;
//Persistent variables for CH2
rVAC_SP_CH2 : REAL;
rPRO_SP_CH2 : REAL;
rHYS_PR_CH2 : REAL;
END_VAR
(* 2-6-2023, Janez Govednik *)
(* This function will read the pressure from an IE514 gauge on an IM540. *)
(*Select channel at the startup, according to input from the controller*)
IF bInit THEN
IF NOT i_xCH2_SEL THEN
bCh1Sel := TRUE;
bCh2Sel := FALSE;
ELSE
bCh1Sel := FALSE;
bCh2Sel := TRUE;
END_IF
bInit := FALSE;
END_IF
(*Only ONE channel can be turned ON at the same time*)
rtHvSw_CH1(CLK := IG_CH1.xHV_SW);
rtHvSw_CH2(CLK := IG_CH2.xHV_SW);
IF rtHvSw_CH1.Q THEN
IG_CH2.xHV_SW := FALSE;
IG_CH2.q_xHV_DIS := FALSE;
bCh1Sel := TRUE;
bCh2Sel := FALSE;
END_IF
IF rtHvSw_CH2.Q THEN
IG_CH1.xHV_SW := FALSE;
IG_CH1.q_xHV_DIS := FALSE;
bCh1Sel := FALSE;
bCh2Sel := TRUE;
END_IF
//Start timers when HV ON signal triggered
tHvDis_CH1(IN := IG_CH1.q_xHV_DIS, Q => IG_CH1.xTurnOnTime);
tHvDis_CH2(IN := IG_CH2.q_xHV_DIS, Q => IG_CH2.xTurnOnTime);
(*Raw voltage conversion*)
//check no div by zero
IF (iTermBits = 0) THEN iTermBits := 30518; END_IF
rV := 10*INT_TO_REAL(i_iPRESS_R)/iTermBits;
(*RAW voltage to Pressure conversion*)
rPRESS := LREAL_TO_REAL(EXPT(10, rV/10*LOG(cMaxPressure/cMinPressure) + LOG(cMinPressure))); //manual page 70 IM540 (Mode Full), (Scale) = Log
IF NOT i_xCH2_SEL THEN
IG_CH1.rPRESS := rPRESS;
IG_CH2.rPRESS := 0;
ELSE
IG_CH2.rPRESS := rPRESS;
IG_CH1.rPRESS := 0;
END_IF
(*Pressure gauge State checks*)
//CH1
IF bCh1Sel AND IG_CH1.xHV_SW THEN
IF NOT i_xERR_CH1 THEN
IG_CH1.eState := GaugeDisconnected;
IG_CH1.rPRESS := 0;
ELSIF rV <= cGaugeMaxVoltage AND rV >= cGaugeMinVoltage AND IG_CH1.i_xHV_ON THEN
IG_CH1.eState := Valid; // NORMAL
ELSIF rV >= 0.0 AND rV < cGaugeMinVoltage AND IG_CH1.i_xHV_ON THEN
IG_CH1.eState := OoR; //Out of range according to manual
ELSIF rV > cGaugeMaxVoltage AND rV < (cGaugeMaxVoltage + cDeadband) AND IG_CH1.i_xHV_ON THEN
IG_CH1.eState := OoR; //Out of range according to manual
ELSIF rV > (cGaugeMaxVoltage + cDeadband) AND tHvDis_CH1.Q THEN
IG_CH1.eState := GaugeDisconnected; //gauge disconnected
IG_CH1.rPRESS := 0;
ELSIF rV > (cGaugeMaxVoltage + cDeadband) AND NOT tHvDis_CH1.Q THEN
IG_CH1.eState := Starting; //gauge is starting
IG_CH1.rPRESS := 0;
ELSE
IG_CH1.eState := PressInvalid; //other fault - could be no gauge, controller powering up etc.
IG_CH1.rPRESS := 0;
END_IF
ELSE
IG_CH1.eState := Off; // Gauge turned OFF
IG_CH1.rPRESS := 0;
END_IF
//CH2
IF bCh2Sel AND IG_CH2.xHV_SW THEN
IF NOT i_xERR_CH2 THEN
IG_CH2.eState := GaugeDisconnected;
IG_CH2.rPRESS := 0;
ELSIF rV <= cGaugeMaxVoltage AND rV >= cGaugeMinVoltage AND IG_CH2.i_xHV_ON THEN
IG_CH2.eState := Valid; // NORMAL
ELSIF rV >= 0.0 AND rV < cGaugeMinVoltage AND IG_CH2.i_xHV_ON THEN
IG_CH2.eState := OoR; //Out of range according to manual
ELSIF rV > cGaugeMaxVoltage AND rV < (cGaugeMaxVoltage + cDeadband) AND IG_CH2.i_xHV_ON THEN
IG_CH2.eState := OoR; //Out of range according to manual
ELSIF rV > (cGaugeMaxVoltage + cDeadband) AND tHvDis_CH2.Q THEN
IG_CH2.eState := GaugeDisconnected; //gauge disconnected
IG_CH2.rPRESS := 0;
ELSIF rV > (cGaugeMaxVoltage + cDeadband) AND NOT tHvDis_CH2.Q THEN
IG_CH2.eState := Starting; //gauge is starting
IG_CH2.rPRESS := 0;
ELSE
IG_CH2.eState := PressInvalid; //other fault - could be no gauge, controller powering up etc.
IG_CH2.rPRESS := 0;
END_IF
ELSE
IG_CH2.eState := Off; // Gauge turned OFF
IG_CH2.rPRESS := 0;
END_IF
(* Ion Gauge Protection Functions *)
(* If the PG pressure is greater than the VG.PRO_SP then the gauge is disabled *)
(* If the PG pressure is less than the VG.PRO_SP then the gauge is enabled *)
(* This FB also implements some hysteresis so the gauge doesn't have rapid power cycling while near the turn on boundary *)
//CH1
IF (PG.rPRESS <= IG_CH1.rPRO_SP) AND PG.xPRESS_OK THEN
IG_CH1.q_xHV_DIS := IG_CH1.xHV_SW;
IG_CH1.xILKOk := TRUE;
ELSIF IG_CH1.q_xHV_DIS AND tHvDis_CH1.Q THEN
IF IG_CH1.rPRESS > (IG_CH1.rPRO_SP + IG_CH1.rHYS_PR) OR PG.rPRESS > (IG_CH1.rPRO_SP + IG_CH1.rHYS_PR) THEN
IG_CH1.q_xHV_DIS := FALSE;
IG_CH1.xHV_SW := FALSE;
END_IF
ELSE
IG_CH1.q_xHV_DIS := FALSE;
IG_CH1.xHV_SW := FALSE;
IG_CH1.xILKOk := FALSE;
END_IF
//CH2
IF (PG.rPRESS <= IG_CH2.rPRO_SP) AND PG.xPRESS_OK THEN
IG_CH2.q_xHV_DIS := IG_CH2.xHV_SW;
IG_CH2.xILKOk := TRUE;
ELSIF IG_CH2.q_xHV_DIS AND tHvDis_CH2.Q THEN
IF IG_CH2.rPRESS > (IG_CH2.rPRO_SP + IG_CH2.rHYS_PR) OR PG.rPRESS > (IG_CH2.rPRO_SP + IG_CH2.rHYS_PR) THEN
IG_CH2.q_xHV_DIS := FALSE;
IG_CH2.xHV_SW := FALSE;
END_IF
ELSE
IG_CH2.q_xHV_DIS := FALSE;
IG_CH2.xHV_SW := FALSE;
IG_CH2.xILKOk := FALSE;
END_IF
(*Pressure gauge OK checks, Backwards compatibility*)
IG_CH1.xPRESS_OK := ((IG_CH1.eState = Valid) OR IG_CH1.xBAKEOUT);
IG_CH2.xPRESS_OK := ((IG_CH2.eState = Valid) OR IG_CH2.xBAKEOUT);
(*Setpoint evaluation*)
IG_CH1.xAT_VAC := IG_CH1.xPRESS_OK AND IG_CH1.rPRESS < IG_CH1.rVAC_SP;
IG_CH2.xAT_VAC := IG_CH2.xPRESS_OK AND IG_CH2.rPRESS < IG_CH2.rVAC_SP;
(*Logger*)
ACT_Logger();
(*Soft IO Linking*)
IO();
(*Load or save the persistent variables*)
ACT_Persistent();
END_FUNCTION_BLOCK
ACTION ACT_Logger:
// ILK logger
(*CH1 of IM540 Controller*)
IF (IG_CH1.xLog) THEN
IF NOT IG_CH1.xILKOk AND IG_CH1.q_xHV_DIS THEN
fbLogger(sMsg:='Lost external interlock while gauge(CH1) was on.', eSevr:=TcEventSeverity.Critical);
END_IF
// Log Action
tAction_CH1(CLK := IG_CH1.xHV_SW);
IF tAction_CH1.Q THEN fbLogger(sMsg:='Ion gauge(CH1) commanded to switch on', eSevr:=TcEventSeverity.Info); END_IF
//STATE Logger
IF ePrevStateIG_CH1 <> IG_CH1.eState THEN
CASE IG_CH1.eState OF
ValidHi:
fbLogger(sMsg:='Gauge(CH1) pressure valid high.', eSevr:=TcEventSeverity.Info);
ValidLo:
fbLogger(sMsg:='Gauge(CH1) pressure valid low.', eSevr:=TcEventSeverity.Info);
Valid:
fbLogger(sMsg:='Gauge(CH1) pressure valid.', eSevr:=TcEventSeverity.Info);
GaugeDisconnected:
fbLogger(sMsg:='Gauge(CH1) Disconnected.', eSevr:=TcEventSeverity.Critical);
PressInvalid:
fbLogger(sMsg:='Gauge(CH1) pressure invalid.', eSevr:=TcEventSeverity.Warning);
OoR:
fbLogger(sMsg:='Gauge(CH1) pressure out of range.', eSevr:=TcEventSeverity.Warning);
Starting:
fbLogger(sMsg:='Gauge(CH1) starting.', eSevr:=TcEventSeverity.Info);
END_CASE
ePrevStateIG_CH1 := IG_CH1.eState;
END_IF
END_IF
(*CH2 of IM540 Controller*)
IF (IG_CH2.xLog) THEN
IF NOT IG_CH2.xILKOk AND IG_CH2.q_xHV_DIS THEN
fbLogger(sMsg:='Lost external interlock while gauge(CH2) was on.', eSevr:=TcEventSeverity.Critical);
END_IF
// Log Action
tAction_CH2(CLK := IG_CH2.xHV_SW);
IF tAction_CH2.Q THEN fbLogger(sMsg:='Ion gauge(CH2) commanded to switch on', eSevr:=TcEventSeverity.Info); END_IF
//STATE Logger
IF ePrevStateIG_CH2 <> IG_CH2.eState THEN
CASE IG_CH2.eState OF
ValidHi:
fbLogger(sMsg:='Gauge(CH2) pressure valid high.', eSevr:=TcEventSeverity.Info);
ValidLo:
fbLogger(sMsg:='Gauge(CH2) pressure valid low.', eSevr:=TcEventSeverity.Info);
Valid:
fbLogger(sMsg:='Gauge(CH2) pressure valid.', eSevr:=TcEventSeverity.Info);
GaugeDisconnected:
fbLogger(sMsg:='Gauge(CH2) Disconnected.', eSevr:=TcEventSeverity.Critical);
PressInvalid:
fbLogger(sMsg:='Gauge(CH2) pressure invalid.', eSevr:=TcEventSeverity.Warning);
OoR:
fbLogger(sMsg:='Gauge(CH2) pressure out of range.', eSevr:=TcEventSeverity.Warning);
Starting:
fbLogger(sMsg:='Gauge(CH2) starting.', eSevr:=TcEventSeverity.Info);
END_CASE
ePrevStateIG_CH2 := IG_CH2.eState;
END_IF
END_IF
END_ACTION
ACTION ACT_Persistent:
(*On first PLC pass, load the persistent value into the structrue variable*)
IF (SUPER^.bRestorePersistentData) THEN
SUPER^.bRestorePersistentData := FALSE;
//CH1
IF (rVAC_SP_CH1 <> 0) THEN
IG_CH1.rVAC_SP := rVAC_SP_CH1;
END_IF;
IF (rPRO_SP_CH1 <> 0) THEN
IG_CH1.rPRO_SP := rPRO_SP_CH1;
END_IF;
IF (rHYS_PR_CH1 <> 0) THEN
IG_CH1.rHYS_PR := rHYS_PR_CH1;
END_IF;
//CH2
IF (rVAC_SP_CH2 <> 0) THEN
IG_CH2.rVAC_SP := rVAC_SP_CH2;
END_IF;
IF (rPRO_SP_CH2 <> 0) THEN
IG_CH2.rPRO_SP := rPRO_SP_CH2;
END_IF;
IF (rHYS_PR_CH2 <> 0) THEN
IG_CH2.rHYS_PR := rHYS_PR_CH2;
END_IF;
END_IF
(*Check if a new value has been written in the structure variable copy it to the persistent variable*)
//CH1
IF NOT (IG_CH1.rVAC_SP = rVAC_SP_CH1) THEN
rVAC_SP_CH1 := IG_CH1.rVAC_SP;
END_IF;
IF NOT (IG_CH1.rPRO_SP = rPRO_SP_CH1) THEN
rPRO_SP_CH1 := IG_CH1.rPRO_SP;
END_IF;
IF NOT (IG_CH1.rHYS_PR = rHYS_PR_CH1) THEN
rHYS_PR_CH1 := IG_CH1.rHYS_PR;
END_IF;
//CH2
IF NOT (IG_CH2.rVAC_SP = rVAC_SP_CH2) THEN
rVAC_SP_CH2 := IG_CH2.rVAC_SP;
END_IF;
IF NOT (IG_CH2.rPRO_SP = rPRO_SP_CH2) THEN
rPRO_SP_CH2 := IG_CH2.rPRO_SP;
END_IF;
IF NOT (IG_CH2.rHYS_PR = rHYS_PR_CH2) THEN
rHYS_PR_CH2 := IG_CH2.rHYS_PR;
END_IF;
END_ACTION
ACTION IO:
(*soft link inputs*)
IF NOT i_xCH2_SEL THEN
IG_CH1.i_iPRESS_R := i_iPRESS_R;
IG_CH1.i_xHV_ON := i_xHV_ON;
IG_CH2.i_iPRESS_R := 0;
IG_CH2.i_xHV_ON := FALSE;
ELSE
IG_CH2.i_iPRESS_R := i_iPRESS_R;
IG_CH2.i_xHV_ON := i_xHV_ON;
IG_CH1.i_iPRESS_R := 0;
IG_CH1.i_xHV_ON := FALSE;
END_IF
(*soft link outputs*)
q_xHV_DIS_CH1 := IG_CH1.q_xHV_DIS;
q_xHV_DIS_CH2 := IG_CH2.q_xHV_DIS;
IG_CH1.sPath := sPath;
IG_CH2.sPath := sPath;
END_ACTION
METHOD M_AutoOnCh1 : BOOL
VAR_INPUT
END_VAR
this^.IG_CH1.q_xHV_DIS := TRUE;
END_METHOD
METHOD M_AutoOnCh2 : BOOL
VAR_INPUT
END_VAR
this^.IG_CH2.q_xHV_DIS := TRUE;
END_METHOD
METHOD M_HVECh1 : BOOL
VAR_INPUT
enable : BOOL; // set to true to enable, false to disable;
END_VAR
this^.IG_CH1.xHV_SW := (enable);
END_METHOD
METHOD M_HVECh2 : BOOL
VAR_INPUT
enable : BOOL; // set to true to enable, false to disable;
END_VAR
this^.IG_CH2.xHV_SW := (enable);
END_METHOD
METHOD M_IsCh1Selected : BOOL
VAR_INPUT
END_VAR
M_IsCh1Selected := NOT i_xCH2_SEL;
END_METHOD
METHOD M_IsCh2Selected : BOOL
VAR_INPUT
END_VAR
M_IsCh2Selected := i_xCH2_SEL;
END_METHOD
METHOD M_SetBits
VAR_INPUT
TermBits : UINT; // The beckhoff terminal's maximum value in bits
END_VAR
this^.iTermBits := TermBits;
END_METHOD
FB_TurboSpeedCheck
FUNCTION_BLOCK FB_TurboSpeedCheck
VAR_INPUT
i_stNCTurbo1 : ST_PTM; //Turbo pump 1
i_stNCTurbo2 : ST_PTM; //Turbo pump 1
i_stDP1Turbo : ST_PTM; //Turbo pump 3
i_stDP2Turbo : ST_PTM; //Turbo pump 4
i_stDP3Turbo : ST_PTM; //Turbo pump 5
i_stMCTurbo1 : ST_PTM; //Turbo pump 6
i_stMCTurbo2 : ST_PTM; //Turbo pump 7
i_stCAT1Turbo : ST_PTM; //Turbo pump 8
i_stCAT2Turbo : ST_PTM; //Turbo pump 9
i_stRough2Turbo1 : ST_PTM; //Turbo pump 10
i_stRough2Turbo2 : ST_PTM; //Turbo pump 11
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
END_FUNCTION_BLOCK
METHOD IsCatTurboSpeedBelow10Hz : BOOL
VAR_INPUT
END_VAR
IsCatTurboSpeedBelow10Hz := i_stCAT2Turbo.i_diCurSpd < 10;
END_METHOD
METHOD IsMainTurboSpeedBelow10Hz : BOOL
VAR_INPUT
END_VAR
IsMainTurboSpeedBelow10Hz := i_stDP1Turbo.i_diCurSpd < 10 AND
i_stDP2Turbo.i_diCurSpd < 10 AND
i_stDP3Turbo.i_diCurSpd < 10 AND
i_stMCTurbo1.i_diCurSpd < 10 AND
i_stMCTurbo2.i_diCurSpd < 10 AND
i_stRough2Turbo1.i_diCurSpd < 10 AND
i_stRough2Turbo2.i_diCurSpd < 10 AND
i_stCAT1Turbo.i_diCurSpd < 10;
END_METHOD
METHOD IsNozzleTurboSpeedBelow10Hz : BOOL
VAR_INPUT
END_VAR
IsNozzleTurboSpeedBelow10Hz := i_stNCTurbo1.i_diCurSpd < 10 AND i_stNCTurbo2.i_diCurSpd < 10;
END_METHOD
MAIN
PROGRAM MAIN
VAR
fbLogHandler : FB_LogHandler;
END_VAR
fbLogHandler();
PRG_ECAT_CHECK();
PRG_GAUGES();
PRG_VALVES();
PRG_TURBO_PUMPS();
PRG_HV_ILK();
PRG_COIL_PS_ILK();
END_PROGRAM
PRG_COIL_PS_ILK
PROGRAM PRG_COIL_PS_ILK
VAR
END_VAR
(*Interlock logic for Coil PS based on reading from Flow meter*)
fbCoilFlowMeter();
fCoilCoolantFlowMeterRBV := fbCoilFlowMeter.fReal;
//evaluate flow meter readback to Interlock interlock Coil PS
bCoilPS_ILK := fbCoilFlowMeter.fReal > 3.0; //If flow meter reading is above XX is ok to turn ON output of the Coil PS. Units are lpm
//fbDreamCoilFlowMeter();
//bCoilPS_ILK := fbDreamCoilFlowMeter.fbFlowMeter.fReal > 3; //If flow meter reading is above XX is ok to turn ON output of the Coil PS. Units are lpm
END_PROGRAM
PRG_COM
PROGRAM PRG_COM
VAR
END_VAR
(*Instanitate Serial port com function *)
fbSerialLineControl_DREAM_NC_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_NC_PTM_01),
pComOut:= ADR(stComOut_DREAM_NC_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_NC_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_NC_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_NC_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_NC_PTM_02(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_NC_PTM_02),
pComOut:= ADR(stComOut_DREAM_NC_PTM_02),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_NC_PTM_02)),
TxBuffer:= SerialTXBuffer_DREAM_NC_PTM_02,
RxBuffer:= SerialRXBuffer_DREAM_NC_PTM_02,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_DP1_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_DP1_PTM_01),
pComOut:= ADR(stComOut_DREAM_DP1_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_DP1_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_DP1_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_DP1_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_DP2_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_DP2_PTM_01),
pComOut:= ADR(stComOut_DREAM_DP2_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_DP2_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_DP2_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_DP2_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_DP3_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_DP3_PTM_01),
pComOut:= ADR(stComOut_DREAM_DP3_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_DP3_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_DP3_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_DP3_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_MC_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_MC_PTM_01),
pComOut:= ADR(stComOut_DREAM_MC_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_MC_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_MC_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_MC_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_MC_PTM_02(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_MC_PTM_02),
pComOut:= ADR(stComOut_DREAM_MC_PTM_02),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_MC_PTM_02)),
TxBuffer:= SerialTXBuffer_DREAM_MC_PTM_02,
RxBuffer:= SerialRXBuffer_DREAM_MC_PTM_02,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_CAT1_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_CAT1_PTM_01),
pComOut:= ADR(stComOut_DREAM_CAT1_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_CAT1_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_CAT1_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_CAT1_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_CAT2_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_CAT2_PTM_01),
pComOut:= ADR(stComOut_DREAM_CAT2_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_CAT2_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_CAT2_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_CAT2_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_ROUGH2_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_ROUGH2_PTM_01),
pComOut:= ADR(stComOut_DREAM_ROUGH2_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_ROUGH2_PTM_01)),
TxBuffer:= SerialTXBuffer_DREAM_ROUGH2_PTM_01,
RxBuffer:= SerialRXBuffer_DREAM_ROUGH2_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_DREAM_ROUGH2_PTM_02(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_DREAM_ROUGH2_PTM_02),
pComOut:= ADR(stComOut_DREAM_ROUGH2_PTM_02),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_DREAM_ROUGH2_PTM_02)),
TxBuffer:= SerialTXBuffer_DREAM_ROUGH2_PTM_02,
RxBuffer:= SerialRXBuffer_DREAM_ROUGH2_PTM_02,
Error=> ,
ErrorID=> );
END_PROGRAM
PRG_ECAT_CHECK
PROGRAM PRG_ECAT_CHECK
VAR
//EtherCAT bridge error
bEcatBridge_COM_ERROR : BOOL;
END_VAR
(*EtherCAT Bridge Status*)
//bEcatBridge_COM_ERROR = TRUE means that there is an EtherCAT Bridge Communication Error.
bEcatBridge_COM_ERROR := (bEcatBridge_TxPDO_state OR bEcatBridge_External_device_not_connected OR bEcatBridge_WcState);
bOnBeamline := (bEcatBridge_COM_ERROR = FALSE) AND (sHUTCH_PLC_NAME = 'TMO');
END_PROGRAM
PRG_GAUGES
PROGRAM PRG_GAUGES
VAR
END_VAR
(**Gas Injection Gauges**)
//Pirani MKS 275 Gauges
DREAM_NC_GPI_01.M_SetBits(30518);
DREAM_NC_GPI_01(PG=>);
DREAM_DP1_GPI_01.M_SetBits(30518);
DREAM_DP1_GPI_01(PG=>);
//Cold Cathode Guages
DREAM_NC_GCC_01.M_SetBits(30518);
DREAM_NC_GCC_01(PG:= DREAM_NC_GPI_01.PG);
//Hot Cathode Guages
DREAM_DP1_GHC_01.M_SetBits(30518);
DREAM_DP1_GHC_01(PG:= DREAM_NC_GPI_01.PG, IG=>);
DREAM_DP2_GHC_01.M_SetBits(30518);
DREAM_DP2_GHC_01(PG:= DREAM_NC_GPI_01.PG, IG=>);
DREAM_DP3_GHC_01.M_SetBits(30518);
DREAM_DP3_GHC_01(PG:= DREAM_NC_GPI_01.PG, IG=>);
(**Main Chmamber Gauges**)
//Pirani Gauges
DREAM_MC_GPI_01.M_SetBits(30518);
DREAM_MC_GPI_01();
//Hot Cathode gauge IE514
DREAM_MC_GHC.M_SetBits(30518);
DREAM_MC_GHC(PG:= DREAM_MC_GPI_01.PG); //This fb reads statuses and control two gauges DREAM:MC:GHC:01 and DREAM:MC:GHC:02
//Send gauge data to TMO Beamline Vacuum PLC
IF DREAM_MC_GHC.M_IsCh1Selected() THEN
bDREAM_MAIN_xAT_VAC := DREAM_MC_GHC.IG_CH1.xAT_VAC;
bDREAM_MAIN_xPRESS_OK := DREAM_MC_GHC.IG_CH1.xPRESS_OK;
fDREAM_MAIN_rPRESS := DREAM_MC_GHC.IG_CH1.rPRESS;
ELSIF DREAM_MC_GHC.M_IsCh2Selected() THEN
bDREAM_MAIN_xAT_VAC := DREAM_MC_GHC.IG_CH2.xAT_VAC;
bDREAM_MAIN_xPRESS_OK := DREAM_MC_GHC.IG_CH2.xPRESS_OK;
fDREAM_MAIN_rPRESS := DREAM_MC_GHC.IG_CH2.rPRESS;
ELSE
bDREAM_MAIN_xAT_VAC := FALSE;
bDREAM_MAIN_xPRESS_OK := FALSE;
fDREAM_MAIN_rPRESS := 0;
END_IF
(**Catcher Gauges**)
//Hot Cathode Guages
DREAM_CAT1_GHC_01.M_SetBits(30518);
DREAM_CAT1_GHC_01(PG:= DREAM_MC_GPI_01.PG);
DREAM_CAT2_GHC_01.M_SetBits(30518);
DREAM_CAT2_GHC_01(PG:= DREAM_MC_GPI_01.PG);
(**Roughing Section Gauges**)
DREAM_ROUGH1_GPI_01.M_SetBits(32767);
DREAM_ROUGH1_GPI_01();
DREAM_ROUGH1_GPI_02.M_SetBits(32767);
DREAM_ROUGH1_GPI_02();
DREAM_ROUGH2_GPI_01.M_SetBits(32767);
DREAM_ROUGH2_GPI_01();
DREAM_ROUGH2_GPI_02.M_SetBits(32767);
DREAM_ROUGH2_GPI_02();
DREAM_ROUGH2_GPI_03.M_SetBits(32767);
DREAM_ROUGH2_GPI_03();
END_PROGRAM
PRG_HV_ILK
PROGRAM PRG_HV_ILK
VAR
END_VAR
(*High Voltage Saftey Loop*)
IF DREAM_MC_GHC.M_IsCh1Selected() THEN
bHighVoltageSafteyLoopEnable := (DREAM_MC_GHC.IG_CH1.rPRESS <= fHighVoltageMinPressure) AND DREAM_MC_GHC.IG_CH1.xPRESS_OK;
ELSIF DREAM_MC_GHC.M_IsCh2Selected() THEN
bHighVoltageSafteyLoopEnable := (DREAM_MC_GHC.IG_CH2.rPRESS <= fHighVoltageMinPressure) AND DREAM_MC_GHC.IG_CH2.xPRESS_OK;
ELSE
bHighVoltageSafteyLoopEnable := FALSE;
END_IF
END_PROGRAM
PRG_TURBO_PUMPS
PROGRAM PRG_TURBO_PUMPS
VAR
bAllTurboPumpRunning : BOOL;
tAllTurboPumpDelayTime : TIME := T#30s;
tAllTurboPumpTOF : TOF;
bMainTurboPumpRunning : BOOL;
tMainTurboPumpDelayTime : TIME := T#15m;
tMainTurboPumpTOF : TOF;
ftPumpsFailed : F_TRIG;
END_VAR
(**Gas Injection Turbo pumps**)
DREAM_NC_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_NC_PTM_01.iq_stPTM, DREAM_ROUGH1_GPI_02.PG, DREAM_ROUGH1_VRC_01.iq_stValve));
DREAM_NC_PTM_02(i_xExtIlkOK := F_TurboIlkLogic(DREAM_NC_PTM_02.iq_stPTM, DREAM_ROUGH1_GPI_02.PG, DREAM_ROUGH1_VRC_01.iq_stValve));
(**Differential pumping stations Turbo pumps**)
DREAM_DP1_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_DP1_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
DREAM_DP2_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_DP2_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
DREAM_DP3_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_DP3_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
(**Main Chamber Turbo pumps**)
DREAM_MC_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_MC_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
DREAM_MC_PTM_02(i_xExtIlkOK := F_TurboIlkLogic(DREAM_MC_PTM_02.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
(**Catcher Turbo pumps**)
DREAM_CAT1_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_CAT1_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
DREAM_CAT2_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_CAT2_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_03.PG, DREAM_ROUGH2_VRC_02.iq_stValve));
(**ROUGHING SECTION TURBO BOOSTER PUMPS**)
DREAM_ROUGH2_PTM_01(i_xExtIlkOK := F_TurboIlkLogic(DREAM_ROUGH2_PTM_01.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
DREAM_ROUGH2_PTM_02(i_xExtIlkOK := F_TurboIlkLogic(DREAM_ROUGH2_PTM_02.iq_stPTM, DREAM_ROUGH2_GPI_02.PG, DREAM_ROUGH2_VRC_01.iq_stValve));
(*
bAllTurbosOn := (NOT (DREAM_NC_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_NC_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_NC_PTM_02.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_NC_PTM_02.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_DP1_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_DP1_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_DP2_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_DP2_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_DP3_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_DP3_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_MC_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_MC_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_MC_PTM_02.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_MC_PTM_02.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_CAT1_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_CAT1_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_CAT2_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_CAT2_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_ROUGH2_PTM_01.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_ROUGH2_PTM_01.iq_stPTM.eState = pumpSTOPPED) AND
NOT (DREAM_ROUGH2_PTM_02.iq_stPTM.eState = pumpFAULT) AND NOT(DREAM_ROUGH2_PTM_02.iq_stPTM.eState = pumpSTOPPED));
*)
bAllTurboPumpRunning := DREAM_NC_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_NC_PTM_02.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_DP1_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_DP2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_DP3_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_MC_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_MC_PTM_02.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_CAT1_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_CAT2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_ROUGH2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_ROUGH2_PTM_02.iq_stPTM.eState = E_PumpState.pumpRUNNING;
tAllTurboPumpTOF(IN := bAllTurboPumpRunning, PT := tAllTurboPumpDelayTime);
bDREAM_TURBOS_ALL_AtSpd := tAllTurboPumpTOF.Q;
(*// Will define when we will do automation
//Check if any of the main chamber and DP turbo pumps fails
bMainTurboPumpRunning := DREAM_DP1_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_DP2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_DP3_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_MC_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_MC_PTM_02.iq_stPTM.eState = E_PumpState.pumpRUNNING;
tMainTurboPumpTOF(IN := bMainTurboPumpRunning, PT := tMainTurboPumpDelayTime);
ftPumpsFailed(CLK := tMainTurboPumpTOF.Q);
IF ftPumpsFailed.Q THEN
DREAM_DP1_PTM_01.M_Run(FALSE);
DREAM_DP2_PTM_01.M_Run(FALSE);
DREAM_DP3_PTM_01.M_Run(FALSE);
DREAM_MC_PTM_01.M_Run(FALSE);
DREAM_MC_PTM_02.M_Run(FALSE);
DREAM_ROUGH2_VRC_02.M_Set_OPN_SW(FALSE); //Close ROUGH2:VRC:02
END_IF
*)
(*********SERIAL COMMUNICATION**********)
(*Pfeiffer pumps at Gas Injection*)
//DREAM_NC_PTM_01
(*Assign adresses to the pfeiffer controllers connected to this serial terminal*)
stPfeiffer_CTRL_DREAM_NC_PTM_01[1].iSerialAddress:= 1;
stPfeiffer_CTRL_DREAM_NC_PTM_01[1].xEnableComm:= TRUE;
(*Instanitate the Function block for serial communication with Pfeiffer*)
fbPfeifferCom_DREAM_NC_PTM_01(astPfeifferControl:= stPfeiffer_CTRL_DREAM_NC_PTM_01,
astPfeifferStatus:= stPfeiffer_RBK_DREAM_NC_PTM_01,
SerialRXBuffer:= SerialRXBuffer_DREAM_NC_PTM_01,
SerialTXBuffer:= SerialTXBuffer_DREAM_NC_PTM_01);
(*Copy Status Pv's into the PTM structure*)
DREAM_NC_PTM_01.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_DREAM_NC_PTM_01[1],
st_Pfeiffer_CTRL:= stPfeiffer_CTRL_DREAM_NC_PTM_01[1]);
//DREAM_NC_PTM_02
stPfeiffer_CTRL_DREAM_NC_PTM_02[1].iSerialAddress:= 1;
stPfeiffer_CTRL_DREAM_NC_PTM_02[1].xEnableComm:= TRUE;
fbPfeifferCom_DREAM_NC_PTM_02(astPfeifferControl:= stPfeiffer_CTRL_DREAM_NC_PTM_02,
astPfeifferStatus:= stPfeiffer_RBK_DREAM_NC_PTM_02,
SerialRXBuffer:= SerialRXBuffer_DREAM_NC_PTM_02,
SerialTXBuffer:= SerialTXBuffer_DREAM_NC_PTM_02);
DREAM_NC_PTM_02.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_DREAM_NC_PTM_02[1],
st_Pfeiffer_CTRL:= stPfeiffer_CTRL_DREAM_NC_PTM_02[1]);
//DREAM_DP1_PTM_01
stPfeiffer_CTRL_DREAM_DP1_PTM_01[1].iSerialAddress:= 1;
stPfeiffer_CTRL_DREAM_DP1_PTM_01[1].xEnableComm:= TRUE;
fbPfeifferCom_DREAM_DP1_PTM_01(astPfeifferControl:= stPfeiffer_CTRL_DREAM_DP1_PTM_01,
astPfeifferStatus:= stPfeiffer_RBK_DREAM_DP1_PTM_01,
SerialRXBuffer:= SerialRXBuffer_DREAM_DP1_PTM_01,
SerialTXBuffer:= SerialTXBuffer_DREAM_DP1_PTM_01);
DREAM_DP1_PTM_01.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_DREAM_DP1_PTM_01[1],
st_Pfeiffer_CTRL:= stPfeiffer_CTRL_DREAM_DP1_PTM_01[1]);
(*Leybold pumps at Gas Injection*)
//DREAM_DP2_PTM_01
(*Instanitate the Function block for serial communication with TD20 controller*)
fbTD20Com_DREAM_DP2_PTM_01(SerialRXBuffer:= SerialRXBuffer_DREAM_DP2_PTM_01,
SerialTXBuffer:= SerialTXBuffer_DREAM_DP2_PTM_01,
astTD20Status=> stTD20_RBK_DREAM_DP2_PTM_01);
(*Copy Status Pv's into the PTM structure*)
DREAM_DP2_PTM_01.M_Serial_IO(i_st_TD20_RBK:= stTD20_RBK_DREAM_DP2_PTM_01);
//DREAM_DP3_PTM_01
fbTD20Com_DREAM_DP3_PTM_01(SerialRXBuffer:= SerialRXBuffer_DREAM_DP3_PTM_01,
SerialTXBuffer:= SerialTXBuffer_DREAM_DP3_PTM_01,
astTD20Status=> stTD20_RBK_DREAM_DP3_PTM_01);
DREAM_DP3_PTM_01.M_Serial_IO(i_st_TD20_RBK:= stTD20_RBK_DREAM_DP3_PTM_01);
(*Leybold pumps at Main Chamber*)
//DREAM_MC_PTM_01
fbTD20Com_DREAM_MC_PTM_01(SerialRXBuffer:= SerialRXBuffer_DREAM_MC_PTM_01,
SerialTXBuffer:= SerialTXBuffer_DREAM_MC_PTM_01,
astTD20Status=> stTD20_RBK_DREAM_MC_PTM_01);
DREAM_MC_PTM_01.M_Serial_IO(stTD20_RBK_DREAM_MC_PTM_01);
//DREAM_MC_PTM_02
fbTD20Com_DREAM_MC_PTM_02(SerialRXBuffer:= SerialRXBuffer_DREAM_MC_PTM_02,
SerialTXBuffer:= SerialTXBuffer_DREAM_MC_PTM_02,
astTD20Status=> stTD20_RBK_DREAM_MC_PTM_02);
DREAM_MC_PTM_02.M_Serial_IO(stTD20_RBK_DREAM_MC_PTM_02);
(*Leybold pumps at Catcher*)
//DREAM_CAT1_PTM_01 (TD400)
fbTD400SerialIO_DREAM_CAT1_PTM_01(iq_stPTM := DREAM_CAT1_PTM_01.iq_stPtm,
iq_stTD400Control := stTD400_CTRL_DREAM_CAT1_PTM_01,
iq_stTD400Status := stTD400_RBK_DREAM_CAT1_PTM_01);
fbTD400Com_DREAM_CAT1_PTM_01(SerialRXBuffer := SerialRXBuffer_DREAM_CAT1_PTM_01,
SerialTXBuffer := SerialTXBuffer_DREAM_CAT1_PTM_01,
stTD400Control := stTD400_CTRL_DREAM_CAT1_PTM_01,
stTD400Status => stTD400_RBK_DREAM_CAT1_PTM_01);
//DREAM_CAT1_PTM_01.M_Serial_IO(stTD400_RBK_DREAM_CAT1_PTM_01);
//DREAM_CAT2_PTM_01 (TD400)
fbTD400SerialIO_DREAM_CAT2_PTM_01(iq_stPTM := DREAM_CAT2_PTM_01.iq_stPtm,
iq_stTD400Control := stTD400_CTRL_DREAM_CAT2_PTM_01,
iq_stTD400Status := stTD400_RBK_DREAM_CAT2_PTM_01);
fbTD400Com_DREAM_CAT2_PTM_01(SerialRXBuffer := SerialRXBuffer_DREAM_CAT2_PTM_01,
SerialTXBuffer := SerialTXBuffer_DREAM_CAT2_PTM_01,
stTD400Control := stTD400_CTRL_DREAM_CAT2_PTM_01,
stTD400Status => stTD400_RBK_DREAM_CAT2_PTM_01);
//DREAM_CAT2_PTM_01.M_Serial_IO(stTD400_RBK_DREAM_CAT2_PTM_01);
(*Leybold pump-roughing section-booster pump*)
//DREAM_ROUGH2_PTM_01 (TD400)
fbTD400SerialIO_DREAM_ROUGH2_PTM_01(iq_stPTM := DREAM_ROUGH2_PTM_01.iq_stPtm,
iq_stTD400Control := stTD400_CTRL_DREAM_ROUGH2_PTM_01,
iq_stTD400Status := stTD400_RBK_DREAM_ROUGH2_PTM_01);
fbTD400Com_DREAM_ROUGH2_PTM_01(SerialRXBuffer := SerialRXBuffer_DREAM_ROUGH2_PTM_01,
SerialTXBuffer := SerialTXBuffer_DREAM_ROUGH2_PTM_01,
stTD400Control := stTD400_CTRL_DREAM_ROUGH2_PTM_01,
stTD400Status => stTD400_RBK_DREAM_ROUGH2_PTM_01);
//DREAM_ROUGH2_PTM_01.M_Serial_IO(stTD400_RBK_DREAM_ROUGH2_PTM_01);
(*Pfeiffer pump-roughing section-booster pump*)
//DREAM_NC_PTM_02 (Pfeiffer TC110)
stPfeiffer_CTRL_DREAM_ROUGH2_PTM_02[1].iSerialAddress:= 1;
stPfeiffer_CTRL_DREAM_ROUGH2_PTM_02[1].xEnableComm:= TRUE;
fbPfeifferCom_DREAM_ROUGH2_PTM_02(astPfeifferControl:= stPfeiffer_CTRL_DREAM_ROUGH2_PTM_02,
astPfeifferStatus:= stPfeiffer_RBK_DREAM_ROUGH2_PTM_02,
SerialRXBuffer:= SerialRXBuffer_DREAM_ROUGH2_PTM_02,
SerialTXBuffer:= SerialTXBuffer_DREAM_ROUGH2_PTM_02);
DREAM_ROUGH2_PTM_02.M_Serial_IO(st_Pfeiffer_RBK:= stPfeiffer_RBK_DREAM_ROUGH2_PTM_02[1],
st_Pfeiffer_CTRL:= stPfeiffer_CTRL_DREAM_ROUGH2_PTM_02[1]);
END_PROGRAM
- Related:
PRG_VALVES
PROGRAM PRG_VALVES
VAR
//Rough lines VRC external interlocks
bROUGH1_VRC_01_ILK : BOOL;
bROUGH2_VRC_01_ILK : BOOL;
bROUGH2_VRC_02_ILK : BOOL;
bROUGH1_VRC_01_Override : BOOL;
bROUGH2_VRC_01_Override : BOOL;
bROUGH2_VRC_02_Override : BOOL;
bCAT1_VRC_01_ILK : BOOL;
bDP1_VRC_01_ILK : BOOL;
bDP1_VRC_02_ILK : BOOL;
(*
//dummy FF output to use in VGC_2S function
dummy_FFFO : FB_HardwareFFOutput;
dummy_fbArbiter1 : FB_Arbiter(1);
//Turbo speed check function
fbTurboSpeedCheck : FB_TurboSpeedCheck;
*)
END_VAR
(**Gas Injection Valves**)
//DP1_VRC_02 Interlock evaluation
bDP1_VRC_01_ILK := DREAM_NC_GCC_01.IG.xPRESS_OK AND DREAM_NC_GCC_01.IG.rPRESS < 1.0E-5 AND
DREAM_DP1_GHC_01.IG.xPRESS_OK AND DREAM_DP1_GHC_01.IG.rPRESS < 1.0E-5;
DREAM_DP1_VRC_01(i_xExtILK_OK := bDP1_VRC_01_ILK, i_xOverrideMode := bSystemOverrideMode);
//Close DP1_VRC_02 if DP1_VRC_01 is opened
(*//Will remove for now. Will add back later if James request it.
IF DREAM_DP1_VRC_01.iq_stValve.i_xOpnLS THEN
DREAM_DP1_VRC_02.M_Set_CLS_SW(TRUE);
END_IF
*)
//DP1_VRC_02 Interlock evaluation NOTE: Normally OPEN Valve!!
bDP1_VRC_02_ILK := DREAM_DP1_VRC_01.iq_stValve.i_xOpnLS AND
DREAM_NC_GCC_01.IG.xPRESS_OK AND DREAM_DP1_GHC_01.IG.xPRESS_OK AND
ABS(DREAM_NC_GCC_01.IG.rPRESS - DREAM_DP1_GHC_01.IG.rPRESS) < 1.0E-5;
DREAM_DP1_VRC_02(i_xExtILK_OK := bDP1_VRC_02_ILK, i_xOverrideMode := bSystemOverrideMode); //Normally open valve
(**Catcher valve**)
//CAT1_VRC_01 Interlock evaluation
IF DREAM_MC_GHC.M_IsCh1Selected() THEN
bCAT1_VRC_01_ILK := DREAM_CAT1_GHC_01.IG.xPRESS_OK AND DREAM_CAT1_GHC_01.IG.rPRESS < 1.0E-8 AND
DREAM_MC_GHC.IG_CH1.xPRESS_OK AND DREAM_MC_GHC.IG_CH1.rPRESS < 1.0E-8 AND
DREAM_CAT1_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_CAT2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING;
ELSIF DREAM_MC_GHC.M_IsCh2Selected() THEN
bCAT1_VRC_01_ILK := DREAM_CAT1_GHC_01.IG.xPRESS_OK AND DREAM_CAT1_GHC_01.IG.rPRESS < 1.0E-8 AND
DREAM_MC_GHC.IG_CH2.xPRESS_OK AND DREAM_MC_GHC.IG_CH2.rPRESS < 1.0E-8 AND
DREAM_CAT1_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING AND
DREAM_CAT2_PTM_01.iq_stPTM.eState = E_PumpState.pumpRUNNING;
ELSE
bCAT1_VRC_01_ILK := FALSE;
END_IF
DREAM_CAT1_VRC_01(i_xExtILK_OK := bCAT1_VRC_01_ILK, i_xOverrideMode := bSystemOverrideMode);
(**Roughing Valves**)
//VRC valves
//Interlock evaluation
bROUGH1_VRC_01_ILK := DREAM_ROUGH1_GPI_01.PG.rPRESS < 5E-3 AND DREAM_ROUGH1_GPI_01.PG.xPRESS_OK AND
DREAM_ROUGH1_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH1_VFV_02.iq_stVFN.rReqPosition = 0.0;
bROUGH2_VRC_01_ILK := DREAM_ROUGH2_GPI_01.PG.rPRESS < 5E-3 AND DREAM_ROUGH2_GPI_01.PG.xPRESS_OK AND
DREAM_ROUGH2_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH2_VFV_02.iq_stVFN.rReqPosition = 0.0;
bROUGH2_VRC_02_ILK := DREAM_ROUGH2_GPI_01.PG.rPRESS < 5E-3 AND DREAM_ROUGH2_GPI_01.PG.xPRESS_OK AND
DREAM_ROUGH2_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH2_VFV_03.iq_stVFN.rReqPosition = 0.0;
bROUGH1_VRC_01_Override := bSystemOverrideMode AND
DREAM_ROUGH1_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH1_VFV_02.iq_stVFN.rReqPosition = 0.0;
bROUGH2_VRC_01_Override := bSystemOverrideMode AND
DREAM_ROUGH2_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH2_VFV_02.iq_stVFN.rReqPosition = 0.0;
bROUGH2_VRC_02_Override := bSystemOverrideMode AND
DREAM_ROUGH2_VFV_01.iq_stVFN.rReqPosition = 0.0 AND
DREAM_ROUGH2_VFV_03.iq_stVFN.rReqPosition = 0.0;
(* //changing back to VRC function
DREAM_ROUGH1_VRC_01(i_stUSG := DREAM_ROUGH1_GPI_01.PG,
i_stDSG := DREAM_ROUGH1_GPI_02.PG,
i_xDis_DPIlk := FALSE,
i_xEPS_OK := TRUE,
i_xPMPS_OK := TRUE,
i_xReset := FALSE,
i_xExt_OK := bROUGH1_VRC_01_ILK,
i_xOverrideMode := bSystemOverrideMode,
io_fbFFHWO := dummy_FFFO,
fbArbiter := dummy_fbArbiter1,
i_sDevName := 'DREAM-ROUGH1-VRC-01');
DREAM_ROUGH2_VRC_01(i_stUSG := DREAM_ROUGH2_GPI_01.PG,
i_stDSG := DREAM_ROUGH2_GPI_02.PG,
i_xDis_DPIlk := FALSE,
i_xEPS_OK := TRUE,
i_xPMPS_OK := TRUE,
i_xReset := FALSE,
i_xExt_OK := bROUGH2_VRC_01_ILK,
i_xOverrideMode := bSystemOverrideMode,
io_fbFFHWO := dummy_FFFO,
fbArbiter := dummy_fbArbiter1,
i_sDevName := 'DREAM-ROUGH2-VRC-01');
DREAM_ROUGH2_VRC_02(i_stUSG := DREAM_ROUGH2_GPI_01.PG,
i_stDSG := DREAM_ROUGH2_GPI_03.PG,
i_xDis_DPIlk := FALSE,
i_xEPS_OK := TRUE,
i_xPMPS_OK := TRUE,
i_xReset := FALSE,
i_xExt_OK := bROUGH2_VRC_02_ILK,
i_xOverrideMode := bSystemOverrideMode,
io_fbFFHWO := dummy_FFFO,
fbArbiter := dummy_fbArbiter1,
i_sDevName := 'DREAM-ROUGH2-VRC-02');
*)
DREAM_ROUGH1_VRC_01(i_xExtILK_OK := bROUGH1_VRC_01_ILK, i_xOverrideMode := bROUGH1_VRC_01_Override);
DREAM_ROUGH2_VRC_01(i_xExtILK_OK := bROUGH2_VRC_01_ILK, i_xOverrideMode := bROUGH2_VRC_01_Override);
DREAM_ROUGH2_VRC_02(i_xExtILK_OK := bROUGH2_VRC_02_ILK, i_xOverrideMode := bROUGH2_VRC_02_Override);
(*//Turbo current speed evaluation//will not be used as an interlock as of right now
fbTurboSpeedCheck(i_stNCTurbo1 := DREAM_NC_PTM_01.iq_stPTM,
i_stNCTurbo2 := DREAM_NC_PTM_02.iq_stPTM,
i_stDP1Turbo := DREAM_DP1_PTM_01.iq_stPTM,
i_stDP2Turbo := DREAM_DP2_PTM_01.iq_stPtm,
i_stDP3Turbo := DREAM_DP3_PTM_01.iq_stPtm,
i_stMCTurbo1 := DREAM_MC_PTM_01.iq_stPtm,
i_stMCTurbo2 := DREAM_MC_PTM_02.iq_stPtm,
i_stCAT1Turbo := DREAM_CAT1_PTM_01.iq_stPtm,
i_stCAT2Turbo := DREAM_CAT2_PTM_01.iq_stPtm,
i_stRough2Turbo1 := DREAM_ROUGH2_PTM_01.iq_stPtm,
i_stRough2Turbo2 := DREAM_ROUGH2_PTM_02.iq_stPTM);
*)
//Flow control valves
DREAM_ROUGH1_VFV_01(i_xExtIlkOK := DREAM_ROUGH1_VRC_01.iq_stValve.i_xClsLS);
DREAM_ROUGH1_VFV_02(i_xExtIlkOK := DREAM_ROUGH1_VRC_01.iq_stValve.i_xClsLS AND DREAM_DP1_VRC_01.iq_stValve.i_xClsLS AND
NOT DREAM_NC_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_NC_PTM_02.iq_stPTM.i_xAtSpd);
DREAM_ROUGH2_VFV_01(i_xExtIlkOK := DREAM_ROUGH2_VRC_01.iq_stValve.i_xClsLS AND DREAM_ROUGH2_VRC_02.iq_stValve.i_xClsLS);
DREAM_ROUGH2_VFV_02(i_xExtIlkOK := DREAM_ROUGH2_VRC_01.iq_stValve.i_xClsLS AND
NOT DREAM_DP1_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_DP2_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_DP3_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_MC_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_MC_PTM_02.iq_stPTM.i_xAtSpd AND
NOT DREAM_ROUGH2_PTM_01.iq_stPTM.i_xAtSpd AND
NOT DREAM_ROUGH2_PTM_02.iq_stPTM.i_xAtSpd AND
NOT DREAM_CAT1_PTM_01.iq_stPTM.i_xAtSpd);
DREAM_ROUGH2_VFV_03(i_xExtIlkOK := DREAM_ROUGH2_VRC_02.iq_stValve.i_xClsLS AND DREAM_CAT1_VRC_01.iq_stValve.i_xClsLS AND
NOT DREAM_CAT2_PTM_01.iq_stPtm.i_xAtSpd);
END_PROGRAM
- Related: