工业数据采集:从OPC读写设备实时数据
这篇文章用具体实例给不熟悉OPC的读者科普如何用python连接OPC来抓取机器PLC的数据。 搞数字化工厂的基础就是工业数据采集。只要有了数据,我们就可以可以做数据可视化展示,工业大数据存储,数据挖掘,等等。
0. 简介
0.jpg-
对于自动化程度低的工厂,我们可以通过外接传感器完成数据的自动收集。实现数字化工厂:传感器+数据采集+网站完整实现设备实时数据可视化
-
对于自动化程度高的工厂,我们显然不需要花时间去一个传感器一个传感器的安装。我们可以通过自动化的协议来直接进行数据采集。工业4.0的理解和落地实施-工业数据采集
然而talk is cheap,大家还是没有主观认知究竟如何进行数据抓取,并且上传到上层的服务器或者信息系统。
1.关于OPC
简单来说,OPC是一套标准,其目的是把PLC特定的协议(如Modbus,Profibus等)抽象成为标准化的接口,作为“中间人”的角色把通用的OPC“读写”请求转换成具体的设备协议来与HMI/SCADA系统直接对接 基于这个标准,有几个公司都分布开发了自己的OPC server/client。我自己使用过的是Kepware的。他家的软件本身是免费下载的。但是连接PLC的驱动是要单独付费购买。
2.配置OPC server连接机器PLC
我们可通过新建Tag来绑定机器PLC的各种数据点位。如果需要教程指导可以自行百度。这个操作是很容易的。重点是读者需要了解,很多机器数据,比如温度,压强,电压,扭矩等等实时数据在PLC都存在,我们通过这里的Tag已经把机器PLC的数据绑定到了OPC软件上来,下一步我们只需要从OPC里读写TAG的数据就可以了
然后咱们需要祭出万能的python 安装OPC的包。
pip3 install OpenOPC-Python3x
pip3 install pypiwin32
3.操作OPC
1.gif 1.jpg连接
2.jpg读取
3.jpg写入
4.jpg把OPC抓取的实时数据绑定到了工厂的3D展示视图,从而实现了更酷炫的效果
2.gif
参考代码
import OpenOPC
import pywintypes
import time
#连接OPC
opc =OpenOPC.client()
opcserv='Matrikon.OPC.Simulation.1'
opc.connect(opcserv)
pywintypes.datetime = pywintypes.TimeType
# 读一个Tag的值
# tag ='机器1.TAG1'
# value = opc.read(tag)
# 读多个tag的值
# tags=['机器1.TAG1','机器1.TAG2']
# value = opc.read(tags,group='Group1',update=1)
# ===========write================
# 写一个Tag值
# tag ='机器1.TAG2'
# 方式1
# opc.write( (tag, 10) )
# value = opc.read(tag)
# 方式2
# opc[tag] = 100.0
# 写入多个Tag
# opc.write( [('TAG2', 10.0), ('TAG3', 20.0)] )
# value = opc.read(tag)
# **********************************************************
# 关闭opc连接
# opc.close()
网友评论