用VB開發(fā)OPC客戶端程序的步驟與實現(xiàn)_第1頁
用VB開發(fā)OPC客戶端程序的步驟與實現(xiàn)_第2頁
用VB開發(fā)OPC客戶端程序的步驟與實現(xiàn)_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、用VB開發(fā)OPC客戶端程序的步驟與實現(xiàn)(1) 建立新工程或項目,在“工程”菜單下選擇“引用”,如圖5-3所示。只有 引用OPCDAAuoto. DLL后,在程序中才能創(chuàng)建服務(wù)器對象,然后進行一系列的操作。(2) 在彈出的引用窗口里單擊“瀏覽(B)”按鈕,彈出添加引用窗口,選擇 OPCDAAuoto. DLL 文件。(3) 在引用窗口里的OPC Automation 2. 0前面打鉤,按“確定”按鈕。(4) 定義全局變量,這樣可以在窗體的任何方法的代碼內(nèi)應(yīng)用。變量類型應(yīng)該 指定為對象型。這些對象最好在窗體的通用部分聲明加上“Option Explicit”語 句,表示模塊里的所有變量都需要顯式聲

2、明。由于OPC自動化接口的數(shù)組的索引要 求必須從1開始,而系統(tǒng)默認是從0開始,為了避免錯誤最好在代碼的最初加上"Option Base 1”語句。為了使對象可以處理事件,必須將objTestGrp和 objServer的聲明中加上"WithEvents”語句,表示聲明的對象可以響應(yīng)事件。Option ExplicitOption Base 1Dim WithEvents objServer As OPCServerDim objGroups As OPCGroupsDim WithEvents objTestGrp As OPCGroupDim objltems As OP

3、CItems(5) 連接OPC服務(wù)器和建立OPC組考慮到代碼的可反復(fù)使用性,采用子程序進行編程。Sub Connect(strProgID As String, Optional strNode As String)If objServer Is othing Then'建立一個OPC服務(wù)器對象Set objServer = New OPCServerEnd If服務(wù)器狀態(tài) ServerState 屬性一共有 OPCRunning、OPCFailed、OPCNoconf ig> OPCSuspended、OPCTest 和 OPCDisconnected 六個值,分別表示正在 運

4、行、失敗、沒有配置、暫停、測試和沒有連接六種OPC服務(wù)器當前的狀態(tài)。如果 OPC服務(wù)器沒有連接,我們才執(zhí)行objServer. Connect strProgID, strNode語句。 strProgID就是ProgID, strNode就是用于遠程通信的IP地址。If objServer. ServerState = OPCDisconnected Then'連接OPC服務(wù)器objServer.Connect strProgID, strNodeEnd If在Visual Basic中,通過執(zhí)行一個Set操作實現(xiàn)調(diào)用其它接口的方法。If objGroups Is othing Th

5、en'建立一個OPC組集合Set objGroups = objServer. OPCGroupsEnd IfIf objTestGrp Is Nothing Then'添加一個OPC組Set objTestGrp = objGroupsAdd("Group")End IfEnd Sub(6) 添加OPC標簽對服務(wù)器進行訪問前,必須先在0PC組里添加要訪問的0PC標簽。0PC客戶端 程序要按照用戶指定的標簽或者從組態(tài)文件里讀取需要添加的0PC標簽。Sub AddltemODim strltemIDs(17) As StringDim lClientHandl

6、es (17) As LongDim lErrors () As LongDim I As IntegerIf objTestGrp Is Nothing ThenExit SubEnd IfIf Not objltems Is Nothing ThenIf objltems.Count > 0 ThenExit SubEnd IfEnd If'設(shè)置組活動狀態(tài)。只有處于活動狀態(tài)的OPC才進行定期的數(shù)據(jù)更新。非活 動狀態(tài)的0PC組,除了在接到顯然的數(shù)據(jù)讀寫要求外,并不收集任何數(shù)據(jù)。If mnuSubscribtion. Checked = True ThenobjTestGrpIs

7、Active = TrueElseobjTestGrpIsActive = FalseEnd If'啟動組異步通知。進行訂閱的OPC組可以自動收到從服務(wù)器送來的數(shù)據(jù)變 化通知。objTestGrpIsSubscribed = True'建立OPC項集合Set objltems = objTestGrpOPCItems'生成從TAG1到TAG17的項標識符For I = 1 To 17strItemIDs(I) = "Server.Group.TAG" & IlClientHandles(I)二 INext'添加OPC項Call obj

8、ltemsAddltems(17, strltemIDs, lClientHandles,IServerHandles, lErrors)End Sub(7) 異步讀取代碼的實現(xiàn)在定時器事件內(nèi)進行執(zhí)行AsyncRead子程序的讀取代碼,而在讀取完成事件處 理返回的數(shù)據(jù)訪問結(jié)果。Sub AsyncRead ()Dim lErrors() As LongIf objTestGrp Is Nothing ThenExit SubEnd IfIf objTestGrp OPCItems Count > 0 Then'異步讀取lTransID_Rd = lTransID_Rd + 1obj

9、TestGrpAsyncRead 17, IServerHandles, lErrors, lTransID_Rd,lCancelID_RdEnd IfEnd SubPrivate Sub objTestGrp_AsyncReadComplete( _ByV al TransactionlD As Long, ByV al Numitems As Long, _ClientHandles () As Long, It emV alues () As V ariant, _Qualities () As Long, TimeStamps () As Date, Errors () As Long

10、)Sub在按鈕中執(zhí)行AsyncWrite子程序,完成異步寫的操作。Sub AsyncWrite(nlndex As Integer, ByRef vtltemV alues () As V ariant,ByRef lErrors () As Long)Dim lHandle(l) As LongIf objTestGrp Is Nothing ThenExit SubEnd IfIf objTestGrp OPCItems Count > 0 ThenlHandle (1) = IServerHandles(nlndex)'異步寫入lTransID_Wt 二 1TransID_

11、Wt + 1objTestGrpAsyncWrite 1, lHandle(), vtltemV alues, _lErrors, lTransID_Wt, lCancelID_WtEnd IfEnd Sub(9)斷開OPC服務(wù)器連接著OPC服務(wù)器的OPC客戶應(yīng)用程序,在退出前必須斷開和OPC服務(wù)器的連 接。因為OPC服務(wù)器并不知道OPC客戶應(yīng)用程序的退出。如果不先斷開連接,那么 OPC服務(wù)器使用的計算機資源就不會被釋放。如果這樣的問題反復(fù)發(fā)生,久而久之, 連續(xù)運轉(zhuǎn)的自動控制系統(tǒng)可能會計算機資源漸漸枯竭從而發(fā)生嚴重問題,可以顯式 地把它設(shè)置為"NothingM o Sub Disco

12、nnect ()Dim lErrors() As LongIf Not objltems Is Nothing ThenIf objltems.Count > 0 Thenobjltems. Remove 17, IServerHandles, lErrors '清除 OPC 項End IfSet objltems = othingEnd IfIf ot objTestGrp Is othing ThenobjGroups. Remove "Group"'清除 OPC 組Set objTestGrp = NothingEnd IfIf Not objGroups Is Nothing The

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論