我正在S7-1200 plc上运行一个进程,我需要它向我的python脚本发送一个启动信号,在脚本运行完毕后需要将一些东西发送回plc以启动下一阶段。哦,它必须在梯子上完成。
是否有快速而肮脏的方式将内容发送到profibus或者我最好只使用RS232?
答案 0 :(得分:5)
我会使用SNAP7和python-snap7库。有关如何在此博客中找到的Raspberry pi上安装它的示例: http://simplyautomationized.blogspot.com/2014/12/raspberry-pi-getting-data-from-s7-1200.html
<强>更新强>
有关如何设置的视频演练:https://youtu.be/yJNEsI5KJxs
答案 1 :(得分:4)
我会在PC端使用 libnodave 来更改PLC中某些M标签或DB标签的值。您可以轻松制作一个梯形梯级,用于监控此标签并执行进一步的操作。尽管libnodave本身不支持Python,但您可以找到一个python包装器 here 。
答案 2 :(得分:4)
使用libnodave和OPC失败后,我创建了TCON,TSEND和TRECV通信。它通过TCP传输一个字节,它可以工作。
答案 3 :(得分:2)
答案 4 :(得分:2)
有一个名为&#34; S7connector&#34;的商业图书馆。由Rothenbacher GmbH提供(显然它不是&#34; s7连接器&#34;在sourceforge上)。 它适用于.NET框架,因此可以与IronPython一起使用。
它适用于S7-1200 PLC。您只需确保要读取/写入的DB不是优化的S7-1200样式DB,而是S7-300 / 400兼容的DB,您可以在TIA门户中创建DB时设置该选项。 该lib还允许读写所有I / O端口 - &#34;影子寄存器&#34; (不确定他们正式称之为什么)并且直接覆盖前者。
答案 5 :(得分:2)
有几种可用于Python的Modbus TCP客户端,我已经成功使用了pyModbusTCP。 TIA Portal S7-1200的IDE具有Modbus服务器功能,您可以将其加载到PLC,以便直接读取和写入PLC。
答案 6 :(得分:1)
与S7-1200 PLC通信的最佳方式cpu是使用OPC UA或经典OPC(通常称为OPC DA).Libnodave适用于S7-300和S7-400,不适用于S71200(2.x固件)。
如果使用第三方解决方案与S7-1200(或S7-1500)通信,则必须通过允许put和get机制来降低PLC的安全级别。 Put and get是纯粹的邪恶使用。您为每个进程打开CPU的内存。不要再使用它们了。西门子实际上应该阻止它。
这适用于S7-1200的所有固件版本。 西门子推动人们使用OPC UA作为PLC的默认通信。有意义的是,因为OPC UA是工业4.0和IIoT的协议。
编辑:重写所有内容。信息严重过时。 如果您使用固件2或3 1200,请考虑更换或升级。不再支持这些版本,并且包含蠕虫问题。