S7NetPlus / s7netplus

S7.NET+ -- A .NET library to connect to Siemens Step7 devices
MIT License
1.32k stars 586 forks source link

在给 西门子 s7 - 1200Plc写入数据的时候报错 索引超出了数组界限 #444

Closed weiai-weiai closed 2 years ago

weiai-weiai commented 2 years ago

在给 西门子 s7 - 1200Plc写入数据的时候报错:System.IndexOutOfRangeException:“索引超出了数组界限。” 此异常最初是在此调用堆栈中引发的: S7.Net.Plc.WriteBytesWithASingleRequest(S7.Net.DataType, int, int, byte[], int, int) - 位于 PlcSynchronous.cs

十分抱歉,我并没有排查该问题的能力,如果我的调用有问题,请进行指正,十分感谢。

我的调用方式是: plc.Write("DB20.DBW239", new byte[] { 1 }); 我发现在下面代码中,s7data.Length 的值是12

  private void WriteBytesWithASingleRequest(DataType dataType, int db, int startByteAdr, byte[] value, int dataOffset, int count)
    {
        try
        {
            var dataToSend = BuildWriteBytesPackage(dataType, db, startByteAdr, value, dataOffset, count);
            var s7data = RequestTsdu(dataToSend);

            ValidateResponseCode((ReadWriteErrorCode)s7data[14]);
        }
        catch (Exception exc)
        {
            throw new PlcException(ErrorCode.WriteData, exc);
        }
    }