예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }
예제 #4
0
파일: Loader.cs 프로젝트: zoro-008/Works
        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);
            }
        }
예제 #5
0
파일: Loader.cs 프로젝트: zoro-008/Works
        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);
            }
        }
예제 #6
0
        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);
            }
        }
예제 #7
0
파일: ML.cs 프로젝트: zoro-008/Works
 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));
 }
예제 #8
0
파일: ML.cs 프로젝트: zoro-008/Works
 static public void         MT_GoAbsSlow(mi _eMotrNo, pv _ePos)
 {
     SM.MT.GoAbsSlow((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos));
 }
예제 #9
0
파일: Loader.cs 프로젝트: zoro-008/Works
        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);
        }
예제 #10
0
        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));
        }
예제 #11
0
        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);
        }
예제 #12
0
파일: ML.cs 프로젝트: zoro-008/Works
 static public void         MT_GoAbsMan(uint _eMotrNo, pv _ePos)
 {
     SM.MTR.GoAbsMan((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos));
 }
예제 #13
0
        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);
                }
            }
        }
예제 #14
0
        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);
            }
        }
예제 #15
0
        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);
            }
        }
예제 #16
0
파일: Loader.cs 프로젝트: zoro-008/Works
        //인터페이스 상속 끝.==================================================
        #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);
            }
        }
예제 #17
0
        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);
            }
        }
예제 #18
0
파일: Loader.cs 프로젝트: zoro-008/Works
        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);
            }
        }
예제 #19
0
        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);
            }
        }
예제 #20
0
파일: Loader.cs 프로젝트: zoro-008/Works
        //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);
            }
        }
예제 #21
0
파일: ML.cs 프로젝트: zoro-008/Works
 static public void         MT_SetPos(mi _eMotrNo, pv _ePos)
 {
     SM.MT.SetPos((int)_eMotrNo, PM.GetValue((uint)_eMotrNo, (uint)_ePos));
 }
예제 #22
0
파일: Loader.cs 프로젝트: zoro-008/Works
        //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);
        }
예제 #23
0
파일: ML.cs 프로젝트: zoro-008/Works
        //public void PW_



        static public double       PM_GetValue(mi _eMotrNo, pv _iPstnValue)
        {
            return(PM.GetValue((uint)_eMotrNo, (uint)_iPstnValue));
        }
예제 #24
0
        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);
            }
        }