DUTs¶
GVLs¶
GVL_COM¶
VAR_GLOBAL
// Define COM Ports/Buffers incl. library Tc2_SerialCom
SerialRXBuffer : ComBuffer;
SerialTXBuffer : ComBuffer;
// Serial Terminal
fbSerialLineControl: SerialLineControl;
//SERIAL IO
{attribute 'TcLinkTo' := '.Status:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Status;
.D[0]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 0;
.D[1]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 1;
.D[2]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 2;
.D[3]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 3;
.D[4]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 4;
.D[5]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 5;
.D[6]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 6;
.D[7]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 7;
.D[8]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 8;
.D[9]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 9;
.D[10]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 10;
.D[11]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 11;
.D[12]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 12;
.D[13]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 13;
.D[14]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 14;
.D[15]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 15;
.D[16]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 16;
.D[17]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 17;
.D[18]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 18;
.D[19]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 19;
.D[20]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 20;
.D[21]:=TIIB[EL6002]^COM TxPDO-Map Inputs Channel 2^Data In 21;
'}
stComIn AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Ctrl;
.D[0]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 0;
.D[1]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 1;
.D[2]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 2;
.D[3]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 3;
.D[4]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 4;
.D[5]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 5;
.D[6]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 6;
.D[7]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 7;
.D[8]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 8;
.D[9]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 9;
.D[10]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 10;
.D[11]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 11;
.D[12]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 12;
.D[13]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 13;
.D[14]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 14;
.D[15]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 15;
.D[16]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 16;
.D[17]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 17;
.D[18]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 18;
.D[19]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 19;
.D[20]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 20;
.D[21]:=TIIB[EL6002]^COM RxPDO-Map Outputs Channel 2^Data Out 21;
'}
stComOut AT %Q* : EL6outData22B;
// Define COM Ports/Buffers incl. library Tc2_SerialCom
E2_SerialRXBuffer : ComBuffer;
E2_SerialTXBuffer : ComBuffer;
// Serial Terminal
E2_fbSerialLineControl: SerialLineControl;
//SERIAL IO
{attribute 'TcLinkTo' := '.Status:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Status;
.D[0]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 0;
.D[1]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 1;
.D[2]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 2;
.D[3]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 3;
.D[4]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 4;
.D[5]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 5;
.D[6]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 6;
.D[7]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 7;
.D[8]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 8;
.D[9]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 9;
.D[10]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 10;
.D[11]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 11;
.D[12]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 12;
.D[13]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 13;
.D[14]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 14;
.D[15]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 15;
.D[16]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 16;
.D[17]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 17;
.D[18]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 18;
.D[19]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 19;
.D[20]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 20;
.D[21]:=TIIB[EP6002-0002]^COM TxPDO-Map Inputs Channel 1^Data In 21;
'}
E2_stComIn AT %I* : EL6inData22B;
{attribute 'TcLinkTo' := '.Ctrl:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Ctrl;
.D[0]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 0;
.D[1]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 1;
.D[2]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 2;
.D[3]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 3;
.D[4]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 4;
.D[5]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 5;
.D[6]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 6;
.D[7]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 7;
.D[8]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 8;
.D[9]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 9;
.D[10]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 10;
.D[11]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 11;
.D[12]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 12;
.D[13]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 13;
.D[14]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 14;
.D[15]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 15;
.D[16]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 16;
.D[17]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 17;
.D[18]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 18;
.D[19]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 19;
.D[20]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 20;
.D[21]:=TIIB[EP6002-0002]^COM RxPDO-Map Outputs Channel 1^Data Out 21;
'}
E2_stComOut AT %Q* : EL6outData22B;
END_VAR
GVL_Devices¶
VAR_GLOBAL
(*TD20*)
{attribute 'pytmc' := '
pv: PTM:01
'}
PTM_01 : FB_PTM_TurboDrive; // PLC IO Interface
PTM_01_Serial : FB_Oerlikon_TD20_COM; //Serial Interface
(*Pfeiffer*)
{attribute 'pytmc' := '
pv: PTM:02
'}
PTM_02 : FB_PTM_Pfeiffer;
{attribute 'pytmc' := '
pv: PTM:03
'}
PTM_03 : FB_PTM_Pfeiffer;
// They share the same serial port
st_Pfeiffer_CTRL : ARRAY[1..20] OF ST_PfeifferControl;
st_Pfeiffer_RBK : ARRAY[1..20] OF ST_PfeifferStatus;
fb_PfeifferCom : FB_PFEIFFER_COM;
END_VAR
POUs¶
MAIN¶
PROGRAM MAIN
VAR
END_VAR
PRG_COM();
// Leybold Turbo Drive
(* Instanitate the Function block for Pump Control*)
PTM_01(i_xExtILKOk:= TRUE , iq_stPtm=> );
(* Instanitate the Function block for serial communication with TD20 *)
PTM_01_Serial(SerialRXBuffer := SerialRXBuffer,
SerialTXBuffer:= SerialTXBuffer,
astTD20Status=>);
(* Copy Status Pv's into the PTM structure*)
PTM_01.M_Serial_IO(PTM_01_Serial.astTD20Status);
//Pfeiffer Turbo
(* Instanitate the Function block for Pump Control*)
PTM_02(i_xExtIlkOK:= TRUE , iq_stPTM=> );
PTM_03(i_xExtIlkOK:= TRUE , iq_stPTM=> );
(*Assign adresses to the pfeiffer controllers connected to this serial terminal*)
st_Pfeiffer_CTRL[1].iSerialAddress :=1;
st_Pfeiffer_CTRL[1].xEnableComm := TRUE;
st_Pfeiffer_CTRL[2].iSerialAddress :=2;
st_Pfeiffer_CTRL[2].xEnableComm := TRUE;
(* Instanitate the Function block for serial communication with Pfeiffer*)
fb_PfeifferCom(astPfeifferControl := st_Pfeiffer_CTRL,
astPfeifferStatus:= st_Pfeiffer_RBK,
SerialRXBuffer:= E2_SerialRXBuffer,
SerialTXBuffer:= E2_SerialTXBuffer);
(* Copy Status Pv's into the PTM structure*)
PTM_02.M_Serial_IO(st_Pfeiffer_CTRL:=st_Pfeiffer_CTRL[1],st_Pfeiffer_RBK:=st_Pfeiffer_RBK[1]);
PTM_03.M_Serial_IO(st_Pfeiffer_CTRL:=st_Pfeiffer_CTRL[2],st_Pfeiffer_RBK:=st_Pfeiffer_RBK[2]);
END_PROGRAM
PRG_COM¶
PROGRAM PRG_COM
VAR
END_VAR
//needs to run on a seperate task
//PTM_01
(*Instanitate Serial port com function *)
fbSerialLineControl(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(stComIn),
pComOut:=ADR(stComOut),
SizeComIn:= SIZEOF(stComIn),
TxBuffer:= SerialTXBuffer,
RxBuffer:= SerialRXBuffer,
Error=> ,
ErrorID=> );
//PTM_02 and PTM_03
(*Instanitate Serial port com function *)
E2_fbSerialLineControl(
Mode:= SERIALLINEMODE_EL6_22B,
pComIn:= ADR(E2_stComIn),
pComOut:=ADR(E2_stComOut),
SizeComIn:= SIZEOF(E2_stComIn),
TxBuffer:= E2_SerialTXBuffer,
RxBuffer:= E2_SerialRXBuffer,
Error=> ,
ErrorID=> );
END_PROGRAM