Files
Modbus.Net/Modbus.Net/Modbus.Net.Modbus/Interfaces.cs
2023-05-17 11:21:07 +08:00

220 lines
6.0 KiB
C#

using System.Threading.Tasks;
namespace Modbus.Net.Modbus
{
/// <summary>
/// 异常状态获取方法
/// </summary>
public interface IUtilityMethodExceptionStatus
{
/// <summary>
/// 获取异常状态
/// </summary>
/// <returns></returns>
Task<ReturnStruct<byte>> GetExceptionStatusAsync();
}
/// <summary>
/// 诊断返回数据
/// </summary>
public class DiagnoticsData
{
/// <summary>
/// 子方法编号
/// </summary>
public ushort SubFunction { get; set; }
/// <summary>
/// 诊断数据
/// </summary>
public ushort[] Data { get; set; }
}
/// <summary>
/// 诊断获取方法
/// </summary>
public interface IUtilityMethodDiagnotics
{
/// <summary>
/// 获取诊断信息
/// </summary>
/// <param name="subFunction">子方法编号</param>
/// <param name="data">诊断数据</param>
/// <returns></returns>
Task<ReturnStruct<DiagnoticsData>> GetDiagnoticsAsync(ushort subFunction, ushort[] data);
}
/// <summary>
/// 通讯事件计数器获取数据
/// </summary>
public class CommEventCounterData
{
/// <summary>
/// 通讯状态
/// </summary>
public ushort Status { get; set; }
/// <summary>
/// 事件计数
/// </summary>
public ushort EventCount { get; set; }
}
/// <summary>
/// 通讯事件计数器获取方法
/// </summary>
public interface IUtilityMethodCommEventCounter
{
/// <summary>
/// 获取通讯事件计数器
/// </summary>
/// <returns></returns>
Task<ReturnStruct<CommEventCounterData>> GetCommEventCounterAsync();
}
/// <summary>
/// 通讯事件获取数据
/// </summary>
public class CommEventLogData
{
/// <summary>
/// 状态
/// </summary>
public ushort Status { get; set; }
/// <summary>
/// 事件内容
/// </summary>
public byte[] Events { get; set; }
}
/// <summary>
/// 通讯事件获取方法
/// </summary>
public interface IUtilityMethodCommEventLog
{
/// <summary>
/// 获取通讯事件
/// </summary>
/// <returns></returns>
Task<ReturnStruct<CommEventLogData>> GetCommEventLogAsync();
}
/// <summary>
/// 获取从站号数据
/// </summary>
public class SlaveIdData
{
/// <summary>
/// 从站号
/// </summary>
public byte SlaveId { get; set; }
/// <summary>
/// 指示状态
/// </summary>
public byte IndicatorStatus { get; set; }
/// <summary>
/// 附加信息
/// </summary>
public byte[] AdditionalData { get; set; }
}
/// <summary>
/// 获取从站号方法
/// </summary>
public interface IUtilityMethodSlaveId
{
/// <summary>
/// 获取从站号
/// </summary>
/// <returns></returns>
Task<ReturnStruct<SlaveIdData>> GetSlaveIdAsync();
}
/// <summary>
/// 文件记录读写方法
/// </summary>
public interface IUtilityMethodFileRecord
{
/// <summary>
/// 读文件记录
/// </summary>
/// <param name="recordDefs">读文件记录定义</param>
/// <returns></returns>
Task<ReturnStruct<ReadFileRecordOutputDef[]>> GetFileRecordAsync(ReadFileRecordInputDef[] recordDefs);
/// <summary>
/// 写文件记录
/// </summary>
/// <param name="recordDefs">写文件记录定义</param>
/// <returns></returns>
Task<ReturnStruct<WriteFileRecordOutputDef[]>> SetFileRecordAsync(WriteFileRecordInputDef[] recordDefs);
}
/// <summary>
/// 掩码写入数据
/// </summary>
public class MaskRegisterData
{
/// <summary>
/// 地址索引
/// </summary>
public ushort ReferenceAddress { get; set; }
/// <summary>
/// 与掩码
/// </summary>
public ushort AndMask { get; set; }
/// <summary>
/// 或掩码
/// </summary>
public ushort OrMask { get; set; }
}
/// <summary>
/// 掩码写入方法
/// </summary>
public interface IUtilityMethodMaskRegister
{
/// <summary>
/// 写入掩码
/// </summary>
/// <param name="referenceAddress">地址索引</param>
/// <param name="andMask">与掩码</param>
/// <param name="orMask">或掩码</param>
/// <returns></returns>
Task<ReturnStruct<MaskRegisterData>> SetMaskRegister(ushort referenceAddress, ushort andMask, ushort orMask);
}
/// <summary>
/// 寄存器读写方法
/// </summary>
public interface IUtilityMethodMultipleRegister
{
/// <summary>
/// 读写多寄存器
/// </summary>
/// <param name="readStartingAddress">读起始地址</param>
/// <param name="quantityToRead">读数量</param>
/// <param name="writeStartingAddress">写寄存器地址</param>
/// <param name="writeValues">写数据</param>
/// <returns></returns>
Task<ReturnStruct<ushort[]>> GetMultipleRegister(ushort readStartingAddress, ushort quantityToRead, ushort writeStartingAddress, ushort[] writeValues);
}
/// <summary>
/// FIFO队列读取方法
/// </summary>
public interface IUtilityMethodFIFOQueue
{
/// <summary>
/// 读FIFO队列
/// </summary>
/// <param name="fifoPointerAddress">FIFO队列地址</param>
/// <returns></returns>
Task<ReturnStruct<ushort[]>> GetFIFOQueue(ushort fifoPointerAddress);
}
}