- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机电控制工程技术 1 插补算法 2 数控编程 内容 第一次课:插补算法软件仿真 通过编程来仿真、模拟并显示直线、圆弧的插补过程! 第二次课:数控编程实验 学会用手工编程和自动编程生成加工图案的G代码,并在固高工作台上实现仿真、加工! 课程安排 matlab:GUI函数 + matlab plot函数 其他软件亦可(VC,VB,JAVA等) 作业要求 实践任务: 关键点: 参数:步长、象限判断、进给方向、终点判断 开发环境的熟悉度 开发环境: 编写逐点比较法直线插补(四象限)和圆弧插补(四个象限,顺逆时针)程序并进行仿真; 在一个软件界面中同时实现两个插补算法。 内容 课程回顾 插补(Interpolation) 在数控机床中,刀具不能严格地按照要求加工的曲线运动,只能用折线轨迹逼近所要加工的曲线。 机床数控系统依照一定方法确定刀具运动轨迹的过程。也可以说,已知运动轨迹的起点坐标、终点坐标和轨迹的曲线方程,按照某种算法计算中间点的方法,也称为“数据点的密化”。 目前,多轴机床均采用插补算法来实现各种复杂的运动轨迹的。因此,插补算法非常重要! 脉冲增量插补 脉冲当量:每个单位脉冲所对应坐标轴的位移大小,称之为脉冲当量。是脉冲分配的基本单位,它取决于数控机床的加工精度,对于普通数控机床一般为0.01mm,对于较为精密的数控机床一般取0.005mm、0.0025mm或0.001mm等。 每次插补结束产生一个行程增量(一个脉冲当量)。以脉冲的方式输出给步进电机。 基本思想:用折线来逼近曲线(或直线)。 包括:数字脉冲乘法器、逐点比较法、数字积分法、相应改进算法。 脉冲增量插补 特点:实现方法简单,通常只用加法和移位即可完成插补,固其易用硬件实现,且运算速度很快。 缺点:插补运算速度与进给速度密切相关,输出地脉冲频率主要受插补程序所用时间的限制,数控系统要求精度越高,切削速度越慢。故适合于中等精度(如0.1mm)和中等速度(如1~3m/min)的以步进电机为驱动装置的开环数控系统。 现在数控系统大都采用时间分割法(数据采样法)进行插补运算。 直线逐点比较法 直线插补程序流程图: 以第一象限为例: 计算给定线段的插值点 将差值点在坐标系中绘制出来 逐点比较法—软件仿真 参数输入 A点坐标(10,10) B点坐标(50, 40) 脉冲当量 step=1 N10 G00 X10Y10 N20 M03 N30 G01 X50Y40F100 N40 M05 M30 参数输入 Xs = str2double(get(handles.edit1,String)); Ys = str2double(get(handles.edit2,String)); Xe = str2double(get(handles.edit3,String)); Ye = str2double(get(handles.edit4,String)); step = str2double(get(handles.edit5,String)); 计算终点相对坐标 A点相对坐标(0,0) B点相对坐标(40, 30) 计算终点相对坐标 Xrs=0;%在相对坐标系下,起点为原点 Yrs=0; Xre = Xe-Xs;%将绝对坐标转换为相对坐标,即将直线起始点平移至原点 Yre = Ye-Ys; 判断象限 if (Xre=0Yre=0) %判断象限 Dir=1; %直线位于第一象限 end if (Xre0Yre=0) Dir=2; %直线位于第二象限 end if (Xre0Yre0) Dir=3; %直线位于第三象限 end if (Xre=0Yre0) Dir=4; %直线位于第四象限 end 偏差判别/生成插值点 如何判别点与直线的位置关系? 定义偏差函数(偏差判别式): F=0, 加工点P落在直线OA上 F0, 加工点P落在直线OA上方 F0, 加工点P落在直线OA下方 直线逐点比较法 偏差判别/生成插值点 %相对坐标系下偏差判别式计算 Fs=abs(Xre)*abs(Yrs)-abs(Xrs)*abs(Yre); %第一个插值点 x=0; y=0; if(Dir==1) %在第一象限插补 if (Fs=0) %当前点在直线上方,为0表示在直线上 Xrs=Xrs+step; %x右移step else
文档评论(0)