计算机数控技术实验报告.docx
- 文档编号:11540093
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:20
- 大小:222.94KB
计算机数控技术实验报告.docx
《计算机数控技术实验报告.docx》由会员分享,可在线阅读,更多相关《计算机数控技术实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
计算机数控技术实验报告
《计算机数控系统》课程
实验指导书
插补控制程序设计与调试
福建工程学院电子信息与电气工程系
电气工程教研室
二○一一年九月
一、概述………………………………………………………………………………3
二、实验设备…………………………………………………………………………..3
三、硬件结构…………………………………………………………………………..3
上机练习逐点比较法直线插补控制程序设计与调试实验……………………..…10
实验一逐点比较法圆弧插补控制程序设计与调试实验………………………..…11
实验二数字积分法直线插补控制程序设计与调试实验………………………..…12
附录:
逐点比较法直线插补控制程序代码实例…………..………………….…..…13
一、概述
机床数控的核心问题就是控制刀具和工件的运动以形成预定的运动轨迹。
在数控加工中,对于复杂型面,一般采用小段直线或圆弧(即基本线型),在满足精度要求的条件下,逐段拟合高次曲线的轮廓,这种拟合的方法,就是插补。
能完成插补工作的装置叫插补器,由数字电路完成插补工作的叫做硬件插补,由软件实现插补工作的叫做软件插补。
插补的方法很多,主要分为脉冲增量插补法和数字增量插补法两类。
对于脉冲增量插补,数控装置向有关运动坐标输出进给指令脉冲,每个脉冲代表最小位移,指令脉冲序列的频率代表坐标运动速度,脉冲的数量代表位移量;对于数字增量插补,数控装置向有关坐标输出进给指令数据(位置增量值),插补分粗插补和精插补两步完成,粗插补时用微小直线段来逼近给定曲线,精插补时对微小线段进行脉冲增量插补。
逐点比较法和数字积分法属于脉冲增量插补法,是掌握数控插补原理的基础,适用于精度和速度要求不高的数控系统中,本实验旨在测试和调试脉冲增量插补法。
二、实验设备
1.装有WindowsXP的操作系统的微机 1台
2.TQ2440开发板实验系统1套
3.面包板1只
4.杜邦线12条
5.发光二极管6只
6.WX-4675型X-Y双坐标智能绘图机(选用)1台(机电系数控实验室实验设备)
三、硬件结构
1.PC微机系统
在WindowsXP操作系统的微机上,安装VMwareWorkstation系统和Redhad9Linux操作系统,用于编辑、编译和调试数控插补控制程序,通过RS-232接口和网络接口,将可执行程序挂载或传送到TQ2440开发板实验系统中,进行实验测试。
2.TQ2440开发板系统
TQ2440开发板实验系统通过GPIO接口,输出驱动步进电动机的脉冲信号,连接WX-4675型X-Y双坐标智能绘图机,控制X、Y四相VR(VariableReluctance)型步进电动机转动,驱动绘图笔,绘出双坐标插补运动轨迹,实现插补控制功能。
由于WX-4675型X-Y双坐标智能绘图机是机电系的实验设备,可通过借用实现。
在缺少该实验设备的条件下,可用发光二极管的显示来替代如下:
将GPIO接口发出的脉冲信号,通过杜邦线连接到面包板上、接通面包板上的发光二极管,来模拟步进电动机的回转信号,从而达到测试插补控制程序的目的。
(1)TQ2440开发板实验系统的GPIO接口如图1所示。
图1TQ2440开发板输出接口图
(2)GPIO接口发出的控制信号如图2所示
图2GPIO接口输出脉冲信号电路
(3)TQ2440开发板实验系统的GPIO接口地址功能如表1所示。
表1TQ2440开发板实验系统的GPJ接口功能表
端口寄存器名称
端口地址
用途
GPJ控制寄存器
0x560000d0
GPJCON[2n+1:
2n]=00:
GPJn=Input;
GPJCON[2n+1:
2n]=01:
GPJn=Output
GPJ数据寄存器
0x560000d4
输入输出端口数据
GPJ端口上拉寄存器
0x560000d8
GPJCON[n]=0:
GPJn端口接上拉电阻;
GPJCON[n]=1:
GPJn端口不接上拉电阻
3.WX-4675型X-Y双坐标智能绘图机系统
WX-4675型X-Y双坐标智能绘图机的主要性能参数如表2所示。
表2WX-4675型双坐标智能绘图机的性能参数表
有效绘图范围
X轴345mm,Y轴260mm
最大绘图速度
50mm/秒(轴向)
步 长
0.1mm(内部处理为0.05mm)
距离精度
< 1%
重复精度
< 0.3mm
笔的种类
水基和油基纤维笔(8和4种颜色)
换笔精度
≤ 0.4mm
电 源
AC100V、220V±10%(50/60HZ),功耗<70VA
使用环境条件
温度+5~35℃,湿度35%~75%R.H.
绘图纸
Max 420mm x 300mm(A3)
外形尺寸
605 x 520 x 95 mm
4.步进电动机电磁线圈的电流控制
通过开(关)步进电动机绕组线圈电流,改变其开关占空度来实现。
电流开关度使用图3所示的PWM调制电路,产生PW1、PW2、PW3三种控制脉冲,用于控制电流开(关)的占空度。
图33种脉冲发生电路
每个周期产生电流开(关)的占空度如图4所示。
图43种电流脉宽的占空度信号
该开(关)脉冲与步进电动机的绕组电流控制信号AC0~AC3(BD0~BD3)相结合,按图5所示的驱动电路,可以实现四相步进电动机的4细分驱动。
图5四相步进电动机A、C相的四细分驱动电路
图5中AC0~AC3(BD0~BD3)和PW1~PW3结合起来驱动步进电动机的驱动,产生各相电流。
BD相和AC相完全相同,其电路不再示出。
Q1:
用于设定电流值的开关晶体管;Q2、Q3:
A、C相的励磁相选择晶体管(复合晶体管)。
5.采用4细分驱动的步进电动机的输出位模型如表3所示。
表34细分驱动的步进电动机的输出位模型表
端口 步
相(控制口)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PA0口:
AC3(A,~C相)
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
PA1口:
AC2(电流1A量值)
0
0
0
0
1
1
1
0
0
0
0
0
1
1
1
0
PA2口:
AC1(=BD1)(0.8A)
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
1
PA3口:
AC0(电流0.5A)
1
0
1
0
0
0
0
0
1
0
1
0
0
0
0
0
PA4口:
BD3(B,~D相)
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
PA5口:
BD2(电流1A量值)
1
1
1
0
0
0
0
0
1
1
1
0
0
0
0
0
PA2口:
BD1(=AC1)(0.8A)
与AC1(BD1)接在一起,电位相同,不另占用接口线
PA6口:
BD0(电流0.5A)
0
0
0
0
1
0
1
0
0
0
0
0
1
0
1
0
PA7口:
MK/PEN
抬、落笔绘图用
控制字:
向PA口发送的数据)
38H
31H
39H
15H
53H
03H
43H
05H
29H
20H
28H
04H
42H
12H
52H
14H
其中:
AC3和BD3表示励磁相的选择。
AC0(BD0)、AC1(BD1)、AC2(BD2)表示励磁电流的大小,在微绘图机中,AC2(BD2)=1时,表示对应相的电流值为1;AC1(BD1)=1时,表示对应相的电流值为0.8;AC0(BD0)=1时,表示对应相的电流值为0.5。
6.四相电动机中相邻2相间励磁相电流4细分波形如图6所示。
图6相邻2相励磁相电流4细分波形图
7.WX-4675型X-Y双坐标智能绘图机的接口电路
(1)25针D形接口中针脚信号如图7所示。
图7并口25针D形接口中针脚信号图
(2)WX-4675型X-Y双坐标智能绘图机中的X、Y步进电动机的控制电路如图8所示。
图8WX-4675型X-Y双坐标智能绘图机硬件结构控制线路图
上机练习逐点比较法直线插补控制程序设计与调试练习
1.练习目的
(1),掌握逐点比较法的直线插补原理;
(2),熟悉嵌入式系统结合绘图仪用于插补实验的操作;
(3),根据样例程序,调试插补控制程序。
2.练习内容
采用C语言,参考给出的逐点比较法直线插补程序,控制WX-4675型X-Y双坐标智能绘图机,绘出直线插补的轨迹。
3.步骤
(1)熟悉在PC机上Linux系统中的编程指令操作;
(2)基于Linux系统,采用C语言进行程序设计;
(3)熟悉WX-4675型X-Y双坐标智能绘图机的基本操作;
(4)在实验系统中调试逐点比较法直线插补程序;
(5)系统操作练习,绘出直线插补的轨迹图。
实验一逐点比较法圆弧插补控制程序设计与调试实验
1.实验目的
(1),掌握逐点比较法的圆弧插补原理;
(2),熟悉嵌入式系统结合绘图仪用于插补实验的操作;
(3),采用C语言,设计、编制并调试插补控制程序。
2.实验内容
采用C语言,设计逐点比较法圆弧插补程序,控制WX-4675型X-Y双坐标智能绘图机,绘出圆弧插补的轨迹。
3.实验步骤
(1)熟悉在PC机上Linux系统中的编程指令操作;
(2)基于Linux系统,采用C语言进行程序设计;
(3)熟悉WX-4675型X-Y双坐标智能绘图机的基本操作;
(4)在实验系统中调试逐点比较法圆弧插补程序,在实验系统中进行调试;
(5)系统操作练习,绘出圆弧插补的轨迹图,或用发光二极管模拟三相步进电动机的运转。
4.实验报告
(1),在实验报告上写明实验目的、内容、原理和步骤;
(2),绘出与所设计程序相一致的逐点比较法圆弧插补程序的框图;
(3),电脑打印出所调试的圆弧插补程序的清单,并注释各语句的含义;
(4),附出绘图仪画出的圆弧插补程序的轨迹图,或用发光二极管模拟三相步进电动机的运转;
(5),总结实验内容,说明实验收获。
实验二数字积分法直线插补控制程序设计与调试实验
1.实验目的
(1),掌握数字积分法的插补原理;
(2),熟悉嵌入式系统结合绘图仪用于插补实验的操作;
(3),采用C语言,设计、编制并调试DDA直线插补控制程序。
2.实验内容
采用C语言,设计数字积分法直线插补程序,控制WX-4675型X-Y双坐标智能绘图机,绘出直线插补的轨迹。
3.实验步骤
(1)熟悉在PC机上Linux系统中的编程指令操作;
(2)基于Linux系统,采用C语言进行程序设计;
(3)熟悉WX-4675型X-Y双坐标智能绘图机的基本操作;
(4)在实验系统中调试数字积分法直线插补程序;
(5)操作调试演示,绘出直线插补的轨迹图,或用发光二极管模拟三相步进电动机的运转。
4.实验报告
(1)在实验报告上写明实验目的、内容、原理和步骤;
(2)绘出与所设计程序相一致的数字积分法直线插补程序的框图;
(3)电脑打印出所调试的程序清单,并注释各语句的含义;
(4)附出绘图仪画出的直线插补程序的轨迹图,或用发光二极管模拟三相步进电动机的运转;
(5)总结实验内容,说明实验收获。
附录
|||||||Linux系统中GPIO端口驱动参考程序||||||
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineUlgunsignedlong
#definerGPJCON(*(unsignedlong*)r_GPJCON)
#definerGPJUP(*(unsignedlong*)r_GPJUP)
#definerGPJDAT(*(volatileunsignedlong*)r_GPJDAT)
unsignedlongr_GPJCON,r_GPJDAT,r_GPJUP;
intIOdev_read(structfile*filp,char__user*buff,size_tcount,loff_t*offp)
{return0;
}
intIOdev_write(structfile*filp,constchar*bf,size_tcnt,loff_t*pt)
{//if((ldP&0x1)==0)copy_from_user(p2,(void*)bf,sizeof(IPstruct));
//elsecopy_from_user(p3,(void*)bf,sizeof(IPstruct));
return0;
}
intIOdev_open(structinode*inode,structfile*filp)
{printk("IOdevDeviceOpen\n");
return0;
}
intIOdev_release(structinode*inode,structfile*file)
{printk("IOdevdevicerelease\n");
return0;
}
intIOdev_ioctl(structinode*inode,structfile*filp,U32cmd,Ulgarg)
{interr=0;
switch(cmd)
{
case0xfff1
rGPJDAT&=(arg&0x1fff);
break;
case0xfff2
rGPJDAT|=(arg&0x1fff);
break;
default:
err=-EINVAL;
break;
}
returnerr;
}
structfile_operationsIOdev_fops=
{.read=IOdev_read,
.write=IOdev_write,
.ioctl=IOdev_ioctl,
.open=IOdev_open,
.release=IOdev_release,
};
structmiscdevicemisc=
{.minor=MISC_DYNAMIC_MINOR,
.name="IOdev",
.fops=&IOdev_fops,
};
int__initIOdev_init(void)
{intrtn;
r_GPJCON=(Ulg)ioremap(0x560000d0,4);
r_GPJDAT=(Ulg)ioremap(0x560000d4,4);
r_GPJUP=(Ulg)ioremap(0x560000d8,4);
rGPJCON&=~(0xfffff);//set00inforGPJ[0-9]
rGPJCON|=0x55555;//set01inforGPJ[0-9]
rGPJUP&=~(0x3ff);//pullupisenabled
rGPJDAT|=~(0x3ff);//init1foroutput
rtn=misc_register(&misc);
printk("IOdev""IOdevdeviceok!
\n");
returnrtn;
}
staticvoid__exitIOdev_exit(void)
{misc_deregister(&misc);
printk("exitok\n");
return;
}
module_init(IOdev_init);
module_exit(IOdev_exit);
|||||||逐点比较法直线插补参考程序||||||
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
intIOdev_fd;
intmain(intargs,constchar*arg[])
{
intoflags;
IOdev_fd=open("/dev/IOdev",O_RDWR);//先打开,不然运行程序段时会死机!
if(IOdev_fd<0){printf("openIOdevdeviceerr!
\n");return-1;}
printf("IOdev_fd=%d\n",IOdev_fd);
while
(1)
{
ioctl(IOdev_fd,0xfff1,0x1fff);
usleep(1000000);
ioctl(IOdev_fd,0xfff1,0);
usleep(1000000);
}
close(IOdev_fd);
return0;
}
JXEQU3CH;变量定义:
终点横坐标
JYEQU3EH;终点纵坐标
JNEQU40H;计数长度
JFEQU45H;偏差函数
ORG5000H;数据表开始地址
TABLE:
DB38H,31H,39H,15H;设置步进电动机环形分配脉冲控制字表
DB53H,03H,43H,05H
DB29H,20H,28H,04H
DB42H,12H,52H,14H
ORG6000H;程序开始地址
MOVDPTR,#0FF2BH;8255控制口地址
MOVA,#80H;将A、B、C口设置为方式0
MOVX@DPTR,A
MOVDPTR,#0FF28H;8255A口地址
MOVA,#38H;设置X轴电动机环形分配脉冲初始值
MOVX@DPTR,A
INCDPTR;8255B口地址
MOVX@DPTR,A;设置Y轴电动机环形分配脉冲初始值
MOVJX,#30H;设置终点横坐标值
MOVJY,#40H;设置终点纵坐标值
MOVA,JX
ADDA,JY
MOVJN,A;计算计数长度值
MOVJF,#0;偏差函数初始值置0
MOVR0,#0;X轴环形分配脉冲控制字表指针
MOVR1,#0;Y轴环形分配脉冲控制字表指针
LOP1:
MOVR2,#32;插补每步进给步长,走两个循环,共8个脉冲当量,32个细分步
MOVA,JF
JBACC.7,LYY;判别偏差函数值的正负,如为负,则向+Y轴插补一步长
LXX:
INCR0;偏差函数值不为负,向+X轴插补一步长,首先控制字表指针进一
MOVA,R0
ANLA,#0FH;保留表指正的低四位,即:
确保表指正不超过15
MOVR0,A
MOVDPTR,#TABLE
MOVCA,@A+DPTR;取X轴环形分配脉冲控制字值
MOVDPTR,#0FF28H
MOVX@DPTR,A;使X轴电动机前进一细分步
LCALLTIME;延时,控制电动机转速
DJNZR2,LXX;继续前进32个细分步
CLRC;准备计算新一点的偏差函数值
MOVA,JF
SUBBA,JY;可见,JY不能超过7FH值,否则JF的结果会被误认为是正值
MOVJF,A;JF-JY→JF
SJMPLOP2
LYY:
INCR1;偏差函数值为负,向+Y轴插补一步长,首先控制字表指针进一
MOVA,R1
ANLA,#0FH;保留表指正的低四位,即:
确保表指正不超过15
MOVR1,A
MOVDPTR,#TABLE
MOVCA,@A+DPTR;取Y轴环形分配脉冲控制字值
MOVDPTR,#0FF29H;8255B口地址
MOVX@DPTR,A;使Y轴电动机前进一细分步
LCALLTIME;延时,控制Y轴电动机转速
DJNZR2,LYY;继续前进32个细分步
CLRC;准备计算新一点的偏差函数值
MOVA,JF
ADDA,JX;可见,JY不能超过7FH值,否则JF的结果会被误认为是负值
MOVJF,A;计算新一点的偏差函数值:
JF+JX→JF
LOP2:
DJNZJN,LOP1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 数控技术 实验 报告