using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TeamAAS.Global.Devices;
using static TeamAAS.Motion.Enums.MotionEnums;
using static TeamAAS.Motion.Events.CardAxisEventArgs;
namespace TeamAAS.Motion.Interfaces
{
///
/// 单轴控制接口
///
public interface IAxis
{
// --- 1. 属性 (Properties) ---
/// 轴号
int AxisNo { get; }
/// 轴名称(如 "X", "Y", "Z")
string Name { get; set; }
// 1.1 状态属性
/// 轴当前状态(使能、运动中、错误等)[reference:9]
AxisState State { get; }
/// 轴是否已使能
bool IsEnabled { get; }
/// 轴是否正在运动中
bool IsMoving { get; }
/// 轴是否已完成回零
bool IsHomed { get; }
// 1.2 位置与速度属性
/// 指令位置(控制器发送的目标位置)
double CommandPosition { get; }
/// 实际反馈位置(来自编码器)[reference:10]
double ActualPosition { get; }
/// 实际反馈速度
double ActualVelocity { get; }
// 1.3 运动参数属性[reference:12]
/// 运行速度
double Velocity { get; set; }
/// 加速度
double Acceleration { get; set; }
/// 减速度
double Deceleration { get; set; }
/// 加加速度(S曲线平滑因子)
double Jerk { get; set; }
// --- 2. 方法 (Methods) ---
// 2.1 使能与控制
/// 使能轴(开启伺服)
void Enable();
/// 关闭轴使能
void Disable();
// 2.2 运动指令[reference:14]
/// 绝对运动:移动到指定绝对位置
void MoveTo(double position);
/// 相对运动:从当前位置移动指定距离
void MoveBy(double distance);
/// 点动/连续运动:以指定速度持续运动
void Jog(double velocity);
/// 停止运动(以设定减速度减速停止)
void Stop();
// 2.3 回零操作[reference:15]
/// 执行回零操作
/// 回零模式
void Home(HomeMode mode = HomeMode.Default);
// 2.4 参数与位置设定
/// 设置当前位置(用于建立坐标系)
void SetPosition(double position);
/// 批量设置运动参数
void SetMotionParams(MotionParams parameters);
// --- 3. 事件 (Events) ---
/// 轴开始运动时触发
event EventHandler MotionStarted;
/// 轴运动完成时触发
event EventHandler MotionCompleted;
/// 轴状态发生变化时触发
event EventHandler StateChanged;
/// 轴发生错误时触发
event EventHandler ErrorOccurred;
}
}