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