Kommunikation zwischen TwinCAT und BX/BCxx50

Um von TwinCAT-Daten zum Busklemmen-Controller zu transportieren liegt es nahe, die Daten in einer Struktur anzulegen. Da die Datenhaltung auf beiden Systemen unterschiedlich ist sind folgende Hinweise zu beachten.

Beispiel 1: Eine Struktur auf den BX/BCxx50 und auf dem PC

Variable

Speicher des BX/BCxx50

Speicher des PC (TwinCAT)

Byte

%..B0

%..B0

INT (1)

%..B2

%..B1

INT (2)

%..B4

%..B3

Dadurch das hinter dem ersten Byte eine anderer Variable-Typ (INT) folgt ist dieser im BX/BCxx50 auf die nächste freie grade Adresse gelegt worden. Will man beide auf beiden Systemen die gleiche Datenstruktur haben, muss im PC-Projekt ein Dummy-Byte eingefügt werden (siehe Beispiel 2).

Beispiel 2: Eine Struktur auf den BX/BCxx50 und auf dem PC mit gleicher Speicherbelegung

Variable

Speicher des BX/BCxx50

Speicher des PC (TwinCAT)

Byte

%..B0

%..B0

Byte (Dummy)

%..B1 (nicht unbedingt notwendig, da dies das System selber macht, wenn diese Variabel nicht vorhanden ist)

%..B1

INT (1)

%..B2

%..B2

INT (2)

%..B4

%..B4

Daten Struktur

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

Anlegen einer Struktur in den Variablen

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

Kleines Programmbeispiel

strData_Out.wVar_1.0:=bInput_01;
Kommunikation zwischen TwinCAT und BX/BCxx50 1:

Keine Real-Werte in gemischter Datenstruktur verwenden

In einer gemischten Datenstruktur sollten keine Real-Werte enthalten sein. Wenn dies doch der Fall ist, muss zusätzlich im BX/BCxx50 oder im TwinCAT-Masterprojekt das High und Low Word vertauscht werden. Verwenden Sie besser ein Array von Real-Werten oder übertragen Sie die Real-Werte einzeln.

Kommunikation zwischen TwinCAT und BX/BCxx50 2:

Größere Feldbusdatenblöcke

Sie können auch größere Feldbusdatenblöcke übertragen, um eine Reserve für Ihre Struktur zu haben. Nachteil: Diese Reserven werden dann mit jedem Feldbustelegramm übertagen, was eine Mehrbelastung der Feldbuskommunikation verursacht.