/// <summary> /// 홈을 수행한다. /// </summary> /// <returns>수행 성공여부.</returns> public bool GoHome(double _dHomeVelFirst, double _dHomeVelLast, double _dHomeAccFirst) { SetServo(true); short nRet; bool bRet; nRet = NMC2.nmc_SetSpeed(m_nDevId, (short)Para.iPhysicalNo, 200, _dHomeAccFirst, _dHomeAccFirst, _dHomeVelFirst); nRet = NMC2.nmc_SetAccSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeAccFirst); nRet = NMC2.nmc_SetDecSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeAccFirst); nRet = NMC2.nmc_SetHomeSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeVelFirst, _dHomeVelFirst, _dHomeVelLast); // 1. 0번 축의 원점 이동 모드 : +Near // 2. 원점 검색후(3차이동 까지 완료) CW회전으로 Z상 검출 // 3. 지령/엔코더 위치 0으로 초기화 // 4. Offset 300위치로 이동 // 5. Offset이동후 지령/엔코더 위치 0으로 초기화 //nRet = nmc_HomeMove(11, 0, 0x82 | 3, 0xF, 300); const short nHomeEndMode = NMC2.NMC_END_CMD_CLEAR_A_OFFSET | NMC2.NMC_END_ENC_CLEAR_A_OFFSET | NMC2.NMC_END_CMD_CLEAR_B_OFFSET | NMC2.NMC_END_ENC_CLEAR_B_OFFSET; //메뉴얼과 샘플이 달라서 샘플 방식으로 함...eHomeMethode 여기다 0x80을 덮어 씌워야 된다고 //메뉴얼에 나와 있었는데 잘 모르겠음... nRet = NMC2.nmc_HomeMove(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eHomeMode, nHomeEndMode, Para.dHomeOffset * m_dPulsePerUnit, 0); bRet = nRet == 0; return(bRet); }