Siemens AT Befehl in Codesys

Credofire

Level-1
Beiträge
640
Reaktionspunkte
35
Hallo

gibt es in Codesys eine Alternative zum AT Befehl von Siemens? Oder wie würde man sowas lösen?
das t_bool ist ein array of 16 bool
AT Variablen.jpg
Ich will anderswo auf das gesamte WORD zurückgreifen. Im TIA ist es ja: t_bool AT*t_word* array of ...
Mit zuweisung auf t_word.%x1 oder so geht es nicht.

Gruß
Mathias
 
gibt es in Codesys eine Alternative zum AT Befehl von Siemens? Oder wie würde man sowas lösen?
das t_bool ist ein array of 16 bool
Mit dem Bitzugriff ".x" kann man auf die einzelnen Bits z.B. eines Word zugreifen, aber nicht auf die Bits eines Bool-Arrays. Ist überhaupt sicher daß die Bools in Bits gespeichert werden und nicht vielleicht in Bytes? (Wieviel Speicherplatz belegt ein Array of 16 Bools?) Als Entsprechung zu "AT" gibt es z.B. "Union". Welches Codesys verwendest Du?

Harald
 
Jetzt könnte ich noch Schlaumeiern und sagen dass es in CoDeSys V3 auch BITs gibt (also nicht in CoDeSys V2.3).
Dieer Typ nutzt tatsächlich nur ein Bit und das 16er Array ist somit ein WORD.

ABER... die Performance beim Zugriff ist nicht wirklich excellent da de-facto jedesmal eine bitmaskierung stattfindet. Soviel ich mich erinnere steht das dann auch irgendwo in der Doku...

Guga
 
@Credofire.
Keine Ahnung. Es steht bei Beckhoff in der Doku. Die CoDeSys Doku nutze ich nur selten.
Ich denke der Hinweis ist motiviert damit die Nutzer nicht als elementare (unlocated) Variablen Bit nutzen.
Mach einfach einen Test: ein paar Tausend Zugriffe... und schau dir die Laufzeiten an und gib ne Rückmeldung
 
Also ich hab noch im Hinterkopf, daß man kein "ARRAY OF BIT" machen darf, sondern BITs nur in STRUCTs verwenden soll.

Im Übrigen sollte man sich über solche Mikrooptimierungen nur Gedanken machen, wenn man wirklich Performanceprobleme hat.
 
Zuletzt bearbeitet:
Zurück
Oben