Array mit unbestimmter Elementezahl / flexibler Speicher

SpeedFreak
2011-01-13
2011-01-14
  • SpeedFreak - 2011-01-13

    Hallo!

    Ich bin neu hier im Forum und fast genauso neu bei der Programmierung mit CoDeSys. Konkret arbeite ich derzeit mit TwinCAT PLC Control, das dürfte bei dem Problem hier aber keine Rolle spielen. (oder doch?)

    Ich benötige eine Lösung für folgendes Problem. Ich habe mir einen eingenen Datentyp "Messung" mit ca. 15 Strukturelementen angelegt.
    In einer Variable dieses Typs werden Messdaten einer einzigen Messung abgelegt. Nun habe ich mir ein eindimensionales Array angelegt, das eine bestimmte Anzahl von Messungen speichern kann. Soweit so gut, das funktioniert auch.
    Jetzt möchte ich aber vorher nicht festlegen müssen wieviele Messungen ich machen werde, kann also die Größe des benötigten Arrays nicht vor der Programmlaufzeit festlegen. Also kann ich das Problem meines Wissens mit einem klassischen Array nicht lösen, da dessen Größe ja fest definiert ist.
    Nun meine eigentliche Frage: Gibt es eine Möglichkeit (ein Steuerelement oder einen Variablentyp oder irgendetwas anderes), mit dem ich das beschriebene Problem lösen kann? Ich benötige quasi einen Speicher, der in seiner Größe vor der Programmlaufzeit flexibel ist bzw. der erst zur Programmlaufzeit in seiner Größe festgelegt werden kann?

    MfG SpeedFreak

     
  • Erik Böhm - 2011-01-13

    Servus

    TwinCat weiss ich nicht, aber bei CodeSys V2.x geht das nicht. Wird bei TwinCat dann vermutlich gleich sein.
    Musst das Array eben von Anfang an groß genug definieren und darauf achten dass du die Grenze nicht überschreitest
    oder in ein File schreiben, falls deine Steuerung das kann.

    Gruß
    Erik

     
  • SpeedFreak - 2011-01-13

    danke für die schnelle antwort.

    ja, dass es mit einem array nicht geht, hab ich ja schon geschrieben gehabt...in eine datei schreiben ist mir auch schon in den sinn gekommen, hat nur einen haken: ich kann sie nicht wieder einlesen, wenn ich mehrere dateien habe und nicht mehr weiß wieviele einträge eine bestimmte datei hat.
    die lösung mit dem array, dass einfach groß genug ist, ist wohl die einfachste, aber halt recht simpel... ich hatte gehofft, dass jemand eine elegantere lösungsidee hat.

    hat noch jemand vorschläge?

    mfg speedfreak

     
  • KlOis - 2011-01-14

    Hallo,

    unterstützt deine Steuerung die SysLibMem.lib ?

    Dort gibt es die Funktionen ```

    SysMemAlloc

    und

    SysMemFree

    ```.

    Mit denen kannst du dynamisch arbeiten.
    Ob das ganz sauber ist sei dahingestellt, auf jeden Fall gibt es eine hohe Gefahr für unerlaubten Speicherzugriff und Speicherleichen.

    Gruß
    Klaus

     

Log in to post a comment.