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); }
/// <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); }
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); }