Closed weiai-weiai closed 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
plc.Write("DB20.DBW239", new byte[] { 1 });
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); } }
在给 西门子 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