Add IsSafeToEnable
parent
809ed925b1
commit
1c2a3d6daa
|
@ -11,6 +11,8 @@ namespace ln.ethercat.controller
|
|||
public delegate void ControllerLogicDelegate(Controller controller);
|
||||
public delegate void ControllerStateChangeDelegate(Controller controller, ControllerStates newState);
|
||||
|
||||
public delegate bool ControllerIsSafeToEnable(Controller controller);
|
||||
|
||||
public enum ControllerStates {
|
||||
NONE,
|
||||
NOTREADY,
|
||||
|
@ -27,6 +29,8 @@ namespace ln.ethercat.controller
|
|||
public event ControllerStateChangeDelegate OnStateChanging;
|
||||
public event ControllerStateChangeDelegate OnStateChanged;
|
||||
|
||||
public event ControllerIsSafeToEnable OnIsSafeToEnable;
|
||||
|
||||
public ECMaster ECMaster { get; }
|
||||
|
||||
[ESProperty]
|
||||
|
@ -169,12 +173,25 @@ namespace ln.ethercat.controller
|
|||
{
|
||||
if (ControllerState == ControllerStates.READY)
|
||||
{
|
||||
ChangeState(ControllerStates.ENABLING);
|
||||
if (!IsSafeToEnable())
|
||||
ChangeState(ControllerStates.FAULT);
|
||||
else
|
||||
ChangeState(ControllerStates.ENABLING);
|
||||
} else {
|
||||
Logging.Log(LogLevel.INFO, "Controller: EnableDrives(): Current ControllerState={0}. Refusing to enable drives", ControllerState.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsSafeToEnable()
|
||||
{
|
||||
foreach (ControllerIsSafeToEnable ciste in OnIsSafeToEnable.GetInvocationList())
|
||||
{
|
||||
if (!ciste(this))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
[ESMethod]
|
||||
public void ClearFaults()
|
||||
{
|
||||
|
|
|
@ -70,6 +70,8 @@ namespace ln.ethercat.controller
|
|||
protected abstract void Cycle();
|
||||
protected abstract void Shutdown();
|
||||
|
||||
public abstract bool IsSafeToEnable();
|
||||
|
||||
private void CycleThread()
|
||||
{
|
||||
CycleCounter = 0;
|
||||
|
|
|
@ -241,5 +241,10 @@ namespace ln.ethercat.controller.remote
|
|||
stopReceiverThread = true;
|
||||
serialPort.Close();
|
||||
}
|
||||
|
||||
public override bool IsSafeToEnable()
|
||||
{
|
||||
return (MainTarget==0) && (FeedTarget == 0);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue