Skip to main content

Gérer le CODESYS Virtual Safe Control SL via la ligne de commande

Pour gérer et utiliser le CODESYS Virtual Safe Control Sur un appareil Linux, SL vous permet d'interagir directement avec le VirtualControlAPI via la ligne de commande.

Le VirtualControlAPI est un outil en ligne de commande basé sur Python pour gérer le CODESYS Virtual Safe Control SL sur les systèmes Linux et est également utilisé par CODESYS Control SL Deploy Tool.

Exigences

  • Appareil doté d'un système d'exploitation basé sur Linux

  • Python 3 (>= 3.9)

  • Scénario: VirtualControlAPI.py

. Vous avez deux façons d'obtenir le VirtualControlAPI.py scénario:
  • Option 1 (recommandée) :

    Si vous ne l'avez pas déjà fait, installez le CODESYS Virtual Control for Linux SL colis à votre CODESYS installation sous Windows. Ensuite, vous trouverez le VirtualControlAPI.py script dans le répertoire <CODESYS installation directory> \CODESYS Virtual Control for Linux SL\Delivery\virtuallinux\VirtualControlAPI.py.

  • Option 2 :

    Téléchargez le CODESYS Virtual Control for Linux SL emballage du magasin et extraire le .package paquet (par exemple, CODESYS Virtual Control for Linux SL 4.18.0.0.package) avec n'importe quel programme ZIP. Dans le répertoire extrait, vous trouverez le VirtualControlAPI.py script sous Delivery\virtuallinux\VirtualControlAPI.py.

Usage

Le script Python VirtualControlAPI.py Il peut être nécessaire de l'exécuter en tant qu'utilisateur root. Le script effectue des tâches telles que la modification des registres de conteneurs et des espaces de noms des cartes réseau.

sudo python3 VirtualControlAPI.py <command>

Vous pouvez utiliser la commande suivante pour afficher l'aide concernant toutes les options, tous les paramètres et toutes les descriptions possibles :

sudo python3 VirtualControlAPI.py --help

Flux de travail typique

  1. Importer une image de conteneur dans le registre local

    Pour charger une image dans le registre, utilisez la commande --import-image et transmettre le nom du .tar.gz Le fichier contenant l'image. Cette opération transfère l'image vers le registre local.

    Exemple 5. Exemple:
    sudo python3 VirtualControlAPI.py --import-image Docker_codesyscontrol_virtuallinux_4.19.0.0_amd64.tar.gz


    Pour voir quelles images existent déjà dans le registre local, utilisez la commande :

    sudo python3 VirtualControlAPI.py --list-images

    Seules les images répondant aux critères de VirtualControlAPI sera affiché.

  2. Création d'une instance

    Pour créer une instance d'exécution, la commande suivante est utilisée :

    sudo python3 VirtualControlAPI.py --add-instance <instance name>

    Si vous souhaitez créer une instance EdgeGateway ou une instance Safe Runtime, spécifiez-le à la fin de la commande.

    udo python3 VirtualControlAPI.py --add-instance <instance name> --safety
    sudo python3 VirtualControlAPI.py --add-instance <instance name> --gateway

    Ceci est nécessaire car les différents types d'instances sont équipés de configurations et de paramètres par défaut différents.

  3. Configuration de l'instance

    Pour configurer l'instance créée, il est conseillé de consulter au préalable les paramètres de configuration disponibles. Pour ce faire, la commande suivante affiche le fichier de configuration au format approprié :

    sudo python3 VirtualControlAPI.py --get-configuration <instance name>

    Les paramètres énumérés sous CONFIG_KEY sont généralement tous configurables et peuvent être modifiés à l'aide de la commande suivante :

    sudo python3 VirtualControlAPI.py --configure <instance name> [set/add/remove] <CONFIG_KEY> <value>
    • set écrasera la valeur actuelle.

    • add ajoutera de la valeur.

    • remove supprimera la valeur actuelle.

    En général, pour un premier démarrage, il suffit de régler le CONFIG_KEY Une image est requise. Pour ce faire, exécutez la commande suivante et remplacez l'image par l'image correspondante. Pour afficher toutes les images, vous pouvez utiliser la commande --list-images.

    Exemple 6. Exemple
    sudo python3 VirtualControlAPI.py --configure <instance name> set Image codesyscontrol_virtuallinux:4.19.0.0


    Important

    Pour qu'une instance puisse être configurée, elle doit être à l'arrêt.

  4. Démarrage et arrêt de l'instance

    L'instance sera démarrée avec l'option --run et s'est arrêté avec l'option --stop.

    sudo python3 VirtualControlAPI.py --run <instance name>
    sudo python3 VirtualControlAPI.py --stop <instance name>

Pour plus d'informations sur les options et les codes de sortie, exécutez la commande sudo python3 VirtualControlAPI.py --help.

Exemple de scénario « Refuge » via un script

Les indices suivants décrivent, par exemple, comment le scénario « Refuge sûr » peut être mis en œuvre via le VirtualControlAPI.

Important

L'article « Coffre-fort » aborde d'autres aspects techniques importants pour le fonctionnement d'un contrôleur de coffre-fort. Consultez cette page d'aide, ainsi que la documentation de sécurité du fabricant de l'appareil, pour obtenir toutes les informations relatives à la sécurité et à la certification.

Préparations

Pour obtenir le VirtualControlAPI.py le script, ainsi que les dernières versions des images du CODESYS Virtual Control for Linux SL, suivez les instructions de l'étape Exigences du chapitre précédent. Répétez la procédure pour CODESYS Virtual Safe Control SL pour télécharger les images pour CODESYS Virtual Safe Control SL et CODESYS Virtual Safe Time Provider SL. Les images conteneurs se trouvent dans les répertoires suivants, selon la méthode :

  • Option 1 :

    Les images du conteneur sont stockées sous forme de tar.gz fichiers dans le répertoire suivant :

    <CODESYS installation directory>\CODESYS Virtual Control for Linux SL\Delivery\<product>\

    <CODESYS installation directory>\CODESYS Virtual Safe Control SL\Delivery\<product>\

  • Option 2 :

    Les images du conteneur sont stockées sous forme de tar.gz fichiers dans le répertoire suivant de CODESYS emballer:

    Delivery\<product>\

  • Option 3 – Scripting :

    L'option 2 peut également être mise en œuvre à l'aide de scripts. Voir l'exemple de script suivant pour le téléchargement et la décompression du fichier. CODESYS ainsi que pour le transfert des images vers l'infrastructure de votre entreprise.

    Astuce

    Veuillez noter les conditions de licence pour l'utilisation d'un CODESYS logiciel.

    DownloadUnpackPush.cmd

    @echo off
    setlocal EnableDelayedExpansion
    
    REM ===== Configuration =====
    set ZIP_URL_vControl=https://store.codesys.com/ftp_download/3S/VirtualLinuxSL/000138/4.18.0.0/CODESYS%%20Virtual%%20Control%%20for%%20Linux%%20SL%%204.18.0.0.package
    set ZIP_URL_vSafe=https://store.codesys.com/ftp_download/3S/VirtualSafeSL/000139/4.18.0.0/CODESYS%%20Virtual%%20Safe%%20Control%%20SL%%204.18.0.0.package
    
    set ZIP_FILE_vControl=%TEMP%\CODESYS Virtual Control for Linux SL 4.18.0.0.package
    set ZIP_FILE_vSafe=%TEMP%\CODESYS Virtual Safe Control SL 4.18.0.0.package
    
    set DEST_DIR=C:\ExtractedFiles
    set "vControlDir=%DEST_DIR%\vControl"
    set "vSafeDir=%DEST_DIR%\vSafe"
    
    set "REGISTRY=example.registry.com"
    
    REM ===== Create destination folder =====
    if not exist "%vControlDir%" mkdir "%vControlDir%"
    if not exist "%vSafeDir%" mkdir "%vSafeDir%"
    
    REM ===== Download ZIP =====
    curl -L --ssl-no-revoke --no-keepalive --retry 5 --retry-delay 2 -o "%ZIP_FILE_vControl%" "%ZIP_URL_vControl%"
    curl -L --ssl-no-revoke --no-keepalive --retry 5 --retry-delay 2 -o "%ZIP_FILE_vSafe%" "%ZIP_URL_vSafe%"
    
    REM ===== Extract ZIP =====
    "C:\Program Files\7-Zip\7z.exe" x "%ZIP_FILE_vControl%" -o"%vControlDir%" -y
    "C:\Program Files\7-Zip\7z.exe" x "%ZIP_FILE_vSafe%" -o"%vSafeDir%" -y
    
    REM ===== load images to docker and push to registry =====
    
    for /f "tokens=3 delims=: " %%I in ('docker load -i "%vControlDir%\Delivery\virtuallinux\Docker_codesyscontrol_virtuallinux_4.18.0.0_amd64.tar.gz"')
        do (
        docker tag %%I %REGISTRY%/%%I
        docker push %REGISTRY%/%%I
    )
    for /f "tokens=3 delims=: " %%I in ('docker load -i "%vControlDir%\Delivery\edgeamd64\Docker_codesysedge_edgeamd64_4.18.0.0_amd64.tar.gz"')
         do (
        docker tag %%I %REGISTRY%/%%I
        docker push %REGISTRY%/%%I
    )
    
    for /f "tokens=3 delims=: " %%I in ('docker load -i "%vSafeDir%\Delivery\linuxsafei386\Docker_codesyssafecontrol_linuxsafei386_4.18.0.0_i386.tar.gz"')
         do (
        docker tag %%I %REGISTRY%/%%I
        docker push %REGISTRY%/%%I
    )
    for /f "tokens=3 delims=: " %%I in ('docker load -i "%vSafeDir%\Delivery\linuxsafetimeprovider\Docker_codesyssafetimeprovider_linuxsafetimeprovider_4.18.0.0_amd64.tar.gz"')
         do (
        docker tag %%I %REGISTRY%/%%I
        docker push %REGISTRY%/%%I
    )
    
    echo Done.
    endlocal
    pause

Préparation supplémentaire :

De la même manière, téléchargez les paquets pour CODESYS License Server for Linux SL et CODESYS CodeMeter pour Linux SL.

Parce que CODESYS Virtual Control for Linux SL L'utilisation de cette licence se fait uniquement via une licence réseau ; ces deux modules sont nécessaires pour l'obtention de la licence. Cette étape n'est pas indispensable pour une configuration de test, mais elle est recommandée et est incluse dans les scripts suivants.

Transfert du script, des paquets Debian et des images de conteneur vers le contrôleur

Pour une seule application, vous pouvez transférer les fichiers individuels depuis le CODESYS les paquets directement sur les périphériques cibles. Par exemple, avec pscp :

pscp -pw password <PathToDockerImage.tar.gz> user@<IP>:~/

Si les images du conteneur, VirtualControlAPI.py et si tous les paquets Debian nécessaires ont été chargés sur un serveur interne ou un registre de conteneurs interne, vous pouvez également les obtenir directement à partir de là.

#!/bin/bash docker pull example.registry.com/codesyscontrol_virtuallinux:4.18.0.0
docker pull example.registry.com/codesyssafecontrol_linuxsafei386:4.18.0.0
docker pull example.registry.com/codesysedge_edgeamd64:4.18.0.0

curl my-server-url/VirtualControlAPI.py -o VirtualControlAPI.py

Script pour la configuration automatique du scénario « La Maison Sûre »

Note

Les scripts suivants ne sont fournis qu'à titre d'exemple. Vous devrez peut-être adapter la version, les adaptateurs réseau, les adresses IP, etc.

Dans les exemples suivants, on suppose que les fichiers individuels ont été directement transférés au contrôleur après avoir été extraits du CODESYS package. Adaptez les scripts en fonction de votre cas d'utilisation.

PC hôte Linux 2

Accédez au répertoire contenant VirtualControlAPI.py ainsi que le .tar.gz- Images de conteneurs compressées. Adaptez le script suivant à votre plateforme et exécutez-le.

SetupExample_LinuxHostPC2.sh

#!/bin/bash

# load images into registry
docker load -i Docker_codesyssafetimeprovider_linuxsafetimeprovider_4.18.0.0_amd64.tar.gz

# create timeprovider instance and configure
python3 VirtualControlAPI.py -a timeprovider --timeprovider
python3 VirtualControlAPI.py -c timeprovider set Image codesyssafetimeprovider_linuxsafetimeprovider:4.18.0.0
python3 VirtualControlAPI.py -c timeprovider set GenericCommands -e TARGET_IP=10.0.0.4 -e TARGET_PORT=60000

python3 VirtualControlAPI.py -r timeprovider

PC hôte Linux

Accédez au répertoire contenant VirtualControlAPI.py ainsi que les images conteneurisées compressées au format .tar.gz. Adaptez le script suivant à votre plateforme et exécutez-le.

SetupExample_LinuxHostPC.sh

#!/bin/bash

# load images into registry
docker load -i Docker_codesyscontrol_virtuallinux_4.18.0.0_amd64.tar.gz
docker load -i Docker_codesysedge_edgeamd64_4.18.0.0_amd64.tar.gz
docker load -i Docker_codesyssafecontrol_linuxsafei386_4.18.0.0_i386.tar.gz
dpkg -i codemeter-lite_8.30.6885.501_amd64.deb
dpkg -i codesyslicenseserver_licenseserver_4.18.0.0_all.deb

# create runtime instance and configure
python3 VirtualControlAPI.py -a vPLC
python3 VirtualControlAPI.py -c vPLC set Image codesyscontrol_virtuallinux:4.18.0.0
python3 VirtualControlAPI.py -c vPLC set Ipc shareable
python3 VirtualControlAPI.py -c vPLC set LicenseServer 10.0.0.4

# create edge gateway instance and configure
python3 VirtualControlAPI.py -a vGateway --gateway
python3 VirtualControlAPI.py -c vGateway set Image codesysedge_edgeamd64:4.18.0.0

# create safe runtime instance and configure
python3 VirtualControlAPI.py -a vSafePLC --safety
python3 VirtualControlAPI.py -c vSafePLC set Image codesyssafecontrol_linuxsafei386:4.18.0.0
python3 VirtualControlAPI.py -c vSafePLC set Ipc container:vPLC
python3 VirtualControlAPI.py -c vSafePLC set Dependencies vPLC

python3 VirtualControlAPI.py --run-all

Une fois les scripts exécutés sur les ordinateurs respectifs, les instances sont configurées selon le scénario et se trouvent dans le Running L'état est terminé. Tous les appareils requis sont désormais prêts. Les prochaines étapes pour la création d'un projet et l'intégration de PROFIsafe sont décrites dans le document. Extension de sécurité CODESYS documentation.

Script de mise à jour des instances d'exécution

Seules quelques commandes sont nécessaires pour mettre à niveau la version des instances individuelles. L'arrêt, la modification de l'image du conteneur et le redémarrage des instances n'affecteront aucun autre paramètre. Vous bénéficierez néanmoins de toutes les nouvelles fonctionnalités et améliorations de la nouvelle version.

Déployez les images sur l'appareil comme vous l'avez fait dans les étapes précédentes.

UpgradeVersions.sh

#!/bin/bash

# load images into registry
docker load -i Docker_codesyscontrol_virtuallinux_4.19.0.0_amd64.tar.gz
docker load -i Docker_codesysedge_edgeamd64_4.19.0.0_amd64.tar.gz
docker load -i Docker_codesyssafecontrol_linuxsafei386_4.19.0.0_i386.tar.gz

# stop all instances. If only selective instances should be upgraded, use python3 VirtualControlAPI.py -s <instance name> to only stop specific instances
python3 VirtualControlAPI.py --stop-all

# configure new images for instances
python3 VirtualControlAPI.py -c vPLC set Image codesyscontrol_virtuallinux:4.19.0.0
python3 VirtualControlAPI.py -c vGateway set Image codesysedge_edgeamd64:4.19.0.0
python3 VirtualControlAPI.py -c vSafePLC set Image codesyssafecontrol_linuxsafei386:4.19.0.0

# start all instances
python3 VirtualControlAPI.py --run-all

Dépannage

Erreur

Symptôme

Cause

Solution

Accès refusé / Erreur d'accès

Message d'erreur : PermissionError: [Errno 13] Permission denied

Le script nécessite des autorisations plus élevées, par exemple pour accéder au registre des conteneurs, aux chemins système et pour modifier les espaces de noms des cartes réseau.

Exécutez à nouveau la commande avec sudo.

sudo python3 VirtualControlAPI.py <command>

L'image n'est pas affichée dans le registre

--list-images n'affiche pas l'image attendue.

L'image n'est pas compatible.

Seules les images répondant à des critères spécifiques sont autorisées. CODESYS Les critères sont affichés.

Vérifiez s'il s'agit d'un site officiel. CODESYS Virtual Control SL image.

L'importation a été annulée.

Relancez l'importation.

sudo python3 VirtualControlAPI.py --import-image

Nom de fichier incorrect / fichier corrompu

Vérifiez que le tar.gz est complet et peut être lu.

L'instance se bloque au démarrage.

Délai d'attente dépassé ou tentative de démarrage infinie

Mauvaise configuration du réseau

Vérifiez l'image

Balise image manquante ou incorrecte

Valider la configuration

L'environnement d'exécution du conteneur (par exemple, Podman ou Docker) n'a pas démarré.

Redémarrez l'environnement du conteneur