Retain-Daten im Shared Memory
Einige Produkte beinhalten (aufgrund fehlender allgemeingültiger Speichermöglichkeiten) keine automatische Anbindung von Retain-Daten aus der Applikation in der Steuerung. Es gibt aber einen existierenden Mechanismus im Laufzeitsystem durch eine Anbindung über ein Shared Memory (SHM), der durch entsprechende Konfiguration dafür genutzt werden kann.
Die Nutzung ist beispielsweise mit folgenden CODESYS Control SL-Produkten möglich:
CODESYS Control for Linux
CODESYS Control for Linux ARM
CODESYS Control for Linux ARM64
CODESYS Control for Raspberry Pi
CODESYS Control for BeagleBone
Versionshinweis: Die Mindestversion des CODESYS Control SL-Produkts ist V4.4.0.0 (CODESYS Control Version 3.5.17.30)
Grundsätzlich erfolgt die Aktivierung der "Retains" über SHM durch folgende Einstellungen in /etc/CODESYSControl_User.cfg
auf dem Zielgerät:
[CmpApp] RetainType.Applications=InSHM
[CmpRetain] Retain.SHM.Size=0x1FFFF ; Total size of remanent memory in bytes Retain.SHM.Name=MyRetainMemory ; Optional (Default: "RetainMemory")
Nach einem Neustart erzeugt das Laufzeitsystem dann eine Shared-Memory-Datei mit dem konfigurierten Namen unter /dev/shm
. Durch Mappen dieser Datei kann der Speicher auf eine beliebige nicht-flüchtige Datei umgeleitet werden, beispielsweise durch folgende Kommandos:
sudo touch /dev/shm/MyRetainMemory sudo mount -o bind /var/opt/MyRetainMemory /dev/shm/MyRetainMemory
Wichtig
Der Zugriff auf die Datei erfolgt zyklisch entsprechend der in der SPS-Applikation eingestellten Zykluszeit. Die SHM-Datei sollte deshalb auf keinen Fall auf eine Datei in einem Flash-basierten Dateisystem umgeleitet werden, da sonst die Gefahr besteht, dass der Speicher zerstört wird.