Datenaustausch zwischen A4 und A5/A6 Steuerungen mit CODESYS V2
Gilt für CODESYS V2 und betrifft den Datenaustausch von z. B. Strukturen mit unterschiedlichen Elementen (z. B. BOOL, WORD…) zwischen
Unterschiedliche Speicherausrichtung
Variablen eines PLC Programms belegen nach dem Compilieren und dem Übertragen auf die Steuerung Bereiche im internen Speicher einer Steuerung:
Variablentyp |
Minimaler Speicherbedarf im internen Speicher |
---|---|
BOOL |
1 Byte |
BYTE |
1 Byte |
WORD |
2 Byte |
DWORD |
4 Byte |
REAL |
4 Byte |
LREAL 1) |
8 Byte |
1) |
LREAL Variablen dürfen nicht zwischen |
Bei Strukturvariablen werden mehrere Variablen zu Datenstrukturen zusammengefasst. Diese Strukturen belegen compilerabhängig unterschiedliche Bereiche im internen Speicher einer Steuerung. Die Programmiersoftware CODESYS verwendet für die Steuerung
Der Compiler der A5/A6 Steuerung legt Daten hintereinander im internen Speicher ab, unabhängig vom Datentyp.
Der Compiler der
- Eine Variable vom Typ WORD liegt in einem internen Speicherbereich,
dessen Byte-Index ohne Rest durch 2 teilbar ist. - Eine Variable vom Typ DWORD liegt in einem internen Speicherbereich,
dessen Byte-Index ohne Rest durch 4 teilbar ist. - Eine Variable vom Typ REAL liegt in einem internen Speicherbereich,
dessen Byte-Index ohne Rest durch 4 teilbar ist. - Eine Variable vom Typ BYTE wird beliebig im internen Speicher abgelegt.
- Eine Variable vom Typ BOOL belegt ein Byte und verhält sich wie der Typ BYTE.
Beispiel:
Es soll eine angenommene Struktur von einer A5/A6 Steuerung auf eine
Beispielhaft angenommene Strukturvariable:
Strukturinhalt |
Interner Speicher |
|
---|---|---|
Variablenname |
Variablentyp |
Speicherbedarf im internen Speicher |
boVar1 |
BOOL |
1 Byte |
dwVar2 |
DWORD |
4 Byte |
byVar3 |
BYTE |
1 Byte |
wVar4 |
WORD |
2 Byte |
Ausrichtung im internen Speicher [Byte] |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
A5/A6 Steuerung |
boVar1 |
dwVar2 |
byVar3 |
wVar4 |
||||||||
|
boVar1 |
|
dwVar2 |
byVar3 |
|
wVar4 |
Solange Strukturvariablen nicht zwischen unterschiedlichen Steuerungen ausgetauscht werden ist die interne Speicherbelegung für den Anwender nicht relevant.
Wenn Daten zwischen Steuerungen
Lösungsvorschläge, aufgezeigt am Beispiel
Die Daten im Sender müssen so angelegt werden, dass sie auch in der Speicherausrichtung des Empfängers korrekt zugewiesen werden.
Der Strukturinhalt im Beispiel muss folgendermaßen verändert werden, um die Datenausrichtung auf den Empfänger abzustimmen.
Ausrichtung interner Speicher [Byte] |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
A5/A6 Steuerung (Sender) |
boVar1 |
byDummy1 |
byDummy2 |
byDummy3 |
dwVar2 |
byVar3 |
byDummy4 |
wVar4 |
||||
|
boVar1 |
|
dwVar2 |
byVar3 |
|
wVar4 |
Die beispielhaft angenommene Strukturvariable muss wie folgt erweitert werden:
Strukturinhalt |
Interner Speicher |
|
---|---|---|
Variablenname |
Variablentyp |
Speicherbedarf im internen Speicher |
boVar1 |
BOOL |
1 Byte |
byDummy1 |
Byte |
1 Byte |
byDummy2 |
Byte |
1 Byte |
byDummy3 |
Byte |
1 Byte |
dwVar2 |
DWORD |
4 Byte |
byVar3 |
BYTE |
1 Byte |
byDummy4 |
BYTE |
1 Byte |
wVar4 |
WORD |
2 Byte |
Die mit den Dummyvariablen erweiterte Struktur kann von einer A5/A6 Steuerung auf eine