修改TM的interlock DO-47 48 17 8 10 12 14 16

要求压差小于50
This commit is contained in:
SIC1016\caipeilun 2023-09-28 14:38:55 +08:00
parent b770eefdaf
commit d4a2d4b252
6 changed files with 64 additions and 1 deletions

View File

@ -148,6 +148,9 @@
<IoPressureMeter id="PT1" display="PT1" schematicId="PT1" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="" aiActMode="" aoSetMode="" aiValue="AI_ActualPressure" aoValue="" formatString="0.0" />
<IoPressureMeter id="PT2" display="PT2" schematicId="PT2" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="" aiActMode="" aoSetMode="" aiValue="AI_ForelinePress" aoValue="" formatString="0.0" />
</IoPressureMeters>
<IoPressureMeter3s classType="Aitex.Core.RT.Device.Unit.IoPressureMeter3" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoPressureMeter3 id="ChamberPressure" module="PM1" display="ChamberPressure" schematicId="ChamberPressure" unit="mbar" aioType="float" aiValue="AI_ChamPress" formatString="F1" MaxValue="1500"/>
</IoPressureMeter3s>
<IoSensorWaterFlowTemp classType="Aitex.Core.RT.Device.Devices.IoSensorWaterFlowTemp" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoSensorWaterFlowTemp id="FlowTemp1" module="" display="SHFlowTemp(U1)" schematicId="SHFlowTemp"
unit="℃"

View File

@ -143,6 +143,9 @@
<IoPressureMeter id="PT1" display="PT1" schematicId="PT1" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="" aiActMode="" aoSetMode="" aiValue="AI_ActualPressure" aoValue="" formatString="0.0" />
<IoPressureMeter id="PT2" display="PT2" schematicId="PT2" scBasePath="PM.{module}.PC" unit="mbar" aioType="float" aiOpenDegree="" aiActMode="" aoSetMode="" aiValue="AI_ForelinePress" aoValue="" formatString="0.0" />
</IoPressureMeters>
<IoPressureMeter3s classType="Aitex.Core.RT.Device.Unit.IoPressureMeter3" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoPressureMeter3 id="ChamberPressure" module="PM2" display="ChamberPressure" schematicId="ChamberPressure" unit="mbar" aioType="float" aiValue="AI_ChamPress" formatString="F1" MaxValue="1500"/>
</IoPressureMeter3s>
<IoSensorWaterFlowTemp classType="Aitex.Core.RT.Device.Devices.IoSensorWaterFlowTemp" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoSensorWaterFlowTemp id="FlowTemp1" module="" display="SHFlowTemp(U1)" schematicId="SHFlowTemp"
unit="℃"

View File

@ -267,7 +267,6 @@
<Limit di="TM.DI_UnloadStationGateINTK" value="false" tip="" tip.zh-CN="" tip.en-US="DI-41"/>
<Limit do="TM.DO_ATMRobotExtendUnloadEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-24"/>
</Action>
<Action do="TM.DO_LoadLSideDoorClose" value="true" tip="" tip.zh-CN="" tip.en-US="DO-27">
<Limit do="TM.DO_ATMRobotExtendLoaLSideEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-25"/>
<Limit di="TM.DI_LoadLeftGateINTK" value="false" tip="" tip.zh-CN="" tip.en-US="DI-33"/>
@ -284,6 +283,7 @@
<Limit di="TM.DI_PMAHCLSwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-202"/>
<Limit di="TM.DI_PMASiH4SwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-203"/>
<Limit di="TM.DI_PMAC3H8SwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-204"/>
<Limit pollbool="TM.IsPressureAbs_TM_PMA_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_RectorBDoorOpen" value="true" tip="" tip.zh-CN="" tip.en-US="DO-16">
@ -292,16 +292,19 @@
<Limit di="TM.DI_PMBHCLSwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-218"/>
<Limit di="TM.DI_PMBSiH4SwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-219"/>
<Limit di="TM.DI_PMBC3H8SwitchFB" value="false" tip="" tip.zh-CN="" tip.en-US="DI-220"/>
<Limit pollbool="TM.IsPressureAbs_TM_PMB_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_LoadDoorOpen" value="true" tip="" tip.zh-CN="" tip.en-US="DO-10">
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
<Limit di="TM.DI_LoadLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-13"/>
<Limit pollbool="TM.IsPressureAbs_TM_Load_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_UnloadStationDoorOpen" value="true" tip="" tip.zh-CN="" tip.en-US="DO-12">
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
<Limit di="TM.DI_UnloadStationLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-14"/>
<Limit pollbool="TM.IsPressureAbs_TM_Unload_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_BufferStationDoorOpen" value="true" tip="" tip.zh-CN="" tip.en-US="DO-34">
@ -347,4 +350,17 @@
<Limit di="TM.DI_LoadLifterCYDown" value="true" tip="" tip.zh-CN="" tip.en-US="DI-65"/>
<Limit di="TM.DI_LoadRSideDoorOpened" value="true" tip="" tip.zh-CN="" tip.en-US="DI-27"/>
</Action>
<Action do="TM.DO_TMToPMABanlance(V70_1)" value="true" tip="" tip.zh-CN="" tip.en-US="DO-47">
<Limit pollbool="TM.IsPressureAbs_TM_PMA_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_TMToPMBBanlance(V70_2)" value="true" tip="" tip.zh-CN="" tip.en-US="DO-48">
<Limit pollbool="TM.IsPressureAbs_TM_PMB_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_TMToUnloadBanlance" value="true" tip="" tip.zh-CN="" tip.en-US="DO-17">
<Limit pollbool="TM.IsPressureAbs_TM_Unload_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
<Action do="TM.DO_TMLoadBanlance" value="true" tip="" tip.zh-CN="" tip.en-US="DO-8">
<Limit pollbool="TM.IsPressureAbs_TM_Load_DValue_In50" value="true" tip="" tip.zh-CN="" tip.en-US="" ignoreReverse="true"/>
</Action>
</Interlock>

View File

@ -34,6 +34,7 @@ namespace SicModules.TMs
//private IoPressureMeter3 _forelineGuage_PS7;
private IoPressureMeter3 _chamberGuage_TM;
private IoPressureMeter3 _loadLockGuage_PT3;
private IoPressureMeter3 _unLoadGuage_PT3;
private IoPressureMeter3 _pm1Pressure2;
private IoPressureMeter3 _pm2Pressure2;
@ -62,6 +63,22 @@ namespace SicModules.TMs
}
}
public double LoadLockPressure
{
get
{
return _loadLockGuage_PT3.Value;
}
}
public double UnLoadPressure
{
get
{
return _unLoadGuage_PT3.Value;
}
}
public override double PM1Pressure2
{
get
@ -145,6 +162,7 @@ namespace SicModules.TMs
_chamberGuage_TM = DEVICE.GetDevice<IoPressureMeter3>("TM.TMPressure");
//_forelineGuage_PS7 = DEVICE.GetDevice<IoPressureMeter3>("TM.ForelinePressure");
_loadLockGuage_PT3 = DEVICE.GetDevice<IoPressureMeter3>("TM.LLPressure");
_unLoadGuage_PT3 = DEVICE.GetDevice<IoPressureMeter3>("TM.UnLoadPressure");
_pm1Pressure2 = DEVICE.GetDevice<IoPressureMeter3>("TM.PM1Pressure2");
_pm2Pressure2 = DEVICE.GetDevice<IoPressureMeter3>("TM.PM2Pressure2");

View File

@ -87,6 +87,14 @@ namespace SicModules.TMs
public bool IsBypassInterlock => SC.GetValue<bool>($"TM.BypassInterlock");
public bool IsBypassEnableTable => SC.GetValue<bool>($"TM.BypassEnableTable");
public bool IsPressureAbs_TM_PMA_DValue_In50 => (Math.Abs(TMDevice.ChamberPressure - PM1ChamberGuage.Value) < 50);
public bool IsPressureAbs_TM_PMB_DValue_In50 => (Math.Abs(TMDevice.ChamberPressure - PM2ChamberGuage.Value) < 50);
public bool IsPressureAbs_TM_Unload_DValue_In50 => (Math.Abs(TMDevice.ChamberPressure - TMDevice.UnLoadPressure) < 50);
public bool IsPressureAbs_TM_Load_DValue_In50 => (Math.Abs(TMDevice.ChamberPressure - TMDevice.LoadLockPressure) < 50);
public bool IsAlarm
{
get
@ -182,6 +190,9 @@ namespace SicModules.TMs
public IoPressureMeter3 ForelineGuage { get; set; }
public IoPressureMeter3 ChamberGuage { get; set; }
public IoPressureMeter3 PM1ChamberGuage { get; set; }
public IoPressureMeter3 PM2ChamberGuage { get; set; }
public Dictionary<ModuleName, IoSlitValve> SlitValves { get; set; } = new Dictionary<ModuleName, IoSlitValve>();
public Dictionary<ModuleName, bool> SlitValveInstalled { get; set; } = new Dictionary<ModuleName, bool>();
@ -244,6 +255,8 @@ namespace SicModules.TMs
InitScChangeCallback();
return base.Initialize();
}
@ -339,6 +352,9 @@ namespace SicModules.TMs
ChamberGuage = DEVICE.GetDevice<IoPressureMeter3>("TM.TMPressure");
ForelineGuage = DEVICE.GetDevice<IoPressureMeter3>("TM.ForelinePressure");
PM1ChamberGuage = DEVICE.GetDevice<IoPressureMeter3>("PM1.ChamberPressure");
PM2ChamberGuage = DEVICE.GetDevice<IoPressureMeter3>("PM2.ChamberPressure");
//SlitValves[ModuleName.PM1] = DEVICE.GetDevice<IoSlitValve>("TM.PM1Door");
//SlitValves[ModuleName.PM2] = DEVICE.GetDevice<IoSlitValve>("TM.PM2Door");
//SlitValves[ModuleName.UnLoad] = DEVICE.GetDevice<IoSlitValve>("TM.TMUnLoadDoor");
@ -564,6 +580,11 @@ namespace SicModules.TMs
private void InitData()
{
DATA.Subscribe($"{Name}.IsPressureAbs_TM_PMA_DValue_In50", () => IsPressureAbs_TM_PMA_DValue_In50);
DATA.Subscribe($"{Name}.IsPressureAbs_TM_PMB_DValue_In50", () => IsPressureAbs_TM_PMB_DValue_In50);
DATA.Subscribe($"{Name}.IsPressureAbs_TM_Unload_DValue_In50", () => IsPressureAbs_TM_Unload_DValue_In50);
DATA.Subscribe($"{Name}.IsPressureAbs_TM_Load_DValue_In50", () => IsPressureAbs_TM_Load_DValue_In50);
DATA.Subscribe($"{Name}.Status", () => StringFsmStatus);
DATA.Subscribe($"{Name}.IsOnline", () => IsOnline);
DATA.Subscribe($"TMRobot.IsHomed", () => IsTMRobotHomed);

View File

@ -329,6 +329,8 @@ namespace SicModules.UnLoads
DATA.Subscribe($"{Name}.CurrentRoutineLoopTotal", () => CurrentRoutineLoopTotal, SubscriptionAttribute.FLAG.IgnoreSaveDB);
DATA.Subscribe($"{Name}.RemainedCoolingTime", () => _unloadCoolingRoutine.GetRemainedTime(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
DATA.Subscribe($"{Name}.AtATM", () => { return _unLoadDevice.CheckAtm(); });
DATA.Subscribe($"{Name}.UnderVAC", () =>
{
if (_unLoadDevice.CheckVacuum())