Communication between TwinCAT and Bus Terminal Controller
BECKHOFF Fieldbus Components: Programming |
Communication between TwinCAT and Bus Terminal Controller
It makes sense to define a data structure for transferring data between TwinCAT and Bus Terminal Controller. 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: Structure on the BX and on the PC
Variable | BX memory | PC memory (TwinCAT) |
---|---|---|
Byte | %..B0 | %..B0 |
INT (1) | %..B2 | %..B1 |
INT (2) | %..B4 | %..B3 |
Because the first byte is followed by a different variable type (INT), it was set to the next free even address in the BX/BCxx50. 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: Structure on the BX and on the PC with identical memory allocation
Variable | BX 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;
Note | A mixed data structure should not contain any Real values. If it does, the High and Low word must be swapped in the BX/BCxx50or in the TwinCAT master project. It is better to use an array of Real values or to transfer the Real values individually. |
Note | It is also possible to transfer larger fieldbus data blocks, in order to leave a reserve for your structure. Disadvantage: These reserves are then transferred with each fieldbus telegram, causing additional load for the fieldbus communication. |