我正在 S7-1200 plc 上运行一个进程,我需要它向我的 python 脚本发送启动信号,脚本运行完成后,需要将一些内容发送回 plc 以启动下一阶段。哦,而且必须在梯子上完成。
有没有一种快速而肮脏的方式通过 profibus 发送东西,或者我最好只使用 RS232 东西?
我会使用 SNAP7 和 python-snap7 库。有关如何在 Raspberry pi 上安装它的示例,请参阅本博客: http://simplyautomationized.blogspot.com/2014/12/raspberry-pi-getting-data-from-s7-1200.html
更新:
有关如何设置的视频演练:https://youtu.be/yJNEsI5KJxs
在 libnodave 和 OPC 失败后,我创建了 TCON、TSEND 和 TRECV 通信事物。它通过 TCP 传输一个字节并且可以工作。
Rothenbacher GmbH 有一个名为“S7connector”的商业库(显然它不是 sourceforge 上的“s7connector”)。 它适用于 .NET 框架,因此可以与 IronPython 一起使用。
它可以与 S7-1200 PLC 配合使用。您只需确保要读取/写入的 DB 不是优化的 S7-1200 型 DB,而是 S7-300/400 兼容型 DB,您可以在 TIA Portal 中创建 DB 时设置该选项。 该库还允许直接读取和写入所有 I/O 端口 - “影子寄存器”(不确定它们的正式名称),覆盖前者。
有几个可用于Python的Modbus TCP客户端,我已经成功使用了pyModbusTCP。 TIA Portal S7-1200 的 IDE 具有 Modbus 服务器功能,您可以将其加载到 PLC,从而允许您直接读取和写入 PLC。
与 S7-1200 PLC cpu 通信的最佳方式是使用 OPC UA 或 Classic OPC(通常称为 OPC DA)。Libnodave 是为 S7-300 和 S7-400 而不是为 S71200(2.x 固件)而设计的。
如果您使用第三方解决方案与 S7-1200(或 S7-1500)进行通信,则必须通过允许放置和获取机制来降低 PLC 的安全级别。 put 和 get 的使用纯粹是邪恶的。你为每个进程打开CPU的内存。不要再使用它们了。西门子实际上应该阻止这一点。
这适用于 S7-1200 的所有固件版本。 西门子推人们使用OPC UA作为PLC的默认通信。这是有道理的,因为 OPC UA 是工业 4.0 和 IIoT 的协议。
编辑:重写所有内容。信息严重过时。 如果您使用固件 2 或 3 1200,请考虑更换或升级。这些版本不再受支持并且包含蠕虫问题。