diff --git a/SCADA/Program/.vs/DataExchange/v15/.suo b/SCADA/Program/.vs/DataExchange/v15/.suo index b135fc5..ee1138c 100644 Binary files a/SCADA/Program/.vs/DataExchange/v15/.suo and b/SCADA/Program/.vs/DataExchange/v15/.suo differ diff --git a/SCADA/Program/.vs/DataExchange/v15/Server/sqlite3/storage.ide b/SCADA/Program/.vs/DataExchange/v15/Server/sqlite3/storage.ide index cbf7e55..4f525f0 100644 Binary files a/SCADA/Program/.vs/DataExchange/v15/Server/sqlite3/storage.ide and b/SCADA/Program/.vs/DataExchange/v15/Server/sqlite3/storage.ide differ diff --git a/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide b/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide index 114c9d0..9f82065 100644 Binary files a/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide and b/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide differ diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index e7d87f1..74b85fa 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -490,7 +490,7 @@ namespace ModbusDriver while (numBytesRead != frameBytes.Length) numBytesRead += _serialPort.Read(frameBytes, numBytesRead, frameBytes.Length - numBytesRead); Array.Copy(frameBytes, 1, data, 0, data.Length); - Thread.Sleep(10); + Thread.Sleep(20); return data; } else diff --git a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs index ce91b08..cdabe91 100644 --- a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs @@ -358,43 +358,13 @@ namespace ModbusDriver _grps.Clear(); } - internal string GetErrorString(byte exception) - { - switch (exception) - { - case Modbus.excIllegalFunction: - return "Constant for ModbusModbus.exception illegal function."; - case Modbus.excIllegalDataAdr: - return "Constant for ModbusModbus.exception illegal data address."; - case Modbus.excIllegalDataVal: - return "Constant for ModbusModbus.exception illegal data value."; - case Modbus.excSlaveDeviceFailure: - return "Constant for ModbusModbus.exception slave device failure."; - case Modbus.excAck: - return "Constant for ModbusModbus.exception acknowledge."; - case Modbus.excSlaveIsBusy: - return "Constant for ModbusModbus.exception slave is busy/booting up."; - case Modbus.excGatePathUnavailable: - return "Constant for ModbusModbus.exception gate path unavailable."; - case Modbus.excExceptionNotConnected: - return "Constant for ModbusModbus.exception not connected."; - case Modbus.excExceptionConnectionLost: - return "Constant for ModbusModbus.exception connection lost."; - case Modbus.excExceptionTimeout: - return "Constant for ModbusModbus.exception response timeout."; - case Modbus.excExceptionOffset: - return "Constant for ModbusModbus.exception wrong offset."; - case Modbus.excSendFailt: - return "Constant for ModbusModbus.exception send failt."; - } - return string.Empty; - } + internal void CallException(int id, byte function, byte exception) { if (tcpSynCl == null) return; if (OnError != null) - OnError(this, new IOErrorEventArgs(GetErrorString(exception))); + OnError(this, new IOErrorEventArgs(Modbus.GetErrorString(exception))); } public byte[] ReadBytes(DeviceAddress address, ushort size) @@ -511,42 +481,49 @@ namespace ModbusDriver public int WriteBits(DeviceAddress address, byte bits) { + if (address.DBNumber != 3) return -1; var data = WriteSingleRegister(address.Area, address.Start, new byte[] { bits }); return data == null ? -1 : 0; } public int WriteInt16(DeviceAddress address, short value) { + if (address.DBNumber != 3) return -1; var data = WriteSingleRegister(address.Area, address.Start, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); return data == null ? -1 : 0; } public int WriteUInt16(DeviceAddress address, ushort value) { + if (address.DBNumber != 3) return -1; var data = WriteSingleRegister(address.Area, address.Start, BitConverter.GetBytes((ushort)IPAddress.HostToNetworkOrder((short)value))); return data == null ? -1 : 0; } public int WriteUInt32(DeviceAddress address, uint value) { + if (address.DBNumber != 3) return -1; var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes((uint)IPAddress.HostToNetworkOrder((int)value))); return data == null ? -1 : 0; } public int WriteInt32(DeviceAddress address, int value) { + if (address.DBNumber != 3) return -1; var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); return data == null ? -1 : 0; } public int WriteFloat(DeviceAddress address, float value) { + if (address.DBNumber != 3) return -1; var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes((int)value)); return data == null ? -1 : 0; } public int WriteString(DeviceAddress address, string str) { + if (address.DBNumber != 3) return -1; var data = WriteMultipleRegister(address.Area, address.Start, Encoding.ASCII.GetBytes(str)); return data == null ? -1 : 0; } diff --git a/SCADA/dll/ModbusDriver.dll b/SCADA/dll/ModbusDriver.dll index e5d498e..6907cbf 100644 Binary files a/SCADA/dll/ModbusDriver.dll and b/SCADA/dll/ModbusDriver.dll differ