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
Zitat:
6.3. _ARRAY_INIT
Die Funktion _ARRAY_INIT initialisiert ein beliebiges Array of REAL mit einem
Initialwert. Beim Aufruf wird der Funktion ein Pointer auf das zu initialisierende
Array und dessen Größe in Bytes übergeben. Unter CoDeSys
lautet der Aufruf: _ARRAY_INIT(ADR(Array), SIZEOF(Array), INIT), wobei Array
der Name des zu manipulierenden Arrays ist. ADR ist eine Standardfunktion,
die den Pointer auf das Array ermittelt und SIZEOF ist eine Standardfunktion,
die die Größe des Arrays ermittelt. Die Funktion liefert nur
71 Version 3.10
TRUE zurück. Das durch den Pointer angegebene Array wird direkt im
Speicher manipuliert.
Diese Art der Bearbeitung von Arrays ist äußerst effizient, da kein zusätzlicher
Speicher benötigt wird und keine Übergabewerte kopiert werden
müssen.
Beispiel: _ARRAY_INIT(ADR(bigarray), SIZEOF(bigarray), 0)
initialisiert bigarray mit 0.
Gruß
Chräshe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
weiß jemand wo ich einfache Funktionen wie "memset", memcpy" usw. finde.
Oder muss ich Funktinen wie ein Array, alle Felder auf 0 setzten, selber schreiben?
mfG.
fujitsufan
Mahlzeit
Für so was gibts die SysLibMem, wenn dein Steuerungshersteller eine mitliefert.
Ansonsten wär das eben eine FOR Schleife. Auch nicht sonderlich aufwändig...
Gruss
Erik
Hallo fujitsufan,
was hast du für ein Zielsystem?
Bei TwinCAT findest du die Funktion in der „TcSystem.Lib“.
Alternativ sollte dir die Funktion „_ARRAY_INIT“ aus der OSCAT-Lib auch weiter helfen.
Diese ist halt für Real-Werte, aber die sind zum rechnen ja sowieso besser…
http://www.oscat.de/
Gruß
Chräshe