Exemplo n.º 1
0
 public bool Inposition()
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_IsPositionReached(m_nPort, Convert.ToByte(m_nModuleID));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     return(0 < m_nRetValue ? true : false);
 }
Exemplo n.º 2
0
 public bool IsHome()
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_GetHomeSwitchStatus(m_nPort, Convert.ToByte(m_nModuleID));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     return(0 < m_nRetValue ? true : false);
 }
Exemplo n.º 3
0
 public int GetActSpeed()
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_GetActualSpeed(m_nPort, Convert.ToByte(m_nModuleID));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     return(m_nRetValue);
 }
Exemplo n.º 4
0
        /// <summary>
        /// 홈동작 완료 확인.
        /// </summary>
        /// <returns>홈동작 완료여부</returns>
        public bool GetHomeDone()
        {
            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_GetRefSearchStatus(m_iPortID, (byte)Para.iPhysicalNo, ref iRet);
            return(iRet == 0);
        }
Exemplo n.º 5
0
        /// <summary>
        /// -방향 조그 이동
        /// </summary>
        /// <param name="_dVel">초당 구동 속도 펄스</param>
        /// <param name="_dAcc">구동 가속율 펄스</param>
        /// <param name="_dDec">감속율 펄스</param>
        public void JogN(double _dVel, double _dAcc, double _dDec)
        {
            int iRet = 0;

            //EMCL.ERAETech_EMCL_Sync_SetMaxAcceleration(m_iPortID, (byte)Para.iPhysicalNo, (int)_dAcc, ref iRet);
            //if (iRet != 0)
            //{
            //    Log.ShowMessage("EMCL_"+Para.iPhysicalNo.ToString()+"Axis" , GetErrMsg(iRet));
            //}
            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, 5, 0, 0, (int)_dAcc, ref iRet);  //3번째 인자가 가감속 설정하는 부분 가속 = 5, 감속 = 17
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, 17, 0, 0, (int)_dDec, ref iRet);  //3번째 인자가 가감속 설정하는 부분 가속 = 5, 감속 = 17
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
            EMCL.ERAETech_EMCL_Sync_RotateLeft(m_iPortID, (byte)Para.iPhysicalNo, (int)_dVel, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 홈센서 기준 절대 위치로 이동.
        /// </summary>
        /// <param name="_dPos">이동할 위치 펄스단위</param>
        /// <param name="_dVel">이동할 속도 펄스단위</param>
        /// <param name="_dAcc">이동할 가속 펄스단위</param>
        /// <param name="_dDec">이동할 감속 펄스단위</param>
        /// <returns>성공여부</returns>
        public void GoAbs(double _dPos, double _dVel, double _dAcc, double _dDec)
        {
            int iRet = 0;

            //EMCL.ERAETech_EMCL_Sync_SetMaxAcceleration(m_iPortID, (byte)Para.iPhysicalNo, (int)_dAcc, ref iRet);

            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, 5, 0, 0, (int)_dAcc, ref iRet);  //3번째 인자가 가감속 설정하는 부분 가속 = 5, 감속 = 17
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, 17, 0, 0, (int)_dDec, ref iRet);  //3번째 인자가 가감속 설정하는 부분 가속 = 5, 감속 = 17
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }

            EMCL.ERAETech_EMCL_Sync_SetMaxPositionSpeed(m_iPortID, (byte)Para.iPhysicalNo, (int)_dVel, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }

            EMCL.ERAETech_EMCL_Sync_MoveToPosition(m_iPortID, (byte)Para.iPhysicalNo, 0, (int)_dPos, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 7
0
        public void AlarmReset()
        {
            int nVal = 0;

            EMCL.ERAETech_EMCL_Sync_ResetPosError(m_nPort, Convert.ToByte(m_nModuleID), ref nVal);
            EMCL.ERAETech_EMCL_ResetAlarm(m_nPort, Convert.ToByte(m_nModuleID));
        }
Exemplo n.º 8
0
 public int SearchStatus()
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_GetRefSearchStatus(m_nPort, Convert.ToByte(m_nModuleID));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     return(m_nRetValue);
 }
Exemplo n.º 9
0
        public bool ComOpen(string strCom, int nBaud)
        {
            string sPortNum = strCom.Replace("COM", "");

            m_nPort = Convert.ToInt32(sPortNum);
            EMCL.ERAETech_EMCL_OpenComm(m_nPort, Convert.ToInt32(nBaud));

            return(EMCL.ERAETech_EMCL_IsPortOpen(m_nPort));
        }
Exemplo n.º 10
0
        public void MoveStop(int nAcc)
        {
            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetMaxAcceleration(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nAcc));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);

            // send command and read recv buffer
            EMCL.ERAETech_EMCL_Stop(m_nPort, Convert.ToByte(m_nModuleID));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 홈시퀜스를 중단한다.
        /// </summary>
        public void StopHome()
        {
            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_StopRefSearch(m_iPortID, (byte)Para.iPhysicalNo, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 12
0
        public void JogMove_N(int nSpeed, int nAcc)
        {
            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetMaxAcceleration(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nAcc));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);

            // send command and read recv buffer
            EMCL.ERAETech_EMCL_RotateLeft(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nSpeed));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 서보 온오프
        /// </summary>
        /// <param name="_bOn">온오프</param>
        public void SetServo(bool _bOn)
        {
            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_SetServoOn(m_iPortID, (byte)Para.iPhysicalNo, _bOn ? 1 : 0, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 14
0
        public void SetZero()
        {
            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetZeroPosition(m_nPort, Convert.ToByte(GlobalVariable.LoadlockMotor.nModule));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);

            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetEncoderZeroPosition(m_nPort, Convert.ToByte(m_nModuleID));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
        }
Exemplo n.º 15
0
 public void MoveStart(int nTargetPos, int nAcc, MoveMode mode)
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_SetMaxPositionSpeed(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nAcc));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     Thread.Sleep(10);
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_MoveToPosition(m_nPort, Convert.ToByte(m_nModuleID), (byte)mode, Convert.ToInt32(nTargetPos));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
     Thread.Sleep(10);
 }
Exemplo n.º 16
0
        //Motion Functions.
        /// <summary>
        /// 모터 정지 명령.
        /// </summary>
        public void Stop()
        {
            //혹시병신짓 하면 Acc설정해 보자.
            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_Stop(m_iPortID, (byte)Para.iPhysicalNo, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 17
0
        /// <summary>
        /// 홈을 수행한다.
        /// </summary>
        /// <returns>수행 성공여부.</returns>
        public bool GoHome(double _dHomeVelFirst, double _dHomeVelLast, double _dHomeAccFirst)
        {
            SetServo(true);

            int iRet = 0;

            //홈찾는 방법
            EMCL.ERAETech_EMCL_Sync_SetSearchMode(m_iPortID, (byte)Para.iPhysicalNo, (int)Para.eHomeMode, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return(false);
            }

            //가감속
            EMCL.ERAETech_EMCL_Sync_SetMaxAcceleration(m_iPortID, (byte)Para.iPhysicalNo, (int)_dHomeAccFirst, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return(false);
            }



            //첫번째 속도.
            EMCL.ERAETech_EMCL_Sync_SetRefSearchSpeed(m_iPortID, (byte)Para.iPhysicalNo, (int)_dHomeVelFirst, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return(false);
            }

            //마지막 속도.
            EMCL.ERAETech_EMCL_Sync_SetRefSwitchSpeed(m_iPortID, (byte)Para.iPhysicalNo, (int)_dHomeVelLast, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return(false);
            }

            //요이 땅.
            EMCL.ERAETech_EMCL_Sync_StartRefSearch(m_iPortID, (byte)Para.iPhysicalNo, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return(false);
            }


            return(true);
        }
Exemplo n.º 18
0
        public void MoveHome(int nRefSpeed)
        {
            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetRefSearchSpeed(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nRefSpeed));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);

            // send command and read recv buffer
            EMCL.ERAETech_EMCL_SetRefSwitchSpeed(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(nRefSpeed));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);

            // send command and read recv buffer
            EMCL.ERAETech_EMCL_StartRefSearch(m_nPort, Convert.ToByte(m_nModuleID));
            EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
        }
Exemplo n.º 19
0
        /// <summary>
        /// 리셑 시그널 온오프 제어
        /// </summary>
        /// <param name="_bOn">온오프</param>
        public void SetReset(bool _bOn)
        {
            if (!_bOn)
            {
                return;
            }

            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_ResetAlarm(m_iPortID, (byte)Para.iPhysicalNo, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
            }
        }
Exemplo n.º 20
0
        /// <summary>
        /// Command Encoder Target포지션 세팅.
        /// </summary>
        /// <param name="_dPos">세팅할 펄스</param>
        public void SetPos(double _dPos)
        {
            int iRet = 0;

            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, (byte)EMCL.MotorCmd.EMCL_MVP, (byte)EMCL.AxisParam.AXIS_PARAM_ACTUAL_POS, 0, (int)_dPos, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return;
            }
            EMCL.ERAETech_EMCL_Sync_SendCommand(m_iPortID, (byte)Para.iPhysicalNo, (byte)EMCL.MotorCmd.EMCL_MVP, (byte)EMCL.AxisParam.AXIS_PARAM_ENCODER_POS, 0, (int)_dPos, ref iRet);
            if (iRet != 0)
            {
                Log.ShowMessage("EMCL_" + Para.iPhysicalNo.ToString() + "Axis", GetErrMsg(iRet));
                return;
            }
        }
Exemplo n.º 21
0
        /// <summary>
        /// 홈이 지원 안되는 보드 같은경우 돌려주고 Update 함수 내부에서 처리 해야 한다.
        /// 파익스는 네트워크 타입이라 너무 느려서 업데이트에서 한번만 스캔하여 담아두고
        /// </summary>
        public void Update()
        {
            if (Para.iPhysicalNo != 0)
            {
                return;
            }

            int iEncPos = 0;

            for (int i = 0; i < m_iMaxMotor; i++)
            {
                EMCL.ERAETech_EMCL_GetAllStatus(m_iPortID, (byte)i, ref MotorStat[i]);
                //EMCL.ERAETech_EMCL_GetRefSearchStatus(m_iPortID, (byte)i);

                EMCL.ERAETech_EMCL_Sync_GetEncoderPos(m_iPortID, (byte)i, ref iEncPos);
                MotorEncPos[i] = (double)iEncPos;
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// 초기화 함수.
        /// </summary>
        /// <returns>초기화 성공여부</returns>
        public bool Init()
        {
            Para = new CParaMotorEmcl();
            if (m_bInit == false)
            {
                m_bInit = true;
                //통합 보드 초기화 부분.

                m_iPortID = 1;
                //9600
                //14400
                //19200
                //38400
                //57600
                //115200
                m_iBoudRate = 57600;

                EMCL.ERAETech_EMCL_OpenComm(m_iPortID, m_iBoudRate);

                if (!EMCL.ERAETech_EMCL_IsPortOpen(m_iPortID))
                {
                    Log.ShowMessage("EMCL", "Port Open Error PortNo =" + m_iPortID.ToString());
                    //return false ;
                }


                m_iMaxMotor = EMCL.ERAETech_EMCL_GetNodeCount(m_iPortID, 10);//포트에 몇개의 모터가 달려 있는지...확인 10개까지 확인해 본다.
                if (m_iMaxMotor == 0)
                {
                    m_iMaxMotor = 10;
                    //Log.ShowMessage("EMCL", "Motor Connected Error PortNo =" + m_iPortID.ToString());
                }

                MotorStat   = new EMCL.MotorStatus[m_iMaxMotor];
                MotorEncPos = new double[m_iMaxMotor];
            }

            return(true);
        }
Exemplo n.º 23
0
 public void HomeStop()
 {
     // send command and read recv buffer
     EMCL.ERAETech_EMCL_StopRefSearch(m_nPort, Convert.ToByte(m_nModuleID));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
 }
Exemplo n.º 24
0
 public void SetHomeRef(HomeRefMode RefMode)
 {
     EMCL.ERAETech_EMCL_SetSearchMode(m_nPort, Convert.ToByte(m_nModuleID), Convert.ToInt32(RefMode));
     EMCL.ERAETech_EMCL_WaitAndGetReply(m_nPort, ref m_nRetValue);
 }
Exemplo n.º 25
0
 public bool IsComPortCheck()
 {
     return(EMCL.ERAETech_EMCL_IsPortOpen(m_nPort));
 }
Exemplo n.º 26
0
 public void GetAllStatus(ref EMCL.MotorStatus moStatus)
 {
     EMCL.ERAETech_EMCL_GetAllStatus(m_nPort, Convert.ToByte(m_nModuleID), ref moStatus);
 }
Exemplo n.º 27
0
 public bool ComClose(string strCom)
 {
     EMCL.ERAETech_EMCL_CloseComm(-1);
     return(true);
 }
Exemplo n.º 28
0
 public void SetResolution(int nValue)
 {
     EMCL.ERAETech_EMCL_SetMicroStep(m_nPort, Convert.ToByte(m_nModuleID), nValue);
 }
Exemplo n.º 29
0
 /// <summary>
 /// 종료 함수
 /// </summary>
 /// <returns>종료 성공여부</returns>
 public bool Close()
 {
     EMCL.ERAETech_EMCL_CloseComm(-1);//해당포트를 닫는다 -1 이면 모든 포트 닫음.
     return(true);
 }
Exemplo n.º 30
0
 public void ServoOff()
 {
     EMCL.ERAETech_EMCL_SetServoOn(m_nPort, Convert.ToByte(m_nModuleID), 0);
 }