数据采样法插补C语言程序.doc

数据采样法插补C语言程序 #includelt;stdio.hgt; #includelt;math.hgt; #includelt;stdlib.hgt; /********************************************************************/ /* 函数名: InsertPoint */ /* 功能:控制机床各轴进给并将进给结果写入文件中 */ /* 参数:double x, double y 插补点单位:毫米 */ /* 说明:与机床硬件关联,每产生一个点调用一次 */ /********************************************************************/ void InsertPoint(double xCur,double yCur) { extern FILE *fp; char ch=10; printf(xCur=%f,yCur=%f\n,xCur,yCur); fprintf(fp,%f,%f,xCur,yCur); fputc(ch,fp); } /********************************************************************/ /* 函数名: Judge_Quadrant */ /* 功能:判断参数坐标的所在象限并返回相应象限值 */ /* 参数:double x mm */ /* double y mm */ /********************************************************************/ unsigned short Judge_Quadrant(double x, double y) { unsigned short nDir; if (xgt;=0) { //象限判断 if (ygt;=0) { nDir=1; return 1; } else { nDir=4; return 4; } } else { if (ygt;=0) { nDir=2; return 2; } else { nDir=3; return 3; } } } /********************************************************************/ /* 函数名: DSM_Line */ /* 功能:数据采样法直线插补 */ /* 参数:double XEnd, double YEnd 插补终点 mm */ /* double FVal 插补速度 mm/min */ /* unsigned short Ts 插补周期 ms */ /********************************************************************/ void DSM_Line(double XEnd, double YEnd, double FVal, unsigned short Ts) { double fDeltaL,fL; double K; int bXIsBigger; double GEnd,NEnd; double GStepVal;//NStepVal; double AxisGVal,AxisNVal; double fStVel; double fDistToEnd; fStVel=FVal/300000; //插补速度 ,单位为mm/st AxisGVal=AxisNVal=0; fDeltaL=FVal*Ts/(60*1000); //一个插补周期内的合成增量,单位为毫米 fL=sqrt(XEnd*XEnd+YEnd*YEnd);

文档评论(0)

1亿VIP精品文档

相关文档