|
@@ -44,6 +44,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
|
|
|
DATA.Subscribe($"{Module}.N2PurgeMode", () => SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : "");
|
|
|
}
|
|
|
+
|
|
|
private void InitN2PurgeConfigData()
|
|
|
{
|
|
|
_n2PurgeData = SC.ContainsItem($"System.N2PurgeData") ? SC.GetValue<double>("System.N2PurgeData") : 20;
|
|
@@ -110,36 +111,39 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
- private void ProcessPhase(R_TRIG r_TRIG, string modeKey)
|
|
|
+ bool CheckConditionInTime(string modeKey, int millisecondsTimeout, Func<bool> condition)
|
|
|
{
|
|
|
- if (_n2PurgeSequenceStatus[modeKey].Invoke())
|
|
|
+ var stopwatch = _allTimeDict[modeKey];
|
|
|
+ if (!_allTimeDict[modeKey].IsRunning)
|
|
|
{
|
|
|
- if (!_allTimeDict[modeKey].IsRunning)
|
|
|
- {
|
|
|
- _allTimeDict[modeKey].Restart();
|
|
|
- }
|
|
|
- r_TRIG.CLK = _allTimeDict[modeKey].ElapsedMilliseconds > _stabilityTime * 1000;
|
|
|
- if (r_TRIG.Q)
|
|
|
+ _allTimeDict[modeKey].Restart();
|
|
|
+ }
|
|
|
+ while (stopwatch.ElapsedMilliseconds < millisecondsTimeout)
|
|
|
+ {
|
|
|
+ if (!condition())
|
|
|
{
|
|
|
-
|
|
|
- if (_n2PurgeSequenceStatus[modeKey].Invoke())
|
|
|
- {
|
|
|
- LOG.Info($"N2PurgeMode Trigger {modeKey}!,O2:{GetO2Density()}");
|
|
|
- SetN2PurgeValveData(modeKey);
|
|
|
- }
|
|
|
+ _allTimeDict[modeKey].Stop();
|
|
|
+ _allTimeDict[modeKey].Reset();
|
|
|
+ return false;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
- else
|
|
|
+ if (stopwatch.ElapsedMilliseconds > millisecondsTimeout)
|
|
|
{
|
|
|
_allTimeDict[modeKey].Stop();
|
|
|
_allTimeDict[modeKey].Reset();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ private void ProcessPhase(R_TRIG r_TRIG, string modeKey)
|
|
|
+ {
|
|
|
+ r_TRIG.CLK = CheckConditionInTime(modeKey, (int)3 * 1000, () => _n2PurgeSequenceStatus[modeKey].Invoke());
|
|
|
+ if (r_TRIG.Q)
|
|
|
+ {
|
|
|
+ LOG.Info($"N2PurgeMode Trigger {modeKey}!,O2:{GetO2Density()},time:{_allTimeDict[modeKey].ElapsedMilliseconds}");
|
|
|
+ SetN2PurgeValveData(modeKey);
|
|
|
+ _allTimeDict[modeKey].Stop();
|
|
|
+ _allTimeDict[modeKey].Reset();
|
|
|
+ }
|
|
|
}
|
|
|
public void RestAllN2PrugeRD()
|
|
|
{
|
|
@@ -263,7 +267,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
private bool GetN2PurgePhase4()
|
|
|
{
|
|
|
- return GetO2Density() >= _n2ToAirData ;
|
|
|
+ return GetO2Density() >= _n2ToAirData;
|
|
|
}
|
|
|
private bool GetN2PurgeAIRTo20PPMStatus()
|
|
|
{
|