Ejemplo n.º 1
0
        //동기구동, 버그 있는듯. 갠트리로 대신 쓴다.
        //현재 동기구동 상태인지 확인하기 위해 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);
        }
Ejemplo n.º 2
0
        //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);
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        //동기구동, 버그 있는듯. 갠트리로 대신 쓴다.
        //현재 동기구동 상태인지 확인하기 위해 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);
        }