Speicherallokation
Im Allgemeinen wird empfohlen, Speicher mit Hilfe von Member-Variablen der Modulklasse zu reservieren. Dies wird automatisch für im TMC Editor definierte Datenbereiche gemacht.
Es besteht auch die Möglichkeit, Speicherplatz dynamisch zu allokieren und freizugeben.
- Operator new / delete
- TcMemAllocate / TcMemFree
Diese Speicherallokation kann in den Transitionen oder dem OP-State der Statemachine genutzt werden.
Wird dabei die Speicherallokation in einem Nicht-Echtzeitkontext vorgenommen, dann wird der Speicher im non-paged Pool des Betriebssystems (blau im Diagramm) allokiert. Im TwinCAT-Echtzeitkontext wird der Speicher im Routerspeicher (rot im Diagramm) allokiert.
Die Freigabe des Speichers kann ebenfalls in den Transitionen oder dem OP-State erfolgen, wobei empfohlen wird, immer in der „symmetrischen“ Transition den Speicher freizugeben, z. B. allokieren in PS und freigeben in SP.
Bei der Nutzung von statischen Variablen sind einige Besonderheiten zu beachten, die hier dokumentiert sind.