CODESYS 2.3, Größe des Array's zur Laufzeit festlegen

Deep Blue

Level-2
Beiträge
431
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich fülle bedingt ein eindimensionales Array mit Werten. Danach bilde ich aus den daraus gewonnen Werten den Mittelwert. Da ich aber nicht weiß wieviele Daten kommen, bräuchte ich zur Laufzeit die Größe des Array's um den Mittelwert korrekt bestimmen zu können. Und da hackt es gerade bei mir. Setze ich für den Maxwert des Array's eine Variable ein mault mich das Programm an, das es nicht weiß wie groß dieser Wert ist. Stimmt ja auch...aber wie kann ich das sonst bestimmen?
 
Das funktioniert nicht. Der Compiler legt die Adressbereiche fest an, zur Laufzeit ist da nichts mehr dran zu rütteln (außer du fängst an manuell auf irgendewelche Speicheradressen herumzuschreiben, was nicht empfehlenswert ist).
Was ist so schlimm daran das Array mit der zu erwartenen Maximalgröße zu deklarieren? Selbst wenn du es dynamisch machen KÖNNTEST müsste trotzdem genug Speicherplatz frei gehalten werden. Du sparst also nichts.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem daran ist, das die Funktion (Array_AVG von Oscat 3.3) den Mittelwert aus dem ganzen Array bildet. Wenn es aber nur 1/2 befüllt ist kommt eben ein ganz anderer Wert raus als wenn es voll ist. Das wollte ich mit dem dynamischen Array unterbinden.
 
Die Funktion ist sicherlich kein Hexenwerk. Ich würde vorschlagen Dir den Code des Bausteins anzuschauen und deinen Bedürfnissen anzupassen (z.B. Füllstandsgrad als INT-Zahl dem Baustein zu übergeben).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also ... wenn du hier schon ein problem postest und dann eine lösung findest, dann poste verdammt nochmal auch deine lösung, das user die das selbe problem haben somit das ding net nochmal posten müssen

--> NUR SO funktioniert eine "help me" community !!!
 
Zurück
Oben