管理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脚本:方案一(推荐):
如果您尚未安装,请安装。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使用任何 ZIP 程序解压缩 4.18.0.0.package 文件。在解压后的目录中,您将找到VirtualControlAPI.py脚本Delivery\virtuallinux\VirtualControlAPI.py。
用法
Python脚本VirtualControlAPI.py可能需要以 root 用户身份运行。该脚本执行诸如更改容器注册表和修改网络适配器命名空间等任务。
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。
重要
“安全屋”一文阐述了与安全控制器操作相关的其他技术方面。有关所有安全或认证信息,请参阅此帮助页面以及设备制造商的安全文档。
准备工作
为了获得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 CodeMeter for Linux SL。
因为CODESYS Virtual Control for Linux SL只能通过网络许可进行授权,这两个软件包是授权所必需的。测试设置不需要此步骤,但建议执行此步骤,并且已包含在以下脚本中。
将脚本、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
“安全屋”场景自动设置脚本
注意
以下脚本仅供参考。您可能需要对版本、网络适配器、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)未启动 | 重启容器环境 |