Để VB kết nối được với PC Access (OPC) bạn phải khai báo các thông số về OPC trong VB, mình không có file hướng dẫn trực tiếp kết nối PC Access, chỉ có tài liệu các hãng khác rồi làm tương tự, vì chuẩn OPC về cơ bản là giống nhau, chỉ khác nhau lúc khai báo tên OPC thôi
Bạn tìm hiểu thêm các lệnh khai báo về OPC trong VB nhé :

'Declare OPC Objects (OPC Server / OPC Group / OPC Item)

Dim WithEvents Myserver As OPCServer
Dim WithEvents Mygroup As OPCGroup
Dim WithEvents Mygroups As OPCGroups
Dim Myitem As OPCItem
Dim Myitems As OPCItems
Dim MyBrowser As OPCBrowser

'Get OPC Server List

Dim Getserver As OPCServer
Dim Servers As Variant
Set Getserver = New OPCServer
Servers = Getserver.GetOPCServers
For i = LBound(Servers) To UBound(Servers)
List1.AddItem Servers(i)
Next i
Set Getserver=Nothing

'Connect and Browse

Set Myserver = New OPCServer
Myserver.Connect ServerName.Text, NodeName.Text
Set MyBrowser = Myserver.CreateBrowser
MyBrowser.ShowBranches
Dim bname As Variant

For Each bname In MyBrowser
ItemList.AddItem "+" & bname
Next name

'Create OPC Group Object and Add Tags

Dim ClientHandles(16) As Long
Dim OPCItemIDs(16) As String
Set Mygroups = Myserver.OPCGroups
Set Mygroup = Mygroups.Add("Group1")
Mygroup.UpdateRate = "1000"
Mygroup.IsActive = False
For i = 1 To 16
ClientHandles(i) = i
OPCItemIDs(i) = "Device1" + ".D" + Format(i)
Next i
Set Myitems = Mygroup.OPCItems
Myitems.AddItems 16, OPCItemIDs, ClientHandles, ItemServerHandles, ItemServerErrors
Mygroup.IsActive = True

'Advise and Callback

Mygroup.IsSubscribed = True
Public Sub Mygroup_DataChange(ByVal TID As Long, _
ByVal NumItems As Long, Chd() As Long, ItemValues() As Variant, _
Qualities() As Long, TimeStamps() As Date)
For i = 1 To NumItems
Debug.print ItemValues(i) + ":" + TimeStamps(i) + _":" + Qualities(i)
Next i
End Sub

'Sync Read/Write and ASync Read/Write

'Sync Read
Mygroup.SyncRead OPCDevice, 16, ItemServerHandles, ItemValues, ItemServerErrors, ItemQualities, ItemTimeStamps
For i = 1 To 16
Debug.print ItemValues(i) + ":" + ItemTimeStamps(i) + ":" + ItemQuality(i)
Next i

'Sync Write
For i = 1 To 16
ItemVal(i) = i
Next i
Mygroup.SyncWrite 16, ItemServerHandles, ItemVal, ItemServerErrors
For i = 1 To 16
If ItemServerErrors(i) <> 0 Then
MsgBox "Write ERROR " + Format(i)
End If
Next i

'Async Read(TransactionID=10, CancelID=11)
Mygroup.AsyncRead 16, ItemServerHandles, ItemServerErrors, 10, 11

Private Sub Mygroup_AsyncReadComplete(ByVal TransactionID As Long, ByVal NumItems As Long, _
ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, _
TimeStamps() As Date, Errors() As Long)
Debug.print "AsyncRead Comp" + Chr$(9) + Time$ + Chr$(13) + Chr$(10)
End Sub

'Async Write
Dim ItemVal(ItemCount) As Variant
For i = 1 To ItemCount
ItemVal(i) = i
Next i
Mygroup.AsyncWrite 16, ItemServerHandles, ItemVal, ItemServerErrors, 100, 101

Private Sub Mygroup_AsyncWriteComplete(ByVal TransactionID As Long, _
ByVal NumItems As Long, ClientHandles() As Long, Errors() As Long)
Debug.print "AsyncWrite Comp" + Chr$(9) + Time$ + Chr$(13) + Chr$(10)
End Sub

'Cache Read

Mygroup.SyncRead OPCCache, 16, ItemServerHandles, ItemValues, ItemServerErrors, ItemQualities, ItemTimeStamps
For i = 1 To 16
Debug.print ItemValues(i) + ":" + ItemTimeStamps(i) + ":" + ItemQuality(i)
Next i


Còn đây là ví dụ của Siemens :

http://support.automation.siemens.co...ard&viewreg=WW