From 5c8f6de66788c88f64735836c2a74644dfeb7754 Mon Sep 17 00:00:00 2001 From: Michele Cattafesta Date: Mon, 22 Dec 2014 14:42:29 +0100 Subject: [PATCH] Fixes a bug that couldn't write correctly negative values when writing short or int. Signed-off-by: Michele Cattafesta --- S7.Net/PLC.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/S7.Net/PLC.cs b/S7.Net/PLC.cs index 55e037d..5686552 100644 --- a/S7.Net/PLC.cs +++ b/S7.Net/PLC.cs @@ -593,10 +593,24 @@ namespace S7.Net objValue = Convert.ChangeType(value, typeof(byte)); return Write(DataType.DataBlock, mDB, dbIndex, (byte)objValue); case "DBW": - objValue = Convert.ChangeType(value, typeof(UInt16)); + if (value is short) + { + objValue = ((short)value).ConvertToUshort(); + } + else + { + objValue = Convert.ChangeType(value, typeof(UInt16)); + } return Write(DataType.DataBlock, mDB, dbIndex, (UInt16)objValue); case "DBD": - objValue = Convert.ChangeType(value, typeof(UInt32)); + if (value is int) + { + return Write(DataType.DataBlock, mDB, dbIndex, (Int32)value); + } + else + { + objValue = Convert.ChangeType(value, typeof(UInt32)); + } return Write(DataType.DataBlock, mDB, dbIndex, (UInt32)objValue); case "DBX": mByte = dbIndex;