//동기구동, 버그 있는듯. 갠트리로 대신 쓴다. //현재 동기구동 상태인지 확인하기 위해 uint로 리턴한다. //AXT_RT_SUCCESS 반환하면 동기구동상태 public bool SetLinkEnable(int _iSlvMotrNo) { //GantryEnable 실행하고 확인하면 가끔 확인 안될때가 있어서 먼저 확인하고 실행하는 것으로 바꾼다. uint uiHomeMathod = 0; double dOffset = .0; double dOfsRange = .0; uint uiGantryOn = 0; CAXM.AxmGantryGetEnable(Para.iPhysicalNo, ref uiHomeMathod, ref dOffset, ref dOfsRange, ref uiGantryOn); if (uiGantryOn != 0) { return(true); } uint uiRet = CAXM.AxmGantrySetEnable(Para.iPhysicalNo, _iSlvMotrNo, 0, 0, 999999); //System.Threading.Thread.Sleep(100); //uint uiHomeMathod = 0; //double dOffset = .0; //double dOfsRange = .0; //uint uiGantryOn = 0; //CAXM.AxmGantryGetEnable(Para.iPhysicalNo, ref uiHomeMathod ,ref dOffset, ref dOfsRange ,ref uiGantryOn); //if (uiGantryOn != 0) //{ // return true; //} return(false); }
//2축 제어 겐트리. public void SetGantryEnable() { uint uiHomeMathod = 0; double dOffset = .0; double dOfsRange = .0; uint uiGantryOn = 0; CAXM.AxmGantryGetEnable(Para.iPhysicalNo, ref uiHomeMathod, ref dOffset, ref dOfsRange, ref uiGantryOn); if (uiGantryOn != 0) { SetGantryDisable(); } if (Para.bGantryEnable) { uint uiRet = CAXM.AxmGantrySetEnable(Para.iPhysicalNo, Para.iGantrySubAdd, (uint)Para.eGantryMathod, Para.dGantryOffset * m_dPulsePerUnit, Para.dGantryOfsRange * m_dPulsePerUnit); } //프로그램 켜고 가끔 개별 홈 잡으면 서브축이 서보온이 안된상태일 경우가 있어서 야매로 이렇게 한다. //const int iServoOnBit = 0 ; //Servo On/Off. //iRet = AxmSignalWriteOutputBit(_iSlaveAxis, iServoOnBit, true); }
public bool GantrySetEnable() { try { if (GantryMasterAxis == -1 || GantrySlaveAxis == -1 || GantryMasterAxis == GantrySlaveAxis) { return(false); } uint res = CAXM.AxmGantrySetEnable(GantryMasterAxis, GantrySlaveAxis, GantrySlaveHomeUse, GantrySlaveOffset * m_listAxis[GantrySlaveAxis].UnitPerMM, GantrySlaveOffsetRange * m_listAxis[GantrySlaveAxis].UnitPerMM); if (res == (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS || res == (uint)AXT_FUNC_RESULT.AXT_RT_MOTION_ERROR_GANTRY_ENABLE) { m_listAxis[GantrySlaveAxis].IsUseAxis = false; return(true); } else { return(false); } } catch (Exception E) { LogFile.LogExceptionErr(E.ToString()); throw E; } }
//동기구동, 버그 있는듯. 갠트리로 대신 쓴다. //현재 동기구동 상태인지 확인하기 위해 uint로 리턴한다. //AXT_RT_SUCCESS 반환하면 동기구동상태 public bool SetLinkEnable(int _iSlvMotrNo) { uint uiRet = CAXM.AxmGantrySetEnable(Para.iPhysicalNo, _iSlvMotrNo, 0, 0, 999999); if (uiRet == (int)AXT_FUNC_RESULT.AXT_RT_SUCCESS) { return(true); } return(false); }