在边缘计算机上部署CODESYS:从安装到项目联调的全流程实践
前言:CODESYS 作为工业自动化领域最主流的软PLC开发平台之一,在边缘计算场景下的部署需求越来越多。本文将完整记录在 Linux ARM64 架构的边缘计算网关(EC系列)上部署 CODESYS Control、在 Windows 端安装 CODESYS Development System、创建工程并完成设备联调的全过程,包含配置修改、网络扫描、文件写入测试等关键步骤的踩坑要点。
一、环境准备
| 项目 | 说明 |
|---|---|
| 边缘计算网关 | EC900 系列,ARM64 架构,运行 Linux |
| CODESYS Control | CODESYS Control for Linux ARM64 SL 4.13.0.0 |
| CODESYS IDE | CODESYS Development System V3(Windows) |
| 通信方式 | 局域网扫描连接 |
注意: CODESYS Control 的运行版本必须与 IDE 端加载的 Target 包版本一致,否则无法正常连接设备。
二、CODESYS Control 下载与安装
2.1 下载安装包
从 CODESYS 官方商店下载 CODESYS Control for Linux ARM64 SL 安装包:
下载地址:https://store.codesys.com/en/codesys-control-for-linux-arm-sl-1.html
下载后得到 CODESYS Control for Linux ARM64 SL 4.13.0.0.zip(约48MB)。
2.2 解压并拷贝至设备
将 zip 文件解压后,得到 .package 文件及依赖目录。将所有文件拷贝至 EC 设备的 /home/edge/codesys 目录:
# 可通过 scp 或 U盘等方式拷贝
scp -r ./codesys/ edge@<设备IP>:/home/edge/codesys/
2.3 安装依赖与运行时
在 EC 设备上执行以下命令,先安装依赖再安装 CODESYS Control:
# 安装 CodeMeter 依赖
sudo dpkg -i /home/edge/codesys/Dependency/codemeter-lite_8.10.6230.501_arm64.deb
# 安装 CODESYS Control 运行时
sudo dpkg -i /home/edge/codesys/Delivery/linuxarm64/codesyscontrol_linuxarm64_4.13.0.0_arm64.deb
踩坑提醒: 安装顺序不能颠倒,
codemeter-lite是 CODESYS Control 的前置依赖,缺少会导致运行时启动失败。
2.4 检查运行状态
安装完成后,通过 systemd 查看服务状态:
systemctl status codesyscontrol
如果显示 active (running),说明运行时已正常启动。
三、关键配置修改
3.1 关闭 SysFile IEC 保护
CODESYS 出于安全考虑,默认限制 IEC 程序对文件系统的访问。在边缘计算场景中,我们通常需要 PLC 程序读写本地文件(如日志记录、配置文件等),因此需要修改配置关闭该保护。
编辑配置文件:
vim /etc/codesyscontrol/CODESYSControl.cfg
找到 [SysFile] 段,将 ForceIecFilePath 设为 0:
[SysFile]
ForceIecFilePath=0
为什么要改这个? 默认情况下
ForceIecFilePath=1会强制 IEC 程序只能访问特定目录下的文件。设为0后,IEC 程序可以访问文件系统中的任意路径,方便在边缘计算场景下进行灵活的文件操作。
3.2 完整参考配置
以下是 CODESYSControl.cfg 中几个需要关注的关键配置段:
[SysFile]
ForceIecFilePath=0
[SysTarget]
TargetVersionMask=0
TargetVersionCompatibilityMask=0xFFFF0000
[CmpSocketCanDrv]
ScriptPath=/opt/codesys/scripts/
ScriptName=rts_set_baud.sh
[CmpSettings]
IsWriteProtected=1
FileReference.0=SysFileMap.cfg, SysFileMap
FileReference.1=/etc/codesyscontrol/CODESYSControl_User.cfg
[SysExcept]
Linux.DisableFpuOverflowException=1
Linux.DisableFpuUnderflowException=1
Linux.DisableFpuInvalidOperationException=1
[CmpLog]
Logger.0.Name=codesyscontrol.log
Logger.0.Enable=1
Logger.0.MaxEntries=100000
Logger.0.MaxFileSize=1000000
Logger.0.MaxFiles=1
Logger.0.Backend.0.ClassId=0x00000104
[SysEthernet]
Linux.ProtocolFilter=3
[CmpSchedule]
SchedulerInterval=4000
ProcessorLoad.Enable=1
ProcessorLoad.Maximum=95
ProcessorLoad.Interval=5000
DisableOmittedCycleWatchdog=1
[SysCpuHandling]
Linux.DisableCpuDmaLatency=1
提示: 修改配置后需要重启服务才能生效。
3.3 启动(重启)CODESYS Control
sudo systemctl restart codesyscontrol
sudo systemctl status codesyscontrol
确认状态为 active (running) 即可。
四、CODESYS Development System 安装(Windows 端)
4.1 下载安装
从 CODESYS 商店下载安装 CODESYS Development System V3:
下载地址:https://store.codesys.com/en/
安装过程为标准 Windows 安装流程,按向导一步步完成即可。
4.2 加载 Target 包
这一步非常关键——IDE 端需要加载与设备端一致的 Target 包,才能识别并连接目标设备。
- 以管理员身份运行 CODESYS IDE
- 点击菜单
Tools→CODESYS Installer - 点击
安装文件 - 选择之前下载的
CODESYS Control for Linux ARM64 SL <VERSION>.package - 接受许可协议并继续
重要: 加载 Target 包时需要关闭 CODESYS IDE,安装完成后重新打开即可。
五、创建工程并连接设备
5.1 新建工程
- 打开 CODESYS IDE,点击
File→New Project - 选择
Standard project - Device 下拉选择
CODESYS Control for Linux ARM64 SL (CODESYS) - PLC_PRG 编程语言选择
Structured Text (ST)
5.2 扫描网络并连接
- 在工程树中,双击
Device (CODESYS Control for Linux ARM64 SL) - 点击
Scan Network - 等待扫描完成,在结果列表中查找你的边缘计算网关设备(设备名通常类似
edge-computer) - 确认设备信息无误后点击
OK - 首次连接会提示设置登录凭据,输入用户名和密码后点击
OK并保存 - 输入凭据确认后,点击
Online→Login登录设备
连接失败排查:
- 确认设备与 Windows 主机在同一局域网
- 确认设备端
codesyscontrol服务正在运行(systemctl status codesyscontrol)- 检查防火墙是否放行了 CODESYS 通信端口
- 确认 IDE 端加载的 Target 包版本与设备端一致
六、文件写入功能测试
完成连接后,我们可以测试一下 SysFile 文件操作功能,验证之前关闭 IEC 保护的配置是否生效。
6.1 添加 SysFile 库
- 退出登录(
Online→Logout) - 在工程树中双击
Library Manager - 点击
Add Library - 搜索
SysFile,选中后点击OK
6.2 编写测试程序
双击 PLC_PRG,在 ST 编辑器中编写文件写入测试代码:
PROGRAM PLC_PRG
VAR
hFile : RTS_IEC_HANDLE;
ulResult : RTS_IEC_RESULT;
sContent : STRING := 'Hello CODESYS File Write Test!';
sFilePath : STRING := '/home/edge/TestCODESYSFileWrite.txt';
bWrite : BOOL := TRUE;
END_VAR
IF bWrite THEN
hFile := SysFileOpen(sFilePath, SYSFILE_MODE_WRITE, ulResult);
IF ulResult = RTS_IEC_RESULT.ERR_OK THEN
SysFileWrite(hFile, ADR(sContent), LEN(sContent), ulResult);
SysFileClose(hFile);
bWrite := FALSE;
END_IF
END_IF
6.3 编译、下载并运行
- 点击
Build→Build编译工程 - 重新连接设备(
Online→Login) - 下载应用并启动运行
6.4 验证结果
在 EC 设备上检查测试文件是否生成:
cat /home/edge/TestCODESYSFileWrite.txt
如果能看到 Hello CODESYS File Write Test! 内容,说明 SysFile 文件操作功能配置成功。
七、常见问题与注意事项
Q1:IDE 扫描不到设备?
- 检查设备 IP 是否可达(
ping测试) - 确认
codesyscontrol服务正在运行 - 检查 Target 包版本是否匹配
- Windows 防火墙可能阻止了 CODESYS 的广播包
Q2:Login 后报通信错误?
- 确认设备端和 IDE 端的版本一致
- 尝试重启设备端
codesyscontrol服务 - 检查网络环境是否存在多网卡冲突
Q3:文件写入失败?
- 确认
CODESYSControl.cfg中ForceIecFilePath=0已设置 - 确认修改配置后已重启服务
- 检查目标路径的文件系统权限(
edge用户是否有写权限)
Q4:安装 Target 包后 IDE 仍找不到设备类型?
- 确认安装时是以管理员身份运行的 IDE
- 安装完成后需要重启 IDE
- 在
Tools→Device Repository中确认 Target 包是否已正确注册
八、总结
本文完整介绍了在 Linux ARM64 边缘计算网关上部署 CODESYS 的全流程:
- 设备端:下载 → 解压 → 安装依赖 → 安装运行时 → 修改配置 → 启动服务
- IDE 端:安装开发环境 → 加载 Target 包
- 联调:创建工程 → 扫描网络 → 连接设备 → 测试验证
整个部署过程的核心卡点在于:Target 包版本匹配和 SysFile 保护配置。前者决定了设备能否被识别和连接,后者决定了 IEC 程序能否正常操作文件系统。提前处理好这两个问题,部署过程会顺畅很多。
如果本文对你有帮助,欢迎收藏和交流。如有问题也欢迎在评论区讨论。
更多推荐
所有评论(0)