Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Arrays mit variabler Länge möglich?

Faulenzer
2013-06-25
2013-09-25
  • Faulenzer - 2013-06-25

    Ich bin leider nicht im Besitz der 3rd Revision der IEC-61131-3, glaube aber zu wissen dass dort Arrays mit variable Länge definiert sind
    Beispiel in einem FB:
    VAR_IN_OUT
    ARR: ARRAY [*] OF REAL;
    END_VAR

    Ich habe dies kurz ausprobiert ,jedoch aus pragmatischen Gründen da die SW schon installiert ist auf der Beckhoff TwinCAT V3 Version. Der Compiler hat es nicht gemocht.
    Funktioniert dies in der CoDeSys V3 Version oder renne ich hier einem Gespenst hinterher?

    Vielen Dank
    Faulenzer

     
  • singleton - 2013-06-25

    Hi,
    die von Dir beschriebene Syntax ist mir nicht bekannt. Allerdings kann man in V3 mit dem __NEW Operator zur Laufzeit dynamisch Speicher allokieren.
    Damit könnte man etwas vergleichbares Implementieren.
    Jedes mal wenn Dein Array zu klein wird, erzeugst Du mit __NEW ein Neues, kopierst den Inhalt und gibst den Speicher des bisherigen Array mit __DELETE zurück.
    Dynamische Speicherallokierung muss allerdings vom Zielsystem unterstützt werden und in den Applikationseinstellungen konfiguriert werden.

     
  • Anonymous - 2013-09-25

    Originally created by: Bernhard Werner

    Also erstens: ja, das ist Teil des neuen Standards, und nein, in Codesys geht das noch nicht.
    Aber es geht bei dem Feature nicht darum, ein ARRAY zur Laufzeit zu erzeugen, sondern es geht darum, eine Funktion
    zu schreiben, an die man Arrays mit beliebiger Länge übergeben kann.
    In CODESYS würde man das einfach mit POINTER lösen, aber die gibt es im Standard nicht und die will man da auch nicht haben.

    Bernhard Werner

     

Log in to post a comment.