public static bool InspectEmergency() { bool isOk = true; //Check Emergency if (ML.IO_GetX(xi.LODR_EmgSw1) || ML.IO_GetX(xi.ETC_EmgSw2) || ML.IO_GetX(xi.ETC_EmgSw3) || ML.IO_GetX(xi.ULDR_EmgSw4)) { ML.MT_EmgStopAll(); ML.MT_SetServoAll(false); if (ML.IO_GetX(xi.LODR_EmgSw1)) { ML.ER_SetErr(ei.ETC_Emergency, "Loader Emergency Switch pushed."); } if (ML.IO_GetX(xi.ETC_EmgSw2)) { ML.ER_SetErr(ei.ETC_Emergency, "Main1 Emergency Switch pushed."); } if (ML.IO_GetX(xi.ETC_EmgSw3)) { ML.ER_SetErr(ei.ETC_Emergency, "Main2 Emergency Switch pushed."); } if (ML.IO_GetX(xi.ULDR_EmgSw4)) { ML.ER_SetErr(ei.ETC_Emergency, "Unloader Emergency Switch pushed."); } isOk = false; } return(isOk); }
private void btAllHome_Click_1(object sender, EventArgs e) { string sText = ((Button)sender).Text; Log.Trace(sFormText + sText + " Button Clicked", ti.Frm); if (!OM.MstOptn.bDebugMode) { if (Log.ShowMessageModal("Confirm", "Do you want to All Homming?") != DialogResult.Yes) { return; } MM.SetManCycle(mc.AllHome); } else { DialogResult Rslt; Rslt = MessageBox.Show("홈동작을 생략 하겠습니까?", "Confirm", MessageBoxButtons.YesNoCancel); if (Rslt == DialogResult.Yes) { ML.MT_SetServoAll(true); Thread.Sleep(100); for (int i = 0; i < (int)mi.MAX_MOTR; i++) { ML.MT_SetHomeDone(i, true); } } else if (Rslt == DialogResult.No) { MM.SetManCycle(mc.AllHome); } } }
private void btAllHome_Click(object sender, EventArgs e) { if (!OM.MstOptn.bDebugMode) { if (Log.ShowMessageModal("Confirm", "Do you want to All Homming?") != DialogResult.Yes) { return; } MM.SetManCycle(mc.AllHome); } else { DialogResult Rslt; Rslt = MessageBox.Show(new Form() { TopMost = true }, "홈동작을 생략 하겠습니까?", "Confirm", MessageBoxButtons.YesNoCancel); if (Rslt == DialogResult.Yes) { ML.MT_SetServoAll(true); Thread.Sleep(100); for (int i = 0; i < (int)mi.MAX_MOTR; i++) { ML.MT_SetHomeDone(i, true); } } else if (Rslt == DialogResult.No) { MM.SetManCycle(mc.AllHome); } } }
public static bool InspectEmergency() { bool isOk = true; //Check Emergency if (ML.IO_GetX(xi.ETC_LEmgSw) || ML.IO_GetX(xi.ETC_REmgSw) || ML.IO_GetX(xi.ETC_LDREmgSw) || ML.IO_GetX(xi.ETC_ULDEmgSw)) { ML.MT_EmgStopAll(); ML.MT_SetServoAll(false); if (ML.IO_GetX(xi.ETC_LEmgSw)) { ML.ER_SetErr(ei.ETC_Emergency, "좌측 Emergency Switch 가 눌렸습니다."); } if (ML.IO_GetX(xi.ETC_REmgSw)) { ML.ER_SetErr(ei.ETC_Emergency, "우측 Emergency Switch 가 눌렸습니다."); } if (ML.IO_GetX(xi.ETC_LDREmgSw)) { ML.ER_SetErr(ei.ETC_Emergency, "로더 Emergency Switch 가 눌렸습니다."); } if (ML.IO_GetX(xi.ETC_ULDEmgSw)) { ML.ER_SetErr(ei.ETC_Emergency, "언로더 Emergency Switch 가 눌렸습니다."); } isOk = false; } return(isOk); }
private void btForcedHomeEnd_Click(object sender, EventArgs e) { string sText = ((Button)sender).Text; Log.Trace(sFormText + sText + " Button Clicked", ti.Frm); ML.MT_SetServoAll(true); Thread.Sleep(100); for (int i = 0; i < (int)mi.MAX_MOTR; i++) { ML.MT_SetHomeDone(i, true); } }
private void btAllHome_Click(object sender, EventArgs e) { if (!ML.IO_GetY(yi.ETC_MainAirOnOff)) { ML.ER_SetErr(ei.ETC_MainAir, "메인 에어를 ON 해주세요."); return; } string sText = ((Button)sender).Text; Log.Trace(sFormText + sText + " Button Clicked", ForContext.Frm); if (!OM.MstOptn.bDebugMode) { if (Log.ShowMessageModal("Confirm", "Do you want to perform manual actions?") != DialogResult.Yes) { return; } MM.SetManCycle(mc.AllHome); } else { DialogResult Rslt; Rslt = MessageBox.Show("홈동작을 생략 하겠습니까?", "Confirm", MessageBoxButtons.YesNoCancel); if (Rslt == DialogResult.Yes) { ML.MT_SetServoAll(true); Thread.Sleep(100); for (mi i = 0; i < mi.MAX_MOTR; i++) { ML.MT_SetHomeDone(i, true); } } else if (Rslt == DialogResult.No) { MM.SetManCycle(mc.AllHome); } } }
//Manual Processing. public static bool SetManCycle(mc _iNo) { m_iCrntManNo = m_iManNo; if (_iNo < 0) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (_iNo >= mc.MAX_MANUAL_CYCLE) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (m_iManNo != mc.NoneCycle) { Log.ShowMessage("ERROR", "Doing Manual Cycle"); return(false); } if (SEQ._bRun && _iNo != mc.LODR_ManLotSupply) { Log.ShowMessage("ERROR", "Autorunning"); return(false); } if (_iNo > mc.AllHome && !SEQ.InspectHomeDone()) { return(false); } //LOL if (!SML.IO.GetX((int)xi.ETC_MainAir) ) { Log.ShowMessage("ERROR", "Main Air is Not Supply"); return false; } //Check Alarm. //LOL if (SML.ER.IsErr()) { Init(); return false; } //아 밑에 처리 하는 애 때문에 잠시 이렇게 함. //test // if(!IO_GetX(xETC_MainPower) ) {FM_MsgOk("ERR","Power On Plz"); return false ;} //test //if (!ML.IO.GetX((int)EN_INPUT_ID.xETC_MainAirChk)) { MessageBox.Show("Check Main Air!", "ERROR"); return false; } //test // mcLDR_RHome m_bManSetting = true; //SetManCycle함수는 화면 쓰레드. 업데이트 함수에서 다른쓰레드로 들어와서 갱신하기에 플레그 걸어 막아둠. // mcIDX_Home m_iManNo = _iNo; // mcLTL_Home // mcRTL_Home //ML.ER.SetDisp(true);jinseop bool bRet = true; // mcSTG_Home // mcULD_Home /********************/ /********************/ if (m_iManNo == mc.NoneCycle) { bRet = false; } else if (m_iManNo == mc.AllHome) { } else if (m_iManNo == mc.LODR_Home) { } else if (m_iManNo == mc.TTBL_Home) { } else if (m_iManNo == mc.VISN_Home) { } else if (m_iManNo == mc.MARK_Home) { } else if (m_iManNo == mc.ULDR_Home) { } else if (m_iManNo == mc.REJM_Home) { } else if (m_iManNo == mc.REJV_Home) { } else if (m_iManNo == mc.LODR_CycleHold) { } else if (m_iManNo == mc.LODR_CyclePush) { } else if (m_iManNo == mc.LODR_CyclePick) { } else if (m_iManNo == mc.LODR_ManLotSupply) { } else if (m_iManNo == mc.TTBL_CycleMove) { } else if (m_iManNo == mc.TTBL_CLAllFwd) { if (!ML.MT_GetStop(mi.TBLE_TTble)) { bRet = false; } } else if (m_iManNo == mc.TTBL_CLAllBwd) { if (!ML.MT_GetStop(mi.TBLE_TTble)) { bRet = false; } } else if (m_iManNo == mc.VISN_CycleWork) { } else if (m_iManNo == mc.MARK_CycleWork) { } else if (m_iManNo == mc.MARK_CycleManChage) { } else if (m_iManNo == mc.ULDR_CycleMove) { } else if (m_iManNo == mc.ULDR_CycleDlvr) { } else if (m_iManNo == mc.ULDR_CyclePick) { } else if (m_iManNo == mc.ULDR_CyclePlce) { } else if (m_iManNo == mc.ULDR_CyclePaint) { } else if (m_iManNo == mc.RJEM_CycleWork) { } else if (m_iManNo == mc.RJEV_CycleWork) { } if (!bRet) { Init(); } /********************/ /* 처리.. */ /********************/ if (m_iManNo == mc.NoneCycle) { } else if (m_iManNo == mc.AllHome) { ML.MT_SetServoAll(true); SEQ.LODR.InitHomeStep(); SEQ.TTBL.InitHomeStep(); SEQ.VISN.InitHomeStep(); SEQ.MARK.InitHomeStep(); SEQ.ULDR.InitHomeStep(); SEQ.REJM.InitHomeStep(); SEQ.REJV.InitHomeStep(); } else if (m_iManNo == mc.LODR_Home) { ML.MT_SetServoAll(true); SEQ.LODR.InitHomeStep(); } else if (m_iManNo == mc.TTBL_Home) { ML.MT_SetServoAll(true); SEQ.TTBL.InitHomeStep(); } else if (m_iManNo == mc.VISN_Home) { ML.MT_SetServoAll(true); SEQ.VISN.InitHomeStep(); } else if (m_iManNo == mc.MARK_Home) { ML.MT_SetServoAll(true); SEQ.MARK.InitHomeStep(); } else if (m_iManNo == mc.ULDR_Home) { ML.MT_SetServoAll(true); SEQ.ULDR.InitHomeStep(); } else if (m_iManNo == mc.REJM_Home) { ML.MT_SetServoAll(true); SEQ.REJM.InitHomeStep(); } else if (m_iManNo == mc.REJV_Home) { ML.MT_SetServoAll(true); SEQ.REJV.InitHomeStep(); } else if (m_iManNo == mc.LODR_CycleHold) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_CyclePush) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_CyclePick) { SEQ.PLDR.InitCycleStep(); } else if (m_iManNo == mc.LODR_ManLotSupply) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.TTBL_CycleMove) { SEQ.TTBL.InitCycleStep(); } else if (m_iManNo == mc.TTBL_CLAllFwd) { ML.CL_Move(ci.TBLE_Grpr1FwBw, fb.Fwd); ML.CL_Move(ci.TBLE_Grpr2FwBw, fb.Fwd); ML.CL_Move(ci.TBLE_Grpr3FwBw, fb.Fwd); ML.CL_Move(ci.TBLE_Grpr4FwBw, fb.Fwd); ML.CL_Move(ci.TBLE_Grpr5FwBw, fb.Fwd); ML.CL_Move(ci.TBLE_Grpr6FwBw, fb.Fwd); m_iManNo = mc.NoneCycle; } else if (m_iManNo == mc.TTBL_CLAllBwd) { ML.CL_Move(ci.TBLE_Grpr1FwBw, fb.Bwd); ML.CL_Move(ci.TBLE_Grpr2FwBw, fb.Bwd); ML.CL_Move(ci.TBLE_Grpr3FwBw, fb.Bwd); ML.CL_Move(ci.TBLE_Grpr4FwBw, fb.Bwd); ML.CL_Move(ci.TBLE_Grpr5FwBw, fb.Bwd); ML.CL_Move(ci.TBLE_Grpr6FwBw, fb.Bwd); m_iManNo = mc.NoneCycle; } else if (m_iManNo == mc.VISN_CycleWork) { SEQ.VISN.InitCycleStep(); } else if (m_iManNo == mc.MARK_CycleWork) { SEQ.MARK.InitCycleStep(); } else if (m_iManNo == mc.MARK_CycleManChage) { SEQ.MARK.InitCycleStep(); } else if (m_iManNo == mc.ULDR_CycleMove) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_CycleDlvr) { SEQ.PULD.InitCycleStep(); } else if (m_iManNo == mc.ULDR_CyclePick) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_CyclePlce) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_CyclePaint) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.RJEM_CycleWork) { SEQ.REJM.InitCycleStep(); } else if (m_iManNo == mc.RJEV_CycleWork) { SEQ.REJV.InitCycleStep(); } m_bManSetting = false; //m_bManSetting 중요함 리턴전에 꼭 펄스 시켜야함. 쓰레드가 달라서. ::Update에서 m_iManNo=0이 되므로 주의. return(true); }
// CPartInterface * m_pPart[MAX_PART] ; //-------------------------------------------------------------------------------------------------------- public static void Reset() { //Check running flag. if (m_bRun) { return; } if (m_iSeqStat == EN_SEQ_STAT.Init) { return; } if (m_iStep == EN_SEQ_STEP.ToStopCon) { return; } if (m_iStep == EN_SEQ_STEP.ToStop) { return; } if (MM.GetManNo() != mc.NoneCycle) { return; } LOT.Reset(); Log.Trace("Seq", "Reset"); m_tmToStop.Clear(); m_tmToStrt.Clear(); m_tmFlickOn.Clear(); m_tmFlickOff.Clear(); m_tmTemp.Clear(); m_tmCloseDoor.Clear(); //Init. Var. m_bBtnReset = false; m_bBtnStart = false; m_bBtnStop = false; m_bRunEnd = false; m_bRun = false; m_iStep = EN_SEQ_STEP.Idle; //Error. ML.ER_Clear(); //Manual. MM.Reset(); //ML. for (int i = 0; i < (int)pi.MAX_PART; i++) { m_Part[i].Reset(); } //Cylinder Reset , Need to First Time ML.CL_Reset(); //Lot End Flag Reset. LOT.Reset(); Log.CloseForm(); m_iSeqStat = EN_SEQ_STAT.Stop; //System. ML.MT_ResetAll(); ML.MT_SetServoAll(true); //VSNZ존에서 처리함. //for(int i = 0 ; i < (int)vi.MAX_VI; i++) //{ // if(!OM.VsSkip((vi)i)) VSNZ.VisnComs[i].SendCmd(VisnCom.vc.Reset); //} }
//Manual Processing. public static bool SetManCycle(mc _iNo) { m_iCrntManNo = m_iManNo; if (_iNo < 0) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (_iNo >= mc.MAX_MANUAL_CYCLE) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (m_iManNo != mc.NoneCycle) { Log.ShowMessage("ERROR", "Doing Manual Cycle"); return(false); } if (SEQ._bRun) { Log.ShowMessage("ERROR", "Autorunning"); return(false); } if (_iNo > mc.HomeEnd && !SEQ.InspectHomeDone()) { return(false); } // mcLDR_RHome m_bManSetting = true; //SetManCycle함수는 화면 쓰레드. 업데이트 함수에서 다른쓰레드로 들어와서 갱신하기에 플레그 걸어 막아둠. m_iManNo = _iNo; bool bRet = true; // mcULD_Home /********************/ /********************/ if (m_iManNo == mc.NoneCycle) { bRet = false; } else if (m_iManNo == mc.AllHome) { } if (!bRet) { Init(); } /********************/ /* 처리.. */ /********************/ if (m_iManNo == mc.NoneCycle) { } else if (m_iManNo == mc.AllHome) { ML.MT_SetServoAll(true); SEQ.WRK.InitHomeStep(); SEQ.OUT.InitHomeStep(); } else if (m_iManNo == mc.StepCut) { m_iManStep = 10; } else if (m_iManNo == mc.Move5mm) { m_iManStep = 10; } else if (m_iManNo == mc.Move100mm) { m_iManStep = 10; } //else if (m_iManNo == mc.XRAY_CycleAging ) {SEQ.XRAY.InitCycleStep(); } //else if (m_iManNo == mc.USBC_CycleConnect ) {SEQ.USBC.InitCycleStep(); } m_bManSetting = false; //m_bManSetting 중요함 리턴전에 꼭 펄스 시켜야함. 쓰레드가 달라서. ::Update에서 m_iManNo=0이 되므로 주의. return(true); }
// CPartInterface * m_pPart[MAX_PART] ; //-------------------------------------------------------------------------------------------------------- public static void Reset() { //Check running flag. if (m_bRun) { return; } if (m_iSeqStat == EN_SEQ_STAT.Init) { return; } if (m_iStep == EN_SEQ_STEP.ToStopCon) { return; } if (m_iStep == EN_SEQ_STEP.ToStop) { return; } LOT.Reset(); Log.Trace("Seq", "Reset"); m_tmToStop.Clear(); m_tmToStrt.Clear(); m_tmFlickOn.Clear(); m_tmFlickOff.Clear(); m_tmTemp.Clear(); m_tmMotor1.Clear(); m_tmMotor2.Clear(); m_tmMotor3.Clear(); m_tmCloseDoor.Clear(); //Init. Var. m_bBtnReset = false; m_bBtnStart = false; m_bBtnStop = false; m_bRunEnd = false; m_bRun = false; m_iStep = EN_SEQ_STEP.Idle; //Error. ML.ER_Clear(); //Manual. MM.Reset(); //ML. for (int i = 0; i < (int)pi.MAX_PART; i++) { m_Part[i].Reset(); } //Lot End Flag Reset. LOT.Reset(); //FM_CloseMsgOk(); m_iSeqStat = EN_SEQ_STAT.Stop; //System. //if(!EM_IsErr()) return; //20150801 선계원 홈잡을때 리셑 누르면 홈스텝이 날라가서 처박았음. //ML.MT_ResetAll(); ML.MT_ResetAll(); ML.MT_SetServoAll(true); }
//Manual Processing. public static bool SetManCycle(mc _iNo) { m_iCrntManNo = m_iManNo; if (_iNo < 0) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (_iNo >= mc.MAX_MANUAL_CYCLE) { Log.ShowMessage("ERROR", "Wrong Manual No"); return(false); } if (m_iManNo != mc.NoneCycle) { Log.ShowMessage("ERROR", "Doing Manual Cycle"); return(false); } if (SEQ._bRun) { Log.ShowMessage("ERROR", "Autorunning"); return(false); } if (_iNo > mc.ULDR_Home && !SEQ.InspectHomeDone()) { return(false); } //LOL if (!SML.IO.GetX((int)xi.ETC_MainAir) ) { Log.ShowMessage("ERROR", "Main Air is Not Supply"); return false; } //Check Alarm. //LOL if (SML.ER.IsErr()) { Init(); return false; } //아 밑에 처리 하는 애 때문에 잠시 이렇게 함. //test // if(!IO_GetX(xETC_MainPower) ) {FM_MsgOk("ERR","Power On Plz"); return false ;} //test //if (!ML.IO.GetX((int)EN_INPUT_ID.xETC_MainAirChk)) { MessageBox.Show("Check Main Air!", "ERROR"); return false; } //test // mcLDR_RHome m_bManSetting = true; //SetManCycle함수는 화면 쓰레드. 업데이트 함수에서 다른쓰레드로 들어와서 갱신하기에 플레그 걸어 막아둠. // mcIDX_Home m_iManNo = _iNo; // mcLTL_Home // mcRTL_Home //ML.ER.SetDisp(true);jinseop bool bRet = true; // mcSTG_Home // mcULD_Home /********************/ /********************/ if (m_iManNo == mc.NoneCycle) { bRet = false; } else if (m_iManNo == mc.AllHome) { } else if (m_iManNo == mc.LODR_Home) { } else if (m_iManNo == mc.PREB_Home) { } else if (m_iManNo == mc.HEAD_Home) { } else if (m_iManNo == mc.PSTB_Home) { } else if (m_iManNo == mc.ULDR_Home) { } else if (m_iManNo == mc.LODR_Wait) { } else if (m_iManNo == mc.LODR_Supply) { } else if (m_iManNo == mc.LODR_Pick) { } else if (m_iManNo == mc.LODR_Work) { } else if (m_iManNo == mc.LODR_Drop) { } else if (m_iManNo == mc.VSNZ_Wait) { } else if (m_iManNo == mc.VSNZ_Stt) { } else if (m_iManNo == mc.VSNZ_Move) { } else if (m_iManNo == mc.VSNZ_Insp) { } else if (m_iManNo == mc.VSNZ_Next) { } else if (m_iManNo == mc.PSTB_Wait) { } else if (m_iManNo == mc.PSTB_Stt) { } else if (m_iManNo == mc.PSTB_In) { } else if (m_iManNo == mc.PSTB_Work) { SEQ.PSTB.CopyArray(); if (SEQ.PSTB.ArayMark.GetCntStat(cs.Fail) == 0) { Log.ShowMessage("Error", "There is no Fail on PostBufferZone"); bRet = false; } } else if (m_iManNo == mc.PSTB_Out) { } else if (m_iManNo == mc.PSTB_Next) { } else if (m_iManNo == mc.PSTB_Replace) { } else if (m_iManNo == mc.ULDR_Wait) { } else if (m_iManNo == mc.ULDR_Supply) { } else if (m_iManNo == mc.ULDR_Pick) { } else if (m_iManNo == mc.ULDR_Work) { } else if (m_iManNo == mc.ULDR_Drop) { } if (!bRet) { Init(); } /********************/ /* 처리.. */ /********************/ if (m_iManNo == mc.NoneCycle) { } else if (m_iManNo == mc.AllHome) { ML.MT_SetServoAll(true); SEQ.LODR.InitHomeStep(); SEQ.PREB.InitHomeStep(); SEQ.VSNZ.InitHomeStep(); SEQ.PSTB.InitHomeStep(); SEQ.ULDR.InitHomeStep(); } else if (m_iManNo == mc.LODR_Home) { ML.MT_SetServoAll(true); SEQ.LODR.InitHomeStep(); } else if (m_iManNo == mc.PREB_Home) { ML.MT_SetServoAll(true); SEQ.PREB.InitHomeStep(); } else if (m_iManNo == mc.HEAD_Home) { ML.MT_SetServoAll(true); SEQ.VSNZ.InitHomeStep(); } else if (m_iManNo == mc.PSTB_Home) { ML.MT_SetServoAll(true); SEQ.PSTB.InitHomeStep(); } else if (m_iManNo == mc.ULDR_Home) { ML.MT_SetServoAll(true); SEQ.ULDR.InitHomeStep(); } else if (m_iManNo == mc.LODR_Wait) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_Supply) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_Pick) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_Work) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.LODR_Drop) { SEQ.LODR.InitCycleStep(); } else if (m_iManNo == mc.VSNZ_Wait) { SEQ.VSNZ.InitCycleStep(); } else if (m_iManNo == mc.VSNZ_Stt) { SEQ.VSNZ.InitCycleStep(); } else if (m_iManNo == mc.VSNZ_Move) { SEQ.VSNZ.InitCycleStep(); } else if (m_iManNo == mc.VSNZ_Insp) { SEQ.VSNZ.InitCycleStep(); } else if (m_iManNo == mc.VSNZ_Next) { SEQ.VSNZ.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Wait) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Stt) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_In) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Work) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Out) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Next) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.PSTB_Replace) { SEQ.PSTB.InitCycleStep(); } else if (m_iManNo == mc.ULDR_Wait) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_Supply) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_Pick) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_Work) { SEQ.ULDR.InitCycleStep(); } else if (m_iManNo == mc.ULDR_Drop) { SEQ.ULDR.InitCycleStep(); } m_bManSetting = false; //m_bManSetting 중요함 리턴전에 꼭 펄스 시켜야함. 쓰레드가 달라서. ::Update에서 m_iManNo=0이 되므로 주의. return(true); }