最近项目上要开发基于TCP/IP协议的PC上位机和西门子S7系列PLC的通讯和数据采集,网上搜罗了一圈发现有python snap7这个工具,鉴于此次开发时间有限,就自己研究上手了,期间也碰到很多安装和连接、读取数据的问题,网上解决方案有限,现提供一个测试版本,该版本有如下功能:
2018-03-14 更新python s7-1200测试版程序技术特性:
1、PC直接通过TCP网口连接S7-1200系列PLC;
2、按照PLC导出的点表地址获取I、Q、M区的地址和类型进行读取;
3、读出的值下一步可以通过MYSQL或socket的方式记录和推送;
4、目前是按照每个点逐个读取,因此效率较低,后续考虑按块读取,那样效率就很高了,基本上读一次时间控制在ms级别;
5、摆脱了OPC的束缚,之前都需要从OPC中转一下,这下PC可以直接通过网络连接PLC。
(python s7-1200测试版本打包程序)下载地址:https://pan.baidu.com/s/1cRK9vIxW4T1_sVFieUESjA
感谢(蔽月八云):https://www.jianshu.com/p/5284de40a139 的总结和分析,因为我也是个PLC小白,python snap7的优势就在于,一个PLC小白也能很快地利用python和PLC建立通讯,并获取寄存器的值,这些值为我们的数据分析提供了数据基础,基于TCP/IP方式的通讯,是它最大的优势,期间也用过modbus TCP的方式读取,但是40001和M区的对应地址关系把我搞的头晕,相比而言modbus简单更易操作,python snap7更加专业。
另附 python snap7安装常见问题和步骤:https://*.com/questions/33697263/python-snap7-windows-cant-find-snap7-library