diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs
index 588e15c..5a08905 100644
--- a/Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs
@@ -102,8 +102,16 @@ namespace Modbus.Net.Siemens
OtherAccess = 0x04
}
+ ///
+ /// 西门子协议
+ ///
public abstract class SiemensProtocal : BaseProtocal
{
+ ///
+ /// 构造函数
+ ///
+ /// 从站号
+ /// 主站号
protected SiemensProtocal(byte slaveAddress, byte masterAddress)
: base(slaveAddress, masterAddress, Endian.BigEndianLsb)
{
@@ -187,9 +195,9 @@ namespace Modbus.Net.Siemens
TsapDst = dstTsap;
}
- public byte TdpuSize { get; private set; }
- public ushort TsapSrc { get; private set; }
- public ushort TsapDst { get; private set; }
+ public byte TdpuSize { get; }
+ public ushort TsapSrc { get; }
+ public ushort TsapDst { get; }
}
internal class CreateReferenceSiemensProtocal : ProtocalUnit, ISpecialProtocalUnit
@@ -248,30 +256,63 @@ namespace Modbus.Net.Siemens
#region 串口消息确认
+ ///
+ /// 串口消息确认输入
+ ///
public class ComConfirmMessageSiemensInputStruct : IInputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 从站号
+ /// 主站号
public ComConfirmMessageSiemensInputStruct(byte slaveAddress, byte masterAddress)
{
SlaveAddress = slaveAddress;
MasterAddress = masterAddress;
}
+ ///
+ /// 从站号
+ ///
public byte SlaveAddress { get; set; }
+
+ ///
+ /// 主站号
+ ///
public byte MasterAddress { get; set; }
}
+ ///
+ /// 串口消息确认输出
+ ///
public class ComConfirmMessageSiemensOutputStruct : IOutputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 确认字节
public ComConfirmMessageSiemensOutputStruct(byte confirmByte)
{
ConfirmByte = confirmByte;
}
+ ///
+ /// 确认字节
+ ///
public byte ConfirmByte { get; set; }
}
+ ///
+ /// 串口消息确认协议
+ ///
public class ComConfirmMessageSiemensProtocal : ProtocalUnit, ISpecialProtocalUnit
{
+ ///
+ /// 格式化
+ ///
+ /// 输入参数
+ /// 格式化数据
public override byte[] Format(IInputStruct message)
{
var r_message = (ComConfirmMessageSiemensInputStruct) message;
@@ -280,6 +321,12 @@ namespace Modbus.Net.Siemens
(byte) 0x16);
}
+ ///
+ /// 反格式化
+ ///
+ /// 设备返回的数据
+ /// 当前反格式化的位置
+ /// 输出数据
public override IOutputStruct Unformat(byte[] messageBytes, ref int pos)
{
var confirmByte = BigEndianValueHelper.Instance.GetByte(messageBytes, ref pos);
@@ -309,7 +356,8 @@ namespace Modbus.Net.Siemens
internal class EstablishAssociationSiemensOutputStruct : IOutputStruct
{
- public EstablishAssociationSiemensOutputStruct(ushort pduRef, ushort maxCalling, ushort maxCalled, ushort maxPdu)
+ public EstablishAssociationSiemensOutputStruct(ushort pduRef, ushort maxCalling, ushort maxCalled,
+ ushort maxPdu)
{
PduRef = pduRef;
MaxCalling = maxCalling;
@@ -317,10 +365,10 @@ namespace Modbus.Net.Siemens
MaxPdu = maxPdu;
}
- public ushort PduRef { get; private set; }
- public ushort MaxCalling { get; private set; }
- public ushort MaxCalled { get; private set; }
- public ushort MaxPdu { get; private set; }
+ public ushort PduRef { get; }
+ public ushort MaxCalling { get; }
+ public ushort MaxCalled { get; }
+ public ushort MaxPdu { get; }
}
internal class EstablishAssociationSiemensProtocal : ProtocalUnit
@@ -359,8 +407,21 @@ namespace Modbus.Net.Siemens
#region 读数据请求
+ ///
+ /// 读数据输入
+ ///
public class ReadRequestSiemensInputStruct : IInputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 从站号
+ /// 主站号
+ /// 报文索引
+ /// 获取数据类型
+ /// 开始地址
+ /// 获取个数
+ /// 地址转换器
public ReadRequestSiemensInputStruct(byte slaveAddress, byte masterAddress, ushort pduRef,
SiemensTypeCode getType, string startAddress, ushort getCount, AddressTranslator addressTranslator)
{
@@ -376,18 +437,60 @@ namespace Modbus.Net.Siemens
NumberOfElements = getCount;
}
+ ///
+ /// 从站号
+ ///
public byte SlaveAddress { get; set; }
+
+ ///
+ /// 主站号
+ ///
public byte MasterAddress { get; set; }
+
+ ///
+ /// 报文索引
+ ///
public ushort PduRef { get; }
+
+ ///
+ /// 地址类型
+ ///
public byte TypeCode { get; }
+
+ ///
+ /// 读取的个数
+ ///
public ushort NumberOfElements { get; }
+
+ ///
+ /// DB块
+ ///
public ushort DbBlock { get; }
+
+ ///
+ /// 区域
+ ///
public byte Area { get; }
+
+ ///
+ /// 起始偏移量
+ ///
public int Offset { get; }
}
+ ///
+ /// 读数据输出
+ ///
public class ReadRequestSiemensOutputStruct : IOutputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 报文索引
+ /// 访问结果
+ /// 数据类型
+ /// 获取个数
+ /// 读取值
public ReadRequestSiemensOutputStruct(ushort pduRef, SiemensAccessResult accessResult, SiemensDataType dataType,
ushort getLength, byte[] value)
{
@@ -398,15 +501,42 @@ namespace Modbus.Net.Siemens
GetValue = value;
}
- public ushort PduRef { get; private set; }
- public SiemensAccessResult AccessResult { get; private set; }
- public SiemensDataType DataType { get; private set; }
- public ushort GetLength { get; private set; }
- public byte[] GetValue { get; private set; }
+ ///
+ /// 报文索引
+ ///
+ public ushort PduRef { get; }
+
+ ///
+ /// 访问结果
+ ///
+ public SiemensAccessResult AccessResult { get; }
+
+ ///
+ /// 数据类型
+ ///
+ public SiemensDataType DataType { get; }
+
+ ///
+ /// 获取个数
+ ///
+ public ushort GetLength { get; }
+
+ ///
+ /// 读取值
+ ///
+ public byte[] GetValue { get; }
}
+ ///
+ /// 读数据协议
+ ///
public class ReadRequestSiemensProtocal : ProtocalUnit
{
+ ///
+ /// 格式化
+ ///
+ /// 输入参数
+ /// 格式化数据
public override byte[] Format(IInputStruct message)
{
var r_message = (ReadRequestSiemensInputStruct) message;
@@ -435,6 +565,12 @@ namespace Modbus.Net.Siemens
offsetBitBytes.Skip(1).ToArray());
}
+ ///
+ /// 反格式化
+ ///
+ /// 设备返回的数据
+ /// 当前反格式化的位置
+ /// 输出数据
public override IOutputStruct Unformat(byte[] messageBytes, ref int pos)
{
pos = 4;
@@ -455,8 +591,20 @@ namespace Modbus.Net.Siemens
#region 写数据请求
+ ///
+ /// 写数据输入
+ ///
public class WriteRequestSiemensInputStruct : IInputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 从站地址
+ /// 主站地址
+ /// 报文索引
+ /// 开始地址
+ /// 写入值
+ /// 地址转换器
public WriteRequestSiemensInputStruct(byte slaveAddress, byte masterAddress, ushort pduRef, string startAddress,
object[] writeValue, AddressTranslator addressTranslator)
{
@@ -471,29 +619,79 @@ namespace Modbus.Net.Siemens
WriteValue = writeValue;
}
+ ///
+ /// 从站地址
+ ///
public byte SlaveAddress { get; set; }
+
+ ///
+ /// 主站地址
+ ///
public byte MasterAddress { get; set; }
+
+ ///
+ /// 报文索引
+ ///
public ushort PduRef { get; }
+
+ ///
+ /// DB块
+ ///
public ushort DbBlock { get; }
+
+ ///
+ /// 区域
+ ///
public byte Area { get; }
+
+ ///
+ /// 写入偏移量
+ ///
public int Offset { get; }
+
+ ///
+ /// 写入值
+ ///
public object[] WriteValue { get; }
}
+ ///
+ /// 写数据输出
+ ///
public class WriteRequestSiemensOutputStruct : IOutputStruct
{
+ ///
+ /// 构造函数
+ ///
+ /// 报文索引
+ /// 访问结果
public WriteRequestSiemensOutputStruct(ushort pduRef, SiemensAccessResult accessResult)
{
PduRef = pduRef;
AccessResult = accessResult;
}
- public ushort PduRef { get; private set; }
- public SiemensAccessResult AccessResult { get; private set; }
+ ///
+ /// 报文索引
+ ///
+ public ushort PduRef { get; }
+
+ ///
+ /// 访问结果
+ ///
+ public SiemensAccessResult AccessResult { get; }
}
+ ///
+ /// 写数据协议
+ ///
public class WriteRequestSiemensProtocal : ProtocalUnit
{
+ ///
+ /// 格式化
+ ///
+ /// 输入参数
+ /// 格式化数据
public override byte[] Format(IInputStruct message)
{
var r_message = (WriteRequestSiemensInputStruct) message;
@@ -526,6 +724,12 @@ namespace Modbus.Net.Siemens
offsetBitBytes.Skip(1).ToArray(), reserved, type, numberOfWriteBits, valueBytes);
}
+ ///
+ /// 反格式化
+ ///
+ /// 设备返回的数据
+ /// 当前反格式化的位置
+ /// 输出数据
public override IOutputStruct Unformat(byte[] messageBytes, ref int pos)
{
if (messageBytes.Length == 1)
@@ -653,6 +857,11 @@ namespace Modbus.Net.Siemens
{0xEF, "Layer 2 specific error"}
};
+ ///
+ /// 构造函数
+ ///
+ /// 错误分类
+ /// 错误码
public SiemensProtocalErrorException(int errCls, int errCod)
: base(ProtocalErrorDictionary[errCls] + " : " + errCod)
{
@@ -660,7 +869,14 @@ namespace Modbus.Net.Siemens
ErrorCode = errCod;
}
- public int ErrorClass { get; private set; }
- public int ErrorCode { get; private set; }
+ ///
+ /// 错误分类
+ ///
+ public int ErrorClass { get; }
+
+ ///
+ /// 错误码
+ ///
+ public int ErrorCode { get; }
}
}
\ No newline at end of file