(完整版)逐点比较法插补程序程序设计与模拟毕业论文

(完整版)逐点比较法插补程序程序设计与模拟毕业论文
(完整版)逐点比较法插补程序程序设计与模拟毕业论文

大连民族学院本科毕业设计(论文)

逐点比较法插补程序程序设计与运行

模拟

学院(系):机电信息工程学院_____

专业:机械设计制造及其自动化__

学生姓名: _________

指导教师:李文龙 __________

评阅教师:_________________________

完成日期:_________________________

大连民族学院

摘要

在数控编程时,一般仅提供描述该线形所必须的相关参数,但为了满足几何零件尺寸精度要求,必须在刀具(或工件)运动过程中实时计算出满足线形和进给速度要求的在起点和终点之间的若干中间点,所以就有了插补。

本设计主要阐述了逐点比较法的基本原理,在四个象限直线、圆弧插补的插补原理以及如何实现。重点研究了逐点比较法的基本算法,控制程序的原理框图,对逐点比较法做了详细的研究,掌握基本的G代码的内容与运用,编写插补程序,并且基于vb平台演示插补过程。

从调试结果来看,本文所提供的运算与编程能够通过简洁的“输入输出”界面,较好的实现了计算机屏幕模拟。

关键词:简易数控;逐点比较法插补;G代码;VB;计算机屏幕模拟

Abstract

By-point comparison interpolation program design and run

the simulation program

In 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 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 computing and programming through simple "input output" interface, to achieve a better simulation of the computer screen

Keywords:Simple numerical control; interpolation point by point comparison;G code;VB;Computer simulation on the screen

目录

摘要 ........................................................................................................................... ABSTRACT....................................................................................................................目录 ...........................................................................................................................

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课题的背景

数字控制简称数控,是由数字指令控制对象的一种自动控制技术。有早期使用的普遍数控系统和目前广泛使用的计算机数控系统,采用数控技术的自动控制系统称为数控系统。装备了数控系统能实现运动和加工过程自动控制的机床称为数控机床。随着生产的发展,数控技术已经广泛应用于金属切削机床、三坐标测量机、数控雕刻机等机械设备上。

数控机床起源于美国,先后经历了两个阶段六个时代的发展:电子管、晶体管、集成电路、小型计算机、微处理器以及基于pc机的通用CNC系统。前三代称为一个阶段称为普通数控系统(NC系统),主要由电路的硬件和连线组成,其特点是具有很多硬件和连接特点,电路复杂,可靠性不好。后三代称为第二个阶段,称为计算机数控系统(CNC系统)主要由计算机硬件和软件组成,其突出特点是利用存储器里的软件控制系统工作,这种系统容易扩展功能,柔性好,可靠性高。现在,开放式数控系统正在快速发展。

近几年的国际、国内机床展都表明,数控机床正朝着高速度、高精度、复合化的方向发展。在第八届中国国际机床展览会,国内外厂商都推出了以先进的直线电机驱动机床、五轴联动加工机床和复合加工机床作为主打参展产品。展品的另一个惊喜是加工中心的主轴转速和精度都有了显著提高。高速度和高精度是现代数控伺服驱动的要求及发展趋势,当前世界先进的交直流伺服系统性能己经大大改进,但由于受传统机械结构(即旋转电动机十滚珠丝杠)进给传动模式的限制,伺服性能指标很难有突破性的提高。但由于受传统机械结构(即旋转电动机十滚珠丝杠)进给传动

模式的限制,伺服性能指标很难有突破性的提高。直线电机高速进给单元的应用使得进给传动链及其传动结构发生了深刻的变化,当代机床的高速进给系统形成了以直线电动机直接驱动工作台为主的发展方向。提高生产率是用户永无止境的追求目标,加工中心不仅加工时间短、精度高,而且可以大大缩短生产周期,实现精益生产,满足了用户需要。高速加工中心的主轴最高转速可达到40000:min,快速移动速度可达到60mmin。复合加工,即工序复合和工种复合,在一次安装情况下完成零件的全部加工,将会是今后制造技术发展的又一个趋势。“五轴联动加工机床是加工复杂曲面的先进手段,是航空、航天、船舶等工业的重要加工设备。国际上把五轴联动数控技术作为衡量一个国家生产设备自动化水平新的标志”

[3]。智能化、开放性、柔性化和集成化智能化人工智能技术的发展与计算机技术相结合后,极大地推进了数控系统的智能化程度,进一步改善了系统的性能、功效和可操作性。智能化运用体现在数控系统以下几个方面:追求加工效率和加工质量方面的智能化,如前馈控制、电机参数的自适应运算、自动识别负载、自动选定模型、自整定等;操作方面的智能化,如智能化的自动编程、智能化的人机界面等;智能诊断、智能监控方面的内容,方便系统的诊断及维护等。开放性,按照IEEE(Institute of Electrical and Electronics Engineers美国电气及电子工程师学会)的定义:“开放性控制系统应能提供这样的能力:来自不同厂商的各种平系统上实现,并能和其他系统应用相互操作,且具有一致性的用户界面。”由此定义可知,开放性CNC系统是一个模块化的体系结构,由系统平台和面向应用的功能模块所构成,其特点是:互操作性;可移植性;可扩展性;互换性。对于开放性控制系统,由于标准的系统平台提供了统一的接口规范,因而不同的数控系统提供商开发的功能模块只要遵守这一规范,

就能在不同的控制平台上运行,而各个功能单元在整个系统中是相对独立的。这种结构特点使得数控系统开发商在各自功能单元的开发过程中,只要考虑本身的性能,发挥各自优势并能进行广泛的合作即可;机床制造厂可以不依赖某个数控系统开发商,而是根据需要自由的配置各种功能模块,组成最适合的控制系统;而最终用户也可以任意选择不同的供应商提供的不同的功能模块单元来构筑自己所需要的控制系统,达到最优化、最合理的系统配置。数控系统体系结构的开放性主要是为了满足数控联网、普及型个性化、多品种、小批量、柔性化及数控技术迅速发展的要求。比如美国的NGC和OMAC计划,欧共体的OSA以计划以及日本的OSEC计划等。柔性化和集成化数控机床向柔性自动化系统发展的趋势是:一方面从点(数控单机、加工中心和数控复合加工机床)、线(FMC、FMS、FTL、FML)向面(工段车l司独立制造、FA)、体 (CIMS、分布式网络集成制造系统)的方向发展;另一方面注重向应用性和经济性方向发展。柔性化技术是制造业适应市场动态需求及产品迅速更新的主要手段,是各国制造业发展的主流趋势是先进制造领域的基础技术,其重点是以提高系统的可靠性、实用性为前提,以易于实现联网和集成为目标,注重加强单元技术的开拓、完善,使CNC单机易于向高精度、高速度和高柔性方向发展;使数控机床及其构成的柔性制造系统能方便地与CAD、CAM、CAPP、MTS联结,向信息集成方向发展。

数控机床有很多优点,例如具有高度柔韧性,在数控机床上加工零件,主要取决于加工程序,它与普通机床不同,不必制造、更换许多工具、夹具,不需要经常调整机床。因此,数控机床适用于零件频繁更换的场合。也就是适合单件、小批生产及新产品的开发,缩短了生产准备周期,节省了大量工艺设备的费用。加工质量可靠,加工同一

批零件,在同一机床,在相同加工条件下,使用相同刀具和加工程序,刀具的走刀轨迹完全相同,零件的一致性好,质量稳定。加工精度高,数控机床的加工精度,一般可达到0.005~0.1mm,数控机床是按数字信号形式控制的,数控装置每输出一个脉冲信号,则机床移动部件移动一个脉冲当量(一般为0.001mm),而且机床进给传动链的反向间隙与丝杠螺距平均误差可由数控装置进行补偿,因此,数控机床定位精度比较高。而且生产率高利于生产管理现代化,机床一般是封闭式加工,清洁又安全。总体来说就是具有高质量高效率高柔性和负责形状加工能力这四个特点。

数控机床适应的零件有:加工精度要求高、形状负责、用通用机床无法加工或虽然能加工但很难保证产品质量要求的零件,用数学模型描述的复杂曲线或曲面轮廓的零件,具有难测量、难控制进给、难控制尺寸的不开敞内腔的壳体或盒形零件,必须在一次夹装中合并并完成铣、镗、铰或攻螺纹等多工序零件。

现代制造业对数控技术提出了更高的要求,当前数控技术以及装备发展趋势主要体现在七个方面,下面一一列出,运行高速化加工高精化,功能复合化,控制智能化,体系开放化,驱动并联化,交互网络化和造型宜人化。

1.2课题的主要研究内容

用逐点比较法设计开放式数控技术插补运算的控制程序,绘制插补控制程序的原理框图,用Vb编写并调试其控制程序。首先要明白逐点插补基本原理,会插补算法,然后逐点插补的程序的编程,最后调试,看是否能在各自象限演示插补过程。

1.3课题的研究方案

首先原理分析了解逐点比较法的基本原理,逐点比较法的基本原理是刀具(或工件)每走一步控制系统都要将加工点与给定的图形轨迹相比较,以决定下一步进给的方向,使之逼近加工轨迹,向减小偏差的方向进给。

然后偏差判别,坐标进给偏差计算终点判别,画出逐点插补程序的原理框图。其次通过加工程序,分析判断圆弧插补还是直线插补,在第几象限内的插补,顺时针还是逆时针插补等,然后调用前面编制好的子程序。

最后编写插补控制程序区域判别法插补原理G00、G01、G02、G03等代码程序,逐点插补程序的调试查找总控程序相关语法、算法错误,运行查看与预想结果之区别,调试相关程序段,编程时注重对模块化和子程序的应用。

2 数控加工基本原理

2.1概述

实际加工中零件的轮廓形状是由各种线形(如直线、圆弧、螺旋线、抛物线、自由曲线)构成的。其中最主要的是直线和圆弧。数控编程时,一般仅提供描述该线形所必须的相关参数,为满足零件几何尺寸要求必须在刀具运动中实时计算出满足线形和进给速度要求的起点和终点之间的若干个中间点,称为插补。插补的结果是输出运动轨迹的中间点坐标值,机床伺服系统根据此坐标值控制个坐标轴协调运动,走出预定轨迹。

数控系统中,完成插补运算的装置称为插补器。插补运算可由硬件或软件来完成,早期的NC系统完全由硬件(即逻辑电路)来实现插补,在计算机数控(CNC)系统中,由软件(即程序)完成插补,具有结果简单、灵活多变、可靠性好等优点。现代计算机数控系统为了满足插补精度和插补速度,采用软件与硬件相结合的办法,由软件完成插补,硬件完成精插。

2.2数控编程内容

数控编程是指从零件图纸到获得数控加工程序的全部工作过程。分析零件图样和制定工艺方案,这项工作的内容包括:对零件图样进行分析,明确加工的内容和要求;确定加工方案;选择适合的数控机床;选择或设计刀具和夹具;确定合理的走刀路线及选择合理的切削用量等。这一工作要求编程人员能够对零件图样的技术特性、几何形状、尺寸及工艺要求进行分析,并结合数控机床使用的基础知识,如数控机床的规格、性能、数控系统的功能等,确定加工方法和加工路线。数学处理,在确定了

工艺方案后,就需要根据零件的几何尺寸、加工路线等,计算刀具中心运动轨迹,以获得刀位数据。数控系统一般均具有直线插补与圆弧插补功能,对于加工由圆弧和直线组成的较简单的平面零件,只需要计算出零件轮廓上相邻几何元素交点或切点的坐标值,得出各几何元素的起点、终点、圆弧的圆心坐标值等,就能满足编程要求。当零件的几何形状与控制系统的插补功能不一致时,就需要进行较复杂的数值计算,一般需要使用计算机辅助计算,否则难以完成。编写零件加工程序,在完成上述工艺处理及数值计算工作后,即可编写零件加工程序。程序编制人员使用数控系统的程序指令,按照规定的程序格式,逐段编写加工程序。程序编制人员应对数控机床的功能、程序指令及代码十分熟悉,才能编写出正确的加工程序。下面简单介绍一下程序编写过程中经常使用的字和字的功能:(1)字符与代码

字符是用来组织、控制或表示数据的一些符号,如数字、字母、标点符号、数学运算符等。数控系统只能接受二进制信息,所以必须把字符转换成8BIT信息组合成的字节,用“0”和“1”组合的代码来表达。国际上广泛采用两种标准代码: ISO国际标准化组织标准代码;EIA美国电子工业协会标准代码。这两种标准代码的编码方法不同,在大多数现代数控机床上这两种代码都可以使用,只需用系统控制面板上的开关来选择,或用G功能指令来选择。

(2)字

在数控加工程序中,字是指一系列按规定排列的字符,作为一个信息单元存储、传递和操作。字是由一个英文字母与随后的若干位十进制数字组成,这个英文字母称为地址符。如:“X2500”是一个字,X为地址符,数字“2500”为地址中的内容。

(3)字的功能

组成程序段的每一个字都有其特定的功能含义,以下是以FANUC-0M 数控系统的规范为主来介绍的,实际工作中,请遵照机床数控系统说明书来使用各个功能字。

(4)准备功能字G

准备功能字的地址符是G,又称为G功能或G指令,是用于建立机床或控制系统工作方式的一种指令。后续数字一般为1~3位正整数. (5)尺寸字

尺寸字用于确定机床上刀具运动终点的坐标位置。其中,第一组X,Y,Z,U,V,W,P,Q,R 用于确定终点的直线坐标尺寸;第二组A,B,C,D,E 用于确定终点的角度坐标尺寸;第三组 I,J,K 用于确定圆弧轮廓的圆心坐标尺寸。在一些数控系统中,还可以用P指令暂停时间、用R指令圆弧的半径等。

(6)程序检验

将编写好的加工程序输入数控系统,就可控制数控机床的加工工作。一般在正式加工之前,要对程序进行检验。通常可采用机床空运转的方式,来检查机床动作和运动轨迹的正确性,以检验程序。在具有图形模拟显示功能的数控机床上,可通过显示走刀轨迹或模拟刀具对工件的切削过程,对程序进行检查。对于形状复杂和要求高的零件,也可采用铝件、塑料或石蜡等易切材料进行试切来检验程序。通过检查试件,不仅可确认程序是否正确,还可知道加工精度是否符合要求。若能采用与被加工零件材料相同的材料进行试切,则更能反映实际加工效果,当发现加工的零件不符合加工技术要求时,可修改程序或采取尺寸补偿等措施。

2.3逐点比较法直线插补原理

逐点比较法就是刀具(或工件)每走一步控制系统都要将加工点与给定的图形轨迹相比较,以决定下一步进给的方向,使之逼近加工轨迹。逐点比较法是以折线来逼近直线或圆弧,其最大误差不超过一个设定单位(脉冲当量),它运算直观,输出脉冲均匀,而且输出脉冲的速度变化小,调节方便,在两坐标数控机床中应用较为普遍。

2.3.1偏差计算公式

假设加工如图所示第一象限的直线OA,

Y A

M’

Y

M

M

O

X

图2.1逐点比较法直线插补

直线的起点O为坐原点,终点A坐标为(X

E ,Y

E

)。设M(X

N

,Y

M

)为任

意一加工点。若M在直线OA上,则根据相似三角形的关系可得出

Y

M X

M

=Y

E

X

E

取F

M =Y

M

X

E

-X

M

Y

E

作为直线插补的偏差判别式。

若M在OA直线上,则Y

M X

M

=Y

E

X

E

,F

m

=0;

若M在OA直线的上方处,则Y

M X

M

>Y

E

X

E

,F

m

>0;

若M在OA直线的下方处,则Y

M X

M

E

X

E

,F

m

<0;

设在某加工点处,有F

m

≥0时,为了逼近给定的轨迹,应沿+X方向进给一步,走一步后新的坐标值为

X

m+1=X

M

+1,Y

M+1

=Y

M

新的偏差为

F

M+1= Y

M+1

X

E

- X

M

+1Y

E

= F

M

-Y

E

若F

M

<0,为了逼近给定轨迹,应向+Y方向进给一步,走出一步后的新坐标为

X

m+1=X

M

,Y

M+1

=Y

M

+1

新偏差为

F

M+1= F

M

+X

e

2.3.2插补计算过程

插补计算时,每走一步,都要进行以下4个步骤(又称4个节拍)的逻辑运算和算数运算,即偏差判别、坐标计算和进给、偏差计算、终点判别。

2.3.3终点判别

逐点比较法的终点判别有两种:第一种是设置X、Y两个减法计数

器,加工开始前,在X、Y计数器中分别存入终点坐标X

E 、Y

E

,在X坐标

(或Y坐标)进给一步时,就在X计数器(或Y计数器)中减去1,直到这两个计数器中的数都减到0时,便达到终点。

第二种是用一个终点计数器,寄存从起点到达终点的总步数Σ(Σ

=X

E =Y

E

),XY坐标每进给一步,Σ减去1,直到Σ为0时,就到达终点。

2.3.4不同象限的直线插补计算

上面讨论的为第一象限哦直线插补计算方法,其他三个象限的直线插补计算方法可以用相同的原理获得,如表所示,列出了四个象限的直线插补时的偏差计算公式和脉冲进给方向,注意在偏差计算时,无论哪个象限的直线,均用坐标的绝对值来计算。

表2.1四个象限的直线插补运算

2.4逐点比较法圆弧插补原理

2.4.1偏差计算公式

圆弧轨迹的形式有顺时针方向和逆时针方向的不同,也有坐标象限

的区别。现以第一象限逆圆为列讨论偏差计算公式。如图2.1

Y B

M

R

M

R A

O X

图2.2逐点比较法圆弧插补

设需要加工圆弧AB,圆弧的圆心在坐标系原点,已知圆弧的起点A

(X

O ,Y

O

),终点B(X

e

,Y

e

),圆弧半径为R。比较R

M

和R反映加工差。

R

M 2= X

m

2+Y

m

2,R2= X

o

2+Y

o

2

因此,可得圆弧偏差判别式为

F

m 2= R

M

2- R2= X

m

2+Y

m

2- R2

若F

m

=0,表明加工点在圆弧上;

若F

m

>0,表明加工点在圆弧外;

若F

m

<0,表明加工点在圆弧内。

设加工点正处于M点,若F

m

≥0,对于第一象限的逆圆,为了逼近圆

弧,应沿-X方向进给一步,到m+1点,其坐标值为X

m+1=X

m

-1,Y

m+1

= Y

m

新加工点的偏差应为

F

m+1= X2

m+1

+ Y2

m+1

-R2=F

m

-2X

m

+1

若F

m

<0,为了逼近圆弧,应沿+Y方向进给一步,到m+1点,其坐标

值为X

m+1= X

m

,Y

m+1

= Y

m

+1,新加工点的偏差为

F

m+1= X2

m+1

+ Y2

m+1

-R2=F

m

+2Y

m

+1

因为加工是从圆弧的起点开始,起点的偏差F

=0,所以新加工点的偏差总可以根据前一点的数据来计算出来。

2.4.2终点判别法

圆弧插补的终点判别方法和直线插补基本相同,可将起点到达终点X、Y轴所所走步数的总和Σ存入一个计数器,即

Σ=|X

e -X

|+|Y

e

-Y

无论是X轴还是Y轴每进给一步,从Σ中减去1,当Σ=0时,便发出终点到达信号。四个象限圆弧插补计算公式

表2.2四个象限的圆弧插补计算

2.5 VB基本原理

Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量,它源自于BASIC

编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件,程序员可以轻松的使用VB提供的组件快速建立一个应用程序。

VB 使得大量的外界控件有了自己的生存空间,大量的第三方控件针对 VB 提供。VB 也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。

使用Visual Basic 解决编程问题时已经可以用到其他一些Visual Studio开发工具了。Visual Basic 6.0作为Visual Studio开发工具组件,不但为程序设计提供了一个可视的程序开发环境,还提供了与其他工具集成的可能性。利用这个编程环境,单个程序开发人员可以快速的创建出一个简单的应用程序,而一个开发小组则可以创建出一个复杂的、分布式的应用程序。

VB 的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI 系统,但是又可以开发相当复杂的程序,VB 的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法,因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面 VB 程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。

插补运动(逐点比较法)

1、概述 在机床的实际加工中,被加工工件的轮廓形状千差万别,各式各样。严格说来,为了满足几何尺寸精度的要求,刀具中心轨迹应该准确地依照工件的轮廓形状来生成。然而,对于简单的曲线,数控装置易于实现,但对于较复杂的形状,若直接生成,势必会使算法变得很复杂,计算机的工作量也相应地大大增加。因此,在实际应用中,常常采用一小段直线或圆弧去进行逼近,有些场合也可以用抛物线、椭圆、双曲线和其他高次曲线去逼近(或称为拟合)。所谓插补是指数据密化的过程。在对数控系统输入有限坐标点(例如起点、终点)的情况下,计算机根据线段的特征(直线、圆弧、椭圆等),运用一定的算法,自动地在有限坐标点之间生成一系列的坐标数据,即所谓数据密化,从而自动地对各坐标轴进行脉冲分配,完成整个线段的轨迹运行,以满足加工精度的要求。 机床数控系统的轮廓控制主要问题就是怎样控制刀具或工件的运动轨迹。无论是硬件数控(NC)系统,还是计算机数控(CNC)系统或微机数控(MNC)系统,都必须有完成插补功能的部分,只是采取的方式不同而已。在CNC或MNC中,以软件(程序)完成插补或软、硬件结合实现插补,而在NC中有一个专门完成脉冲分配计算(即插补计算)的计算装置——插补器。无论是软件数控还是硬件数控,其插补的运算原理基本相同,其作用都是根据给定的信息进行数字计算,在计算过程中不断向各个坐标发出相互协调的进给脉冲,使被控机械部件按指定的路线移动。 有关插补算法问题,除了要保证插补计算的精度之外,还要求算法简单。这对于硬件数控来说,可以简化控制电路,采用较简单的运算器。而对于计算机数控系统来说,则能提高运算速度,使控制系统较快且均匀地输出进给脉冲。 经过多年的发展,插补原理不断成熟,类型众多。从产生的数学模型来分,有直线插补、二次曲线插补等;从插补计算输出的数值形式来分,有基准脉冲插补(又称脉冲增量插补)和数据采样插补。在基准脉冲插补中,按基本原理又分为以区域判别为特征的逐点比较法插补,以比例乘法为特征的数字脉冲乘法器插补,以数字积分法进行运算的数字积分插补,以矢量运算为基础的矢量判别法插补,兼备逐点比较和数字积分特征的比较积分法插补,等等。在CNC系统中,除了可采用上述基准脉冲插补法中的各种插补原理外,还可采用各种数据采样插补方法。 本文将介绍在数控系统中常用的逐点比较法、数字积分法、时间分割法等多种插补方法以及刀具半径补偿计算原理。 2、逐点比较法 逐点比较法是我国数控机床中广泛采用的一种插补方法,它能实现直线、圆弧和非圆二次曲线的插补,插补精度较高。

c语言程序设计课程模拟试卷及答案(2015年秋季用,最新)

一、单选题(每小题2分,共20分) 1. C语言源程序文件的缺省扩展名为( c )。 2.设x和y均为逻辑值,则x && y为真的条件是x和y( 均为真 )。 3. 在下列的符号常量定义中,正确的定义格式为( #define M3 10 )。 4. for循环语句能够被改写为( while )语句。 5. 在下面的一维数组定义中,错误的定义格式为( int a[]; )。 6.在下面的函数原型声明中,存在语法错误的是(int AA(int a; int b;); )。 7. 假定a为一个数组名,则下面存在错误的表达式为( *a++ )。 8. 假定有定义为“int a[10], x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为( x=*pa+3 )。 9.字符串"y=%d\n"的长度为__5__。 10. 向一个二进制文件中写入信息的函数为(fwrite() )。 二、填空题(每小题2分,共26分) 1.执行“printf("%c",'A'+3);”语句后得到的输出结果为_D_ 2.短整数类型short int的长度为2 3. 用类型关键字表示十进制常数3.26f的类型为_float 4. 假定y=10,则表达式++y*3的值为_33 5. 逻辑表达式(x==0 && y>5)的相反表达式为_(x!=0 || y<=5) 或:(x || y<=5) 6.若x=5,y=10,则x!=y的逻辑值为_1(真,true) 7. 假定二维数组的定义为“int a[3][5];”,则该数组所占存储空间的字节数为_60 8. 使用“typedef char BB[10][50];”语句定义_BB为含有10行50列的二维字符数组类型。 9. 字符串"a:\\xxk\\ff"的长度为9 10.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为_46 11. 假定一个数据对象为int*类型,则指向该对象的指针类型为_int** 12.假定一个结构类型的定义为“struct A{int a,b; struct A* c;};”,则该类型的理论长度为__12 13. 假定要访问一个结构对象x中的数据成员a,则表示方式为_x.a 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 1. #include void main() { int x=3; switch(2*x+1) { case 4: printf("%d ",x); break; case 7: printf("%d ",2*x); break; case 10: printf("%d ",3*x); break; default: printf("%s ","default"); } }输出结果:6 2. #include void main() { int f=1,i; for(i=1;i<4;i++) f=3*f+1; printf("%d ",f); }输出结果:40 3. #include void main() { int a[8]={12,39,26,41,55,63,72,40}; int i, c=0; for(i=0; i<8; i++) if(a[i]%3==0) c++; printf("%d\n",c); }输出结果:4 4. #include #include void main( ) {

逐点比较法插补原理实验报告

南昌航空大学实验报告 年月日 课程名称:数控技术实验名称:逐点比较法插补原理 班级:姓名:同组人: 指导老师评定:签名: 一、实验的目的与要求 1.目的 ①掌握逐点比较法插补的原理及过程; ②掌握利用计算机高级语言,设计及调试“插补运算轨迹”模拟画图的程序设计方法; ③进一步加深对插补运算过程的理解; 二、实验仪器 计算机一台 三、实验原理 ①逐点比较法插补运算的原理 首先粗略的简单介绍一下机床是如何按照规定的图形加工出所需的工件的。例如,现在要加工一段圆弧(图2-1),起点为A,终点为B,坐标原点就是圆心,Y轴、X轴代表纵、横拖板的方向,圆弧半径为R。 如从A点出发进行加工,设某一时刻加工点在M1,一般来说M1和圆弧 有所偏离。因此,可根据偏离的情 况确定下一步加工进给的方向,使下 一个加工点尽可能向规定图形(即圆 弧)靠拢。 若用R M1表示加工点M1到圆心O 的距离,显然,当R M1

可以看出,加工的结果是用折线来代替圆弧,为了清楚起见,在图2-1中,每步的步长画的很大,因此加工出来的折线与所需圆弧的误差较大。 若步长缩小,则误差也跟着缩小,实际加工时,进给步长一般为1微米,故实际误差时很小的。 ②计算步骤 由上述可以看出,拖板每进给一步都要完成四个工作节拍。 偏差判别:判别偏差符号,确定加工点是在要求图形外还是在图形内。 工作台进给:根据偏差情况,确定控制X坐标(或Y坐标)进给一步,使加工点向规定的图形靠拢,以缩小偏差。 偏差计算:计算进给一步后加工点与要求图形的新偏差,作为下一步偏差判别的依据。 终点判断:判定是否到达终点,如果未达到终点,继续插补,如果以到达终点,停止插补。 计算步骤的框图如下所示: 图2-2 逐点比较法插补计算步骤 ③插补运算公式 插补运算公式表 四、实验内容及步骤 应用VB设计逐点比较法的插补运算程序,在计算机屏幕上画出轨迹图。 1 程序界面 采用图形显示方式,动态的显示出直线和圆弧的插补过程。

逐点比较法直线插补圆弧插补实例

逐点比较法直线插补 (1)偏差函数构造 对于第一象限直线OA上任一点(X,Y):X/Y = Xe/Ye 若刀具加工点为Pi(Xi,Yi),则该点的偏差函数Fi可表示为: 若Fi= 0,表示加工点位于直线上; 若Fi> 0,表示加工点位于直线上方; 若Fi< 0,表示加工点位于直线下方。 (2)偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi =Yi Xe -XiYe 若Fi>=0,规定向+X 方向走一步 Xi+1 = Xi +1 Fi+1 = XeYi –Ye(Xi +1)=Fi –Ye 若Fi<0,规定+Y 方向走一步,则有 Yi+1 = Yi +1 Fi+1 = Xe(Yi +1)-YeXi =Fi +Xe (3)终点判别 直线插补的终点判别可采用三种方法。 1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。 (4)例 对于第一象限直线OA,终点坐标Xe=6 ,Ye=4,插补从直线起点O开始,故F0=0 。终点判别是判断进给总步数N=6+4=10,将其存入终点判别计数器中,每进给一步减1,若N=0,则停止插补。

逐点比较法圆弧插补(1)偏差函数构造 任意加工点Pi(Xi,Yi),偏差函数Fi可表示为 若Fi=0,表示加工点位于圆上;

若Fi >0,表示加工点位于圆外; 若Fi <0,表示加工点位于圆内 (2)偏差函数的递推计算 1) 逆圆插补 若F ≥0,规定向-X 方向走一步 若Fi<0,规定向+Y 方向走一步 2) 顺圆插补 若Fi ≥0,规定向-Y 方向走一步 若Fi<0,规定向+y 方向走一步 (3)终点判别 1)判断插补或进给的总步数: 2)分别判断各坐标轴的进给步数: (4)例 对于第一象限圆弧AB ,起点A (4,0),终点B (0,4) ???+-=-+-=-=++12)1(122211i i i i i i i X F R Y X F X X ???++=-++=+=++12)1(122211i i i i i i i Y F R Y X F Y Y ???+-=--+=-=++12)1(122211i i i i i i i Y F R Y X F Y Y ???++=-++=+=++12)1(122211i i i i i i i X F R Y X F X X b a b a Y Y X X N -+-=b a x X X N -= b a y Y Y N -=

程序设计大赛试题及答案

试题 1、数学黑洞(程序文件名maths.c/maths.cpp) 【问题描述】 任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。 【输入】 一行,一个4位正整数n(1000< n<9999) 【输出】 掉进黑洞的步数 输入 1234 输出 3 2、进制转换(程序文件名conver.c/conver.cpp) 【问题描述】 任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。 【输入】 一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。 【输出】 转换后的数 【输入输出样例】 输入 255 8 输出 377 3、分数线划定(程序文件名score.c/score.cpp) 【问题描述】 公务员选拔工作正在 A 市如火如荼的进行。为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 【输入】 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。输入数据保证m*150%向下取整后小于等于n。 第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。 【输出】 第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。 从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 【输入输出样例】 输入 6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88

基于FPGA的逐点比较圆弧插补算法设计

二○一三届毕业设计 基于FPGA逐点比较圆弧插补算法设计 学院:电子与控制工程学院 专业:电子科学与技术 姓名:…….. 学号:……… 指导教师:…….. 完成时间:2013年5月 二〇一三年五月

摘 要 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 摘 要 本课题主要是研究基于VHDL 实现数控系统中的逐点比较圆弧插补,要求圆弧运动过程平滑,在各象限能顺利过渡,并有较小的设计误差,能与运动控制部分很好的集成,实现较高的切割频率。 本课题采用QuartusII 软件来调试程序,并进行波形仿真。主要的工作如下: 1) 理解数控系统中逐点比较圆弧插补算法的原理及其实现方法; 2) 通过硬件描述语言VHDL 在FPGA 上实现上述算法; 3) 完成圆弧插补的仿真与测试。 关键词:VHDL ,FPGA ,逐点比较法,QuartusII

ABSTRACT ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ABSTRACT This topic mainly studies based on VHDL realization of point by point comparison circular arc interpolation in nc system, the movement for arc process smooth, in each quadrant can smooth transition, and a relatively small design error, can very good integration with motion control part, realize the high frequency of cutting. This subject adopts software QuartusII to debug program and waveform simulation. The main work is as follows: 1. Understand CNC system the principle of point by point comparison in circular arc interpolation algorithm and its realization method 2. Through the hardware description language VHDL FPGA to realize the above algorithms. 3. Finish arc interpolation of simulation and test KEY WORDS : VHDL, FPGA, point-by-point comparison, QUARTUS II

逐点比较法插补实验报告

实验报告 实验内容:逐点比较法直线和圆弧插补2011年9月25日 院系:物科院班级:085 学号:07080518 姓名:陈实 实验目的: 利用逐点比较法的插补原理,编写直角坐标系下的直线、圆弧插补程序,观察屏幕上仿真的运动轨迹,掌握逐点比较法的插补原理。 实验原理: 逐点比较发是基于动点与理想曲线院函数的比较来实现插补的。逐点比较法的插补过程,每走一步要进行一下四个步骤: 偏差判别:根据偏差值确定刀具相对加工曲线的位置 坐标进给:根据偏差判别的结果,决定控制线沿哪个坐标进给一步以接近曲线 偏差计算:计算新加工店相对曲线的偏差,作为下一步偏差判别的依据 终点判别:判别是否到达终点,未到达终点则返回第一步继续插补,到终点则停止 1、逐点比较法直线插补原理: 逐点比较法在第一象限的直线插补原理如下图所示,其他象限情况可依次类推。 现加工OE直线,如果刀具动点在OE直线上方或在线上,则令刀具沿X正方向进给一步;若刀具动点在OE直线下方,则令刀具沿Y轴正方向进给一步,如此循环直到加工到E点。判别刀具动点的位置根据偏差函数判别公式: 根据这个公式可以推到出两种不同情况下的地推公式:

对于插补终点的判别,可以采用单向的计数长度法,即:取计数长度M等于Xe、Ye中的大者,并设该坐标方向为计数方向。插补时,仅在该方向上产生进给时,计数长度减一。图1的逐点比较法中,工作循环的结束条件就是M减为0. 2、逐点比较法圆弧插补原理: 逐点比较法在第一象限的圆弧插补原理如图所示,其他象限可一次类推: 对于第一象限的逆圆弧,如果动点在圆弧的外侧则令刀具动点沿X轴负方向进给一步。如果动点在圆弧的内侧则令刀具沿Y轴正方向进给一步。 圆弧的偏差计算公式为: 根据这个公式同样可推导出圆弧插补的两种不同情况下的递推公式: 对于插补终点的判别,同样可以采用单向的计数长度法,不过对于圆弧,计数的方向并不取决于终点坐标中的大者,而是取决于圆弧终点处。 逐点比较法插补中需要编写插入部分流程图:

逐点比较法直线插补圆弧插补实例

逐点比较法直线插补(1)偏差函数构造 对于第一象限直线OA上任一点(X,Y):X/Y=Xe/Ye 若刀具加工点为Pi(Xi,Yi),则该点的偏差函数F i 可表示 为 : 若Fi=0,表示加工点位于直线上; 若Fi>0,表示加工点位于直线上方; 若Fi<0,表示加工点位于直线下方。 (2)偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi=YiXe-XiYe 若Fi>=0,规定向+X 方向走一步 Xi+1=Xi+1 Fi+1=XeYi–Ye(Xi+1)=Fi–Ye 若Fi<0,规定+Y方向走一步,则有 Yi+1=Yi+1 Fi+1=Xe(Yi+1)-YeXi=Fi+Xe (3)终点判别 直线插补的终点判别可采用三种方法。 1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。(4)例 对于第一象限直线OA,终点坐标Xe=6,Ye=4,插补从直线起点O开始,故F0=0。终点判别是判断进给总步数 N=6+4=10,将其存入终点判别计数器中,每进给一步减1,若N=0,则停止插补。

逐点比较法圆弧插补 (1)偏差函数构造 任意加工点Pi(Xi,Yi),偏差函数Fi可表示为若Fi=0,表示加工点位于圆上; 若Fi>0,表示加工点位于圆外; 若Fi<0,表示加工点位于圆内 (2)偏差函数的递推计算 1)逆圆插补 若F≥0,规定向-X方向走一步 X i1X i1 F i1(X i1)2Y i 2R2F i2X i1 若Fi<0,规定向+Y方向走一步 Y i1Y i1 F i1X i2(Y i1)2R2F i2Y i1

直线及圆弧插补程序--逐点比较法

此程序是根据《微型计算机控制技术》(第二版)清华大学出版社 第三章数字控制技术——3.2插补原理中的3.2.1逐点比较法的直线插补,3.2.2逐点比较法圆弧插补编写的。其中的变量定义,原理依据均来源于此,如有疑问,请参考书中的讲解。尤其是例子,以下两个程序的第一个运行图均与例题中的一致。 一、四象限直线插补程序 分别加工第一、二、三、四象限直线,起点均为(0,0),终点坐标为(NX,NY),进行插补计算。 程序中(NX,NY)为终点坐标;NXY为总步数;XOY=1,2,3,4,分别为第一、二、三、四象限; ZF=1,2,3,4,分别代表+x,-x,+y,-y走步方向;FM为加工点偏差,初值为0。 源程序: # include "stdio.h" # include "string.h" # include "math.h" void main() { int NX,NY,NXY,BS,XOY,ZF; int FM=0; char a[10]="+X",b[10]="-X",c[10]="+Y",d[10]="-Y",e[10]; printf("\n\n请输入NX,NY\n"); scanf("%d %d",&NX,&NY); {if(NX>0) if(NY>0)

XOY=1; else XOY=4; else if(NY>0) XOY=2; else XOY=3;} printf("终点在第%d象限\n",XOY); printf("\n 步数坐标进给偏差计算终点判断\n\n"); BS=fabs(NX) + fabs(NY); for(NXY= fabs(NX) + fabs(NY)-1;NXY>=0;NXY--) { if(FM>=0) {if(XOY==1||XOY==4) { ZF=1; strcpy(e,a);} else { ZF=2; strcpy(e,b); } FM=FM-fabs(NY); printf(" %d %s FM=%d NXY=%d\n\n",BS-NXY,e,

逐点比较法直线插补

§2—1 逐点比较法 逐点比较法是我国数控机床中广泛采用的一种插补方法,它能实现直线、圆弧和非圆二次曲线的插补,插补精度较高。 逐点比较法,顾名思义,就是每走一步都要将加工点的瞬时坐标同规定的图形轨迹相比较,判断其偏差,然后决定下一步的走向,如果加工点走到图形外面去了,那么下一步就要向图形里面走;如果加工点在图形里面,那么下一步就要向图形外面走,以缩小偏差。这样就能得出一个非常接近规定图形的轨迹,最大偏差不超过一个脉冲当量。 在逐点比较法中,每进给一步都须要进行偏差判别、坐标进给、新偏差计算和终点比较四个节拍。下面分别介绍逐点比较法直线插补和圆弧插补的原理。 一、 逐点比较法直线插补 如上所述,偏差计算是逐点比较法关键的一步。下面以第Ⅰ象限直线为例导出其偏差计算公式。 图 2-1 直 线 差 补 过 程 e ) O Y 图2-1 直线插补过程 点击进入动画观看逐点比较法直线插补

如图2—1所示,假定直线 OA 的起点为坐标原点,终点 A 的坐标为 e e i j A(x ,y ),P(x ,y )为加工点,若P 点正好处在直线 OA 上,那么下式成立: e j i e x y - x y 0= 若任意点 i j P(x ,y )在直线 OA 的上方(严格地说,在直线 OA 与y 轴 所成夹角区域内),那么有下述关系成立: j e i e y y x x > 亦即: e j i e x y - x y 0> 由此可以取偏差判别函数 ij F 为: ij e j i e F x y - x y = 由 ij F 的数值(称为“偏差” )就可以判别出P 点与直线的相对位置。即: 当 ij F =0时,点 i j P(x ,y )正好落在直线上; 当 ij F >0时,点 i j P(x ,y )落在直线的上方; 当 ij F <0时,点 i j P(x ,y )落在直线的下方。 从图2—1看出,对于起点在原点,终点为A ( e e x ,y )的第Ⅰ象限直线OA 来说,当点P 在直线上方(即 ij F >0)时,应该向+x 方向发一个脉冲,使机床 刀具向+x 方向前进一步,以接近该直线;当点P 在直线下方(即 ij F <0)时, 应该向+y 方向发一个脉冲,使机床刀具向+y 方向前进一步,趋向该直线;当点P 正好在直线上(即 ij F =0)时,既可向+x 方向发一脉冲,也可向+y 方向发一 脉冲。因此通常将 ij F >0和 ij F =0归于一类,即 ij F ≥0。这样从坐标原点开始,

逐点比较法直线插补圆弧插补实例

N=6+4=10,将其存入终点判别计数器中,每进给一步减 1,若N=0,则停止插补。 (1)偏差函数构造 对于第一象限直线 0A 上任一点(X,Y): X/Y = Xe/Ye Pi (Xi , Yi ),则该点的偏差函数 Fi 可表示为: (2 )偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi =Yi Xe -XiYe 若Fi>=0,规定向 +X 方向走 Xi+1 = Xi +1 Fi+1 = XeYi 讦e(Xi +1)=Fi 讦e 若Fi<0,规定+Y 方向走一步,则有 Yi+1 = Yi +1 Fi+1 = Xe(Yi +1)-YeXi =Fi +Xe (3 )终点判别 直线插补的终点判别可采用三种方法。 逐点比较法直线插补 若刀具加工点为 若 Fi= 0, 表示加工点位于直线上; 若 Fi> 0, 表示加工点位于直线上方; 若 Fi< 0, 表示加工点位于直线下方。

1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。 (4)例 对于第一象限直线0A终点坐标Xe=6 ,Ye=4,插补从直线起点0开始,故F0=0。终点判别是判断进给总步数

10 4 逐点比较法圆弧插补(1)偏差函数构造 任意加工点Pi (Xi , Yi),偏差函数Fi可表示为 若Fi=0,表示加工点位于圆上; 若Fi >0,表示加工点位于圆外; 2

若Fi<0,表示加工点位于圆内 (2)偏差函数的递推计 算 1)逆圆插补 若F> 0,规定向-X方向走一步X i 1 X i 若Fi<0,规定向+Y方向走一步 2)顺圆插补 若Fi > 0,规定向-Y方向走一步若Fi<0,规定向+y方向走一步 (3 )终点判 别 1 )判断插补或进给的总步数: 2)分别判断各坐标轴的进给步数: (4)例F i Y i F i Y i F i X i 1 F i 1 N x 对于第一象限圆弧AB,起点A(4,0), (X i Y i X i2 Y i X i2 X i (X i X a X a 终点 1 1)2 (Y i (Y i 1 1)2 X b X b B (0, Y i2 1)2 1)2 Y i2 Y a R2 R2 R2 R2 Y b N y F i F i F i F i Y a 2X i 2Y i 2Y i 2X i Y b

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

宿迁学院 课程设计说明书 设计题目: 基于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时,即2 22 R Y X F i i -+=>0,动点落在圆外,则向(-X )轴方向进给一 步; 当F=0时,即2 22 R Y X F i i -+==0,动点正好落在圆上,约定向(-X)轴方向

逐点比较法——直线插补

电 子 教 案 § 逐点比较法——直线插补 一、概述 二 、直线插补 偏差判别: (1)动点m 在直线上: (2)动点m 在直线上方: (3)动点m 在直线下方: 偏差判别函数 坐标进给 动点m 在直线上: ,可沿+⊿x 轴方向,也可沿+⊿y 方向; 动点m 在直线上方: ,沿+⊿x 方向; 动点m 在直线下方: ,沿+⊿y 方向。 m e m e 0 y x x y -=m e m e 0 y x x y ->m e m e 0 y x x y -

新偏差计算 +⊿x 轴方向进给 +⊿y 轴方向进给 终点比较:用Xe +Ye 作为计数器,每走一步对计数器进行减 1计算,直到计数器为零为止。 m 1m 1e m 1e m e F y x x y F y +++=-=-m 1m e F F x +=+

教学程序教学内容及教学双边活动与 教学方法 导入 新课讲授 探究总结 在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具 与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的 进给方向,使刀具向减小误差的方向进给。其算法最大偏差不会超 过一个脉冲当量δ。 §逐点比较法——直线插补 一、概述 初称区域判别法,又称代数运算法或醉步式近似法。这种方法 应用广泛,能实现平面直线、圆弧、二次曲线插补,精度高。 每进给一步需要四个节拍: (1)偏差判别:判别加工点对规定图形的偏离位置,决定拖 板进给的走向。 (2)坐标进给:控制某个坐标工作台进给一步,向规定的图 形靠拢,缩小偏差。 (3)偏差计算:计算新的加工点对规定图形的偏差,作为下 一步判别的依据。 (4)终点判断:判断是否到达终点。若到达则停止插补,若 介绍 讲授 图示 分析 讲授法 理解 记忆

逐点比较插补算法设计

学院 毕业论文(设计) 2015 届机械设计制造及其自动化专业 13 班级 题目逐点比较插补算法设计 姓名学号 1 指导教师职称教授 二О一五年五月二十一日

摘要 逐点比较法是数控加工中常用的插补方法,通过控制刀具每次移动的位置与理想位置的误差函数进而实现零件加工,鉴于VB编程简单、直观,采用VB可以实现逐点比较插补原理的相关程序设计及加工过程虚拟化。插补技术是机床数控系统的核心技术,逐点比较法可以实现直线和圆弧插补算法,其算法的优劣直接影响零件直线和圆弧轮廓的加工精度和加工速度。文章在传统的逐点比较直线插补与圆弧插补算法的基础上,提出以八方向进给取代传统的四方向进给,研究了偏差最小的走步方向的实现方法,同时研究了保证数控机床坐标进给连续的偏差递推计算过程。结果表明,新算法可以提高零件轮廓的逼近精度且减少了插补计算次数,从而提高了零件直线和圆弧轮廓的加工精度和加工速度。 关键词 数控;插补;逐点比较;逼近;偏差函数 The algorithm design of point-to-point comparison Author: LI Zhiyuan Tutor: Chen Liangji Abstract Abstract: The algorithm of point-to-point comparison is a typical plugging method in processing of numerical control,manufacturing parts by controlling error function between the position the cutting tool moves to and the perfect program is simple and visual,which can visualize the programming and processing of The algorithm of point-to-point comparison. Interpolation technology is the core technology of machine tool’s CNC system. The algorithm of point-to-point comparison can achieve the algorithms of linear and circular algorithm of point-to-point comparison

逐点比较法直线插补原理的实现

武汉理工大学华夏学院 课程设计报告书 题目: 系名: 专业班级: 姓名: 学号: 指导教师: 2011 年 6 月14 日

摘要 本文主要讨论利用逐点比较法实现第一象限的直线插补。所谓逐点比较插补,就是刀具或绘图笔每走一步都要和给点轨迹上的坐标值进行比较,看这点在给点轨迹的上方还是下方,从而决定下一步的进给方向。对于本设计所要求的直线轨迹,如果该点在直线的上方,则控制步进电机向+X方向进给一步,如果该点在直线的下方,那么控制步进电机向+Y轴方向进给一步。如此,走一步、看一看,比较一次,决定下一步的走向,以便逼近给定轨迹,即形成逐点比较插补。 插补计算时,每走一步,都要进行以下四个步骤的计算过程,即偏差判别、坐标进给、偏差计算、终点判断。设计具体算法时,首先根据直线轨迹参数,计算出偏差计算公式及递推公式。由程序判断出偏差的正负号,从而决定坐标的进给方向,再根据递推公式计算出坐标进给后的偏差,若未到达终点,则返回偏差判别,如此循环。可以根据起点和终点的坐标位置,计算出总的进给步数Nxy,X或Y的坐标每进给一步,这个值就减一,若Nxy=0,就到达了终点,这就是终点判别的方法。

设计任务及要求 设计一个计算机控制步进电机系统,该系统利用PC 机的并口输出控制信号,其信号驱动后控制X 、Y 两个方向的三相步进电机转动,利用逐点比较法插补绘制出各种曲线。 1)设计硬件系统,画出电路原理框图; 2)定义步进电机转动的控制字; 3)推导出用逐点比较法插补绘制出下面曲线的算法; 4)编写算法控制程序线; 5)撰写设计说明书。 每人选一个曲线,曲线均为第一象限,屏幕左下角为坐标原点,箭头表示曲线绘制的方向,直线参数为:起点、终点坐标。圆弧参数为:起点、终点坐标和半径。 直线一: 直线二: 直线三 直线四 圆弧一 圆弧二 X Y O X Y O X Y O X Y O X Y O X Y O

逐点比较法直线插补代码VB

VB界面: 直线插补和圆弧插补的程序代码: Dim x1%, y1%, x2%, y2%, p! Dim Di As Integer Const PI = 3.14159 Private Sub cmdShow_Click() x1 = Val(Text1(0)): y1 = Val(Text1(1)) x2 = Val(Text1(2)): y2 = Val(Text1(3)) pic.Cls axis pic p = Val(Combo1.Text) cmdShow.Enabled = False If Option1.Value Then pic.Circle (x1, y1), 0.1, vbBlack pic.Circle (x2, y2), 0.1, vbBlack zhixian pic, x1, y1, x2, y2 ElseIf Option2.Value Then pic.Circle (x1, y1), 0.1, vbBlack

pic.Circle (x2, y2), 0.1, vbBlack If x1 ^ 2 + y1 ^ 2 = x2 ^ 2 + y2 ^ 2 Then yuanhu pic, x1, y1, x2, y2 Else MsgBox "ERROR!请重新输入!", vbCritical End If End If cmdShow.Enabled = True End Sub Private Sub zhixian(obj As Object, xi%, yi%, xj%, yj%) Dim x!, y! f = 0 x = xi: y = yi obj.Line (xi, yi)-(xj, yj), vbBlack obj.CurrentX = x obj.CurrentY = y n = (Abs(xj - xi) + Abs(yj - yi)) / p While n <> 0 If f >= 0 Then If xj <> xi Then x = x + (xj - xi) / Abs(xj - xi) * p Else y = y + (yj - yi) / Abs(yj - yi) * p End If f = f - Abs(yj - yi) Else If yj <> yi Then y = y + (yj - yi) / Abs(yj - yi) * p End If f = f + Abs(xj - xi) End If obj.Line -(x, y), vbRed n = n - 1 DoEvents For i = 1 To 2000000 * p Next i Wend End Sub Private Sub Form_Load() If App.PrevInstance Then End Combo1.Text = Combo1.List(6) pic.Height = 460 pic.Width = 460

逐点比较法第一象限直线圆弧插补

逐点比较法第一象限直线,圆弧插补编程 逐点比较法是以折线来逼近给定的轨迹,就是每走一步控制系统都要将加工点与给定的图形轨迹相比较,以决定下一步进给的方向,使之逼近加工轨迹。逐点比较法以折线来逼近直线或圆弧,其最大的偏差不超过一个最小设定单位。只要将脉冲当量取得足够小,就可以达到精度要求。逐点比较插补法在脉冲当量为0.01mm,系统进给速度小于3000mm/min时,能很好的满足要求。 一、逐点比较法直线插补 如下图所示设直线 oA 为第一象限的直线,起点为坐标原点o (0 , 0) ,终点坐标为, A( ) , P() 为加工点。 若 P 点正好处在直线 oA 上,由相似三角形关系则有

即 点在直线 oA 上方 ( 严格为直线 oA 与 y 轴正向所包围的区域 ) ,则有 即 若 P 点在直线 oA 下方 ( 严格为直线 oA 与 x 轴正向所包围的区域 ) ,则有图 3 — 1 逐点比较法第一象限直线插补 即 令 则有: ①如 ,则点 P 在直线 oA 上,既可向 +x 方向进给一步,也可向 +y 方 向进给一步;

②如,则点 P 在直线 oA 上方,应向 +x 方向进给一步,以逼近oA直线; ③如,则点 P 在直线 oA 下方,应向 +y 方向进给一步,以逼近 oA直 线一般将及视为一类情况, 即时,都向 +x 方向进给一步。 当两方向所走的步数与终点坐标相等时,停止插补。这即逐点比较法直线插补的原理。 对第一象限直线 oA 从起点 ( 即坐标原点 ) 出发,当 F 时, +x 向走一步;当 F<0 时,y 向走一步。 特点:每一步都需计算偏差,这样的计算比较麻烦。 递推的方法计算偏差: 每走一步后新的加工点的偏差用前一点的加工偏差递推出来。 采用递推方法,必须知道开始加工点的偏差,而开始加工点正是直线的起点,故。下面推导其递推公式。 设在加工点 P( ) 处,,则应沿 +x 方向进给一步,此时新加工点的坐标值为

数控原理第四象限逐点比较法直线插补程序

Private Sub Command1_Click() Picture1.ForeColor = vbBlack Picture1.DrawWidth = 2 Picture1.Line (500, 500)-(500, 5500) '坐标系 Picture1.Line (500, 500)-(5500, 500) Picture1.Line (500, 5500)-(460, 5400) '箭头 Picture1.Line (500, 5500)-(540, 5400) Picture1.Line (5500, 500)-(5400, 460) Picture1.Line (5500, 500)-(5400, 540) Picture1.Line (5850, 550)-(5750, 450) Picture1.Line (5850, 450)-(5750, 550) Picture1.Line (500, 5800)-(450, 5750) Picture1.Line (500, 5800)-(550, 5750) Picture1.Line (500, 5800)-(500, 5900) Picture1.Line (430, 5800)-(380, 5800) Picture1.ForeColor = vbRed Picture1.DrawWidth = 4 Picture1.Line (500, 500)-(500 + 400 * Int(Text3), 500 - 400 * Int(Text4)) Command2.Enabled = True 100 Text1.SetFocus End Sub Private Sub Command2_Click() Form1.Cls Dim k, m, j, l, n, F(20) As Integer m = 0 l = 0 k = 0 F(m) = 0 Picture1.ForeColor = vbGreen Picture1.DrawWidth = 3 j = Abs(Int(Text3)) + Abs(Int(Text4)) '总步数 Form1.CurrentX = 200 Form1.CurrentY = 200 Print "初始:进给方向" & "F(m)=0" & " Xe=" & Int(Text3) & " Y e=" & Int(Text4) & " ∑= " & j For n = 1 To j If F(m) >= 0 And j > 0 Then 'X方向进给 m = m + 1 '序号 l = l + 1 'X方向进给l加1 F(m) = F(m - 1) - Abs(Int(Text4)) Picture1.Line (500 + 400 * (l - 1), 500 + k * 400)-(500 + 400 * (l), 500 + k * 400)

相关文档
最新文档