1.TM增加DO_TMCyclePurgeRoutineSuccessed,TM Purge后置为true,TM开腔后该DO置为false,

TM Online时需检查该DO为true
This commit is contained in:
HCL 2023-10-11 11:52:21 +08:00
parent 04d384d2ff
commit 484932e024
9 changed files with 82 additions and 21 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DeviceModelDefine type="Sic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<IoInterLocks assembly="SicModules" classType="SicModules.Devices.IoInterLockEx">
<IoInterLock id="IoInterLock" module="TM" display="IoInterLock" schematicId="IoInterLock" unit="" doTmAtProcessPress="DO_TMAtProcessPress" doLLAtProcessPress="DO_LoadAtProcessPress" diTmAtATM="DI_TMPressure1ATM" diLoadLockAtATm="DI_LoadPressureATM" aiTmPressure="AI_TMPressure1" aiLLPressure="AI_LoadPressure" diTmUnderVac="DI_TMPressure1VAC" doTmCyclePurgeRoutineRunning="DO_TMCyclePurgeRoutineRunning" doTmLeakCheckRoutineRunning="DO_TMLeakCheckRoutineRunning" doTmPumpDownRoutineRunning="DO_TMPumpDownRoutineRunning" doTmServoPressRoutineRunning="DO_TMServoPressRoutineRunning" doTmVentUpRoutineRunning="DO_TMVentUpRoutineRunning" doLLCyclePurgeRoutineRunning="DO_LoadCyclePurgeRoutineRunning" doLLLeakCheckRoutineRunning="DO_LoadLeakCheckRoutineRunning" doLLPumpDownRoutineRunning="DO_LoadPumpDownRoutineRunning" doLLVentUpRoutineRunning="DO_LoadVentUpRoutineRunning" diVacRobotExtenLLEnableFB="DI_VacRobotExtenLoadEnableFB" diVacRobotExtendBufferEnableFB="DI_VacRobotExtendBufferEnableFB" diVacRobotExtendPMAEnableFB="DI_VacRobotExtendPMAEnableFB" diATMRobotExtendUnloadEnableFB="DI_ATMRobotExtendUnloadEnableFB" diATMRobotExtendLoadLSideEnableFB="DI_ATMRobotExtendLoadLSideEnableFB" diATMRobotExtendLoadRSideEnableFB="DI_ATMRobotExtendLoadRSideEnableFB" diVacRobotExtendUnloadEnableFB="DI_VacRobotExtendUnloadEnableFB" diVacRobotExtendPMBEnableFB="DI_VacRobotExtendPMBEnableFB" doVacRobotExtenLLEnable="DO_VacRobotExtenLoadEnable" doVacRobotExtendBufferEnable="DO_VacRobotExtendBufferEnable" doVacRobotExtendPMAEnable="DO_VacRobotExtendPMAEnable" doVacRobotExtendUnloadEnable="DO_VacRobotExtendUnloadEnable" doVacRobotExtendPMBEnable="DO_VacRobotExtendPMBEnable" doATMRobotExtendUnloadEnable="DO_ATMRobotExtendUnloadEnable" doATMRobotExtendLoaLSideEnable="DO_ATMRobotExtendLoaLSideEnable" doATMRobotExtendLoaRSideEnable="DO_ATMRobotExtendLoaRSideEnable" doRectorAATMTransferReady="DO_ReactorAATMTransferReady" doRectorAProcessTransferReady="DO_ReactorAProcessTransferReady" doPm1LidClosed="DO_PM1LidClosed" doRectorBATMTransferReady="DO_ReactorBATMTransferReady" doRectorBProcessTransferReady="DO_ReactorBProcessTransferReady" doPm2LidClosed="DO_PM2LidClosed" doUnLoadPurgeRoutineRunning="DO_UnLoadCyclePurgeRoutineRunning" doUnLoadLeakCheckRoutineRunning="DO_UnLoadLeakCheckRoutineRunning" doUnLoadPumpDownRoutineRunning="DO_UnLoadPumpDownRoutineRunning" doUnLoadVentUpRoutineRunning="DO_UnLoadVentUpRoutineRunning" />
<IoInterLock id="IoInterLock" module="TM" display="IoInterLock" schematicId="IoInterLock" unit="" doTmAtProcessPress="DO_TMAtProcessPress" doLLAtProcessPress="DO_LoadAtProcessPress" diTmAtATM="DI_TMPressure1ATM" diLoadLockAtATm="DI_LoadPressureATM" aiTmPressure="AI_TMPressure1" aiLLPressure="AI_LoadPressure" diTmUnderVac="DI_TMPressure1VAC" doTmCyclePurgeRoutineSuccessed="DO_TMCyclePurgeRoutineSuccessed" doTmCyclePurgeRoutineRunning="DO_TMCyclePurgeRoutineRunning" doTmLeakCheckRoutineRunning="DO_TMLeakCheckRoutineRunning" doTmPumpDownRoutineRunning="DO_TMPumpDownRoutineRunning" doTmServoPressRoutineRunning="DO_TMServoPressRoutineRunning" doTmVentUpRoutineRunning="DO_TMVentUpRoutineRunning" doLLCyclePurgeRoutineRunning="DO_LoadCyclePurgeRoutineRunning" doLLLeakCheckRoutineRunning="DO_LoadLeakCheckRoutineRunning" doLLPumpDownRoutineRunning="DO_LoadPumpDownRoutineRunning" doLLVentUpRoutineRunning="DO_LoadVentUpRoutineRunning" diVacRobotExtenLLEnableFB="DI_VacRobotExtenLoadEnableFB" diVacRobotExtendBufferEnableFB="DI_VacRobotExtendBufferEnableFB" diVacRobotExtendPMAEnableFB="DI_VacRobotExtendPMAEnableFB" diATMRobotExtendUnloadEnableFB="DI_ATMRobotExtendUnloadEnableFB" diATMRobotExtendLoadLSideEnableFB="DI_ATMRobotExtendLoadLSideEnableFB" diATMRobotExtendLoadRSideEnableFB="DI_ATMRobotExtendLoadRSideEnableFB" diVacRobotExtendUnloadEnableFB="DI_VacRobotExtendUnloadEnableFB" diVacRobotExtendPMBEnableFB="DI_VacRobotExtendPMBEnableFB" doVacRobotExtenLLEnable="DO_VacRobotExtenLoadEnable" doVacRobotExtendBufferEnable="DO_VacRobotExtendBufferEnable" doVacRobotExtendPMAEnable="DO_VacRobotExtendPMAEnable" doVacRobotExtendUnloadEnable="DO_VacRobotExtendUnloadEnable" doVacRobotExtendPMBEnable="DO_VacRobotExtendPMBEnable" doATMRobotExtendUnloadEnable="DO_ATMRobotExtendUnloadEnable" doATMRobotExtendLoaLSideEnable="DO_ATMRobotExtendLoaLSideEnable" doATMRobotExtendLoaRSideEnable="DO_ATMRobotExtendLoaRSideEnable" doRectorAATMTransferReady="DO_ReactorAATMTransferReady" doRectorAProcessTransferReady="DO_ReactorAProcessTransferReady" doPm1LidClosed="DO_PM1LidClosed" doRectorBATMTransferReady="DO_ReactorBATMTransferReady" doRectorBProcessTransferReady="DO_ReactorBProcessTransferReady" doPm2LidClosed="DO_PM2LidClosed" doUnLoadPurgeRoutineRunning="DO_UnLoadCyclePurgeRoutineRunning" doUnLoadLeakCheckRoutineRunning="DO_UnLoadLeakCheckRoutineRunning" doUnLoadPumpDownRoutineRunning="DO_UnLoadPumpDownRoutineRunning" doUnLoadVentUpRoutineRunning="DO_UnLoadVentUpRoutineRunning" diTMLidClosed="DI_TMLidClosed"/>
</IoInterLocks>
<IoMfcs classType="Aitex.Core.RT.Device.Devices.IoMFC" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoMfc3 id="Mfc60" module="TM" display="Mfc60" schematicId="Mfc60" unit="sccm"

View File

@ -228,6 +228,7 @@
<DO_ITEM Index="84" Name="DO_LoadAtProcessPress" BufferOffset="84" Addr="84" Description="" />
<DO_ITEM Index="85" Name="DO_LoadTempReady" BufferOffset="85" Addr="85" Description="" />
<DO_ITEM Index="86" Name="DO_BufferTempReady" BufferOffset="86" Addr="86" Description="" />
<DO_ITEM Index="88" Name="DO_TMCyclePurgeRoutineSuccessed" BufferOffset="88" Addr="88" Description="" />
<DO_ITEM Index="89" Name="DO_TMCyclePurgeRoutineRunning" BufferOffset="89" Addr="89" Description="" />
<DO_ITEM Index="90" Name="DO_TMLeakCheckRoutineRunning" BufferOffset="90" Addr="90" Description="" />
<DO_ITEM Index="91" Name="DO_TMPumpDownRoutineRunning" BufferOffset="91" Addr="91" Description="" />

View File

@ -18,7 +18,9 @@ namespace SicModules.Devices
private AIAccessor _aiTmPressure = null;
private AIAccessor _aiLLPressure = null;
private DIAccessor _diTMUnderVac = null;
private DIAccessor _diTMLidClosed = null;
private DOAccessor _doTmCyclePurgeRoutineSuccessed = null;
private DOAccessor _doTmCyclePurgeRoutineRunning = null;
private DOAccessor _doTmLeakCheckRoutineRunning = null;
private DOAccessor _doTmPumpDownRoutineRunning = null;
@ -82,8 +84,10 @@ namespace SicModules.Devices
_diLoadLockAtATM = ParseDiNode("diLoadLockAtATm", node, ioModule);
_aiTmPressure = ParseAiNode("aiTmPressure", node, ioModule);
_aiLLPressure = ParseAiNode("aiLLPressure", node, ioModule);
_diTMUnderVac = ParseDiNode("diTmUnderVac", node, ioModule);
_diTMUnderVac = ParseDiNode("diTmUnderVac", node, ioModule);
_diTMLidClosed = ParseDiNode("diTMLidClosed", node, ioModule);
_doTmCyclePurgeRoutineSuccessed = ParseDoNode("doTmCyclePurgeRoutineSuccessed", node, ioModule);
_doTmCyclePurgeRoutineRunning = ParseDoNode("doTmCyclePurgeRoutineRunning", node, ioModule);
_doTmLeakCheckRoutineRunning = ParseDoNode("doTmLeakCheckRoutineRunning", node, ioModule);
_doTmPumpDownRoutineRunning = ParseDoNode("doTmPumpDownRoutineRunning", node, ioModule);
@ -187,6 +191,25 @@ namespace SicModules.Devices
}
}
public bool DoTmCyclePurgeRoutineSuccessed
{
get
{
if (_doTmCyclePurgeRoutineSuccessed != null)
{
return _doTmCyclePurgeRoutineSuccessed.Value;
}
return false;
}
set
{
if (_doTmCyclePurgeRoutineSuccessed != null)
{
_doTmCyclePurgeRoutineSuccessed.Value = value;
}
}
}
public bool DoTmCyclePurgeRoutineRunning
{
get
@ -358,14 +381,6 @@ namespace SicModules.Devices
}
}
public bool DoUnLoadPurgeRoutineRunning
{
get
@ -442,8 +457,6 @@ namespace SicModules.Devices
}
}
public bool DoVacRobotExtendPMAEnable
{
get
@ -537,9 +550,6 @@ namespace SicModules.Devices
}
}
public bool DiVacRobotExtenLLEnableFB
{
get
@ -891,7 +901,21 @@ namespace SicModules.Devices
return true;
}
public bool SetTMPurgeRoutineSuccessed(bool eValue, out string reason)
{
reason = string.Empty;
if (!_doTmCyclePurgeRoutineSuccessed.Check(eValue, out reason))
{
return false;
}
if (!_doTmCyclePurgeRoutineSuccessed.SetValue(eValue, out reason))
{
return false;
}
return true;
}
public bool SetTMPurgeRoutineRunning(bool eValue, out string reason)
@ -1099,6 +1123,10 @@ namespace SicModules.Devices
{
_doLLAtProcessPress.Value = _aiLLPressure != null && _aiLLPressure.FloatValue <= _scLoadLockVacBasePressure.DoubleValue;
if(!_diTMLidClosed.Value)
{
_doTmCyclePurgeRoutineSuccessed.Value = false;
}
}
public void Reset()

View File

@ -147,6 +147,9 @@ namespace SicModules.TMs.Routines
EV.PostAlarmLog(Module, $"can not Purge,{reason}");
return Result.FAIL;
}
_tmIoInterLock.DoTmCyclePurgeRoutineSuccessed = false;
if (SC.GetValue<bool>("System.IsATMMode"))
{
return Result.DONE;
@ -243,10 +246,10 @@ namespace SicModules.TMs.Routines
return Result.FAIL;
}
Notify($"Finished ! Elapsed time: {(int)(_swTimer.ElapsedMilliseconds / 1000)} s");
_tmIoInterLock.DoTmCyclePurgeRoutineRunning = false;
_tmIoInterLock.DoTmCyclePurgeRoutineSuccessed = true;
return Result.DONE;
}
@ -254,8 +257,7 @@ namespace SicModules.TMs.Routines
public override void Abort()
{
_tmIoInterLock.DoTmCyclePurgeRoutineRunning = false;
//_pumpRoutine.Abort();
//_ventRoutine.Abort();
_tmIoInterLock.DoTmCyclePurgeRoutineSuccessed = false;
base.Abort();
}

View File

@ -18,6 +18,7 @@ using Aitex.Sorter.Common;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Event;
using MECF.Framework.Common.PLC;
using SicModules.Devices;
using SicModules.TMs.Routines;
using SicAds = SicModules.Devices.SicAds;
@ -215,6 +216,8 @@ namespace SicModules.TMs
private TMVerifySlitValveRoutine _slitValveVerifyRoutine;
private TMServoRoutine _servoTMRoutine;
private IoInterLockEx _tmIoInterLock;
private bool _isInit;
private bool _isStartTMRobotHome;
public bool IsTMRobotHomed { get; set; }
@ -232,6 +235,8 @@ namespace SicModules.TMs
Name = module.ToString();
IsOnline = false;
_tmIoInterLock = DEVICE.GetDevice<IoInterLockEx>("TM.IoInterLock");
EnumLoop<STATE>.ForEach((item) =>
{
MapState((int)item, item.ToString());
@ -846,6 +851,13 @@ namespace SicModules.TMs
private bool FsmStartSetOnline(object[] param)
{
//需检查是否完成TM Purge
if(!_tmIoInterLock.DoTmCyclePurgeRoutineSuccessed)
{
EV.PostWarningLog("TM", "TM Purge is not complete,cannot be online");
return true;
}
IsOnline = true;
return true;
}
@ -1104,6 +1116,13 @@ namespace SicModules.TMs
return false;
}
//需检查是否完成TM Purge
if (!_tmIoInterLock.DoTmCyclePurgeRoutineSuccessed)
{
EV.PostWarningLog("TM", "TM Purge is not complete,cannot be online");
return true;
}
IsOnline = true;
return true;
}

View File

@ -51,7 +51,7 @@ using System.Windows;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
[assembly: AssemblyVersion("1.2.1.53")]
[assembly: AssemblyVersion("1.2.1.54")]
[assembly: AssemblyInformationalVersion("手动通用版无EFEM")]

View File

@ -3,6 +3,16 @@
Manual-GE 手动通用版适用无EFEM设备
------
## Version 1.2.1.54
**2023-10-11**
- Bug修复
-
- 新特性
-1.TM增加DO_TMCyclePurgeRoutineSuccessed,TM Purge后置为trueTM开腔后该DO置为false
TM Online时需检查该DO为true
## Version 1.2.1.53
**2023-10-10**

View File

@ -218,6 +218,7 @@
<DO_ITEM Index="84" Name="DO_LoadAtProcessPress" BufferOffset="84" Addr="84" Description="" />
<DO_ITEM Index="85" Name="DO_LoadTempReady" BufferOffset="85" Addr="85" Description="" />
<DO_ITEM Index="86" Name="DO_BufferTempReady" BufferOffset="86" Addr="86" Description="" />
<DO_ITEM Index="88" Name="DO_TMCyclePurgeRoutineSuccessed" BufferOffset="88" Addr="88" Description="" />
<DO_ITEM Index="89" Name="DO_TMCyclePurgeRoutineRunning" BufferOffset="89" Addr="89" Description="" />
<DO_ITEM Index="90" Name="DO_TMLeakCheckRoutineRunning" BufferOffset="90" Addr="90" Description="" />
<DO_ITEM Index="91" Name="DO_TMPumpDownRoutineRunning" BufferOffset="91" Addr="91" Description="" />

View File

@ -54,6 +54,6 @@ using System.Windows;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.2.1.53")]
[assembly: AssemblyVersion("1.2.1.54")]
[assembly: AssemblyInformationalVersion("手动通用版无EFEM")]