VB软件_模拟逐点比较法逆圆弧插补的程序设计
逐点比较算法圆弧插补

XXX学院学生课程设计(论文)题目:逐点比较法圆弧插补的连续轨迹控制设计学生姓名: XXX 学号:2006XXXXXXXX 所在院(系):机电工程学院专业:机械设计制造及其自动化班级: 06机制6班指导教师: XXX 职称:教授2009年12月8 日XXX学院本科学生课程设计任务书题目逐点比较法插补的连续轨迹控制设计(圆弧插补)1、课程设计的目的专业课程综合训练目的是本使学生通过对所学主要专业课的综合应用,基本掌握一般机电控制系统的设计方法及步骤。
综合运用所学的基础知识和技能,进一步提高学生的设计能力,培养学生创新意识和创新能力,提高控制系统分析设计的总体意识和工程实践能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)设计内容要求:(1)铣床CNC系统硬件原理图及其说明;(2)推导完整的插补公式;(3)设计出插补软件流程图;(4)用高级语言编写插补程序清单;(4)画出插补轨迹模拟图形;(5)将上述内容整理成设计说明书及图纸。
设计结束后提交4000字左右的课程设计论文;包含上述全部内容。
3、主要参考文献[1]、张建民等,《机电一体化系统设计》,北京:高等教育出版社,2002年[2]、赵先仲,《机电系统设计》,北京:机械工业出版社,2004年[3]、吴圣庄,《金属切削机床概论》,北京:机械工业出版社,1993[4]、杨有君,《数控技术》,北京:机械工业出版社,20054、课程设计工作进度计划内容学时总体方案设计8CNC系统硬件设计8插补系统原理及公式设计16插补系统软件设计48软件验证 4绘制所需的各类图及编制技术文件20合计3周指导教师(签字)日期2008年12 月1 日教研室意见:年月日学生(签字):接受任务时间:年月日注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价内涵工作表现20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
vb圆弧插补程序(可编辑修改word版)

Private Sub Command1_Click()Const pi = 3.14159265Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 500)-(50, 5500)Picture1.Line (50, 5500)-(6500, 5500)Picture1.Line (80, 600)-(50, 500)Picture1.Line (20, 600)-(50, 500)Picture1.Line (6400, 5450)-(6500, 5500) Picture1.Line (6400, 5550)-(6500, 5500) Picture1.ForeColor = vbRedPicture1.DrawWidth = 3If Int(Text1) = 0 ThenPicture1.Circle (50, 5500), Sqr(Int(Text1) *Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), pi / 2ElsePicture1.Circle (50, 5500), Sqr(Int(Text1) *Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), Atn(Int(Text2) /Int(Text1))End IfEnd SubPrivate Sub Command2_Click()Dim k, m, j, l, n, F(20) As Integerm = 0l = Text1.Textk = Text2.TextF(m) = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3j = Abs(Int(Text1) - Int(Text3)) + Abs(Int(Text2) - Int(Text4))Form1.CurrentX = 200Form1.CurrentY = 200 Print "初始:进给方向" & "F(m)=0" & " X0=" & Int(Text1) & " Y0=" & Int(Text2) & " ∑= " & jFor n = 1 To jIf F(m) >= 0 And j > 0 Thenm = m + 1k = k - 1F(m) = F(m - 1) - 2 * Abs(k + 1) + 1Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * l, 5500 - (k + 1) * 400)Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " -△y F(" & m & ")= " & F(m) & " " & "x=" & l & " " & "y="; k & " ∑=" & j - nElsel = l + 1m = m + 1Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * (l - 1), 5500 - k * 400)F(m) = F(m - 1) + 2 * Abs(l - 1) + 1Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " +△x F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y="; k & " ∑=" & j - nEnd IfNext nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text3.Text = ""End SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub Command1_Click()Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (7500, 8500)-(7500, 500)Picture1.Line (7500, 500)-(500, 500)Picture1.Line (7500, 8500)-(7400, 8400)Picture1.Line (7500, 8500)-(7600, 8400)Picture1.Line (500, 500)-(600, 600)Picture1.Line (500, 500)-(600, 400)Picture1.ForeColor = vbRedPicture1.DrawWidth = 5Picture1.Line (7500, 500)-(7500 + 400 *Int(Text3), 500 - 400 * Int(Text4))End SubPrivate Sub Command2_Click()Form1.ClsDim k, m, j, l, n, F(20) As Integerm = 0l = 0k = 0F(m) = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3j = Abs(Int(Text3)) + Abs(Int(Text4))Form1.CurrentX = 200Form1.CurrentY = 200Print "初始:进给方向" & "F(m)=0" & " Xe=" & Int(Text3) & " Ye=" & Int(Text4) & " ∑= " & jFor n = 1 To jIf F(m) >= 0 And j > 0 Thenm = m + 1l = l - 1F(m) = F(m - 1) - Abs(Int(Text4))Picture1.Line (7500 + 400 * (l + 1), 500 - k * 400)-(7500 + 400 * (l), 500 - k * 400)Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △x F(" & m & ")= " & F(m) & " " & "x=" & l & " " & "y="; k & " ∑=" & j - nElsek = k - 1m = m + 1Picture1.Line (7500 + 400 * l, 500 - (k + 1) * 400)-(7500 + 400 * l, 500 - k * 400)F(m) = F(m - 1) + Abs(Int(Text3))Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △y F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y="; k & " ∑=" & j - nEnd IfNext nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text2.Text = ""Picture1.ClsForm1.ClsEnd SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub Form_Load()End SubPrivate Sub Command1_Click()Const pi = 3.14159265Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 500)-(50, 5500)Picture1.Line (50, 5500)-(6500, 5500)Picture1.Line (80, 600)-(50, 500)Picture1.Line (20, 600)-(50, 500)Picture1.Line (6400, 5450)-(6500, 5500) Picture1.Line (6400, 5550)-(6500, 5500) Picture1.ForeColor = vbRedPicture1.DrawWidth = 3Picture1.Line (50, 5500)-(50 + 400 * Int(Text3), 5500 - 400 * Int(Text4))End SubPrivate Sub Command2_Click()Dim k, m, j, l, n, F, G As Integerl = 0 k = 0 F = 0 G = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3n = Int(Text5)j = 2 ^ nm = 2 ^ nForm1.CurrentX = 200Form1.CurrentY = 200Print "累加次数" & "F= F + int (text3)" & "+△X " & " G=G +int(text4)" & " +△Y "; ∑ = " & j"Print " n " & " 0 " & " 0 " & " 0 " & " 0 " & jFor n = 1 To mF = F + Int(Text3)G = G + Int(Text4) If F >= m And G >= m Thenl = l + 1 k = k + 1Picture1.Line (50 + 400 * (l - 1), 5500 - (k - 1) * 400)-(50 + 400 * (l), 5500 - k * 400)F = F - mG = G - mPrint " "; n & " " & F & " " & 1 & " " & G & "j - 1" & 1 & " " & ElseIf F >= m And G < m Thenl = l + 1F = F - mPrint " "; n & " " & F & " " & 1 & " " & G & "j - 1" & 0 & " " &Picture1.Line (50 + 400 * (l - 1), 5500 - k * 400)-(50 + 400 * (l), 5500 - k * 400)ElseIf F < m And G >= m Thenk = k + 1 G = G - mPicture1.Line (50 + 400 * l, 5500 - (k - 1) * 400)-(50 + 400 * (l), 5500 - k * 400)Print " "; n & " " & F & " " & 0 & " " & G & " " & 1 & " " & j - 1ElseIf F < m And G < m ThenPrint " "; n & " " & F & " " & 0 & " " & G & " " & 0 & " " & j - 1End Ifj = j - 1Next nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text2.Text = ""Picture1.ClsForm1.ClsEnd SubPrivate Sub Command4_Click()End End Sub。
实验一 逐点比较法圆弧和直线插补实验

Y B(xe,ye)
M(xm,ym)
Rm R
A(x0,y0)
O 图3 圆弧插补原理图 X
圆弧插补原理参见上图,对于第一象限逆圆,设圆弧的起点为 A(x0,y0),终点为 B(xe,ye), 圆弧半径为 R。加工点为 M(xm,ym),它与圆心的距离为 Rm,则
(1)偏差计算
Fm
=
Rm2
− R2
=
xm2
p102=p102-p104 p101=p101+1 x-0.1 else p102=p102+p103 p101=p101+1 y0.1
;计算新的偏差值(Fi+1=Fi-ya) ;步数计数器加一 ;X方向进分别是(-0.1 -0.5 -1.0) ;偏差判别(若P102小于0表示刀具在直线下方) ;计算新的偏差值(Fi+1=Fi+xa) ;步数计数器加一 ;Y方向进给分别是(0.1 0.5 1.0)
endif
endwhile
close
(3)根据直线插补编成格式,编写所给圆弧插补程序。 各组的圆弧的插补任务是: u 第一组:圆弧半径 50,第二象限顺圆;
第二组:圆弧半径 50,第二象限逆圆; 第三组:圆弧半径 60,第三象限顺圆; 第四组:圆弧半径 60,第三象限逆圆; 第五组:圆弧半径 70,第四象限顺圆; 第六组:圆弧半径 70,第四象限逆圆; open prog7 clear linear inc p101=0 p102=0 p103=0 p104=50 while(p101!>100) if(p102!<0) y0.5 p101=p101+1 p102=p102-2*p104+1 p104=p104-1 else -x0.5 p101=p101+1 p102=p102-2*p103+1 p103=103-1 endif endwhile close
(完整版)vb圆弧插补程序

Private Sub Command1_Click()Const pi = 3.14159265Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 500)-(50, 5500)Picture1.Line (50, 5500)-(6500, 5500)Picture1.Line (80, 600)-(50, 500)Picture1.Line (20, 600)-(50, 500)Picture1.Line (6400, 5450)-(6500, 5500) Picture1.Line (6400, 5550)-(6500, 5500) Picture1.ForeColor = vbRedPicture1.DrawWidth = 3If Int(Text1) = 0 ThenPicture1.Circle (50, 5500), Sqr(Int(Text1) *Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), pi / 2ElsePicture1.Circle (50, 5500), Sqr(Int(Text1) *Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), Atn(Int(Text2) /Int(Text1))End IfEnd SubPrivate Sub Command2_Click()Dim k, m, j, l, n, F(20) As Integerm = 0l = Text1.Textk = Text2.TextF(m) = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3j = Abs(Int(Text1) - Int(Text3)) + Abs(Int(Text2) - Int(Text4))Form1.CurrentX = 200Form1.CurrentY = 200 Print "初始:进给方向 " & "F(m)=0" & " X0=" & Int(Text1) & " Y0=" & Int(Text2) & " ∑ = " & jFor n = 1 To jIf F(m) >= 0 And j > 0 Thenm = m + 1k = k - 1F(m) = F(m - 1) - 2 * Abs(k + 1) + 1Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * l, 5500 - (k + 1) * 400)Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " -△y F(" & m & ")= " & F(m) & " " & "x=" & l & " " & "y="; k & " ∑=" & j - nElsel = l + 1m = m + 1Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * (l - 1), 5500 - k * 400)F(m) = F(m - 1) + 2 * Abs(l - 1) + 1Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " +△x F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y="; k & " ∑=" & j - nEnd IfNext nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text3.Text = ""End SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub Command1_Click()Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (7500, 8500)-(7500, 500)Picture1.Line (7500, 500)-(500, 500)Picture1.Line (7500, 8500)-(7400, 8400)Picture1.Line (7500, 8500)-(7600, 8400)Picture1.Line (500, 500)-(600, 600)Picture1.Line (500, 500)-(600, 400)Picture1.ForeColor = vbRedPicture1.DrawWidth = 5Picture1.Line (7500, 500)-(7500 + 400 *Int(Text3), 500 - 400 * Int(Text4))End SubPrivate Sub Command2_Click()Form1.ClsDim k, m, j, l, n, F(20) As Integerm = 0l = 0k = 0F(m) = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3j = Abs(Int(Text3)) + Abs(Int(Text4))Form1.CurrentX = 200Form1.CurrentY = 200Print "初始:进给方向 " & "F(m)=0" & " Xe=" & Int(Text3) & " Ye=" & Int(Text4) & " ∑ = " & jFor n = 1 To jIf F(m) >= 0 And j > 0 Thenm = m + 1l = l - 1F(m) = F(m - 1) - Abs(Int(Text4)) Picture1.Line (7500 + 400 * (l + 1), 500 - k * 400)-(7500 + 400 * (l), 500 - k * 400)Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △x F(" & m & ")= "& F(m) & " " & "x=" & l & " " & "y="; k & " ∑=" & j - nElsek = k - 1m = m + 1Picture1.Line (7500 + 400 * l, 500 - (k + 1) * 400)-(7500 + 400 * l, 500 - k * 400)F(m) = F(m - 1) + Abs(Int(Text3))Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △y F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y="; k & " ∑=" & j - nEnd IfNext nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text2.Text = ""Picture1.ClsForm1.ClsEnd SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub Form_Load()End SubPrivate Sub Command1_Click()Const pi = 3.14159265Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 500)-(50, 5500)Picture1.Line (50, 5500)-(6500, 5500)Picture1.Line (80, 600)-(50, 500)Picture1.Line (20, 600)-(50, 500)Picture1.Line (6400, 5450)-(6500, 5500)Picture1.Line (6400, 5550)-(6500, 5500)Picture1.ForeColor = vbRedPicture1.DrawWidth = 3Picture1.Line (50, 5500)-(50 + 400 * Int(Text3), 5500 - 400 * Int(Text4))End SubPrivate Sub Command2_Click()Dim k, m, j, l, n, F, G As Integerl = 0 k = 0 F = 0 G = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3n = Int(Text5)j = 2 ^ nm = 2 ^ nForm1.CurrentX = 200Form1.CurrentY = 200Print "累加次数 " & "F= F + int (text3)" & " +△X " & " G=G +int(text4)" & " +△Y "; ∑ = " & j"Print " n " & " 0 " & " 0 " & " 0 " & " 0 " & jFor n = 1 To mF = F + Int(Text3)G = G + Int(Text4) If F >= m And G >= m Thenl = l + 1 k = k + 1Picture1.Line (50 + 400 * (l - 1), 5500 - (k - 1) * 400)-(50 + 400 * (l), 5500 - k * 400)F = F - mG = G - mPrint " "; n & " " & F & " " & 1 & " " & G & " " & 1 & " " & j - 1ElseIf F >= m And G < m Thenl = l + 1F = F - mPrint " "; n & " " & F & " " & 1 & " " & G & " " & 0 & " " & j - 1Picture1.Line (50 + 400 * (l - 1), 5500 - k * 400)-(50 + 400 * (l), 5500 - k * 400)ElseIf F < m And G >= m Thenk = k + 1 G = G - mPicture1.Line (50 + 400 * l, 5500 - (k - 1) * 400)-(50 + 400 * (l), 5500 - k * 400)Print " "; n & " " & F & " " & 0 & " " & G & " " & 1 & " " & j - 1ElseIf F < m And G < m ThenPrint " "; n & " " & F & " " & 0 & " " & G & " " & 0 & " " & j - 1End Ifj = j - 1Next nEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text2.Text = ""Picture1.ClsForm1.ClsEnd SubPrivate Sub Command4_Click()End End Sub。
逐点比较法圆弧插补

逐点比较法圆弧插补逐点比较法圆弧插补过程与直线插补过程类似,每进给一步也都要完成四个工作节拍:偏差判别、坐标进给、偏差计算、终点判别。
但是,逐点比较法圆弧插补以加工点距圆心的距离大于还是小于圆弧半径来作为偏差判别的依据。
如图5-7所示的圆弧AB,其圆心位于原点O(0,0),半径为R,令加工点的坐标为P(xi,yj),则逐点比较法圆弧插补的偏差判别函数为当F=0时,加工点在圆弧上;当F>0时,加工点在圆弧外;当F<0时,加工点在圆弧内。
同插补直线时一样,将Fi,j=0同Fi,j>0归于一类。
下面以第一象限圆弧为例,分别介绍顺时针圆弧和逆时针圆弧插补时的偏差计算和坐标进给情况。
1.插补第一象限逆圆弧1)当Fi,j≥0时,加工点P(xi,yj)在圆弧上或圆弧外,-X方向进给一个脉冲当量,即向趋近圆弧的圆内方向进给,到达新的加工点Pi-1,j,此时xi -1=xi-1,则新加工点Pi-1,j的偏差判别函数Fi-1,j为(2)当Fi,j<0时,加工点P(xi,yj)在圆弧内,+Y方向进给一个脉冲当量,即向趋近圆弧的圆外方向进给,到达新的加工点Pi,j+1,此时yj+1=yj+1,则新加工点Pi,j+1的偏差判别函数Fi,j+12.插补第一象限顺圆弧1)当Fi,j≥0时,加工点P(xi,yj)在圆弧上或圆弧外,-Y方向进给一个脉冲当量,即向趋近圆弧的圆内方向进给,到达新的加工点Pi,,j-1,此时yj-1=yj-1,则新加工点Pi,j-1的偏差判别函数Fi,j-1为2)当Fi,j<0时,加工点P(xi,yj)在圆弧内,+X方向进给一个脉冲当量,即向趋近圆弧的圆外方向进给,到达新的加工点Pi+1,j,此时xi+1=xi +1,则新加工点Pi+1,j的偏差判别函数为Fi+1,j由以上分析可知,新加工点的偏差是由前一个加工点的偏差Fi,j及前一点的坐标值xi、yj递推出来的,如果按式(5-6)、(5-7)、(5-8)、(5-9)计算偏差,则计算大为简化。
逐点比较法插补程序程序设计与运行模拟

大连民族学院本科毕业设计(论文)逐点比较法插补程序程序设计与运行模拟学院(系):机电信息工程学院_____专业:机械设计制造及其自动化__学生姓名: _________学号: 200902220 _________指导教师: _________评阅教师:_________________________完成日期:_________________________大连民族学院摘要在数控编程时,一般仅提供描述该线形所必须的相关参数,但为了满足几何零件尺寸精度要求,必须在刀具(或工件)运动过程中实时计算出满足线形和进给速度要求的在起点和终点之间的若干中间点,所以就有了插补。
本设计主要阐述了逐点比较法的基本原理,在四个象限直线、圆弧插补的插补原理以及如何实现。
重点研究了逐点比较法的基本算法,控制程序的原理框图,对逐点比较法做了详细的研究,掌握基本的G代码的内容与运用,编写插补程序,并且基于vb平台演示插补过程。
从调试结果来看,本文所提供的运算与编程能够通过简洁的“输入/输出”界面,较好的实现了计算机屏幕模拟。
关键词:简易数控;逐点比较法插补;G代码;VB;计算机屏幕模拟AbstractBy-point comparison interpolation program design and run the simulationprogramIn NC programming, generally only provide a description of the relevant parameters necessary for linear, but in order to meet the accuracy requirements of the geometric part size must be in the tool (or workpiece) during exercise to meet the real-time calculation and linear feed rate required at the start and some intermediate point between the endpoints, so there will be interpolated.The design is mainly explained by-point comparison of the basic principles in the four quadrants linear and circular interpolation interpolation theory and how to implement. Focus on a point by point comparison of the basic algorithm, a block diagram of the control program, right by-point comparison method to do a detailed study and master the basic content and the use of G-code, write interpolation procedures, and is based on interpolation vb platform demo process.From the debugging results, provided herein computing and programming through simple "input / output" interface, to achieve a better simulation of the computer screenKeywords:Simple numerical control; interpolation point by point comparison;G code;VB;Computer simulation on the screen目录摘要 (I)ABSTRACT (II)目录 (III)1 绪论................................................................................................................................ - 1 -1.1课题的背景 (1)1.2课题的主要研究内容 (3)1.3课题的研究方案 (3)2 数控加工基本原理............................................................................................................ - 4 -2.1概述 (4)2.2数控编程内容 (4)2.3逐点比较法直线插补原理 (5)2.3.1偏差计算公式............................................................................................... - 6 -2.3.2插补计算过程............................................................................................... - 6 -2.3.3终点判别....................................................................................................... - 6 -2.3.4不同象限的直线插补计算........................................................................... - 7 -2.4逐点比较法圆弧插补原理 (7)2.4.1偏差计算公式............................................................................................... - 7 -2.4.2终点判别法................................................................................................... - 8 -2.5VB基本原理 (8)3 逐点比较法总体方案设计.............................................................................................. - 10 -3.1程序设计简介 (10)3.2逐点比较法直线插补框图 (11)3.3逐点比较法圆弧插补框图 (12)4 逐点比较法方案的程序设计.......................................................................................... - 14 -4.1逐点比较法直线插补运算 (14)4.2逐点比较法圆弧插补运算 (14)4.3准备功能G代码 (16)4.4插补界面设计 (16)5 VB调试............................................................................................................................. - 17 -5.1直线插补VB调试 (17)5.2圆弧插补VB调试 (17)参考文献.............................................................................................................................. - 20 -附录A 直线和圆弧插补象限区分程序............................................................................. - 21 -致谢.............................................................................................................................. - 28 -1 绪论1.1课题的背景数字控制简称数控,是由数字指令控制对象的一种自动控制技术。
插补原理vb程序

第二章 插补原理
——轮廓加工的数学基础
Numerical Control
Date: File:
2006-04 interpolation.1
MECHINCAL ENGINEERING, TUST
Interpolation
数控二维工作台
y 0,0
x
Numerical Control
语法 object.Scale (x1, y1) - (x2, y2) (x1, y1)左上角的水平(x-轴)和垂直(y-轴)坐标。 左上角的水平( 轴 和垂直( 轴 坐标。 左上角的水平 (x2, y2)右下角的水平(x-轴)和垂直(y-轴)坐标。 右下角的水平( 轴 和垂直( 轴 坐标。 右下角的水平
2.1 Cls 方法 清除运行时 所生成的图形和文本。 清除运行时 PictureBox 所生成的图形和文本。 语法 object.Cls 2.2 Line 方法 在对象上画直线和矩形。 在对象上画直线和矩形。 语法 object.Line [Step] (x1, 1) [Step] (x2, y2), [color], [B][F]
建立VB程序的第一步是创见界面, 建立 程序的第一步是创见界面,它是用户与应用程序进行 程序的第一步是创见界面 交互操作的可视部分。 交互操作的可视部分。 窗体和控件是创见界面的基本构造模块。 窗体和控件是创见界面的基本构造模块。也是创见应用程序 是创见界面的基本构造模块 所使用的对象。 所使用的对象。 窗体是一种对象,控件是包含在窗体对象内的对象。它们均 窗体是一种对象,控件是包含在窗体对象内的对象。 对象 对象 是具有自己属性 方法和事件的对象 由属性定义其外关, 属性、 的对象。 是具有自己属性、方法和事件的对象。由属性定义其外关, 由方法定义其行为,由事件定义其与用户的交互。 由方法定义其行为,由事件定义其与用户的交互。
#VB软件_模拟逐点比较法逆圆弧插补的程序设计

宿迁学院课程设计说明书设计题目:基于VB数字积分法一、二象限逆圆插补计算与仿真系(部):机电工程系专业:自动化(数控技术)班级:09数控本(2)姓名:李伟学号:200907052指导老师(签名):刘萍起止时间:20 12年12月3 日至20 12年12月7 日共 1 周20 12 年12 月6 日正文:数控原理与系统课程设计说明书一、课程设计的目的1)了解连续轨迹控制数控系统的组成原理。
2) 掌握逐点比较法插补的基本原理。
3)握逐点比较法插补的软件实现方法。
二.课程设计的任务逐点比较法插补是最简单的脉冲增量式插补算法之一,其过程清晰,速度平稳,但一般只用于一个平面内两个坐标轴的插补运算。
其基本原理是在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给,且只有一个方向的进给。
也就是说,逐点比较法每一步均要比较加工点瞬时坐标与规定零件轮廓之间的距离,依此决定下一步的走向。
如果加工点走到轮廓外面去了,则下一步要朝着轮廓内部走;如果加工点处在轮廓的内部,则下一步要向轮廓外面走,以缩小偏差,这样周而复始,直至全部结束,从而获得一个非常接近于数控加工程序规定轮廓的轨迹。
逐点比较法插补过程中的每进给一步都要经过偏差判别、坐标进给、偏差计算和终点判别四个节拍的处理,其工作流程图如图所示。
三.逐点比较法基本原理逐点比较法I 象限逆圆插补在加工圆弧过程中,人们很容易联想到使用动点到圆心的距离与该圆弧的名义半径进行比较来反映加工偏差。
假设被加工零件的轮廓为第Ⅰ象限逆走向圆弧SE ,,圆心在O (0,0),半径为R ,起点为S (XS ,YS ),终点为E (Xe ,Ye ),圆弧上任意加工动点为N (Xi ,Yi )。
当比较该加工动点到圆心的距离ON 与圆弧半径R 的大小时,可获得刀具与圆弧轮廓之间的相对位置关系。
当动点N (Xi ,Yi )正好落在圆弧上时,则有下式成立22222R Y X Y X e e i i =+=+当动点N (Xi ,Yi )落在圆弧外侧时,则有下式成立22222R Y X Y X e e i i =+>+当动点N (Xi ,Yi )落在圆弧内侧时,则有下式成立22222R Y X Y X e e i i =+<+由此可见,取逐点比较法圆弧插补的偏差函数表达式为222R Y X F i i -+=当动点落在圆外时,为了减小加工误差,应向圆内进给,即向(-X)轴方向走一步;当动点落在圆内时,应向圆外进给,即向(+Y)轴方向走一步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宿迁学院课程设计说明书设计题目:基于VB数字积分法一、二象限逆圆插补计算与仿真系(部):机电工程系专业:自动化(数控技术)班级: 09数控本(2)姓名:李伟学号: 200907052指导老师(签名):刘萍起止时间:20 12年12月3日至2012年12月7 日共1周20 12年12 月6 日正文:数控原理与系统课程设计说明书一、课程设计的目的1)了解连续轨迹控制数控系统的组成原理。
2) 掌握逐点比较法插补的基本原理。
3)握逐点比较法插补的软件实现方法。
二.课程设计的任务逐点比较法插补是最简单的脉冲增量式插补算法之一,其过程清晰,速度平稳,但一般只用于一个平面内两个坐标轴的插补运算。
其基本原理是在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给,且只有一个方向的进给。
也就是说,逐点比较法每一步均要比较加工点瞬时坐标与规定零件轮廓之间的距离,依此决定下一步的走向。
如果加工点走到轮廓外面去了,则下一步要朝着轮廓内部走;如果加工点处在轮廓的内部,则下一步要向轮廓外面走,以缩小偏差,这样周而复始,直至全部结束,从而获得一个非常接近于数控加工程序规定轮廓的轨迹。
逐点比较法插补过程中的每进给一步都要经过偏差判别、坐标进给、偏差计算和终点判别四个节拍的处理,其工作流程图如图所示。
三.逐点比较法基本原理逐点比较法I象限逆圆插补在加工圆弧过程中,人们很容易联想到使用动点到圆心的距离与该圆弧的名义半径进行比较来反映加工偏差。
假设被加工零件的轮廓为第Ⅰ象限逆走向圆弧SE,,圆心在O(0,0),半径为R,起点为S(XS,YS ),终点为E(Xe,Ye),圆弧上任意加工动点为N (X i,Yi)。
当比较该加工动点到圆心的距离ON 与圆弧半径R的大小时,可获得刀具与圆弧轮廓之间的相对位置关系。
当动点N(Xi,Yi )正好落在圆弧上时,则有下式成立22222R Y X Y X e e i i =+=+当动点N(Xi ,Y i)落在圆弧外侧时,则有下式成立22222R Y X Y X e e i i =+>+当动点N (X i,Y i)落在圆弧内侧时,则有下式成立22222R Y X Y X e e i i =+<+由此可见,取逐点比较法圆弧插补的偏差函数表达式为222R Y X F i i -+=当动点落在圆外时,为了减小加工误差,应向圆内进给,即向(-X )轴方向走一步;当动点落在圆内时,应向圆外进给,即向(+Y )轴方向走一步。
当动点正好落在圆弧上且尚未到达终点时,为了使加工继续下去,理论上向(+Y)轴或(-X)轴方向进给均可以,但一般情况下约定向(-X )轴方向进给。
综上所述,现将逐点比较法第Ⅰ象限逆圆插补规则概括如下:当F>0时,即222R Y X F i i -+=>0,动点落在圆外,则向(-X )轴方向进给一步;当F=0时,即222R Y X F i i -+==0,动点正好落在圆上,约定向(-X)轴方向进给一步;当F <0时,即222R Y X F i i -+=<0,动点落在圆内,则向(+Y)轴方向进给一步。
由偏差函数表达式可知,计算偏差F值,就必须进行动点坐标、圆弧半径的平方运算。
显然,在用硬件或汇编语言实现时不太方便。
为了简化这些计算,按逐点比较法直线插补的思路,也可以推导出逐点比较法圆弧插补过程中偏差函数计算的递推公式。
假设第i次插补后,动点坐标为N (Xi,Yi ),其对应偏差函数为222R Y X F i i i -+=当Fi ≥0,向(-X)轴方向进给一步,则新的动点坐标值为 X i+1=Xi-1, Yi +1=Yi 因此,新的偏差函数为()2222212111R Y X R Y X F i i i i i -+-=-+=+++∴ ﻩﻩ Fi+1=Fi -2X i+1 同理,当F i<0,则向(+Y)轴方向进给一步,则新的动点坐标值为 X i+1=Xi , Yi +1=Yi +1 因此,可求得新的偏差函数为()2222212111R Y X R Y X F i i i i i -++=-+=+++∴ Fi+1=Fi+2Yi +1将上式进行比较,可以看出两点不同:第一,递推形式的偏差计算公式中仅有加/减法以及乘2运算,而乘2可等效成该二进制数左移一位,这显然比平方运算来得简单。
第二,进给后新的偏差函数值与前一点的偏差值以及动点坐标N(Xi,Yi)均有关系。
由于动点坐标值随着插补过程的进行而不断变化,因此,每插补一次,动点坐标就必须修正一次,以便为下一步的偏差计算作好准备。
至此,将第Ⅰ象限逆圆弧插补的规则和计算公式汇总,见表(表2-1)第Ⅰ象限逆圆弧插补计算公式表2-1和直线插补一样,圆弧插补过程也有终点判别问题。
当圆弧轮廓仅在一个象限区域内,其终点判别仍可借用直线终点判别的三种方法进行,只是计算公式略不同。
Σ=|Xe-Xs|+|Ye-Ys|ﻩΣ=max{|Xe-Xs|,|Ye-Ys|}Σ1=|Xe-Xs| ,Σ2=|Ye-Ys|式中XS、Ys ——被插补圆弧轮廓的起点坐标;Xe、Ye ——被插补圆弧轮廓的终点坐标。
b、插补象限和圆弧走向前面所讨论的逐点比较法直线和圆弧插补,均是针对第一象限直线和逆圆插补这种特定情况进行的。
然而,任何数控机床都应具备处理不同象限、不同走向曲线的能力。
四个象限中圆弧插补圆弧插补情况比直线插补复杂,不仅有象限问题,而且还有圆弧走向问题。
现以第Ⅰ象限顺圆SR1插补为例,介绍圆弧插补的特性。
假设圆弧SE 起点为S (XS ,YS),终点为E(Xe ,Ye),圆心在坐标原点上。
与逆圆插补相似,当某一时刻动点N(Xi ,Yi )在圆弧的外侧时,有F ≥0成立,应向-Y)轴方向进给一步,以减小误差;若动点N(Xi,Yi )在圆弧内侧,则应向+X )轴方向进给一步。
由此可推导出第Ⅰ象限顺圆插补偏差函数的递推公式如下:当Fi ≥0时,向-Y )轴方向进给一步,则新的动点坐标为Xi+1=Xi , Yi +1=Yi-1 新动点的偏差函数为()2222212111R Y X R Y X F i i i i i --+=-+=+++∴ Fi +1=Fi -2Yi +1 当Fi <0时,向+X)轴方向进给一步,则新的动点坐标为Xi +1=Xi +1, Yi +1=Yi新动点的偏差函数为()2222212111R Y X R Y X F i i i i i -++=-+=+++∴ Fi +1=Fi+2X i+1现将上式比较,可以看出它们有两点不同: ﻩ1)当Fi ≥0或Fi<0时,对应的进给方向不同;2)插补计算公式中动点坐标的修正也不同,以至于偏差计算公式也不相同。
进一步还可根据上述方法推导出其他象限不同走向圆弧的插补公式。
现将各种相应偏差计算见表(表2-2)四个象限圆弧插补偏差计算与进给方向表2-2从表可以看出,当按第Ⅰ象限逆圆NR1进行插补运算时,现若有意将X轴进给反向,则可以走出第Ⅱ象限顺圆SR2来;或者若将Y轴进给反向,则可以走出SR4来;或者将X轴和Y轴的进给均反向,则可以走出NR3来;并且这四种线型(NR1、SR2、NR3、SR4)使用的偏差计算公式都相同,无须改变。
进一步还可以看出,当按第Ⅰ象限逆圆NR1线型插补时,现若将计算公式坐标X与Y对调,即把X当作Y,把Y当作X,那么就可得到SR1的走向。
类似地通过改变进给方向,利用SR1的公式就可获得其余三种线型(NR2、SR3、NR4)的走向。
下面,我们对圆弧逐点比较法作一个简要的介绍。
四.算法描述(逐点比较法在VB中的具体实现)根据上述基本原理,我们可以知道逐点比较法圆弧插补需要设置两个终点计器J∑X=|Xe – Xs|和J∑Y=|Ye-Ys|,分别对X轴和Y轴进行终点监控。
每当X轴或Y轴产生一个溢出脉冲,相应的终点计数器就作减1修正,直到为零,表明该坐标已到终点,并停止其坐标的累加运算。
只有当两个坐标轴均到达终点时,圆弧插补才结束。
如下图所示,圆弧起点S(4,-1),终点(-1,4),且寄存器位数N=3,当插补开始时,被积函数寄存器初值分别为JVX=Ys=-1和JVY=Xs=4,终点判别寄存器J∑X=|Xe–Xs|=-1和J∑Y=|Ye-Ys|=5.该圆弧插补运算过程如下表所示,插补轨迹如下图折线所示。
根据上述基本原理以及对预VB软件编程的掌握,查阅参考相关文献资料,编制了本课程设计的程序。
Private Sub Command1_Click()DimrAs Single,XAsInteger, YAs Integer, c AsInteger, d AsInteger, a AsSingle,b As Single, pi As Single,mAs Integer,n As IntegerX= Int(Text1)Y= Int(Text2)c= Int(Text3)d = Int(Text4)a=Atn(Abs(Y /X))b= Atn(Abs(d / c))pi = 3.14159265m= X* X + Y* Yn = c * c +d* dPicture1.ForeColor =vbBlackPicture1.DrawWidth = 2IfOption1.Value = True ThenIf X <= 0 OrY< 0Or c <= 0 Or d< 0 Or m <>n ThenPrint MsgBox("非法数据!",48, "提示信息")ElsePicture1.Line(500,500)-(500, 6500)Picture1.Line(500, 6500)-(5500, 6500)Picture1.Line (5400, 6530)-(5500,6500)Picture1.Line(5400,6470)-(5500, 6500)Picture1.Line (530,600)-(500,500)Picture1.Line (470, 600)-(500,500)Picture1.ForeColor= vbRedPicture1.DrawWidth =5r=Sqr(X *X +Y * Y) * 400Picture1.Circle (500, 6500), r, , a, bEndIfElseIf Option2.Value=True ThenIfX >= 0 Or Y < 0Or c >= 0Or d<0Or m <>n ThenPrintMsgBox("非法数据!", 48, "提示信息")ElsePicture1.Line(5500, 500)-(5500, 6500)Picture1.Line(500, 6500)-(5700,6500)Picture1.Line (5600,6530)-(5700, 6500)Picture1.Line (5600, 6470)-(5700, 6500)Picture1.Line(5530,600)-(5500, 500)Picture1.Line(5470,600)-(5500, 500)Picture1.ForeColor = vbRedPicture1.DrawWidth= 5r = Sqr(X *X+Y *Y) *400Picture1.Circle (5500,6500),r,,pi-a,pi-bEnd IfEnd IfEnd SubPrivateSub Command2_Click()Dim k,m, j,l,n, F(30), X(30), Y(30)As Integer,a As Integer,b As Integer, c As Integer,dAs Integera =Int(Text1)b = Int(Text2)c = Int(Text3)d =Int(Text4)m =0l = 0k= 0F(m)=0X(m)= aY(m) = bPicture1.ForeColor = vbGreenPicture1.DrawWidth = 3j= Abs(Abs(a) - Abs(c))+Abs(Abs(b)-Abs(d))Form1.CurrentX = 200Form1.CurrentY= 200Print "初始", "进给方向","F(0)=0","X(0) =" &Int(Text1), "Y(0)=" & Int(Text2), " Xe ="& Int(Text3), " Ye =" & Int(Text4)," ∑=" & jIfOption1.Value =True ThenFor n = 1 TojIfF(m) >= 0Andj>0Thenm= m + 1l = l+1F(m) =F(m- 1) - 2 * Abs(X(m - 1)) + 1X(m) =X(m - 1)- 1Y(m) = Y(m- 1)Picture1.Line(500 + 400 *(a- l), 6500 - 400 * (b+k))-(500+ 400 *(a - l+1), 6500 -400 *(b +k))Form1.CurrentX = 200Form1.CurrentY= 200+ m* 300Print "第" &m&"步","-△X", "F(" &m & ")="& F(m),"X(" & m & ")=" & X(m), "Y(" & m &")=" &Y(m), " Xe = " &Int(Text3)," Ye = " &Int(Text4)," ∑="&j - nElsek=k+1m= m +1F(m) = F(m -1) + 2* Abs(Y(m - 1))+1Y(m) = Y(m - 1) + 1X(m) =X(m-1)Picture1.Line (500+400 *(a- l),6500- 400 *(b + k))-(500+ 400* (a-l),6500 - 400*(b +k - 1))Form1.CurrentX = 200Form1.CurrentY = 200+m * 300Print "第" & m&"步", "+△Y ", "F(" & m& ")="& F(m)," X("& m&")=" & X(m)," Y(" & m&")=" & Y(m)," Xe ="& Int(Text 3), "Ye =" &Int(Text4),"∑= " & j -n;""EndIfNext nElseIf Option2.Value =TrueThenForn =1To jIf F(m) >=0And j >0 Thenm =m+1k=k + 1F(m)=F(m- 1) - 2 * Abs(Y(m- 1))+ 1X(m) = X(m- 1)Y(m)= Y(m - 1)- 1Picture1.Line (5500 +400*(a - l),6500-400 * (b - k +1))-(5500 +400 * (a -l),6500 - 400* (b - k))Form1.CurrentX = 200Form1.CurrentY =200+ m * 300Print "第"& m& "步", " -△Y","F(" &m & ")=" &F(m), "X(" &m&")=" &X(m)," Y(" &m & ")="&Y(m), "Xe ="& Int(Text3),"Ye=" & Int(Text4), " ∑=" & j- nElsel =l+ 1m= m +1F(m) = F(m -1) + 2 * Abs(X(m -1)) + 1Y(m)=Y(m - 1)X(m) =X(m - 1) -1Picture1.Line(5500+400 *(a -l), 6500- 400 * (b - k))-(5500+400 * (a- l +1), 6500 - 400*(b-k))Form1.CurrentX = 200Form1.CurrentY = 200+m* 300Print"第" & m&"步", "-△X ", "F(" & m &")=" & F(m), " X("&m& ")=" & X(m), " Y(" & m& ")="& Y(m),"Xe= " & Int(Text3), "Ye = "&Int(Text4)," ∑="&j - nEnd IfNext nEnd IfEnd SubPrivate Sub Command3_Click()Text1.Text= ""Text2.Text =""Text3.Text=""Text4.Text= ""Picture1.ClsForm1.ClsEndSub六、各象限选例展示一.参考文献【1】汪木兰主编.数控原理与系统.机械工业出版社,2004【2】李金泽主编.基于VisualBasic编程软件的数控插补计算与设计方法.机械工业出版社,2007年。