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.