könnte es sein das der interne GET-FB optimiert (also nicht absolut) ist und deswegen kein Speicher braucht?
Hi
ja, wenn du dich nicht dagegen wehrst, dann wird optimiert. Und Optimiert, hießt, dass dir keine Offsets mehr bekannt gegeben werden.
In den Bausteineigenschaften wird dir angezeigt, dass der Baustein sehr wohl einige Bytes belegt, S. sagt dir halt nicht wo.
Der Zugriff auf den optimierten Speicher ist eigentlich immer schneller. Bei der 1200 fallen die Unterschiede nicht so groß aus. Bei der 1500 sind sie deutlich größer.
Der optimierte Bedarf einer Struktur ist meist kleiner, gelegentlich aber auch größer. Wenn man in einem DB alles auf 0 setzt und nur einen auf 1, dann kann man im Wireshark schon finden, wo bei einer 1200 was im Speicher liegt.
Die Daten sind so ausgerichtet, dass sie auf einer Adresse zu liegen kommen, die ihrer Breite entspricht. Ein LREAL liegt auf einem Offset der sich durch 8 teilen lässt. Ein INT liegt auf einer durch 2 teilbaren Adresse.
Innerhalb einer Struktur werden zuerst die großen, dann die kleinen Typen abgelegt. Damit kann die Struktur wiederum als ganzes auf ihr erstes Element ausgerichtet werden. Eigentlich gar nicht so blöd, wären da nicht die Nebenwirkungen.
Bei der 1500 benötigt ein BOOL ein ganzes Byte. Deshalb kann die 1500 6mal so schnell drauf schreiben und drei mal so schnell davon lesen.
Weil die Daten nun nicht mehr in der Reihenfolge liegen, in der wir sie deklariert haben, hat uns Siemens vermutlich den ANY weggenommen. D.h. all die Tricks mittels selbst zusammengebautem ANY und wieder zerlegtem DB und Adressregister Zugriffe im DB zu adressieren klappen nicht mehr. Mit dem Variant, den S. intern dafür verwendet, dürfen wir noch nicht. Schauen wir mal, was die V13 bringt.
'n schön' Tach auch
HB