逐点比较法插补原理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
年月日
课程名称:数控技术实验名称:逐点比较法插补原理班级:姓名:同组人:
指导老师评定:签名:
一、实验的目的与要求
1.目的
①掌握逐点比较法插补的原理及过程;
②掌握利用计算机高级语言,设计及调试“插补运算轨迹”模拟画图的程序设计方法;
③进一步加深对插补运算过程的理解;
二、实验仪器
计算机一台
三、实验原理
①逐点比较法插补运算的原理
首先粗略的简单介绍一下机床是如何按照规定的图形加工出所需的工件的。例如,现在要加工一段圆弧(图2-1),起点为A,终点为B,坐标原点就是圆心,Y轴、X轴代表纵、横拖板的方向,圆弧半径为R。
如从A点出发进行加工,设某一时刻加工点在M1,一般来说M1和圆弧有所偏离。因此,可根据偏离
的情况确定下一步加工进给的方向,
使下一个加工点尽可能向规定图形
(即圆弧)靠拢。
若用R M1表示加工点M1到圆心
O的距离,显然,当R M1 加工点M1在圆内,这时应控制纵拖 板(Y拖板)向圆外进给一步到新加 工点M2,由于拖板被步进电机带动, 进给一步的长度是固定的(1微米), 故新的加工点也不一定正好在圆弧上。 同样,当M2≥R时,表示加工点M2 在圆外或圆上,这时应控制横拖板 (X拖板)向圆内进给一步。如此不 断重复上述过程,就能加工出所需的圆弧。图2-1 插补原理 可以看出,加工的结果是用折线来代替圆弧,为了清楚起见,在图 2-1中,每步的步长画的很大,因此加工出来的折线与所需圆弧的误差较大。 若步长缩小,则误差也跟着缩小,实际加工时,进给步长一般为1微米,故实际误差时很小的。 ②计算步骤 由上述可以看出,拖板每进给一步都要完成四个工作节拍。 偏差判别:判别偏差符号,确定加工点是在要求图形外还是在图形内。 工作台进给:根据偏差情况,确定控制X坐标(或Y坐标)进给一步, 使加工点向规定的图形靠拢,以缩小偏差。 偏差计算:计算进给一步后加工点与要求图形的新偏差,作为下一步偏差判别的依据。 终点判断:判定是否到达终点,如果未达到终点,继续插补,如果以到达终点,停止插补。 计算步骤的框图如下所示: 图2-2 逐点比较法插补计算步骤 ③插补运算公式 插补运算公式表 F≥0F<0 加工指令 进给方向运算进给方向运算SR1,SR3 NR2,NR 4△Y F-2Y+1→F Y-1→Y △X F+2X+1→F X+1→X 圆 弧SR2,SR4 NR1,NR 3△X F-2X+1→F X-1→X △Y F+2Y+1→F Y+1→Y L1,L3△X F-Y→F△Y F+X→F 斜 线L2,L4△Y F-X→F△X F+Y→F 四、实验内容及步骤 应用VB设计逐点比较法的插补运算程序,在计算机屏幕上画出轨迹图。 1 程序界面 采用图形显示方式,动态的显示出直线和圆弧的插补过程。 界面如下所示: 图2-3 程序参考界面 2 程序流程图 图2-4 逐点比较法第一象限直线插补流程图 3 程序源代码 Dim ER, LSx, LSy, LEx, LEy, CSx, CSy, CEx, CEy, R Private Sub Command1_Click() Picture1.Cls ER = 0 LSx = IsNum(Text1.Text) LSy = IsNum(Text2.Text) LEx = IsNum(Text3.Text) LEy = IsNum(Text4.Text) If Abs(LSx) > Abs(LSy) Then Max1 = Abs(LSx) Else Max1 = Abs(LSy) If Abs(LEx) > Abs(LEy) Then max2 = Abs(LEx) Else max2 = Abs(LEy) If Max1 > max2 Then Max = Max1 Else Max = max2 Max = Max + 3 If ER = 1 Or ER = 2 Then MsgBox ("坐标值中含有非法字符!") If ER = 3 Then MsgBox ("所给坐标值不是整数!请输入整数") If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" And Text4.Text <> "" Then Picture1.Scale (-Max, Max)-(Max, -Max) Picture1.Line (-Max, 0)-(Max, 0), RGB(0, 0, 0) Picture1.Line (0, Max)-(0, -Max), RGB(0, 0, 0) For i = -Max To Max Picture1.Line (i, 0.2)-(i, 0), RGB(0, 0, 0) Picture1.Line (0, i)-(0.3, i), RGB(0, 0, 0) Next i Picture1.Line (LSx, LSy)-(LEx, LEy), RGB(0, 0, 0) Else MsgBox ("请输入坐标值!") End If End Sub Private Sub Command2_Click() x0 = 0: y0 = 0 X1 = LEx - LSx: Y1 = LEy - LSy If X1 > 0 And Y1 > 0 Then quadrant = 1 If X1 > 0 And Y1 < 0 Then quadrant = 4 If X1 < 0 And Y1 > 0 Then quadrant = 2 If X1 < 0 And Y1 < 0 Then quadrant = 3 If quadrant = 1 Then For i = 0 To Abs(X1) + Abs(Y1) - 1 F = X1 * y0 - x0 * Y1 x00 = x0 + LSx: y00 = y0 + LSy If F >= 0 Then x0 = x0 + 1 Else y0 = y0 + 1 x11 = x0 + LSx: y11 = y0 + LSy Picture1.Line (x00, y00)-(x11, y11), RGB(255, 0, 0) delay Next i End If If quadrant = 3 Then