|
@@ -121,7 +121,7 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
}
|
|
|
|
|
|
- return int.MaxValue;
|
|
|
+ return int.MaxValue / 2;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -234,6 +234,10 @@ namespace Venus_RT.Modules
|
|
|
Transition(STATE.Venting, FSM_MSG.TIMER, FnVentTimeout, STATE.Idle);
|
|
|
Transition(STATE.Venting, MSG.Abort, FnAbortVent, STATE.Idle);
|
|
|
|
|
|
+ Transition(STATE.Idle, MSG.AutoCooling, FnStartCooling, STATE.Cooling);
|
|
|
+ Transition(STATE.Cooling, FSM_MSG.TIMER, FnCoolingTimeout, STATE.Idle);
|
|
|
+ Transition(STATE.Cooling, MSG.Abort, FnAbortCooling, STATE.Idle);
|
|
|
+
|
|
|
//Pump sequence
|
|
|
Transition(STATE.Idle, MSG.Pump, FnStartPump, STATE.Pumping);
|
|
|
Transition(STATE.Pumping, FSM_MSG.TIMER, FnPumpTimeout, STATE.Idle);
|
|
@@ -269,15 +273,7 @@ namespace Venus_RT.Modules
|
|
|
Transition(STATE.Ready_For_EFEM, MSG.Prepare_EFEM, null, STATE.Ready_For_EFEM);
|
|
|
Transition(STATE.Ready_For_EFEM, MSG.Abort, null, STATE.Idle);
|
|
|
Transition(STATE.Ready_For_EFEM, MSG.AutoPump, FnTryAutoPump, STATE.Pumping);
|
|
|
- //Transition(STATE.Ready_For_EFEM, MSG.Transfer_EFEM_SlotInfo, FnEFEMExchange, STATE.Ready_For_EFEM);
|
|
|
-
|
|
|
- //Cooling
|
|
|
- //AnyStateTransition(FSM_MSG.TIMER, LLCoolingTimer_Elapsed, FSM_STATE.SAME);
|
|
|
|
|
|
- Transition(STATE.Venting, MSG.AutoCooling, FnStartCooling, STATE.Cooling);
|
|
|
-
|
|
|
- //Transition(STATE.Ready_For_EFEM, MSG.AutoCooling, FnStartCooling, STATE.Ready_For_EFEM);
|
|
|
- Transition(STATE.Cooling, FSM_MSG.TIMER, FnCoolingTimeout, STATE.Idle);
|
|
|
Running = true;
|
|
|
}
|
|
|
|
|
@@ -288,7 +284,8 @@ namespace Venus_RT.Modules
|
|
|
case "Home":
|
|
|
case "Vent":
|
|
|
case "Pump":
|
|
|
- if(Enum.TryParse(function, out MSG message))
|
|
|
+ case "AutoCooling":
|
|
|
+ if (Enum.TryParse(function, out MSG message))
|
|
|
{
|
|
|
if (CheckToPostMessage((int)message))
|
|
|
return (int)message;
|
|
@@ -451,7 +448,7 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
private bool FnStartVent(object[] param)
|
|
|
{
|
|
|
- return _ventingRoutine.Start() == RState.Running;
|
|
|
+ return _ventingRoutine.Start(false) == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnTryAutoVent(object[] param)
|
|
@@ -463,7 +460,7 @@ namespace Venus_RT.Modules
|
|
|
}
|
|
|
_coolingMFCFlow = SC.GetValue<double>($"{Module.ToString()}.Cooling.MFCFlow");
|
|
|
_coolingTime = SC.GetValue<int>($"{Module.ToString()}.Cooling.CoolingTime");
|
|
|
- return _ventingRoutine.Start() == RState.Running;
|
|
|
+ return _ventingRoutine.Start(false) == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnVentTimeout(object[] param)
|
|
@@ -625,7 +622,7 @@ namespace Venus_RT.Modules
|
|
|
if (RouteManager.IsATMMode)
|
|
|
return true;
|
|
|
|
|
|
- return _ventingRoutine.Start() == RState.Running;
|
|
|
+ return _ventingRoutine.Start(false) == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnPrepareEFEMTimeout(object[] param)
|
|
@@ -724,19 +721,34 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
private bool FnStartCooling(object[] param)
|
|
|
{
|
|
|
- return _coolingRoutine.Start() == RState.Running;
|
|
|
+ _coolingStopWatch.Restart();
|
|
|
+ _coolingTime = SC.GetValue<int>($"{Module}.Cooling.CoolingTime") * 1000;
|
|
|
+ return _ventingRoutine.Start(true) == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnCoolingTimeout(object[] param)
|
|
|
{
|
|
|
- RState ret = _coolingRoutine.Monitor();
|
|
|
+ RState ret = _ventingRoutine.Monitor();
|
|
|
if (ret == RState.Failed || ret == RState.Timeout)
|
|
|
{
|
|
|
PostMsg(MSG.Error);
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ if(_coolingStopWatch.ElapsedMilliseconds > _coolingTime)
|
|
|
+ {
|
|
|
+ _ventingRoutine.Abort();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
return ret == RState.End;
|
|
|
}
|
|
|
+
|
|
|
+ private bool FnAbortCooling(object[] param)
|
|
|
+ {
|
|
|
+ _ventingRoutine.Abort();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
private bool FnTMExchange(object[] param)
|
|
|
{
|
|
|
var needcooling = (bool)param[0];
|