feat: add 寄存器地址

This commit is contained in:
GukSang.Jin
2026-02-28 10:24:18 +08:00
parent 5700195897
commit 2a312e798f
4 changed files with 128 additions and 2 deletions

View File

@@ -551,4 +551,90 @@ public class ModbusService : IDisposable
}
#endregion
#region
/// <summary>
/// 触发关闭门并开始洗护按钮 M80复归型
/// M80 是复归型按钮需要写入脉冲信号true → 延迟 → false
/// </summary>
public async Task TriggerStartWashAsync()
{
try
{
if (_modbusMaster != null && _isConnected)
{
const ushort START_WASH_BUTTON_ADDRESS = 80; // M80 复归型按钮
_logger.LogInfo($"[Modbus] 触发关闭门并开始洗护按钮 M{START_WASH_BUTTON_ADDRESS}");
// 写入 true触发
await WriteSingleCoilAsync(START_WASH_BUTTON_ADDRESS, true);
_logger.LogInfo($"[Modbus] M{START_WASH_BUTTON_ADDRESS} = true");
// 延迟 100ms
await Task.Delay(100);
// 写入 false复位
await WriteSingleCoilAsync(START_WASH_BUTTON_ADDRESS, false);
_logger.LogInfo($"[Modbus] M{START_WASH_BUTTON_ADDRESS} = false");
// 延迟 100ms 确保 PLC 处理完成
await Task.Delay(100);
_logger.LogInfo($"[Modbus] M{START_WASH_BUTTON_ADDRESS} 脉冲信号发送完成");
}
else
{
throw new InvalidOperationException("Modbus 未连接");
}
}
catch (Exception ex)
{
_logger.LogError($"触发关闭门并开始洗护失败: {ex.Message}", ex);
throw;
}
}
/// <summary>
/// 触发紧急停止按钮 M83复归型
/// M83 是复归型按钮需要写入脉冲信号true → 延迟 → false
/// </summary>
public async Task TriggerEmergencyStopAsync()
{
try
{
if (_modbusMaster != null && _isConnected)
{
const ushort EMERGENCY_STOP_BUTTON_ADDRESS = 83; // M83 复归型按钮
_logger.LogInfo($"[Modbus] 触发紧急停止按钮 M{EMERGENCY_STOP_BUTTON_ADDRESS}");
// 写入 true触发
await WriteSingleCoilAsync(EMERGENCY_STOP_BUTTON_ADDRESS, true);
_logger.LogInfo($"[Modbus] M{EMERGENCY_STOP_BUTTON_ADDRESS} = true");
// 延迟 100ms
await Task.Delay(100);
// 写入 false复位
await WriteSingleCoilAsync(EMERGENCY_STOP_BUTTON_ADDRESS, false);
_logger.LogInfo($"[Modbus] M{EMERGENCY_STOP_BUTTON_ADDRESS} = false");
// 延迟 100ms 确保 PLC 处理完成
await Task.Delay(100);
_logger.LogInfo($"[Modbus] M{EMERGENCY_STOP_BUTTON_ADDRESS} 脉冲信号发送完成");
}
else
{
throw new InvalidOperationException("Modbus 未连接");
}
}
catch (Exception ex)
{
_logger.LogError($"触发紧急停止失败: {ex.Message}", ex);
throw;
}
}
#endregion
}