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.
- If two different data types are sent in sequence (e.g. byte and INT), the following variable is set to the next even address offset
- Boolean variables should never be allocated individually within a structure, since they would invariably occupy 1 byte. Boolean expressions should always be masked in a byte or word.
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 | %..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;
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. |
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. |