我做了一个VB6.0的程序,连接OPC、读、写,都可以,但是唯独刷新不行。运行起来就是一直提示超下限。
PrivateMyOPCServerASOPCServer
PrivateWithEventsMyOPCGroupAsOPCGroup
PrivateMyOPCItems()AsOPCItem
PrivateSubCommand1_Click()
Dimi,jAsInteger
SetMyOPCServer=NewOPCServer
‘connecttheOPCServer
MyOPCServer.Connect"OPC.SimaticNET"
‘ServerSTate
IfMyOPCServer.ServerState=1Then
Command1.Enabled=False
Command2.Enabled=True
Command3.Enabled=True
Command4.Enabled=True
Else
MsgBox"ConnectionError!"
Command2.Enabled=False
Command3.Enabled=False
Command4.Enabled=False
EndIf
‘addoneOPCGroup
SetMyOPCGroup=MyOPCServer.OPCGroups.Add("Gruppe1")
‘applyforDataChange
MyOPCGroup.IsSubscribed=True
MyOPCGroup.UpdateRate=500
‘addItems
ReDimMyOPCItems(4)
‘SetMyOPCItems(0)=MyOPCGroup.OPCItems.AddItem("s7:[S7connection_1],MB0",1)
‘SetMyOPCItems(1)=MyOPCGroup.OPCItems.AddItem("s7:[S7connection_1],MB1",1)
‘SetMyOPCItems(2)=MyOPCGroup.OPCItems.AddItem("s7:[S7connection_1],MB2",1)
Fori=0To2
SetMyOPCItems(i)=MyOPCGroup.OPCItems.AddItem(Text1(i).Text,1)
Nexti
EndSub
PrivateSubCommand2_Click()
‘disconnecttheOPCServer
CallMyOPCServer.Disconnect
SetMyOPCServer=Nothing
Command2.Enabled=False
Command3.Enabled=False
Command4.Enabled=False
EndSub
问题补充:
还有下半段不让贴
图片说明:
cb03b020cde80f968ad075d0fb2bfa3d
最佳答案
建议使用UBound函数获取一下下标的最大值。
建议参考:
htTP://xue163.com/19990/46083/460831993.html
*******************************************************
Dima()‘定义数组变量
a=Array("x","y","z")’给数组变量赋值,一共三个值,数组下标分别是0,1,2
MsgBoxUBound(a)”获取最大数组下标的值
提问者对于答案的评价:
最后用这个方法还是没作出来,用了西门子的例子,用了NUMITEMS,可以使用,但仅限于3个数字都改变的情况。比如三个数是1,2,3.我把第二个改写为4,然后三个格子变成4,2,3.再读一下,结果是1,4,3.我觉得还是有问题。