Exemple #1
0
 // 원점 검출 구동 - AxmHomeSetStart
 public void HomeSeek()
 {
     lock (execLock)
     {
         Validate(CAXM.AxmHomeSetStart(Index));
     }
 }
Exemple #2
0
        // Home Search
        public void OriginMove(short m_nAxis)
        {
#if PROGRAM_RUNNING
            if (GetRunAxis(m_nAxis) == false)
            {
                return;
            }
            if (CAXM.AxmHomeSetStart(m_nAxis) != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS)
            {
                return;
            }
#endif
            return;
        }
Exemple #3
0
        /// <summary>
        /// 홈을 수행한다.
        /// </summary>
        /// <returns>수행 성공여부.</returns>
        public bool GoHome(double _dHomeVelFirst, double _dHomeVelLast, double _dHomeAccFirst)
        {
            SetServo(true);

            // 해당 축의 원점검색을 수행하기 위해서는 반드시 원점 검색관련 파라메타들이 설정되어 있어야 됩니다.
            // 만약 MotionPara설정 파일을 이용해 초기화가 정상적으로 수행됐다면 별도의 설정은 필요하지 않다.
            // 원점검색 방법 설정에는 검색 진행방향, 원점으로 사용할 신호, 원점센서 Active Level, 엔코더 Z상 검출 여부 등을 설정 한다.
            // 주의사항 : 레벨을 잘못 설정시 -방향으로 설정해도  +방향으로 동작할수 있으며, 홈을 찾는데 있어 문제가 될수있다.
            // (자세한 내용은 AxmMotSaveParaAll 설명 부분 참조)
            // 홈레벨은 AxmSignalSetHomeLevel 사용한다.
            // HClrTim : HomeClear Time : 원점 검색 Encoder 값 Set하기 위한 대기시간
            // HmDir(홈 방향): DIR_CCW (0) -방향 , DIR_CW(1) +방향
            // HOffset - 원점검출후 이동거리.
            // uZphas: 1차 원점검색 완료 후 엔코더 Z상 검출 유무 설정  0: 사용안함 , 1: Hmdir과 반대 방향, 2: Hmdir과 같은 방향
            // HmSig : PosEndLimit(0) -> +Limit
            //         NegEndLimit(1) -> -Limit
            //         HomeSensor (4) -> 원점센서(범용 입력 0)

            int iDir = Para.bHomeNegDir  ? 0 : 1;

            CAXM.AxmHomeSetMethod(Para.iPhysicalNo, iDir, (uint)Para.eHomeSignal, (uint)Para.eHomeZMethod, Para.dHomeClrTime, Para.dHomeOffset * m_dPulsePerUnit);
            CAXM.AxmHomeSetVel(Para.iPhysicalNo, _dHomeVelFirst, _dHomeVelFirst, _dHomeVelLast, _dHomeVelLast, _dHomeAccFirst, _dHomeAccFirst);
            CAXM.AxmHomeSetStart(Para.iPhysicalNo);

            /*
             * 원점검색구동 원점검색구동 원점검색구동 원점검색구동 원점검색구동 원점검색구동
             * 하드웨어 초기화 , 파라미터 설정 , 서보온의 과정으로 모션구동에 모션구동에 작업이 준비되어 있다 하더라도 좌표계의 방 향만 설정되어 있을 뿐 좌표계의 좌표계의 기준이 되는 원점은 설정이 설정이 되어 있지 않은 상태이다 상태이다 . 기구부가 사용자가 원하는 일정한 위치로 이송되기 위해서는 정확한 원점이 보장되어야 한다 . 원점검색을 하는 방법에는 크게 신호검색구동함수를 이용하는 방법과 원점검색함수를 이용하는 이용하는 방법이 있다 . 신호검색을 신호검색을 이용하여 홈검색을 수행하기 위해서는 상당히 번거로운 잡업들이 이루어지게 이루어지게 되기 때문에 이러한 과정을 과정을 더 편하게 하기 위해 홈검색 함수를 제공한다 . 원점검색함수를 원점검색함수를 이용하기 위해서는 AxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethoAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethodAxmHomeSetMethod 함수와 AxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVelAxmHomeSetelAxmHomeSetVelAxmHomeSetVelAxmHomeSetVel 함수를 이용하여 홈검색에 필요한 데이터들을 설정해주고 AxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStartAxmHomeSetStart 함수를 호출하여 홈검색 을 시 작하면 된다 .
             * 원점검색함수는 개별적인 쓰레드를 생성하여 작동하므로 , 만약 여러 축의 원점검색을 해야 하는 경우라면 , 각 각의 원점검색명령을 열거해서 열거해서 사용하면 된다 .
             *  원점검색 방법 및 속도 설정
             * 원점검색은 기구부에 따라 여러 가지 신호검색 순서가 발생할 발생할 수 있지만 , AXL , AXL, AXL 의 원점검색 원점검색 함수는 아래의 7단 계 원점검색 시퀀스로 이루어지며 이루어지며 , -방향으로 원점검색 실행할 실행할 경우 원점검색단계는 다음과 다음과 같다 . .
             * 다축구동Library User Manual Rev.2.0
             * 62 AJINEXTEK CO.,LTD.
             * 1단계 : -방향으로 이동하면서 이동하면서 홈센서의 Rising Edge Rising Edge Rising EdgeRising Edge Rising EdgeRising Edge신호를 검색하여 감속정지
             * (홈센서가 이미 HIGH HIGH HIGH HIGH HIGH 상태라면 1단계를 생략 )
             * 2단계 : +방향으로 이동하면서 이동하면서 홈센서의 Falling Edge신호를 검색하여 감속정지
             * 3단계 : -방향으로 이동하면서 이동하면서 홈센서의 Rising Edge신호를 검색하여 급정지
             * < Z < Z < Z < Z 상 검색을 사용하지 않은 경우 >
             * 4단계 : +방향으로 이동하면서 이동하면서 홈센서의 Falling EdgeFalling EdgeFalling EdgeFalling EdgeFalling Edge Falling EdgeFalling Edge Falling EdgeFalling Edge신호를 검색하여 급정지
             * 5단계 : -방향으로 이동하면서 이동하면서 홈센서의 Rising Edge Rising Edge Rising EdgeRising Edge Rising EdgeRising Edge신호를 검색하여 급정지
             * <Z 상 검색을 사용한 경우 >
             * 4단계 : +방향으로 이동하면서 이동하면서 Z 상의 Falling EdgeFalling EdgeFalling EdgeFalling EdgeFalling Edge Falling EdgeFalling Edge Falling EdgeFalling Edge신호를 검색하여 급정지
             * 5단계 : -방향으로 이동하면서 이동하면서 Z 상의 Rising Edge Rising Edge Rising EdgeRising Edge Rising EdgeRising Edge신호를 검색하여 급정지
             * 6단계 : Offset : Offset: Offset: Offset: Offset: Offset: Offset: Offset값이 있다면 OffsetOffsetOffsetOffsetOffsetOffset값 만큼 추가 이동
             * 7단계 : : 사용자 설정 시간동안 시간동안 대기 후 위치값을 0으로 설정
             *  StepStepStepStep별 원점검출 원점검출 원점검출 원점검출 속도설정의 속도설정의 속도설정의 속도설정의 속도설정의 이해 (Z (Z (Z 상 검색을 사용할 사용할 사용할 경우 )
             * Library User Manual Rev.2.0 다축구동
             * AJINEXTEK CO.,LTD. 63
             * ① VelFirst, AccFirst사용
             * HmDir 방향으로 원점센서를 고속 검출하고 HAccF 감속도로 감속정지
             * ② VelSecond, AccSecond사용
             * HmDir 반대 방향으로 원점센서의 Down Edge를 검출하고 HAccF 감속도로 감속정지
             * ③ VelThird사용
             * HmDir 방향으로 원점센서의 Up Edge를 검출하고 급정지
             * ④ VelLast 사용
             * HmDir 반대 방향으로 Z상의 Down Edge를 검출하고 급정지
             * ⑤ VelLast 사용
             * HmDir 방향으로 Z상의 Up Edge를 검출하고 급정지
             *  Offset 값 설정의 이해
             * 기구적인 원점센서 검출이 완료된 후 특정 위치로 옮겨 원점을 설정해야 될 경우 HOffset에 값을 지정하면
             * 원점 센서 검출이 완료된 후 자동으로 해당 Offset만큼 이동 완료 후 원점을 재 설정하게 된다. 이때 주의할
             * 것은 (+)나 (-)Limit 을 벗어나지 않는 범위에서 Offset을 지정해야 된다. 그렇지 않을 경우 원점검색을 정상
             * 적으로 수행할 수 없습니다.
             */

            return(true);
        }
        public void Home()
        {
            if (m_bIsUseAxis)
            {
                SetServoOn(true);

                uint duRetCode = 0;

                duRetCode = CAXM.AxmHomeSetVel(m_nAxisNumber, 30 * m_dUnitperMM, 10 * m_dUnitperMM, 5 * m_dUnitperMM, 2 * m_dUnitperMM, 50 * m_dUnitperMM, 50 * m_dUnitperMM);
                if (duRetCode != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS)
                {
                    MessageBox.Show(String.Format("AxmHomeSetVel return error[Code:{0:d}]", duRetCode));
                    return;
                }

                duRetCode = CAXM.AxmHomeSetStart(m_nAxisNumber);
                if (duRetCode != (uint)AXT_FUNC_RESULT.AXT_RT_SUCCESS)
                {
                    MessageBox.Show(String.Format("AxmHomeSetStart return error[Code:{0:d}]", duRetCode));
                    return;
                }

                m_eStat = eAxis.eHome;
            }
        }