毕业设计(论文)-基于单片机数控系统插补控制设计.doc_第1页
毕业设计(论文)-基于单片机数控系统插补控制设计.doc_第2页
毕业设计(论文)-基于单片机数控系统插补控制设计.doc_第3页
毕业设计(论文)-基于单片机数控系统插补控制设计.doc_第4页
毕业设计(论文)-基于单片机数控系统插补控制设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广州汽车学院课程设计说明书 基于单片机数控系统插补控制设计 院(系) 机电工程系 专 业 机械工程及其自动化 班 级 学生姓名 指导老师 李冬冬 2010年 12 月 18 日 课 程 设 计 任 务 书兹发给 班学生 课程设计任务书,内容如下:1 设计题目: 基于单片机数控系统插补控制设计 2 应完成的项目:(1)调研、搜集整理课题的相关资料,确定设计整体方案。 (2)理解并熟悉数控系统插补原理。 (3) 根据插补原理,用visual c+实现其模拟仿真。 (4) 单片机开发环境(vision )下,编程实现插补。(5) 完成设计说明书,准备答辩。 3 参考资料以及说明:(1) 数控技术。 (2) 单片机原理及应用。 (3) visual c+编程相关资料。 (4) 4 本设计任务书于2010 年11月29日发出,应于2010 年 12月22 日前完成,然后进行答辩。指导教师 签发 2010 年 11 月 29 日课程设计评语:课程设计总评成绩:指导教师签字:年 月 日25目 录摘 要4第一章 概 述51插补的基本概念52对插补器的基本要求53. 插补器的的分类54. 基准脉冲插补5第二章 逐点比较法71逐点比较法直线插补72逐点比较法圆弧插补83象限处理10第三章 数字积分分析法(dda)111dda直线插补112dda圆弧插补12第四章 visual c+插补仿真141. mfc应用软件的建立142. 设置工具栏153. 利用gdi绘图仿真插补16第5章 利用vision单片机编程23参考文献25附 件25 摘 要 本书是对“基于单片机数控系统插补控制设计”的课程设计进行说明,基准脉冲插补方法有:逐点比较法;最小偏差法;数字积分法;目标点跟踪法;单步追综法等。本次设计主要设计逐点比较和dda法的直线和圆弧编程。在设计的过程中首先要对数控机床的插补有所了解,然后写出流程图,接着在vc的mfc工程中,进行仿真插补运动,最后完成单片机编程。 本书深入浅出的介绍了设计的过程,简单的讲解了逐点比较和dda法的直线和圆弧算法。还介绍了vc+软件的mfc工程的新建方法,和一些简单的使用方法。最后还介绍了vision软件进行单片机编程。关键词:插补,逐点比较法,dda,vc+,应用程序,vision软件,单片机第一章 概 述 1插补的基本概念 “插补”(interpolation):根据给定进给速度和给定轮廓线形的要求,在运动轨迹的起始点坐标和轮廓轨迹之间,由数控系统计算出各个中间点的坐标,“插入”、“补上”运动轨迹中间点的坐标值。 无论是普通数控(nc)系统,还是计算机数控(cnc)系统,都必须有完成“插补”功能的部分,它是轮廓控制系统的本质特征。能完成插补工作的装置叫插补器。nc系统中插补器由数字电路组成,称为硬件插补,而在cnc系统中,插补器功能由软件来实现,称为软件插补。2对插补器的基本要求 插补是数控系统的主要功能,它直接影响数控机床加工的质量和效率。对插补器的基本要求是:插补所需的原始数据较少;有较高的插补精度,插补结果没有累计误差,局部偏差不能超过允许的误差(一般应保证小于规定的分辨率);沿进给路线的进给速度恒定且符合加工要求;硬件线路简单可靠,软件插补算法简洁,计算速度快。3. 插补器的的分类l 插补工作可以由硬件电路或软件程序完成,从而分为硬件插补器和软件插补器。l 从产生的数学模型来分有一次(直线)插补器,二次(圆,抛物线等)插补器及高次曲线插补器等。l 目前应用的插补方法分为基准脉冲插补和数据采样插补两大类。4. 基准脉冲插补基准脉冲插补又称为行程标量插补或脉冲增量插补。此算法的特点是每次插补结束时数控装置向每个运动坐标输出基准脉冲序列,每个脉冲代表了最小位移,脉冲序列的频率代表了坐标运动速度,而脉冲的数量表示位移量。其特点有:l 每次插补的结果仅产生一个单位的行程增量。以一个一个脉冲的方式输出给步进电机。其基本思想是:用折线来逼近曲线(包括直线)。l 插补速度与进给速度密切相关。因而进给速度指标难以提高,当脉冲当量为10m时,采用该插补算法所能获得的最高进给速度是34m/min。l 脉冲增量插补的实现方法比较简单。基准脉冲插补方法有:逐点比较法;最小偏差法;数字积分法;目标点跟踪法;单步追综法等。它们主要用早期的采用步进电机驱动的数控系统。由于此算法难以满足零件加工的要求,现在的数控系统已很少采用这类算法了。(1)逐点比较法控制工件与刀具之间每相对走一步完成四个工作节拍:l 第一,偏差判别。判别加工点对规定几何轨迹的偏离位置,然后决定运动的走向。l 第二,进给。控制某坐标轴进给一步,向规定的轨迹逼近,缩小偏差。l 第三,偏差计算。计算新的加工点对规定轨迹的偏差,作为下一步判别走向的依据。l 第四,终点判断。判断是否到达程序规定的加工终点?若到达终点,则停止插补,否则再回到第一拍。如此不断地重复上述循环过程,直到终点,就能加工出所要求的轮廓形状。(2)数字积分插补法 数字积分插补法又称为数字积分分析法(dda),是利用数字积分的方法,计算刀具沿各坐标轴的位移,使刀具沿着所加工的轨迹运动。第二章 逐点比较法1逐点比较法直线插补 直线插补时,以直线起点为原点,给出终点坐(xe,ye),直线方程为: ; 直线插补时插补偏差可能有三种情况 :以第一象限为例,插补点位于直线上方,下方和直线上。对位于直线上方的点a,则有:;对位于直线上的点b,则有:;对位于直线下方的点c,则有:因此,可以取判别函数为: f0时,应向+x方向走一步,才能接近直线;f0的情况。整个插补工作,从原点开始,走一步算一步,判别一次f,再趋向直线,步步前进。设第一象限中的点(xi , yi)的f值为fi,j。若沿+x方向走一步,即若沿+y方向走一步,即直线插补的终点判别方法:l 每走一步判断最大坐标的终点坐标值(绝对值)与该坐标累计步数坐标值之差是否为零,若等于零,插补结束。l 把每个程序段中的总步数求出来,即n=xe+ye ,每走一步,进行n-1,直到n=0时为止。当f0时,沿+x方向走一步,然后计算新的偏差和终点判别计算当f0时,动点在圆弧外;f0和f=0的情况合并在一起考虑,就可以实现第一象限逆时针方向的圆弧插补。当f0时,向-x走一步;当f0时,向+y走一步。每走一步后,计算一次判别函数,作为下一步进给的判别标准,同时进行一次终点判断。f值可用递推计算方法由加、减运算逐点得到。设已知动点的f值为fi,j ,则:动点在-x方向走一步后:动点在+ y方向走一步后:终点判断可采用与直线插补相同的方法。 归纳起来,f0时,向-x 方向走一步。其偏差计算,坐标值计算和终点判别计算用下面公式:f(y-y)/判断直线倾斜角度是否小于45度 i=0; else i=1; do /以下是进行插补运算 cclientdc dc(this); cpen pen(ps_solid,1,rgb(0,0,255); dc.selectobject(&pen);/定义画笔 if(i=0) if(f=0) x+;/进给 point.x=x; point.y=y; dc.lineto(point); else x+; y+;/同时进给 point.x=x; point.y=y; dc.lineto(point); if(i=1) if(f=0) x+; y+;/同时进给 point.x=x; point.y=y; dc.lineto(point); else y+;/进给 point.x=x; point.y=y; dc.lineto(point); f=x*y-y*x; dc.moveto(point); for(long int w=0;w0) x-;/进给 f=(x-c)*(x-c)+(y-d)*(y-d)-(a-c)*(a-c)+(b-d)*(b-d); else y+;/进给 f=(x-c)*(x-c)+(y-d)*(y-d)-(a-c)*(a-c)+(b-d)*(b-d); for(long int w=0;w=99999;w+) ; /延时语句 dc.lineto(x,y); /圆弧逐点第1象限 if(idm=1)&(idn=2)/dda直线 cclientdc dc(this); dc.lineto(point); cpen pen(ps_solid,1,rgb(255,0,0); dc.selectobject(&pen); double m,n; double x,y; double e,f; double x,y; x=0;y=0;/起点 m=pow(2,16);/运算总次数 n=0;x=0;y=0; e=point.x; f=point.y;/获取终点坐标 while(nm)/修正 x=x-m;x+;/x方向进给 else ; if(ym)/修正 y=y-m;y+;/y方向进给 else ; dc.lineto(x,y); long int k; for(k=0;k0)|(ny0) dc.moveto(x,y);jrx=jrx+jvx;/积分运算 jry=jry+jvy;if(jrxm)jrx=jrx-m;/修正jvy-;nx-;x-;/进给else ;if(jrym)jry=jry-m;/修正jvx+;ny-; y+;/进给else ;dc.lineto(x,y);/dda圆弧第1象限 / todo: add your message handler code here and/or call defaultcview:onlbuttondown(nflags, point);void ccbfzview:online() idm=1;/直线按钮值/ todo: add your command handler code herevoid ccbfzview:oncircle() idm=2;/圆弧按钮值/ todo: add your command handler code herevoid ccbfzview:onzhudian() idn=1;/逐点按钮值/ todo: add your command handler code herevoid ccbfzview:ondda() idn=2;/dda按钮值/ todo: add your command handler code herevoid ccbfzview:onclr() idn=0; idm=0;cclientdc dc(this);dc.rectangle(-1,-1,1600,1000);/矩形框,用于清屏 / todo: add your command handler code here仿真如图,详细请看附件cbfz文件夹的vc程序。第5章 利用vision单片机编程1. 新建工程打开“keli version”软件,在菜单栏中,选择“工程”“新建工程”选择“at89s51”单片机。新建一个文件夹,命名为“at89x51”。然后在菜单中选择“文件”“新建”,命名为“text1.c”。然后在目录框中选择“源代码组1”,右键点击,选择“添加文件到源代码组1”,如图:由于,“keli version”软件可以用vc语言来编写,所以与vc程序很相似。所以以直线逐点比较为例,只需把画直线的部分改为p1.0和p2.0 i/o接口,程序如图:#include #include #include void delay001s(unsigned int t) t=100000000; while(t-)_nop_();void main()signed int f,x,y,i;signed int x,y;x=0;y=0;x=100;y=80;f=x*y-y*x;/方向判定 if (x-x)(y-y) /判断是否大于45度i=0;else i=1;do if(i=0)if(f=0) x+; / x正方向走一步 delay001s(100); p1_0=1; delay001s(100); p1_0=0; else x+; y+; delay001s(100); / x正方向走一步 p1_0=1; p2_0=1; delay001s(100);/ y正方向走一步 p1_0=0; p2_0=0; if(i=1)if(f=0) x+; y+; delay001s(100); / x正方向走一步 p1_0=1; p2_0=1; delay001s(100);/ y正方向走一步 p1_0=0; p2_0=0; else y+;/y正方向走一步 delay001s(100); p2_0=1; delay001s(100); p2_0=0; f=x*y-y*x; while(x!=x)|(y!=y);/终点判别详细请看“at89x51”文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论