feat: add 寄存器地址
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user