Files
ww-jst/wmsjst/JSMachine.WMS.PLC/IModbusEngine.cs
T

157 lines
6.1 KiB
C#
Raw Normal View History

2026-09-02 16:31:50 +08:00
namespace JSMachine.WMS.PLC
{
/// <summary>
/// PLC Modbus 通信引擎契约,统一提供连接、线圈和寄存器读写能力。
/// </summary>
public interface IModbusEngine
{
/// <summary>
/// 初始化PLC参数
/// </summary>
/// <param name="ip"></param>
/// <param name="port"></param>
/// <returns></returns>
IModbusEngine Init(string ip, int port);
/// <summary>
/// 连接PLC
/// </summary>
/// <returns></returns>
IModbusEngine Connet();
/// <summary>
/// 批量读取线圈值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
bool[] ReadCoils(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 批量读取线圈值(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
Task<bool[]> ReadCoilsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 无符号读取
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
ushort[] ReadUshorts(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 无符号读取(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
Task<ushort[]> ReadUshortsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 有符号读取
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
short[] ReadShorts(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 有符号读取(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="numberOfPoints"></param>
/// <returns></returns>
Task<short[]> ReadShortsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
/// <summary>
/// 写单个无符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
bool WriteUshortOne(byte slaveAddress, ushort startAddress, ushort data);
/// <summary>
/// 写单个无符号值(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<bool> WriteUshortOneAsync(byte slaveAddress, ushort startAddress, ushort data);
/// <summary>
/// 写单个有符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
bool WriteShortOne(byte slaveAddress, ushort startAddress, short data);
/// <summary>
/// 写单个有符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
bool WriteCoilOne(byte slaveAddress, ushort startAddress, bool data);
/// <summary>
/// 写单个有符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<bool> WriteCoilOneAsync(byte slaveAddress, ushort startAddress, bool data);
/// <summary>
/// 写单个有符号值(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<bool> WriteShortOneAsync(byte slaveAddress, ushort startAddress, short data);
/// <summary>
/// 写多个无符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
bool WriteUshortsMany(byte slaveAddress, ushort startAddress, ushort[] data);
/// <summary>
/// 写多个无符号值(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<bool> WriteUshortsManyAsync(byte slaveAddress, ushort startAddress, ushort[] data);
/// <summary>
/// 写多个有符号值
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
bool WriteShortsMany(byte slaveAddress, ushort startAddress, short[] data);
/// <summary>
/// 写多个有符号值(异步)
/// </summary>
/// <param name="slaveAddress"></param>
/// <param name="startAddress"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<bool> WriteShortsManyAsync(byte slaveAddress, ushort startAddress, short[] data);
/// <summary>
/// PLC是否已连接
/// </summary>
/// <returns></returns>
bool IsConneted();
}
}