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