Arrays 无法使用s7netplus c从PLC读取带有数组的结构#

Arrays 无法使用s7netplus c从PLC读取带有数组的结构#,arrays,.net,struct,plc,Arrays,.net,Struct,Plc,我正在尝试使用库从西门子S300 PLC读取数据块 我的映射代码结构如下所示 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct CIP_B { public bool Start_Req; public bool Start_Ack; public bool End

我正在尝试使用库从西门子S300 PLC读取数据块

我的映射代码结构如下所示

       [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
       public struct CIP_B
        {

           public bool Start_Req;
           public bool Start_Ack;
           public bool End_Req;
           public bool End_Ack;
           public bool Ended_OK;
           public bool Step_Interupted;
           public bool Value_Changed;
           public Byte CIP_OBJ;
           public Byte CIP_TYPE;
           [MarshalAs(UnmanagedType.U2, SizeConst = 16)]
           public ushort[] VCM_Setpoint;
           public Int16 Step_Num;
           public Int16 changedValue;
            [MarshalAs(UnmanagedType.U1, SizeConst = 10)]
           public Byte[] Spare;
}
我正在使用此命令读取结构

  var res = (CIP_B)_plcClient.ReadStruct(typeof(CIP_B), 71, 0);
我读取了除两个数组之外的所有其他值,上面的命令没有问题,但是这两个数组的结果总是空的

我还尝试创建一个构造函数并初始化那里的所有字段,但仍然得到了相同的结果

有没有可能,我如何读取这两个阵列?

我没有在西门子公司使用C,但在Bechoff公司,阵列必须按
ByValArray
进行编组

现在你说的是
VCM_设定点
是2字节无符号整数,大小为16,听起来很奇怪。下面的工作(16个值的ushort(WORD)数组,对吗?)

在IEC 61131-3环境中,应如下所示:

//C#
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public ushort[] VCM_Setpoint;

//PLC
VCM_Setpoint : ARRAY[0..15] OF WORD;

VCM_Setpoint
是一个单词数组(2个字节),正如您所看到的,我用上面的'UnmanagedType.I2'和
UnmanagedType.H2'尝试了所有选项,结果仍然相同
VCM_设定点
返回为null,而不是一个零数组,只是null。您尝试过BYVALARY吗?如果您这样做了但没有成功,您是否尝试将ArraySubType设置为UnmanagedType.I2或UnmanagedType.H2?PLC中该数组的大小是多少,16?我尝试了
ByValArray
,使用和不使用
UnmanagedType.I2
UnmanagedType.H2
,但仍然返回null。是的,尺寸是16(你可以在图片中看到)哦,是的,我明白了,没有注意到图片。从源代码中,我可以看到struct中不支持该字符串。也许数组也不受支持,因为字符串的工作方式类似于字节数组。很抱歉,我帮不上忙。我查看了源代码的一部分,看起来您是对的,不支持数组。无论如何谢谢你的帮助
//C#
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public ushort[] VCM_Setpoint;

//PLC
VCM_Setpoint : ARRAY[0..15] OF WORD;