2017-12-22 Update 1 MatchController
This commit is contained in:
@@ -70,7 +70,7 @@ namespace Modbus.Net.Modbus
|
||||
"Q",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadCoilStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadCoilStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -78,7 +78,7 @@ namespace Modbus.Net.Modbus
|
||||
"M",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadCoilStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadCoilStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -86,7 +86,7 @@ namespace Modbus.Net.Modbus
|
||||
"N",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadCoilStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadCoilStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -94,7 +94,7 @@ namespace Modbus.Net.Modbus
|
||||
"I",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -102,29 +102,29 @@ namespace Modbus.Net.Modbus
|
||||
"S",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
{
|
||||
"IW",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
},
|
||||
{
|
||||
"SW",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
},
|
||||
{
|
||||
"MW",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
},
|
||||
{
|
||||
"NW",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
},
|
||||
{
|
||||
"QW",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
}
|
||||
};
|
||||
WriteFunctionCodeDictionary = new Dictionary<(string, bool), AreaOutputDef>
|
||||
@@ -133,7 +133,7 @@ namespace Modbus.Net.Modbus
|
||||
("Q", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -141,7 +141,7 @@ namespace Modbus.Net.Modbus
|
||||
("M", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -149,7 +149,7 @@ namespace Modbus.Net.Modbus
|
||||
("N", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -157,7 +157,7 @@ namespace Modbus.Net.Modbus
|
||||
("MW", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -165,7 +165,7 @@ namespace Modbus.Net.Modbus
|
||||
("NW", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -173,7 +173,7 @@ namespace Modbus.Net.Modbus
|
||||
("QW", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -181,7 +181,7 @@ namespace Modbus.Net.Modbus
|
||||
("Q", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -189,7 +189,7 @@ namespace Modbus.Net.Modbus
|
||||
("M", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -197,7 +197,7 @@ namespace Modbus.Net.Modbus
|
||||
("N", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -205,7 +205,7 @@ namespace Modbus.Net.Modbus
|
||||
("MW", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -213,7 +213,7 @@ namespace Modbus.Net.Modbus
|
||||
("NW", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -221,7 +221,7 @@ namespace Modbus.Net.Modbus
|
||||
("QW", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
}
|
||||
@@ -306,7 +306,7 @@ namespace Modbus.Net.Modbus
|
||||
"0X",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadCoilStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadCoilStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -314,17 +314,17 @@ namespace Modbus.Net.Modbus
|
||||
"1X",
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputStatus,
|
||||
Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputStatus,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
{
|
||||
"3X",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadInputRegister, AreaWidth = 2}
|
||||
},
|
||||
{
|
||||
"4X",
|
||||
new AreaOutputDef {Code = (int) ModbusProtocalReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
new AreaOutputDef {Code = (int) ModbusProtocolReadDataFunctionCode.ReadHoldRegister, AreaWidth = 2}
|
||||
}
|
||||
};
|
||||
WriteFunctionCodeDictionary = new Dictionary<(string, bool), AreaOutputDef>
|
||||
@@ -333,7 +333,7 @@ namespace Modbus.Net.Modbus
|
||||
("0X", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -341,7 +341,7 @@ namespace Modbus.Net.Modbus
|
||||
("4X", false),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteMultiRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteMultiRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
},
|
||||
@@ -349,7 +349,7 @@ namespace Modbus.Net.Modbus
|
||||
("0X", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleCoil,
|
||||
AreaWidth = 0.125
|
||||
}
|
||||
},
|
||||
@@ -357,7 +357,7 @@ namespace Modbus.Net.Modbus
|
||||
("4X", true),
|
||||
new AreaOutputDef
|
||||
{
|
||||
Code = (int) ModbusProtocalWriteDataFunctionCode.WriteSingleRegister,
|
||||
Code = (int) ModbusProtocolWriteDataFunctionCode.WriteSingleRegister,
|
||||
AreaWidth = 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Ascii码协议
|
||||
/// </summary>
|
||||
public class ModbusAsciiInTcpProtocal : ModbusProtocal
|
||||
public class ModbusAsciiInTcpProtocol : ModbusProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -13,7 +13,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusAsciiInTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusAsciiInTcpProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -25,10 +25,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusAsciiInTcpProtocal(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusAsciiInTcpProtocol(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusAsciiInTcpProtocalLinker(ip, slaveAddress);
|
||||
ProtocolLinker = new ModbusAsciiInTcpProtocolLinker(ip, slaveAddress);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -39,10 +39,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusAsciiInTcpProtocal(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusAsciiInTcpProtocol(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip, port);
|
||||
ProtocolLinker = new ModbusTcpProtocolLinker(ip, port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,13 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Ascii码协议连接器Tcp透传
|
||||
/// </summary>
|
||||
public class ModbusAsciiInTcpProtocalLinker : TcpProtocalLinker
|
||||
public class ModbusAsciiInTcpProtocolLinker : TcpProtocolLinker
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="ip">IP地址</param>
|
||||
public ModbusAsciiInTcpProtocalLinker(string ip)
|
||||
public ModbusAsciiInTcpProtocolLinker(string ip)
|
||||
: base(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"] ?? "502"))
|
||||
{
|
||||
}
|
||||
@@ -22,10 +22,10 @@ namespace Modbus.Net.Modbus
|
||||
/// </summary>
|
||||
/// <param name="ip">ip地址</param>
|
||||
/// <param name="port">端口号</param>
|
||||
public ModbusAsciiInTcpProtocalLinker(string ip, int port)
|
||||
public ModbusAsciiInTcpProtocolLinker(string ip, int port)
|
||||
: base(ip, port)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FIFOController(500));
|
||||
((BaseConnector)BaseConnector).AddController(new FifoController(500));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -35,15 +35,15 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>校验是否正确</returns>
|
||||
public override bool? CheckRight(byte[] content)
|
||||
{
|
||||
//ProtocalLinker不会返回null
|
||||
//ProtocolLinker不会返回null
|
||||
if (!base.CheckRight(content).Value) return false;
|
||||
//CRC校验失败
|
||||
var contentString = Encoding.ASCII.GetString(content);
|
||||
if (!Crc16.GetInstance().LrcEfficacy(contentString))
|
||||
throw new ModbusProtocalErrorException(501);
|
||||
throw new ModbusProtocolErrorException(501);
|
||||
//Modbus协议错误
|
||||
if (byte.Parse(contentString.Substring(3, 2)) > 127)
|
||||
throw new ModbusProtocalErrorException(byte.Parse(contentString.Substring(5, 2)));
|
||||
throw new ModbusProtocolErrorException(byte.Parse(contentString.Substring(5, 2)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Ascii码协议
|
||||
/// </summary>
|
||||
public class ModbusAsciiProtocal : ModbusProtocal
|
||||
public class ModbusAsciiProtocol : ModbusProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -13,7 +13,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusAsciiProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusAsciiProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: this(ConfigurationManager.AppSettings["COM"], slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -25,10 +25,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusAsciiProtocal(string com, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusAsciiProtocol(string com, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusAsciiProtocalLinker(com, slaveAddress);
|
||||
ProtocolLinker = new ModbusAsciiProtocolLinker(com, slaveAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.IO.Ports;
|
||||
using System.Collections.Generic;
|
||||
using System.IO.Ports;
|
||||
using System.Text;
|
||||
|
||||
namespace Modbus.Net.Modbus
|
||||
@@ -6,17 +7,17 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Ascii码协议连接器
|
||||
/// </summary>
|
||||
public class ModbusAsciiProtocalLinker : ComProtocalLinker
|
||||
public class ModbusAsciiProtocolLinker : ComProtocolLinker
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="com">串口地址</param>
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
public ModbusAsciiProtocalLinker(string com, int slaveAddress)
|
||||
public ModbusAsciiProtocolLinker(string com, int slaveAddress)
|
||||
: base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FIFOController(500));
|
||||
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<int>[] { new List<int> { 0, 1 }}, 500));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -26,15 +27,15 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>校验是否正确</returns>
|
||||
public override bool? CheckRight(byte[] content)
|
||||
{
|
||||
//ProtocalLinker不会返回null
|
||||
//ProtocolLinker不会返回null
|
||||
if (!base.CheckRight(content).Value) return false;
|
||||
//CRC校验失败
|
||||
var contentString = Encoding.ASCII.GetString(content);
|
||||
if (!Crc16.GetInstance().LrcEfficacy(contentString))
|
||||
throw new ModbusProtocalErrorException(501);
|
||||
throw new ModbusProtocolErrorException(501);
|
||||
//Modbus协议错误
|
||||
if (byte.Parse(contentString.Substring(3, 2)) > 127)
|
||||
throw new ModbusProtocalErrorException(byte.Parse(contentString.Substring(5, 2)));
|
||||
throw new ModbusProtocolErrorException(byte.Parse(contentString.Substring(5, 2)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 变量功能码
|
||||
/// </summary>
|
||||
internal enum ModbusProtocalVariableFunctionCode : byte
|
||||
internal enum ModbusProtocolVariableFunctionCode : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// 读变量
|
||||
@@ -23,7 +23,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 跟时间有关的功能码
|
||||
/// </summary>
|
||||
public enum ModbusProtocalTimeFunctionCode : byte
|
||||
public enum ModbusProtocolTimeFunctionCode : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// 读时间
|
||||
@@ -39,7 +39,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 跟读数据有关的功能码
|
||||
/// </summary>
|
||||
public enum ModbusProtocalReadDataFunctionCode : byte
|
||||
public enum ModbusProtocolReadDataFunctionCode : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// 读线圈
|
||||
@@ -65,7 +65,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 跟写数据有关的功能码
|
||||
/// </summary>
|
||||
internal enum ModbusProtocalWriteDataFunctionCode : byte
|
||||
internal enum ModbusProtocolWriteDataFunctionCode : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// 写单个线圈
|
||||
@@ -91,7 +91,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus协议
|
||||
/// </summary>
|
||||
public abstract class ModbusProtocal : BaseProtocal
|
||||
public abstract class ModbusProtocol : BaseProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -99,7 +99,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站地址</param>
|
||||
/// <param name="masterAddress">主站地址</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
protected ModbusProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
protected ModbusProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -110,7 +110,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>是否连接成功</returns>
|
||||
public override async Task<bool> ConnectAsync()
|
||||
{
|
||||
return await ProtocalLinker.ConnectAsync();
|
||||
return await ProtocolLinker.ConnectAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 读数据协议
|
||||
/// </summary>
|
||||
public class ReadDataModbusProtocal : ProtocalUnit
|
||||
public class ReadDataModbusProtocol : ProtocolUnit
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化
|
||||
@@ -343,7 +343,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 写多个寄存器协议
|
||||
/// </summary>
|
||||
public class WriteDataModbusProtocal : ProtocalUnit
|
||||
public class WriteDataModbusProtocol : ProtocolUnit
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化
|
||||
@@ -398,7 +398,7 @@ namespace Modbus.Net.Modbus
|
||||
StartAddress = (ushort) translateAddress.Address;
|
||||
int a = 0, b = 0;
|
||||
var writeByteValue =
|
||||
FunctionCode == (byte) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil
|
||||
FunctionCode == (byte) ModbusProtocolWriteDataFunctionCode.WriteSingleCoil
|
||||
? ((bool) writeValue
|
||||
? new byte[] {0xFF, 0x00}
|
||||
: new byte[] {0x00, 0x00})
|
||||
@@ -473,7 +473,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 写多个寄存器协议
|
||||
/// </summary>
|
||||
public class WriteSingleDataModbusProtocal : ProtocalUnit
|
||||
public class WriteSingleDataModbusProtocol : ProtocolUnit
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化
|
||||
@@ -501,7 +501,7 @@ namespace Modbus.Net.Modbus
|
||||
var functionCode = ValueHelper.GetInstance(Endian).GetByte(messageBytes, ref flag);
|
||||
var startAddress = ValueHelper.GetInstance(Endian).GetUShort(messageBytes, ref flag);
|
||||
var writeValue = ValueHelper.GetInstance(Endian).GetUShort(messageBytes, ref flag);
|
||||
var returnValue = functionCode == (byte)ModbusProtocalWriteDataFunctionCode.WriteSingleCoil
|
||||
var returnValue = functionCode == (byte)ModbusProtocolWriteDataFunctionCode.WriteSingleCoil
|
||||
? (object)(writeValue == 0xFF00) : writeValue;
|
||||
return new WriteSingleDataModbusOutputStruct(slaveAddress, functionCode, startAddress,
|
||||
returnValue);
|
||||
@@ -524,7 +524,7 @@ namespace Modbus.Net.Modbus
|
||||
public GetSystemTimeModbusInputStruct(byte slaveAddress)
|
||||
{
|
||||
SlaveAddress = slaveAddress;
|
||||
FunctionCode = (byte) ModbusProtocalTimeFunctionCode.GetSystemTime;
|
||||
FunctionCode = (byte) ModbusProtocolTimeFunctionCode.GetSystemTime;
|
||||
StartAddress = 30000;
|
||||
GetCount = 5;
|
||||
}
|
||||
@@ -602,7 +602,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 读系统时间协议
|
||||
/// </summary>
|
||||
public class GetSystemTimeModbusProtocal : ProtocalUnit
|
||||
public class GetSystemTimeModbusProtocol : ProtocolUnit
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化
|
||||
@@ -656,7 +656,7 @@ namespace Modbus.Net.Modbus
|
||||
public SetSystemTimeModbusInputStruct(byte slaveAddress, DateTime time)
|
||||
{
|
||||
SlaveAddress = slaveAddress;
|
||||
FunctionCode = (byte) ModbusProtocalTimeFunctionCode.SetSystemTime;
|
||||
FunctionCode = (byte) ModbusProtocolTimeFunctionCode.SetSystemTime;
|
||||
StartAddress = 30000;
|
||||
WriteCount = 5;
|
||||
WriteByteCount = 10;
|
||||
@@ -775,7 +775,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// 写系统时间协议
|
||||
/// </summary>
|
||||
public class SetSystemTimeModbusProtocal : ProtocalUnit
|
||||
public class SetSystemTimeModbusProtocol : ProtocolUnit
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化
|
||||
@@ -812,9 +812,9 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus协议错误表
|
||||
/// </summary>
|
||||
public class ModbusProtocalErrorException : ProtocalErrorException
|
||||
public class ModbusProtocolErrorException : ProtocolErrorException
|
||||
{
|
||||
private static readonly Dictionary<int, string> ProtocalErrorDictionary = new Dictionary<int, string>
|
||||
private static readonly Dictionary<int, string> ProtocolErrorDictionary = new Dictionary<int, string>
|
||||
{
|
||||
{1, "ILLEGAL_FUNCTION"},
|
||||
{2, "ILLEGAL_DATA_ACCESS"},
|
||||
@@ -830,8 +830,8 @@ namespace Modbus.Net.Modbus
|
||||
/// Modbus错误
|
||||
/// </summary>
|
||||
/// <param name="messageNumber">Modbus错误号</param>
|
||||
public ModbusProtocalErrorException(int messageNumber)
|
||||
: base(ProtocalErrorDictionary[messageNumber])
|
||||
public ModbusProtocolErrorException(int messageNumber)
|
||||
: base(ProtocolErrorDictionary[messageNumber])
|
||||
{
|
||||
ErrorMessageNumber = messageNumber;
|
||||
}
|
||||
@@ -5,12 +5,12 @@ using System.Text;
|
||||
|
||||
namespace Modbus.Net.Modbus
|
||||
{
|
||||
public class ModbusRtuInTcpProtocalLinkerBytesExtend : ModbusRtuProtocalLinkerBytesExtend
|
||||
public class ModbusRtuInTcpProtocolLinkerBytesExtend : ModbusRtuProtocolLinkerBytesExtend
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class ModbusAsciiInTcpProtocalLinkerBytesExtend : ModbusAsciiProtocalLinkerBytesExtend
|
||||
public class ModbusAsciiInTcpProtocolLinkerBytesExtend : ModbusAsciiProtocolLinkerBytesExtend
|
||||
{
|
||||
|
||||
}
|
||||
@@ -18,7 +18,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Tcp协议字节伸缩
|
||||
/// </summary>
|
||||
public class ModbusTcpProtocalLinkerBytesExtend : IProtocalLinkerBytesExtend
|
||||
public class ModbusTcpProtocolLinkerBytesExtend : IProtocolLinkerBytesExtend
|
||||
{
|
||||
/// <summary>
|
||||
/// 协议扩展,协议内容发送前调用
|
||||
@@ -54,7 +54,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Rtu协议字节伸缩
|
||||
/// </summary>
|
||||
public class ModbusRtuProtocalLinkerBytesExtend : IProtocalLinkerBytesExtend
|
||||
public class ModbusRtuProtocolLinkerBytesExtend : IProtocolLinkerBytesExtend
|
||||
{
|
||||
/// <summary>
|
||||
/// 协议扩展,协议内容发送前调用
|
||||
@@ -89,7 +89,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Ascii协议字节伸缩
|
||||
/// </summary>
|
||||
public class ModbusAsciiProtocalLinkerBytesExtend : IProtocalLinkerBytesExtend
|
||||
public class ModbusAsciiProtocolLinkerBytesExtend : IProtocolLinkerBytesExtend
|
||||
{
|
||||
/// <summary>
|
||||
/// 协议扩展,协议内容发送前调用
|
||||
@@ -6,7 +6,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Rtu协议tcp透传
|
||||
/// </summary>
|
||||
public class ModbusRtuInTcpProtocal : ModbusProtocal
|
||||
public class ModbusRtuInTcpProtocol : ModbusProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -14,7 +14,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusRtuInTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusRtuInTcpProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -26,10 +26,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusRtuInTcpProtocal(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusRtuInTcpProtocol(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip);
|
||||
ProtocolLinker = new ModbusTcpProtocolLinker(ip);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -39,10 +39,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusRtuInTcpProtocal(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusRtuInTcpProtocol(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusRtuInTcpProtocalLinker(ip, port);
|
||||
ProtocolLinker = new ModbusRtuInTcpProtocolLinker(ip, port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,13 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Rtu协议连接器
|
||||
/// </summary>
|
||||
public class ModbusRtuInTcpProtocalLinker : TcpProtocalLinker
|
||||
public class ModbusRtuInTcpProtocolLinker : TcpProtocolLinker
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="ip">IP地址</param>
|
||||
public ModbusRtuInTcpProtocalLinker(string ip)
|
||||
public ModbusRtuInTcpProtocolLinker(string ip)
|
||||
: base(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"] ?? "502"))
|
||||
{
|
||||
}
|
||||
@@ -21,10 +21,10 @@ namespace Modbus.Net.Modbus
|
||||
/// </summary>
|
||||
/// <param name="ip">IP地址</param>
|
||||
/// <param name="port">端口号</param>
|
||||
public ModbusRtuInTcpProtocalLinker(string ip, int port)
|
||||
public ModbusRtuInTcpProtocolLinker(string ip, int port)
|
||||
: base(ip, port)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FIFOController(500));
|
||||
((BaseConnector)BaseConnector).AddController(new FifoController(500));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -34,14 +34,14 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>数据是否正确</returns>
|
||||
public override bool? CheckRight(byte[] content)
|
||||
{
|
||||
//ProtocalLinker的CheckRight不会返回null
|
||||
//ProtocolLinker的CheckRight不会返回null
|
||||
if (!base.CheckRight(content).Value) return false;
|
||||
//CRC校验失败
|
||||
if (!Crc16.GetInstance().CrcEfficacy(content))
|
||||
throw new ModbusProtocalErrorException(501);
|
||||
throw new ModbusProtocolErrorException(501);
|
||||
//Modbus协议错误
|
||||
if (content[1] > 127)
|
||||
throw new ModbusProtocalErrorException(content[2]);
|
||||
throw new ModbusProtocolErrorException(content[2]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Rtu协议
|
||||
/// </summary>
|
||||
public class ModbusRtuProtocal : ModbusProtocal
|
||||
public class ModbusRtuProtocol : ModbusProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -13,7 +13,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusRtuProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusRtuProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: this(ConfigurationManager.AppSettings["COM"], slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -25,10 +25,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusRtuProtocal(string com, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusRtuProtocol(string com, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusRtuProtocalLinker(com, slaveAddress);
|
||||
ProtocolLinker = new ModbusRtuProtocolLinker(com, slaveAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,22 @@
|
||||
using System.IO.Ports;
|
||||
using System.Collections.Generic;
|
||||
using System.IO.Ports;
|
||||
|
||||
namespace Modbus.Net.Modbus
|
||||
{
|
||||
/// <summary>
|
||||
/// Modbus/Rtu协议连接器
|
||||
/// </summary>
|
||||
public class ModbusRtuProtocalLinker : ComProtocalLinker
|
||||
public class ModbusRtuProtocolLinker : ComProtocolLinker
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="com">串口地址</param>
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
public ModbusRtuProtocalLinker(string com, int slaveAddress)
|
||||
public ModbusRtuProtocolLinker(string com, int slaveAddress)
|
||||
: base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FIFOController(500));
|
||||
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<int>[]{new List<int>{0}}, 500));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -25,14 +26,14 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>数据是否正确</returns>
|
||||
public override bool? CheckRight(byte[] content)
|
||||
{
|
||||
//ProtocalLinker的CheckRight不会返回null
|
||||
//ProtocolLinker的CheckRight不会返回null
|
||||
if (!base.CheckRight(content).Value) return false;
|
||||
//CRC校验失败
|
||||
if (!Crc16.GetInstance().CrcEfficacy(content))
|
||||
throw new ModbusProtocalErrorException(501);
|
||||
throw new ModbusProtocolErrorException(501);
|
||||
//Modbus协议错误
|
||||
if (content[1] > 127)
|
||||
throw new ModbusProtocalErrorException(content[2]);
|
||||
throw new ModbusProtocolErrorException(content[2]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Tcp协议
|
||||
/// </summary>
|
||||
public class ModbusTcpProtocal : ModbusProtocal
|
||||
public class ModbusTcpProtocol : ModbusProtocol
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
@@ -13,7 +13,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusTcpProtocol(byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian)
|
||||
{
|
||||
}
|
||||
@@ -25,10 +25,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusTcpProtocal(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusTcpProtocol(string ip, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip);
|
||||
ProtocolLinker = new ModbusTcpProtocolLinker(ip);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -39,10 +39,10 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
/// <param name="masterAddress">主站号</param>
|
||||
/// <param name="endian">端格式</param>
|
||||
public ModbusTcpProtocal(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
public ModbusTcpProtocol(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian)
|
||||
: base(slaveAddress, masterAddress, endian)
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip, port);
|
||||
ProtocolLinker = new ModbusTcpProtocolLinker(ip, port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,13 @@ namespace Modbus.Net.Modbus
|
||||
/// <summary>
|
||||
/// Modbus/Tcp协议连接器
|
||||
/// </summary>
|
||||
public class ModbusTcpProtocalLinker : TcpProtocalLinker
|
||||
public class ModbusTcpProtocolLinker : TcpProtocolLinker
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="ip">IP地址</param>
|
||||
public ModbusTcpProtocalLinker(string ip)
|
||||
public ModbusTcpProtocolLinker(string ip)
|
||||
: this(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"] ?? "502"))
|
||||
{
|
||||
}
|
||||
@@ -21,9 +21,9 @@ namespace Modbus.Net.Modbus
|
||||
/// </summary>
|
||||
/// <param name="ip">IP地址</param>
|
||||
/// <param name="port">端口</param>
|
||||
public ModbusTcpProtocalLinker(string ip, int port) : base(ip, port)
|
||||
public ModbusTcpProtocolLinker(string ip, int port) : base(ip, port)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FIFOController(500));
|
||||
((BaseConnector)BaseConnector).AddController(new FifoController(500));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -33,14 +33,14 @@ namespace Modbus.Net.Modbus
|
||||
/// <returns>数据是否正确</returns>
|
||||
public override bool? CheckRight(byte[] content)
|
||||
{
|
||||
//ProtocalLinker的CheckRight不会返回null
|
||||
//ProtocolLinker的CheckRight不会返回null
|
||||
if (!base.CheckRight(content).Value) return false;
|
||||
//长度校验失败
|
||||
if (content[5] != content.Length - 6)
|
||||
throw new ModbusProtocalErrorException(500);
|
||||
throw new ModbusProtocolErrorException(500);
|
||||
//Modbus协议错误
|
||||
if (content[7] > 127)
|
||||
throw new ModbusProtocalErrorException(content[2] > 0 ? content[2] : content[8]);
|
||||
throw new ModbusProtocolErrorException(content[2] > 0 ? content[2] : content[8]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -145,18 +145,18 @@ namespace Modbus.Net.Modbus
|
||||
case ModbusType.Rtu:
|
||||
{
|
||||
Wrapper = ConnectionString == null
|
||||
? new ModbusRtuProtocal(SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusRtuProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian);
|
||||
? new ModbusRtuProtocol(SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusRtuProtocol(ConnectionString, SlaveAddress, MasterAddress, Endian);
|
||||
break;
|
||||
}
|
||||
//Tcp协议
|
||||
case ModbusType.Tcp:
|
||||
{
|
||||
Wrapper = ConnectionString == null
|
||||
? new ModbusTcpProtocal(SlaveAddress, MasterAddress, Endian)
|
||||
? new ModbusTcpProtocol(SlaveAddress, MasterAddress, Endian)
|
||||
: (ConnectionStringPort == null
|
||||
? new ModbusTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusTcpProtocal(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
? new ModbusTcpProtocol(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusTcpProtocol(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
MasterAddress, Endian));
|
||||
break;
|
||||
}
|
||||
@@ -164,18 +164,18 @@ namespace Modbus.Net.Modbus
|
||||
case ModbusType.Ascii:
|
||||
{
|
||||
Wrapper = ConnectionString == null
|
||||
? new ModbusAsciiProtocal(SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusAsciiProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian);
|
||||
? new ModbusAsciiProtocol(SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusAsciiProtocol(ConnectionString, SlaveAddress, MasterAddress, Endian);
|
||||
break;
|
||||
}
|
||||
//Rtu协议
|
||||
case ModbusType.RtuInTcp:
|
||||
{
|
||||
Wrapper = ConnectionString == null
|
||||
? new ModbusRtuInTcpProtocal(SlaveAddress, MasterAddress, Endian)
|
||||
? new ModbusRtuInTcpProtocol(SlaveAddress, MasterAddress, Endian)
|
||||
: (ConnectionStringPort == null
|
||||
? new ModbusRtuInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusRtuInTcpProtocal(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
? new ModbusRtuInTcpProtocol(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusRtuInTcpProtocol(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
MasterAddress, Endian));
|
||||
break;
|
||||
}
|
||||
@@ -183,10 +183,10 @@ namespace Modbus.Net.Modbus
|
||||
case ModbusType.AsciiInTcp:
|
||||
{
|
||||
Wrapper = ConnectionString == null
|
||||
? new ModbusAsciiInTcpProtocal(SlaveAddress, MasterAddress, Endian)
|
||||
? new ModbusAsciiInTcpProtocol(SlaveAddress, MasterAddress, Endian)
|
||||
: (ConnectionStringPort == null
|
||||
? new ModbusAsciiInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusAsciiInTcpProtocal(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
? new ModbusAsciiInTcpProtocol(ConnectionString, SlaveAddress, MasterAddress, Endian)
|
||||
: new ModbusAsciiInTcpProtocol(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress,
|
||||
MasterAddress, Endian));
|
||||
break;
|
||||
}
|
||||
@@ -205,7 +205,7 @@ namespace Modbus.Net.Modbus
|
||||
var inputStruct = new GetSystemTimeModbusInputStruct(SlaveAddress);
|
||||
var outputStruct =
|
||||
await Wrapper.SendReceiveAsync<GetSystemTimeModbusOutputStruct>(
|
||||
Wrapper[typeof(GetSystemTimeModbusProtocal)], inputStruct);
|
||||
Wrapper[typeof(GetSystemTimeModbusProtocol)], inputStruct);
|
||||
return outputStruct?.Time ?? DateTime.MinValue;
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -227,7 +227,7 @@ namespace Modbus.Net.Modbus
|
||||
var inputStruct = new SetSystemTimeModbusInputStruct(SlaveAddress, setTime);
|
||||
var outputStruct =
|
||||
await Wrapper.SendReceiveAsync<SetSystemTimeModbusOutputStruct>(
|
||||
Wrapper[typeof(SetSystemTimeModbusProtocal)], inputStruct);
|
||||
Wrapper[typeof(SetSystemTimeModbusProtocol)], inputStruct);
|
||||
return outputStruct?.WriteCount > 0;
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -259,7 +259,7 @@ namespace Modbus.Net.Modbus
|
||||
var inputStruct = new ReadDataModbusInputStruct(SlaveAddress, startAddress,
|
||||
(ushort) getByteCount, AddressTranslator);
|
||||
var outputStruct = await
|
||||
Wrapper.SendReceiveAsync<ReadDataModbusOutputStruct>(Wrapper[typeof(ReadDataModbusProtocal)],
|
||||
Wrapper.SendReceiveAsync<ReadDataModbusOutputStruct>(Wrapper[typeof(ReadDataModbusProtocol)],
|
||||
inputStruct);
|
||||
return outputStruct?.DataValue;
|
||||
}
|
||||
@@ -283,7 +283,7 @@ namespace Modbus.Net.Modbus
|
||||
var inputStruct = new WriteDataModbusInputStruct(SlaveAddress, startAddress, setContents,
|
||||
AddressTranslator, Endian);
|
||||
var outputStruct = await
|
||||
Wrapper.SendReceiveAsync<WriteDataModbusOutputStruct>(Wrapper[typeof(WriteDataModbusProtocal)],
|
||||
Wrapper.SendReceiveAsync<WriteDataModbusOutputStruct>(Wrapper[typeof(WriteDataModbusProtocol)],
|
||||
inputStruct);
|
||||
return outputStruct?.WriteCount == setContents.Length;
|
||||
}
|
||||
@@ -307,7 +307,7 @@ namespace Modbus.Net.Modbus
|
||||
var inputStruct = new WriteSingleDataModbusInputStruct(SlaveAddress, startAddress, setContent,
|
||||
(ModbusTranslatorBase)AddressTranslator, Endian);
|
||||
var outputStruct = await
|
||||
Wrapper.SendReceiveAsync<WriteSingleDataModbusOutputStruct>(Wrapper[typeof(WriteSingleDataModbusProtocal)],
|
||||
Wrapper.SendReceiveAsync<WriteSingleDataModbusOutputStruct>(Wrapper[typeof(WriteSingleDataModbusProtocol)],
|
||||
inputStruct);
|
||||
return outputStruct?.WriteValue.ToString() == setContent.ToString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user