工業(yè)數(shù)據(jù)采集:從OPC讀寫設(shè)備實(shí)時數(shù)據(jù)
這篇文章用具體實(shí)例給不熟悉OPC的讀者科普如何用python連接OPC來抓取機(jī)器PLC的數(shù)據(jù)熬北。 搞數(shù)字化工廠的基礎(chǔ)就是工業(yè)數(shù)據(jù)采集匿情。只要有了數(shù)據(jù)倍靡,我們就可以可以做數(shù)據(jù)可視化展示堕澄,工業(yè)大數(shù)據(jù)存儲膜蛔,數(shù)據(jù)挖掘瀑志,等等涩搓。
0. 簡介
對于自動化程度低的工廠,我們可以通過外接傳感器完成數(shù)據(jù)的自動收集劈猪。實(shí)現(xiàn)數(shù)字化工廠:傳感器+數(shù)據(jù)采集+網(wǎng)站完整實(shí)現(xiàn)設(shè)備實(shí)時數(shù)據(jù)可視化
對于自動化程度高的工廠昧甘,我們顯然不需要花時間去一個傳感器一個傳感器的安裝。我們可以通過自動化的協(xié)議來直接進(jìn)行數(shù)據(jù)采集战得。工業(yè)4.0的理解和落地實(shí)施-工業(yè)數(shù)據(jù)采集
然而talk is cheap充边,大家還是沒有主觀認(rèn)知究竟如何進(jìn)行數(shù)據(jù)抓取,并且上傳到上層的服務(wù)器或者信息系統(tǒng)。
1.關(guān)于OPC
簡單來說浇冰,OPC是一套標(biāo)準(zhǔn)贬媒,其目的是把PLC特定的協(xié)議(如Modbus,Profibus等)抽象成為標(biāo)準(zhǔn)化的接口肘习,作為“中間人”的角色把通用的OPC“讀寫”請求轉(zhuǎn)換成具體的設(shè)備協(xié)議來與HMI/SCADA系統(tǒng)直接對接 基于這個標(biāo)準(zhǔn)际乘,有幾個公司都分布開發(fā)了自己的OPC server/client。我自己使用過的是Kepware的漂佩。他家的軟件本身是免費(fèi)下載的脖含。但是連接PLC的驅(qū)動是要單獨(dú)付費(fèi)購買。
2.配置OPC server連接機(jī)器PLC
我們可通過新建Tag來綁定機(jī)器PLC的各種數(shù)據(jù)點(diǎn)位投蝉。如果需要教程指導(dǎo)可以自行百度养葵。這個操作是很容易的。重點(diǎn)是讀者需要了解墓拜,很多機(jī)器數(shù)據(jù)港柜,比如溫度,壓強(qiáng)咳榜,電壓夏醉,扭矩等等實(shí)時數(shù)據(jù)在PLC都存在,我們通過這里的Tag已經(jīng)把機(jī)器PLC的數(shù)據(jù)綁定到了OPC軟件上來涌韩,下一步我們只需要從OPC里讀寫TAG的數(shù)據(jù)就可以了
然后咱們需要祭出萬能的python 安裝OPC的包畔柔。
pip3 install OpenOPC-Python3x
pip3 install pypiwin32
?
3.操作OPC
連接
讀取
寫入
把OPC抓取的實(shí)時數(shù)據(jù)綁定到了工廠的3D展示視圖,從而實(shí)現(xiàn)了更酷炫的效果
參考代碼
import OpenOPC
import pywintypes
import time
#連接OPC
opc =OpenOPC.client()
opcserv='Matrikon.OPC.Simulation.1'
opc.connect(opcserv)
?
pywintypes.datetime = pywintypes.TimeType
# 讀一個Tag的值
# tag ='機(jī)器1.TAG1'
# value = opc.read(tag)
?
# 讀多個tag的值
# tags=['機(jī)器1.TAG1','機(jī)器1.TAG2']
# value = opc.read(tags,group='Group1',update=1)
# ===========write================
# 寫一個Tag值
# tag ='機(jī)器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)
# **********************************************************
# 關(guān)閉opc連接
# opc.close()