关键词:ARM FPGA 嵌入式数控系统 μC/OS-Ⅱ
Abstract:A kind of embeded CNC system based on ARM with the real-time operation system μC/OS-Ⅱ is proposed to resolve the problems of the current computer numerical control (CNC). The hardware structure and software design of this system is introduced.
Keywords: ARM; FPGA; embedded CNC system; μC/OS-Ⅱ
1 引言
自从1952年第一台数控机床问世以来,随着计算机技术的不断发展,数控系统经历了由硬件数控到计算机数控(CNC)的发展过程。起初的硬件数控系统,零件程序的输入、运算、插补及控制功能均由硬件完成。CNC系统采用计算机作为数控系统的核心部件,减少了硬件电路,提高了系统的通用性和可靠性。但是这类系统仍然存在一些问题,如资源浪费,操作系统实时性差,硬件结构复杂等。
本文介绍了一种基于PC的“ARM+FPGA”结构的嵌入式数控系统。该系统是针对小型、便携式机床开发生产的新一代控制全数字步进电机的数控系统。上位机PC用于复杂加工代码的编程,“ARM+FPGA”结构控制系统则用于实现运动控制的功能。采用ARM开发数控系统可以降低硬件成本,增强稳定性,提高系统的可扩展性。
2 系统硬件设计
2.1 硬件结构
本系统的设计中,以PC机作为上位机,ARM+FPGA为控制核心。系统的硬件结构如图1。
图1 系统硬件结构
在上位PC机中,应用CAD软件产生加工G代码,通过USB把程序代码串行传送到系统的SDRAM中,ARM从数据存储器中读取G代码,进行译码,刀补运算,粗插补[1]。FPGA接收ARM的控制指令,读取数据,完成精插补功能,输出对电机的控制脉冲。另外,为了实现上位PC机与控制器之间的高速数据交换,系统除了具有串口通讯功能外,还采用了USB接口通讯,用DMA方式和上位PC机进行数据同步交换,这种方式可以使系统获得更高的通讯速度。该系统有3路脉冲直接驱动步进电机,最高频率为4MHz。
2.2 芯片选择
(1)ARM微处理器
本系统采用了SAMSUNG公司推出的16/32位RISC嵌入式微处理器S3C44B0X,其最大主频为66MHz。S3C44B0X采用了ARM7TDMI核,0.25um工艺的CMOS标准宏单元和存储编译器,还提供了非常丰富的内置部件,包括8K高速缓存器,外部存储控制器,2通道通用DMA,2通道外设DMA,2通道带有握手协议的UART,71个通用I/O口,8通道外部中断源,8通道10位ADC以及具有PLL的片上时钟发生器。通过提供丰富的片上资源,可以减少外围电路,降低系统成本。另外,芯片还采用了低电压技术,运算速度很快,功耗很低,非常适合数控系统的设计。
(2)FPGA
FPGA(Field Programmable Gate Array)是在PAL、GAL等逻辑器件的基础上发展起来的,是一种特殊的ASIC芯片,具有丰富的逻辑资源以及I/O引脚,用户可以重新配置其内部的逻辑模块和I/O模块,以实现用户的逻辑。此外,FPGA还具有规模大、体积小、可靠性高等优点,符合数控系统的设计要求。本系统采用Lattice公司的LFXP6C-3Q208C芯片来实现插补运算。在系统中,FPGA接受ARM和外部RAM送来的控制指令和数据信息执行插补运算,产生控制步进电机运转的脉冲序列,并通过接口将脉冲序列送到步进电机驱动器。另外FPGA与主轴编码器相连接,能识别其输出的信号并计数,计数结果存放在寄存器中,供ARM读取。FPGA还通过ULN2083AC芯片与I /O接口连接,执行各种信号的转换和隔离功能。图2 是FPGA的外围连接。
图2 FPGA的外围连接
2.3 脉冲输出信号的连接方式
脉冲输出信号的连接有差动方式和单端方式两种,单端方式适用于早期一些脉冲和方向的阳极连在一起的步进驱动器,而不适用于某些脉冲和方向的阴极连在一起的步进驱动器。差动方式适用于脉冲和方向独立输入的步进驱动器和大多数伺服驱动器,能够获得较好的抗干扰性。本系统采用的是差动方式连接,图3为其连接方式 。
图3 脉冲输出信号的差动连接
3 系统的软件结构
系统的软件结构主要分为两部分:操作系统软件和数控应用软件。由于数控系统是个实时多任务系统,实时性要求很高,为保证各个任务的协调执行,本系统采用了μC/OS-Ⅱ实时操作系统作为软件平台。
3.1 μC/OS-Ⅱ简介[2]
μC/OS-Ⅱ是一种源代码公开的实时操作系统,是抢先式的内核,在运行就绪条件下总是让级别最高的任务优先执行,它还是一个多任务管理系统,可管理64个任务,其中8个保留给系统,用户任务最多可达56个,并且每个任务由自己独立的栈空间。μC/OS-Ⅱ的大部分源代码是用C语言编写的,仅与微处理器相关部分使用汇编语言,因此具有很强的移植性。但是,由于μC/OS-Ⅱ在读写处理器、寄存器时只能通过汇编语言来实现,所以需要用汇编语言完成一些与处理器相关的代码。
3.2 μC/OS-Ⅱ的移植
要实现该操作系统在S3C44B0X微处理器平台上的正常运行,需要修改与处理器类型有关部分的代码[3],下面简单的介绍了需要修改的相关文件:
(1)修改OS_CPU.H文件:包括定义数据类型及与处理器相关的基本信息。
(2)修改OS_CPU_C.C文件:编写初始化任务的堆栈结构函数OSTaskStkInit(),该函数由任务创建函数OSTaskCreate()或OSTaskCreateEXT()调用。例如创建一个插补任务为:
OSTaskCreate(InterpTask,(void*)0,(void*)&InterpTask_Stack\[STACKSIZE-1\],
InterpTask_Pri)。另外还必须声明5个函数:建立任务函数OSTaskCreateHook()、删除任务函数OSTaskDelHook()、任务切换函数OSTaskSwHook()、产生时钟节拍得函数OSTimeTickHook()和统计功能函数OSTimeTickHook()。
(3)修改OS_CPU_A.ASM文件:编写4个与处理器相关的汇编语言函数OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。
3.3 数控系统的应用软件设计
根据数控系统所要实现的功能,可以将系统的应用软件主要分为几个模块:人机界面模块、数据处理模块、插补模块。其中人机界面模块的任务由PC机完成,包括数控代码的编辑,加工过程中相关参数的设置,刀补参数的设置等[4]。
(1)数据处理模块
数据处理模块主要完成译码和刀具补偿功能。译码就是将数控代码的各种工件轮廓信息(如起点、直线或圆弧等)、加工速度F和其它辅助信息(M、S、T)按一定规律翻译成系统能识别的数据形式。由于编制零件加工程序时,一般只考虑零件的轮廓外形,而实际切削控制时,是以刀具中心为控制中心的,所以经过译码得到的数据不能直接由插补程序使用,必须经过轨迹计算,进行刀具长度补偿和刀具半径补偿,才能转换为插补所需要的参数。
(2)插补模块
数控系统的核心任务是插补,插补计算的精度影响到整个数控系统的精度。插补任务就是按照进给速度的要求,由译码得到的数据信息计算出零件轮廓起点和终点之间若干中间点的坐标值,并转化为脉冲数据送入步进驱动器。本系统采用了脉冲增量插补,脉冲输出的频率误差小于0.1%。其脉冲输出可用单脉冲(脉冲+方向)或双脉冲(脉冲+脉冲)方式。可以实现任意2-3轴直线、任意2轴圆弧插补,连续插补功能。
图4 逐点比较法第一象限直线插补软件流程图
下面以第一象限直线插补为例,图4为逐点比较法第一象限直线插补软件流程图。其中,(xe,ye)为直线的终点坐标,F为每一步直线插补运算后的偏差值。当F≥0时,加工点在加工直线上或在直线上方,则向x轴正向产生一个脉冲,由步进电机驱动器驱动x轴步进电机正向进给一个步进角,并计算出新的偏差F=F-ye;当F<0时,加工点位于直线下方,则向y轴正向产生一个脉冲,由步进电机驱动器驱动y轴步进电机正向进给一个步进角,并计算出新的偏差F=F+xe。n为终点判别,当刀具到达终点时,停止插补。本系统采用VHDL语言编写算法实现插补,如下为部分代码:
ARCHITECTURE connect OF chabu IS
BEGIN
VERIABLE F:INTEGER:=0;
n:INTEGER:=ABS(xe)+ABS(ye);
xi,yi:INTEGER //(xi,yi)为插补运算过程中刀具的加工点坐标
PROCESS(reset) //reset是复位信号,插补开始后对偏差值F和(xi,yi)清零, BEGIN 使刀具回到坐标原点
F=0;
……
END PROCESS;
PROCESS(clk) //clk是时钟控制信号,当clk上升沿到来时进行插补运算的处理
BEGIN
WHILE(n>0)LOOP
IF(F>=0)THEN
cqx=1; //cqx,cqy为x轴和y轴的输出脉冲信号
cqy=0;
F=F-ye;
n=n-1;
ELSE
……
END IF;
END LOOP;
END PROCESS;
END connect;
3.4 系统中数据信息的交换
在数控加工时,CNC系统各模块之间需要传递大量的数据信息,主要通过各种缓冲存储区实现该功能,如图5为数据信息的交换过程。首先读入数控加工程序到数控加工程序缓冲器,从中逐个读入字符,经译码处理送到译码结果缓冲器,再经一系列插补准备(包括刀补计算和速度处理),送到插补缓冲器中,插补程序执行插补运算时,把插补缓冲存储区的内容读入到插补工作存储区,然后用插补工作区的数据进行插补计算,并将结果送到插补输出寄存器。
图5 数据信息的交换
4 结论
嵌入式数控系统采用ARM和FPGA硬件平台,减少了系统的外围器件,具有体积小,性价比高,稳定性好等优点。并且利用μC/OS-Ⅱ实时操作系统作为开发工具,使数控系统具有优异的实时性,满足了高速度、高精度的加工要求,很好的解决了传统CNC系统中存在的问题。由此,嵌入式数控系统具有广阔的发展前景。
参考文献:
[1]刘艳霞,李淑芬.基于ARM的嵌入式数控系统[J].微计算机信息.2006,22(35):90-91,96
[2]Labrosse Jean J.邵贝贝译,嵌入式实时操作系统μC/OS-Ⅱ[M].2版.北京:中国电力出版社.2003
[3]王晓鸣,王树新,张宏伟.实时操作系统μC/OS-Ⅱ在ARM上的移植[J].机电一体化.2007,(1):56-58
[4]杨代华,陈志辉.基于实时操作系统μC/OS-Ⅱ的数控系统研制[J].制造技术与机床.2007,(12):21-23
作者简介:
第一作者:朱晓洁(1983-),女,江苏无锡人,硕士研究生,主要研究方向:数控系统。
通信地址:南京新模范马路5号南京工业大学丁家桥校区119#信箱
邮编:210009 电话:13675122764
E-mail:stream_xu@126.com
第二作者:舒志兵(1965-),男,江苏南京人,南京工业大学运动控制研究所所长,主要研究方向:交流伺服系统、DSP技术、现场总线、数控系统、运动控制、机电一体化系统等。
E-mail:shuzhibing@163.com