当前位置:文档之家› 逐点比较插补原理的实现最新版

逐点比较插补原理的实现最新版

逐点比较插补原理的实现最新版
逐点比较插补原理的实现最新版

《微型计算机控制技术》课程设计报告

课题名称:逐点比较插补原理的实现姓名:章洪高

班级:自动化2班

学号:201320150211

指导老师:徐猛华

东华理工大学机械与电子工程学院

2016年6月

目录

1设计任务及要求 (1)

2方案设计及认证 (1)

3硬件设计原理 (2)

3.1硬件结构 (2)

3.2硬件电路图 (4)

3.3硬件原理 (5)

4软件系统 (7)

4.1软件思想 (7)

4.2流程图 (8)

4.3源程序 (10)

5调试记录及结果分析 (10)

5.1仿真界面设置 (10)

5.2调试记录 (10)

5.3结果分析 (12)

6心得体会 (13)

7参考资料 (14)

附录: (14)

1设计任务及要求

设计一个计算机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出如下曲线。

图1-1 第一象限逆圆弧

课程设计的主要任务:

1)在显示器上显示任意四位十进制数;

a、定义键盘按键:10个为数字键0~9;6个功能键:设置SET、清零CLR、确认、开始START、暂停、停止;

b、显示器上第一位显示次数,后三位显示每次行走的角度;

c、通过键盘的按键,设置X、Y轴插补的起始值;按START键启动步进电机开始转动,按SET键进行数据设置、按CLR键清零。

2)设计硬件系统,画出电路原理框图(要求规范);

3)定义步进电机转动的控制字;(不设计步进电机驱动电路与驱动程序)。

4)推导出用逐点比较法插补绘制出下面曲线的算法;

5)编写算法控制程序线;

6)撰写设计说明书。

2方案设计及认证

本次课程设计内容为设计一个单片机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动后控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。

第一象限逆弧如图2-1所示。

图2-1 第一象限逆圆弧

针对以上设计要求,采用单片机控制步进电机进行逐步逼近插补。

硬件方面,在显示器上显示任意四位数,可采用LCD1602显示,第一位显示次数,即在插补过程中每走一步步数加1在第一位显示出来10个数字键采用矩阵键盘,用矩阵键盘扫描的方式判断哪个键按下,以此来设定X,Y的初始坐标。用独立键盘做其功能键,K1用作设置初始坐标,K2坐标清零,K3插补启动,K4插补暂停,K5停止。主控制器采用STC90单片机做控制,硬件简单,控制方便。

插补算法-逐点比较法是以阶梯折线来逼近直线或圆弧等曲线,它与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,因此只要把脉冲当量(每走一步的距离即步长)取得足够小,就可以达到精度的要求。以下为课程设计要求插补的第一象限逆圆弧。图2-1为第一象限逆圆弧。

单片机程序软件的设计主要有矩阵键盘和独立键盘扫描程序的设计,人机交互界面采用1602液晶做菜单显示器,设计到显示菜单程序的编写。调试及其结果分析,其中包括界面设置,调试记录以及结果分析三个方面,对软件程序进行调试和完善,实现步进电机插补原理。

3硬件设计原理

3.1硬件结构

步进电机通过51单片机进行控制,进而进行数模转换,由伺服电机驱动电路驱动伺服电机,带动工作台进行逐步比较插补,逐步逼近给定轨迹。流程如图3.1所示。

图3-1 开环数字程序控制

随着集成电路技术的发展,开环数字程序控制得到了广泛的应用,如各类数控机床、线切割机低速小型数字绘图仪等,它们都是利用开环数字程序控制原理实现控制的设备。其结构亦如图3-1所示。这种结构没有反馈检测元件,工作台由步进电机驱动。步进电机接收驱动电路发来的指令作相应的运动,把刀具移动到与指令脉冲相当的位置,至于刀具是否到达了指令脉冲规定的位置,它不作任何检查,因此这种控制的可靠性和精度基本上由步进电机和传动装置来决定。

图3-2为两台三相步进电机控制接口示意图,选定由单片机的P2.0、P2.1、P2.2通过驱动电路来控制x轴步进电机,由P2.3、P2.4、P2.5通过驱动电路来控制y轴步进电机,并假定数据输出为“1”时,相应的绕组通电;数据输出为“0”时,相应绕组断电。

图3-2 两台三相步进电机控制接口示意图

步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即

可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。以下为步进电机三相六拍工作方式,其输出字

表如表3-1。

表3-1步进电机三相六拍工作方式输出字表

3.2硬件电路图

图3-3硬件电路原理图

3.3硬件原理

本次课程设计内容为设计一个51单片机控制步进电机系统,该系统利用单片机机的I/O口输出控制信号,其信号驱动后控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。、

逐点比较法是以阶梯折线来逼近直线或圆弧等曲线,它与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,因此只要把脉冲当量(每走一步的距离即步长)取得足够小,就可以达到精度的要求。以下为课程设计要求插补的第一象限逆圆弧。图3-4为第一象限逆圆弧。

图3-4 第一象限逆圆弧

以下就以第一象限为例进行分析。

(1)偏差计算公式

设要加工逆圆弧AB,圆心在原点,起点坐标A(x0,Y0),终点坐标(xe,Ye),半径R。瞬时加工点M(xm,Ym),它距圆心Rm,则可用R与Rm来反映偏差。

由图3-2可知:

由此定义偏差公式为:

若Fm=0,M点在圆弧上;若Fm>0,M点在圆弧外;若Fm<0,M点在圆弧内。

2

2

2Ym

Xm

Rm+

=

2

2

2Yo

Xo

R+

=

2

2

2

2

2R

Ym

Xm

R

Rm

Fm-

+

=

-

=

第一象限逆圆弧的插补原理是:从圆弧起点出发,若Fm>=0,沿-X方向走一步,并计算新偏差;当Fm<0时,沿+Y方向走一步,并计算新偏差。如此一步一步计算与进给,并在到达终点时停止计算。

但以上Fm计算式比较复杂,可以考虑用递推公式:

(Xm和Ym均取绝对值运算)

①当Fm≥0时,Xm+1=Xm-1

Ym+1=Ym

Fm+1=Fm-2Xm+1

②当Fm<0时,Xm+1=Xm

Ym+1=Ym+1

Fm+1=Fm+2Ym+1

(2)终点判断方法

①设置Nx,NY两个计数器,初值设为|Xe-Xo|,|Ye-Yo|在不同的坐标轴进给时对应的计数器减一,两个计数器均减到零时,到达终点。

②用一个计数器NxY ,初值设为Nx+NY,无论在哪个坐标轴进给,Nxy 计数器减一,计数器减到零时,到达终点。

(3) 插补计算过程

圆弧插补计算比直线插补计算过程要多一个环节,即要计算加工瞬时坐标。故圆弧插补计算为五个步骤即偏差判断、坐标进给、偏差计算、坐标计算、终点判断。

通过以上的分析计算,可以得出以下四个象限的顺圆弧(SR)和逆圆弧(NR)的圆弧插补计算公式和进给方向。其插补进算公式及其进给方向如表3-2所示。

表3-2 圆弧插补计算公式和进给方向

由于本次课程设计的设计要求为第一象限逆圆弧,以逆圆弧为例分析,通过以上计算结果分析,通过绘图,的出相应四个象限圆弧插补的对称关系。以下为四个象限圆弧插补的对称关系,当Fm大于等于零或者小于零时,分别对应的偏差判别,偏差计算,进给方向,坐标计算等等。

以下为根据表3-2得出的相应四个象限的插补对应关系,从图中可以推出其对应的具体进给方向,如图3-4所示。

图3-5 四个象限逆圆弧插补的对称关系

4软件系统

4.1软件思想

本次课程设计圆弧插补控制系统实时调试采用51单片机做主控制器,使用矩阵键盘、独立键盘和1602液晶达到人机交互、坐标输入和插补信息实时显示的目的,软件的设计制作包括如下几方面:

1.矩阵键盘扫描和键值显示函数

2.独立键盘扫描和坐标设置及插补信息显示菜单函数

3.插补计算函数。

4.步进电机驱动运行函数。

4.2流程图

主程序的流程图如下:

按键子程序如下:

图3-6 下位机调试软件设计流程图4.3源程序

如附录所示

5调试记录及结果分析

5.1硬件调试界面设置

1602液晶显示界面设置

KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值。

图5-1 坐标输入界面设置5.2调试记录

插补过程信息显示调试

实验说明: KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值,KEY3插补开始按键,KEY4插补暂停,KEY5插补停止。

5.3结果分析

通过以上界面设置,通过相应参数输入,首先进行起点坐标输入,包括起点x 轴坐标输入及其y 轴坐标输入,进而进行终点坐标输入,其中包括终点x 轴坐标输入及其y 轴坐标输入。进而进行圆弧插补计算并显示进给方向。

以上图5-2所示步进电机插补过程调试,在插补中实现起点坐标为(2 ,1),终点坐标为(2 ,5)的圆弧插补。最终经1602液晶屏显示插补信息得,进给方向依次为+Y ,+X,+X,+Y ,+Y ,-X,+Y ,-X 。下面再理论分析进给方向是否正确:

根据步进电机插补原理,偏差判别是为:

该圆弧为第一象限圆弧,第一象限圆弧插补Fm 判别式,有如下关系:

1.当Fm ≥0时,Xm+1=Xm-1

Ym+1=Ym Fm+1=Fm-2Xm+1

2.当Fm <0时,Xm+1=Xm

Ym+1=Ym+1 Fm+1=Fm+2Ym+1

由起点及其终点,可得终点判断Nxy=8,另外令圆心(2 ,3)为新建坐标系原点,可得一下圆弧插补过程,如表5-1所示。

表5-1 圆弧插补计算过程

2

2222R Ym Xm R Rm Fm -+=-=

根据以上圆弧插补过程和进给方向,可知单片机实现的圆弧插补控制系统实现了完整并且正确的圆弧插补过程。

6心得体会

微机控制原理技术是一门综合性的课程,任何一个计算机系统都是一个复杂的整体,学习微机控制原理是要涉及到整体的每一部分。通过讨论其控制原理时又要涉及到各部件之间控制的工作原理,不仅较深入理解计算机控制的工作原理。所以,在循序渐进的课堂教学过程中,我有时候会处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。

学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微机基本原理的同时,必须学会各种控制技术的应用,其创造性劳动在于如何用计算机的有关技术实现计算机的控制,设计实用的电路和系统,再配上相应的应用程序,完成各种控制应用项目。

这次课程设计并不是很难,主要的困难来自对单片机按键程序的处理和1602菜单显示界面的设计。功夫不负有心人,经过团队中2个人的合作和努力,最后对实验的原理有了更清晰的认识。虽然设计中并的功能并不是十分完善,但是就系统功能来说,基本完成了课程设计要求。但是通过平时课程的学习,又通过本次课程设计对它的再一次认真努力学习和操作,巩固了该门课程的知识和应用,对我们以后的学习也会有帮助的。

本次还遇到一个困难,便是对于上位机开发VB使用的不熟悉。对于VB的应用,仅仅限于大学一年级的简单学习,这次课程设计中对于步进电机的软件仿真,VB中的很多不懂的地方,通过看书学习和向同学请教,实现了圆弧插补的上位机仿真软件设计。本次课程设计的过程中,对于VB的再一次重温和理解,相信对于今后的学习也有很大的帮助。至于下位机(单片机)调试的过程中花了很多时间,由于本课程涉及到很多按键,又有很多显示内容,所以在硬件的选型上就花费了一些时间,后期的按键和1602显示程序的调试也花费了不少功夫才把显示菜单和按键功能的程序调试出来。

总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,

微机控制原理课程上讲到的各种控制技术,本次设计尤其深入了对步进电机插补原理的理解,熟悉了VB程序的编写过程和51单片机人机界面程序的编写、运行过程,最后还提高了自己的动手能力。

7参考资料

[1]郑学坚,周斌微型计算机原理与应用清华大学出版社

[2]于海生微型计算机控制技术清华大学出版社

[3]沈美明,温冬婵 IBM-PC汇编语言程序设计清华大学出版社

[4]何立民单片机应用系统设计北京航空航天大学出版社

附录:

附件一

下位机调试(单片机)主程序清单

/*******************************************************************************

*

* 东华理工大学

----------------------------------------------------------------------------------------------------------------------

* 实验名: 逐点比较插补控制1602显示

* 实验说明: KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值,KEY3插补开始按键,KEY4插补暂停

* 连接方式: 见连接图

* 注意:

*******************************************************************************/

/*******************************************************************************

*

* 东华理工大学

--------------------------------------------------------------------------------

* 实验名: 逐点比较插补控制1602显示

* 实验说明: KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值,KEY3插补开始按键,KEY4插补暂停

* 连接方式: 见连接图

* 注意:

*******************************************************************************/

#include

#include"lcd.h"

#include"math.h"

//--定义使用的IO口--//

#define GPIO_KEY P1

sbit K1=P2^0; //设置起始点坐标按键

sbit K2=P2^1; //坐标清零按键

sbit K3=P2^2; //插补开始按键

sbit K4=P2^3; //插补暂停按键

sbit K5=P2^4; //插补停止按键

//--定义全局变量--//

unsigned char R; //圆弧半径设置为变量

unsigned char PuZh[13]="key value is:";

unsigned char PuZi[16]="S: X0Y0 E: X0Y0";

unsigned char PuZj[16]="Times : ";

unsigned char KeyValue,STx,STy,EDx,EDy; //键值变量,起始坐标和终点坐标变量设置unsigned char flag=0,flag_Chabu;

//用来存放读取到的键值

unsigned char k1num=0; //存放按键K1按下的次数,初始化为0

//--声明全局函数--//

void NumberKeyScan(void); //(数字)矩阵按键扫描函数

void MenuKeyScan(void); //(菜单)独立按键扫描函数

void Delay10ms(unsigned int c); //10毫秒延时函数,误差0us

void MotorStart(void); //插补显示控制函数

void BanyuanChabu_Count(unsigned char STx,unsigned char STy,unsigned char EDx,unsigned char EDy);

//插补计算函数

/*******************************************************************************

* 函数名: main

* 函数功能: 主函数

* 输入: 无

* 输出: 无

*******************************************************************************/

void main(void)

{

unsigned char i;

LcdInit();

LcdWriteCom(0x80);

for(i=0; i<12; i++)

{

LcdWriteData(PuZh[i]);

}

LcdWriteCom(0x80+0x40);

for(i=0;i<15;i++)

{

LcdWriteData(PuZi[i]);

}

while(1)

{

NumberKeyScan(); //按键键值扫描计算函数

MenuKeyScan(); //菜单按键扫描函数}

}

/******************************************************************************* * 函数名: NumberKeyScan

* 函数功能: 检测有按键按下并读取键值

* 输入: 无

* 输出: 无

*******************************************************************************/

void NumberKeyScan(void)

{

unsigned char i=0;

char a = 0;

GPIO_KEY=0x0f;

if(GPIO_KEY!=0x0f) //读取按键是否按下

{

Delay10ms(1); //延时10ms进行消抖

if(GPIO_KEY!=0x0f) //再次检测键盘是否按下

{

//测试列

GPIO_KEY=0X0F;

switch(GPIO_KEY)

{

case(0X07): KeyValue=0;break;

case(0X0b): KeyValue=4;break;

case(0X0d): KeyValue=8;break;

case(0X0e): KeyValue=12;break;

}

//测试行

GPIO_KEY=0XF0;

switch(GPIO_KEY)

{

case(0X70): KeyValue=KeyValue+3;break;

case(0Xb0): KeyValue=KeyValue+2;break;

case(0Xd0): KeyValue=KeyValue+1;break;

case(0Xe0): KeyValue=KeyValue;break;

}

while((a<50) && (GPIO_KEY!=0xf0)) //检测按键松手检测

{

Delay10ms(1);

a++;

}

}

}

if(flag==0)

{

LcdWriteCom(0x80+13); //设置键值显示坐标

if(KeyValue < 10)

{

LcdWriteData('0' + KeyValue);

}

else

{

LcdWriteData('7' + KeyValue); //A的ASCII码的前10位是7,所以用7做基数}

}

}

void MenuKeyScan(void)

{

unsigned char i=0;

if(K3==0)

{

Delay10ms(1);

if(K3==0) //确认插补开始键按下

{

while(!K3); //按键释放

flag_Chabu=0; //插补停止标志位清零

LcdWriteCom(0x01);

flag=1;

MotorStart();

}

}

if(K2==0)

{

Delay10ms(1);

if(K2==0) //确认清零键按下

{

while(!K2); //按键释放

KeyValue=0;

LcdWriteCom(0x80+0x40+4);

//LcdWriteCom(0x0f);

STx=KeyValue; //起点坐标X值清零

LcdWriteData('0' + STx);

LcdWriteCom(0x80+0x40+6);

STy=KeyValue; //起点坐标Y值清零

LcdWriteData('0' + STy);

LcdWriteCom(0x80+0x40+12);

EDx=KeyValue; //终点坐标X值清零

LcdWriteData('0' + EDx);

LcdWriteCom(0x80+0x40+14);

EDy=KeyValue; //终点坐标Y值清零

LcdWriteData('0' + EDy);

}

}

if(K1==0)

{

Delay10ms(1);

{

if(K1==0)

{

//LcdWriteCom(0x01);

k1num++; //设置键按下次数记录

while(!K1); //释放确认

if(flag==1)

{

LcdWriteCom(0x01);

LcdWriteCom(0x80);

for(i=0; i<12; i++)

{

LcdWriteData(PuZh[i]);

}

LcdWriteCom(0x80+0x40);

for(i=0;i<15;i++)

{

LcdWriteData(PuZi[i]);

}

}

flag=0; //插补计算标志位清0

if(k1num==1) //起始点X坐标设置

{

LcdWriteCom(0x80+0x40+4);

//LcdWriteCom(0x0f);

STx=KeyValue;

LcdWriteData('0' + STx);

}

if(k1num==2) //起始点y坐标设置

{

插补运动(逐点比较法)

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

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

南昌航空大学实验报告 年月日 课程名称:数控技术实验名称:逐点比较法插补原理 班级:姓名:同组人: 指导老师评定:签名: 一、实验的目的与要求 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设计任务及要求 (1) 2方案比较及认证 (2) 3设计原理 (4) 3.1硬件原理 (4) 3.2硬件原理 (5) 4软件系统 (9) 4.1软件思想 (9) 4.2流程图 (9) 4.3源程序 (9) 5调试记录及结果分析 (10) 5.1界面设置 (10) 5.2调试记录 (10) 5.3结果分析 (11) 6心得体会 (13) 7 参考资料 (14) 附录 (15)

1设计任务及要求 设计一个计算机控制步进电机系统,该系统利用PC 机的并口输出控制信号,其信号驱动后控制X 、Y 两个方向的三相步进电机转动,利用逐点比较法插补绘制出如下曲线。 课程设计的主要任务: 1.设计硬件系统,画出电路原理框图; 2.定义步进电机转动的控制字; 3.推导出用逐点比较法插补绘制出下面曲线的算法; 4.编写算法控制程序,参数由键盘输入,显示器同时显示曲线; 5. 撰写设计说明书。课程设计说明书应包括:设计任务及要求;方案比较及认证;系统滤波原理、硬件原理,电路图,采用器件的功能说明;软件思想,流程,源程序;调试记录及结果分析;参考资料;附录:芯片资料,程序清单;总结。 X Y O

2方案比较及认证 本次课程设计内容为设计一个计算机控制步进电机系统,该系统利用PC 机的并口输出控制信号,其信号驱动后控制X 、Y 两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。数字程序控制主要应用于机床的自动控制,如用于铣床、车床、加工中心、以及线切割等的自动控制中。 采用数字程序控制的机床叫数控机床,它能加工形状复杂的零件、加工精度高、生产效率高、便于改变加工零件品种等优点,是实现机床自动化的一个重要发展方向。本次课程设计采用逐点比较法插补原理以及作为数字程序控制系统输出装置的步进电机控制技术进行第一象限圆弧插补。第一象限圆弧如图2-1所示。 图2-1 第一象限逆圆弧 针对以上设计要求,采用步进电机插补原理进行逐步逼近插补。 硬件方面,步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 逐点比较法是以阶梯折线来逼近直线或圆弧等曲线,它与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,因此只要把脉冲当量(每走一步的距离即步长)取得足够小,就可以达到精度的要求。以下为课程设计要求插补的第一象限逆圆弧。图3-3为第一象限逆圆弧。 X Y O

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

逐点比较法直线插补 (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 -=

逐点比较法插补实验报告

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

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

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

大连民族学院本科毕业设计(论文) 逐点比较法插补程序程序设计与运行 模拟 学院(系):机电信息工程学院_____ 专业:机械设计制造及其自动化__ 学生姓名: _________ 指导教师:李文龙 __________ 评阅教师:_________________________ 完成日期:_________________________

大连民族学院

摘要 在数控编程时,一般仅提供描述该线形所必须的相关参数,但为了满足几何零件尺寸精度要求,必须在刀具(或工件)运动过程中实时计算出满足线形和进给速度要求的在起点和终点之间的若干中间点,所以就有了插补。 本设计主要阐述了逐点比较法的基本原理,在四个象限直线、圆弧插补的插补原理以及如何实现。重点研究了逐点比较法的基本算法,控制程序的原理框图,对逐点比较法做了详细的研究,掌握基本的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

逐点比较法直线插补

§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。这样从坐标原点开始,

基于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

逐点比较法——直线插补

电 子 教 案 § 逐点比较法——直线插补 一、概述 二 、直线插补 偏差判别: (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)终点判断:判断是否到达终点。若到达则停止插补,若 介绍 讲授 图示 分析 讲授法 理解 记忆

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

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

逐点比较插补原理的实现最新版

《微型计算机控制技术》课程设计报告 课题名称:逐点比较插补原理的实现姓名:章洪高 班级:自动化2班 学号:201320150211 指导老师:徐猛华 东华理工大学机械与电子工程学院 2016年6月

目录 1设计任务及要求 (1) 2方案设计及认证 (1) 3硬件设计原理 (2) 3.1硬件结构 (2) 3.2硬件电路图 (4) 3.3硬件原理 (5) 4软件系统 (7) 4.1软件思想 (7) 4.2流程图 (8) 4.3源程序 (10) 5调试记录及结果分析 (10) 5.1仿真界面设置 (10) 5.2调试记录 (10) 5.3结果分析 (12) 6心得体会 (13) 7参考资料 (14) 附录: (14)

1设计任务及要求 设计一个计算机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出如下曲线。 图1-1 第一象限逆圆弧 课程设计的主要任务: 1)在显示器上显示任意四位十进制数; a、定义键盘按键:10个为数字键0~9;6个功能键:设置SET、清零CLR、确认、开始START、暂停、停止; b、显示器上第一位显示次数,后三位显示每次行走的角度; c、通过键盘的按键,设置X、Y轴插补的起始值;按START键启动步进电机开始转动,按SET键进行数据设置、按CLR键清零。 2)设计硬件系统,画出电路原理框图(要求规范); 3)定义步进电机转动的控制字;(不设计步进电机驱动电路与驱动程序)。 4)推导出用逐点比较法插补绘制出下面曲线的算法; 5)编写算法控制程序线; 6)撰写设计说明书。 2方案设计及认证 本次课程设计内容为设计一个单片机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动后控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。 第一象限逆弧如图2-1所示。

逐点比较插补算法设计

学院 毕业论文(设计) 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

逐点比较法插补的连续轨迹控制设计

综合设计课程设计设计要求 1 设计要求 1.1 设计要求 (1)设计出逐点比较法插补软件流程图; (2)编写出逐点比较法插补程序; (3)要求用软件能够实现任意象限圆弧(G03)的插补计算; (4)要求软件能够处理特殊轮廓的插补,例如坐标中任意圆弧等; (5)插补结果要求能够以图形模拟进行输出。 2 设计目的 2.1 设计目的 (1)了解连续轨迹控制数控系统的组成原理; (2)了解逐点比较法插补的基本原理; (3)掌握逐点比较法插补的软件实现方法。 3 总体方案比较 3.1 各多种方案的特点 第一:采用逐点比较法插补。逐点比较法的基本原理是被控对象在按要求的轨迹运动时,每走一步都要与规定的轨迹进行比较,由此结果决定下一步移动的方向。逐点比较法既可以作直线插补又可以作圆弧插补。这种算法的特点是,运算直观,插补误差小于一个脉冲当量,输出脉冲均匀,而且输出买成速度变化小,调节方便,因此在两坐标数控机床中应用较为普遍 第二:数学积分法插补。又称为微分分析法。这种插补方法可实现一次、二次、甚至高次曲线的插补,也可以实现多坐标联动控制。只要输入不多的几个数据,就能加工出圆弧等形状较为复杂的轮廓曲线。作直线插补时,脉冲分配也较均匀。 第三:数据采样插补。数据采样插补实际上是一种粗插补过程,它所产生的微小线段仍然比较大,必须进一步对其密化(即精插补)。粗插补算法比较复杂,

综合设计课程设计多CPU结构CNC系统硬件原理图 大多用高级语言编制;精插补算法比较简单,多用汇编语言或硬件插补器实现。 3.2 方案选择 根据课题要求,对逆圆插补。根据两种方案的比较,都是很好的方法,但由于圆是二次,用采用逐点比较法插补进行设计比较方便、简单,所以根据各种插补方法的特点,选择用逐点比较法来实现。 4 多CPU结构CNC系统硬件原理图 4.1 CNC系统原理图 图4.1 共享总线的多CPU结构的CNC系统结构框图 4.2 原理图极其说明 共享总线机构,只有主模块有权控制系统的总线,在某一时刻只能有一个猪模块占有总线。共享总线结构的模块之间的通行,主要依靠存储器的实现,采用公共存储器的方式。共享存储器结构,采用多端口存储器来实现各CPU之间的互连和通信,每个端口配有一套数据、地址、控制线,以端口访问,由多端控制逻辑电路解决访问冲突。 管理模块:该模块是管理和组织整个CNC系统工作的模块,主要功能包括:初始化、中断管理、总线裁决、系统出错识别和处理、系统硬件与软件诊断等;插补模块:该模块用于在插补完成前,进行零件程序的译码、刀具补偿、坐标位移量计算、进给速度处理等预处理,然后进行插补计算,并给顶各坐标轴的位置

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

武汉理工大学华夏学院 课程设计报告书 题目: 系名: 专业班级: 姓名: 学号: 指导教师: 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

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

此程序是根据《微型计算机控制技术》(第二版)清华大学出版社 第三章数字控制技术——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)

逐点比较法插补的连续轨迹控制设计

厦门海洋职业技术学院 学生课程设计 题目:逐点比较法圆弧插补的连续轨迹 控制设计 学生姓名:廖晨杰 所在院(系) 机电系 专业:数控技术 班级:数控2111 指导教师:杨光 2013年月日

目录 1.设计要求 (3) 2.设计目的 (3) 3.总体比较法 (3) 4.多CPU结构CNC系统硬件原理图 (4) 5.逐点比较法直线插补原理 (5) 6.软件构成设计 (9) 7.程序代码设计 (12) 8.参考文献 (17) 9.设计小结 (17)

1 设计要求 1.1 设计要求 (1)设计出逐点比较法插补软件流程图; (2)编写出逐点比较法插补程序; (3)要求用软件能够实现任意象限圆弧(G03)的插补计算; (4)要求软件能够处理特殊轮廓的插补,例如坐标中任意圆弧等; (5)插补结果要求能够以图形模拟进行输出。 2 设计目的 2.1 设计目的 (1)了解连续轨迹控制数控系统的组成原理; (2)了解逐点比较法插补的基本原理; (3)掌握逐点比较法插补的软件实现方法。 3 总体方案比较 3.1 各多种方案的特点 第一:采用逐点比较法插补。逐点比较法的基本原理是被控对象在按要求的轨迹运动时,每走一步都要与规定的轨迹进行比较,由此结果决定下一步移动的方向。逐点比较法既可以作直线插补又可以作圆弧插补。这种算法的特点是,运算直观,插补误差小于一个脉冲当量,输出脉冲均匀,而且输出买成速度变化小,调节方便,因此在两坐标数控机床中应用较为普遍 第二:数学积分法插补。又称为微分分析法。这种插补方法可实现一次、二次、甚至高次曲线的插补,也可以实现多坐标联动控制。只要输入不多的几个数据,就能加工出圆弧等形状较为复杂的轮廓曲线。作直线插补时,脉冲分配也较均匀。 第三:数据采样插补。数据采样插补实际上是一种粗插补过程,它所产生的微小线段仍然比较大,必须进一步对其密化(即精插补)。粗插补算法比较复杂,

逐点比较法直线插补代码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 方向进给一步,此时新加工点的坐标值为

相关主题
文本预览
相关文档 最新文档