TIA nochmal zu Wortgrenzen in TIA

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.414
Reaktionspunkte
4.043
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß, wir hatten schon einmal ein ähnliches Thema.

Folgendes Problem:
Ein Gerät hat eine Profinetschnittstelle:


Schnappschuss (2016-08-11 15.00.53).jpg

Wie man sieht, landet alles ab Ergebnis Code auf ungeraden Adressen.
Nun will ich das Ganze an einen FB übergeben und auch so schön struckturiert nutzen. Also packe ich das in einen Datentyp:

Schnappschuss (2016-08-11 15.01.43).jpg

Wenn ich den Datentyp nun z.Bsp. in Eine Symboltabelle einfüge und auf die richtige Adresse lege, passiert folgendes:

Schnappschuss (2016-08-11 15.02.01).jpg

Ergebnis Code sollte auf 4003 liegen, wird aber auf 4004 abgebildest. Das setzt sich nach unten hin fort.
Soso, die auf ungeraden Adressen liegenden Daten landen nun auf geraden Adressen, weil TIA einfach ein "Müllbyte" einschiebt. Das ist natürlich falsch, ich würde nur Datenschrott einlesen.

Kennt jeder Abhilfe oder muß ich tatsächlich die Daten einzeln deklarieren (Real auf ungerade Adresse geht einzeln), bzw. die Daten umkopieren.
Beides eher sehr unschön.

Wer ist da nun der Schuldige? Siemens oder der Hersteller des externen Gerätes?
 
Wer ist da nun der Schuldige? Siemens oder der Hersteller des externen Gerätes?

Wenn der Hersteller nur etwas Ahnung von Programmier-Ästhetik hätte, würde er wissen, das man WORD und DWORD resp. REALs
nicht mit einer ungeraden Adressen beginnen lässt, genau um solche Effekte zu vermeiden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist seitens Siemens auch Dokumentiert. Sowohl in den Handbüchern, als auch in dem wie ich finde gute gelungenem Programmierleitfaden.

Word Grenze.jpg

Ansonsten gebe ich meinem Vorredner recht, elementare Datentypen ab 16 Bit beginnen immer gerade. Bei uns gilt sogar Word statt Byte.
 
Scheint so, als ob der DAU hier an der Tastatur saß. :confused:

In der Hardwarekonfig des externen Gerätes kann ich ja Adressen zuweisen.
Alter Gewohnheit folgend habe ich die strikt hintereinander gelegt. Aber wer zwingt mich eigentlich dazu.
Ich hab jetzt einfachmal eine Lücke von 1 Byte in der Adresszuweisung gelassen, dann liegen die Adressen auf Wortgrenzen.
Mal testen, sollte aber so laufen. Wenn ja, bin ich also der Schuldige. ;-)

Drüber schlafen hilft manchmal :ROFLMAO:
 
Diese Problematik mit den Wortgrenzen ist aber nicht wirklich neu. Das gab's schon vor TIA z.B. in DBs. Aber wenn sich das Problem so einfach lösen lässt ist ja gut.
 
Zurück
Oben