Skip to main content

Conservar datos en la memoria compartida

Algunos productos no incluyen una conexión automática para retener datos de la aplicación en el controlador (debido a la falta de opciones de almacenamiento generalmente válidas). Sin embargo, existe un mecanismo existente en el sistema de tiempo de ejecución mediante una conexión a través de memoria compartida (SHM) que se puede utilizar para este propósito con una configuración respectiva.

El uso es posible, por ejemplo, con los siguientes CODESYS Control productos SL:

  • CODESYS Control​ for Linux

  • CODESYS Control for Linux ARM

  • CODESYS Control for Linux ARM64

  • CODESYS Control for Raspberry Pi

  • CODESYS Control for BeagleBone

Nota de versión: La versión mínima de la CODESYS Control El producto SL es V4.4.0.0 (CODESYS Control versión 3.5.17.30)

Básicamente, las "retenciones" se habilitan a través de SHM mediante la siguiente configuración en /etc/CODESYSControl_User.cfg en el dispositivo de destino:

[CmpApp]
 RetainType.Applications=InSHM
[CmpRetain]
 Retain.SHM.Size=0x1FFFF        ; Total size of remanent memory in bytes
 Retain.SHM.Name=MyRetainMemory ; Optional (Default: "RetainMemory")

Después de un reinicio, el sistema de tiempo de ejecución crea un archivo de memoria compartida con el nombre configurado en /dev/shm. Al mapear este archivo, la memoria se puede redirigir a cualquier archivo no volátil, por ejemplo, mediante los siguientes comandos:

sudo touch /dev/shm/MyRetainMemory
sudo mount -o bind /var/opt/MyRetainMemory /dev/shm/MyRetainMemory

Importante

Se accede al archivo de forma cíclica según el tiempo de ciclo establecido en la aplicación del PLC. Por lo tanto, el archivo SHM nunca debe redirigirse a un archivo en un sistema de archivos basado en flash, de lo contrario, existe el riesgo de que se destruya la memoria.