我用PCACCESS的OPC方式通过VB6和S7200连接,现在读取数据正常,但向OPC写数据时。有时能正常写入但有时就出现写入错误。不论是同步写还是异步写都会出现。但用西门子提供的例程写时就不出现这种错误。我的程序是在些基础上修改的。我认为和他的不同点是我比他的数据多了一些。一共有300个ITEMS,而且我的写入数据是一次只写一个数据,但地址可变。下面是我写数据的程序。请高手看看怎么解决。谢谢
Public Sub cmdWriteSync_commond(ByVal InputValue As Long, ByVal itemsNumber As Long) '同步写功能
On Error GoTo ErrorHandler
Dim i As Long
Dim Values(1) As Variant
Dim Errors() As Long ' Array for returned Item related errors'
Dim InItemServerHandles(1) As Long
i = 0
InItemServerHandles(1) = MyItemServerHandles(itemsNumber) '把要写的地址itemsNumber的址针MyItemServerHandles(itemsNumber)传给临时变量中
' Initialize the [IN] parameters for the SyncWrite call
' Values -> Values to write
Values(1) = InputValue ' Read Value 1 from Text Box '把要写的值传递给临时变量中
' ItemServerHandles -> Server defined handles from the AddItems call
' Write Values Syncronous
ReCallWrite:
Call MyGroup.SyncWrite(1, InItemServerHandles, Values, Errors) '调用OPC写功能函数
i = i + 1
If i = 3 Then GoTo ErrorHandler '连续3次出错则提示写入失败
' Check Item Errors
If Not Errors(1) = 0 Then GoTo ReCallWrite
'If Not Errors(itemsNumber) = 0 Then MsgBox "Item " + Str$(itemsNumber) + " FAILED. Error Code = " + Str$(Errors(itemsNumber)), vbCritical
Exit Sub
ErrorHandler:
'MsgBox Err.Des cription + Chr(13) + "Writing Items Syncronous", vbCritical, "ERROR"
MsgBox Err.Des cription + Chr(13) + "写入数据错误,请重新输入", vbCritical, "错误"
End Sub