基于DDA插补算法的五轴步进电动机插补控制器IP核设计
2011-11-20杨秀增黎运宇
杨秀增,黎运宇
(广西民族师范学院,广西崇左532200)
0 引 言
插补控制器是数控系统的基本单元,用来完成运动轨迹的拟合[1]。随着加工零件结构复杂程度的提高,对数控制系统的插补控制器性能提出了更高的要求,不仅要求插补控制器具有高精度、高速度,还要求具有多轴联动控制功能,比如,对复杂曲面零部件加工,目前广泛采用具有五轴联动线性插补功能[2]的插补控制器,但是,目前的数控系统利用软件插补器[3],软件插补器由于用软件实现插补功能,其性能难以满足复杂数控系统的要求[3]。
针对以上情况,本文利用现场可编程逻辑门阵列(FPGA)[4],设计了一款基于数字积分算法(DDA)五轴步进电动机联动控制的硬件插补控制IP核,由于该插补器控制器全都由硬件来实现,因此,本控制器具有速度快、精度高和实时性强等优点,能应用于多轴复杂的数控系统中。
1 IP核硬件系统框图及其工作原理
图1为本设计的硬件系统原理框图。由图1可见,本设计包括Avalon接口单元、寄存器文件单元和任务逻辑单元三大部分。
图1 五轴步进电动机插补控制器IP核硬件原理框图
Avalon接口单元是本控制IP核的接口电路,负责把用户任务逻辑单元,按基于Avalon总线通信协议接在Avalon总线上,以便实现用户任务逻辑单元与NiosII软核CPU进行通信。
寄存器文件单元由如下九个寄存器组成:
分频因子寄存器,用于寄存可编程分频器的分频因子,其大小能有效地控制插补器的插补速度;X轴坐标寄存器、Y轴坐标寄存器、Z轴坐标寄存器、B轴坐标寄存器和C轴坐标寄存器,分别寄存X轴、Y轴、Z轴、B轴和C轴的终点坐标值,作为数字积分器的被积函数,其值越大,被积函数值越大,意味着该轴的运动距离越远,在单位时间内,数字积分器产生的步进脉冲越快;状态寄存器,用于寄存控制器的当前所处的状态(“闲”或“忙”),用高或低电平来表示;总步进数寄存器,用于寄存五个步进电动机要走的总步进数;控制寄存器,寄存着各种控制信息,包括1位暂停控制信号、1位起动信号和5位步进电动机的方向转动控制信号。
任务逻辑单元是本IP核的行为部分[5],要实现五轴步进电动机的联动和速度控制功能。五轴数字积分器模块,由五个相互独立的数字积分器组成,此模块能对各轴坐标的值进行数字积分运算,不断地产生各轴步进电动机的步进脉冲信号,控制着各轴步进电动机的运动速度和联动功能;终点判定模块对各轴输出的步进脉冲进行计数,并且把计数的结果与总步进数寄存器的值进行比较,如相等,表示已到达终点,用over信号通知状态机表示本次差补结束;状态机是任务逻辑单元的协调控制中心,能产生各种时序控制信号,使五轴数字积分器和终点判定模块的协调工作;可编程分频器可根据分频因子的值对50 MHz时钟进行分频,得到不同频率的工作时钟,实现步进电动机的速度控制。
2 IP核硬件系统的FPGA设计
2.1 寄存器文件设计
寄存器文件由九个寄存器组成,寄存着控制信息、状态信息和各种数据。每个寄存器对应着不同的地址,且读写方向和位宽也不尽相同,表1列出这些寄存器的名称、相对地址、读写方向、位宽和功能描述。
表1 寄存器组定义与地址分配
图2 数字积分器的原理方框图
2.2 任务逻辑设计
2.2.1 可编程分频器设计
在本设计中,利用一个可编程分频器来控制步进电动机的转动速度。由图1可知,分频器的分频因子变大,50 MHz的系统时钟被分频器分频的频率变小,数字积分器的工作时钟变小,数字积分器的运算速度变慢,步进电动机速度变小;相反,分频器分频因子变小,分频器的输出频率变大,五轴数字积分器的运算速度变快,步进电动机转速变快。
2.2.2 五轴数字积分器设计
为了实现五个步进电动机的联动控制,设计了五轴数字积分器。五轴数字积分器由五个互相独立的数字积分组成,每一个坐标轴对应一个数字积分器,其原理框图如图2所示,坐标值寄存器存放本次直线插补的终点坐标值,作为数字积分器的被积函数。在插补前,clr要对余数寄存器内容清零,插补起动后,在clk时钟的上升沿控制下,加法器对坐标寄存器的值和余数寄存器的值进行一次加法运算,并把运算结果存放在余数寄存器中。在设计中,余数寄存器最高位作为驱动步进电动机的步进脉冲,每个上升沿表示步进电动机要步进一步,本积分器的Verlogn HDL程序如下:
module Digital_integrator(iclk,iclr,idata,step_pulse,en);
input iclk,iclr,en;
input[15:0]idata;//数据输入
output step_pulse;//步进脉冲
reg[16:0]sum;//中间寄存器
always@(posedge iclk or posedge iclr)
if(iclr)//高电平,清零
sum=0;
else if(en)//高电平,进行累加
sum=sum+idata;
assign step_pulse=sum[16];//步进脉冲
endmodule
2.2.3 终点判定模块设计
终点判定模块用于判定步进电动机是否运动到终点。插补前,NiosII根据本次差补的终点坐标值和步进电动机的最小步长的值,计算出五个步进电动机的步进数总数,并把这总数写到总步进数寄存器,插补开始后,终点判定模块读取总步进数寄存器的值,并对各轴步进脉冲的上升沿进行计数,当计数的值与读到时的总步进数相等时,表明步进电动机已到达终点,用over信号通知状态机停止本次直线插补,本模块的Verlogn HDL程序如下:
module end_test(x_p,y_p,_p,b_p,c_p,over,idata,RD);
input x_p,y_p,z_p,b_p,c_p,RD;
output reg over;//终点结束输出
input[31:0]idata;//数据输入
reg[31:0]mcounter,mreg;//中间寄存器
wire dclk;
assign dclk=x_p||y_p||z_p||b_p||c_p;always@(posedge dclk or posedge RD)if(RD)begin mreg=idata;over=0;end//RD为高电平时,读取数据
else if(mcounter==mreg)
begin end_out=1;mcounter=0;end//如计数与总步进数相等进,结束
else begin mcounter=mcounter+1;over=0;end//否则计数endmodule
2.2.4 状态机设计
图3 状态机的状态转换图
状态机用于协调五轴数字积分器和终点判定模块协调工作。图3为本状态机的状态转换图,包括“空闲”状态(s0)、数据初始化状态(s1)和步进控制状态(s2)三个状态。在NiosII没有起动插补器前,状态机始终在“空闲”状态(s0)中等待起动信号(start)到来;一旦start为高电平,表明NiosII起动插补器,状态机由等待状态(s0)进入数据初始化状态(s1),在状态中,状态机对数字积分器的余数寄存器内容清零和用RD信号通知终点判定模块读取总步进数寄存器的值,在时钟控制下,状态机无条件地进行步进电控制状态(s2),在此状态中,EN为高电平,使五轴数字积分器开始进行积分运算,当over为高电平时,此状态结束,进入“空闲”状态s0中。
2.3 Avalon接口设计
在QuartusII 8.0软件中,SOPC Builder工具提供了6种不同接口类型和信号,设计者可根据设计需要选择接口,并把任务逻辑各种信号,指定Avalon信号类型,表2为本设计所用到的接口单元信息。
表2 Avalon接口信息表
3 软件设计
硬件系统工作离不开软件的支持,硬件系统的设计结构和工作原理决定了软件的编写方法[6]。在插补前,读取状态寄存器里的值,了解系统工作状态,如处于“空闲”状态,NiosII把本次直线插补终点坐标写到相应的寄存器中,然后,根据空间直线的长度和步进电动机的步距,计算出总的步进脉冲数,并写入总步进脉冲寄存器中。最后,根据直线插补方向设置好控制寄存器方向控制位后,起动插补器。
4 IP核在五轴步进电动机运动控制卡中应用及其测试
本控制器IP核被成功地应用于如图4所示的五轴步进电动机运动控制卡中。本运动控制卡在一片FPGA上实现。UART控制器、JTAG控制器、NiosII处理器、EPCS控制器、SDRAM控制、LCD控制器、PIO控制器和Avalon数据总线构成基于NiosII的最小系统;五轴步进电动机插补控制器是通过例化本设计IP核得到的;SPWM细分驱动器实现步进电动机的细分驱动,改善步进电动机的运动性能。加工的数据从上位机的USB口传送到五轴步进电动机控制卡中,CP2101桥式控制芯片把USB数据流转换成UART数据流,然后NiosII把这些数据写到五轴步进电动机插补控制器中。本运动控制卡的具体设计方法,限于篇幅,本文不作介绍。
图4 基于FPGA的五轴步进电动机运动控制卡设计框图
5 测试结果
对以上所设计的运动卡进行测试,现场可编程逻辑门阵列选用Altera公司的EP3C25Q240C8N,步进电动机选用Leetro公司生产的二相式步进电动机DM4250C。测试结果表明,本运动控制卡工作稳定,被控制的步进电动机工作平稳,插补运算速度快、控制精度高。图5为利用QuartusII嵌入式逻辑分析仪(SigalTap II Logic Analyzer)测试五轴数字积分器的输出信号波形:xp、yp、zp、bp和cp分别是X轴、Y轴、Z轴、B轴和C轴的步进脉冲输出,信号每一个上升沿表示步进电动机走一步,从图5可以看出,它们之间的步进数(上升沿数)刚好为2倍关系,说明五轴步进电动机具有良好的联动关系,有效验证了本设计的正确性。
图5 用嵌入式逻辑分析仪分析五轴波形时序图
6 结 语
插补器联动控制器是多轴联动控制卡的重要组成部分,针对目前数控制系统的软件插补器的运行速度慢和实时性差等缺点,利用现场可编程门阵列设计一款五轴步进电动机插补控制器,实际测试结果表明,本控制器工作稳定,具有速度快、精度高和实时性强等优点,因此,本设计有一定推广和实用价值。
[1] 陈黎融,白婕静,刘继伟.基于FPGA的数字积分法圆弧插补器的设计与实现[J].现代制造工程,2008,(2):58-60.
[2] 刘源,王永章,富宏亚,等.用于五轴联动数控机床的曲线插补控制策略[J].计算机集成制造系统,2009,15(4):758-761.
[3] 于海东.直线插补控制器的FPGA实现[J].微特电机,2009(1):46-49.
[4] 李凡,廖勇.基于FPGA数字硬件的无刷直流电动机速度控制系统[J].微特电机,2010(8):65-68.
[5] 殷苏民,杨仁宇.基于Avalon总线的插补器IP核的设计[J].机械设计与制造,2009(8):198-200.
[6] 杨秀增.可变波特率和载频的2FSK数字调制器的FPGA实现[J].电讯技术,2010,50(5):64-67.