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:
Han Qiang Qiang 2023-11-23 17:29:24 +08:00
commit be325b67f9
18 changed files with 116 additions and 70 deletions

View File

@ -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>

View File

@ -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" />

View File

@ -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;
}
}

View File

@ -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());
}
}

View File

@ -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;

View File

@ -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()
{

View File

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

View File

@ -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**

View File

@ -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;

View File

@ -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>

View File

@ -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.