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日 上午7:46
下一篇 2017年6月4日 上午7:46

相关推荐

  • 西门子通信软件 SoftNet

    请问西门子通信软件 SoftNet 6GK1 704 1CW00 3AL0这是干什么用的?是不是可以连接64个PLC 的…

    SIMATIC Net 2017年6月10日
  • modbus疑问?

    最近用CPU226做主站和一称重仪表利用MODBUS RTU协议通讯,可以读出仪表实时数据,但是有一点不是太明白,比如写发送基本格式:地址;功能码;寄存器地址高字节;寄存…

    SIMATIC Net 2017年6月24日
  • 谁有完整的imap软件,我的imap好像只是个SIMATIC iMap STEP 7 AddOn

    谁有完整的imap软件,我的imap好像只是个SIMATIC iMap STEP 7 AddOn 最佳答案 https://support.…

    SIMATIC Net 2017年6月1日
  • 网线下链接在NET上的315DP无法看见

    网线下链接在NET上的315DP看不见东西,只有CP 最佳答案 在PROFINET网络上当然看不到CPU315DP,因为CP343通信模块担负着CPU315DP的PROFINET通…

    SIMATIC Net 2017年6月10日
  • 求大牛指点!!!

    我现在要用一个触摸屏显示一个mpi网络(2个200,一个300,一个400,cp5611)上的组态信息。触摸屏连在200上,想在触摸屏显示个PLC的运行与否,一个组态网络的信息(包…

    SIMATIC Net 2017年6月10日
  • 400冗余系统CP443通讯问题

    412H与单站WINCC通讯。主CPU带的CP443可与操作员通讯,备用CPU带的CP443与操作员通讯不上。备用CP443通讯应该没有问题,可以通过工程师站对备用CPU进行下装。…

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

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

    SIMATIC Net 2017年6月24日
  • 高手救救我

    我在用CP343-1与普通以太网通讯组态时,总是在station configuration editor界面上的IE general一直处于stop…

    SIMATIC Net 2017年6月24日
  • MPI 插头终端电压问题

    为啥至少一个终端必须有5V电压?不明白,请大侠们指教,详细 最佳答案 一个正规的RS-485网络使用终端电阻和偏置电阻。在网络连接线非常短、临时或实验室测试时也可以不使用终端和偏置…

    SIMATIC Net 2017年6月11日
  • 关于西门子Profinet网络通信介质

    各位工程师,请教下Profinet网络通信介质,用普通的工业以太网网线,和西门子标配的Profinet网络介质,两者有多大的区别,是否用普通的工业以太网介质无法满足实时要求。谢谢!…

    SIMATIC Net 2017年6月3日