找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
1. 在PC Access中需要设定PG/PC interface,即和S7-200通信的设备,例如CP5611,PC/PPI电缆;以及波特率等。
2. 已经添加的组和条目一般不会显示出来,除非在程序中编写代码做这部分工作;就像打开PC Access看到的测试客户端一样。
3.和问题补充. 注意MicroWin.PLC1.start只是在PC Access中定义的条目的别名,仅限于在PC Access的测试客户端中使用;而在VB中编写客户端程序时,PC Access是不识别MicroWin.PLC1.start的。
楼主需要参考PC Access中的在线帮助-第二章 使用S7-200 PC Access-建立项目一节中项目目标部分关于条目的语法定义。
具体到M0.0,应该定义为2:M0.0,BOOL
其中2为通信地址,M0.0为变量地址,BOOL为数据类型。
楼主可以仔细看一下VB例子的代码。
MyOPCServer.Connect ServerName,
NodeName
Set MyOPCGroupColl =
MyOPCServer.OPCGroups
MyOPCGroupColl.DefaultGroupIsActive =
True
Set MyOPCGroup =
MyOPCGroupColl.Add(GroupName)
Set MyOPCItemColl = MyOPCGroup.OPCItems
进行OPC标签连接
For i = 1 To Num
ClientHandlesl(i) = i
ItemIDs(i) = "DBB" + CStr(i - 1)
初始化OPC连接
MyOPCItemColl.AddItems Num,ItemIDs, ClientHandlesl,ServerHandles,
Errors
Next i
MyOPCGroup.IsSubscribed = True
StatusBar1.Panels(2).Text ="通讯正常"
Exit Sub
ErrorHandler:
StatusBar1.Panels(2).Text = "通讯断开"+ Err.Description
End Sub
3)OPC的标签读取
对OPC标签的读通过MyOPCGroup组的DataChange事件来读取。该事件有多个参数:其中NumItems是指标签改变值的个数,ClientHandles是改变值的标签索引,ItemValues为改变值的数据,即ClientHandles(i)的值是其对应的标签数组的索引,其所对应的OPC标签的值在ItemValues (i)中。刚连接上时,该事件会把所有要求访问的OPC标签值全部读取过来。此后只有数据发生变化时才会触发该事件,也只会传输发生了变化的数据,没有变化的数据则不会出现在本事件的ItemValues中。
Private Sub
MyOPCGroup_DataChange(ByVal
TransactionID As Long, ByVal NumItems AsLong, ClientHandles() As Long,ItemValues() As Variant, Qualities() AsLong, TimeStamps() As Date)
Dim i As Long
Dim j As Integer
Dim c(1 To Num) As Variant
For i = 1 To NumItems / Num
ItemIDsValue(ClientHandles(i)) =ItemValues(i)
c(ClientHandles(i))=
ItemIDsValue(ClientHandles(i))
Next i
End Sub
4)OPC连接断开
OPC客户端连接后要占用服务器资源,所以如果不需要使用OPC时,必须进行OPC连接断开,释放资源。
Private Sub StopClient()
On Error Resume Next
释放组和服务器对象
MyOPCGroupColl.RemoveAll
与服务器断开连接并且清除
MyOPCServer.Disconnect
Set MyOPCItemColl = Nothing
Set MyOPCGroup = Nothing
Set MyOPCGroupColl = Nothing
Set MyOPCServer = Nothing
End Sub
当OPC服务器由于某种原因关闭时会触发ServerShutDown事件。该事件被触发时也要进行OPC连接断开,释放资源。
Private Sub MyOPCServer_ServerShutDown(ByVal Reason As String)
StopClient
StatusBar1.Panels(2).Text = "通讯断
开" + Err.Description
End Sub
希望能帮到你,谢谢!
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!