通过 OpenPLC 和 Modbus RTU 将 Raspberry Pi Pico W 集成到工业控制系统中
在基于 STM32-IHM03 的 PMSM 电机控制项目中,添加了一个使用 Raspberry Pi Pico W 作为远程 I/O 节点,并以 OpenPLC 实现逻辑的节点。节点间通信通过 RS485 上的 Modbus RTU 实现,而系统协调则由运行 Node-RED 的 Orange Pi 4 Pro 负责。此架构展示了如何使用开源工具构建符合 IEC 61131-3 标准的分布式自动化系统。
硬件配置和连接
系统核心由三个关键组件组成:用于电机控制的 STM32-IHM03、作为远程 I/O 模块的 Raspberry Pi Pico W,以及作为中央控制器的 Orange Pi 4 Pro。CAN 总线(使用 SN65HVD230 收发器)连接 STM32 和 Orange Pi,而基于 MAX485 芯片的两线 Modbus RTU 总线则连接 Orange Pi 和 Pico。
为了将 Modbus 和 CAN 连接到 Orange Pi,使用了原本为 Raspberry Pi 设计的 RS485 CAN HAT 扩展板。将它适配到 Orange Pi 需要以下操作:
- 在 Device Tree Overlay 中将 MCP2515 时钟频率从 8 MHz 改为 12 MHz;
- 通过
orangepi-config启用 UART7 以与 SP3485 收发器通信; - 由于处理器位于板卡下方,需要将扩展板物理安装在支架上。
所有组件的电源由外部电源供应,这不影响运行逻辑,但对原型稳定性至关重要。
OpenPLC 中的引脚和寄存器寻址
在 OpenPLC Editor 中为 Raspberry Pi Pico W 编程时,需要将 RP2040 的物理引脚映射到 Modbus 地址。下表显示了关键映射关系:
| PLC 数据类型 | 记号 | Modbus 地址范围 | 大小 | 访问权限 |
|------------------|-------------------|-----------------|----------|----------|
| 离散输出 | %QX0.0 – %QX6.7 | 0–55 | 1 位 | 读写 |
| 离散输入 | %IX0.0 – %IX6.7 | 0–55 | 1 位 | 只读 |
| 模拟输入 | %IW0 – %IW31 | 0–31 | 16 位 | 只读 |
| 保持寄存器 | %QW0 – %QW31 | 0–31 | 16 位 | 读写 |
| 内存 (16/32/64 位) | %MW / %MD / %ML | 32–171 | 最多 64 位 | 读写 |
这些地址用于在梯形图 (LD) 或功能块图 (FBD) 语言中创建逻辑。例如,控制连接到 GPIO2 的继电器对应 %QX0.2 和 Modbus 地址 2。
在 OpenPLC v4 中实现逻辑
OpenPLC v4 支持开发符合 IEC 61131-3 标准的程序。对于 Raspberry Pi Pico W,以下编程语言可用:
- LD (梯形图) — 继电器梯形逻辑,对电气工程师非常直观。
- FBD (功能块图) — 函数及其连接的图形表示。
- ST (结构化文本) — 高级文本语言。
程序上传到 OpenPLC 运行时,直接在微控制器上运行。在本项目中,Pico 作为 Modbus RTU 从站,使用固定地址(如 10)。所有读写操作均由主站设备发起——即通过 Node-RED 的 Orange Pi。
简单逻辑示例:通过 Modbus 接收到“启动”信号时,线圈 %QX0.0 激活,闭合 SRD-05VDC-SL-C 继电器。同时,离散输入 %IX1.0 的状态可作为紧急停止信号。
DIY 方法在工业自动化中的局限性
尽管 Raspberry Pi Pico 和 OpenPLC 解决方案灵活且成本低廉,但在工业应用中存在显著局限性:
- 输入/输出缺乏电气隔离,使系统易受动力设备干扰。
- 非标准连接器(如 Micro-USB 和 2.54 mm 针脚)无法承受工业环境中的振动。
- 无硬件看门狗,增加无重启挂起风险。
- OpenPLC v4 的 Modbus 支持有限:向保持寄存器和线圈写入可能需要修改运行时源代码。
此类系统适合培训、原型开发或小型本地任务,但不适合关键生产线路。
关键要点
- Raspberry Pi Pico W 可在基于 OpenPLC 的自动化系统中作为远程 I/O 节点。
- Modbus RTU 通信需要按照 OpenPLC 文档正确进行引脚和寄存器寻址。
- RS485 CAN HAT 扩展板可适配 Orange Pi,但需编辑 Device Tree 并启用所需 UART。
- OpenPLC v4 支持 IEC 61131-3 标准,但在功能上不如 CODESYS 等工业环境完善。
- DIY 解决方案在缺乏额外保护和接口标准化时,不适合工业部署。
— Editorial Team
暂无评论。