From 8e1ab777ba99ccd047834b3b76d57568a4c99fa1 Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Wed, 17 May 2017 19:05:19 +0800 Subject: [PATCH] Add Comments --- .../Modbus.Net.Siemens/SiemensProtocal.cs | 250 ++++++++++++++++-- 1 file changed, 233 insertions(+), 17 deletions(-) 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