habe hier ein Problem mit einem Wagon 750-841. Wollte ein paar Bytes vom I/O Abbild auf ein Array eines Struct kopieren. Das Struct besteht seinerseits aus einem Array of Byte. Erstes Problem dabei: beim Übergang vom ersten Feld des Arrays (Typ Struct) auf das zweite Feld des Arrays scheint es einen Byteversatz (2 Byte) zu geben(Siehe Positionen im Bild, vom grünen zum blauen Pfeil). War eigentlich davon ausgegangen daß die Bytes einfach nacheinander im Speicher erscheinen?
Zweites Problem:
verwende sysmemcpy, im Ziel kommen 2 Bytes korrekt an (bei 6 Bytes Gesamtlänge), zumindest sieht es so aus wenn ich eine Variable "Array of Byte" direkt mit "AT" auf das erste Byte im Inputabbild lege und dies im Onlinemodus vergleiche mit meinem Zielarray, komischerweise kann ich auf die Quellvariable einen anderen Wert eingeben, mit Ctrl F7 übertragen, er landet dann im Zielarray, die Quellvariable wird aber sogleich wieder mit irgend etwas anderem überschrieben (von der Klemme?), dieser Wert wird aber nicht wieder an's Ziel übertragen?
Firmwareproblem?
Leider können Steuerungskonfigurationen nicht simuliert werden.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Die Funktionen SYSMEMCPY (wie auch SYSMEMMOVE) funktionieren nur für die ersten 4 Bytes.
Ich habe auch mal versucht, ein Array Of WORD auf eine IO-Adresse abzubilden. Im Online Monitoring habe ich diese Überlappung auch gesehen. Dies sowohl in den Adressbereichen für Peripherie als auch für Feldbusvariablen.
Generell musste ich feststellen, dass Speicherkopieroperationen am zuverlässigsten mit einer Schleife und zwei Pointer funktionieren - nicht wirklich die eleganteste Methode.
Gruss
Markus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
habe hier ein Problem mit einem Wagon 750-841. Wollte ein paar Bytes vom I/O Abbild auf ein Array eines Struct kopieren. Das Struct besteht seinerseits aus einem Array of Byte. Erstes Problem dabei: beim Übergang vom ersten Feld des Arrays (Typ Struct) auf das zweite Feld des Arrays scheint es einen Byteversatz (2 Byte) zu geben(Siehe Positionen im Bild, vom grünen zum blauen Pfeil). War eigentlich davon ausgegangen daß die Bytes einfach nacheinander im Speicher erscheinen?
Zweites Problem:
verwende sysmemcpy, im Ziel kommen 2 Bytes korrekt an (bei 6 Bytes Gesamtlänge), zumindest sieht es so aus wenn ich eine Variable "Array of Byte" direkt mit "AT" auf das erste Byte im Inputabbild lege und dies im Onlinemodus vergleiche mit meinem Zielarray, komischerweise kann ich auf die Quellvariable einen anderen Wert eingeben, mit Ctrl F7 übertragen, er landet dann im Zielarray, die Quellvariable wird aber sogleich wieder mit irgend etwas anderem überschrieben (von der Klemme?), dieser Wert wird aber nicht wieder an's Ziel übertragen?
Firmwareproblem?
Leider können Steuerungskonfigurationen nicht simuliert werden.
Guten Morgen Oberchefe
Ich hatte ähnliche Probleme mit dem 750-841.
Die Funktionen SYSMEMCPY (wie auch SYSMEMMOVE) funktionieren nur für die ersten 4 Bytes.
Ich habe auch mal versucht, ein Array Of WORD auf eine IO-Adresse abzubilden. Im Online Monitoring habe ich diese Überlappung auch gesehen. Dies sowohl in den Adressbereichen für Peripherie als auch für Feldbusvariablen.
Generell musste ich feststellen, dass Speicherkopieroperationen am zuverlässigsten mit einer Schleife und zwei Pointer funktionieren - nicht wirklich die eleganteste Methode.
Gruss
Markus