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