


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用VB開發(fā)OPC客戶端程序的步驟與實(shí)現(xiàn)(1) 建立新工程或項(xiàng)目,在“工程”菜單下選擇“引用”,如圖5-3所示。只有 引用OPCDAAuoto. DLL后,在程序中才能創(chuàng)建服務(wù)器對(duì)象,然后進(jìn)行一系列的操作。(2) 在彈出的引用窗口里單擊“瀏覽(B)”按鈕,彈出添加引用窗口,選擇 OPCDAAuoto. DLL 文件。(3) 在引用窗口里的OPC Automation 2. 0前面打鉤,按“確定”按鈕。(4) 定義全局變量,這樣可以在窗體的任何方法的代碼內(nèi)應(yīng)用。變量類型應(yīng)該 指定為對(duì)象型。這些對(duì)象最好在窗體的通用部分聲明加上“Option Explicit”語(yǔ) 句,表示模塊里的所有變量都需要顯式聲
2、明。由于OPC自動(dòng)化接口的數(shù)組的索引要 求必須從1開始,而系統(tǒng)默認(rèn)是從0開始,為了避免錯(cuò)誤最好在代碼的最初加上"Option Base 1”語(yǔ)句。為了使對(duì)象可以處理事件,必須將objTestGrp和 objServer的聲明中加上"WithEvents”語(yǔ)句,表示聲明的對(duì)象可以響應(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ù)使用性,采用子程序進(jìn)行編程。Sub Connect(strProgID As String, Optional strNode As String)If objServer Is othing Then'建立一個(gè)OPC服務(wù)器對(duì)象Set objServer = New OPCServerEnd If服務(wù)器狀態(tài) ServerState 屬性一共有 OPCRunning、OPCFailed、OPCNoconf ig> OPCSuspended、OPCTest 和 OPCDisconnected 六個(gè)值,分別表示正在 運(yùn)
4、行、失敗、沒(méi)有配置、暫停、測(cè)試和沒(méi)有連接六種OPC服務(wù)器當(dāng)前的狀態(tài)。如果 OPC服務(wù)器沒(méi)有連接,我們才執(zhí)行objServer. Connect strProgID, strNode語(yǔ)句。 strProgID就是ProgID, strNode就是用于遠(yuǎn)程通信的IP地址。If objServer. ServerState = OPCDisconnected Then'連接OPC服務(wù)器objServer.Connect strProgID, strNodeEnd If在Visual Basic中,通過(guò)執(zhí)行一個(gè)Set操作實(shí)現(xiàn)調(diào)用其它接口的方法。If objGroups Is othing Th
5、en'建立一個(gè)OPC組集合Set objGroups = objServer. OPCGroupsEnd IfIf objTestGrp Is Nothing Then'添加一個(gè)OPC組Set objTestGrp = objGroupsAdd("Group")End IfEnd Sub(6) 添加OPC標(biāo)簽對(duì)服務(wù)器進(jìn)行訪問(wèn)前,必須先在0PC組里添加要訪問(wèn)的0PC標(biāo)簽。0PC客戶端 程序要按照用戶指定的標(biāo)簽或者從組態(tài)文件里讀取需要添加的0PC標(biāo)簽。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è)置組活動(dòng)狀態(tài)。只有處于活動(dòng)狀態(tài)的OPC才進(jìn)行定期的數(shù)據(jù)更新。非活 動(dòng)狀態(tài)的0PC組,除了在接到顯然的數(shù)據(jù)讀寫要求外,并不收集任何數(shù)據(jù)。If mnuSubscribtion. Checked = True ThenobjTestGrpIs
7、Active = TrueElseobjTestGrpIsActive = FalseEnd If'啟動(dòng)組異步通知。進(jìn)行訂閱的OPC組可以自動(dòng)收到從服務(wù)器送來(lái)的數(shù)據(jù)變 化通知。objTestGrpIsSubscribed = True'建立OPC項(xiàng)集合Set objltems = objTestGrpOPCItems'生成從TAG1到TAG17的項(xiàng)標(biāo)識(shí)符For I = 1 To 17strItemIDs(I) = "Server.Group.TAG" & IlClientHandles(I)二 INext'添加OPC項(xiàng)Call obj
8、ltemsAddltems(17, strltemIDs, lClientHandles,IServerHandles, lErrors)End Sub(7) 異步讀取代碼的實(shí)現(xiàn)在定時(shí)器事件內(nèi)進(jìn)行執(zhí)行AsyncRead子程序的讀取代碼,而在讀取完成事件處 理返回的數(shù)據(jù)訪問(wèn)結(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ù)器的連 接。因?yàn)镺PC服務(wù)器并不知道OPC客戶應(yīng)用程序的退出。如果不先斷開連接,那么 OPC服務(wù)器使用的計(jì)算機(jī)資源就不會(huì)被釋放。如果這樣的問(wèn)題反復(fù)發(fā)生,久而久之, 連續(xù)運(yùn)轉(zhuǎn)的自動(dòng)控制系統(tǒng)可能會(huì)計(jì)算機(jī)資源漸漸枯竭從而發(fā)生嚴(yán)重問(wèn)題,可以顯式 地把它設(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 項(xiàng)End IfSet objltems = othingEnd IfIf ot objTestGrp Is othing ThenobjGroups. Remove "Group"'清除 OPC 組Set objTestGrp = NothingEnd IfIf Not objGroups Is Nothing The
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度公司對(duì)公司知識(shí)產(chǎn)權(quán)質(zhì)押借款協(xié)議
- 2025年度公益基金會(huì)災(zāi)害預(yù)防合作框架
- 億渡數(shù)據(jù):中國(guó)康復(fù)行業(yè)短報(bào)告
- 2025年度影視作品演員出演合同樣本
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用增資擴(kuò)股協(xié)議
- 2025年度快遞配送與快遞網(wǎng)點(diǎn)建設(shè)合同
- 2025年度房產(chǎn)過(guò)戶房地產(chǎn)經(jīng)紀(jì)人服務(wù)協(xié)議
- 2025年度農(nóng)村鄰居土地界限確權(quán)與使用協(xié)議書
- 二零二五年度礦山股份合作協(xié)議書:礦山生態(tài)環(huán)境保護(hù)與修復(fù)
- 2025年度賓館客房客房服務(wù)員培訓(xùn)與勞務(wù)服務(wù)合同
- 《中國(guó)商貿(mào)文化》1.1商業(yè)簡(jiǎn)史
- 向賢明主編馬工程《教育學(xué)原理》第一章-教育及其本課件
- 畢業(yè)設(shè)計(jì)論文-貝類脫殼機(jī)設(shè)計(jì)
- 四川甘孜州州屬事業(yè)單位考調(diào)工作人員【共500題附答案解析】模擬檢測(cè)試卷
- 咳嗽中醫(yī)診治課件
- 商戶撤場(chǎng)退鋪驗(yàn)收單
- 八項(xiàng)規(guī)定學(xué)習(xí)課件
- 《讓孩子成才的秘密》寂靜法師
- 《游戲活動(dòng)對(duì)小班幼兒發(fā)展的影響研究(論文)7000字》
- 《工程電磁場(chǎng)》配套教學(xué)課件
- 病原生物學(xué)-緒論課件
評(píng)論
0/150
提交評(píng)論