public void MovePts(Pt2D sp) { var pts = this.Pts; foreach (Pt2D pt in pts) { pt.MovePt(sp); } }
public void Reset(string productID, FabStep targetStep, int loadedEqpCount, FabWeightPreset wp) { this.ProductID = productID; this.TargetStep = targetStep; this.LoadedEqpCount = loadedEqpCount; this._wpset = wp; this.LastPt2D = null; this.LastContPt = null; this.WipStepList.Clear(); }
private void CalcStepOutProfile_Tat() { var pts = this.Pts = new List <Pt2D>(); decimal now = 0; Pt2D.SetPt2D(pts, now, 0); now = _tatRun; Pt2D.SetPt2D(pts, now, _qtyRun); now += _tatWait; Pt2D.SetPt2D(pts, now, _qtyRun + _qtyWait); }
public void CalcProfile() { if (_isCalc) { return; } Pt2D pt = new Pt2D(0, 0); if (WipStepList.Count < 1) { LastPt2D = pt; return; } // -- tact time 설정 WipStep wipStep = this.WipStepList.Count > 0 ? this.WipStepList[0] : null; if (wipStep != null) { this.Tact = wipStep.Tact; } // -- 누적 graph 전개 List <Pt2D> pts = new List <Pt2D>(); pts.Add(pt); foreach (WipStep ws in this.WipStepList) { ws.MovePts(pt); pts.AddRange(ws.Pts); pt = ws.LastPt2D; } LastPt2D = pt; if (_wpset == null) { return; } LastContPt = LastPt2D; _isCalc = true; }
private void CalcStepOutProfile() { var pts = this.Pts = new List <Pt2D>(); decimal now = 0; Pt2D.SetPt2D(pts, now, 0); decimal cumQty = 0; //Run Wip (Tact / Tat 중 짧은 기준) decimal qtyRun = _qtyRun; decimal tactRun = qtyRun * this.Tact; decimal minTatRun = Math.Min(tactRun, this.RemainTatRun); decimal maxTatRun = Math.Max(tactRun, this.RemainTatRun); if (qtyRun > 0) { now = minTatRun; cumQty += qtyRun; Pt2D.SetPt2D(pts, now, cumQty); } //maxTatRun 기준 기록 if (maxTatRun > minTatRun) { now = maxTatRun; Pt2D.SetPt2D(pts, now, cumQty); } //Wait Wip (Tat 기준 최소 1CST 도착, 나머지는 수량은 Tact / Tat 중 긴 기준) decimal qtyWait = _qtyWait; decimal remainQty = qtyWait; decimal tactWait = qtyWait * this.Tact; //Tat 기준 최소 1CST if (tactWait > this.RemianTatWait) { decimal lotSize = SeeplanConfiguration.Instance.LotUnitSize; decimal minQty = Math.Min(remainQty, lotSize); now = maxTatRun + this.RemianTatWait; cumQty += minQty; Pt2D.SetPt2D(pts, now, cumQty); remainQty = remainQty - minQty; } //나머지 수량, Tact / Tat 중 긴 기준 decimal maxTatWait = Math.Max(tactWait, this.RemianTatWait); now = maxTatRun + maxTatWait; cumQty += remainQty; Pt2D.SetPt2D(pts, now, cumQty); //다음 Step의 Start Point 시간을 위해 기록 필요 (누적 그래프) if (maxTatWait < _tatWait) { now = maxTatRun + _tatWait; Pt2D.SetPt2D(pts, now, cumQty); } }