资源目录
压缩包内文档预览:
编号:41026359
类型:共享资源
大小:50.54MB
格式:ZIP
上传时间:2020-01-13
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
30
积分
- 关 键 词:
-
数控
数字
积分
圆弧
算法
图形
仿真
- 资源描述:
-
数控数字积分法圆弧插补算法图形仿真,数控,数字,积分,圆弧,算法,图形,仿真
- 内容简介:
-
第一章 数控仿真技术发展状况(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),即虚拟企业的概念;而美国国家研究委员会的报告“制造中的信息技术”,则探讨了产品集成、过程设计、车间控制、虚拟工厂等的信息技术问题。福特汽车公司也已经计划应用虚拟环境技术来设计和开发汽车,该公司的先进车辆技术组把虚拟制造技术应用于装配仿真和虚拟成形,以提高空气动力学、人机工程学和表面建模的效果。第二章 插补过程2.1插补算法说明本软件应用脉冲增量插补方法,这类插补方法的特点是:(1) 每次插补的结果仅产生一个单位的行程增量(一个脉冲当量),以一个脉冲的方式输出给步进电机。其基本思想是:用折线来逼近曲线(包括直线)。(2) 插补速度与进给速度密切相关。(3) 脉冲增量插补的实现方法较简单。脉冲增量插补的方法有逐点比较法、数字积分法,本软件用逐点比较法。逐点比较法的原理是:在仿真过程中,能逐点地计算和判别运动轨迹与给定轨迹的偏差,并根据偏差控制进给轴向给定轮廓靠近,缩小偏差,使加工轮廓逼近给定轮廓。逐点比较法是以折线来逼近直线和圆弧曲线的,它与规定的直线或圆弧之间的最大误差不超过一个脉冲当量,因此,只要将脉冲当量取得足够小,就可达到加工精度的要求。2.2直线插补原理:2.2.1直线插补流程图起始F0,X0,Y0X0,Y0结束X(Y)= X(Y)-1+Y进给F=F+YeF=F-Xe+X进给F0X(Y)=0=NYNNYY: 图1.直线插补流程图 2.2.2偏差计算公式假设加工如图2所示直线OA,取直线起点为坐标原点,直线终点坐标A(Xe,Ye)为已知,即直线OA为给定轨迹。M(Xm,Ym)点为加工点(动点)。若M点在直线OA上,则根据相似三角形的关系可得:F(xm)0x=+F(xm)0y=+MMA(Xe,Ye)图2.逐点比较法插补(直线)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.Caption = xpp / 10: ycText.Caption = ypp / 10: zcText.Caption = 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.Caption = xpp / 10: ycText.Caption = ypp / 10: zcText.Caption = 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.Caption = xpp / 10: ycText.Caption = ypp / 10: zcText.Caption = 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 H_Click()帮助.ShowEnd SubPrivate Sub N_Click() 新建文件filetxt.Text = NC数控仿真.Caption = 未命名End Sub打开Private Sub mnuFileOpen_Click()filetxt.Text = NC数控仿真.Caption = NC数控仿真CommonDialog1.ShowOpenfilename = CommonDialog1.filenameIf filename Thenfiletxt.Text = Open filename For Input As #1newfile = Do Until EOF(1)Line Input #1, nextlinenewfile = newfile & nextline & vbCrLfLoopClose #1filetxt.Text = newfileEnd IfNC数控仿真.Caption = filenameEnd Sub保存Private Sub mnuFileSave_Click()If NC数控仿真.Caption = NC数控仿真 Or NC数控仿真.Caption = ThenCommonDialog1.ShowSavefilename = CommonDialog1.filenameElsefilename = NC数控仿真.CaptionEnd IfIf filename ThenOpen filename For Output As #1Print #1, filetxt.TextClose #1End IfEnd Sub另存为Private Sub mnuFileSaveAs_Click()CommonDialog1.ShowSavefilename = CommonDialog1.filenameIf filename ThenOpen filename For Output As #1Print #1, filetxt.TextEnd IfEnd Sub退出Private Sub end2_Click() a = MsgBox(真的退出吗?, vbOKCancel, 退出) If a = vbOK Then EndEnd Sub设置Private Sub s_Click()getform.ShowEnd Sub二维仿真Private Sub xyp_Click()clear.Enabled = Falselinep.Show getx = getform.getxt.Text 读入get参数设置 gety = getform.getyt.Text getz = getform.getzt.Text bei = getform.beit.Text dl = getform.dlt.Text * 10If pausecon = 1 Then 当暂停时为继续Timer1.Interval = 1Timer2.Interval = 1pausecon = 0ElseIf filetxt.Text = Thenlinep.Label3.Visible = Falselinep.Label1.Visible = Falselinep.Label2.Visible = FalseMsgBox 请加载NC程序, vbOKOnly, 加载失败Exit SubElseLabel25.Caption = 程序运行中.Timer3.Interval = 0Timer4.Interval = 1clear.Enabled = FalseReDim 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 = 20 起点坐标x1 = 0: y1 = 0: z1 = 20 终点坐标xpoint = 0: ypoint = 0gorder = : morder = : ornumber = 0movorder = : conorder1 = : conorder2 = cbstype = 0centi = 0: centj = 0readnum = 0prgline = 0num = 0Call drawxyzTimer1.Enabled = TrueEnd IfEnd IfEnd Sub三维仿真Private Sub xyz_Click()clear.Enabled = Falselinez.Show getx = getform.getxt.Text 读入get参数设置 gety = getform.getyt.Text getz = getform.getzt.Text bei = getform.beit.Text dl = getform.dlt.Text * 10If pausecon = 1 Then 当暂停时为继续Timer1.Interval = 1Timer2.Interval = 1pausecon = 0ElseIf filetxt.Text = Thenlinez.Label1.Visible = Falselinez.xlab.Visible = Falselinez.ylab.Visible = Falselinez.zlab.Visible = FalseMsgBox 请加载NC程序, vbOKOnly, 加载失败Exit SubElseLabel25.Caption = 程序运行中.Timer3.Interval = 0Timer4.Interval = 1clear.Enabled = FalseReDim 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 = 20 起点坐标x1 = 0: y1 = 0: z1 = 20 终点坐标xpoint = 0: ypoint = 0gorder = : morder = : ornumber = 0movorder = : conorder1 = : conorder2 = cbstype = 0centi = 0: centj = 0readnum = 0prgline = 0num = 0Call drawxyzTimer1.Enabled = TrueEnd IfEnd IfEnd SubPrivate Sub run_Click() 程序运行clear.Enabled = Falselinez.Enabled = Truelinep.Enabled = TrueIf Option1.Value = True Thenlinep.ShowEnd IfIf Option2.Value = True Thenlinez.ShowEnd If getx = getform.getxt.Text 读入get参数设置 gety = getform.getyt.Text getz = getform.getzt.Text bei = getform.beit.Text dl = getform.dlt.Text * 10If pausecon = 1 Then 当暂停时为继续Timer1.Interval = 1Timer2.Interval = 1pausecon = 0ElseIf filetxt.Text = Thenlinep.Label3.Visible = Falselinep.Label1.Visible = Falselinep.Label2.Visible = Falselinez.Label1.Visible = Falselinez.xlab.Visible = Falselinez.ylab.Visible = Falselinez.zlab.Visible = FalseMsgBox 请加载NC程序, vbOKOnly, 加载失败Exit SubElseLabel25.Caption = 程序运行中.Timer3.Interval = 0Timer4.Interval = 1clear.Enabled = FalseReDim 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 = 10 起点坐标x1 = 0: y1 = 0: z1 = 10 终点坐标xpoint = 0: ypoint = 0gorder = : morder = : ornumber = 0movorder = : conorder1 = : conorder2 = cbstype = 0centi = 0: centj = 0readnum = 0prgline = 0num = 0Call drawxyzImage1.Top = 415Timer1.Enabled = TrueEnd IfEnd IfEnd SubPrivate Sub mnurunpause_Click() 暂停程序mnurunrun.Enabled = TrueLabel25.Caption = 程序暂停中.clear.Enabled = TrueTimer2.Interval = 0Timer1.Interval = 0pausecon = 1End SubPrivate Sub mnurunrun_Click() 当暂停时为继续Label25.Caption = 程序运行中.clear.Enabled = FalseIf pausecon = 1 ThenTimer1.Interval = 1Timer2.Interval = 1pausecon = 0End IfEnd SubPrivate Sub clear_Click()filetxt.Text = 清除文件框End Sub设置参数Private Sub Command8_Click()getform.ShowEnd Sub退出软件Private Sub mnuFileExit_Click() a = MsgBox(真的退出吗?, vbOKCancel, 退出) If a = vbOK Then EndEnd SubPrivate Sub Option1_Click() 选择二维平面linez.HideEnd SubPrivate Sub Option2_Click() 选择轴测图linep.HideEnd Sub 读入NC代码 Private Sub Timer1_Timer()On Error Resume Next 没有特别的错误继续执行下一句Dim s As String, ms As String, ero As StringIf Mid$(str, 1, 1) % Then ero = 没有开始符 “%”: GoTo errsy 跳转到errsy If readnum = Len(str) Then 判断是否读完 Timer4.Interval = 0 t1 = NC数控仿真.Label27.Caption t2 = NC数控仿真.Label26.Caption t = t1 - t2 Label28.Caption = Format(t, hh:mm:ss) clear.Enabled = True 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 Case g90, G90 Case Else ero = G. GoTo errsy End Select Exit Sub End If 读入M代码 If (s = m Or s = M) Then morder = Do morder = morder + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) Select Case (morder) Case m03, M03, m3, M3 conorder1 = M03 Case m05, M05, m5, M5 conorder1 = M05 Case m08, M08, m8, M8 conorder2 = M08 Case m09, M09, m9, M9 conorder2 = M09 Case m30, M30 Case Else ero = M. GoTo errsy End Select Exit Sub End If 读入X If (s = x Or s = X) Then ms = Do ms = ms + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) _ Or Asc(s) = 46 Or Asc(s) = 45 Or Asc(s) = 43) If Mid$(ms, 2, 9) = Then ero = X.: GoTo errsy x1 = Val(Mid$(ms, 2, 9) Exit Sub End If 读入Y If (s = y Or s = Y) Then ms = Do ms = ms + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) _ Or Asc(s) = 46 Or Asc(s) = 45 Or Asc(s) = 43) If Mid$(ms, 2, 9) = Then ero = Y.: GoTo errsy y1 = Val(Mid$(ms, 2, 9) Exit Sub End If 读入Z If (s = z Or s = Z) Then ms = Do ms = ms + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) _ Or Asc(s) = 46 Or Asc(s) = 45 Or Asc(s) = 43) If Mid$(ms, 2, 9) = Then ero = Z.: GoTo errsy z1 = Val(Mid$(ms, 2, 9) Exit Sub End If 读入I If (s = i Or s = I) Then ms = Do ms = ms + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) _ Or Asc(s) = 46 Or Asc(s) = 45 Or Asc(s) = 43) If Mid$(ms, 2, 9) = Then ero = I.: GoTo errsy centi = Val(Mid$(ms, 2, 9) Exit Sub End If 读入J If (s = j Or s = J) Then ms = Do ms = ms + s readnum = readnum + 1 s = Mid$(str, readnum + 1, 1) Loop While (Asc(s) = 48) Or Asc(s) = 46 Or Asc(s) = 45) If Mid$(ms, 2, 9) = Then ero = J.: GoTo errsy centj = Val(Mid$(ms, 2, 9) If Abs(Sqr(X - centi - x1) 2 + (Y - centj - y1) 2) - Sqr(centi 2 + centj 2) = 0.1 Then ero = 终点不在圆弧上 GoTo errsy End If Exit Sub End If readnum = readnum + 1 Loop Until (Asc(s) = 10) 当读到回车键时退出循环 filetxt.SelStart = readnum - 1 当读入行数小于9时箭头向下移 If prgline 30 Then Image1.Top = 415 + 180 * prgline If (Asc(s) = 10) Then If (X x1 Or Y y1) Then 保存XYZIJG xx(num) = x1: yy(num) = y1: zz(num) = z1: ii(num) = centi: jj(num) = centj gg(num) = movorder num = num + 1 End If prgline = prgline + 1Timer1.Enabled = FalseCall degorder 读到回车键转入G指令判断 Exit Sub End Iferrsy: 出错要调用的函数MsgBox 第 & prgline + 1 & 行有错 & ero, , 出错出错提示Timer1.Enabled = False 停止读数Exit SubEnd Sub插补Private Sub Timer2_Timer()Dim rr As DoubleDim cx, cy, cz As IntegerDim fangx, fangy, fangz As IntegerDim qbc As IntegerStatic runnum As IntegerIf X = x1 And Y = y1 And z = z1 ThenCall demorder 终点等于起点时调用M指令判断Timer2.Enabled = FalseTimer1.Enabled = TrueExit SubEnd Ifrunnum = runnum + 1 插补一次加一If runnum = 1 Then 第一次时判定移动指令Select Case (cbstype)Case 0 移动指令为G00qbc = 15cx = Abs(x1 - X) * 10: cy = Abs(y1 - Y) * 10: cz = Abs(z1 - z) * 10If x1 = X Thenfangx = 1outdata(1).Text = 0 0表示正方向Elsefangx = -1outdata(1).Text = 1End IfIf y1 = Y Thenfangy = 1outdata(3).Text = 0Elsefangy = -1outdata(3).Text = 1End IfIf z1 = z Thenfangz = 1outdata(5).Text = 0Elsefangz = -1outdata(5).Text = 1End IfCall linesub(cx, cy, cz, fangx, fangy, fangz, qbc) 调用直线插补Case 1 移动指令为G01qbc = 14cx = Abs(x1 - X) * 10: cy = Abs(y1 - Y) * 10: cz = Abs(z1 - z) * 10If x1 = X Thenfangx = 1outdata(1).Text = 0 0表示正方向Elsefangx = -1outdata(1).Text = 1End IfIf y1 = Y Thenfangy = 1outdata(3).Text = 0Elsefangy = -1outdata(3).Text = 1End IfIf z1 = z Thenfangz = 1outdata(5).Text = 0Elsefangz = -1outdata(5).Text = 1End IfCall linesub(cx, cy, cz, fangx, fangy, fangz, qbc) 调用直线插补Case 2 移动指令为G02qbc = 14rr = Sqr(centi 2 + centj 2)Call scirsub(rr * 10, qbc) 调用顺圆插补Case 3 移动指令为G03qbc = 14rr = Sqr(centi 2 + centj 2)Call ycirsub(rr * 10, qbc) 调用逆圆插补End SelectEnd IfIf runnum = 2 Then 当第二次调用时并行口X,Y,Z脉冲跳为1For i = 0 To 5 Step 2outdata(i) = 1Next irunnum = 0End Ifprtaddress = &H378 并行口输出For i = 0 To 7dataoutvale = dataoutvale + outdata(i) * 2 iNext iDIO_OutputByte prtaddress, dataoutvaleIf Sqr(x1 * 10 - xpp) 2 + (y1 * 10 - ypp) 2 _ + (z1 * 10 - zpp) 2) dl Then 插补完成判断If zpp 0 ThenReDim Preserve xf0(UBound(xf0) + 1) As Double, xf1(UBound(xf1) + 1) As DoubleReDim Preserve yf0(UBound(yf0) + 1) As Double,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。