翻譯|使用教程|編輯:王香|2019-04-15 10:57:20.000|閱讀 942 次
概述:此示例的代碼使用OPC 如果從.NET訪問OPC Server,則需要交換COM和.NET的包裝器。 自動化包裝器(OPCDAAUTO.DLL),因此它幾乎等于VB6.0。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
OPC Server是一套利用微軟的COM/DCOM技術(shù)實現(xiàn)工業(yè)自動化資料獲取的架構(gòu)。OPC Server提供OPC接口,它將與之相連的物理設(shè)備(PLC)的信息值通過接口返回到客戶端應(yīng)用程序。也就是說,客戶端通過這些接口,可以獲得與OPC Server連接的物理設(shè)備的信息。對于集成應(yīng)用程序,只要支持OPC接口,就能輕易訪問物理設(shè)備,而無需相關(guān)的技術(shù)信息。 程序設(shè)計者可以使用相同的程序代碼,操作不同的硬件裝置,充分達(dá)成軟件復(fù)用的目的。
它使用OPC Server引入了簡單的示例程序。此示例的代碼使用OPC 如果從.NET訪問OPC Server,則需要交換COM和.NET的包裝器。 自動化包裝器(OPCDAAUTO.DLL),因此它幾乎等于VB6.0。
Option Explicit Public OpcServer As IOPCServerDisp Public OpcItemMgt As IOPCItemMgtDisp Public OpcItem As IOPCItemDisp Private Const ItemMax = 8 Private Const OPC_DS_CACHE = 1 Private Const OPC_DS_DEVICE = 2 Dim ClientHandles(ItemMax) As Long Dim ServerHandles As Variant Dim bConnect As Boolean
連接到OPC服務(wù)器,創(chuàng)建OPCGroup和添加標(biāo)簽
Private Sub CONNECT_Click() On Error GoTo err_hd Dim i% If bConnect Then CONNECT.Caption = "Connect" Set OpcServer = Nothing Set OpcItemMgt = Nothing Set OpcItem = Nothing bConnect = False READ_Button.Enabled = False WRITE_Button.Enabled = False For i% = ItemName.lbound To ItemName.ubound ItemName(i%).Enabled = True Next i% Exit Sub End If '*** Connect to OPC Server *** Set OpcServer = CreateObject(Form1.ServerName.Text) If TypeName(OpcServer) = TypeName(Nothing) Then Return '*** Add OPCGroup *** Dim UpdateRate As Long Dim ServerHdl As Long UpdateRate = UpdateRateSet.Text Set OpcItemMgt = OpcServer.AddGroup("Group One", True, UpdateRate, 22, 1, 0, ServerHdl, UpdateRate) If TypeName(OpcItemMgt) = TypeName(Nothing) Then Return '*** Add OPCItems *** Dim ItemIDs(ItemMax) As String Dim AccessPaths(ItemMax) As String Dim Active(ItemMax) As Boolean Dim Errors As Variant Dim ItemObjects As Variant Dim DataType(ItemMax) As Variant For i% = 0 To ItemMax - 1 Active(i%) = True ClientHandles(i%) = 22 + i% AccessPaths(i%) = "" ItemIDs(i%) = Form1.ItemName(i%).Text DataType(i%) = 2 Next i% OpcItemMgt.AddItems ItemMax, ItemIDs, Active,ClientHandles, ServerHandles, Errors, ItemObjects, AccessPaths, DataType Set OpcItem = ItemObjects(0) bConnect = True CONNECT.Caption = "DisConnect" READ_Button.Enabled = True WRITE_Button.Enabled = True For i% = ItemName.lbound To ItemName.ubound ItemName(i%).Enabled = False Next i% Exit Sub err_hd: MsgBox "Error connecting" For i% = 0 To ItemMax - 1 Form1.Value(i%) = "Error" Next i% End Sub
緩存讀取
Private Sub READ_Button_Click() Dim ReadValue As Variant Dim pQuality As Variant Dim pTimestamp As Variant Dim Errors As Variant Dim i% Dim io As IOPCSyncIODisp Set io = OpcItemMgt '*** Cache Read *** io.OPCRead OPC_DS_CACHE, ItemMax, ServerHandles, ReadValue, pQuality, pTimestamp, Errors For i% = 0 To ItemMax - 1 Form1.Value(i%) = ReadValue(i%) pTimestamp(i%) = DateAdd("h", 9, pTimestamp(i%)) Form1.Time(i%) = pTimestamp(i%) Form1.Quality(i%) = pQuality(i%) Next i% End Sub
SyncWrite
Private Sub WRITE_Button_Click() Dim WriteValue(ItemMax) As Variant Dim io As IOPCSyncIODisp Dim Errors As Variant Dim i% Set io = OpcItemMgt For i% = 0 To ItemMax - 1 WriteValue(i%) = Form1.Value(i%) Next i% '*** SyncWrite *** io.OPCWrite ItemMax, ServerHandles, WriteValue, Errors End Sub
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn