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