private void btGoClick(object sender, EventArgs e) { //Button Bt = sender as Button; //uint uPstnNo = (uint)Bt.Tag; if (!ML.MT_GetStop(m_uMotrId)) { ML.MT_Stop(m_uMotrId); } int iBtnTag = Convert.ToInt32(((Button)sender).Tag); uint uPstnNo = (uint)iBtnTag; bool bRet = true; if (Log.ShowMessageModal("Confirm", "Do you want to Part Move?") != DialogResult.Yes) { return; } //if (MessageBox.Show(new Form{TopMost = true},"Part를 이동하시겠습니까?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; if (CheckSafe != null) { if (!CheckSafe((mi)m_uMotrId, (pv)uPstnNo)) { bRet = false; } } //if(m_uMotrId == (int)mi.IDX_X) bRet = SEQ.IDX.CheckSafe((mi)m_uMotrId, uPstnNo); if (!bRet) { return; } ML.MT_GoAbsRun(m_uMotrId, PM.GetValue(m_uMotrId, uPstnNo), PM.GetValueSpdPer(m_uMotrId, uPstnNo)); }
private void btGoClick(object sender, EventArgs e) { //Button Bt = sender as Button; //uint uPstnNo = (uint)Bt.Tag; int iBtnTag = Convert.ToInt32(((Button)sender).Tag); uint uPstnNo = (uint)iBtnTag; if (Log.ShowMessageModal("Confirm", "Do you want to Part Move?") != DialogResult.Yes) { return; } //if (MessageBox.Show(new Form{TopMost = true},"Part를 이동하시겠습니까?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; if (CheckSafe != null) { if (!CheckSafe(m_uMotrId, uPstnNo)) { return; } } SML.MT.GoAbsRun((int)m_uMotrId, PM.GetValue(m_uMotrId, uPstnNo)); }
public bool CheckSafe(mi _eMotr, pv _ePstn, double _dOfsPos = 0) { double dDstPos = PM_GetValue(_eMotr, _ePstn) + _dOfsPos; if (MT_CmprPos(_eMotr, dDstPos)) { return(true); } bool bRet = true; string sMsg = ""; //TOOL_ZVisn if (_eMotr == mi.ULDR_XNzzl) { } else if (_eMotr == mi.ULDR_XGrpr) { } else if (_eMotr == mi.ULDR_YIndx) { if (MT_GetCmdPos(mi.ULDR_ZNzzl) > PM.GetValue(mi.ULDR_ZNzzl, pv.ULDR_ZNzzlWait) + 10) { sMsg = MT_GetName(mi.ULDR_ZNzzl) + "is not wait Position"; bRet = false; } if (CL_GetCmd(ci.ULDR_OutPshrFwBw) != fb.Bwd) { sMsg = CL_GetName(ci.ULDR_OutPshrFwBw) + "is not Bwd"; bRet = false; } } else if (_eMotr == mi.ULDR_ZNzzl) { } else if (_eMotr == mi.ULDR_ZPckr) { } else { sMsg = "Motor " + MT_GetName(_eMotr) + " is Not this parts."; bRet = false; } if (!bRet) { m_sCheckSafeMsg = sMsg; Trace(MT_GetName(_eMotr) + " " + sMsg); //메뉴얼 동작일때. if (Step.eSeq == 0) { Log.ShowMessage(MT_GetName(_eMotr), sMsg); } } else { m_sCheckSafeMsg = ""; } return(bRet); }
public bool CyclePush() { String sTemp; if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() && !OM.MstOptn.bDebugMode, 15000)) { sTemp = string.Format("Time Out Step.iCycle={0:00}", Step.iCycle); sTemp = m_sPartName + " " + Step.eSeq.ToString() + sTemp; ER_SetErr(ei.PRT_CycleTO, sTemp); Trace(sTemp); return(true); } if (Step.iCycle != PreStep.iCycle) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); Trace(sTemp); } PreStep.iCycle = Step.iCycle; if (Stat.bReqStop) { //return true ; } int r, c = -1; switch (Step.iCycle) { default: sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); //if(Step.iCycle != PreStep.iCycle)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: //MoveMotr(mi.LODR_XPckr , pv.LODR_XPckrPick); //MoveCyl(ci.LODR_PckrFwBw , fb.Fwd); MoveCyl(ci.LODR_PckrRtrCwCCw, fb.Bwd); //MoveCyl(ci.LODR_GrpRtrCwCCw , fb.Bwd); Step.iCycle++; return(false); case 11: //if(!MT_GetStopInpos(mi.LODR_XPckr))return false; if (!CL_Complete(ci.LODR_PckrRtrCwCCw, fb.Bwd)) { return(false); } //MoveCyl(ci.LODR_PshrRtrCwCCw , fb.Fwd); MoveCyl(ci.LODR_PckrFwBw, fb.Fwd); //MoveCyl(ci.LODR_RngGrpFwBw , fb.Bwd); Step.iCycle++; return(false); case 12: //if(!CL_Complete(ci.LODR_PshrRtrCwCCw)) return false; if (!CL_Complete(ci.LODR_PckrFwBw, fb.Fwd)) { return(false); } //if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Bwd)) return false; //MoveCyl(ci.LODR_PckrFwBw , fb.Fwd); Step.iCycle++; return(false); case 13: //if(!CL_Complete(ci.LODR_PckrFwBw)) return false; MoveMotr(mi.LODR_XPshr, pv.LODR_XPshrWorkEnd); Step.iCycle++; return(false); case 14: if (IO_GetX(xi.LODR_PshrLimt)) { MT_Stop(mi.LODR_XPshr); //Step.iCycle++; //return false; } if (!MT_GetStopInpos(mi.LODR_XPshr)) { return(false); } if (IO_GetX(xi.LODR_LastDetect)) { Step.iCycle++; return(false); } if (!MT_GetStopPos(mi.LODR_XPshr, pv.LODR_XPshrWorkEnd) && !IO_GetX(xi.LODR_LastDetect)) { ER_SetErr(ei.PRT_Missed, "Loader Pusher is not End Position"); Step.iCycle = 0; return(true); } FindChip(ri.LODR, out r, out c, cs.Work); DM.ARAY[ri.LODR].SetStat(r, c, cs.Empty); if (DM.ARAY[ri.LODR].CheckAllStat(cs.Empty)) { Step.iCycle = 100; return(false); } Step.iCycle = 0; return(true); case 15: if (!MT_GetStop(mi.LODR_XPshr)) { return(false); } //MoveMotr(mi.LODR_XPckr , pv.LODR_XPckrPick); IO_SetY(yi.LODR_PickrVac, true); m_tmDelay.Clear(); Step.iCycle++; return(false); case 16: //if(MT_GetStopInpos(mi.LODR_XPckr))return false; if (!m_tmDelay.OnDelay(OM.DevInfo.iPickDelay)) { return(false); } if (DM.ARAY[ri.TLDR].CheckAllStat(cs.None)) { MoveCyl(ci.LODR_GrpRtrCwCCw, fb.Bwd); } MT_GoIncVel(mi.LODR_XPshr, -PM.GetValue(mi.LODR_XPshr, pv.LODR_XPshrBackOfs), PM_GetValueSpdPer(mi.LODR_XPshr, pv.LODR_XPshrBackOfs)); Step.iCycle++; return(false); case 17: if (!MT_GetStopInpos(mi.LODR_XPshr)) { return(false); } MoveCyl(ci.LODR_PckrFwBw, fb.Bwd); //MoveCyl(ci.LODR_GrpRtrCwCCw , fb.Bwd); Step.iCycle++; return(false); case 18: //if (DM.ARAY[ri.TLDR].CheckAllStat(cs.None) && !CL_Complete(ci.LODR_GrpRtrCwCCw, fb.Bwd)) return false; if (!CL_Complete(ci.LODR_PckrFwBw, fb.Bwd)) { return(false); } MoveCyl(ci.LODR_PckrRtrCwCCw, fb.Fwd); Step.iCycle++; return(false); case 19: if (!CL_Complete(ci.LODR_PckrRtrCwCCw, fb.Fwd)) { return(false); } if (!IO_GetX(xi.LODR_PngDtct)) { if (iPickMissCnt >= OM.DevInfo.iPickMissCnt) { ER_SetErr(ei.PCK_PickMiss, "Loader Picker Pick Miss Error."); Step.iCycle = 0; return(true); } else { iPickMissCnt++; Step.iCycle = 10; return(false); } } iPickMissCnt = 0; DM.ARAY[ri.PLDR].SetStat(cs.Unknown); Step.iCycle = 0; return(true); case 100: MoveMotr(mi.LODR_XPshr, pv.LODR_XPshrWait); MoveCyl(ci.LODR_GuideOpCl, fb.Bwd); MoveCyl(ci.LODR_PckrFwBw, fb.Bwd); Step.iCycle++; return(false); case 101: if (!CL_Complete(ci.LODR_GuideOpCl, fb.Bwd)) { return(false); } if (!CL_Complete(ci.LODR_PckrFwBw, fb.Bwd)) { return(false); } MoveCyl(ci.LODR_RngJigFwBw, fb.Bwd); Step.iCycle++; return(false); case 102: if (!CL_Complete(ci.LODR_RngJigFwBw, fb.Bwd)) { return(false); } if (!MT_GetStopPos(mi.LODR_XPshr, pv.LODR_XPshrWait)) { return(false); } Step.iCycle++; return(false); case 103: MoveMotr(mi.LODR_YIndx, pv.LODR_YIndxWait); MoveCyl(ci.LODR_PshrRtrCwCCw, fb.Bwd); Step.iCycle++; return(false); case 104: if (!MT_GetStopPos(mi.LODR_YIndx, pv.LODR_YIndxWait)) { return(false); } if (!CL_Complete(ci.LODR_PshrRtrCwCCw, fb.Bwd)) { return(false); } FindChip(ri.LODR, out r, out c, cs.Work); DM.ARAY[ri.LODR].SetStat(r, c, cs.Empty); Step.iCycle = 0; return(true); } }
public bool CycleHome() { String sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 5000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_AllHomeTO, sTemp); Trace(sTemp); return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); Trace(sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //return true ; } switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); //if(Step.iHome != PreStep.iHome)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: CL_Move(ci.LODR_GuideOpCl, fb.Bwd); Step.iHome++; return(false); case 11: if (!CL_Complete(ci.LODR_GuideOpCl, fb.Bwd)) { return(false); } CL_Move(ci.LODR_RngJigFwBw, fb.Bwd); CL_Move(ci.LODR_PckrFwBw, fb.Bwd); Step.iHome++; return(false); case 12: if (!CL_Complete(ci.LODR_RngJigFwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.LODR_PckrFwBw, fb.Bwd)) { return(false); } CL_Move(ci.LODR_PckrRtrCwCCw, fb.Bwd); CL_Move(ci.LODR_GrpRtrCwCCw, fb.Bwd); //CL_Move(ci.LODR_PshrRtrCwCCw, fb.Fwd); CL_Move(ci.LODR_RngGrpFwBw, fb.Bwd); Step.iHome++; return(false); case 13: if (!CL_Complete(ci.LODR_PckrRtrCwCCw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.LODR_GrpRtrCwCCw, fb.Bwd)) { return(false); } //if (!CL_Complete(ci.LODR_PshrRtrCwCCw, fb.Bwd)) return false; if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Bwd)) { return(false); } MT_GoHome(mi.LODR_XPshr); Step.iHome++; return(false); case 14: if (!MT_GetHomeDone(mi.LODR_XPshr)) { return(false); } MT_GoAbsRun(mi.LODR_XPshr, PM.GetValue(mi.LODR_XPshr, pv.LODR_XPshrWait)); MT_GoHome(mi.LODR_XPckr); MT_GoHome(mi.LODR_YIndx); Step.iHome++; return(false); case 15: if (!MT_GetStopInpos(mi.LODR_XPshr)) { return(false); } if (!MT_GetHomeDone(mi.LODR_XPckr)) { return(false); } if (!MT_GetHomeDone(mi.LODR_YIndx)) { return(false); } MT_GoAbsRun(mi.LODR_XPckr, PM.GetValue(mi.LODR_XPckr, pv.LODR_XPckrWait)); MT_GoAbsRun(mi.LODR_YIndx, PM.GetValue(mi.LODR_YIndx, pv.LODR_YIndxWait)); Step.iHome++; return(false); case 16: if (!MT_GetStopInpos(mi.LODR_XPckr)) { return(false); } if (!MT_GetStopInpos(mi.LODR_YIndx)) { return(false); } Step.iHome = 0; return(true); } }
public bool CycleWork() { String sTemp; if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() && !OM.MstOptn.bDebugMode, 5000)) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); sTemp = m_sPartName + sTemp; ER_SetErr(ei.PRT_CycleTO, sTemp); Trace(sTemp); return(true); } if (Step.iCycle != PreStep.iCycle) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); Trace(sTemp); } PreStep.iCycle = Step.iCycle; if (Stat.bReqStop) { //return true ; } int r, c = -1; switch (Step.iCycle) { default: sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); //if(Step.iCycle != PreStep.iCycle)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: MoveCyl(ci.LODR_PckrRtrCwCCw, fb.Fwd); MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPickRtt); Step.iCycle++; return(false); case 11: if (!CL_Complete(ci.LODR_PckrRtrCwCCw, fb.Fwd)) { return(false); } if (!MT_GetStopPos(mi.LODR_XPckr, pv.LODR_XPckrPickRtt)) { return(false); } MoveCyl(ci.LODR_GrpRtrCwCCw, fb.Bwd); MoveCyl(ci.LODR_RngGrpFwBw, fb.Bwd); Step.iCycle++; return(false); case 12: if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.LODR_GrpRtrCwCCw, fb.Bwd)) { return(false); } MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPick); Step.iCycle++; return(false); case 13: if (!MT_GetStopPos(mi.LODR_XPckr, pv.LODR_XPckrPick)) { return(false); } MT_GoAbsVel(mi.LODR_XPckr, PM.GetValue(mi.LODR_XPckr, pv.LODR_XPckrPick) + 1, 10); Step.iCycle++; return(false); case 14: if (!MT_GetStopInpos(mi.LODR_XPckr)) { return(false); } //MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPick); Step.iCycle++; return(false); case 15: //if (!MT_GetStopPos(mi.LODR_XPckr, pv.LODR_XPckrPick)) return false; MoveCyl(ci.LODR_RngGrpFwBw, fb.Fwd); IO_SetY(yi.LODR_PickrVac, false); Step.iCycle++; return(false); case 16: if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Fwd)) { return(false); } MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPlceRtt); Step.iCycle++; return(false); case 17: if (!MT_GetStopInpos(mi.LODR_XPckr)) { return(false); } MoveCyl(ci.LODR_GrpRtrCwCCw, fb.Fwd); MoveCyl(ci.LODR_PckrRtrCwCCw, fb.Bwd); Step.iCycle++; return(false); case 18: if (!CL_Complete(ci.LODR_GrpRtrCwCCw, fb.Fwd)) { return(false); } MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPlce); Step.iCycle++; return(false); case 19: if (!MT_GetStopInpos(mi.LODR_XPckr)) { return(false); } //MoveCyl(ci.LODR_RngGrpFwBw , fb.Bwd); Step.iCycle++; return(false); case 20: if (!CL_Complete(ci.LODR_PckrRtrCwCCw, fb.Bwd)) { return(false); } DM.ShiftData(ri.PLDR, ri.TLDR); Step.iCycle = 0; return(true); } }
static public bool MT_CmprPos(mi _eMotrNo, pv _ePos, double _dRange = 0.0) { return(SM.MT.CmprPos((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos), _dRange)); }
static public void MT_GoAbsSlow(mi _eMotrNo, pv _ePos) { SM.MT.GoAbsSlow((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos)); }
public bool CheckSafe(mi _eMotr, pv _ePstn, double _dOfsPos = 0) { double dDstPos = PM_GetValue(_eMotr, _ePstn) + _dOfsPos; if (MT_CmprPos(_eMotr, dDstPos)) { return(true); } bool bRet = true; string sMsg = ""; bool bZPickFwd = MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPickFwd)); bool bZPlaceFwd = MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPlaceFwd)); bool bZPickBwd = MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPickBwd)); bool bZPlaceBwd = MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPlaceBwd)); bool bYWork = MT_CmprPos(mi.LODR_YClmp, PM.GetValue(mi.LODR_YClmp, pv.LODR_YClmpWork)); bool bYWait = MT_CmprPos(mi.LODR_YClmp, PM.GetValue(mi.LODR_YClmp, pv.LODR_YClmpWait)); bool bYNotW = !bYWork && !bYWait; bool bYFwd1 = MT_CmprPos(mi.LODR_YClmp, PM.GetValue(mi.LODR_YClmp, pv.LODR_YClmpPick)) && (MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPickBwd)) || MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPickFwd)) || MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpClampOn))); bool bYFwd2 = MT_CmprPos(mi.LODR_YClmp, PM.GetValue(mi.LODR_YClmp, pv.LODR_YClmpPlace)) && (MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPlaceBwd)) || MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpPlaceFwd)) || MT_CmprPos(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpClampOff))); if (!CL_Complete(ci.LODR_PusherFwBw, fb.Bwd)) { sMsg = "Need to Loader Pusher Bwd Position"; bRet = false; } if (IO_GetX(xi.PREB_PkgInDetect)) { sMsg = "Pre Buffer In Sensor Detected"; bRet = false; } if (_eMotr == mi.LODR_YClmp) { if (_ePstn == pv.LODR_YClmpPick) { if (!bZPickFwd) { sMsg = "Need to Loor Z Pick Fwd Position"; bRet = false; } } if (_ePstn == pv.LODR_YClmpPlace) { if (!bZPlaceFwd) { sMsg = "Need to Loor Z Place Fwd Position"; bRet = false; } } if (_ePstn == pv.LODR_YClmpWait) { if (!bYWork && !bZPickBwd && !bZPlaceBwd) { sMsg = "Need to Loor Z Pick or Place Bwd Position"; bRet = false; } } if (_ePstn == pv.LODR_YClmpWork) { if (!bYWait && !bZPickBwd && !bZPlaceBwd) { sMsg = "Need to Loor Z Pick or Place Bwd Position"; bRet = false; } } } else if (_eMotr == mi.LODR_ZClmp) { if (_ePstn == pv.LODR_ZClmpPickBwd) { if (!bYFwd1) { sMsg = "Need to Loor Y Z Pick Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpPickFwd) { if (bYNotW && !bYFwd1) { sMsg = "Need to Loor Wait or Work Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpClampOn) { if (!bYFwd1) { sMsg = "Need to Loor Y Z Pick Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpPlaceBwd) { if (!bYFwd2) { sMsg = "Need to Loor Y Z Place Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpPlaceFwd) { if (bYNotW && !bYFwd2) { sMsg = "Need to Loor Wait or Work Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpClampOff) { if (!bYFwd2) { sMsg = "Need to Loor Y Z Place Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpWait) { if (bYNotW) { sMsg = "Need to Loor Wait or Work Position"; bRet = false; } } if (_ePstn == pv.LODR_ZClmpWorkStart) { if (bYNotW) { sMsg = "Need to Loor Wait or Work Position"; bRet = false; } } } else { sMsg = "Motor " + MT_GetName(_eMotr) + " is Not this parts."; bRet = false; } if (!bRet) { m_sCheckSafeMsg = sMsg; Trace(MT_GetName(_eMotr) + " " + sMsg); //메뉴얼 동작일때. if (Step.eSeq == sc.Idle) { Log.ShowMessage(MT_GetName(_eMotr), sMsg); } } else { m_sCheckSafeMsg = ""; } return(bRet); }
private void btGoClick(object sender, EventArgs e) { //Button Bt = sender as Button; //uint uPstnNo = (uint)Bt.Tag; int iBtnTag = Convert.ToInt32(((Button)sender).Tag); uint uPstnNo = (uint)iBtnTag; bool bRet = true; if (SEQ._iSeqStat == EN_SEQ_STAT.Init || SEQ._iSeqStat == EN_SEQ_STAT.Manual || SEQ._iSeqStat == EN_SEQ_STAT.Running) { Log.ShowMessage("Error", "Machine is Moving now!"); return; } if (Log.ShowMessageModal("Confirm", "Do you want to Part Move?") != DialogResult.Yes) { return; } //if (MessageBox.Show(new Form{TopMost = true},"Part를 이동하시겠습니까?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; //if (CheckSafe != null) //{ // if(!CheckSafe(m_uMotrId , uPstnNo)) return ; //} if (m_uMotrId == (int)mi.LODR_ZLift) { bRet = SEQ.LODR.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.TOOL_XRjct) { bRet = SEQ.TOOL.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.IDXR_XRear) { bRet = SEQ.IDXR.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.IDXF_XFrnt) { bRet = SEQ.IDXF.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.TOOL_YTool) { bRet = SEQ.TOOL.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.TOOL_ZPckr) { bRet = SEQ.TOOL.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.BARZ_XPckr) { bRet = SEQ.BARZ.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.BARZ_ZPckr) { bRet = SEQ.BARZ.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.STCK_ZStck) { bRet = SEQ.STCK.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (m_uMotrId == (int)mi.TOOL_ZVisn) { bRet = SEQ.TOOL.CheckSafe((mi)m_uMotrId, (pv)uPstnNo); } if (!bRet) { return; } SML.MT.GoAbsRun((int)m_uMotrId, PM.GetValue(m_uMotrId, uPstnNo)); }
override public bool Autorun() //오토런닝시에 계속 타는 함수. { PreStep.eSeq = Step.eSeq; string sCycle = GetCrntCycleName(); //Check Error & Decide Step. if (Step.eSeq == sc.Idle) { if (Stat.bReqStop) { return(false); } //자재 상태 bool None = DM.ARAY[ri.ULDR].CheckAllStat(cs.None); bool Work = DM.ARAY[ri.ULDR].CheckAllStat(cs.Work); bool Empty = DM.ARAY[ri.ULDR].GetCntStat(cs.Empty) > 0; bool Strip = !DM.ARAY[ri.PREB].CheckAllStat(cs.None) || !DM.ARAY[ri.VSN1].CheckAllStat(cs.None) || !DM.ARAY[ri.VSN2].CheckAllStat(cs.None) || !DM.ARAY[ri.VSN3].CheckAllStat(cs.None) || !DM.ARAY[ri.PSTB].CheckAllStat(cs.None); //|| !DM.ARAY[ri.ULDR].CheckAllStat(cs.None ) ; bool NonePsb = DM.ARAY[ri.PSTB].CheckAllStat(cs.None); bool bMgzSsr1 = IO_GetX(xi.ULDR_MgzDetect1); bool bMgzSsr2 = IO_GetX(xi.ULDR_MgzDetect2); string sLastLotNo = "";//DM.ARAY[ri.PSTB].LotNo; if (!DM.ARAY[ri.PSTB].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.PSTB].LotNo; } else if (!DM.ARAY[ri.VSN3].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.VSN3].LotNo; } else if (!DM.ARAY[ri.VSN2].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.VSN2].LotNo; } else if (!DM.ARAY[ri.VSN1].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.VSN1].LotNo; } else if (!DM.ARAY[ri.PREB].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.PREB].LotNo; } else if (!DM.ARAY[ri.LODR].CheckAllStat(cs.None)) { sLastLotNo = DM.ARAY[ri.LODR].LotNo; } else { sLastLotNo = LOT.GetNextMgz(); } //조건 double dPos = DM.ARAY[ri.ULDR].FindFrstRow(cs.Empty) * OM.DevInfo.dMgzPitch; bool WorkPos = MT_CmprPos(mi.ULDR_ZClmp, PM.GetValue(mi.ULDR_ZClmp, pv.ULDR_ZClmpWorkStart) - dPos); bool LotCng = DM.ARAY[ri.ULDR].LotNo != "" && DM.ARAY[ri.ULDR].LotNo != sLastLotNo; //&& !NonePsb ; bool Supply = (!IO_GetX(xi.ULDR_MgzIn) && !Stat.bSupply); //매거진에 구멍땜에 안들어와있을경우 반영 , 매거진 있을때라고 생각 //사이클 bool isSupply = None && Strip && Supply; bool isPick = None && Strip && !Supply; bool isWork = Empty && !WorkPos; bool isDrop = !None && (Work || LotCng || (!Strip && SEQ.LODR.GetSeqStep() == 0)); bool isEnd = None && !Strip && SEQ.LODR.GetSeqStep() == 0; //모르는 카세트 에러 if (!isPick) { if (None && (bMgzSsr1 || bMgzSsr2)) { ER_SetErr(ei.PKG_Unknwn, "Unloader have no data found, but mgz sensor detected"); } } //카세트 사라짐 if (!isDrop) { if (!None && (!bMgzSsr1 && !bMgzSsr2)) { ER_SetErr(ei.PKG_Dispr, "Unloader have data, but mgz sensor not detected"); } } //카세트 필요 if (None && !IO_GetX(xi.ULDR_MgzIn) && Stat.bSupply && !NonePsb) { ER_SetErr(ei.PRT_NeedMgz, "Unloader need to magazine"); } //카세트 꽉참 //if( None && !IO_GetX(xi.ULDR_MgzIn) && Stat.bSupply && !NonePsb) ER_SetErr(ei.PRT_NeedMgz,"Unloader need to magazine") ; if (ER_IsErr()) { return(false); } //Normal Decide Step. if (isSupply) { DM.ARAY[ri.ULDR].Trace(m_sPartName); Step.eSeq = sc.Supply; } else if (isPick) { DM.ARAY[ri.ULDR].Trace(m_sPartName); Step.eSeq = sc.Pick; } else if (isWork) { DM.ARAY[ri.ULDR].Trace(m_sPartName); Step.eSeq = sc.Work; } else if (isDrop) { DM.ARAY[ri.ULDR].Trace(m_sPartName); Step.eSeq = sc.Drop; } else if (isEnd) { Stat.bWorkEnd = true; return(true); } Stat.bWorkEnd = false; if (Step.eSeq != sc.Idle) { Trace(Step.eSeq.ToString() + " Start"); InitCycleStep(); m_CycleTime[(int)Step.eSeq].Start(); } } //Cycle. Step.eLastSeq = Step.eSeq; switch (Step.eSeq) { default: Trace("default End"); Step.eSeq = sc.Idle; return(false); case sc.Idle: return(false); case sc.Supply: if (!CycleSupply()) { return(false); } break; case sc.Pick: if (!CyclePick()) { return(false); } break; case sc.Work: if (!CycleWork()) { return(false); } break; case sc.Drop: if (!CycleDrop()) { return(false); } break; } Trace(sCycle + " End"); m_CycleTime[(int)Step.eSeq].End(); Step.eSeq = sc.Idle; return(false); }
static public void MT_GoAbsMan(uint _eMotrNo, pv _ePos) { SM.MTR.GoAbsMan((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos)); }
public void RunGuid(bool _bInit = false) { if (_bInit) { StopDelay.Clear(); } if (!MT_GetStop(mi.OUT_YGuid)) { StopDelay.Clear(); return; } double Rear = PM.GetValue(mi.OUT_YGuid, pv.OUT_YGuidRear); double Frnt = PM.GetValue(mi.OUT_YGuid, pv.OUT_YGuidFrnt); //스탑일때도 //bool bDelayStart = MT_GetStop(mi.OUT_YGuid) && (MT_CmprPos(mi.OUT_YGuid , PM_GetValue(mi.OUT_YGuid,pv.OUT_YGuidFrnt)) ||MT_CmprPos(mi.OUT_YGuid , PM_GetValue(mi.OUT_YGuid,pv.OUT_YGuidRear))); if (MT_CmprPos(mi.OUT_YGuid, PM_GetValue(mi.OUT_YGuid, pv.OUT_YGuidFrnt))) { if (!StopDelay.OnDelay(OM.DevOptn.iGuidStopDealy)) { return; } //MoveMotr(mi.OUT_YGuid,pv.OUT_YGuidRear); if (!OM.CmnOptn.bRewindMode) { MT_GoAbsRun(mi.OUT_YGuid, pv.OUT_YGuidRear); } else { MT_GoAbsVel(mi.OUT_YGuid, Rear, OM.CmnOptn.dRewindYVel); } OM.EqpStat.bOutGuideToRear = true; } else if (MT_CmprPos(mi.OUT_YGuid, PM_GetValue(mi.OUT_YGuid, pv.OUT_YGuidRear)))//MT_GetCmdPos(mi.OUT_YGuid) == PM_GetValue(mi.OUT_YGuid,pv.OUT_YGuidRear)) { { if (!StopDelay.OnDelay(OM.DevOptn.iGuidStopDealy)) { return; } //MoveMotr(mi.OUT_YGuid,pv.OUT_YGuidFrnt); if (!OM.CmnOptn.bRewindMode) { MT_GoAbsRun(mi.OUT_YGuid, pv.OUT_YGuidFrnt); } else { MT_GoAbsVel(mi.OUT_YGuid, Frnt, OM.CmnOptn.dRewindYVel); } OM.EqpStat.bOutGuideToRear = false; } else if (OM.EqpStat.bOutGuideToRear) { //MoveMotr(mi.OUT_YGuid,pv.OUT_YGuidRear); if (!OM.CmnOptn.bRewindMode) { MT_GoAbsRun(mi.OUT_YGuid, pv.OUT_YGuidRear); } else { MT_GoAbsVel(mi.OUT_YGuid, Rear, OM.CmnOptn.dRewindYVel); } } else if (!OM.EqpStat.bOutGuideToRear) { //MoveMotr(mi.OUT_YGuid,pv.OUT_YGuidFrnt); if (!OM.CmnOptn.bRewindMode) { MT_GoAbsRun(mi.OUT_YGuid, pv.OUT_YGuidFrnt); } else { MT_GoAbsVel(mi.OUT_YGuid, Frnt, OM.CmnOptn.dRewindYVel); } } }
public bool CycleHome() { String sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 25000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_AllHomeTO, sTemp); Trace(sTemp); //Step.iHome = 0 ; return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); Trace(sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //Step.iHome = 0; //return true ; } switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); if (Step.iHome != PreStep.iHome) { Trace(sTemp); } return(true); case 10: iRepeatCnt = 0; //CL_Move(ci.VISN_FixRtrCwCCw , fb.Bwd); //CL_Move(ci.VISN_GrpRtrCwCCw , fb.Bwd); //CL_Move(ci.VISN_TurnGrpFwBw , fb.Bwd); //CL_Move(ci.VISN_TurnRtrCwCCw, fb.Bwd); Step.iHome++; return(false); case 11: //if (!CL_Complete(ci.VISN_FixRtrCwCCw , fb.Bwd)) return false; //if (!CL_Complete(ci.VISN_GrpRtrCwCCw , fb.Bwd)) return false; //if (!CL_Complete(ci.VISN_TurnGrpFwBw , fb.Bwd)) return false; //if (!CL_Complete(ci.VISN_TurnRtrCwCCw, fb.Bwd)) return false; MT_GoHome(mi.VISN_ZGrpr); Step.iHome++; return(false); case 12: if (!MT_GetHomeDone(mi.VISN_ZGrpr)) { return(false); } MT_GoAbsRun(mi.VISN_ZGrpr, PM.GetValue(mi.VISN_ZGrpr, pv.VISN_ZGrprWait)); Step.iHome++; return(false); case 13: if (!MT_GetStopInpos(mi.VISN_ZGrpr)) { return(false); } MoveCyl(ci.VISN_TurnRtrCwCCw, fb.Bwd); Step.iHome++; return(false); case 14: if (!CL_Complete(ci.VISN_TurnRtrCwCCw, fb.Bwd)) { return(false); } MoveCyl(ci.VISN_TurnRtrCwCCw, fb.Fwd); Step.iHome++; return(false); case 15: if (!CL_Complete(ci.VISN_TurnRtrCwCCw, fb.Fwd)) { return(false); } if (iRepeatCnt < 3) { iRepeatCnt++; Step.iHome = 13; return(false); } Step.iHome = 0; return(true); } }
public bool CycleHome() { String sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 30000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_AllHomeTO, sTemp); Log.Trace(m_sPartName, sTemp); //Step.iHome = 0 ; return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; Log.Trace(m_sPartName, sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //return true ; } //FindChip(out iAray , out iC , out iR); switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); //if(Step.iHome != PreStep.iHome)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: CL_Move(ci.IDXR_ClampClOp, fb.Bwd); Step.iHome++; return(false); case 11: if (!CL_Complete(ci.IDXR_ClampClOp, fb.Bwd)) { return(false); } CL_Move(ci.IDXR_ClampUpDn, fb.Bwd); Step.iHome++; return(false); case 12: if (!CL_Complete(ci.IDXR_ClampUpDn, fb.Bwd)) { return(false); } MT_GoHome(mi.IDXR_XRear); Step.iHome++; return(false); case 13: if (!MT_GetHomeDone(mi.IDXR_XRear)) { return(false); } if (DM.ARAY[ri.IDXR].CheckAllStat(cs.None)) //자제 없으면 그냥 쩜프 { Step.iHome = 50; return(false); } Step.iHome++; return(false); case 14: MT_GoAbsSlow(mi.IDXR_XRear, OM.EqpStat.dLastIDXRPos); Step.iHome++; return(false); case 15: if (!MT_GetStop(mi.IDXR_XRear)) { return(false); } CL_Move(ci.IDXR_ClampUpDn, fb.Fwd); Step.iHome++; return(false); case 16: if (!CL_Complete(ci.IDXR_ClampUpDn, fb.Fwd)) { return(false); } CL_Move(ci.IDXR_ClampClOp, fb.Fwd); Step.iHome++; return(false); case 17: if (!CL_Complete(ci.IDXR_ClampClOp, fb.Fwd)) { return(false); } Step.iHome = 0; return(true); //위에서 씀. case 50: MT_GoAbsRun(mi.IDXR_XRear, PM.GetValue(mi.IDXR_XRear, pv.IDXR_XRearWait)); Step.iHome++; return(false); case 51: if (!MT_GetStopInpos(mi.IDXR_XRear)) { return(false); } Step.iHome = 0; return(true); } }
//인터페이스 상속 끝.================================================== #endregion //밑에 부터 작업. //public bool FindChip(int _iId , out int c, out int r, cs _iChip=cs.RetFail) //{ // c=0 ; r=0 ; // // return DM.ARAY[(int)_iId].FindFrstColLastRow( ref c, ref r , _iChip); //} public bool CycleHome() { String sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 5000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_HomeTO, sTemp); Trace(sTemp); return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); Trace(sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //return true ; } switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); return(true); case 10: //홈잡을때 자재 들고 있으면 물어봐야 함 Y축 부터 잡게 되어 있음 IO_SetY(yi.LODR_MgzInAC, false); IO_SetY(yi.LODR_MgzOutAC, false); IO_SetY(yi.RAIL_FeedingAC1, false); Step.iHome++; return(false); case 11: CL_Move(ci.LODR_PusherFwBw, fb.Bwd); Step.iHome++; return(false); case 12: if (!CL_Complete(ci.LODR_PusherFwBw, fb.Bwd)) { return(false); } MT_GoHome(mi.LODR_YClmp); Step.iHome++; return(false); case 13: if (!MT_GetHomeDone(mi.LODR_YClmp)) { return(false); } MT_GoHome(mi.LODR_ZClmp); Step.iHome++; return(false); case 14: if (!MT_GetHomeDone(mi.LODR_ZClmp)) { return(false); } MT_GoAbsMan(mi.LODR_YClmp, PM.GetValue(mi.LODR_YClmp, pv.LODR_YClmpWait)); MT_GoAbsMan(mi.LODR_ZClmp, PM.GetValue(mi.LODR_ZClmp, pv.LODR_ZClmpWait)); Step.iHome++; return(false); case 15: if (!MT_GetStopPos(mi.LODR_YClmp, pv.LODR_YClmpWait)) { return(false); } if (!MT_GetStopPos(mi.LODR_ZClmp, pv.LODR_ZClmpWait)) { return(false); } Step.iHome = 0; return(true); } }
public bool CycleHome() { String sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 5000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_AllHomeTO, sTemp); Log.Trace(m_sPartName, sTemp); return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; Log.Trace(m_sPartName, sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //return true ; } switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); //if(Step.iHome != PreStep.iHome)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: CL_Move(ci.LODR_SperatorUpDn, fb.Bwd); Step.iHome++; return(false); case 11: if (!CL_Complete(ci.LODR_SperatorUpDn, fb.Bwd)) { return(false); } CL_Move(ci.LODR_ClampClOp, fb.Bwd); Step.iHome++; return(false); case 12: if (!CL_Complete(ci.LODR_ClampClOp, fb.Bwd)) { return(false); } MT_GoHome(mi.LODR_ZLift); Step.iHome++; return(false); case 13: if (!MT_GetHomeDone(mi.LODR_ZLift)) { return(false); } MT_GoAbsRun(mi.LODR_ZLift, PM.GetValue(mi.LODR_ZLift, pv.LODR_ZLiftWait)); Step.iHome++; return(false); //if(DM.ARAY[ri.IDXF].CheckAllStat(cs.None) && DM.ARAY[ri.IDXR].CheckAllStat(cs.None) && // DM.ARAY[ri.OUTZ].CheckAllStat(cs.None) && DM.ARAY[ri.SPLR].CheckAllStat(cs.None)) //{ // iLDRSplyCnt = 0; //} //else //{ // iLDRSplyCnt = OM.EqpStat.iLDRSplyCnt; //} case 14: if (!MT_GetStopInpos(mi.LODR_ZLift)) { return(false); } Step.iHome = 0; return(true); } }
public bool CycleWork() { String sTemp; if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() && !OM.MstOptn.bDebugMode, 5000)) { sTemp = string.Format("Time Out Step.iCycle={0:00}", Step.iCycle); sTemp = m_sPartName + " " + Step.eSeq.ToString() + sTemp; IO_SetY(yi.LODR_MgzInAC, false); IO_SetY(yi.LODR_MgzOutAC, false); IO_SetY(yi.PREB_AirBlower, false); IO_SetY(yi.RAIL_FeedingAC1, false); ER_SetErr(ei.ETC_CycleTO, sTemp); Trace(sTemp); return(true); } if (Step.iCycle != PreStep.iCycle) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); Trace(sTemp); } PreStep.iCycle = Step.iCycle; if (Stat.bReqStop) { //return true ; } int r, c = 0; //double dPos = 0; switch (Step.iCycle) { default: sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); return(true); case 10: dPos = (DM.ARAY[ri.LODR].GetMaxRow() - DM.ARAY[ri.LODR].FindLastRow(cs.Unknown) - 1) * OM.DevInfo.dMgzPitch; double dWorkStt = PM.GetValue(mi.LODR_ZClmp, pv.ULDR_ZClmpWorkStart) + dPos; if (!MT_CmprPos(mi.LODR_ZClmp, dWorkStt) && IO_GetX(xi.PREB_PkgInDetect)) { ER_SetErr(ei.LODR_SupplyFail, "Pre Buffer In Sensor Checked"); return(true); } MoveCyl(ci.LODR_ClampUpDn, fb.Fwd); MoveCyl(ci.LODR_PusherFwBw, fb.Bwd); IO_SetY(yi.LODR_MgzInAC, false); IO_SetY(yi.LODR_MgzOutAC, false); Step.iCycle++; return(false); case 11: if (!CL_Complete(ci.LODR_ClampUpDn, fb.Fwd)) { return(false); } if (!CL_Complete(ci.LODR_PusherFwBw, fb.Bwd)) { return(false); } MoveMotr(mi.LODR_YClmp, pv.LODR_YClmpWork); Step.iCycle++; return(false); case 12: if (!MT_GetStopPos(mi.LODR_YClmp, pv.LODR_YClmpWork)) { return(false); } dPos = (DM.ARAY[ri.LODR].GetMaxRow() - DM.ARAY[ri.LODR].FindLastRow(cs.Unknown) - 1) * OM.DevInfo.dMgzPitch; MoveMotr(mi.LODR_ZClmp, pv.LODR_ZClmpWorkStart, dPos); Step.iCycle++; return(false); case 13: if (!MT_GetStopPos(mi.LODR_ZClmp, pv.LODR_ZClmpWorkStart, dPos)) { return(false); } MoveCyl(ci.LODR_PusherFwBw, fb.Fwd); IO_SetY(yi.RAIL_FeedingAC1, true); Step.iCycle++; return(false); case 14: if (IO_GetX(xi.LODR_PushOverload)) { MoveCyl(ci.LODR_PusherFwBw, fb.Bwd); ER_SetErr(ei.LODR_PushOverload); return(true); } if (!CL_Complete(ci.LODR_PusherFwBw, fb.Fwd)) { return(false); } if (!IO_GetX(xi.PREB_PkgInDetect)) //Have no strip { MoveCyl(ci.LODR_PusherFwBw, fb.Bwd); r = DM.ARAY[ri.LODR].FindLastRow(cs.Unknown); DM.ARAY[ri.LODR].SetStat(0, r, cs.Empty); Step.iCycle = 20; return(false); } //요기서 살짝 씀 SEQ.PREB.MoveCyl(ci.PREB_StprUpDn, fb.Fwd); IO_SetY(yi.PREB_AirBlower, true); MoveCyl(ci.LODR_PusherFwBw, fb.Bwd); Step.iCycle++; return(false); case 20: //Have no strip case if (!CL_Complete(ci.LODR_PusherFwBw, fb.Bwd)) { return(false); } IO_SetY(yi.RAIL_FeedingAC1, false); Step.iCycle = 0; return(true); case 15: if (!CL_Complete(ci.PREB_StprUpDn, fb.Fwd)) { return(false); } //IO_SetY(yi.RAIL_FeedingAC1,true); m_tmDelay.Clear(); Step.iCycle++; return(false); case 16: if (m_tmDelay.OnDelay(4000)) { IO_SetY(yi.RAIL_FeedingAC1, false); IO_SetY(yi.PREB_AirBlower, false); ER_SetErr(ei.RAIL_FeedingFail, "Loader Pusher Feeding Fail"); return(true); } if (!IO_GetX(xi.PREB_StrpDetect)) { return(false); } m_tmDelay.Clear(); Step.iCycle++; return(false); case 17: if (!m_tmDelay.OnDelay(100)) { return(false); //자꾸 튕겨서 센서밖으로 나가서. } IO_SetY(yi.RAIL_FeedingAC1, false); IO_SetY(yi.PREB_AirBlower, false); //?? 쉬프트로 하면 안됌.//DM.ShiftData(ri.LODR,ri.PREB); r = DM.ARAY[ri.LODR].FindLastRow(cs.Unknown); DM.ARAY[ri.LODR].SetStat(0, r, cs.Empty); DM.ARAY[ri.PREB].SetStat(cs.Unknown); DM.ARAY[ri.PREB].LotNo = DM.ARAY[ri.LODR].LotNo; DM.ARAY[ri.PREB].ID = (LOT.GetWorkMgzCnt() * 100 + r).ToString(); //100자리는 메거진카운트 10자리까진 슬롯. OM.CmnOptn.sLdrPreLotNo = DM.ARAY[ri.PREB].LotNo; OM.CmnOptn.sLdrPreLotId = DM.ARAY[ri.PREB].ID; if (LOT.GetLotNo() != DM.ARAY[ri.PREB].LotNo) { LOT.LotOpen(DM.ARAY[ri.PREB].LotNo); OM.EqpStat.iPreRsltCnts = (int [])OM.EqpStat.iRsltCnts.Clone(); System.Array.Clear(OM.EqpStat.iRsltCnts, 0, OM.EqpStat.iRsltCnts.Length); //OM.EqpStat.iRsltCnts.Initialize(); } m_tmDelay.Clear(); Step.iCycle++; return(false); case 18: if (!m_tmDelay.OnDelay(1000)) { return(false); //자꾸 튕겨서 센서밖으로 나가서. } if (IO_GetX(xi.PREB_StrpDetect)) { Step.iCycle = 0; return(true); } IO_SetY(yi.RAIL_FeedingAC1, true); m_tmDelay.Clear(); Step.iCycle++; return(false); case 19: if (!m_tmDelay.OnDelay(300)) { return(false); //자꾸 튕겨서 센서밖으로 나가서. } IO_SetY(yi.RAIL_FeedingAC1, false); Step.iCycle = 0; return(true); } }
public bool CycleHome() { string sTemp; if (m_tmCycle.OnDelay(Step.iHome != 0 && Step.iHome == PreStep.iHome && CheckStop() /*&&!OM.MstOptn.bDebugMode*/, 5000)) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; ER_SetErr(ei.ETC_AllHomeTO, sTemp); Log.Trace(m_sPartName, sTemp); //Step.iHome = 0 ; return(true); } if (Step.iHome != PreStep.iHome) { sTemp = string.Format("Home Step.iHome={0:00}", Step.iHome); sTemp = m_sPartName + sTemp; Log.Trace(m_sPartName, sTemp); } PreStep.iHome = Step.iHome; if (Stat.bReqStop) { //Step.iHome = 0; //return true ; } switch (Step.iHome) { default: sTemp = string.Format("Cycle Default Clear Home Step.iCycle={0:00}", Step.iHome); if (Step.iHome != PreStep.iHome) { Log.Trace(m_sPartName, sTemp); } return(true); case 10: IO_SetY(yi.STCK_StackAC, false); IO_SetY(yi.BARZ_BrcdAC, false); CL_Move(ci.STCK_RailTrayUpDn, fb.Bwd); CL_Move(ci.BARZ_BrcdTrayUpDn, fb.Bwd); CL_Move(ci.STCK_RailClOp, fb.Fwd); CL_Move(ci.STCK_StackStprUpDn, fb.Fwd); CL_Move(ci.BARZ_BrcdStprUpDn, fb.Fwd); MT_GoHome(mi.STCK_ZStck); Step.iHome++; return(false); case 11: if (!CL_Complete(ci.STCK_RailTrayUpDn, fb.Bwd)) { return(false); } if (!CL_Complete(ci.STCK_RailTrayUpDn, fb.Bwd)) { return(false); } if (!CL_Complete(ci.STCK_RailClOp, fb.Fwd)) { return(false); } if (!CL_Complete(ci.STCK_StackStprUpDn, fb.Fwd)) { return(false); } if (!CL_Complete(ci.BARZ_BrcdStprUpDn, fb.Fwd)) { return(false); } if (!MT_GetHomeDone(mi.STCK_ZStck)) { return(false); } if (!IO_GetX(xi.STCK_StackTrayDtct)) { CL_Move(ci.STCK_StackOpCl, fb.Bwd); } Step.iHome++; return(false); case 12: if (!CL_Complete(ci.STCK_StackOpCl)) { return(false); } MT_GoAbsRun(mi.STCK_ZStck, PM.GetValue(mi.STCK_ZStck, pv.STCK_ZStckWait)); Step.iHome++; return(false); case 13: if (!MT_GetStopInpos(mi.STCK_ZStck)) { return(false); } Step.iHome = 0; return(true); } }
//public int iLDRSplyCnt = 0; public bool CycleManSupply() { String sTemp; if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() && !OM.MstOptn.bDebugMode, 10000)) { sTemp = string.Format("Time Out Step.iCycle={0:00}", Step.iCycle); sTemp = m_sPartName + " " + Step.eSeq.ToString() + sTemp; ER_SetErr(ei.PRT_CycleTO, sTemp); Trace(sTemp); return(true); } if (Step.iCycle != PreStep.iCycle) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); Trace(sTemp); } PreStep.iCycle = Step.iCycle; if (Stat.bReqStop) { //return true ; } int r, c = -1; switch (Step.iCycle) { default: sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); //if(Step.iCycle != PreStep.iCycle)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: MoveCyl(ci.LODR_GuideOpCl, fb.Bwd); MoveCyl(ci.LODR_PckrFwBw, fb.Bwd); MoveMotr(mi.LODR_XPshr, pv.LODR_XPshrWait); ML.CL_Move(ci.ULDR_OutPshrFwBw, fb.Bwd); Step.iCycle++; return(false); case 11: if (!CL_Complete(ci.LODR_GuideOpCl, fb.Bwd)) { return(false); } if (!CL_Complete(ci.LODR_PckrFwBw, fb.Bwd)) { return(false); } MoveCyl(ci.LODR_RngJigFwBw, fb.Bwd); Step.iCycle++; return(false); case 12: if (!CL_Complete(ci.LODR_RngJigFwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.ULDR_OutPshrFwBw, fb.Bwd)) { return(false); } Step.iCycle++; return(false); case 13: if (!MT_GetStopInpos(mi.LODR_XPshr)) { return(false); } MoveMotr(mi.LODR_YIndx, pv.LODR_YIndxWait); MT_GoAbsMan(mi.ULDR_YIndx, PM.GetValue(mi.ULDR_YIndx, pv.ULDR_YIndxWait)); Step.iCycle++; return(false); case 14: if (!MT_GetStopInpos(mi.LODR_YIndx)) { return(false); } if (!MT_GetStopInpos(mi.ULDR_YIndx)) { return(false); } MoveCyl(ci.LODR_PshrRtrCwCCw, fb.Bwd); Step.iCycle++; return(false); case 15: if (!CL_Complete(ci.LODR_PshrRtrCwCCw, fb.Bwd)) { return(false); } Step.iCycle = 0; return(true); } }
static public void MT_SetPos(mi _eMotrNo, pv _ePos) { SM.MT.SetPos((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos)); }
//public bool CyclePick() //{ // String sTemp; // if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() &&!OM.MstOptn.bDebugMode, 5000)) // { // sTemp = string.Format("Time Out Step.iCycle={0:00}", Step.iCycle); // sTemp = m_sPartName + " " + Step.eSeq.ToString() + sTemp; // ER_SetErr(ei.PRT_CycleTO, sTemp); // Trace(sTemp); // return true; // } // if (Step.iCycle != PreStep.iCycle) // { // sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); // Trace(sTemp); // } // PreStep.iCycle = Step.iCycle; // if (Stat.bReqStop) // { // //return true ; // } // int r,c = -1; // switch (Step.iCycle) // { // default: // sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); // //if(Step.iCycle != PreStep.iCycle)Trace(m_sPartName.c_str(), sTemp.c_str()); // return true; // case 10: // MoveCyl(ci.LODR_PckrRtrCwCCw , fb.Fwd); // MoveMotr(mi.LODR_XPckr , pv.LODR_XPckrPlce); // Step.iCycle++; // return false; // case 11: // if(!CL_Complete(ci.LODR_PckrRtrCwCCw , fb.Fwd))return false; // if(!MT_GetStopInpos(mi.LODR_XPckr))return false; // MoveCyl(ci.LODR_GrpRtrCwCCw , fb.Bwd); // MoveCyl(ci.LODR_RngGrpFwBw , fb.Bwd); // Step.iCycle++; // return false; // case 12: // if(!CL_Complete(ci.LODR_RngGrpFwBw , fb.Bwd))return false; // if(!CL_Complete(ci.LODR_GrpRtrCwCCw, fb.Bwd))return false; // MoveMotr(mi.LODR_XPckr , pv.LODR_XPckrPick); // Step.iCycle++; // return false; // case 13: // if (!MT_GetStopPos(mi.LODR_XPckr, pv.LODR_XPckrPick)) return false; // MT_GoAbsVel(mi.LODR_XPckr, PM.GetValue(mi.LODR_XPckr , pv.LODR_XPckrPick) + 2, 10); // Step.iCycle++; // return false; // case 14: // if (!MT_GetStopInpos(mi.LODR_XPckr)) return false; // MoveCyl(ci.LODR_RngGrpFwBw , fb.Fwd); // IO_SetY(yi.LODR_PickrVac , false); // Step.iCycle++; // return false; // case 15: // if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Fwd)) return false; // MoveMotr(mi.LODR_XPckr , pv.LODR_XPckrPickRtt); // Step.iCycle++; // return false; // case 16: // if(!MT_GetStopInpos(mi.LODR_XPckr))return false; // MoveCyl(ci.LODR_GrpRtrCwCCw , fb.Fwd); // Step.iCycle++; // return false; // case 17: // if(!CL_Complete(ci.LODR_GrpRtrCwCCw , fb.Fwd))return false; // MoveMotr(mi.LODR_XPckr, pv.LODR_XPckrPlce); // Step.iCycle++; // return false; // case 18: // if(!MT_GetStopInpos(mi.LODR_XPckr))return false; // //MoveCyl(ci.LODR_RngGrpFwBw , fb.Bwd); // Step.iCycle++; // return false; // case 19: // //if(!CL_Complete(ci.LODR_RngGrpFwBw, fb.Bwd))return false; // DM.ShiftData(ri.PLDR, ri.TLDR); // Step.iCycle = 0; // return true; // } //} public bool CheckSafe(ci _eActr, fb _eFwd, bool _bChecked = false) { if (CL_Complete(_eActr, _eFwd)) { return(true); } String sMsg = ""; bool bRet = true; if (_eActr == ci.LODR_GrpRtrCwCCw) { //if(_bFwd == EN_CYLINDER_POS.cpFwd) { //if(!bExistSply /*|| !bSRT_ZTop*/) {sMsg = string ("Tray 센서 감지중!"); bRet = false ;} //} } else if (_eActr == ci.LODR_GuideOpCl) { } else if (_eActr == ci.LODR_PckrRtrCwCCw) { } else if (_eActr == ci.LODR_PshrRtrCwCCw) { if (MT_GetCmdPos(mi.LODR_XPshr) > PM.GetValue(mi.LODR_XPshr, pv.LODR_XPshrWait) + 10) { sMsg = MT_GetName(mi.LODR_XPshr) + "is not Wait Position"; bRet = false; } } else if (_eActr == ci.LODR_RngGrpFwBw) { } else if (_eActr == ci.LODR_PckrFwBw) { if (_eFwd == fb.Fwd && CL_GetCmd(ci.LODR_RngJigFwBw) != fb.Fwd) { sMsg = CL_GetName(ci.LODR_RngJigFwBw) + "is not Fwd"; bRet = false; } } else if (_eActr == ci.LODR_RngJigFwBw) { if (_eFwd == fb.Bwd && CL_GetCmd(ci.LODR_PckrFwBw) != fb.Bwd) { sMsg = CL_GetName(ci.LODR_PckrFwBw) + "is Fwd"; bRet = false; } if (CL_GetCmd(ci.LODR_GuideOpCl) != fb.Bwd) { sMsg = CL_GetName(ci.LODR_GuideOpCl) + "is not Bwd"; bRet = false; } } else if (!_bChecked) { sMsg = "Cylinder " + CL_GetName(_eActr) + " is Not this parts."; bRet = false; } if (!bRet) { m_sCheckSafeMsg = sMsg; Trace(CL_GetName(_eActr) + " " + sMsg); if (Step.iCycle == 0) { Log.ShowMessage(CL_GetName(_eActr), sMsg); } } else { m_sCheckSafeMsg = ""; } return(bRet); }
//public void PW_ static public double PM_GetValue(mi _eMotrNo, pv _iPstnValue) { return(PM.GetValue((uint)_eMotrNo, (uint)_iPstnValue)); }
public bool CycleMove() { String sTemp; if (m_tmCycle.OnDelay(Step.iCycle != 0 && Step.iCycle == PreStep.iCycle && CheckStop() && !OM.MstOptn.bDebugMode, 20000)) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); sTemp = m_sPartName + sTemp; ER_SetErr(ei.PRT_CycleTO, sTemp); Trace(sTemp); return(true); } if (Step.iCycle != PreStep.iCycle) { sTemp = string.Format("Cycle Step.iCycle={0:00}", Step.iCycle); Trace(sTemp); } PreStep.iCycle = Step.iCycle; if (Stat.bReqStop) { //return true ; } switch (Step.iCycle) { default: sTemp = string.Format("Cycle Default Clear Step.iCycle={0:00}", Step.iCycle); //if(Step.iCycle != PreStep.iCycle)Trace(m_sPartName.c_str(), sTemp.c_str()); return(true); case 10: OM.EqpStat.dWorkTime = SEQ.bWorkTimer ? SEQ.m_cyWorktime.CheckTime_s() : 0; OM.EqpStat.dWorkUPH = SEQ.bWorkTimer ? 3600 / OM.EqpStat.dWorkTime : 0; SEQ.m_cyWorktime.Clear(); SEQ.bWorkTimer = true; MoveCyl(ci.TBLE_Grpr1FwBw, fb.Bwd); MoveCyl(ci.TBLE_Grpr2FwBw, fb.Bwd); MoveCyl(ci.TBLE_Grpr3FwBw, fb.Bwd); MoveCyl(ci.TBLE_Grpr4FwBw, fb.Bwd); MoveCyl(ci.TBLE_Grpr5FwBw, fb.Bwd); MoveCyl(ci.TBLE_Grpr6FwBw, fb.Bwd); Step.iCycle++; return(false); case 11: if (!CL_Complete(ci.TBLE_Grpr1FwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr2FwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr3FwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr4FwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr5FwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr6FwBw, fb.Bwd)) { return(false); } if (IO_GetX(xi.TBLE_LODRClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "LODR Clamp Cylinder Is Not Bwd"); return(true); } if (IO_GetX(xi.TBLE_VISNClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "Visn Clamp Cylinder Is Not Bwd"); return(true); } if (IO_GetX(xi.TBLE_MARKClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "MARK Clamp Cylinder Is Not Bwd"); return(true); } if (IO_GetX(xi.TBLE_ULDRClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "ULDR Clamp Cylinder Is Not Bwd"); return(true); } if (IO_GetX(xi.TBLE_RJEVClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "RJEV Clamp Cylinder Is Not Bwd"); return(true); } if (IO_GetX(xi.TBLE_RJEMClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "RJEM Clamp Cylinder Is Not Bwd"); return(true); } MoveCyl(ci.LODR_RngGrpFwBw, fb.Bwd); MoveCyl(ci.VISN_TurnGrpFwBw, fb.Bwd); if (OM.MstOptn.bMarkAlgin) { MoveCyl(ci.MARK_AlgnFwBw, fb.Bwd); MoveCyl(ci.MARK_AlgnPinFwBw, fb.Bwd); } Step.iCycle++; return(false); case 12: if (!CL_Complete(ci.LODR_RngGrpFwBw, fb.Bwd)) { return(false); } if (!CL_Complete(ci.VISN_TurnGrpFwBw, fb.Bwd)) { return(false); } if (OM.MstOptn.bMarkAlgin && !CL_Complete(ci.MARK_AlgnFwBw, fb.Bwd)) { return(false); } if (OM.MstOptn.bMarkAlgin && !CL_Complete(ci.MARK_AlgnPinFwBw, fb.Bwd)) { return(false); } MT_GoIncRun(mi.TBLE_TTble, PM.GetValue(mi.TBLE_TTble, pv.TBLE_TTbleWorkPitch)); Step.iCycle++; return(false); case 13: if (!MT_GetStopInpos(mi.TBLE_TTble)) { return(false); } m_tmDelay.Clear(); Step.iCycle++; return(false); case 14: if (!m_tmDelay.OnDelay(50)) { return(false); } Step.iCycle++; return(false); case 15: DM.ShiftData(ri.TRJM, ri.TRJV); DM.ShiftData(ri.TULD, ri.TRJM); DM.ShiftData(ri.TMRK, ri.TULD); DM.ShiftData(ri.TVSN, ri.TMRK); //Marking 위치가 굿으로 바뀌어있으면 Unkwon으로 바꾸자. if (DM.ARAY[ri.TMRK].CheckAllStat(cs.Good)) { DM.ARAY[ri.TMRK].SetStat(cs.Unknown); } DM.ShiftData(ri.TLDR, ri.TVSN); if (!DM.ARAY[ri.TVSN].CheckAllStat(cs.None)) { MoveCyl(ci.VISN_TurnGrpFwBw, fb.Fwd); } else { MoveCyl(ci.VISN_TurnGrpFwBw, fb.Bwd); } //if( DM.ARAY[ri.TULD].CheckAllStat(cs.Good)) MoveCyl(ci.ULDR_RngGrpFwBw , fb.Fwd); //else MoveCyl(ci.ULDR_RngGrpFwBw , fb.Bwd); Step.iCycle++; return(false); case 16: if (!DM.ARAY[ri.TVSN].CheckAllStat(cs.None) && !CL_Complete(ci.VISN_TurnGrpFwBw, fb.Fwd)) { return(false); } if (DM.ARAY[ri.TVSN].CheckAllStat(cs.None) && !CL_Complete(ci.VISN_TurnGrpFwBw, fb.Bwd)) { return(false); } //if ( DM.ARAY[ri.TULD].CheckAllStat(cs.Good) && CL_Complete(ci.ULDR_RngGrpFwBw , fb.Fwd))return false; //if (!DM.ARAY[ri.TULD].CheckAllStat(cs.Good) && CL_Complete(ci.ULDR_RngGrpFwBw , fb.Bwd))return false; MoveCyl(ci.TBLE_Grpr1FwBw, fb.Fwd); MoveCyl(ci.TBLE_Grpr2FwBw, fb.Fwd); MoveCyl(ci.TBLE_Grpr3FwBw, fb.Fwd); MoveCyl(ci.TBLE_Grpr4FwBw, fb.Fwd); MoveCyl(ci.TBLE_Grpr5FwBw, fb.Fwd); MoveCyl(ci.TBLE_Grpr6FwBw, fb.Fwd); Step.iCycle++; return(false); case 17: if (!CL_Complete(ci.TBLE_Grpr1FwBw, fb.Fwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr2FwBw, fb.Fwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr3FwBw, fb.Fwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr4FwBw, fb.Fwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr5FwBw, fb.Fwd)) { return(false); } if (!CL_Complete(ci.TBLE_Grpr6FwBw, fb.Fwd)) { return(false); } m_tmDelay.Clear(); Step.iCycle++; return(false); case 18: if (!m_tmDelay.OnDelay(100)) { return(false); } if (!IO_GetX(xi.TBLE_LODRClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "LODR Clamp Cylinder Is Not Fwd"); return(true); } if (!IO_GetX(xi.TBLE_VISNClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "Visn Clamp Cylinder Is Not Fwd"); return(true); } if (!IO_GetX(xi.TBLE_MARKClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "MARK Clamp Cylinder Is Not Fwd"); return(true); } if (!IO_GetX(xi.TBLE_ULDRClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "ULDR Clamp Cylinder Is Not Fwd"); return(true); } if (!IO_GetX(xi.TBLE_RJEVClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "RJEV Clamp Cylinder Is Not Fwd"); return(true); } if (!IO_GetX(xi.TBLE_RJEMClmpDtct)) { ER_SetErr(ei.ATR_TimeOut, "RJEM Clamp Cylinder Is Not Fwd"); return(true); } Step.iCycle = 0; return(true); } }