Beispiel #1
0
        private short AddLineToCrd(short crdNo, IReadOnlyList <short> listOfAxisNo, STRUCT_CRD_PARA sCrdPara)
        {
            short sRtn = 0;
            int   pulseNumOfAxis1, pulseNumOfAxis2, pulseNumOfAxis3, pulseNumOfAxis4;

            switch (listOfAxisNo.Count)
            {
            case 2:
                pulseNumOfAxis1 = (int)UnitToPulse(listOfAxisNo[0], sCrdPara.m_dPositionOfAxis1);
                pulseNumOfAxis2 = (int)UnitToPulse(listOfAxisNo[1], sCrdPara.m_dPositionOfAxis2);
                sRtn           |= m_oMotionBase.LnXy(m_sCardNo, crdNo, pulseNumOfAxis1, pulseNumOfAxis2, sCrdPara.m_dVel, sCrdPara.m_dAcc);
                break;

            case 3:
                pulseNumOfAxis1 = (int)UnitToPulse(listOfAxisNo[0], sCrdPara.m_dPositionOfAxis1);
                pulseNumOfAxis2 = (int)UnitToPulse(listOfAxisNo[1], sCrdPara.m_dPositionOfAxis2);
                pulseNumOfAxis3 = (int)UnitToPulse(listOfAxisNo[2], sCrdPara.m_dPositionOfAxis3);
                sRtn           |= m_oMotionBase.LnXyz(m_sCardNo, crdNo, pulseNumOfAxis1, pulseNumOfAxis2, pulseNumOfAxis3, sCrdPara.m_dVel, sCrdPara.m_dAcc);
                break;

            case 4:
                pulseNumOfAxis1 = (int)UnitToPulse(listOfAxisNo[0], sCrdPara.m_dPositionOfAxis1);
                pulseNumOfAxis2 = (int)UnitToPulse(listOfAxisNo[1], sCrdPara.m_dPositionOfAxis2);
                pulseNumOfAxis3 = (int)UnitToPulse(listOfAxisNo[2], sCrdPara.m_dPositionOfAxis3);
                pulseNumOfAxis4 = (int)UnitToPulse(listOfAxisNo[3], sCrdPara.m_dPositionOfAxis4);
                sRtn           |= m_oMotionBase.LnXyza(m_sCardNo, crdNo, pulseNumOfAxis1, pulseNumOfAxis2, pulseNumOfAxis3, pulseNumOfAxis4, sCrdPara.m_dVel, sCrdPara.m_dAcc);
                break;
            }

            return(sRtn);
        }
Beispiel #2
0
        /// <summary>
        /// 添加数据到插补空间
        /// </summary>
        /// <param name="crdNo">坐标系号</param>
        /// <param name="listOfAxisNo">轴号链表</param>
        /// <param name="sCrdPara">插补数据结构体</param>
        /// <returns></returns>
        private short AddDataToCrd(short crdNo, IReadOnlyList <short> listOfAxisNo, STRUCT_CRD_PARA sCrdPara)
        {
            short sRtn = 0;

            switch (sCrdPara.m_datatype)
            {
            case 0:      //直线
                sRtn |= AddLineToCrd(crdNo, listOfAxisNo, sCrdPara);
                break;

            case 1:     //IO
                sRtn |= m_oMotionBase.BufIo(m_sCardNo, crdNo, 12, sCrdPara.m_usDoMask, sCrdPara.m_usDoValue);
                break;

            case 2:     //延时
                sRtn |= m_oMotionBase.BufDelay(m_sCardNo, crdNo, sCrdPara.m_usDelayTime);
                break;

            case 3:     //圆弧
                sRtn |= AddCircleToCrd(crdNo, sCrdPara);
                break;
            }

            return(sRtn);
        }
Beispiel #3
0
        private short AddCircleToCrd(short crdNo, STRUCT_CRD_PARA sCrdPara)
        {
            short  sRtn     = 0;
            int    nCircleX = (int)UnitToPulse(1, sCrdPara.m_dCircleX);
            int    nCircleY = (int)UnitToPulse(2, sCrdPara.m_dCircleY);
            double dCenterX = (int)UnitToPulse(2, sCrdPara.m_dCenterX);
            double dCenterY = (int)UnitToPulse(2, sCrdPara.m_dCenterY);

            sRtn |= m_oMotionBase.ArcXyc(m_sCardNo, crdNo, nCircleX, nCircleY, dCenterX, dCenterY, sCrdPara.m_sDir, sCrdPara.m_dVel, sCrdPara.m_dAcc);
            return(sRtn);
        }