管理するCODESYS Virtual Safe Controlコマンドライン経由のSL
管理および使用CODESYS Virtual Safe Control Linuxデバイス上のSLでは、VirtualControlAPIコマンドライン経由。
そのVirtualControlAPI Pythonベースのコマンドラインツールで、CODESYS Virtual Safe Control Linuxシステム上のSLであり、CODESYS Control SL Deploy Tool。
要件
Linuxベースのオペレーティングシステムを搭載したデバイス
Python 3 (>= 3.9)
スクリプト:
VirtualControlAPI.py
VirtualControlAPI.pyスクリプト:オプション 1 (推奨):
まだインストールしていない場合は、CODESYS Virtual Control for Linux SLパッケージをCODESYS Windowsにインストールします。その後、
VirtualControlAPI.pyディレクトリ内のスクリプト<CODESYS installation directory> \CODESYS Virtual Control for Linux SL\Delivery\virtuallinux\VirtualControlAPI.py。オプション2:
ダウンロードCODESYS Virtual Control for Linux SLストアからパッケージをダウンロードして
.packageパッケージ(例:CODESYS Virtual Control for Linux SL 4.18.0.0.packageをZIPプログラムで解凍します。解凍したディレクトリには、VirtualControlAPI.pyスクリプトの下Delivery\virtuallinux\VirtualControlAPI.py。
使用法
PythonスクリプトVirtualControlAPI.pyルートユーザーとして実行する必要がある場合があります。このスクリプトは、コンテナレジストリの変更やネットワークアダプタの名前空間の変更などのタスクを実行します。
sudo python3 VirtualControlAPI.py <command>
次のコマンドを使用すると、すべての可能なオプション、パラメーター、および説明のヘルプを表示できます。
sudo python3 VirtualControlAPI.py --help
典型的なワークフロー
コンテナイメージをローカルレジストリにインポートする
レジストリにイメージをロードするには、次のコマンドを使用します。
--import-imageそして、.tar.gzイメージが保存されているファイル。これにより、イメージがローカルレジストリに転送されます。例 5. 例:sudo python3 VirtualControlAPI.py --import-image Docker_codesyscontrol_virtuallinux_4.19.0.0_amd64.tar.gz
ローカル レジストリに既に存在するイメージを確認するには、次のコマンドを使用します。
sudo python3 VirtualControlAPI.py --list-images
基準を満たす画像のみ
VirtualControlAPIが表示されます。インスタンスの作成
ランタイム インスタンスを作成するには、次のコマンドを使用します。
sudo python3 VirtualControlAPI.py --add-instance <instance name>
EdgeGateway インスタンスまたは Safe Runtime インスタンスを作成する場合は、コマンドの最後にこれを指定します。
udo python3 VirtualControlAPI.py --add-instance <instance name> --safety sudo python3 VirtualControlAPI.py --add-instance <instance name> --gateway
これは、異なるインスタンス タイプには異なるデフォルト構成とデフォルト パラメータが備わっているために必要です。
インスタンスの設定
作成したインスタンスを設定するには、まず利用可能な設定パラメータを確認することをお勧めします。これを行うには、次のコマンドで設定ファイルをフォーマットされた形式で表示します。
sudo python3 VirtualControlAPI.py --get-configuration <instance name>
以下にリストされているパラメータ
CONFIG_KEYこれらは通常すべて設定可能であり、次のコマンドで編集できます。sudo python3 VirtualControlAPI.py --configure <instance name> [set/add/remove] <CONFIG_KEY> <value>
set現在の値を上書きします。add価値を追加します。remove現在の値を削除します。
通常、最初の起動では、
CONFIG_KEY画像が必要です。これを行うには、次のコマンドを実行し、画像を対応する画像に置き換えます。すべての画像を表示するには、次のコマンドを使用します。--list-images。例 6. 例sudo python3 VirtualControlAPI.py --configure <instance name> set Image codesyscontrol_virtuallinux:4.19.0.0
重要
インスタンスを構成するには、インスタンスが停止状態である必要があります。
インスタンスの起動と停止
インスタンスはオプションで起動されます
--runそしてオプションで停止--stop。sudo python3 VirtualControlAPI.py --run <instance name> sudo python3 VirtualControlAPI.py --stop <instance name>
オプションと終了コードの詳細については、コマンドを実行してください。sudo python3 VirtualControlAPI.py --help。
スクリプトによる「セーフハウス」シナリオの例
以下の下線部は、例えば「セーフハウス」シナリオをどのようにして実現できるかを説明しています。VirtualControlAPI。
重要
「Safe House」の記事では、セーフティコントローラーの操作に関連するその他の技術的側面について解説しています。安全性や認証に関するすべての情報については、このヘルプページとデバイスメーカーの安全に関する文書をご参照ください。
準備
を取得するにはVirtualControlAPI.pyスクリプトと最新バージョンの画像CODESYS Virtual Control for Linux SLの手順の指示に従ってください要件前の章の手順を繰り返します。CODESYS Virtual Safe Control SLで画像をダウンロードCODESYS Virtual Safe Control SLとCODESYS Virtual Safe Time Provider SL。コンテナイメージは、方法に応じて次のディレクトリにあります。
オプション1:
コンテナイメージは次のように保存されます
tar.gz次のディレクトリ内のファイル:<CODESYS installation directory>\CODESYS Virtual Control for Linux SL\Delivery\<product>\<CODESYS installation directory>\CODESYS Virtual Safe Control SL\Delivery\<product>\オプション2:
コンテナイメージは次のように保存されます
tar.gz次のディレクトリ内のファイルCODESYSパッケージ:Delivery\<product>\オプション3 – スクリプト:
オプション2はスクリプトを使って実現することもできます。ダウンロードと解凍については、以下のサンプルスクリプトを参照してください。CODESYSパッケージ化だけでなく、会社のインフラストラクチャにイメージをプッシュすることもできます。
ヒント
使用にあたってのライセンス条件に注意してくださいCODESYSソフトウェア。
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
追加の準備:
同様に、CODESYS License Server for Linux SLそしてCODESYS Linux SL 用の CodeMeter。
なぜならCODESYS Virtual Control for Linux SLネットワークライセンス経由でのみライセンスを取得できます。ライセンス取得にはこれら2つのパッケージが必要です。この手順はテストセットアップでは必須ではありませんが、推奨されており、以下のスクリプトに含まれています。
スクリプト、Debian パッケージ、コンテナ イメージをコントローラに転送する
単一のアプリケーションの場合、個々のファイルをCODESYSパッケージをターゲットデバイスに直接送信します。例えばpscpの場合:
pscp -pw password <PathToDockerImage.tar.gz> user@<IP>:~/
コンテナイメージの場合、VirtualControlAPI.py、必要な Debian パッケージが内部サーバーまたは内部コンテナ レジストリにロードされている場合は、そこから直接取得することもできます。
#!/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
「The Safe House」シナリオの自動セットアップ用スクリプト
注記
以下のスクリプトはあくまでも例です。バージョン、ネットワークアダプタ、IPアドレスなどを調整する必要がある場合があります。
以下の例では、個々のファイルが、CODESYSパッケージ。ユースケースに応じてスクリプトを調整します。
LinuxホストPC 2
以下のディレクトリに移動しますVirtualControlAPI.pyだけでなく.tar.gz圧縮コンテナイメージ。以下のスクリプトを特定のプラットフォームに合わせて調整し、実行してください。
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
LinuxホストPC
以下のディレクトリに移動しますVirtualControlAPI.py .tar.gz 圧縮されたコンテナイメージも同様です。以下のスクリプトをプラットフォームに合わせて変更し、実行してください。
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
それぞれのコンピュータでスクリプトが実行されると、インスタンスはシナリオに従って構成され、Running状態です。必要なデバイスはすべて準備完了です。プロジェクトの作成とPROFIsafeの統合に関する次の手順については、 CODESYS 安全拡張機能ドキュメント。
ランタイムインスタンスを更新するためのスクリプト
個々のインスタンスのバージョンをアップグレードするには、いくつかのコマンドを実行するだけです。インスタンスの停止、コンテナイメージの変更、再起動は、他の設定には影響しません。ただし、新バージョンのすべての新機能と改善点の恩恵を受けることができます。
前の手順と同じように、イメージをデバイスに展開します。
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
トラブルシューティング
エラー | 症状 | 原因 | 解決 |
|---|---|---|---|
権限が拒否されました / アクセスエラー | エラーメッセージ: | スクリプトには、コンテナー レジストリやシステム パスにアクセスしたり、ネットワーク アダプターの名前空間を変更したりするなど、より高い権限が必要です。 | コマンドを再度実行すると sudo python3 VirtualControlAPI.py <command> |
レジストリに画像が表示されない |
| 画像に互換性がありません。 特定の条件を満たす画像のみCODESYS基準が表示されます。 | 公式かどうか確認するCODESYS Virtual Control SL画像。 |
インポートはキャンセルされました。 | インポートを再度実行します。 sudo python3 VirtualControlAPI.py --import-image | ||
ファイル名が正しくありません / ファイルが破損しています | 検証する | ||
インスタンスが起動時にハングする | タイムアウトまたは無限の起動試行 | ネットワークの誤った構成 | 画像を確認する |
画像タグが欠落しているか間違っています | 構成を検証する | ||
コンテナ ランタイム (Podman や Docker など) が起動していない | コンテナ環境を再起動します |