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
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.pyscript 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
.packagepaquet (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 leVirtualControlAPI.pyscript sousDelivery\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
Importer une image de conteneur dans le registre local
Pour charger une image dans le registre, utilisez la commande
--import-imageet transmettre le nom du.tar.gzLe 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
VirtualControlAPIsera affiché.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.
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_KEYsont 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.addajoutera de la valeur.removesupprimera la valeur actuelle.
En général, pour un premier démarrage, il suffit de régler le
CONFIG_KEYUne 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. Exemplesudo 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.
Démarrage et arrêt de l'instance
L'instance sera démarrée avec l'option
--runet 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.gzfichiers 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.gzfichiers 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 : | 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 python3 VirtualControlAPI.py <command> |
L'image n'est pas affichée dans le registre |
| 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 | ||
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 |