時(shí)間:2015-08-04 15:31:52來(lái)源:馬磊 呂多勇 孫莉
摘要:本文介紹OPC技術(shù)的基本原理,重點(diǎn)論述了以VB6.0為基礎(chǔ)開(kāi)發(fā)OPC客戶(hù)端,通過(guò)OPCServer訪問(wèn)三菱FX1NPLC內(nèi)部多種軟元件的方法。
關(guān)鍵詞:OPC;FX1N;通訊
一引言
隨著工業(yè)生產(chǎn)中自動(dòng)化程度的不斷加深,DCS、PLC和其他智能儀器儀表的應(yīng)用越來(lái)越多。但是,通常來(lái)自不同的廠商的工控產(chǎn)品采用的通訊協(xié)議和通訊方式不同,造成了它們相互之間的通訊非常復(fù)雜。因此我們?cè)谟酶呒?jí)編程語(yǔ)言做HMI(HumanMachineInteface)的時(shí)候不得不把很多的精力放到驅(qū)動(dòng)程序的選擇和通訊協(xié)議的編程中去。如果底層的硬件結(jié)構(gòu)發(fā)生變化,這樣使得HMI的升級(jí)和維護(hù)極其不便。因此,如何方便、有效、可靠、實(shí)時(shí)和高速地從各種自動(dòng)化設(shè)備上取得所需要的各種實(shí)時(shí)數(shù)據(jù)成為我們面前的一大難題。
計(jì)算機(jī)技術(shù)的發(fā)展為解決這個(gè)難題提供了技術(shù)基礎(chǔ)。1996年,一些世界上占領(lǐng)先地位的自動(dòng)化系統(tǒng)和硬件、軟件公司(包括Rockwell,Siemens等)與微軟(Microsoft)緊密合作,成立了OPC基金會(huì),推出了OPC數(shù)據(jù)訪問(wèn)標(biāo)準(zhǔn)版1.0。
二OPC簡(jiǎn)介
OPC是ObjectLinkingandEmbedding(OLE)forProcessControl的縮寫(xiě),由OPC基金會(huì)負(fù)責(zé)OPC規(guī)范的制定和發(fā)布。OPC提出了一套統(tǒng)一的標(biāo)準(zhǔn),采用CLIENT/SERVER模式,針對(duì)硬件設(shè)備的驅(qū)動(dòng)程序由硬件廠商或?qū)iT(mén)的公司完成,提供具有統(tǒng)一OPC接口的SERVER程序,軟件廠商按照OPC標(biāo)準(zhǔn)訪問(wèn)SERVER程序,即可實(shí)現(xiàn)與硬件設(shè)備的通信。
OPC是以O(shè)LE/COM機(jī)制作為應(yīng)用程序的通訊標(biāo)準(zhǔn)。OLE/COM是一種客戶(hù)/服務(wù)器模式,具有語(yǔ)言無(wú)關(guān)性、代碼重用性、易于集成性等優(yōu)點(diǎn)。OPC規(guī)范了接口函數(shù),不管現(xiàn)場(chǎng)設(shè)備以何種形式存在,客戶(hù)都以統(tǒng)一的方式去訪問(wèn),從而保證軟件對(duì)客戶(hù)的透明性,使得用戶(hù)完全從低層的開(kāi)發(fā)中脫離出來(lái)。
應(yīng)用程序與OPC服務(wù)器之間必須有OPC接口,OPC規(guī)范提供了兩套標(biāo)準(zhǔn)接口:Custom標(biāo)準(zhǔn)接口和OLE自動(dòng)化標(biāo)準(zhǔn)接口,如圖2.1所示。通常在系統(tǒng)設(shè)計(jì)中采用OLE自動(dòng)化標(biāo)準(zhǔn)接口。
圖2.1OPC接口
OPC標(biāo)準(zhǔn)規(guī)定了基本OPC對(duì)象有三個(gè):OPCServer、OPCGroup和OPCItem。
圖2.2OPCServer的對(duì)象模型
OPC的數(shù)據(jù)采集方式有三種方式:訂閱,同步和異步。
訂閱方式是OPCServer周期性地掃描緩沖區(qū)的數(shù)據(jù),如果發(fā)現(xiàn)數(shù)據(jù)變化超過(guò)一定的幅度時(shí),則更新數(shù)據(jù)緩沖器,并自動(dòng)通知OPCClient。這樣OPCClient就可以自動(dòng)接到OPCServer送來(lái)的變化通知的訂閱方式數(shù)據(jù)采集(Subscription)。訂閱式數(shù)據(jù)采集方式實(shí)際上也屬于異步讀取方式的一種。
同步方式是OPCServer把按照OPCClient的要求得到的數(shù)據(jù)訪問(wèn)結(jié)果作為方法的參數(shù)返回給OPCClient,OPCClient在結(jié)果被返回之前必須處于等待狀態(tài)。
異步方式是OPCClient向OPCServer的發(fā)出要求后,立即返回,OPCClient隨后可以進(jìn)行其他處理。當(dāng)OPCServer完成數(shù)據(jù)訪問(wèn)時(shí),OPCServer主動(dòng)觸發(fā)OPCClient的異步訪問(wèn)完成事件,將數(shù)據(jù)訪問(wèn)結(jié)果傳送給OPCClient。
通過(guò)以上的介紹可以看出在開(kāi)發(fā)OPCClient程序時(shí),實(shí)現(xiàn)異步方式和訂閱式方式比同步通信復(fù)雜,但OPCClient的請(qǐng)求數(shù)大大減少,有效降低了對(duì)服務(wù)器的重復(fù)訪問(wèn)次數(shù),對(duì)于數(shù)據(jù)量很大時(shí),異步或者訂閱式數(shù)據(jù)采集方式是最適宜的。同步方式適合OPCClient與OPCServer之間的數(shù)據(jù)交換比較少的場(chǎng)合。
本文采用訂閱方式訪問(wèn)OPCServer。
三OPCServer的配置
我們選擇Kepware公司的KepwareEXOPCServer作為OPC服務(wù)器。KepwareEXOPCServer內(nèi)置了三菱的FX系列PLC的驅(qū)動(dòng),我們要首先配置OPC服務(wù)器。
1、運(yùn)行KepwareEXOPCServerOPC,新建一個(gè)“Channl1”。然后再配置“Channel”,接下來(lái)的畫(huà)面中選擇“DeviceDriver”為“MitsubishiFX”,然后再設(shè)置通訊,如圖3.1所示。
圖3.1設(shè)備的選擇和通訊端口的設(shè)置
2、增加一個(gè)Device,命名為“Device1”,“DeviceModel”選擇“FX”。
至此,我們的OPCServer配置完成。為保證我們的設(shè)置正確,請(qǐng)用KepwareExOPCServer自帶的OPCclient(“請(qǐng)單擊工具欄的”)測(cè)試我們的配置是否正確。
四、用VB6.0實(shí)現(xiàn)OPCClient
1、建立新工程,在“工程”菜單下選擇“引用”,如圖4.1所示。選擇“OPCDAAutomationWrapper2.02”。
圖4.1
當(dāng)我們安裝好KepwareEx后,它會(huì)在“引用”中添加一個(gè)“KepwareOPCAutomation2.0”的項(xiàng),它是Kepware公司根據(jù)OPC基金會(huì)發(fā)布的規(guī)范自己開(kāi)發(fā)的自動(dòng)化程序接口。“KepwareOPCAutomation2.0”不僅具有“OPCDAAutomationWrapper2.02”的全部功能,而且由于Kepware公司對(duì)硬件特征比較了解,從而能夠最大限度地挖掘硬件的潛力,全面支持硬件特性,提高驅(qū)動(dòng)程序的性能。但在本例中我們選擇“OPCDAAutomationWrapper2.02”。
2、由于OPC自動(dòng)化接口的數(shù)組的索引要求必須從1開(kāi)始,而系統(tǒng)默認(rèn)是從0開(kāi)始,為了避免錯(cuò)誤要在代碼的最初加上“OptionBase1”語(yǔ)句。為了使對(duì)象可以處理事件,必須將objTestGrp和objServer的聲明中加上“WithEvents”語(yǔ)句,表示聲明的對(duì)象可以響應(yīng)事件。如下
OptionExplicit
OptionBase1
DimWithEventsConnectedOPCserverAsOPCServer’定義OPCServer
DimConnectGroupsAsOPCGroups’定義OPCGroups
DimWithEventsConnectGroupAsOPCGroup’定義OPCGroup
DimOPCItemsAsOPCItems’定義OPCItems
初始化各種OPC對(duì)象
IfConnectedOPCserverIsNothingThen
SetConnectedOPCserver=NewOPCServer‘實(shí)例化OPCServer對(duì)象
ConnectedOPCserver.Connect"KEPware.KEPServerEx.V4"’通過(guò)connection方法連接到
ElseKepwareExOPCServer
ExitSub
EndIf
IfConnectGroupsIsNothingThen
SetConnectGroups=ConnectedOPCserver.OPCGroups‘增加組集合對(duì)象
'ConnectGroups.DefaultGroupIsActive=True
ConnectGroups.DefaultGroupDeadband=0
Else
ExitSub
EndIf
IfConnectGroupIsNothingThen
SetConnectGroup=ConnectGroups.Add("Group1")’增加組對(duì)象
ConnectGroup.UpdateRate=100‘設(shè)置更新周期為100ms
ConnectGroup.DeadBand=0’設(shè)置組的死區(qū)
ConnectGroup.IsActive=True’設(shè)置組為活動(dòng)的
ConnectGroup.IsSubscribed=True‘啟用訂閱方式。它決定DataChange事件是否發(fā)生
Else
ExitSub
EndIf
IfOPCItemsIsNothingThen
SetOPCItems=ConnectGroup.OPCItems‘為組增加標(biāo)簽集合
Else
ExitSub
EndIf
DimiAsInteger
DimDataType(10)AsInteger
Fori=0To9
OPCItemIDs(i+1)="Channel1.Device1.D0"
ClentHangles(i+1)=i
DataType(i+1)=11
Nexti
OPCItemIDs(8)="Channel1.Device1.D8124"‘此名稱(chēng)要與OPCServer中定義的名稱(chēng)相同
DataType(8)=2
OPCItemIDs(9)="Channel1.Device1.T0"
DataType(9)=2
OPCItemIDs(10)="Channel1.Device1.D2"
DataType(10)=3
OPCItems.AddItems10,OPCItemIDs,ClentHangles,ItemServerHandles,ItemServerErrors,DataType’增加
標(biāo)簽
組的DataChange事件的處理
SubConnectGroup_DataChange(ByValTransactionIDAsLong,ByValNumItemsAsLong,ClientHandles()As
Long,ItemValues()AsVariant,Qualities()AsLong,TimeStamps()AsDate)
DimiAsInteger
List1.Clear
Fori=1ToNumItems
List1.AddItemItemValues(i)
Nexti
EndSub
經(jīng)過(guò)簡(jiǎn)單的設(shè)置后,我們可以在圖4.2中看到結(jié)果。
圖4.2
五結(jié)論
OPC技術(shù)的使用,使得工控軟件的設(shè)計(jì)人員從繁瑣的通訊協(xié)議和硬件驅(qū)動(dòng)中解放出來(lái),僅需要一個(gè)OPC接口就可以訪問(wèn)硬件設(shè)備而不需要考慮硬件設(shè)備的提供廠商,可以使他們更專(zhuān)心的進(jìn)行HMI的設(shè)計(jì);同時(shí)降低了硬件廠商的驅(qū)動(dòng)開(kāi)發(fā)成本,是硬件廠商僅提供一個(gè)OPCServer就可以滿(mǎn)足用戶(hù)的各種需求。OPC技術(shù)促進(jìn)了工控領(lǐng)域內(nèi)信息的共享和控制系統(tǒng)的開(kāi)放,為HMI軟件的編寫(xiě)提供了一種新的解決方案和技術(shù)思路。
參考文獻(xiàn)
[1]王棟,VisualBasic6.0程序設(shè)計(jì)實(shí)用教程[M],清華大學(xué)出版社,2003
[2]DataAccessAutomationInterfaceStandardVersion2.02,OPC基金會(huì)
[3]三菱FX系列可編程控制器編程手冊(cè)
[4]詹根基,OPC技術(shù)在列車(chē)上水控制系統(tǒng)中的應(yīng)用研究
作者簡(jiǎn)介:
馬磊(1981.10),女(漢族),山東省濱州市鄒平縣,研究生,講師,從事自動(dòng)化專(zhuān)業(yè)的教學(xué)工作。
標(biāo)簽:
中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>新品發(fā)布:CD300系列總線(xiàn)型伺服驅(qū)動(dòng)器
2024-10-31
2024-10-31
2024-10-31
纖薄之間,化繁為簡(jiǎn)|合信全新simple系...
2024-10-29
2024-10-18
推薦專(zhuān)題
更多>