Das Array kann ja auch in einem optimierten Baustein liegen!
TIA-Hilfe schrieb:Serialize: Serialisieren S7-1200, S7-1500
Der Speicherbereich, in dem die umgewandelten PLC-Datentypen abgelegt werden, muss den Datentyp ARRAY of BYTE haben und mit Standardzugriff deklariert sein.
Parameter RET_VAL
Die folgende Tabelle zeigt die Bedeutung der Werte des Parameters RET_VAL:
Fehlercode*
(W#16#...) Erläuterung
8236 Der Datenbaustein am Parameter DEST_ARRAY ist kein Baustein mit Standardzugriff.
Stimmt, Du hast Recht, das Array muss mit Standardzugriff deklariert seinDa würde die TIA-Hilfe aber was anderes sagen...
@shiks: ware es überhaupt ein Problem, wenn das Byte-Array in einem nicht optimierten DB liegt? Wenn ja, warum? Was soll damit passieren?
Prinzipiell ist es kein Problem mit nicht optimierten Bausteinen aber weil sich durch das mischen von nicht optimierten und optimierten Bausteinen die Zykluszeit verschlechtert und es ja eine Lösung
geben muss habe ich mich da etwas festgebissen
Vielen Dank für deine Antwort.
Weißt du warum der "AT" Befehl laut Siemens Doku nicht in optimierten Bausteinen Funktioniert aber wenn man im im IDB setzen anklickt es trotzdem geht?
Also kein "trotzdem" sondern gewollt.TIA Hilfe F1 schrieb:Variablen mit AT überlagern
Beschreibung
Um auf Datenbereiche innerhalb einer deklarierten Variablen zuzugreifen, können Sie die deklarierten Variablen mit einer weiteren Deklaration überlagern. Sie haben so die Möglichkeit, eine bereits deklarierte Variable mit einem anderen Datentyp anzusprechen. Sie können z. B. die einzelnen Bits einer Variablen vom Datentyp WORD mit einem ARRAY of BOOL ansprechen.
Regeln
Folgende allgemeine Regeln gelten für das Überlagern von Variablen:
- In AWL, KOP, FUP und GRAPH ist das Überlagern in S7-1200 und S7-1500 möglich.
- In SCL ist das Überlagern in allen CPU-Familien möglich.
- Das Überlagern von Variablen ist in folgenden Bausteinen möglich:
- In Codebausteinen mit Standardzugriff
- In Codebausteinen mit optimiertem Zugriff für Variablen mit der Remanenzeinstellung "Im IDB setzen"
- Die Datenbreite der überlagernden Variablen muss gleich oder kleiner als die der überlagerten Variablen sein.
- Die Datenypen VARIANT und INSTANCE können nicht überlagert werden.
- Bausteine aus Bibliotheken, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
- Strukturierte PLC-Variablen, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
- Überlagernde Variablen können nicht durch Slice-Zugriffe adressiert werden
Wo steht in dem von Dir angegebenem Dokument, dass es nicht gehen soll?
(Meine Suche findet dort nichts zu Sichten)
Naja, das primäre Ziel bei dem "im IDB setzen" wird wohl nicht die AT-Sicht gewesen sein. Hoffe ich halt. Ich denke das war ein "angenehmer" Nebeneffekt.
Also kein "trotzdem" sondern gewollt.
Ich denke mal, für genau solche Anwendungen.
Im weiter unten verlinkten Programmierleitfaden steht auch hierzu etwas, das Deinen Verdacht bestätigt, auch wenn die Beschreibung nicht wirklich konkret wird:Was mich allerdings mehr interessieren würde...
Weiß irgendjemand was das "im IDB setzen" genau macht bzw. wie es die Speicherzugriffe verbiegt?
@Ronin: Ich hatte schon den Verdacht, dass Du ihn gelesen hast, aber ich wollte sicher gehen ...@Mediator: Eben diese Zeile hatte ich gemeint. Ich habe den Leitfaden ja sogar gelesen...
..., aber die Zugriffszeiten sind trotzdem hoch"-Ergebnis kommt. Von daher gesehen finde ich den Begriff "verbiegen" nicht so falsch.
Hmm.. Wie meinst du das? Wenn er AT (Array AT Struct) verwenden will dann muss doch das auf das die AT zeigen soll, also die Struktur, als "im IDB" deklariert werden, sonst kann ich ja keine AT eintippen?
Kann man eigentlich ein Serialize auf ein "im IDB"-deklariertes Array machen, geht das? Noch nie probiert.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?