|
@@ -159,6 +159,7 @@ namespace Venus_Simulator.Instances
|
|
|
SetAiValue($"{mod}.AI_Time", DateTime.Now.Hour);
|
|
|
SetAiValue($"{mod}.AI_Minute", DateTime.Now.Minute);
|
|
|
SetAiValue($"{mod}.AI_Second", DateTime.Now.Second);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void SetTMDefaultValue()
|
|
@@ -192,6 +193,13 @@ namespace Venus_Simulator.Instances
|
|
|
IO.DI[$"{mod}.DI_LLA_Foreline_VAC_Gauge_Alarm"].Value = true;
|
|
|
IO.DI[$"{mod}.DI_LLB_Chamber_VAC_Gauge_Alarm"].Value = true;
|
|
|
IO.DI[$"{mod}.DI_LLB_Foreline_VAC_Gauge_Alarm"].Value = true;
|
|
|
+
|
|
|
+ IO.DI[$"{mod}.DI_LLA_Lid_Door_Closed"].Value = true;
|
|
|
+ IO.DI[$"{mod}.DI_LLB_Lid_Door_Closed"].Value = true;
|
|
|
+
|
|
|
+ SetAiValue($"{mod}.AI_TM_CHB_Pressure", 100);
|
|
|
+ SetAiValue($"{mod}.AI_LLA_CHB_Pressure", 100);
|
|
|
+ SetAiValue($"{mod}.AI_LLB_CHB_Pressure", 100);
|
|
|
}
|
|
|
|
|
|
private bool OnMonitor()
|
|
@@ -220,8 +228,9 @@ namespace Venus_Simulator.Instances
|
|
|
//MonitorIOPumpCtrl(ModuleName.PMB);
|
|
|
|
|
|
ChangeTime(ModuleName.TM);
|
|
|
-
|
|
|
-
|
|
|
+ MonitorMFPressure(ModuleName.TM);
|
|
|
+ MonitorMFPressure(ModuleName.LLA);
|
|
|
+ MonitorMFPressure(ModuleName.LLB);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -410,28 +419,6 @@ namespace Venus_Simulator.Instances
|
|
|
DOAccessor vent_vlv = IO.DO[$"{mod}.DO_N2_Valve"];
|
|
|
//DOAccessor purge_vlv = IO.DO[$"{mod}.DO_Chamber_purge_valve"];
|
|
|
|
|
|
- //if (vent_vlv.Value || purge_vlv.Value)
|
|
|
- //{
|
|
|
- // if (vent_vlv.Value && purge_vlv.Value)
|
|
|
- // {
|
|
|
- // float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
|
|
|
- // float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
|
|
|
- // if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
|
|
|
- // {
|
|
|
- // SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") + 30000);
|
|
|
- // //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
|
|
|
- // }
|
|
|
- // else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
|
|
|
- // {
|
|
|
- // getAiValue_ProcessPressure = getAiValue_ChamberPressure;
|
|
|
- // SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") + 1500);
|
|
|
- // SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") + 1500);
|
|
|
- // }
|
|
|
- // //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") + _rd.Next(45000, 50000));
|
|
|
- // //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") + _rd.Next(150, 160));
|
|
|
- // }
|
|
|
- // else
|
|
|
- //
|
|
|
if (vent_vlv.Value)
|
|
|
{
|
|
|
float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
|
|
@@ -512,88 +499,100 @@ namespace Venus_Simulator.Instances
|
|
|
SetAiValue($"{mod}.AI_Loadlock_Pressure", 20);
|
|
|
}
|
|
|
|
|
|
+ // ATM switch
|
|
|
+ IO.DI[$"{mod}.DI_PM_ATM_SW"].Value = GetAiValue($"{mod}.{sAI_ChamberPressure}") > ATM_THRESHOLD;
|
|
|
|
|
|
- // 模拟压力计漂移
|
|
|
- //int p1 = (int)GetMockChamberPressure(mod);
|
|
|
- //int new_p1 = _rd.Next(p1 - 2, p1 + 2);
|
|
|
- //SetAiValue($"{mod}.AI_Chamber_Pressure", new_p1);
|
|
|
+ // VAC switch
|
|
|
+ IO.DI[$"{mod}.DI_PM_VAC_SW"].Value = GetAiValue($"{mod}.{sAI_ChamberPressure}") < VAC_SW_PRESSURE;
|
|
|
|
|
|
- //int p2 = (int)GetAiValue($"{mod}.AI_Foreline_Pressure");
|
|
|
- //int new_p2 = _rd.Next(p2 - 1, p2 + 1);
|
|
|
- //SetAiValue($"{mod}.AI_Foreline_Pressure", new_p2);
|
|
|
|
|
|
- //int p3 = (int)GetAiValue($"{mod}.AI_Process_Pressure");
|
|
|
- //int new_p3 = _rd.Next(p3 - 1, p3 + 1);
|
|
|
- //SetAiValue($"{mod}.AI_Process_Pressure", new_p3);
|
|
|
+ }
|
|
|
|
|
|
- // 根据当前压力值设定信号
|
|
|
- //float chamber_pressure2 = GetMockChamberPressure(mod);
|
|
|
+ void MonitorMFPressure(ModuleName mod)
|
|
|
+ {
|
|
|
+ DOAccessor doSoftPump, doFastPump, doVent;
|
|
|
+ DIAccessor diATM, diVac;
|
|
|
+ string strAIPressure;
|
|
|
+ double basePressure = SystemConfig.Instance.GetValue<double>($"{mod}.PumpBasePressure");
|
|
|
|
|
|
- // ATM switch
|
|
|
- IO.DI[$"{mod}.DI_PM_ATM_SW"].Value = GetAiValue($"{mod}.{sAI_ChamberPressure}") > ATM_THRESHOLD;
|
|
|
+ if(mod == ModuleName.LLA)
|
|
|
+ {
|
|
|
+ doSoftPump = IO.DO[$"TM.DO_Soft_Pumping_Valve_LLA"];
|
|
|
+ doFastPump = IO.DO[$"TM.DO_Fast_Pumping_Valve_LLA"];
|
|
|
+ doVent = IO.DO[$"TM.DO_Vent_Valve_LLA"];
|
|
|
|
|
|
- // VAC switch
|
|
|
- IO.DI[$"{mod}.DI_PM_VAC_SW"].Value = GetAiValue($"{mod}.{sAI_ChamberPressure}") < VAC_SW_PRESSURE;
|
|
|
+ diATM = IO.DI[$"TM.DI_LLA_ATM_Switch"];
|
|
|
+ diVac = IO.DI[$"TM.DI_LLA_VAC_Switch"];
|
|
|
|
|
|
- // Throttle valve
|
|
|
+ strAIPressure = $"TM.AI_LLA_CHB_Pressure";
|
|
|
+ }
|
|
|
+ else if(mod == ModuleName.LLB)
|
|
|
+ {
|
|
|
+ doSoftPump = IO.DO[$"TM.DO_Soft_Pumping_Valve_LLB"];
|
|
|
+ doFastPump = IO.DO[$"TM.DO_Fast_Pumping_Valve_LLB"];
|
|
|
+ doVent = IO.DO[$"TM.DO_Vent_Valve_LLB"];
|
|
|
|
|
|
- //var pos_sp = IO.AO[$"{mod}.AO_Throttle_Valve_Pressure_Setpoint"].Value;
|
|
|
- //var mock_pos_fb = _rd.Next(pos_sp - 2, pos_sp + 2);
|
|
|
- ////IO.AI[$"{mod}.AI_Throttle_Valve_Real_Pressure"].Value = (short)mock_pos_fb;
|
|
|
- //SetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure", mock_pos_fb);
|
|
|
+ diATM = IO.DI[$"TM.DI_LLB_ATM_Switch"];
|
|
|
+ diVac = IO.DI[$"TM.DI_LLB_VAC_Switch"];
|
|
|
|
|
|
- // 压力值
|
|
|
- //if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure") < GetAoValue($"{mod}.AO_Throttle_Valve_Pressure_Setpoint"))
|
|
|
- //{
|
|
|
- // short increase = (short)_rd.Next(20, 30);
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure", GetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure") + increase);
|
|
|
- // if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure") > GetAoValue($"{mod}.AO_Throttle_Valve_Pressure_Setpoint"))
|
|
|
- // {
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure", GetAoValue($"{mod}.AO_Throttle_Valve_Pressure_Setpoint"));
|
|
|
- // }
|
|
|
- //}
|
|
|
- //else
|
|
|
- //{
|
|
|
- // short increase = (short)_rd.Next(20, 30);
|
|
|
+ strAIPressure = $"TM.AI_LLB_CHB_Pressure";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ doSoftPump = IO.DO[$"TM.DO_Soft_Pumping_Valve_TM"];
|
|
|
+ doFastPump = IO.DO[$"TM.DO_Fast_Pumping_Valve_TM"];
|
|
|
+ doVent = IO.DO[$"TM.DO_Vent_Valve_TM"];
|
|
|
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure", GetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure") - increase);
|
|
|
- // if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure") < GetAoValue($"{mod}.AO_Throttle_Valve_Pressure_Setpoint"))
|
|
|
- // {
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Pressure", GetAoValue($"{mod}.AO_Throttle_Valve_Pressure_Setpoint"));
|
|
|
- // }
|
|
|
- //}
|
|
|
+ diATM = IO.DI[$"TM.DI_TM_ATM_Switch"];
|
|
|
+ diVac = IO.DI[$"TM.DI_TM_VAC_Switch"];
|
|
|
|
|
|
- //// 位置值
|
|
|
- //if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Position") < GetAoValue($"{mod}.AO_Throttle_Valve_Position_Setpoint"))
|
|
|
- //{
|
|
|
- // short increase = (short)_rd.Next(20, 30);
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Position", GetAiValue($"{mod}.AI_Throttle_Valve_Real_Position") + increase);
|
|
|
- // if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Position") > GetAoValue($"{mod}.AO_Throttle_Valve_Position_Setpoint"))
|
|
|
- // {
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Position", GetAoValue($"{mod}.AO_Throttle_Valve_Position_Setpoint"));
|
|
|
- // }
|
|
|
- //}
|
|
|
- //else
|
|
|
- //{
|
|
|
- // short increase = (short)_rd.Next(20, 30);
|
|
|
+ strAIPressure = $"TM.AI_TM_CHB_Pressure";
|
|
|
+ }
|
|
|
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Position", GetAiValue($"{mod}.AI_Throttle_Valve_Real_Position") - increase);
|
|
|
- // if (GetAiValue($"{mod}.AI_Throttle_Valve_Real_Position") < GetAoValue($"{mod}.AO_Throttle_Valve_Position_Setpoint"))
|
|
|
- // {
|
|
|
- // SetAiValue($"{mod}.AI_Throttle_Valve_Real_Position", GetAoValue($"{mod}.AO_Throttle_Valve_Position_Setpoint"));
|
|
|
- // }
|
|
|
- //}
|
|
|
- }
|
|
|
+ if(doVent.Value)
|
|
|
+ {
|
|
|
+ if(GetAiValue(strAIPressure) < 500)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) + 100 + _rd.Next(-10, 10));
|
|
|
+ else if(GetAiValue(strAIPressure) < 5000)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) + 1000 + _rd.Next(-20, 20));
|
|
|
+ else if(GetAiValue(strAIPressure) < 100000)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) + 25000 + _rd.Next(-50, 50));
|
|
|
+ else if (GetAiValue(strAIPressure) < ATM_PRESSURE)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) + 50000 + _rd.Next(-100, 100));
|
|
|
+ else
|
|
|
+ SetAiValue(strAIPressure, ATM_PRESSURE);
|
|
|
+ }
|
|
|
+ else if(doSoftPump.Value || doFastPump.Value)
|
|
|
+ {
|
|
|
+ if(GetAiValue(strAIPressure) < basePressure + 10)
|
|
|
+ SetAiValue(strAIPressure, (int)basePressure);
|
|
|
+ else if (GetAiValue(strAIPressure) < 2000)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) - 100 + _rd.Next(-2, 3));
|
|
|
+ else if (GetAiValue(strAIPressure) < 67000)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) - 2000 + _rd.Next(-8, 10));
|
|
|
+ else
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) - 65000 + _rd.Next(-500, 500));
|
|
|
+ }
|
|
|
|
|
|
- //float GetMockChamberPressure(ModuleName mod)
|
|
|
- //{
|
|
|
- // return GetAiValue($"{mod}.AI_Chamber_Pressure");
|
|
|
- //}
|
|
|
+ if(GetAiValue(strAIPressure) > 20)
|
|
|
+ SetAiValue(strAIPressure, GetAiValue(strAIPressure) + _rd.Next(-2, 3));
|
|
|
|
|
|
- //void SetMockChamberPressure(ModuleName mod, float val)
|
|
|
- //{
|
|
|
- // SetAiValue($"{mod}.AI_Chamber_Pressure", val);
|
|
|
- //}
|
|
|
+ if (GetAiValue(strAIPressure) > ATM_THRESHOLD)
|
|
|
+ {
|
|
|
+ diATM.Value = true;
|
|
|
+ diVac.Value = false;
|
|
|
+ }
|
|
|
+ else if(GetAiValue(strAIPressure) < VAC_SW_PRESSURE)
|
|
|
+ {
|
|
|
+ diATM.Value = false;
|
|
|
+ diVac.Value = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ diATM.Value = false;
|
|
|
+ diVac.Value = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
void SetAiValue(string name, float value)
|
|
|
{
|