Skip to main content

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.