




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 最簡單的訪問OPC服務(wù)器 在網(wǎng)上搜了很多關(guān)于VB.NET編寫客戶端訪問OPC服務(wù)器的資料,同時也根據(jù)KEPWARE提供的案例源代碼,同時進行研究,最后花了一個星期的時間進行研究,才粗略有了一點頭緒,現(xiàn)共享出來,希望后來的初學(xué)者有所幫助。一 要建一個OPC服務(wù)器1)安裝OPC服務(wù)器軟件,KEPware是大家比較常用的,我使用的是Kepware OPC V4.54。如圖,添加CHANNEL,添加TAG.把Plc的點位添加進去,我建了6個變量(item)。具體添加的方法需要自行去學(xué)習(xí)。我添加的三菱Q系列的PLC,PLC采用以太網(wǎng)通訊的方式,在局部網(wǎng)就可以訪問了。 2)設(shè)置DCOM,這個步驟很重要,
2、具體的設(shè)置方法,網(wǎng)上很多資料,按步驟設(shè)置就可以。我原來按照組態(tài)王提供的方法,總是不成功,后來上了微軟網(wǎng)站,按微軟提供的方法設(shè)置肯定可以成功。 完成了以上兩步,你的電腦就變成OPC服務(wù)器了。二 訪問服務(wù)器1.利用組態(tài)軟件訪問OPC服務(wù)器。如果用組態(tài)王訪問,那就太簡單了,左邊列表,選opc服務(wù)器,點擊添加服務(wù)器,就會彈出一個窗口,把本機的OPC服務(wù)器列成清單。在清單里面就可以發(fā)現(xiàn)KEPSERVER的名稱:KEPware.KEPserverEx.V4,選擇,然后按確定,就完成了添加服務(wù)器。 在組態(tài)王的數(shù)據(jù)詞典,新建變量,I/O變量,連接設(shè)備選擇OPC服務(wù)器,寄存器可以看到KEPserver的變量(i
3、tem),建立之后,就可以利用組網(wǎng)王,開發(fā)監(jiān)控應(yīng)用,組態(tài)軟件的使用在此就不贅述了,總之,利用組態(tài)軟件訪問OPC是最簡單的。2.用VB.NET開發(fā)客戶端訪問 訪問opc服務(wù)器,必須使用OPC基金會提供的OPCdaauto.dll。 學(xué)習(xí)過程,最好下載說明書,OPC_20_Automation_Interface,網(wǎng)上可以下載。1) 注冊O(shè)PCdaauto.dll。 這個動態(tài)連接庫文件可以網(wǎng)上下載。拷貝到C:WINDOWSSYSTEM32目錄, 打開運行輸入框,輸入:regsvr32 C:WINDOWSSYSTEM32OPCDAAUTO.DLL如果是64位windows,則拷貝在C:WINDOWS
4、 syswow64。輸入: regsvr32 C:WINDOWS syswow64OPCDAAUTO.DLL。2) VS2015,新建一個項目。在項目-點擊“添加引用”,使用瀏覽,在COM,可以找到opc da automation的選項,點擊確認(rèn),及完成添加。 添加成功,則資源管理器,應(yīng)用,可以看到OPCautomation的項目。3)編寫程序的過程 最簡單的一個案例,如下圖,實現(xiàn)搜索服務(wù)器,連接服務(wù)器后,獲取ITEM的實時值。A) 查找服務(wù)器點擊“查找服務(wù)器”按鈕,地址不填,則列出本機的OPC服務(wù)器。如果填寫另一臺服務(wù)器地址,則列出另一臺電腦的服務(wù)器清單 如何知道計算機名?看網(wǎng)絡(luò)鄰居,至少
5、你應(yīng)該知道那臺電腦裝了OPC服務(wù)器。 Public Class Form1 Inherits System.Windows.Forms.Form Dim WithEvents AnOPCServer As OPCAutomation.OPCServer '用于搜索服務(wù)器,連接服務(wù)器 Dim WithEvents ConnectedGroup As OPCAutomation.OPCGroup '對應(yīng)后面添加組和項 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Su
6、b '以下程序:搜索OPC服務(wù)器,顯示在列表框上面 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CONNET.Click Try AnOPCServer = New OPCAutomation.OPCServer ListBox1.Items.Clear() Dim AllOPCServers As Object AllOPCServers = AnOPCServer.GetOPCServers(TextBox1.Text) '以括號用
7、文本框輸入,確定OPC服務(wù)器的路徑,空白表示搜索本機,如果搜索內(nèi)部網(wǎng)其他電腦,則寫電腦的名稱,例如:電腦名稱 Dim i As Short For i = LBound(AllOPCServers) To UBound(AllOPCServers) ListBox1.Items.Add(AllOPCServers(i) Next i Catch ex As Exception MessageBox.Show("List OPC servers failed with exception: " + ex.Message, "SimpleOPCInterface Ex
8、ception", MessageBoxButtons.OK) '用于顯示執(zhí)行結(jié)果,如果失敗,則可以顯示失敗的原因。 End Try End SubB) 連接服務(wù)器、添加項和組 代碼如下: Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click '以下程序連接服務(wù)器連接 Try AnOPCServer.Connect(ListBox1.Text, TextBox1.Text) '第一個是參數(shù)是opc服務(wù)器名稱,第二個是電腦名稱。直接填寫也可以,例如:
9、AnOPCServer.Connect(“KEPware.KEPserverEx.V4”,“newPI”) Catch ex As Exception MessageBox.Show("OPC server 連接失敗 : " + ex.Message, "OPCSample", MessageBoxButtons.OK) End Try '以下程序添加group和item Try AnOPCServer.OPCGroups.DefaultGroupIsActive = True '使其活動,照抄就行。 AnOPCServer.OPCGro
10、ups.DefaultGroupDeadband = 0 '照抄就行。 ConnectedGroup = AnOPCServer.OPCGroups.Add("GROUP1") '添加GROUP,名稱自己隨便填。 ConnectedGroup.UpdateRate = 100 '更新速率,我實驗過,值越小,獲取ITEM值越靈敏。 ConnectedGroup.IsSubscribed = True '采用訂閱的方式,后面用DATACHANGE的事件獲取item值,與此對應(yīng)。 ConnectedGroup.OPCItems.AddItem(&q
11、uot;CHANNEL2.DEVICE1.綠燈", 1) ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.產(chǎn)量", 2) ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.黃燈", 3) ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.省電", 4) ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.產(chǎn)量1&quo
12、t;, 5) ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE2.產(chǎn)量", 6) 'ADDITEM和ADDITEMS,兩種命令的格式不同,這里僅用最簡單的additem命令,用最土的辦法添加了6個ITEM,兩個參數(shù),第一個是item名稱,必須和KEPSERVER建立的ITEM完全一致,第二個參數(shù)是CLIENTHANDLES,句柄。6個ITEM,我給的是1-6,隨便數(shù)字都可以,不重復(fù)即可。這個跟后面獲取值有直接關(guān)系! Catch ex As Exception MessageBox.Show("添加組和項失敗
13、: " + ex.Message, "OPCSample", MessageBoxButtons.OK) End Try End SubC)獲取 前面提到的訂閱的方式, 是OPC服務(wù)器主動的方式,把有變化的ITEM,發(fā)送給客戶端。 需要使用DataChange的事件來獲取item值,OPC_20_Automation_Interface58頁。 假設(shè)兩個OPC服務(wù)器有2個item發(fā)生改變(綠燈,產(chǎn)量),那么會返回2個ITEMS, 返回的, 其中ITEMVALUES是返回的ITEM實際值,ClientHandles是返回的句柄值,句柄值和添加ITEM時定義的句柄對應(yīng)
14、。前面添加的"CHANNEL2.DEVICE2.產(chǎn)量",我定義的ClientHandles是6。如果數(shù)值發(fā)生變化,那么服務(wù)器返回的的值也是6。 實際返回值: NumItems=2ClientHandles(1)= 1,ITEMVALUES(1)=true ItemValues(1)=trueClientHandles(2)= 6,ITEMVALUES(2)= 65 ItemValues(2)=65 因為返回的是數(shù)組,那么需要定義一個字符串的數(shù)組去接受ITEM值。 添加事件的方法: 源代碼如下: Private Sub ConnectedGroup_DataChange(Tr
15、ansactionID As Integer, NumItems As Integer, ByRef ClientHandles As Array, ByRef ItemValues As Array, ByRef Qualities As Array, ByRef TimeStamps As Array) Handles ConnectedGroup.DataChange Dim val(10) As String '用于接收ITEM值 Dim I As Integer '用于循環(huán) Dim k As Integer '用于循環(huán)的方式給TEXTBOX賦值,如果是textbox2-TEXTBOX7,有規(guī)律。就可以實現(xiàn) F
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提升紡織品質(zhì)量檢測的能力試題及答案
- 打造職業(yè)競爭力2024國際商業(yè)美術(shù)設(shè)計師試題及答案
- 小學(xué)人文技術(shù)試題及答案
- 安全交通測試題及答案
- 提升廣告設(shè)計師考試通過率的試題
- 教師公招美術(shù)試題及答案
- 助理廣告師考試自我激勵方法與實踐試題及答案
- 煤礦招工測試題及答案
- 干部提職考廉試題及答案
- 2024年紡織行業(yè)新技術(shù)對比分析試題及答案
- 管理干部安全生產(chǎn)培訓(xùn)課件
- 山東藥品食品職業(yè)學(xué)院招聘真題
- 自動涂裝線設(shè)備操作指導(dǎo)書
- 中國血脂管理指南(2023-年版)解讀
- 重視心血管-腎臟-代謝綜合征(CKM)
- CT26-型彈簧操動機構(gòu)
- 區(qū)塊鏈跨境支付的監(jiān)管框架研究
- 獨立顧問聘任制度
- 畜禽生物質(zhì)沼氣發(fā)電項目環(huán)境影響報告
- 正常胃鏡圖片及常見病變課件
- 2023年公路水運交安ABC考試題庫及答案
評論
0/150
提交評論