?

使用VB語言編程OPC通信技術

2015-04-27 01:27沈陽延鋒江森座椅有限責任公司沈陽110000
山東工業技術 2015年4期
關鍵詞:上位示例應用程序

任 強(沈陽延鋒江森座椅有限責任公司,沈陽 110000)

使用VB語言編程OPC通信技術

任強
(沈陽延鋒江森座椅有限責任公司,沈陽110000)

傳統的PLC上位通信程序由于各品牌PLC有著不同的通信協議與接口方式,設計前需要花費一定時間熟悉各品牌的通信協議與特性,設計難度很大。并且設計出的程序在更換PLC品牌后根本無法兼容,造成程序的靈活性較差。OPC技術由于其兼容廣泛、開發簡單的特點,讓上位程序設計起來簡單靈活。本文通過講解如何使用VB語言編寫OPC上位機程序,使廣大電氣設計人員了解到該技術實現PLC上位通信是非常簡單的。

PLC;上位機;OPC技術

OPC技術是(OLEforprocesscontrol)的簡稱,是基于微軟Windows系統的OLE/COM技術開發的一項應用技術。COM技術提供了一個標準化的平臺,各個設備廠商基于這個平臺開發符合標準化COM接口的PLC產品。OPC技術基于這一平臺,整合各品牌PLC產品COM組件接口,輸出一個標準化數據接口。這樣無論應用程序開發人員使用何種語言,只需要調用這個數據接口,即可訪問到所連接的PLC數據,而不用考慮PLC的品牌,以及底層協議。

標準化的OPC系統包括4個部分:

(1)OPC服務器:為上位機與PLC提供過程數據。

(2)OPC代理占位DLL:為VB或者VBA開發的OPC應用程序提供OPC服務器接口數據格式交換服務。

(3)OPC自動化包裝DLL:提供OPC服務器的自動化接口變換服務。VB或者VBA開發的上位機應用程序需要通過該接口訪問OPC服務器。

(4)OPC應用程序:設計人員使用VB等語言設計的提供給用戶的人機界面程序,含有用戶要求的所有功能。

上述中OPC服務器、OPC占位代理DLL、OPC自動化包裝DLL這三部分是由第三方開發的DLL文件。本文以KEPWARE公司的OPC軟件產品為例,介紹如何編程VB與OPC數據通訊。在KEPWARE中所連接的設備以通道(CHANNEL)的形式描述,每連接一個設備就使用一個CHANNEL,同時每一個CHANNEL對應OPC服務器一個OPC組(下面會介紹到)。在對應的CHANNEL里面設置好通信端口即可。以串口1為例是COM 1,也支持以太網通信。

通過VB訪問OPC服務器主要有三種對象,這三種對象有各自的參數、屬性、方法。

(1)OPC服務器。

(2)OPC組(OPC組集合)。

(3)OPC標簽(OPC標簽集合)。

OPC組、OPC標簽在訪問之前需要在KEPWARE一側建立,并配置好標簽的對應PLC內部地址。下面分步介紹如何編程訪問OPC服務器,以操作PLC數據的。

1 連接OPC服務器

在使用VB編程OPC訪問程序的時候,首先建立OPC服務器名并建立連接。

聲明OPC服務器:

Publicopc_ServerObjAsOPCServer//聲明全局OPC服務器,變量名opc_ServerObj

Setopc_ServerObj=NewOPCServer//建立OPC服務器

連接OPC服務器可以顯式訪問也可以隱式訪問。

連接服務器:

opc_ServerObj.Connect(myOPCInfor.OPC_Server)//隱式訪問,使用myOPCinfor.OPC子過程返回的值作為訪問參數。這樣可以靈活指定所訪問的OPC服務器。

2 添加OPC組

在OPC服務器中OPC組集合是自動包含的,可以使用OPC組集合的Add方法在里面添加OPC組。代碼示例:

Publicopc_G roupObjAsOPCG roup//全局聲明opc_GrouopObj變量作為OPC組屬性

Setopc_G roupObj=opc_ServerObj.OPCG roups.Add(myOPCInfor. OPC_G roup)//添加OPC組名稱,同樣使用隱式訪問,添加的組名稱為變量”myOPCInfor.OPC_G roup”中內容。

SetmyGroup1=opc_ServerObj.OPCG roups.Add("G roup1")//顯式聲明一個名稱為G roup1的OPC組

3 指定OPC標簽集合名稱

在KEPWARE中配置的OPC標簽集合名稱在編程時要一致,OPC組的名稱也要一致,否則無法通訊。下面是使用變量間接指定的例子。代碼示例:myOPCInfor.OPC_Item=myConfig.GetStringValue("OP CInfo","OPCItem","",m_strConfigurationFileName)//同樣通過Land文件當中的“OPCinfo”字段中的“OPCItem”項內容來指定OPC組集合字符串。

4 添加OPC項

OPC項是指定訪問OPC服務器數據的名稱,其通過OPC服務器與PLC相關聯,指向要訪問的PLC某個數據地址。編程OPC服務器之前,先在KEPWAR軟件當中配置好需要訪問的OPC項,將其與PLC內部的某個地址相關聯,軟件中稱為“TAG”。比如:新建項并命名TAG 1,配置地址為D200。那么在設計應用程序訪問地址D 200的數據時,就指定訪問名TAG 1就可以了。但是在使用OPC項之前,先進行添加,取得相應的句柄并妥善保存。如果要對OPC組內大量項標簽進行讀寫操作的時,這個句柄就非常有用。

Fori= 1 To 10

Setopc_ItemObj=opc_G roupObj.OPCItems.Add Item(m yOPCInfor.OPC_ G roup+myOPCInfor.OPC_Item + "TestMax"+CStr(i),1)//在OPC組中的項標簽集合里面添加10個名稱從TestMax(1)到TestMax(10)的OPC項標簽(item)。

Serverhandles(i)=opc_ItemObj.ServerHand le//通過數組取得項標簽的句柄。

Nexti

5 枚舉所有項標簽

在應用程序設計中,如果需要讀寫項集合內的某個項數據,需要取得標簽集合中該項標簽的符號,這就需要用到枚舉方法。就是在標簽集合中進行項標簽枚舉,直到找到指定的的項。

在程序代碼中編寫子過程用以實現枚舉標簽集合中所有的項標簽功能。這個子過程可以作為一個功能塊在所有讀寫項標簽的語句中調用。在調用過程中只需要通過傳值的形式傳遞項標簽標識符,子過程就可以完成查找、返回項符號,進而進行讀寫操作。

代碼示例:

iCount=myGroup1.OPCItems.Count//取得OPC組中所有項的數目。IfiCount>0Then//下面是枚舉過程

For i =1 ToiCount

Set opc_ItemObj = myGroup1.OPCItems.Item(i) //取得每一項標簽的標識符

str = opc_ItemObj.Item ID //中間變量賦值

If (str = strItem)Then // 通過比較中間變量,找到與傳遞過來的項標識符一致的項

Set opc_ItemObj = myGroup1.OPCItems.Item(i) //將找到的項符號賦值給指定變量,該變量用于項標簽的讀寫操作。

gAddItem_PLC = True

End If

Next

End If

返回的項標簽符號存入變量OPC_ItemObj中,可以方便的進行讀寫操作。

代碼示例:

If my PubclsOPC.gAddItem_PLC(myOPCInfor.OPC_Group + myOPCInfor.OPC_Item + "Group1." + strBitItem)=TrueThen//將需要寫入的項標簽標示符(ItemID)傳值的形式傳遞到myPubclsOPC. gAddItem子過程。

opc_ItemObj.Write(True)//返回項標簽符號寫入變量OPC_ItemObj中,使用項標簽的寫方法賦值1(True)。

End If

6 讀寫PLC數據

OPC服務器支持同步與異步的讀寫方式。同步方式是指在應用程序發出讀寫請求之后,直到OPC服務器操作結束后繼續程序執行。異步方式是在應用程序發出讀寫請求之后,應用程序繼續執行,在OPC服務器數據處理結束后,告之應用程序處理完畢。在數據同步性要求不高的情況下兩者區別不大。

同步讀取代碼示例:

iCount = opc_GroupObj.OPCItems.Count //取得OPC組里面的項標簽數目。

If iCount> 0 Then

Call opc_GroupObj.SyncRead(OPCDevice, iCount, Serverhandles, plcVal, MyErrors, myQuality, myTimeStamp) //讀取由數組Serverhandles指定句柄的項標簽,將其內容存放入數組PlcVal里面。

End If

上面的代碼示例適合于批量讀取PLC內部數據,如果需要單獨讀寫某個項標簽的數據,可以使用項標簽的Read與Write方法。

代碼示例:opc_ItemObj.Write (True) //對變量OPC_ItemObj賦值的OPC項標簽進行寫操作。

OPC技術有很高的靈活性,同一OPC應用程序可以集成不同種類的PLC設備。由于基于標準化COM接口技術,在切換不同種類的PLC設備時,上位機的應用程序不需要重新開發,可以直接切換,這也是OPC技術得以廣泛應用的原因之一。本文通過介紹使用VB語言實現上位機程序訪問OPC數據,讓廣大設備開發人員了解OPC技術,使大家認識到使用這項技術可以方便的實現PLC設備上位機通訊。

任強,男,遼寧沈陽人,大專,助理設備工程師,研究方向:電氣設備管理。

猜你喜歡
上位示例應用程序
白描畫禽鳥(九)
一場史無前例的樂隊真人秀
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
特斯拉 風云之老阿姨上位
10秒記憶
飛吧,云寶
高考作文“踮起腳尖”升格示例
三星電子將開設應用程序下載商店
微軟軟件商店開始接受應用程序
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合