OPC-无法将类型为“System.Int32”的对象强制转换为类型“System.Array”

在用VB.NET编写OPC读写西门子S7400程序时候,碰到图中句柄问题,请问该问题如何解决?

Public Shared MyItemServerHandles2 As System.Array

Private Sub PLC_AsyncWrite(ByVal NumItemsW As Integer, ByRef ItemValuesW() As System.Object, ByRef MyErrors As System.Array)
 Dim lHandle(U_NUMITEMS) As System.Array
        Dim i As Integer
        If MyGroup2 Is Nothing Then
            Exit Sub
        End If
        If MyGroup2.OPCItems.Count > 0 Then
 lTransID_Rd2 = lTransID_Rd2 + 1
 For i = 1 To 30
 lHandle(i) = MyItemServerHandles2(NumItemsW)          
                MyGroup2.AsyncWrite(1, lHandle(i), ItemValuesW,
               MyErrors, lTransID_Rd2, lCancelID_Rd2)
    Next
        End If
    End Sub
我另外定义了一个数组STRBUF或STRBUF(30)测试,尝试过定义成System.array 、string、 integer,来接收MyItemServerHandles2这个System.array内的值,但是没办法获得MyItemServerHandles2内的值,
另外定义的数组或string,都显示Nothing
用MSGBOX(MyItemServerHandles2(I))可以显示出MyItemServerHandles2的值


将   Public Shared MyItemServerHandles2(32) As system.array改为    Public Shared MyItemServerHandles2(32) As Integer
错误提示:无法将类型为"system.int32[*]"的对象强制转换为system.int32[]
另外,我用Asyncread却没问题。

问题补充:
在lHandle(i) = MyItemServerHandles2.GetValue(NumItemsW)中能够获取值,但在MyGroup2.AsyncWrite(1, lHandle, ItemValuesW, MyErrors, lTransID_Rd2, lCancelID_Rd2)报错,System.Runtime.InteropServices.SafeArrayTypeMismatchException”类型的未经处理的异常在 X-RAY_BARCODE.exe 中发生 。其他信息: 指定的数组不属于需要的类型。

最佳答案

你要将整数利用循环语句一个一个加入到数组里才行,直接一个数组不可能直接转化成1个整数,1个整数也不能转化成1个数组。整数只能转化为数组里的某一个数

提问者对于答案的评价:
后来确实通过实例化,运行无错误。但是运行AsyncWrite后,DB1.DBW数据依然无改变,新建的AsyncWriteComplete也无运行及数据反映。请问高人我还有哪里有问题?

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月4日
下一篇 2017年6月4日

相关推荐

  • step7 度plc 5611mpi能读出来5711mpi老是连接不上怎么回事?

    step7 读315-2DP PLC程序,用5611 mpi能读出来,连接没问题,用5711mpi读程序老师连接中断,是5711驱动程序的问题吗? 最…

    SIMATIC Net 2017年6月1日
  • TIA Portal V13与400H TCP/IP 通讯

    第三方是使用TIA Portal V13编程的315-2PN/DP,我方是STEP7编程的414-5H,双方做TCP/IP通讯,需要在NETPRO里组态吗?之前…

    SIMATIC Net 2017年6月4日
  • 关于RS485 repeater

    请教各位关于RS485 中继器,型号6ES7 972-0AA01-0XA0 使用时需要占用一个节点,那么需要在STEP7 硬件组态中进行配置…

    SIMATIC Net 2017年6月24日
  • cp1613卡驱动的问题?谢谢!

    07年配置的cp1613卡,当时装的simatic net版本是200107 v6.0 sp5,现在光盘丢了,请问用simatic net2…

    SIMATIC Net 2017年6月7日
  • PRFINET

    PRFINET  出现问题怎么办?怎么诊断呢? 最佳答案 打开连接,里面也有资料 参考资料:https://support.industry.siemens.c…

    SIMATIC Net 2017年6月1日
  • PC Adapter USB A2驱动安装错误

    我现在又一条6GK1 571-0BA00-0AA0的数据线,在安装驱动时报错!请问各位大侠是什么问题,如何解决 问题补充:我的系统是win 7 图片说明: &n…

    2017年6月5日
  • 如何读取通过modebus传的V0.0~V0.7

    PLC通过modebus传的数据是V0.0~V0.7的开关量,modbus地址是40001,如何将各开关量分离出来?程序如下,如何读取V0.7~V0.7?M0.0~M0.7?MW1…

    SIMATIC Net 2017年6月3日
  • 交换机选型问题

    交换机组成环网结构,请问对交换机的最低要求,已电**换机为例,提供一些型号,X108可不可组成环网,组成环网是不是用网线把几台交换机首尾全部串联起来,要不要设置上面参数,小弟初学轻…

    SIMATIC Net 2017年6月1日
  • 串行通信,TIA portal中怎么连接?

    TIA portal中,网络连接,对于DP和PROFINET,都是在[网络视图]里直接连接,或用通信函数的[连接参数]设置。但串行通信有点特殊了。串行通信模块,在[网络视…

    2017年6月1日
  • DP网干扰问题

    一个DP网,有S7400(主),S7200,S7300,LENZE变频器等,出现瞬间掉网自己又恢复问题,怀疑是干扰,该系统是3相4线制系统,怎么解决? 问题补充:有时2天带1次有时…

    SIMATIC Net 2017年6月24日