Sic.Framework/MECF.Framework.Common/MECF/Framework/Common/Device/Bases/MotorBase.cs

110 lines
2.5 KiB
C#

using Aitex.Core.Common.DeviceData;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.OperationCenter;
namespace MECF.Framework.Common.Device.Bases
{
public abstract class MotorBase : BaseDevice, IDevice
{
public virtual bool IsServoOn { get; set; }
public virtual bool IsError { get; set; }
public virtual bool IsHomed { get; set; }
public virtual bool IsMoving { get; set; }
public virtual bool IsInTargetPosition { get; set; }
public virtual float CurrentPosition { get; set; }
public virtual float Target { get; set; }
public virtual AITServoMotorData DeviceData { get; set; }
protected MotorBase()
{
}
protected MotorBase(string module, string name)
: base(module, name, name, name)
{
}
public virtual bool Initialize()
{
DATA.Subscribe(base.Module + "." + base.Name + ".DeviceData", () => DeviceData);
DATA.Subscribe(base.Module + "." + base.Name + ".IsServoOn", () => IsServoOn);
DATA.Subscribe(base.Module + "." + base.Name + ".IsError", () => IsError);
DATA.Subscribe(base.Module + "." + base.Name + ".IsHomed", () => IsHomed);
DATA.Subscribe(base.Module + "." + base.Name + ".IsMoving", () => IsMoving);
DATA.Subscribe(base.Module + "." + base.Name + ".IsInTargetPosition", () => IsInTargetPosition);
DATA.Subscribe(base.Module + "." + base.Name + ".CurrentPosition", () => CurrentPosition);
OP.Subscribe(base.Module + "." + base.Name + ".Home", delegate
{
Home();
return true;
});
OP.Subscribe(base.Module + "." + base.Name + ".ServoOn", delegate
{
ServoOn();
return true;
});
OP.Subscribe(base.Module + "." + base.Name + ".SetSpeed", delegate(string function, object[] args)
{
SetSpeed((float)args[0]);
return true;
});
OP.Subscribe(base.Module + "." + base.Name + ".SetPosition", delegate(string function, object[] args)
{
SetPosition((float)args[0]);
return true;
});
OP.Subscribe(base.Module + "." + base.Name + ".StopMotion", delegate
{
StopMotion();
return true;
});
OP.Subscribe(base.Module + "." + base.Name + ".ResetError", delegate
{
ResetError();
return true;
});
return true;
}
public virtual void Home()
{
}
public virtual void ServoOn()
{
}
public virtual void SetSpeed(float speed)
{
}
public virtual void SetPosition(float position)
{
}
public virtual void StopMotion()
{
}
public virtual void ResetError()
{
}
public virtual void Terminate()
{
}
public virtual void Reset()
{
}
}
}