中间件与驱动
Snap7 (C++ Core) / python-snap7 (Wrapper)
厂商/来源:
SourceForge (Davide Nardella)
核心功能:
打开工业黑盒的“钥匙”。西门子 PLC (S7-1200/1500) 是工业界的霸主,而 Snap7 是在 Linux 上不花钱就能读写它的唯一靠谱方案。
| 适用场景 | 甚至不需要购买昂贵的 OPC UA 授权,直接通过以太网读取西门子 PLC 的 DB 块数据 |
| 架构支持 | Linux/Windows/macOS ARM/x86 (树莓派读 PLC 的标配) |
| 核心机制 | S7 通讯协议:通过逆向工程实现了西门子私有的 S7 协议。注意:它不是官方驱动,但极其稳定。 |
| 性能指标 | 极快。读取一个 100 字节的 DB 块耗时通常 < 5ms。支持 PDU (协议数据单元) 自动协商。 |
| 避坑指南 | [权限与地址迷宫] 1. PUT/GET 锁:这是新手必死关卡。S7-1200/1500 默认关闭了第三方访问权限。连接时会报错 "Connection Refused"。对策:必须让 PLC 工程师在 TIA Portal 软件中勾选 “允许来自远程对象的 PUT/GET 通信访问”。 2. 块优化访问:默认新建的 DB 块是“优化的 (Optimized)”,没有绝对地址偏移量,Snap7 读不到。对策:必须在 PLC 侧将 DB 块属性改为 “标准访问 (Standard Access)”,并在编译后查看 Offset (如 0.0, 2.0)。 |
| 推荐搭配 | [Siemens S7-1200 PLC] [Python 脚本] |