




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数控机床课程设计 数控系统的计算机仿真专业:机电一体化技术班级:08机电一体化姓名:曹修建学号:081010120420121 指导老师:杨欣荣 时间:2009年5月任务书课程设计题目:对于给定的一段NC代码,用VB或其他高级语言编写程序解释、插补,在PC机上仿真数控装置,进行图形描绘、坐标值显示、步进电机控制模拟显示及信号输出、冷却液和主轴开关量控制模拟显示及信号输出。 具体要求如下:(1)NC代码中包含的代码类型有:G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M30(2)要求根据NC代码屏幕模拟加工过程,图形显示位置,坐标值显示,辅助功能状态显示(冷却液和主轴开关量控制模拟显示)。(3)PC机模拟加工过程中,要求有实时的驱动三轴步进电机的控制信号、控制冷却液和主轴转动的开关量输出控制信号。假设信号从计算机并行打印口的数据线输出,端口地址为0X378。并行数据线分配如下(低电平有效);表一 并行口数据线信号数据线信号D0D1D2D3D4D5D6D7定义PulseXDirXPulseYDirYPulseZDirZ主轴控制信号冷却液控制信号内容摘要仿真就是通过对系统模型的实验去研究一个已有的或设计中的系统,分析复杂的动态对象,仿真是一种有效的方法,可以减少风险,缩短设计和制造的周期并节约投资。计算机仿真就是借助计算机,利用系统模型对实际系统进行实验研究的过程。它随着计算机技术的发展而迅速地发展,在仿真中它有越来越重要的地位。计算机仿真技术的发展趋势主要表现在两个方面:应用领域的扩大和仿真计算机的智能化。计算机仿真技术不仅在传统的工程技术领域(航空、航天、化工等方面)继续发展,而且扩大到社会经济、生物等许多非工程领域,此外,并行处理、人工智能、知识库和专家系统等技术的发展正影响着仿真计算机的发展。数控加工仿真利用计算机来模拟实际的加工过程,是验证数控加工程序的可靠性和预测切削过程的有力工具,以减少工件的试切,提高生产效率。仿真软件界面友好,基本实现了设计任务的要求,通过本软件可以知道在仿真加工刀具的坐标、各轴的工作情况以及辅助电机(冷却液的控制情况)本仿真程序应用的是脉冲插补算法。在仿真过程中应用了两种插补方法:直线插补,圆弧插补(包括顺时方向插补和逆时方向插补)。本仿真程序可以实现如下指令的判别和执行:G01,G02, G03, G04,G05,M03,M05,M08 ,M09, M30.AbstractLooked from the project angle that, the simulation was through studiesto the system model experiment to have or in the design system,analyzed the complex dynamic object, the simulation is one effectivemethod, might reduce the risk, reduced design and the manufacturecycle and saves the investment. The computer simulation draws support from the computer, conducts the experimental study using the system model to the actual system the process. It but rapidly develops along with the computer technology development, it has the more and more important status in the simulation.This simulated program applies is the pulse inserts makes up the algorithm. Applied two kinds in the simulation process to insert makes up the method: The straight line inserts makes up, the circular arc inserts makes up (including inserts along the time directionmakes up with counter time direction inserts makes up). This simulated program may realize the following instruction distinction and the execution: G01,G02, G03, G04,G05, M05, M08, M09, M03, M04, M30.目录一、课程设计题目2二、内容摘要3三、功能简介51、主界面简介52、参数设定界面53、NC代码格式64、程序基本操作6四、设计原理说明61、插补算法说明62、直线插补63、圆弧插补84、时钟控制流程图9五、程序代码及说明10 1、主窗体代码10 2、参数窗体代码32 六、参考文献33功能简介1、主界面简介如图(1)所示,程序主界面由如下几个部分组成:菜单工具栏、快捷键、NC代码输入框、坐标值实时显示框、工作状态框、冷却状态框、NC模拟框等等。其中,工具栏菜单依次为:文件、编辑、运行、关于,工作状态框显示了主轴的转速及转向、脉冲响应状态框显示了步进电机X电机、Y电机的转向。NC代码在NC代码输入框输入,根据NC代码在NC模拟框进行模拟加工。2、参数设定界面图如下图所示,在此界面,根据需要可以选择脉冲当量(单位为毫米微米mm)以及图形的放大倍数,以便显示。通过写入工件坐标的原点,便可随时改变坐标的原点。3、NC代码格式在NC代码输入框中,开头必须要有程序开始符“%”、结尾同样以结束符“%”结束。指令符(G、M)可以是大写也可以是小写,指令间允许有空格。输入圆心时只能用IJ指令,R指令不能识别,令外,在同一行中不可输入两条M指令。4、程序基本操作首先,在NC代码输入框输入NC代码或点击打开键打开已有的代码,接着按工具栏上的运行“调试”,程序经过调试后,如果程序有错,会自动报错,报错时光标将会定位在有错的代码附近,可以方便用户修改,直到无误为至,此时程序会告诉用户调试成功,紧接着按“运行”,在NC模拟框便会出现用户希望的图形。绘图的过程中用户可以按“暂停”键暂停绘图、再按时便继续绘制,按“结束”整个程序将停止。与此同时,坐标值实时显示框实时显示动点的坐标,工作状态框也反映工作状况。在快捷功能按钮上一样可以实现如上功能。整个加工过程比较直观,一目了然。设计原理说明1、插补算法说明本软件应用脉冲增量插补方法,这类插补方法的特点是:(1) 每次插补的结果仅产生一个单位的行程增量(一个脉冲当量),以一个脉冲的方式输出给步进电机。其基本思想是:用折线来逼近曲线(包括直线)。(2) 插补速度与进给速度密切相关。(3) 脉冲增量插补的实现方法较简单。2、直线插补(1)直线插补流程图起始F0,X0,Y0X0,Y0结束X(Y)= X(Y)-1+Y进给F=F+YeF=F-Xe+X进给F0X(Y)=0=NYNNYY(2)偏差计算公式假设加工如图 所示直线OA,取直线起点为坐标原点,直线终点坐标A(Xe,Ye)为已知,即直线OA为给定轨迹。M(Xm,Ym)点为加工点(动点)。若M点在直线OA上,则根据相似三角形的关系可得:F(xm)0x=+F(xm)0y=+MMA(Xe,Ye)图一 逐点比较法插补(直线)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 outdata(0).BackColor = vbGreen Else ym = ym + dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen End If Else If ym = 0 Then ym = ym - dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen Else xm = xm + dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen End If End IfElse If xm = 0 Then If ym = 0 Then ym = ym + dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen Else xm = xm + dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen End If Else If ym = 0 Then xm = xm - dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen Else ym = ym - dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen 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) 画平面图 If zpp = 0 Then If xm = 0 Then If ym = 0 Then ym = ym - dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen outdata(3).Text = -Y outdata(3).BackColor = vbYellow Else xm = xm - dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen outdata(1).Text = -X outdata(1).BackColor = vbYellow End If Else If ym = 0 Then xm = xm + dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen outdata(1).Text = +X outdata(1).BackColor = vbGreen Else ym = ym + dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen outdata(3).Text = +Y outdata(3).BackColor = vbGreen End If End IfElse If xm = 0 Then If ym = 0 Then xm = xm + dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen outdata(1).Text = +X outdata(1).BackColor = vbGreen Else ym = ym - dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen outdata(3).Text = +Y outdata(3).BackColor = vbGreen End If Else If ym = 0 Then ym = ym + dl outdata(2).Text = 0 outdata(2).BackColor = vbGreen outdata(3).Text = +Y outdata(3).BackColor = vbGreen Else xm = xm - dl outdata(0).Text = 0 outdata(0).BackColor = vbGreen outdata(1).Text = -X outdata(1).BackColor = vbYellow 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 = mm Then xm = xm + fangx * dl mx = mx - mm outdata(0).Text = 0 outdata(0).BackColor = vbGreen End If If my = mm Then ym = ym + fangy * dl my = my - mm outdata(2).Text = 0 outdata(2).BackColor = vbGreen End If If mz = mm Then zm = zm + fangz * dl mz = mz - mm outdata(4).Text = 0 outdata(4).BackColor = vbGreen 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) If zpp 0 Then linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), QBColor(qbc - 1) End IfEnd SubPrivate Sub Command1_Click()mnurunrun_ClickEnd SubPrivate Sub Command2_Click() mnurunpause_ClickEnd SubPrivate Sub Command3_Click() mnurunstop_ClickEnd SubPrivate Sub Command5_Click()mnuFileOpen_ClickEnd SubPrivate Sub Command6_Click()filetxt.Text = End SubPrivate Sub Form_Load() Dim ShowWindow As Integer, CloseWindow As Integer On Error Resume Next Me.Hide frmAbout.Show 关于对话框 For ShowWindow = 0 To 500 For CloseWindow = 0 To 500 DoEvents Next CloseWindow Next ShowWindow Unload frmAbout Me.Show 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 = 新文件 g54x = g54form.g54xt.Text 读入G54参数设置 g54y = g54form.g54yt.Text g54z = g54form.g54zt.Text bei = g54form.beit.Text dl = g54form.dlt.Text * 10 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 mnurunrun_Click()If pausecon = 1 Then 当暂停时为继续Timer1.Interval = 1Timer2.Interval = 1pausecon = 0ElseIf filetxt.Text = ThenMsgBox 请加载NC程序, vbOKOnly, 加载失败Exit SubElseReDim xx(0), yy(0), ZZ(0) As DoubleReDim xx0(0), yy0(0), zz0(0) As DoubleReDim xf0(0) As Double, yf0(0) As Double, zf0(0) As DoubleReDim xf1(0) As Double, yf1(0) As Double, zf1(0) As Doublestr = filetxt.TextX = 0: Y = 0: z = 60x1 = 0: y1 = 0: z1 = 60xpoint = 0: ypoint = 0gorder = : morder = : ornumber = 0movorder = : conorder1 = : conorder2 = cbstype = 0centi = 0: centj = 0readnum = 0prgline = 0num = 0g54x = g54form.g54xt.Text 读入G54参数设置 g54y = g54form.g54yt.Text g54z = g54form.g54zt.Text bei = g54form.beit.Text dl = g54form.dlt.Text * 10linep.Visible = Trueliner.Visible = TrueCall drawxyzFor i = 0 To 4 Step 2outdata(i).Text = 1outdata(i).BackColor = vbYellowNext iFor i = 1 To 7 Step 2outdata(i).Text = 0outdata(i).BackColor = vbGreenNext ioutdata(6).Text = 0zhukg.Text = 关lengkg.Text = 关arimage.Top = 360Timer1.Enabled = TrueEnd IfEnd IfEnd Sub参数设置Private Sub mnurunsetting_Click()g54form.Show (1)End Sub停止Private Sub mnurunstop_Click()Timer1.Enabled = FalseTimer2.Enabled = Falsearimage.Top = 360filetxt.SelStart = 0zhukg.Text = 关zhukg.BackColor = pform.BackColorZZT.Text = 关ZZT.BackColor = pform.BackColorFZT.Text = 关FZT.BackColor = pform.BackColorlengkg.Text = 关lengkg.BackColor = pform.BackColorxjText.Text = 0yjText.Text = 0zjText.Text = 0xcText.Text = 0ycText.Text = 0zcText.Text = 0linep.Clspxlab.Caption = : pylab.Caption = : polab.Caption = End Sub读入NC代码Private Sub Timer1_Timer()On Error Resume NextDim s As String, ms As String, ero As StringIf Mid$(str, 1, 1) % Then ero = 没有开始符,结束符 “%”: GoTo errsy If readnum = Len(str) Then 判断是否读完 readnum = 0 Timer1.Enabled = False Exit Sub End If检查有无开始符%Do 循环读入一行 s = Mid$(str, readnum + 1, 1) If (s = g Or s = G) Then gorder = Do gorder = gorder + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) Select Case (gorder) Case g00, G00, g0, G0 movorder = G00 移动指令为G00 Case g01, G01, g1, G1 movorder = G01 Case g02, G02, g2, G2 movorder = G02 Case g03, G03, g3, G3 movorder = G03 Case g54, G54 判断G54指令 x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职场沟通技能培训讲义
- 文学作品演讲稿写作流程与模板
- 工地资料管理员岗位职责说明
- 医院卫生消毒工作总结报告
- 玻璃热加工工节假日前安全考核试卷含答案
- 聚乙烯醇制造工节假日前安全考核试卷含答案
- 蔬菜种苗工中秋节后复工安全考核试卷含答案
- 收银员中秋节后复工安全考核试卷含答案
- 电线电缆包制工节假日前安全考核试卷含答案
- 维纶热处理操作工节假日前安全考核试卷含答案
- 绿色化学4章课件
- 《海洋经济学》配套教学课件
- 《啤酒品牌的营销策略以青岛啤酒为例(论文)》
- 《少年中国说(节选)》(第二课时) 教学课件
- 沥青路面施工方案61841
- 中国海洋大学《海洋生物资源与环境调查实习报告》
- 《中外美术史》课件1中外美术史.1(原始社会)
- 村民自治制度中存在的问题与对策
- 刺梨产品之养生有维系列简介共26页课件
- Q∕GDW 12152-2021 输变电工程建设施工安全风险管理规程
- 公产房“承租权”能否继承
评论
0/150
提交评论