数控加工仿真课程设计说明书.doc_第1页
数控加工仿真课程设计说明书.doc_第2页
数控加工仿真课程设计说明书.doc_第3页
数控加工仿真课程设计说明书.doc_第4页
数控加工仿真课程设计说明书.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

广东工业大学 数控课程设计 数控仿真技术课程设计 摘 要从工程的角度来看,仿真就是通过对系统模型的实验去研究一个已有的或设计中的系统,分析复杂的动态对象,仿真是一种有效的方法,可以减少风险,缩短设计和制造的周期并节约投资。计算机仿真就是借助计算机,利用系统模型对实际系统进行实验研究的过程。它随着计算机技术的发展而迅速地发展,在仿真中它有越来越重要的地位。计算机仿真技术的发展趋势主要表现在两个方面:应用领域的扩大和仿真计算机的智能化。计算机仿真技术不仅在传统的工程技术领域(航空、航天、化工等方面)继续发展,而且扩大到社会经济、生物等许多非工程领域,此外,并行处理、人工智能、知识库和专家系统等技术的发展正影响着仿真计算机的发展。数控加工仿真利用计算机来模拟实际的加工过程,是验证数控加工程序的可靠性和预测切削过程的有力工具,以减少工件的试切,提高生产效率。仿真软件界面友好,基本实现了设计任务的要求,通过本软件可以知道在仿真加工刀具的坐标、各轴的工作情况以及辅助电机(冷却液的控制情况)本仿真程序应用的是脉冲插补算法。在仿真过程中应用了两种插补方法:直线插补,圆弧插补(包括顺时方向插补和逆时方向插补)。本仿真程序可以实现如下指令的判别和执行:g01,g02, g03, g04,g05,m05,m08 ,m09,m03,m30.在应用时,编程者只要按照本应用程序的要求输入程序,即可以实现所要求的加工过程的仿真过程。本程序能够判断所输入的程序的正确性,可以对程序进行编辑。本软件可以从平面和轴测两个视图同时观察仿真过程。 abstract the type of numerical control in my resign is point-to-point .there are two interpolation schemes that have been used to generating a smooth continuous path. they include:1. linear interpolation2. circular interpolation linear interpolation is used to generate a straight-line path. the programmer is required to specify the beginning point and end point of the straight line (x. y. z.). circular interpolation schemes is used to generate a circular (i. j). the interpolator computes the feed rates for each of the two (or three)axes in order to achieve the specified feed rate.my resign can carry out these commands such as g01,g02, g03, g04,g05,m05,m08 ,m09,m03,m30;the simulation process can be seen in two means: orthographic and isometric at the same time.目 录第一章 设计任务书4第二章 数控仿真技术发展状况5第三章 功能简介7第四章 nc代码的读取9第五章 插补过程10第六章 设计小结13第七章 参考书目13第八章 数控代码14第一章 设计任务书1设计题目:对于给定的一段nc代码,用vb或其他高级语言编写程序解释、插补,在pc机上仿真数控装置,进行图形描绘、坐标值显示、步进电机控制模拟显示及信号输出、冷却液和主轴开关量控制模拟显示及信号输出。 具体要求如下:(1) nc代码中包含的代码类型有:g90 g54 g00 g01 g02 g03 m03 m05 m08 m09 m302、数控系统的计算机仿真对于给定的一段nc代码,用vb或其他高级语言编写程序解释、插补,在pc机上仿真数控装置,进行图形描绘、坐标值显示、步进电机控制模拟显示及信号输出、冷却液和主轴开关量控制模拟显示及信号输出。具体要求如下:(1) nc代码中包含的代码类型有: g90 g54 g00 g01 g02 g03 m03 m05 m08 m09 m30图1 工件平面 例:下面给出一个具体的图形示意图,nc代码及其加工轨迹图: %o0000n106g0g90g54x10.y20.m03m08n108z50.n110z10.n112g1z-1.n114y15.0n118g2x15.y13.09j7.5n120x20.y15.i-5.0j5.59n122g1y20.0n126x10.n128g0z50.n130m5m09n136m30% (2)、要求根据nc代码屏幕模拟加工过程,图形显示位置,坐标值显示,辅助功能状态显示(冷却液和主轴开关量控制模拟显示)。(3)、pc机模拟加工过程中,要求有实时的驱动三轴步进电机的控制信号、控制冷却液和主轴转动的开关量输出控制信号。假设信号从计算机并行打印口的数据信号线输出,端口地址为0x378。并行口数据线分配如下(低电平有效):图2 加工仿真示图4广东工业大学 数控课程设计 第二章 数控仿真技术发展状况(1)计算机仿真的概念及应用为了解决数控加工中的程序编制问题,50年代,mit设计了一种专门用于机械零件数控加工程序编制的语言,称为apt(automatically programmed tool)。其后,apt几经发展,形成了诸如aptii、aptiii(立体切削用)、apt(算法改进,增加多坐标曲面加工编程功能)、aptac(advanced contouring)(增加切削数据库管理系统)和apt/ss(sculp tured surface)(增加雕塑曲面加工编程功能)等先进版。 采用apt语言编制数控程序具有程序简炼,走刀控制灵活等优点,使数控加工编程从面向机床指令的“汇编语言”级,上升到面向几何元素.apt仍有许多不便之处:采用语言定义零件几何形状,难以描述复杂的几何形状,缺乏几何直观性;缺少对零件形状、刀具运动轨迹的直观图形显示和刀具轨迹的验证手段;难以和cad数据库和capp系统有效连接;不容易作到高度的自动化,集成化。 针对apt语言的缺点,1978年,法国达索飞机公司开始开发集三维设计、分析、nc加工一体化的系统,称为为catia。随后很快出现了象euclid,ugii,intergraph,pro/engineering,mastercam及npu/gncp等系统,这些系统都有效的解决了几何造型、零件几何形状的显示,交互设计、修改及刀具轨迹生成,走刀过程的仿真显示、验证等问题,推动了cad和cam向一体化方向发展。到了80年代,在cad/cam一体化概念的基础上,逐步形成了计算机集成制造系统(cims)及并行工程(ce)的概念。目前,为了适应cims及ce发展的需要,数控编程系统正向集成化和智能化方向发展。 在集成化方面,以开发符合step(standard for the exchangeof product model data)标准的参数化特征造型系统为主,目前已进行了大量卓有成效的工作,是国内外开发的热点;在智能化方面,工作刚刚开始,还有待我们去努力。(2)数控仿真技术的研究现状数控机床加工零件是靠数控指令程序控制完成的。为确保数控程序的正确性,防止加工过程中干涉和碰撞的发生,在实际生产中,常采用试切的方法进行检验。但这种方法费工费料,代价昂贵,使生产成本上升,增加了产品加工时间和生产周期。后来又采用轨迹显示法,即以划针或笔代替刀具,以着色板或纸代替工件来仿真刀具运动轨迹的二维图形(也可以显示二维半的加工轨迹),有相当大的局限性。对于工件的三维和多维加工,也有用易切削的材料代替工件(如,石蜡、木料、改性树脂和塑料等)来检验加工的切削轨迹。但是,试切要占用数控机床和加工现场。为此,人们一直在研究能逐步代替试切的计算机仿真方法,并在试切环境的模型化、仿真计算和图形显示等方面取得了重要的进展,目前正向提高模型的精确度、仿真计算实时化和改善图形显示的真实感等方向发展。(3)虚拟制造目前的发展状况 虚拟制造从提出到现在已历经了20多年,技术上得到了很大的发展,应用方面也得到了广泛的扩展。在国外,有很多学校、研究所、科研单位、大型企业等都在不断的研究和应用虚拟制造技术。近年来,虚拟现实技术已较多地应用到汽车开发工作中,已初步形成一种集专业理论、工程设计、科学试验等为一身的较为完整的应用体系。例如,1995年美国标准与技术研究所的报告“国家先进制造实验台的概念设计计划”,强调了分散的、多节点的分散虚拟制造(dvm),即虚拟企业的概念;而美国国家研究委员会的报告“制造中的信息技术”,则探讨了产品集成、过程设计、车间控制、虚拟工厂等的信息技术问题。福特汽车公司也已经计划应用虚拟环境技术来设计和开发汽车,该公司的先进车辆技术组把虚拟制造技术应用于装配仿真和虚拟成形,以提高空气动力学、人机工程学和表面建模的效果。第三章 功能简介工具栏nc模拟框工作状态 并行口输出状态坐标值实时状态nc代码输入框 图(1)1.1、主界面简介如图(1)所示,程序主界面由如下几个部分组成:工具栏、nc代码输入框、坐标值实时状态框、工作状态框、nc模拟框。其中,工具栏菜单依次为:文件、编辑、视图、运行,工作状态框显示了冷却液的开关状态、主轴的转速及转向、步进电机x电机、y电机的转向。nc代码在nc代码输入框输入,根据nc代码在nc模拟框进行模拟加工。1.2、参数设置定界面: 图(2)如图(2)所示,在此界面,根据需要可以选择脉冲当量(单位为毫米mm)以及图形的放大倍数,以便显示,插补形式由于时间关系。通过写入工件坐标的原点。便可随时改变坐标的原点。1.3、nc代码格式在nc代码输入框输入代码,开头必须要有程序开始符“%”、结尾同样以结束符“%”结束,程序不能输入行符,因为本程序还不能辨别。指令符(g、m)可以是大写也可以是小写,指令间允许有空格。输入圆心时只能用ij指令,r指令不能识别这是该程序的不足之处,还有待提高。1.4、程序基本操作首先,在nc代码输入框输入nc代码或打开已有的代码,接着按工具栏上的运行“调试”,程序经过调试后,如果程序有错,会自动报错,报错时光标将会定位在有错的代码附近,可以方便用户修改,直到无误为至,此时程序会告诉用户调试成功,紧接着按“模拟”,在nc模拟框便会出现用户希望的图形。绘图的过程中用户可以按“暂停”键暂停绘图、再按时便继续绘制,按“结束”整个程序将停止。与此同时,坐标值实时显示框实时显示动点的坐标,工作状态框也反映工作状况。在快捷工具栏功能按钮一样可以实现如上功能。整个加工过程比较直观,一目了然。本程序优秀之处在于当程序未调试之前“模拟”键成淡色,不能使用,以防出错,而当模拟时“调试”键成淡色,程序不会乱套。第四章 nc代码的读取n程序报错yn i=i+1yn结束读入整个程序赋初值i=1判断是否有%读入第i行g、m、s指令和x、y、i、j的坐标值判断指令和坐标值正确与否开始y图3读完? 第五章 插补过程3.1插补算法说明本软件应用脉冲增量插补方法,这类插补方法的特点是:(1) 每次插补的结果仅产生一个单位的行程增量(一个脉冲当量),以一个脉冲的方式输出给步进电机。其基本思想是:用折线来逼近曲线(包括直线)。(2) 插补速度与进给速度密切相关。(3) 脉冲增量插补的实现方法较简单。脉冲增量插补的方法有逐点比较法、数字积分法,本软件用逐点比较法。逐点比较法的原理是:在仿真过程中,能逐点地计算和判别运动轨迹与给定轨迹的偏差,并根据偏差控制进给轴向给定轮廓靠近,缩小偏差,使加工轮廓逼近给定轮廓。逐点比较法是以折线来逼近直线和圆弧曲线的,它与规定的直线或圆弧之间的最大误差不超过一个脉冲当量,因此,只要将脉冲当量取得足够小,就可达到加工精度的要求。3.2直线插补原理:3.2.1直线插补流程图起始f0,x0,y0x0,y0结束x(y)= x(y)-1+y进给f=f+yef=f-xe+x进给f0x(y)=0=nynnyy:3.2.2偏差计算公式假设加工如图 所示直线oa,取直线起点为坐标原点,直线终点坐标a(xe,ye)为已知,即直线oa为给定轨迹。m(xm,ym)点为加工点(动点)。若m点在直线oa上,则根据相似三角形的关系可得:f(xm)0x=+f(xm)0y=+mma(xe,ye)图4逐点比较法插补(直线)xm/ym=xe/ye即 ym xeyexm=0由此,可定义直线插补的偏差判别式如下:fm=xeym-yexm若 fm=0 表示动点在oa直线上若 fm0 表示动点在oa直线上方若 fm0 表示动点在oa直线下方当 时m点在直线上或在直线上方,应沿+x方向进给一步,走步后新的坐标值为xm+1=xm +1ym+1=ym新的偏差为:f m+1=fmye若fm= 0 then if xm = 0 then if ym = 0 then xm = xm - dl outdata(0).text = 0 else ym = ym + dl outdata(2).text = 0 end if else if ym = 0 then ym = ym - dl outdata(2).text = 0 else xm = xm + dl outdata(0).text = 0 end if end ifelse if xm = 0 then if ym = 0 then ym = ym + dl outdata(2).text = 0 else xm = xm + dl outdata(0).text = 0 end if else if ym = 0 then xm = xm - dl outdata(0).text = 0 else ym = ym - dl outdata(2).text = 0 end if end ifend ifif xtemp = xm and ytemp = ym and ztemp = zm then exit subxpp = xm - (centi - x) * 10: ypp = ym - (centj - y) * 10: zpp = zm xppt = xtemp - (centi - x) * 10: yppt = ytemp - (centj - y) * 10: zppt = ztemp平面图坐标if zpp = 0 thenredim preserve xx(ubound(xx) + 1), yy(ubound(yy) + 1), zz(ubound(zz) + 1) as doublexx(ubound(xx) = xpp: yy(ubound(yy) = ypp: zz(ubound(zz) = zppredim preserve xx0(ubound(xx0) + 1), yy0(ubound(yy0) + 1), zz0(ubound(zz0) + 1) as doublexx0(ubound(xx0) = xpp: yy0(ubound(yy0) = ypp: zz0(ubound(zz0) = 0end ifxpoint = -xpp + ypp * 0.7071 轴测变换ypoint = -ypp * 0.7071 + zppxpointtemp = -xppt + yppt * 0.7071ypointtemp = -yppt * 0.7071 + zpptxctext.text = xpp / 10: yctext.text = ypp / 10: zctext.text = zpp / 10 工件坐标linep.line -(xpp, ypp), qbcolor(qbc) 画平面图 linez.line (xpointtemp, ypointtemp)-(xpoint, ypoint), qbcolor(qbc) if zpp = 0 then if xm = 0 then if ym = 0 then ym = ym - dl outdata(2).text = 0 0表示正方向 outdata(3).text = 1 1表示负方向 else xm = xm - dl outdata(0).text = 0 outdata(1).text = 1 end if else if ym = 0 then xm = xm + dl outdata(0).text = 0 outdata(1).text = 0 else ym = ym + dl outdata(2).text = 0 outdata(3).text = 0 end if end ifelse if xm = 0 then if ym = 0 then xm = xm + dl outdata(0).text = 0 outdata(1).text = 0 else ym = ym - dl outdata(2).text = 0 outdata(3).text = 1 end if else if ym = 0 then ym = ym + dl outdata(2).text = 0 outdata(3).text = 0 else xm = xm - dl outdata(0).text = 0 outdata(1).text = 1 end if end ifend ifif xtemp = xm and ytemp = ym and ztemp = zm then exit sub xppt = xtemp - (centi - x) * 10: yppt = ytemp - (centj - y) * 10: zppt = ztempxpp = xm - (centi - x) * 10: ypp = ym - (centj - y) * 10: zpp = zmif zpp = 0 thenredim preserve xx(ubound(xx) + 1), yy(ubound(yy) + 1), zz(ubound(zz) + 1) as doublexx(ubound(xx) = xpp: yy(ubound(yy) = ypp: zz(ubound(zz) = zppredim preserve xx0(ubound(xx0) + 1), yy0(ubound(yy0) + 1), zz0(ubound(zz0) + 1) as doublexx0(ubound(xx0) = xpp: yy0(ubound(yy0) = ypp: zz0(ubound(zz0) = 0end ifxpoint = -xpp + ypp * 0.7071 轴测变换ypoint = -ypp * 0.7071 + zppxpointtemp = -xppt + yppt * 0.7071ypointtemp = -yppt * 0.7071 + zpptxctext.text = xpp / 10: yctext.text = ypp / 10: zctext.text = zpp / 10 工件坐标linep.line -(xpp, ypp), qbcolor(qbc) 画平面图 linez.line (xpointtemp, ypointtemp)-(xpoint, ypoint), qbcolor(qbc) if zpp = mm then xm = xm + fangx * dl mx = mx - mm outdata(0).text = 0 end if if my = mm then ym = ym + fangy * dl my = my - mm outdata(2).text = 0 end if if mz = mm then zm = zm + fangz * dl mz = mz - mm outdata(4).text = 0 end if if xtemp = xm and ytemp = ym and ztemp = zm then exit sub xpp = xm + x * 10: ypp = ym + y * 10: zpp = zm + z * 10 if zpp = 0 thenredim preserve xx(ubound(xx) + 1), yy(ubound(yy) + 1), zz(ubound(zz) + 1) as doublexx(ubound(xx) = xpp: yy(ubound(yy) = ypp: zz(ubound(zz) = zppredim preserve xx0(ubound(xx0) + 1), yy0(ubound(yy0) + 1), zz0(ubound(zz0) + 1) as doublexx0(ubound(xx0) = xpp: yy0(ubound(yy0) = ypp: zz0(ubound(zz0) = 0end if xppt = xtemp + x * 10: yppt = ytemp + y * 10: zppt = ztemp + z * 10 xpoint = -xpp + ypp * 0.7071 轴测变换 ypoint = -ypp * 0.7071 + zpp xpointtemp = -xppt + yppt * 0.7071 ypointtemp = -yppt * 0.7071 + zppt xctext.text = xpp / 10: yctext.text = ypp / 10: zctext.text = zpp / 10 工件坐标 linep.line -(xpp, ypp), qbcolor(qbc) linez.line (xpointtemp, ypointtemp)-(xpoint, ypoint), qbcolor(qbc) if zpp 0 then linez.line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), qbcolor(qbc - 1) end ifend subprivate sub form_load() me.left = getsetting(app.title, settings, mainleft, 1000) me.top = getsetting(app.title, settings, maintop, 1000) me.width = getsetting(app.title, settings, mainwidth, 6500) me.height = getsetting(app.title, settings, mainheight, 6500) 读入设置 fileframe.caption = 代码 getx = getform.getxt.text 读入get参数设置 gety = getform.getyt.text getz = getform.getzt.text bei = getform.beit.text dl = dlt.text * 10 call drawxyz redim xx(0) as double, yy(0) as double, zz(0) as doubleredim xx0(0) as double, yy0(0) as double, zz0(0) as doubleend subprivate sub form_unload(cancel as integer) if me.windowstate vbminimized then savesetting app.title, settings, mainleft, me.left savesetting app.title, settings, maintop, me.top savesetting app.title, settings, mainwidth, me.width savesetting app.title, settings, mainheight, me.height 保存设置 end if endend sub清除private sub mnueditclear_click()filetxt.text = 清除文件框arimage.top = 300end sub清除private sub clear_click()filetxt.text = 清除文件框arimage.top = 300end sub暂停private sub mnurunpause_click()clear.enabled = truetimer2.interval = 0timer1.interval = 0pausecon = 1end sub暂停private sub pause_click()clear.enabled = truetimer2.interval = 0timer1.interval = 0pausecon = 1end sub运行private sub mnurunrun_click()if pausecon = 1 then 当暂停时为继续timer1.interval = 1timer2.interval = 1pausecon = 0elseif filetxt.text = thenmsgbox 请加载nc程序, vbokonly, 加载失败exit subelseclear.enabled = falseredim xx(0), yy(0), zz(0) as doubleredim xx0(0), yy0(0), zz0(0) as doubleredim xf0(0)

温馨提示

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

评论

0/150

提交评论