You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
6.6 KiB
C#

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
{
/// <summary>
/// 目标位置
/// </summary>
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<bool> 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;
}
/// <summary>
/// 暂停后恢复
/// </summary>
/// <returns></returns>
public virtual ErrorCode Restore()
{
return ErrorCode.Ok;
}
}
}