plc-OPC 读取西门子PLC地址只要16个及是否需新建多组GROUP问题

作者:用户 来源:互联网 浏览:481 次 时间:2016-07-20 18:47:47

plc西门子 7300

plc-OPC 读取西门子PLC地址只要16个及是否需新建多组GROUP问题 - 摘要: OPC读取西门子PLC地址只要16个及是否需新建多组GROUP问题用VB.NET编写了一个OPC连接西门子S7400PLC的程序,这两天刚刚能够在MyGroup_AsyncReadComplete内的

问题描述

OPC 读取西门子PLC地址只要16个及是否需新建多组GROUP问题

用VB.NET编写了一个OPC连接西门子S7400 PLC的程序,这两天刚刚能够在MyGroup_AsyncReadComplete内的ItemValues(j)(1))读取S7400 PLC地址DB110.DBW地址数据,我是要读取DBW内1000组数据,,但是发现怎么只能循环读取读取16组DB110.DBW数据,当我将要读取的ITEMVALUES(J)(1)元素剩下从6个减少至三个,显示读取了121组。是否一组数据读取元素是有总的上限?我尝试了新建一个GROUP,但是失败了,也许是我还不知道如何再建一个GROUP,特请教。
程序如下:
MyGroup = MyOPCServer.OPCGroups.Add("OTR") ‘新增GROUP
Call PLC_U_AddItem()
Timer1.Enabled = True
Private Sub PLC_U_AddItem() ‘ 往组里添加元素
For i As Short = 1 To 32
MyOPCItemIDs(i) = "S7:[OTR]DB110,W" & ((i - 1) * 26 + 2) & ",12"
MyOPCItemIsArray(i) = 0
MyClientHandles(i) = i
Next i
MyGroup.OPCItems.AddItems(ItemCount, MyOPCItemIDs, MyClientHandles, MyItemServerHandles, AddItemServerErrors)
Sub PLC_AsyncRead()
MyGroup.AsyncRead(32, MyItemServerHandles, _
MyErrors, lTransID_Rd, lCancelID_Rd)

Private Shared Sub MyGroup_AsyncReadComplete(ByVal TransactionID As Integer, ByVal NumItems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues As System.Object, ByRef Qualities As System.Array, ByRef TimeStamps As System.Array, ByRef Errors As System.Array) Handles MyGroup.AsyncReadComplete
For j = 1 To 999
Label(j).Text = j & Chr(46) &
Chr("&H" & Mid(Hex(ItemValues(j)(1)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(1)), 3, 2)) &
Chr("&H" & Mid(Hex(ItemValues(j)(2)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(2)), 3, 2)) &
Chr("&H" & Mid(Hex(ItemValues(j)(3)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(3)), 3, 2)) &
Chr("&H" & Mid(Hex(ItemValues(j)(4)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(4)), 3, 2)) &
Chr("&H" & Mid(Hex(ItemValues(j)(5)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(5)), 3, 2))
Chr("&H" & Mid(Hex(ItemValues(j)(6)), 1, 2)) & Chr("&H" & Mid(Hex(ItemValues(j)(6)), 3, 2))
原程序太长,以上仅粘贴部分GROUP及添加ADD ITEM元素程序。该段程序中Label(j).Text 本应该显示999组数据,但是最后仅显示16组Label(j).Text。请问是怎么回事?
若需要再添加一组GROUP,及在新的GROUP中添加元素OPCItems.AddItems,程序该怎么写?

解决方案

你用的是什么控件?是不是它本身只是一个演示版限制了group的数量

解决方案二:

opc是公开的标准,先下载一个现成的程序调试下,看看数据本身能否收到。

【云栖快讯】Apache旗下顶级开源盛会 HBasecon Asia 2018将于8月17日在京举行,现场仅600席,免费赠票领取入口  详情请点击
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备

热点导航