Skip to main content

Conserver les données dans la mémoire partagée

Certains produits n'incluent pas de connexion automatique pour conserver les données de l'application dans le contrôleur (en raison d'un manque d'options de stockage généralement valides). Cependant, il existe un mécanisme existant dans le système d'exécution au moyen d'une connexion via la mémoire partagée (SHM) qui peut être utilisé à cette fin avec une configuration respective.

L'utilisation est possible, par exemple, avec les éléments suivants CODESYS Control Produits SL :

  • CODESYS Control​ for Linux

  • CODESYS Control for Linux ARM

  • CODESYS Control for Linux ARM64

  • CODESYS Control for Raspberry Pi

  • CODESYS Control for BeagleBone

Note de version : La version minimale du CODESYS Control Le produit SL est V4.4.0.0 (CODESYS Control version 3.5.17.30)

Fondamentalement, "Retains" est activé via SHM par les paramètres suivants dans /etc/CODESYSControl_User.cfg sur l'appareil cible :

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

Après un redémarrage, le système d'exécution crée un fichier de mémoire partagée avec le nom configuré sous /dev/shm. En mappant ce fichier, la mémoire peut être redirigée vers n'importe quel fichier non volatile, par exemple, par les commandes suivantes :

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

Important

L'accès au fichier est cyclique selon le temps de cycle défini dans l'application automate. Le fichier SHM ne doit donc jamais être redirigé vers un fichier dans un système de fichiers basé sur flash, sinon il y a un risque que la mémoire soit détruite.

Conserver les données stockées en double mémoire tampon dans la mémoire partagée

En option, la double mise en mémoire tampon peut être activée pour conserver les données dans la mémoire partagée. Ainsi, les données conservées sont stockées de manière redondante dans deux zones de mémoire

Le paramètre supplémentaire suivant dans le fichier /etc/CODESYSControl_User.cfg est utilisé pour activer cette fonctionnalité :

[CmpRetain]
Retain.DoubleBufferEnabled=1

Avec ce paramètre, le système d'exécution publie deux nouveaux événements qui peuvent être utilisés via le mécanisme pair du package d'extension.

Pour plus d'informations sur le mécanisme des événements, consultez les rubriques suivantes : Mécanisme d'événement

Le script Python retain_mirror.py inclus dans le Exemple de package d'extension montre comment un mécanisme à double tampon à canal unique peut être contrôlé via des événements.