翻譯|使用教程|編輯:王香|2019-04-15 10:57:20.000|閱讀 969 次
概述:此示例的代碼使用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è)計者可以使用相同的程序代碼,操作不同的硬件裝置,充分達成軟件復(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和添加標簽
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@ke049m.cn