using Newtonsoft.Json; using Rs.Framework; using Rs.Motion.Base.Config; using System; using System.Collections.Generic; using System.Linq; using System.Runtime; using System.Text; using System.Threading.Tasks; using static GTN.mc_ecat; namespace Rs.Motion.Base { [Serializable] public class IAxis { /// /// 目标位置 /// public double TargetPosition { get; set; } public ICard Card { get; set; } public bool IsInitialized { get; set; } = false; public AxisConfig Config { get; set; } public EHomeStatus HomeStatus { get; set; } public event Func FunSafeCheck; public bool SafeCheck() { if(FunSafeCheck != null) return FunSafeCheck(); return true; } public virtual ErrorCode Init() { return ErrorCode.Ok; } public string GetConfigString() { if(Config != null) { return JsonConvert.SerializeObject(Config); } return string.Empty; } public virtual ErrorCode Deinit() { return ErrorCode.Ok; } public virtual ErrorCode MmToPulse(double mm, out double pulse) { pulse = 0.0; return ErrorCode.Ok; } public virtual ErrorCode PulseToMm(double pulse, out double mm) { mm = 0.0; return ErrorCode.Ok; } public virtual ErrorCode Enable() { return ErrorCode.Ok; } public virtual ErrorCode Disable() { return ErrorCode.Ok; } public virtual ErrorCode Stop() { return ErrorCode.Ok; } public virtual ErrorCode Default_Home_Move() { return ErrorCode.Ok; } public virtual ErrorCode MovePos(double dfPosVal, int percent = 100) { return ErrorCode.Ok; } public virtual ErrorCode MoveOffset(double dfDistVal, int percent = 100) { return ErrorCode.Ok; } public virtual ErrorCode MoveJog(short dir, int percent = 10) { return ErrorCode.Ok; } public virtual ErrorCode UpdateTargetPosition(double dfNewPosVal) { return ErrorCode.Ok; } public virtual ErrorCode ChangeSpeed(double dfNewSpeed) { return ErrorCode.Ok; } public virtual ErrorCode IsEnable(out bool bIsEable) { bIsEable = false; return ErrorCode.Ok; } public virtual ErrorCode IsHomed(out bool bIsHomed) { bIsHomed = false; return ErrorCode.Ok; } public virtual ErrorCode IsStop(out bool bIsStop) { bIsStop = false; return ErrorCode.Ok; } public virtual ErrorCode IsInPosition(out bool bIsInPosition) { bIsInPosition = false; return ErrorCode.Ok; } public virtual ErrorCode GetPrfPosition(out double dfCmdPos) { dfCmdPos = 0.0; return ErrorCode.Ok; } public virtual ErrorCode GetEncoderPosition(out double dfEncPos) { dfEncPos = 0.0; return ErrorCode.Ok; } public virtual ErrorCode GetAuEncoderPosition(out double dfEncPos) { dfEncPos = 0.0; return ErrorCode.Ok; } public virtual ErrorCode GetDriverPosition(out double dfEncPos) { dfEncPos = 0.0; return ErrorCode.Ok; } public virtual ErrorCode GetTolerance(out double dfTorlance) { dfTorlance = 0.0; return ErrorCode.Ok; } public virtual ErrorCode SetPosCompare(ushort channel, double[] postions) { return ErrorCode.Ok; } public virtual ErrorCode CompareStatus(out short _pStatus, out int _pCount) { _pStatus = 0; _pCount = 0; return ErrorCode.Ok; } public virtual ErrorCode ComparePulse(ushort channel) { return ErrorCode.Ok; } public virtual ErrorCode ClearCompare(ushort uChannel) { return ErrorCode.Ok; } public virtual ErrorCode GetPelStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetNelStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetOrgStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetAlarmStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetEmgStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetInpStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode GetEzStatus(out bool bIsOn) { bIsOn = false; return ErrorCode.Ok; } public virtual ErrorCode Home() { this.HomeStatus = EHomeStatus.Start; return ErrorCode.Ok; } public virtual void Abort_Go_Home() { if (this.HomeStatus == EHomeStatus.Homing || this.HomeStatus == EHomeStatus.Start) { this.HomeStatus = EHomeStatus.Abort; } this.Stop(); } protected virtual void DealHome(object obj) { try { this.HomeStatus = EHomeStatus.Finished; } catch { this.HomeStatus = EHomeStatus.Fail; } } public virtual ErrorCode Zero(int iOrig) { return ErrorCode.Ok; } public virtual ErrorCode Get_Target_Position(out double dfTargetPos) { dfTargetPos = 0.0; return ErrorCode.Ok; } public virtual ErrorCode ClearAlarm() { return ErrorCode.Ok; } /// /// 暂停后恢复 /// /// public virtual ErrorCode Restore() { return ErrorCode.Ok; } } }