Variablen anlegen
Der EtherCAT-Slave ist einfach aufgebaut und besteht aus Eingängen, Ausgängen und InfoData. In TwinCAT können Sie Prozessdaten zu den Eingängen bzw. Ausgängen hinzufügen, die später mit Variablen aus dem SPS- Programm verknüpft werden können. In diesem Kapitel wird beschrieben, wie Sie solche Daten anlegen können.
Voraussetzungen für diesen Arbeitsschritt:
- Ein Gerät mit EtherCAT-Slave Schnittstelle (B110) muss bereits als Zielsystem in TwinCAT eingefügt sein.
Legen Sie die Prozessdaten wie folgt an:
- 1. Klicken Sie in der Strukturansicht mit rechter Maustaste auf die Eingänge oder Ausgänge.
- 2. Klicken Sie im Kontextmenü auf Insert Variable.
Das Fenster Insert Variable erscheint. - 3. Suchen Sie nach dem passenden Variablentyp und klicken Sie auf OK.
- Sie haben erfolgreich Prozessdaten angelegt. Die neue Variable wird links in der Strukturansicht angezeigt. Auf diese Weise können Sie weitere Prozessdaten bzw. Variablen für den EtherCAT-Slave anfügen.
Prozessdaten mit Strukturen
Um sich viele Verknüpfungen zu ersparen macht es Sinn, Daten die sie austauschen wollen, in einer Datenstruktur abzulegen. Achten Sie hierbei aber darauf, das Datenstrukturen mit verschiedenen Variablen auf einem x86er System und auf einem ARM Prozessor unterschiedlich verarbeitet werden. Der ARM Prozessor legt Word (2 Byte) Variablen immer auf eine gerade Adresse und bei 4 DWORD (4 Byte) Variablen auf eine durch 4 Teilbare Adresse.
Beispiel Datenstruktur
byTest: BYTE;
udTest: UDINT;
Adresse ARM |
Variable ARM |
Adresse x86 |
Variable ARM |
Byte Offset 0 |
Byte |
Byte Offset 0 |
BYTE |
Byte Offset 4 |
UDINT |
Byte Offset 1 |
UDINT |
Summe: 8 Byte |
Summe: 5 Byte |
Die Länge einer Datenstruktur können Sie auf beiden Systemen mit dem Befehl SIZEOF bestimmen. Gibt es hier einen Unterschied, ist dies schon ein Hinweis darauf, dass die Datenstruktur nicht passt.
Lösen kann man dieses Problem nur, indem Sie die Variablen geschickter anordnen oder mit Füll bzw. Dummy Variablen arbeiten:
Adresse ARM |
Variable ARM |
Adresse x86 |
Variable ARM |
Byte Offset 0 |
Byte |
Byte Offset 0 |
BYTE |
Byte Offset 1 |
BYTE (Dummy1) | ||
Byte Offset 2 |
BYTE (Dummy2) | ||
Byte Offset 3 |
BYTE (Dummy3) | ||
Byte Offset 4 |
UDINT |
Byte Offset 4 |
UDINT |
Summe: 8 Byte |
Summe: 8 Byte |
Die Füll bzw. Dummy Variablen führen dazu, dass die Länge der Datenstruktur passt und es zu keinen Problemen durch potentielle Unterschiede kommt.