Files
XplorePlane/XP.Hardware.MotionControl/Implementations/PlcAxisReset.cs
T

39 lines
1.2 KiB
C#

using System;
using XP.Hardware.MotionControl.Abstractions;
using XP.Hardware.MotionControl.Config;
using XP.Hardware.Plc.Abstractions;
namespace XP.Hardware.MotionControl.Implementations
{
/// <summary>
/// 基于 PLC 的轴复位实现 | PLC-based Axis Reset Implementation
/// 写入复位信号,读取复位完成信号 | Writes reset signal, reads reset-done signal
/// </summary>
public class PlcAxisReset : IAxisReset
{
private readonly ISignalDataService _signalService;
private bool _isResetDone;
public PlcAxisReset(ISignalDataService signalService)
{
_signalService = signalService ?? throw new ArgumentNullException(nameof(signalService));
}
/// <inheritdoc/>
public bool IsResetDone => _isResetDone;
/// <inheritdoc/>
public MotionResult Reset()
{
_signalService.EnqueueWrite(MotionSignalNames.Axis_Reset, true);
return MotionResult.Ok();
}
/// <inheritdoc/>
public void UpdateStatus()
{
_isResetDone = _signalService.GetValueByName<bool>(MotionSignalNames.Axis_ResetDone);
}
}
}