|
@@ -66,6 +66,9 @@ namespace Venus_RT.Modules
|
|
private List<MoveItem> _moveQueue = new List<MoveItem>();
|
|
private List<MoveItem> _moveQueue = new List<MoveItem>();
|
|
private List<MovingStatus> movingStatus = new List<MovingStatus>();
|
|
private List<MovingStatus> movingStatus = new List<MovingStatus>();
|
|
|
|
|
|
|
|
+ private double _throughput = 0;
|
|
|
|
+ private DateTime _starttime;
|
|
|
|
+
|
|
public int? CycleIndex;
|
|
public int? CycleIndex;
|
|
|
|
|
|
private int CycledWafer => _currentWafer + _pastWafer;
|
|
private int CycledWafer => _currentWafer + _pastWafer;
|
|
@@ -102,6 +105,7 @@ namespace Venus_RT.Modules
|
|
DATA.Subscribe("SEScheduler.CycledWafer", ()=> CycledWafer );
|
|
DATA.Subscribe("SEScheduler.CycledWafer", ()=> CycledWafer );
|
|
DATA.Subscribe("SEScheduler.CycleSetPoint", ()=> CycleNum);
|
|
DATA.Subscribe("SEScheduler.CycleSetPoint", ()=> CycleNum);
|
|
DATA.Subscribe("SEScheduler.CycleCount", ()=> CycleIndex);
|
|
DATA.Subscribe("SEScheduler.CycleCount", ()=> CycleIndex);
|
|
|
|
+ DATA.Subscribe("SEScheduler.ThroughPut", ()=> _throughput);
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
@@ -165,6 +169,7 @@ namespace Venus_RT.Modules
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ _starttime = DateTime.Now;
|
|
_cycleState = RState.Running;
|
|
_cycleState = RState.Running;
|
|
}
|
|
}
|
|
//processJob(sequence num) ControlJob(1)
|
|
//processJob(sequence num) ControlJob(1)
|
|
@@ -378,7 +383,7 @@ namespace Venus_RT.Modules
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
- #region
|
|
|
|
|
|
+ #region 推进|检查|计数
|
|
private void CheckCycleDone()
|
|
private void CheckCycleDone()
|
|
{
|
|
{
|
|
|
|
|
|
@@ -391,7 +396,8 @@ namespace Venus_RT.Modules
|
|
if(WaferManager.Instance.CheckHasWafer(ModuleName.VCE1,index) && movingStatus[index] == MovingStatus.Idle)
|
|
if(WaferManager.Instance.CheckHasWafer(ModuleName.VCE1,index) && movingStatus[index] == MovingStatus.Idle)
|
|
_currentWafer ++;
|
|
_currentWafer ++;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //throughput = CycledWafer/time, time(h)
|
|
|
|
+ _throughput = Math.Round(CycledWafer / (DateTime.Now - _starttime).TotalSeconds * 3600,2);
|
|
//how to confirm a sequence is over?
|
|
//how to confirm a sequence is over?
|
|
//3、wafer is all in vce
|
|
//3、wafer is all in vce
|
|
//2、all status is over => idle
|
|
//2、all status is over => idle
|
|
@@ -885,7 +891,7 @@ namespace Venus_RT.Modules
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
- #region 检查函数
|
|
|
|
|
|
+ #region 搜索函数
|
|
|
|
|
|
//回到的槽位确认 采用补进方式即自底向上填
|
|
//回到的槽位确认 采用补进方式即自底向上填
|
|
private List<int> GetReadyInSlot(ModuleName module, int slotCount)
|
|
private List<int> GetReadyInSlot(ModuleName module, int slotCount)
|