Communication between TwinCAT and BX/BCxx50

For transferring data from TwinCAT to the Bus Terminal Controller, it makes sense to organize the data in a structure. Please note the following to account for the differences in data management on the two systems.

Example 1: A structure on the BX/BCxx50 and on the PC

Variable

BX/BCxx50 memory

PC memory (TwinCAT)

Byte

%..B0

%..B0

INT (1)

%..B2

%..B1

INT (2)

%..B4

%..B3

Due to the fact that another variable type (INT) follows the first byte, in the BX/BCxx50 it was assigned the next free even address. In order to achieve the same data structure on both systems, a dummy byte has to be inserted in the PC project (see example 2).

Example 2: A structure on the BX/BCxx50 and on the PC with the same memory allocation

Variable

BX/BCxx50 memory

PC memory (TwinCAT)

Byte

%..B0

%..B0

Byte
(dummy)

%..B1 (not necessarily required, since the system deals with this itself if the variable does not exist)

%..B1

INT (1)

%..B2

%..B2

INT (2)

%..B4

%..B4

Data structure

Type PB_Data
STRUCT
    wVar_1:WORD;
    iValue_1:INT;
    iValue_2:INT;
    iValue_3:INT;
END_STRUCT
END_TYPE

Creating a variable structure

VAR_Global
    strData_Out AT %QB1000:PB_Data; (*PLC Variables *)
    bInput_01 AT %IX0.0:BOOL; (* Input from a terminal *)
END_VAR

Small programming example

strData_Out.wVar_1.0:=bInput_01;
Communication between TwinCAT and BX/BCxx50 1:

Do not use real values in a mixed data structure

A mixed data structure should not contain real values. If this is nevertheless the case, the high and low words must be swapped in the BX/BCxx50 or in the TwinCAT master project. It is better to use an array of Real values or to transfer the Real values individually.

Communication between TwinCAT and BX/BCxx50 2:

Larger fieldbus data blocks

You can transfer larger fieldbus data blocks, in order to have a reserve for your structure. Disadvantage: These reserves are then transferred with each fieldbus telegram, resulting in overload of the fieldbus communication.