请教VB程序关于OPC的问题

问题描述:例子是操作2个参数,我改成操作3个参数,结果不行,以下是部分代码
 Private Sub cmdAddItem_Click()
 On Error GoTo ErrorHandler
     Dim i As Long
     Dim ErrorFlag As Boolean
     Dim ItemObj As OPCItem
     Dim ItemIDs(3) As String
     Dim ItemClientHandles(3) As Long
     ReDim MyItemServerHandles(3)
     Dim Errors() As Long             '' Array for returned Item related errors
     ErrorFlag = False
     Set MyItems = MyGroup.OPCItems          '' Get OPCItems Collection Object from MyOPCServer
     ItemIDs(1) = txtItem1.Text   '' Read ItemId 1 from Text Box
     ItemIDs(2) = txtItem2.Text   '' Read ItemId 2 from Text Box
     ItemIDs(3) = txtItem3.Text   '' Read ItemId 2 from Text Box
     ItemClientHandles(1) = 1
     ItemClientHandles(2) = 2
     ItemClientHandles(3) = 3
     Call MyItems.AddItems(3, ItemIDs, ItemClientHandles, MyItemServerHandles, Errors)
     For i = 1 To 3
         If Not Errors(i) = 0 Then
             MsgBox "Item " + Str$(i) + " FAILED. Error Code = " + Str$(Errors(i)), vbCritical
             ErrorFlag = True
         End If
     Next
     If ErrorFlag Then
         Dim RemoveErrors() As Long
         Dim RemoveHandles(1) As Long
         For i = 1 To 3
             If Errors(i) = 0 Then
                 RemoveHandles(1) = MyItemServerHandles(i)
                 Call MyItems.Remove(1, RemoveHandles, RemoveErrors)
             End If
         Next
     Else
         cmdAddItem.Enabled = False
         cmdRemGroup.Enabled = False
         cmdRemItem.Enabled = True
         cmdWriteSync.Enabled = True
         cmdWriteAsync.Enabled = True
         cmdReadSync.Enabled = True
         cmdReadAsync.Enabled = True
     End If
 Exit Sub
 ErrorHandler:
     MsgBox Err.Description + Chr(13) + "Adding Items to the Group", vbCritical, "ERROR"
 End Sub
 

问题补充:
Private Sub cmdReadAsync_Click()
 On Error GoTo ErrorHandler
     Dim i As Long
     Dim Errors() As Long         '' Array for returned Item related errors
     Dim CID As Long                 '' CancelID, servergenerierter Wert, mit dem die Transaktion identifiziert
     MyTID = MyTID + 1   '' Increment Transaction ID
     Call MyGroup.AsyncRead(3, MyItemServerHandles, Errors, MyTID, CID)
     For i = 1 To 3
         If Not Errors(i) = 0 Then MsgBox "Item " + Str$(i) + " FAILED. Error Code = " + Str$(Errors(i)), vbCritical
     Next
 Exit Sub
 ErrorHandler:
     MsgBox Err.Description + Chr(13) + "Reading Items Asyncronous", vbCritical, "ERROR"
 End Sub
 这个是读的程序

最佳答案

大概看了,但没有试.  但这部分应该没有大问题. 问题可能是出在读或写动作上. 

  补充:
  你用的是异步读方式,故检查异步读的AsyncReadComplete事件处理中,是否处理了相应的句柄,参考:
  If (TransactionID = READASYNC_ID) Then
      txtOperation = "AsyncRead"
      For i = 1 To NumItems
        Select Case ClientHandles(i)
          Case ClientHandle(1)
          Case ClientHandle(2)
          Case ClientHandle(3)
               Set Item = MyGroup.OPCItems.GetOPCItem(ServerHandle(3))
         End Select 
  另外,把你的Serverhandle和ClientHandle定义为全局变量
 

提问者对于答案的评价:
多谢

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc358254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午10:22
下一篇 2021年7月5日 上午10:22

相关推荐

  • 两个S7-200之间的port0用两根花线连在一起作用是什么?

    用两根花线,接到S7-200的RS485接口的第三根和第七根,就是两个PLC接口3、7号相接,请问这种方式是不是两个PLC相互通信还是什么?大家有谁做过这方面的连接? 问题补充:说…

    SIMATIC S7-200 2020年11月1日
  • 2个plc输出到一个继电器线圈

    2个独立设备,设备1用欧姆龙cp1h输出点接到一个继电器线圈控制变频器启动,我想让另一个设备2也控制这个变频器,就用这个设备2的s7-200 dc/dc/dc的一个输出点…

    SIMATIC S7-200 2017年6月1日
  • 关于plc通讯

    请问plc的通讯是怎样的?插根线然后再电脑上调试吗,通讯协议是什么线的型号还是说通讯的器件之间的格式呢? 最佳答案 PLC的通讯,包括PLC与电脑之间的通讯、PLC之间的通讯、PL…

    SIMATIC S7-200 2021年7月5日
  • S7-200 以太网

    我用电脑与S7-200进行以太网通讯,直连和交叉的网线都用过了的,就是不行,但是能拼通PLC的IP地址,求教各位了! 问题补充:错误提示如图所示 最佳答案 使用STEP7&nbsp…

    SIMATIC S7-200 2017年11月17日
  • 程序中这个指令的意思

    200PLC中有这样一个程序vw200与-32768相比,如果相等就输出条件。但加一段程序中用v201.0去输出一个线圈,请问这样做在程序中起什么作用啊? 问题补充:程序中用v20…

    SIMATIC S7-200 2017年11月1日
  • s-200在卷筒高速分切机上的应用

    今天在一工厂看到一个高速分切机,每分钟320米,切割纸片为600厘米。用s-200PLC控制,模拟量给定一交流伺服驱动,进行精确切割,可能有编码器测速(本人没有看到编码器),想知道…

    2021年7月5日
  • 200模拟量限制

    现在在触摸屏上输出一数值给AO模块来控制变频器频率,希望输入数值是0–50,但触摸屏上限制不了范围,要在PLC做么做,如INPUT做一个判断 大于50就输出50&nbs…

    SIMATIC S7-200 2020年11月1日
  • 请问这是什么原因?

    这个项目我打开过,然后关机虚拟机,再启动虚拟机后打开就打不开了,请问这是什么原因啊?能恢复吗?谢谢! 图片说明:       最佳答案 是你…

    2021年7月5日
  • 是不是带通讯端口的变频器都可以通过USS协议与s-200通讯

    请问是不是带通讯端口的变频器都可以通过USS协议与s-200通讯 ?S7-200是否能通过USS协议控制汇川变频器(MD300A-T0.7BC带通讯口),从然控制电机的开…

    SIMATIC S7-200 2020年10月31日
  • em241上的电位器是做什么用的

    如题,顺便问一下,PC  ACCESS软件必须和200软件同时安装么? 最佳答案 em241上的电位器是做什么用的—————-设置国家代码的…

    SIMATIC S7-200 2021年7月4日

发表回复

登录后才能评论