DUTs
GVLs
GVL_COM
//{attribute 'qualified_only'}
VAR_GLOBAL
// Define COM Ports/Buffers incl. library Tc2_SerialCom
SerialRXBuffer_MRCO_MAIN_PTM_01 : ComBuffer;
SerialTXBuffer_MRCO_MAIN_PTM_01 : ComBuffer;
SerialRXBuffer_MRCO_MAIN_PTM_02 : ComBuffer;
SerialTXBuffer_MRCO_MAIN_PTM_02 : ComBuffer;
SerialRXBuffer_MRCO_MAIN_PTM_03 : ComBuffer;
SerialTXBuffer_MRCO_MAIN_PTM_03 : ComBuffer;
SerialRXBuffer_MRCO_MAIN_PTM_04 : ComBuffer;
SerialTXBuffer_MRCO_MAIN_PTM_04 : ComBuffer;
SerialRXBuffer_MRCO_ROUGH_PTM_01 : ComBuffer;
SerialTXBuffer_MRCO_ROUGH_PTM_01 : ComBuffer;
// Serial Terminal
fbSerialLineControl_MRCO_MAIN_PTM_01 : SerialLineControl;
fbSerialLineControl_MRCO_MAIN_PTM_02 : SerialLineControl;
fbSerialLineControl_MRCO_MAIN_PTM_03 : SerialLineControl;
fbSerialLineControl_MRCO_MAIN_PTM_04 : SerialLineControl;
fbSerialLineControl_MRCO_ROUGH_PTM_01 : SerialLineControl;
//SERIAL IO
{attribute 'TcLinkTo' := '.Status:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Status;
.D[0]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 0;
.D[1]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 1;
.D[2]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 2;
.D[3]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 3;
.D[4]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 4;
.D[5]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 5;
.D[6]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 6;
.D[7]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 7;
.D[8]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 8;
.D[9]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 9;
.D[10]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 10;
.D[11]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 11;
.D[12]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 12;
.D[13]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 13;
.D[14]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 14;
.D[15]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 15;
.D[16]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 16;
.D[17]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 17;
.D[18]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 18;
.D[19]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 19;
.D[20]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 20;
.D[21]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 21
'}
stComIn_MRCO_MAIN_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Ctrl;
.D[0]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 0;
.D[1]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 1;
.D[2]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 2;
.D[3]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 3;
.D[4]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 4;
.D[5]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 5;
.D[6]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 6;
.D[7]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 7;
.D[8]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 8;
.D[9]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 9;
.D[10]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 10;
.D[11]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 11;
.D[12]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 12;
.D[13]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 13;
.D[14]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 14;
.D[15]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 15;
.D[16]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 16;
.D[17]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 17;
.D[18]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 18;
.D[19]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 19;
.D[20]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 20;
.D[21]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 21
'}
stComOut_MRCO_MAIN_PTM_01 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Status;
.D[0]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 0;
.D[1]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 1;
.D[2]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 2;
.D[3]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 3;
.D[4]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 4;
.D[5]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 5;
.D[6]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 6;
.D[7]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 7;
.D[8]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 8;
.D[9]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 9;
.D[10]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 10;
.D[11]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 11;
.D[12]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 12;
.D[13]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 13;
.D[14]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 14;
.D[15]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 15;
.D[16]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 16;
.D[17]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 17;
.D[18]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 18;
.D[19]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 19;
.D[20]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 20;
.D[21]:=TIIB[MRCO_PLC_E11_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 21
'}
stComIn_MRCO_MAIN_PTM_03 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Ctrl;
.D[0]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 0;
.D[1]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 1;
.D[2]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 2;
.D[3]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 3;
.D[4]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 4;
.D[5]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 5;
.D[6]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 6;
.D[7]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 7;
.D[8]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 8;
.D[9]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 9;
.D[10]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 10;
.D[11]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 11;
.D[12]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 12;
.D[13]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 13;
.D[14]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 14;
.D[15]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 15;
.D[16]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 16;
.D[17]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 17;
.D[18]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 18;
.D[19]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 19;
.D[20]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 20;
.D[21]:=TIIB[MRCO_PLC_E11_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 21
'}
stComOut_MRCO_MAIN_PTM_03 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Status;
.D[0]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 0;
.D[1]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 1;
.D[2]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 2;
.D[3]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 3;
.D[4]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 4;
.D[5]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 5;
.D[6]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 6;
.D[7]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 7;
.D[8]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 8;
.D[9]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 9;
.D[10]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 10;
.D[11]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 11;
.D[12]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 12;
.D[13]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 13;
.D[14]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 14;
.D[15]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 15;
.D[16]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 16;
.D[17]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 17;
.D[18]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 18;
.D[19]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 19;
.D[20]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 20;
.D[21]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 1^Data In 21
'}
stComIn_MRCO_MAIN_PTM_02 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Ctrl;=
.D[0]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 0;
.D[1]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 1;
.D[2]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 2;
.D[3]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 3;
.D[4]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 4;
.D[5]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 5;
.D[6]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 6;
.D[7]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 7;
.D[8]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 8;
.D[9]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 9;
.D[10]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 10;
.D[11]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 11;
.D[12]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 12;
.D[13]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 13;
.D[14]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 14;
.D[15]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 15;
.D[16]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 16;
.D[17]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 17;
.D[18]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 18;
.D[19]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 19;
.D[20]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 20;
.D[21]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 1^Data Out 21
'}
stComOut_MRCO_MAIN_PTM_02 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Status;
.D[0]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 0;
.D[1]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 1;
.D[2]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 2;
.D[3]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 3;
.D[4]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 4;
.D[5]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 5;
.D[6]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 6;
.D[7]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 7;
.D[8]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 8;
.D[9]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 9;
.D[10]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 10;
.D[11]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 11;
.D[12]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 12;
.D[13]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 13;
.D[14]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 14;
.D[15]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 15;
.D[16]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 16;
.D[17]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 17;
.D[18]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 18;
.D[19]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 19;
.D[20]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 20;
.D[21]:=TIIB[MRCO_PLC_E12_EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 21
'}
stComIn_MRCO_MAIN_PTM_04 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Ctrl;
.D[0]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 0;
.D[1]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 1;
.D[2]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 2;
.D[3]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 3;
.D[4]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 4;
.D[5]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 5;
.D[6]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 6;
.D[7]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 7;
.D[8]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 8;
.D[9]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 9;
.D[10]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 10;
.D[11]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 11;
.D[12]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 12;
.D[13]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 13;
.D[14]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 14;
.D[15]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 15;
.D[16]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 16;
.D[17]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 17;
.D[18]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 18;
.D[19]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 19;
.D[20]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 20;
.D[21]:=TIIB[MRCO_PLC_E12_EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 21
'}
stComOut_MRCO_MAIN_PTM_04 AT %Q* : EL6outData22B;
{attribute 'TcLinkTo' := '.Status:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Status;
.D[0]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 0;
.D[1]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 1;
.D[2]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 2;
.D[3]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 3;
.D[4]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 4;
.D[5]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 5;
.D[6]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 6;
.D[7]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 7;
.D[8]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 8;
.D[9]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 9;
.D[10]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 10;
.D[11]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 11;
.D[12]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 12;
.D[13]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 13;
.D[14]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 14;
.D[15]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 15;
.D[16]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 16;
.D[17]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 17;
.D[18]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 18;
.D[19]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 19;
.D[20]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 20;
.D[21]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 21
'}
stComIn_MRCO_ROUGH_PTM_01 AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Ctrl;
.D[0]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 0;
.D[1]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 1;
.D[2]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 2;
.D[3]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 3;
.D[4]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 4;
.D[5]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 5;
.D[6]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 6;
.D[7]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 7;
.D[8]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 8;
.D[9]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 9;
.D[10]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 10;
.D[11]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 11;
.D[12]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 12;
.D[13]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 13;
.D[14]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 14;
.D[15]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 15;
.D[16]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 16;
.D[17]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 17;
.D[18]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 18;
.D[19]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 19;
.D[20]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 20;
.D[21]:=TIIB[MRCO_PNL1_EP03_EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 21
'}
stComOut_MRCO_ROUGH_PTM_01 AT %Q* : EL6outData22B;
END_VAR
GVL_Devices
//{attribute 'qualified_only'}
VAR_GLOBAL
(*Rack Mounted Turbo Pumps*)
{attribute 'TcLinkTo' := '.i_xFaultNC := TIIB[MRCO_PLC_E06_EL1004]^Channel 1^Input;
.i_xAtSpd := TIIB[MRCO_PLC_E06_EL1004]^Channel 2^Input;
.q_RunDO := TIIB[MRCO_PLC_E07_EL2794]^Channel 1^Output
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:PTM:01
io: io
'}
MRCO_MAIN_PTM_01 : FB_PTM_TurboDrive;
{attribute 'TcLinkTo' := '.i_xFaultNC := TIIB[MRCO_PLC_E06_EL1004]^Channel 3^Input;
.i_xAtSpd := TIIB[MRCO_PLC_E06_EL1004]^Channel 4^Input;
.q_RunDO := TIIB[MRCO_PLC_E07_EL2794]^Channel 3^Output
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:PTM:02
io: io
'}
MRCO_MAIN_PTM_02 : FB_PTM_TurboDrive;
{attribute 'TcLinkTo' := '.i_xFaultNC := TIIB[MRCO_PLC_E08_EL1004]^Channel 1^Input;
.i_xAtSpd := TIIB[MRCO_PLC_E08_EL1004]^Channel 2^Input;
.q_RunDO := TIIB[MRCO_PLC_E07_EL2794]^Channel 2^Output
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:PTM:03
io: io
'}
MRCO_MAIN_PTM_03 : FB_PTM_TurboDrive;
{attribute 'TcLinkTo' := '.i_xFaultNC := TIIB[MRCO_PLC_E08_EL1004]^Channel 3^Input;
.i_xAtSpd := TIIB[MRCO_PLC_E08_EL1004]^Channel 4^Input;
.q_RunDO := TIIB[MRCO_PLC_E07_EL2794]^Channel 4^Output
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:PTM:04
io: io
'}
MRCO_MAIN_PTM_04 : FB_PTM_TurboDrive;
(*Onboard Turbo Pumps*)
{attribute 'TcLinkTo' := '.q_xReset := TIIB[MRCO_PNL1_EP02_EP2624-0002]^Channel 2^Output;
.q_RunDO := TIIB[MRCO_PNL1_EP02_EP2624-0002]^Channel 1^Output;
.i_xAtSpd := TIIB[MRCO_PNL1_EP01_EP2338-0002]^Channel 1^Input;
.i_xFaultNC := TIIB[MRCO_PNL1_EP01_EP2338-0002]^Channel 2^Input
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:PTM:01
io: io
'}
MRCO_ROUGH_PTM_01 : FB_PTM_Pfeiffer;
(*Pirani MKS 275 Gauges*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP05_EP3174-0002]^AI Standard Channel 1^Value
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:GPI:01
io: io
'}
MRCO_MAIN_GPI_01 : FB_CVM201;
(*MicroPirani MKS 925 Gauges*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP04_EP3174-0002]^AI Standard Channel 1^Value
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:GPI:01
io: io
'}
MRCO_ROUGH_GPI_01 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP04_EP3174-0002]^AI Standard Channel 2^Value
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:GPI:02
io: io
'}
MRCO_ROUGH_GPI_02 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP04_EP3174-0002]^AI Standard Channel 3^Value
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:GPI:03
io: io
'}
MRCO_ROUGH_GPI_03 : FB_9XX;
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP04_EP3174-0002]^AI Standard Channel 4^Value
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:GPI:04
io: io
'}
MRCO_ROUGH_GPI_04 : FB_9XX;
(*Hot Cathode MKS 909 Gauges*)
{attribute 'TcLinkTo' := '.i_iPRESS_R := TIIB[MRCO_PNL1_EP05_EP3174-0002]^AI Standard Channel 2^Value;
.q_xHV_DIS := TIIB[MRCO_PNL1_EP06_EP2624-0002]^Channel 2^Output
'}
{attribute 'pytmc' := '
pv: MRCO:MAIN:GHC:01
io: io
'}
MRCO_MAIN_GHC_01 : FB_MKS909;
(*Variable Leak Valve*)
{attribute 'TcLinkTo' := '.i_nRawPosition := TIIB[VCN_1_VAT590]^DI TxPDO-Map^Position;
.i_nRawPressure := TIIB[VCN_1_VAT590]^DI TxPDO-Map^Pressure;
.i_eControlMode := TIIB[VCN_1_VAT590]^DI TxPDO-Map^Control mode;
.i_eFatalError := TIIB[VCN_1_VAT590]^DI TxPDO-Map^Fatal error;
.i_stGenStatus := TIIB[VCN_1_VAT590]^DI TxPDO-Map^General status;
.i_stGenWarnings := TIIB[VCN_1_VAT590]^DI TxPDO-Map^General warnings;
.i_stExtnWarnings := TIIB[VCN_1_VAT590]^DI TxPDO-Map^Extended warnings;
.o_nRawPositionSP := TIIB[VCN_1_VAT590]^DO RxPDO-Map^Position setpoint;
.o_nRawPressureSP := TIIB[VCN_1_VAT590]^DO RxPDO-Map^Pressure setpoint;
.o_nRawPressure := TIIB[VCN_1_VAT590]^DO RxPDO-Map^External digital pressure sensor 1;
.o_eCtrlModeSP := TIIB[VCN_1_VAT590]^DO RxPDO-Map^Control mode setpoint;
.o_stGenCtrlSP := TIIB[VCN_1_VAT590]^DO RxPDO-Map^General control setpoint;
.i_stVat590PlcDriveRef.aNetId := TIIB[VCN_1_VAT590]^InfoData^AdsAddr^netId;
.i_stVat590PlcDriveRef.nSlaveAddr := TIIB[VCN_1_VAT590]^InfoData^AdsAddr^port;
.i_bValveEthCatStatus := TIIB[VCN_1_VAT590]^WcState^WcState
'}
{attribute 'pytmc' := 'pv: MRCO:VCN:01'}
MRCO_VCN_01 : FB_VCN_VAT590;
(*Normally Closed Valve with Readback*)//ALL VALVES CURRENTLY NO
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 1^Input;
.i_xClsLS := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 2^Input;
.q_xOPN_DO := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 11^Output
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:VRC:01
io: io
'}
MRCO_ROUGH_VRC_01 : FB_VRC;
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[MRCO_PNL1_EP08_EP2338-0002]^Channel 1^Input;
.i_xClsLS := TIIB[MRCO_PNL1_EP08_EP2338-0002]^Channel 2^Input;
.q_xOPN_DO := TIIB[MRCO_PNL1_EP08_EP2338-0002]^Channel 11^Output
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:VRC:03
io: io
'}
MRCO_ROUGH_VRC_03 : FB_VRC;
(*Normally Open Valve with Readback*)
{attribute 'TcLinkTo' := '.i_xOpnLS := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 5^Input;
.i_xClsLS := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 6^Input;
.q_xCLS_DO := TIIB[MRCO_PNL1_EP07_EP2338-0002]^Channel 15^Output
'}
{attribute 'pytmc' := '
pv: MRCO:ROUGH:VRC:02
io: io
'}
MRCO_ROUGH_VRC_02 : FB_VRC_NO;
(*Pfeiffer*)
// They share the same serial port
st_Pfeiffer_CTRL_MRCO_ROUGH_PTM_01 : ARRAY[1..20] OF ST_PfeifferControl;
st_Pfeiffer_RBK_MRCO_ROUGH_PTM_01 : ARRAY[1..20] OF ST_PfeifferStatus;
fb_PfeifferCom_MRCO_ROUGH_PTM_01 : FB_PFEIFFER_COM;
(*Leybold*)
st_TD20_RBK_MRCO_MAIN_PTM_01 : ST_TD20Status;
fb_TD20Com_MRCO_MAIN_PTM_01 : FB_OERLIKON_TD20_COM;
st_TD20_RBK_MRCO_MAIN_PTM_02 : ST_TD20Status;
fb_TD20Com_MRCO_MAIN_PTM_02 : FB_OERLIKON_TD20_COM;
st_TD20_RBK_MRCO_MAIN_PTM_03 : ST_TD20Status;
fb_TD20Com_MRCO_MAIN_PTM_03 : FB_OERLIKON_TD20_COM;
st_TD20_RBK_MRCO_MAIN_PTM_04 : ST_TD20Status;
fb_TD20Com_MRCO_MAIN_PTM_04 : FB_OERLIKON_TD20_COM;
END_VAR
- Related:
GVL_PLC_Interfaces
//{attribute 'qualified_only'}
VAR_GLOBAL
//Outputs
fb_ADS_WATCHDOG_VAC_MRCO_TMO:FB_ADS_WATCHDOG;
(*ETHERCAT BRIDGE COM STATUS*)
//0: Other side is in OP state, >0: Error
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^SYNC Inputs^TxPDO state
'}
xEcatBridge_TxPDO_state AT %I* : BOOL;
//0: External device connected, 1: External device not connected
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^SYNC Inputs^External device not connected
'}
xEcatBridge_External_device_not_connected AT %I* : BOOL;
//0 = Data valid, 1 = Data invalid
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^WcState^WcState
'}
xEcatBridge_WcState AT %I* : BOOL;
(*I/O Inputs from TMO Beamline*)
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Inputs^HUTCH_PLC_NAME
'}
sHUTCH_PLC_NAME AT %I* : STRING(8);
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Inputs^TMO_ROUGH1_VRC_01_OPEN_LS
'}
xTMO_ROUGH1_VRC_01_OPEN_LS AT %I* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Inputs^TMO_ROUGH2_VRC_01_OPEN_LS
'}
xTMO_ROUGH2_VRC_01_OPEN_LS AT %I* : BOOL;
(*I/O Outputs to TMO Beamline*)
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^ENDSTATION_PLC_NAME
'}
sENDSTATION_PLC_NAME AT %Q* : STRING(8):= 'MRCO';
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_ROUGH_VRC_01_OPEN_LS
'}
xIP1_ROUGH_VRC_01_OPEN_LS AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_ROUGH_VRC_02_OPEN_LS
'}
xIP1_ROUGH_VRC_02_OPEN_LS AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_ROUGH_VRC_03_OPEN_LS
'}
xIP1_ROUGH_VRC_03_OPEN_LS AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_TURBOS_ALL_AtSpd
'}
{attribute 'pytmc' := '
pv: PLC:MRCO:VAC:IP1_TURBOS_ALL_ATSPD
io:i
'}
xIP1_TURBOS_ALL_AtSpd AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_MAIN_xAT_VAC
'}
xIP1_MAIN_xAT_VAC AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_MAIN_xPRESS_OK
'}
xIP1_MAIN_xPRESS_OK AT %Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_MAIN_rPRESS
'}
rIP1_MAIN_rPRESS AT %Q* : REAL;
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E04_EL6692]^IO Outputs^IP1_HV_SAFETY_ENABLE
'}
xIP1_HV_SAFETY_ENABLE AT %Q* : BOOL;
(*ISEG HV Crate Safety Loop*)
{attribute 'TcLinkTo' := 'TIIB[MRCO_PLC_E09_EL2794]^Channel 1^Output
'}
{attribute 'pytmc' := '
pv: PLC:MRCO:VAC:HV_SAFETY_ENABLE
io:i
'}
xHighVoltageSafteyLoopEnable AT %Q* : BOOL := FALSE; (*When Enables the High voltage Saftey loop is closed and HV can start.*)
END_VAR
GVL_TC
//{attribute 'qualified_only'}
VAR_GLOBAL
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 1^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 1^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 1^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 1^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:01
io: io
'}
TC_01 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 2^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 2^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 2^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 2^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:02
io: io
'}
TC_02 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 3^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 3^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 3^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 3^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:03
io: io
'}
TC_03 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 4^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 4^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 4^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 4^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:04
io: io
'}
TC_04 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 5^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 5^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 5^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 5^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:05
io: io
'}
TC_05 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 6^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 6^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 6^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 6^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:06
io: io
'}
TC_06 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 7^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 7^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 7^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 7^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:07
io: io
'}
TC_07 : FB_TempSensor;
{attribute 'TcLinkTo' := '.iRaw := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 8^Value;
.bError := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 8^Status^Error;
.bUnderrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 8^Status^Underrange;
.bOverrange := TIIB[MRCO_PLC_E10_EL3318]^TC Channel 8^Status^Overrange
'}
{attribute 'pytmc' := '
pv: MRCO:STC:08
io: io
'}
TC_08 : FB_TempSensor;
END_VAR
GVL_Variables
//{attribute 'qualified_only'}
VAR_GLOBAL
{attribute 'pytmc' := '
pv: PLC:MRCO:VAC:OVRDON
io: io
'}
xSystemOverrideMode_MRCO : BOOL := FALSE;
{attribute 'pytmc' := '
pv: PLC:MRCO:ON:BEAMLINE
io:i
'}
xOnBeamline : BOOL := FALSE;
rHighVoltageMinPressure : REAL := 1e-05; (*Hard coded High voltage Minimum Enable Pressure*)
END_VAR
POUs
DIAGNOSTICS
PROGRAM DIAGNOSTICS
VAR
//Change the PLC String Name to the actual PLC NAME
sPLCName :STRING := 'PLC-MRCO-VAC-01';
//Link the sAMSNetID to the Etherat Master netID
i_sAMSNetID AT %I*: AMSNETID;
// DO NOT CHANGE
sAMSNetID : STRING; //used for EPICS PV
sLibVersion_LCLS_General : STRING;(* := stLibVersion_LCLS_General.sVersion*) ;
fbEcatDiag:FB_EcatDiag;
bAllSlaveStateGood : BOOL;
bMasterStateGood :BOOL;
iMasterState: WORD;
sMasterState:STRING;
nSlaveNumber : UINT;
aiSlaveStates: ARRAY[1..256] OF BYTE;
aEcSlaveInfo : ARRAY[1..256] OF ST_EcDevice;
END_VAR
// Instaniating a call to the fbEcatDiag
fbEcatDiag(
I_AMSNetId:=i_sAMSNetID ,
i_xFirstPass:= _TaskInfo[1].FirstCycle,
q_xAllSlaveStatesGood=> bAllSlaveStateGood ,
q_anTermStates=> aiSlaveStates,
q_xMasterStateGood=>bMasterStateGood ,
q_nMasterState=> iMasterState,
q_sMasterState=> sMasterState ,
q_astEcConfSlaveInfo=> aEcSlaveInfo ,
q_nSlaves=> nSlaveNumber);
END_PROGRAM
F_Turbo_NC_NO_Valve_Logic
FUNCTION F_Turbo_NC_NO_Valve_Logic : BOOL
VAR_INPUT
i_stTurbo : ST_PTM; // Turbo Pump
i_stISG : ST_VG; //Gauge measuring inlet Pressure e.g Pirani
i_stBSG : ST_VG; //Gauge measureing backing pressure
iq_stValve_NO : ST_VRC_NO; //Normally Open Valve directly sharing turbo pump vaccum volume.
iq_stValve_NC : ST_VRC; //Normally Closed Valve directly sharing turbo pump vaccum volume.
iq_stValve_NC_second : ST_VRC; //Normally Closed Valve on the other side of NO valve that also connects to roughing line.
EcatBridge_Error_Present : BOOL; // ADS Communication: Watchdog and ADS Read Error Bit
iq_stRoughRoughValve_NC_xOpnLS: BOOL; //Normally Closed Valve Downstream of iq_stValve_NC in Beamline Roughing Line, Open Limit Switch.
iq_stRoughRoughValve_NC_second_xOpenLS: BOOL; //Normally Closed Valve Downstream of iq_stValve_NC_second in Beamline Roughing Line, Open Limit Switch.
x_onBeamline : BOOL; //Whether the Turbopump/Endstation is mounted on the beamline or not.
END_VAR
VAR
END_VAR
IF (x_onBeamline) THEN
F_Turbo_NC_NO_Valve_Logic := (i_stISG.xPRESS_OK AND i_stISG.rPRESS < i_stTurbo.rInletPressureSP) AND
(i_stBSG.xPRESS_OK AND i_stBSG.rPRESS < i_stTurbo.rBackingPressureSP) AND
((iq_stValve_NC.i_xOpnLS AND iq_stRoughRoughValve_NC_xOpnLS) OR
(iq_stValve_NO.i_xOpnLS AND (iq_stValve_NC_second.i_xOpnLS AND
iq_stRoughRoughValve_NC_second_xOpenLS)))AND (NOT EcatBridge_Error_Present);
ELSE
F_Turbo_NC_NO_Valve_Logic := (i_stISG.xPRESS_OK AND i_stISG.rPRESS < i_stTurbo.rInletPressureSP) AND
(i_stBSG.xPRESS_OK AND i_stBSG.rPRESS < i_stTurbo.rBackingPressureSP) AND
(iq_stValve_NC.i_xOpnLS OR (iq_stValve_NO.i_xOpnLS AND iq_stValve_NC_second.i_xOpnLS));
END_IF
END_FUNCTION
MAIN
PROGRAM MAIN
VAR
fbLogHandler : FB_LogHandler;
//TMO Interface
xEcatBridge_COM_ERROR : BOOL;
b_TurboPumpRunningFlag : BOOL;
TurboPumpTOF : TOF;
TurboPumpDelayTime : TIME := T#30s;
fbGetCurTaskIndex : GETCURTASKINDEX;
F_Turbo_TESTY: BOOL;
END_VAR
IF (xOnBeamline) THEN
F_Turbo_TESTY := (MRCO_MAIN_GPI_01.PG.xPRESS_OK AND MRCO_MAIN_GPI_01.PG.rPRESS < MRCO_ROUGH_PTM_01.iq_stPtm.rInletPressureSP) AND
(MRCO_ROUGH_GPI_02.PG.xPRESS_OK AND MRCO_ROUGH_GPI_02.PG.rPRESS < MRCO_ROUGH_PTM_01.iq_stPtm.rBackingPressureSP) AND
((MRCO_ROUGH_VRC_01.iq_stValve.i_xOpnLS AND xTMO_ROUGH2_VRC_01_OPEN_LS) OR
(MRCO_ROUGH_VRC_02.iq_stValve.i_xOpnLS AND (MRCO_ROUGH_VRC_03.iq_stValve.i_xOpnLS AND
xTMO_ROUGH1_VRC_01_OPEN_LS)))AND (NOT xEcatBridge_COM_ERROR);
ELSE
F_Turbo_TESTY := (MRCO_MAIN_GPI_01.PG.xPRESS_OK AND MRCO_MAIN_GPI_01.PG.rPRESS < MRCO_ROUGH_PTM_01.iq_stPtm.rInletPressureSP) AND
(MRCO_ROUGH_GPI_02.PG.xPRESS_OK AND MRCO_ROUGH_GPI_02.PG.rPRESS < MRCO_ROUGH_PTM_01.iq_stPtm.rBackingPressureSP) AND
(MRCO_ROUGH_VRC_01.iq_stValve.i_xOpnLS OR MRCO_ROUGH_VRC_02.iq_stValve.i_xOpnLS OR MRCO_ROUGH_VRC_03.iq_stValve.i_xOpnLS);
END_IF
///
fbLogHandler();
// Run the Diagnostics PRG
DIAGNOSTICS();
(*EtherCAT Bridge Status*)
//xEcatBridge_COM_ERROR := TRUE means that there is an EtherCAT Bridge Communication error.
xEcatBridge_COM_ERROR := (xEcatBridge_TxPDO_state OR xEcatBridge_External_device_not_connected OR xEcatBridge_WcState);
xOnBeamline := (xEcatBridge_COM_ERROR = FALSE) AND (sHUTCH_PLC_NAME = 'TMO');
(*TurboPump running Flag with 30 second Turn Off delay.*)
b_TurboPumpRunningFlag :=
(MRCO_MAIN_PTM_01.iq_stPtm.eState = E_PumpState.pumpRUNNING) AND
(MRCO_MAIN_PTM_02.iq_stPtm.eState = E_PumpState.pumpRUNNING) AND
(MRCO_MAIN_PTM_03.iq_stPtm.eState = E_PumpState.pumpRUNNING) AND
(MRCO_MAIN_PTM_04.iq_stPtm.eState = E_PumpState.pumpRUNNING) AND
(MRCO_ROUGH_PTM_01.iq_stPtm.eState = E_PumpState.pumpRUNNING);
TurboPumpTOF(IN:= b_TurboPumpRunningFlag, PT := TurboPumpDelayTime);
xIP1_TURBOS_ALL_AtSpd:= TurboPumpTOF.Q;
(*High Voltage Saftey Loop*)// rHighVoltageMinPressure = 1e-05; (*Hard coded High voltage Minimum Enable Pressure*)
xHighVoltageSafteyLoopEnable:= (MRCO_MAIN_GHC_01.IG.rPRESS <= rHighVoltageMinPressure) AND (MRCO_MAIN_GHC_01.IG.xPRESS_OK = TRUE);
(*PIRANI Gauges*)
MRCO_MAIN_GPI_01.M_SetBits(32767);
MRCO_MAIN_GPI_01(PG=>);
(*uPIRANI Gauges*)
MRCO_ROUGH_GPI_01.M_SetBits(32767);
MRCO_ROUGH_GPI_01(PG=>);
MRCO_ROUGH_GPI_02.M_SetBits(32767);
MRCO_ROUGH_GPI_02(PG=>);
MRCO_ROUGH_GPI_03.M_SetBits(32767);
MRCO_ROUGH_GPI_03(PG=>);
MRCO_ROUGH_GPI_04.M_SetBits(32767);
MRCO_ROUGH_GPI_04(PG=>);
(*Cold Cathode Gauges*)
(*Hot Cathode Gauges*)
MRCO_MAIN_GHC_01.M_SetBits(32767);
MRCO_MAIN_GHC_01(PG:=MRCO_MAIN_GPI_01.PG,IG=>);
(*Variable Leak Valve*)
MRCO_VCN_01(bExtIlkOK:= TRUE, IG := MRCO_MAIN_GHC_01.IG);
(*TURBO Pumps
*In general, if turbo pump setpoints are above the pirani guage readings or there is no downstream open path to a roughing pump, the turbo pump will close.
*
*)
MRCO_MAIN_PTM_01(i_xExtILKOk:= F_Turbo_NC_NO_Valve_Logic(
i_stTurbo:= MRCO_MAIN_PTM_01.iq_stPtm,
i_stISG:= MRCO_MAIN_GPI_01.PG,
i_stBSG:= MRCO_ROUGH_GPI_02.PG,
iq_stValve_NO:= MRCO_ROUGH_VRC_02.iq_stValve,
iq_stValve_NC:= MRCO_ROUGH_VRC_01.iq_stValve,
iq_stValve_NC_second:= MRCO_ROUGH_VRC_03.iq_stValve,
EcatBridge_Error_Present:= xEcatBridge_COM_ERROR,
iq_stRoughRoughValve_NC_xOpnLS:= xTMO_ROUGH2_VRC_01_OPEN_LS,
iq_stRoughRoughValve_NC_second_xOpenLS:=xTMO_ROUGH1_VRC_01_OPEN_LS,
x_onBeamline:= xOnBeamline),
iq_stPtm=> );
MRCO_MAIN_PTM_02(i_xExtILKOk:= F_Turbo_NC_NO_Valve_Logic(
i_stTurbo:= MRCO_MAIN_PTM_02.iq_stPtm,
i_stISG:= MRCO_MAIN_GPI_01.PG,
i_stBSG:= MRCO_ROUGH_GPI_02.PG,
iq_stValve_NO:= MRCO_ROUGH_VRC_02.iq_stValve,
iq_stValve_NC:= MRCO_ROUGH_VRC_01.iq_stValve,
iq_stValve_NC_second:= MRCO_ROUGH_VRC_03.iq_stValve,
EcatBridge_Error_Present:= xEcatBridge_COM_ERROR,
iq_stRoughRoughValve_NC_xOpnLS:= xTMO_ROUGH2_VRC_01_OPEN_LS,
iq_stRoughRoughValve_NC_second_xOpenLS:=xTMO_ROUGH1_VRC_01_OPEN_LS,
x_onBeamline:= xOnBeamline),
iq_stPtm=> );
MRCO_MAIN_PTM_03(i_xExtILKOk:= F_Turbo_NC_NO_Valve_Logic(
i_stTurbo:= MRCO_MAIN_PTM_03.iq_stPtm,
i_stISG:= MRCO_MAIN_GPI_01.PG,
i_stBSG:= MRCO_ROUGH_GPI_02.PG,
iq_stValve_NO:= MRCO_ROUGH_VRC_02.iq_stValve,
iq_stValve_NC:= MRCO_ROUGH_VRC_01.iq_stValve,
iq_stValve_NC_second:= MRCO_ROUGH_VRC_03.iq_stValve,
EcatBridge_Error_Present:= xEcatBridge_COM_ERROR,
iq_stRoughRoughValve_NC_xOpnLS:= xTMO_ROUGH2_VRC_01_OPEN_LS,
iq_stRoughRoughValve_NC_second_xOpenLS:=xTMO_ROUGH1_VRC_01_OPEN_LS,
x_onBeamline:= xOnBeamline),
iq_stPtm=> );
MRCO_MAIN_PTM_04(i_xExtILKOk:= F_Turbo_NC_NO_Valve_Logic(
i_stTurbo:= MRCO_MAIN_PTM_04.iq_stPtm,
i_stISG:= MRCO_MAIN_GPI_01.PG,
i_stBSG:= MRCO_ROUGH_GPI_02.PG,
iq_stValve_NO:= MRCO_ROUGH_VRC_02.iq_stValve,
iq_stValve_NC:= MRCO_ROUGH_VRC_01.iq_stValve,
iq_stValve_NC_second:= MRCO_ROUGH_VRC_03.iq_stValve,
EcatBridge_Error_Present:= xEcatBridge_COM_ERROR,
iq_stRoughRoughValve_NC_xOpnLS:= xTMO_ROUGH2_VRC_01_OPEN_LS,
iq_stRoughRoughValve_NC_second_xOpenLS:=xTMO_ROUGH1_VRC_01_OPEN_LS,
x_onBeamline:= xOnBeamline),
iq_stPtm=> );
MRCO_ROUGH_PTM_01(i_xExtILKOk:= F_Turbo_NC_NO_Valve_Logic(
i_stTurbo:= MRCO_ROUGH_PTM_01.iq_stPtm,
i_stISG:= MRCO_MAIN_GPI_01.PG,
i_stBSG:= MRCO_ROUGH_GPI_02.PG,
iq_stValve_NO:= MRCO_ROUGH_VRC_02.iq_stValve,
iq_stValve_NC:= MRCO_ROUGH_VRC_01.iq_stValve,
iq_stValve_NC_second:= MRCO_ROUGH_VRC_03.iq_stValve,
EcatBridge_Error_Present:= xEcatBridge_COM_ERROR,
iq_stRoughRoughValve_NC_xOpnLS:= xTMO_ROUGH2_VRC_01_OPEN_LS,
iq_stRoughRoughValve_NC_second_xOpenLS:=xTMO_ROUGH1_VRC_01_OPEN_LS,
x_onBeamline:= xOnBeamline),
iq_stPtm=> );
(*Serial Communication*)
(*Assign adresses to the pfeiffer controllers connected to this serial terminal*)
st_Pfeiffer_CTRL_MRCO_ROUGH_PTM_01[1].iSerialAddress :=1;
st_Pfeiffer_CTRL_MRCO_ROUGH_PTM_01[1].xEnableComm := TRUE;
(* Instanitate the Function block for serial communication with Pfeiffer*)
fb_PfeifferCom_MRCO_ROUGH_PTM_01(astPfeifferControl := st_Pfeiffer_CTRL_MRCO_ROUGH_PTM_01,
astPfeifferStatus:= st_Pfeiffer_RBK_MRCO_ROUGH_PTM_01,
SerialRXBuffer:= SerialRXBuffer_MRCO_ROUGH_PTM_01,
SerialTXBuffer:= SerialTXBuffer_MRCO_ROUGH_PTM_01);
(* Copy Status Pv's into the PTM structure*)
MRCO_ROUGH_PTM_01.M_Serial_IO(st_Pfeiffer_RBK:= st_Pfeiffer_RBK_MRCO_ROUGH_PTM_01[1], st_Pfeiffer_CTRL:= st_Pfeiffer_CTRL_MRCO_ROUGH_PTM_01[1]);
//Leybolds
fb_TD20Com_MRCO_MAIN_PTM_01(SerialRXBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_01,
SerialTXBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_01,
astTD20Status=> st_TD20_RBK_MRCO_MAIN_PTM_01);
MRCO_MAIN_PTM_01.M_Serial_IO(i_st_TD20_RBK:= st_TD20_RBK_MRCO_MAIN_PTM_01);
fb_TD20Com_MRCO_MAIN_PTM_02(SerialRXBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_02,
SerialTXBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_02,
astTD20Status=> st_TD20_RBK_MRCO_MAIN_PTM_02);
MRCO_MAIN_PTM_02.M_Serial_IO(i_st_TD20_RBK:= st_TD20_RBK_MRCO_MAIN_PTM_02);
fb_TD20Com_MRCO_MAIN_PTM_03(SerialRXBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_03,
SerialTXBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_03,
astTD20Status=> st_TD20_RBK_MRCO_MAIN_PTM_03);
MRCO_MAIN_PTM_03.M_Serial_IO(i_st_TD20_RBK:= st_TD20_RBK_MRCO_MAIN_PTM_03);
fb_TD20Com_MRCO_MAIN_PTM_04(SerialRXBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_04,
SerialTXBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_04,
astTD20Status=> st_TD20_RBK_MRCO_MAIN_PTM_04);
MRCO_MAIN_PTM_04.M_Serial_IO(i_st_TD20_RBK:= st_TD20_RBK_MRCO_MAIN_PTM_04);
(*Vacuum Gate Valve*)
fbGetCurTaskIndex();//getting index for first cycle of PLC operation
//VRC-Normally Closed
//If OnBeamline then stay open.
IF(xOnBeamline) THEN
MRCO_ROUGH_VRC_01.M_Set_OPN_SW(TRUE);
MRCO_ROUGH_VRC_01(
i_xExtILK_OK:= TRUE,
i_xOverrideMode:= xSystemOverrideMode_MRCO,
iq_stValve=> );
ELSE
//MRCO:ROUGH:VRC:01 can open when the pressure across the valve is below 10 torr //add the beamline
MRCO_ROUGH_VRC_01(
i_xExtILK_OK:= (ABS(MRCO_ROUGH_GPI_01.PG.rPRESS - MRCO_ROUGH_GPI_02.PG.rPRESS)<150.0), // change back after setuplab testing
i_xOverrideMode:= xSystemOverrideMode_MRCO,
iq_stValve=> );
END_IF
//Normally Open Bypass Valve
IF(xOnBeamline) THEN
MRCO_ROUGH_VRC_02.M_Set_CLS_SW(FALSE);
ELSIF (NOT xOnBeamline AND _TaskInfo[fbGetCurTaskIndex.index].FirstCycle OR (ABS(MRCO_ROUGH_GPI_02.PG.rPRESS - MRCO_ROUGH_GPI_04.PG.rPRESS)>1000.0) ) THEN
MRCO_ROUGH_VRC_02.M_Set_CLS_SW(TRUE);
END_IF
MRCO_ROUGH_VRC_02(
i_xExtILK_OK:= TRUE,
i_xOverrideMode:= xSystemOverrideMode_MRCO,
iq_stValve=> );
//VRC-Normally Closed
//If OnBeamline then stay open.
IF(xOnBeamline) THEN
MRCO_ROUGH_VRC_03.M_Set_OPN_SW(TRUE);
MRCO_ROUGH_VRC_03(
i_xExtILK_OK:= TRUE,
i_xOverrideMode:= xSystemOverrideMode_MRCO,
iq_stValve=> );
ELSE
MRCO_ROUGH_VRC_03(//CVMI:ROUGH:VRC:03 can open when the pressure across the valve is below 10 torr //add the beamline
i_xExtILK_OK:= (ABS(MRCO_ROUGH_GPI_03.PG.rPRESS - MRCO_ROUGH_GPI_04.PG.rPRESS)<1000.0), // Change back after setup lab testing
i_xOverrideMode:= xSystemOverrideMode_MRCO,
iq_stValve=> );
END_IF
(*Update EtherCAT Bridge Outputs*)
xIP1_ROUGH_VRC_01_OPEN_LS := MRCO_ROUGH_VRC_01.M_IsOpen();
xIP1_ROUGH_VRC_02_OPEN_LS := MRCO_ROUGH_VRC_02.M_IsOpen();
xIP1_ROUGH_VRC_03_OPEN_LS := MRCO_ROUGH_VRC_03.M_IsOpen();
//xIP1_TURBO_FAULT AT %Q* : BOOL; already updated at turbo pump logic.
xIP1_MAIN_xAT_VAC := MRCO_MAIN_GHC_01.IG.xAT_VAC;
xIP1_MAIN_xPRESS_OK := MRCO_MAIN_GHC_01.IG.xPRESS_OK;
rIP1_MAIN_rPRESS := MRCO_MAIN_GHC_01.IG.rPRESS;
xIP1_HV_SAFETY_ENABLE := xHighVoltageSafteyLoopEnable;
(*Update Thermocouple Readings*)
PRG_TC();
END_PROGRAM
- Related:
PRG_COM
PROGRAM PRG_COM
VAR
END_VAR
(*Instanitate Serial port com function *)
fbSerialLineControl_MRCO_MAIN_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_MRCO_MAIN_PTM_01),
pComOut:=ADR(stComOut_MRCO_MAIN_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_MRCO_MAIN_PTM_01)),
TxBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_01,
RxBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_01,
Error=> ,
ErrorID=> );
fbSerialLineControl_MRCO_MAIN_PTM_02(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_MRCO_MAIN_PTM_02),
pComOut:=ADR(stComOut_MRCO_MAIN_PTM_02),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_MRCO_MAIN_PTM_02)),
TxBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_02,
RxBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_02,
Error=> ,
ErrorID=> );
fbSerialLineControl_MRCO_MAIN_PTM_03(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_MRCO_MAIN_PTM_03),
pComOut:=ADR(stComOut_MRCO_MAIN_PTM_03),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_MRCO_MAIN_PTM_03)),
TxBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_03,
RxBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_03,
Error=> ,
ErrorID=> );
fbSerialLineControl_MRCO_MAIN_PTM_04(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_MRCO_MAIN_PTM_04),
pComOut:=ADR(stComOut_MRCO_MAIN_PTM_04),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_MRCO_MAIN_PTM_04)),
TxBuffer:= SerialTXBuffer_MRCO_MAIN_PTM_04,
RxBuffer:= SerialRXBuffer_MRCO_MAIN_PTM_04,
Error=> ,
ErrorID=> );
fbSerialLineControl_MRCO_ROUGH_PTM_01(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn_MRCO_ROUGH_PTM_01),
pComOut:=ADR(stComOut_MRCO_ROUGH_PTM_01),
SizeComIn:= UINT_TO_INT(SIZEOF(stComIn_MRCO_ROUGH_PTM_01)),
TxBuffer:= SerialTXBuffer_MRCO_ROUGH_PTM_01,
RxBuffer:= SerialRXBuffer_MRCO_ROUGH_PTM_01,
Error=> ,
ErrorID=> );
END_PROGRAM
PRG_TC
PROGRAM PRG_TC
VAR
END_VAR
TC_01(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_02(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_03(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_04(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_05(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_06(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_07(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
TC_08(
fResolution:= ,
fTemp=> ,
bConnected=> ,
bError=> ,
bUnderrange=> ,
bOverrange=> );
END_PROGRAM