Merge branch 'Sic8ToSic6' into 添加C2H4-C3H8可配置
# Conflicts: # SicRT/Properties/AssemblyInfo.cs # SicRT/ReleaseNotes.md # SicUI/Properties/AssemblyInfo.cs # ThirdParty/MECF.Framework/MECF.Framework.Common.dll # ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll # ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll # ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll # ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll # ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll
This commit is contained in:
commit
be325b67f9
|
@ -1,7 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<STEvents>
|
||||
<STPatterns>
|
||||
<!--注意:"JobDone"为系统保留模式,请仅更改"pattern",其余属性请勿修改 -->
|
||||
<!--
|
||||
“STPattern” 节点用于定义三色灯或蜂鸣器的工作模式,其中
|
||||
name: 名称,在STEvent节点中使用此名称指定某个灯或蜂鸣器的工作模式
|
||||
pattern: 工作模式,其中-表示导通10ms,.表示关闭10ms
|
||||
cycles: 循环次数,-1表示无限循环
|
||||
priority: 优先级,数字越小优先级越高。如果某个灯或蜂鸣器同时满足多个条件时,使用优先级最高的工作模式;如果多个条件优先级相同,按本文件定义的顺序,使用第一个工作模式
|
||||
part: JobDone模式专用,其它模式请勿使用此属性
|
||||
-->
|
||||
|
||||
<!--注意:"JobDone"为系统保留模式,请支持更改"pattern",其余属性请勿修改 -->
|
||||
<STPattern name="JobDone" pattern="--.........." cycles="-1" priority="-1" part="Buzzer" />
|
||||
|
||||
<STPattern name="AlarmWithoutAck" pattern="-----....." cycles="-1" priority="0"/>
|
||||
|
@ -32,7 +41,7 @@
|
|||
<STEvent name ="WaferRobot.IsBusy" Red="Off" Yellow="Off" Green="On" Buzzer="Off"/>
|
||||
<STEvent name ="TrayRobot.IsBusy" Red="Off" Yellow="Off" Green="On" Buzzer="Off"/>
|
||||
<STEvent name ="System.IsAutoRunning" Red="Off" Yellow="Off" Green="On" Buzzer="Off"/>
|
||||
<STEvent name ="System.IsAutoIdle" Red="Off" Yellow="Off" Green="On" Buzzer="Off"/>
|
||||
<STEvent name ="System.IsAutoIdle" Red="Off" Yellow="Off" Green="On" Buzzer="Off"/>
|
||||
</STEvents>
|
||||
</STEvents>
|
||||
|
||||
|
|
|
@ -707,7 +707,7 @@
|
|||
<config default="25" name="DefaultSetPoint" description="DefaultSetPoint" max="500" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="N2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
<config default="false" name="IsInstalled" description="MFC5是否安装" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="IsInstalled" description="MFC5是否安装" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
</configs>
|
||||
<configs name="Mfc6">
|
||||
<config default="1000" name="N2Scale" description="Scale" max="1000000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
|
@ -1241,7 +1241,7 @@
|
|||
<config default="25" name="DefaultSetPoint" description="DefaultSetPoint" max="500" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="N2" name="GasName" description="Gas Name" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
<config default="false" name="IsInstalled" description="MFC5是否安装" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="IsInstalled" description="MFC5是否安装" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
</configs>
|
||||
<configs name="Mfc6">
|
||||
<config default="1000" name="N2Scale" description="Scale" max="1000000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
|
|
|
@ -1930,25 +1930,25 @@ namespace SicRT.Modules
|
|||
|
||||
private void MonitorTmRobotTask()
|
||||
{
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return;
|
||||
|
||||
foreach (var pm in _lstPms)
|
||||
// TMRobot Idle或者Error时,清除被传盘对象的等待状态
|
||||
if (_tmRobot.CheckTaskDone())
|
||||
{
|
||||
if (pm.IsWaitTransfer(ModuleName.TMRobot))
|
||||
foreach (var pm in _lstPms.Where(pm => pm.IsWaitTransfer(ModuleName.TMRobot)))
|
||||
{
|
||||
pm.StopWaitTransfer(ModuleName.TMRobot);
|
||||
}
|
||||
|
||||
if (_buffer.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_buffer.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_load.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
if (_unload.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_unload.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
}
|
||||
|
||||
if (_buffer.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_buffer.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_load.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
if (_unload.IsWaitTransfer(ModuleName.TMRobot))
|
||||
_unload.StopWaitTransfer(ModuleName.TMRobot);
|
||||
|
||||
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return;
|
||||
|
||||
|
@ -1960,22 +1960,25 @@ namespace SicRT.Modules
|
|||
|
||||
private void MonitorWaferRobotTask()
|
||||
{
|
||||
foreach (var cass in _lstWaferCassettes)
|
||||
// WaferRobot Idle或者Error时,清除被传盘对象的等待状态
|
||||
if (_waferRobot.CheckTaskDone())
|
||||
{
|
||||
if (cass.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
cass.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
foreach (var cassette in _lstWaferCassettes.Where(cassette =>
|
||||
cassette.IsWaitTransfer(ModuleName.WaferRobot)))
|
||||
{
|
||||
cassette.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
}
|
||||
|
||||
if (_aligner.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_aligner.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_load.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
|
||||
if (_unload.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_unload.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
}
|
||||
|
||||
if (_aligner.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_aligner.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_load.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
|
||||
if (_unload.IsWaitTransfer(ModuleName.WaferRobot))
|
||||
_unload.StopWaitTransfer(ModuleName.WaferRobot);
|
||||
|
||||
|
||||
if (!_waferRobot.IsAvailable)
|
||||
return;
|
||||
|
||||
|
@ -1987,17 +1990,18 @@ namespace SicRT.Modules
|
|||
|
||||
private void MonitorTrayRobotTask()
|
||||
{
|
||||
if (_cassetteBL.IsWaitTransfer(ModuleName.TrayRobot))
|
||||
_cassetteBL.StopWaitTransfer(ModuleName.TrayRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.TrayRobot))
|
||||
_load.StopWaitTransfer(ModuleName.TrayRobot);
|
||||
// TrayRobot Idle或者Error时,清除被传盘对象的等待状态
|
||||
if (_trayRobot.CheckTaskDone())
|
||||
{
|
||||
if (_cassetteBL.IsWaitTransfer(ModuleName.TrayRobot))
|
||||
_cassetteBL.StopWaitTransfer(ModuleName.TrayRobot);
|
||||
|
||||
if (_load.IsWaitTransfer(ModuleName.TrayRobot))
|
||||
_load.StopWaitTransfer(ModuleName.TrayRobot);
|
||||
}
|
||||
|
||||
if (!_trayRobot.IsAvailable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var act = trayRobotActions.Peek();
|
||||
act.Invoke();
|
||||
|
@ -2884,7 +2888,7 @@ namespace SicRT.Modules
|
|||
{
|
||||
if (_waferRobot.Place(_cassetteAL.Module, wafer.WaferOriginSlot, Hand.Blade1))
|
||||
{
|
||||
_cassetteAL.WaitTransfer(ModuleName.WaferRobot);
|
||||
_cassetteAL.WaitTransfer(ModuleName.WaferRobot, false, wafer.WaferOriginSlot);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2895,7 +2899,7 @@ namespace SicRT.Modules
|
|||
{
|
||||
if (_waferRobot.Place(_cassetteAR.Module, wafer.WaferOriginSlot, Hand.Blade1))
|
||||
{
|
||||
_cassetteAR.WaitTransfer(ModuleName.WaferRobot);
|
||||
_cassetteAR.WaitTransfer(ModuleName.WaferRobot, false, wafer.WaferOriginSlot);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2957,7 +2961,7 @@ namespace SicRT.Modules
|
|||
{
|
||||
if (_waferRobot.Pick(position.Module, position.Slot, Hand.Blade1))
|
||||
{
|
||||
_cassetteAL.WaitTransfer(ModuleName.WaferRobot);
|
||||
_cassetteAL.WaitTransfer(ModuleName.WaferRobot, true, position.Slot);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2968,7 +2972,7 @@ namespace SicRT.Modules
|
|||
{
|
||||
if (_waferRobot.Pick(position.Module, position.Slot, Hand.Blade1))
|
||||
{
|
||||
_cassetteAR.WaitTransfer(ModuleName.WaferRobot);
|
||||
_cassetteAR.WaitTransfer(ModuleName.WaferRobot, true, position.Slot);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Linq;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using SicModules.Cassettes;
|
||||
using SicModules.PMs;
|
||||
using SicRT.Equipments.Systems;
|
||||
|
@ -64,6 +65,13 @@ namespace SicRT.Modules.Schedulers
|
|||
return true;
|
||||
}
|
||||
|
||||
[Obsolete("Cassette等待传盘时不要使用这个函数,用另一个包含三个参数的函数。")]
|
||||
public override bool WaitTransfer(ModuleName robot)
|
||||
{
|
||||
Debug.Assert(false, "DO NOT use this method for cassette scheduler.");
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public bool WaitTransfer(ModuleName robot, bool isPick, int slot)
|
||||
{
|
||||
_lastTransferAction = isPick ? TaskType.Pick : TaskType.Place;
|
||||
|
@ -81,7 +89,7 @@ namespace SicRT.Modules.Schedulers
|
|||
if (_lastTransferAction == TaskType.Place
|
||||
&& WaferManager.Instance.CheckHasWafer(_module, _lastTransferSlot))
|
||||
{
|
||||
EV.PostMessage(Module.ToString(), EventEnum.PJ_DONE, _module, _lastTransferSlot.ToString());
|
||||
EV.PostMessage(Module.ToString(), EventEnum.PJ_DONE, _module, (_lastTransferSlot + 1).ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,10 +52,10 @@ namespace SicRT.Modules.Schedulers
|
|||
/// </summary>
|
||||
protected readonly object SyncRoot = new object();
|
||||
|
||||
private R_TRIG[] firstDetectWaferArriveTrigs = new R_TRIG[25];
|
||||
private R_TRIG[] firstDetectWaferLeaveTrigs = new R_TRIG[25];
|
||||
private R_TRIG[] firstDetectTrayArriveTrigs = new R_TRIG[25];
|
||||
private R_TRIG[] firstDetectTrayLeaveTrigs = new R_TRIG[25];
|
||||
private readonly R_TRIG[] firstDetectWaferArriveTrigs = new R_TRIG[25];
|
||||
private readonly R_TRIG[] firstDetectWaferLeaveTrigs = new R_TRIG[25];
|
||||
private readonly R_TRIG[] firstDetectTrayArriveTrigs = new R_TRIG[25];
|
||||
private readonly R_TRIG[] firstDetectTrayLeaveTrigs = new R_TRIG[25];
|
||||
|
||||
protected string _module;
|
||||
|
||||
|
@ -191,7 +191,7 @@ namespace SicRT.Modules.Schedulers
|
|||
_timTransferTargetStatusTimeout.Stop();
|
||||
}
|
||||
|
||||
public bool WaitTransfer(ModuleName robot)
|
||||
public virtual bool WaitTransfer(ModuleName robot)
|
||||
{
|
||||
_task = TaskType.TransferTarget;
|
||||
_inProcessRobot = robot;
|
||||
|
|
|
@ -6,26 +6,26 @@ namespace SicRT.Modules.Schedulers
|
|||
{
|
||||
public class SchedulerModuleFactory
|
||||
{
|
||||
protected SchedulerTMRobot _tmRobot = new SchedulerTMRobot();
|
||||
protected SchedulerWaferRobot _waferRobot = new SchedulerWaferRobot();
|
||||
protected SchedulerTrayRobot _trayRobot = new SchedulerTrayRobot();
|
||||
protected SchedulerTMRobot _tmRobot = new();
|
||||
protected SchedulerWaferRobot _waferRobot = new();
|
||||
protected SchedulerTrayRobot _trayRobot = new();
|
||||
|
||||
protected SchedulerBuffer _buffer = new SchedulerBuffer(ModuleName.Buffer);
|
||||
protected SchedulerLoadLock _load = new SchedulerLoadLock(ModuleName.LoadLock);
|
||||
protected SchedulerUnLoad _unload = new SchedulerUnLoad(ModuleName.UnLoad);
|
||||
protected SchedulerAligner _aligner = new SchedulerAligner(ModuleName.Aligner);
|
||||
protected SchedulerBuffer _buffer = new(ModuleName.Buffer);
|
||||
protected SchedulerLoadLock _load = new(ModuleName.LoadLock);
|
||||
protected SchedulerUnLoad _unload = new(ModuleName.UnLoad);
|
||||
protected SchedulerAligner _aligner = new(ModuleName.Aligner);
|
||||
|
||||
protected SchedulerPM _pm1 = new SchedulerPM(ModuleName.PM1);
|
||||
protected SchedulerPM _pm1 = new(ModuleName.PM1);
|
||||
|
||||
|
||||
protected SchedulerPM _pm2 = new SchedulerPM(ModuleName.PM2);
|
||||
protected SchedulerPM _pm2 = new(ModuleName.PM2);
|
||||
|
||||
protected SchedulerCassette _cassetteAL = new SchedulerCassette(ModuleName.CassAL);
|
||||
protected SchedulerCassette _cassetteAR = new SchedulerCassette(ModuleName.CassAR);
|
||||
protected SchedulerCassette _cassetteBL = new SchedulerCassette(ModuleName.CassBL);
|
||||
protected SchedulerCassette _cassetteAL = new(ModuleName.CassAL);
|
||||
protected SchedulerCassette _cassetteAR = new(ModuleName.CassAR);
|
||||
protected SchedulerCassette _cassetteBL = new(ModuleName.CassBL);
|
||||
|
||||
protected List<SchedulerPM> _lstPms = new List<SchedulerPM>();
|
||||
protected List<SchedulerCassette> _lstWaferCassettes = new List<SchedulerCassette>();
|
||||
protected List<SchedulerPM> _lstPms = new();
|
||||
protected List<SchedulerCassette> _lstWaferCassettes = new();
|
||||
|
||||
protected SchedulerModuleFactory()
|
||||
{
|
||||
|
|
|
@ -51,5 +51,5 @@ using System.Windows;
|
|||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
|
||||
[assembly: AssemblyVersion("1.1.1.4")]
|
||||
[assembly: AssemblyVersion("1.1.3.6")]
|
||||
[assembly: AssemblyInformationalVersion("自动通用版(有EFEM)")]
|
|
@ -2,16 +2,37 @@
|
|||
# Sic Auto-GE 系统更新历史记录
|
||||
Auto-GE 自动通用版(适用有EFEM设备)
|
||||
|
||||
## Version 1.1.1.4
|
||||
**2023-11-22**
|
||||
|
||||
## Version 1.1.3.6
|
||||
**2023-11-23**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
- 修正工艺完成,Wafer回到Cassette后,三色灯没有提示的问题
|
||||
- 修正DataLog查询日志时,时间排序可能错乱的问题
|
||||
- 新特性
|
||||
- 1添加MFC5参数IsInstalled,控制界面显示,修改MFC控制流程
|
||||
- 2添加ChType参数,控制界面显示C2H4或者C3H8
|
||||
- 3优化气体流量统计和LineHeater
|
||||
|
||||
|
||||
## Version 1.1.3.5
|
||||
**2023-11-23**
|
||||
|
||||
- Bug修复
|
||||
- 修正工艺完成,Wafer回到Cassette后,三色灯没有提示的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
|
||||
## Version 1.1.2.4
|
||||
**2023-11-22**
|
||||
|
||||
- Bug修复
|
||||
- 修正TrayRobot、LL、TM、PM无法手动拖放Tray的问题
|
||||
- 新特性
|
||||
- 系统配置增加MFC5是否安装的设置项
|
||||
|
||||
|
||||
## Version 1.1.1.3
|
||||
**2023-11-19**
|
||||
|
||||
|
|
|
@ -86,6 +86,10 @@ namespace SicSimulator.Instances
|
|||
IO.DI["DI_BufferStationLidClosed"].Value = true;
|
||||
IO.DI["DI_UnloadStationLidClosed"].Value = true;
|
||||
|
||||
IO.DI["DI_WaferCassetLeftInch6"].Value = true;
|
||||
IO.DI["DI_WaferCassetRightInch6"].Value = true;
|
||||
IO.DI["DI_TrayCassetInch6"].Value = true;
|
||||
|
||||
IO.DI["DI_WaferCassetLeftInch8"].Value = true;
|
||||
IO.DI["DI_WaferCassetRightInch8"].Value = true;
|
||||
IO.DI["DI_TrayCassetInch8"].Value = true;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
ToolTip="{Binding ToolTip}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
TrayProcessCount="{Binding TrayProcessCount}"
|
||||
TrayStatus="{Binding TrayState}"
|
||||
TrayStatus="{Binding WaferTrayStatus}"
|
||||
ViewType="Top"
|
||||
WaferStatus="{Binding WaferStatus}">
|
||||
<ctrl:Slot.RenderTransform>
|
||||
|
|
|
@ -54,5 +54,5 @@ 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.1.1.4")]
|
||||
[assembly: AssemblyVersion("1.1.3.6")]
|
||||
[assembly: AssemblyInformationalVersion("自动通用版(有EFEM)")]
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue