elimited = xProfile.GetValue(WatchPoint(nowRunID), "RECDELIMITER")
sTail = xProfile.GetValue(WatchPoint(nowRunID), "RECEND")
Value = Split(msg, sDelimited)
For ii = 0 To UBound(Value) - 1
temp = WatchPointRBegin(nowRunID) + ii
If temp > WatchPointREnd(nowRunID) Then Exit For
WatchDataReadValue(temp - 1) = Value(ii + 1) ''VALUE要从0开始,比ITEM少1,所以减一。 有包头,占去一位,向后延一
Next ii
Else
WatchDataReadValue(WatchPointREnd(nowRunID) - 1) = msg
End If
MyOPCGroupIn.SyncWrite ReadItemIdex, ServerHandlesIn, WatchDataReadValue, ErrorsIn ''数据上传
''记录上次成功执行的时间
xProfile.SetValue WatchPoint(nowRunID), "LASTTIME", nowTime
End Sub
三、OPC连接断开。
OPC客户端连接后要占用服务器资源,所以如果不需要使用OPC时,必须进行OPC连接断开。
断开的
程序相当简单,释放资源即可。如下,
Sub StopClient()
On Error Resume Next
''----------- 释放组和服务器对象
MyOPCGroupColl.RemoveAll
''----------- 与服务器断开连接并且清除
MyOPCServer.Disconnect
Set MyOPCItemCollIn = Nothing
Set MyOPCItemCollOut = Nothing
Set MyOPCGroupIn = Nothing
Set MyOPCGroupOut = Nothing
Set MyOPCGroupColl = Nothing
Set MyOPCServer = Nothing
End Sub
但在实际的使用中发现,频繁的连接与断开,将使服务器的资源被大量的消耗,最终让服务器出错。所以尽量减少无谓的OPC连接与断开。
结语:
OPC的使用是作为一个DCOM在使用,所以OPC客户端可以网络上任一
计算机运行,但你必须配置DCOM的访问权限,如果你不想费神,把服务器与客户端都用相同的用户名与密码登录就成了。如果想配置DCOM,请参看DCOM的配置。
参考
资料:
《WinCC在线帮助》
作者简介:
顾恺,高级
程序员,湖南大学毕业,曾从事过LINUX的内核研究,从事过企业信息化平台的开发,当前从事SCADA的开发,主要将各种不同类型的远程设备通过同一手段进行数据采集,并集成到企业信息化平台中去。喜欢将工作中的一些积累形成文字。