前言: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 包,才能识别并连接目标设备。

  1. 以管理员身份运行 CODESYS IDE
  2. 点击菜单 ToolsCODESYS Installer
  3. 点击 安装文件
  4. 选择之前下载的 CODESYS Control for Linux ARM64 SL <VERSION>.package
  5. 接受许可协议并继续

重要: 加载 Target 包时需要关闭 CODESYS IDE,安装完成后重新打开即可。


五、创建工程并连接设备

5.1 新建工程

  1. 打开 CODESYS IDE,点击 FileNew Project
  2. 选择 Standard project
  3. Device 下拉选择 CODESYS Control for Linux ARM64 SL (CODESYS)
  4. PLC_PRG 编程语言选择 Structured Text (ST)

5.2 扫描网络并连接

  1. 在工程树中,双击 Device (CODESYS Control for Linux ARM64 SL)
  2. 点击 Scan Network
  3. 等待扫描完成,在结果列表中查找你的边缘计算网关设备(设备名通常类似 edge-computer
  4. 确认设备信息无误后点击 OK
  5. 首次连接会提示设置登录凭据,输入用户名和密码后点击 OK 并保存
  6. 输入凭据确认后,点击 OnlineLogin 登录设备

连接失败排查:

  • 确认设备与 Windows 主机在同一局域网
  • 确认设备端 codesyscontrol 服务正在运行(systemctl status codesyscontrol
  • 检查防火墙是否放行了 CODESYS 通信端口
  • 确认 IDE 端加载的 Target 包版本与设备端一致

六、文件写入功能测试

完成连接后,我们可以测试一下 SysFile 文件操作功能,验证之前关闭 IEC 保护的配置是否生效。

6.1 添加 SysFile 库

  1. 退出登录(OnlineLogout
  2. 在工程树中双击 Library Manager
  3. 点击 Add Library
  4. 搜索 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 编译、下载并运行

  1. 点击 BuildBuild 编译工程
  2. 重新连接设备(OnlineLogin
  3. 下载应用并启动运行

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.cfgForceIecFilePath=0 已设置
  • 确认修改配置后已重启服务
  • 检查目标路径的文件系统权限(edge 用户是否有写权限)

Q4:安装 Target 包后 IDE 仍找不到设备类型?

  • 确认安装时是以管理员身份运行的 IDE
  • 安装完成后需要重启 IDE
  • ToolsDevice Repository 中确认 Target 包是否已正确注册

八、总结

本文完整介绍了在 Linux ARM64 边缘计算网关上部署 CODESYS 的全流程:

  1. 设备端:下载 → 解压 → 安装依赖 → 安装运行时 → 修改配置 → 启动服务
  2. IDE 端:安装开发环境 → 加载 Target 包
  3. 联调:创建工程 → 扫描网络 → 连接设备 → 测试验证

整个部署过程的核心卡点在于:Target 包版本匹配SysFile 保护配置。前者决定了设备能否被识别和连接,后者决定了 IEC 程序能否正常操作文件系统。提前处理好这两个问题,部署过程会顺畅很多。

如果本文对你有帮助,欢迎收藏和交流。如有问题也欢迎在评论区讨论。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐