APP下载

基于ARM+DSP+FPGA+MCU的高速嵌入式数控系统研究

2013-09-17李松李迪翟振坤

机床与液压 2013年3期
关键词:服务程序任务调度数控系统

李松,李迪,翟振坤

(华南理工大学机械与汽车工程学院,广东广州510640)

数控机床高速加工的运动控制是提高加工质量和加工效率的重要手段,在诸多高速加工的相关技术取得突破的情况下,适应高速加工的CNC控制器的研制成为影响高速加工技术应用的重要课题。与传统的控制器相比,高速加工对CNC控制器提出新的要求,这些要求主要包括高速处理程序段、高速处理控制信息流、自动平滑加减速、强大工况监控能力、高速通信能力、高可靠性和安全性等方面[1]。目前在数控系统领域主要有两种实现模式。第一种是基于通用PC机+运动控制卡的模式。使用这种数控技术的PC机价格昂贵、系统资源与需求不匹配、操作系统不适合实时控制、可靠性低、系统核心软硬件不具有自主知识产权等问题,所以很难适用于中低档高速数控系统[2-3]。另一方面,近年来嵌入式技术得到了飞速发展,各种高性能的嵌入式微控制器层出不穷,芯片运算速度,不断提高,片上的集成资源越来越丰富。其中以基于32位RISC架构的ARM核微控制器和数字信号处理器 (DSP)为主代表的嵌入式控制器在工控、消费电子、网络设备等领域取得了辉煌的市场业绩[4]。嵌入式技术具有很好的应用性、很强的适应性、资源利用充分、系统紧凑、开发和调试方便等明显的特点。因此,国内外许多数控系统开发研究人员对嵌入式技术在数控系统中的应用投入了极大的研究热情,嵌入式数控技术成为未来数控系统发展的一个崭新方向[5-7]。为了降低硬件成本,增强稳定性,并能适应高速高精数控系统的多任务和实时性调度,作者开发了一种基于“ARM+DSP+FPGA+MCU”结构的嵌入式数控系统。该系统能够满足高速加工对CNC控制器提出新的要求,而且结构轻便,适用性强。

1 总体结构设计

1.1 硬件结构设计

基于“ARM+DSP+FPGA+MCU”结构的嵌入式数控系统,功能框架图如图1所示。

图中ARM使用的是三星公司生产的S3C2440,400MHz主频,ARM920T内核,负责LCD、串口、以太网和USB接口的处理,运行嵌入式Linux操作系统,实现译码、文件系统、网络、图形显示和PLC编辑功能。DSP采用TMS320C6713,是TI公司推出的浮点DSP中的一款芯片。TMS320C6713每周期可以执行8条32位指令;支持32/64位数据;具有300MHz、指令周期的运行速度和 2400MIPS或1800MFLOPS的处理能力[8]。它负责插补计算、电机运动控制和PLC执行系统,通过HPI接口与ARM进行通信,并且通过自身的外部总线 (EMIF)与FPGA模块通信。FPGA由于其强大的逻辑处理功能,一方面,接受ARM和外部RAM送来的控制指令和数据信息执行运算,产生控制步进电机运转的脉冲序列,并通过接口将脉冲序列送到电机驱动器或转化为模拟量输给驱动器,从而控制电机。另一方面,负责与外围编码器相连接,识别其输出的信号并计数,计数结果存放在寄存器中,供DSP读取。MCU模块由高性能、低功耗的AVR 8位微处理器ATmage128和CPLD组成,主要负责系统操作面板、键盘、LED等信号的处理,通过串口RS485和主处理器ARM通信。

图1 功能框架图

1.2 软件系统功能模块

根据一般高速数控机床对数控系统功能的要求,本系统软件功能模块划分如图2所示。

人机界面模块运行在应用程序的前台,主要实现用户与系统的交互功能,其主要的功能包括机床加工状态信息显示 (手动、MDI、自动、手轮、回参考点等方式)、系统参数管理、刀具管理、文件管理、程序输入、加工仿真、网络功能等。其数据接口主要是实现与内核模块各种信息的交互,人机界面模块从内核模块读取系统的状态信息、报警信息显示给用户;同时可以将用户输入和对参数的设置修改信息传送给内核模块或译码模块,并将用户的对参数和刀具修改的信息保存到一定的配置文件中;译码模块主要把用户编制的NC代码程序翻译成NC系统可以识别的数控指令信息,经过语法检查和数据转换后解释成CNC数控指令,存放在指定的内存专用区间;刀补功能模块包括刀具长度和刀具半径补偿。本模块先进行长度补偿后采用C(半径)刀具补偿。C刀具补偿需要判断两段轨迹之间的转接情况,根据转接情况计算相应的运动轨迹;前瞻处理模块是对连续多段的加工代码进行预处理,分析其几何特性,包括相邻程序段间的转角,单段长度,在考虑机床各轴的加减速能力的基础上,获得程序段内的最大进给速度及最大加速度,同时对程序段间的衔接速度进行优化,使进给速度尽量平滑;插补模块对译码刀补后的CNC数控指令数据进行处理,输出插补运算的结果,对NC数控指令的执行过程进行控制和调整。其具体功能:CNC数控指令的读入,前加减速预处理,插补计算,数据输出;位置控制模块实现对各个控制轴的位置采集,PID控制,DAC输出计算等功能;内置PLC模块接收来自操作面板、机床上的各行程开关、传感器、按钮、强电柜里的继电器以及主轴控制、刀库控制等有关信号,经处理后输出去控制相应器件的运行,实现数控系统的I/O的数字逻辑控制及机床S、M、T功能等;通讯信息主要有系统参数信息、报警信息、数控指令信息和机床及操作面板输入输出信息。

图2 软件系统功能模块

2 ARM软件设计

整个ARM系统支持的总体架构如图3所示,从上到下有依赖关系,由于篇幅限制,文中只对应用程序任务调度和内部通讯进行介绍。

图3 系统支持的框架结构

2.1 ARM任务调度

应用程序的任务调度采用Linux系统的多线程处理,把各任务功能模块放入线程体内部运行,直接依靠操作系统自身的多线程调度机制来实现,系统使用任务过程循环、信号量来实现任务线程的同步互斥,使用定时中断实现多线程的并行处理。内核模块功能区的任务调度,把内核任务放入中断服务程序之中,任务的优先级直接依靠对应的中断优先级,所以内核任务的调度也直接使用Linux内核的模块调度机制,采用触发系统实时中断的方法实现对任务的调度。

2.2 ARM应用层通讯

ARM应用程序内各线程或任务间的通信,主要通过信号量、全局变量、FIFO来进行通信交互;使用信号量完成线程之间的同步与互斥,全局变量和FIFO实现线程间的数据传递及其与内核模块的数据传递。在数控加工时,CNC系统各模块之间需要传递大量的数据信息,主要通过各种缓冲存储区实现数据信息的交换。首先读入数控加工程序到数控加工程序缓冲器,从中逐个读入字符,经译码处理送到译码结果缓冲器,再经一系列插补准备 (包括刀补计算和速度前瞻处理),送到插补缓冲器中,插补程序执行插补运算时,把插补缓冲存储区的内容读入到插补工作存储区,然后用插补工作区的数据进行插补计算,并将结果送到插补输出寄存器。缓冲区统一数据结构如下 (省略数据类型):

typedef struct{

Flag;//总体

M1[8];//代码前 M 指令

M2[8];//代码后 M 指令

ToolNUM;//刀偏

Tooloffset;//刀号

S;//主轴速度,

link;//D0:在此作同标志 //D1:表示换刀

指令段的后段是G0//D2:多段螺纹标志

MainG;//运动类G代码指令

bRefAndOft;//偏置值

bSwitchG;//G指令模态值

bAxisValidData;//轴映像

bAssociatedData;//轴关联

AxisInc[AxisNum];//轴增量

FeedVelo;//0.5转进给F1:分进给F2:

EndVelo;//本段结束速度

Dly;//延时时间

II;//I(圆弧);I(螺纹长轴退尾)

JK;//J(圆弧);K(螺纹短轴退尾)

反冲质子磁谱仪的性能模拟结合了中子探测和反冲质子的动量分析等物理过程。首先,根据中子与反冲聚乙烯靶相互作用机理,采用蒙特卡罗方法模拟不同能量的中子在聚乙烯靶中的输运过程,获得反冲质子的能量和角分布;其次,以束流光学计算为基础,模拟反冲质子在磁分析单元中的色散、偏转和聚焦过程;最后,获得反冲质子在焦平面上的空间分布。模拟计算主要分为5个过程:

KInc;//K(圆弧);

RNn;//R(半径);Nn多头螺纹偏移角/L;

NextL;//下一段螺距标志

AngleInc;//起始角/下段螺螺纹短轴退尾K

SegAdd;//段地址

INT32SBusy;//忙标志

}InterruptPara;

3 DSP模块软件

3.1 任务调度

DSP功能区主要有4个周期性任务在DSP上面运行:插补模块任务,位控模块任务,PLC模块任务和数据监控管理模块。各级任务属性如表1所示。

表1 DSP任务属性

图4 任务调度策略

为保证任务调度的强实时性,使用中断服务程序实现任务调度策略。C6713有14个中断,分成3种类型:复位中断(RESET-最高级中断)、不可屏蔽中断 (NMI-第二级)、可屏蔽中断(INT4-INT15-第三级)[8]。C6713响应一个可屏蔽中断(INT4-INT15)的中断请求时,进入对应的中断服务程序,这个中断服务程序可以设置成可重入的。根据该DSP的这个特点,在可屏蔽中断 (INT4-INT15)中断服务程序内部采用中断嵌套和软件控制的方法实现抢占式优先级多任务调度策略。如下设计实现N个实时任务的优先级调度。如图4所示,任务优先级0~N从高到低,每级每个任务有自己的中断调度时钟周期,设置每0.25 ms的定时中断;当进入定时中断服务程序后,保存相关的寄存器,并开中断;按优先级从高到低检查任务是否在执行或可被调度,如果没有,执行之,否则检查或调度下一优先级任务;当新的中断出现后,该层中断服务程序会保存现场,执行新层的中断服务程序 (即代码重入),执行完新层同层高优先级任务后调度低优先级任务,最后退出该次中断,回到以前保护的现场,继续执行被中断的上一层次中断服务程序。这样可以实现高优先级的任务,可以在新的中断层次中中断上一层次低优先级的任务,同时保证当任务对应的时钟周期到来时被调度一次,从而达到实现抢占式优先级多任务调度策略的目的。

3.2 DSP实时任务间的通信

DSP实时任务间的通信主要通过全局变量和共享内存来完成通信交互;任务之间的同步与互斥使用全局变量,数据传递通信使用共享内存,通信机制如图5所示。

图5 DSP实时任务间的通信

4 芯片间的通讯

该系统芯片间的通讯主要有ARM与DSP,FPGA与DSP和ARM与MCU之间通讯,ARM与MCU模块通过RS485串口通讯,FPGA与DSP通过共享内存进行通讯。文中主要介绍ARM和DSP之间的通讯。

4.1 ARM与DSP的通讯

该系统主要用主机接口HPI(The Host-port Interface)实现ARM与DSP两个处理器主从式通信。HPI是TMS320C6713芯片接口部件,是一种高效的并行口。对于主处理器ARM来说,DSP的HPI接口对应16位异步存储接口的I/O设备。ARM通过寻址HPI接口中的数据寄存器 (HPID)、地址寄存器(HPIA)、控制寄存器 (HPIC)访问DSP的整个存储空间,与DSP进行握手通信。寄存器是通过HPI接口的HCNTL0、HCNTL1选择。HHWIL决定读取的是第1个或第2个半字;HPIC的HWOB决定哪个半字是高半字还是低半字。S3C2440A的nGCS2接到HPI的片选信号 HCS,而 I/O接口 BANK2的地址为0x10000000~0x18000000。LADDR4与 HPI上的 HR/W相连接,LADDR4高低电平对于HPI是读状态/写状态。S3C2440的中断 7与 HPI的 HINT相连。HRDY信号经过反相器后与nWAIT相连接,这样DSP没有准备好数据的时候可以延长ARM的读写周期,使ARM处于等待DSP就绪的状态。

4.2 HPI驱动设计

ARM采用Linux操作系统。Linux字符驱动主要是填写file_operation结构体,该结构的成员函数包括open()、write()、read()、close()等[9],因此对 HPI的操作就是数据读写的操作。

hpi_read函数部分代码如下:

5 结论

基于ARM+DSP+FPGA+MCU嵌入式数控系统,硬件方面减少了系统的外围器件,具有结构轻便、性价比高、稳定性好等优点。软件设计方面,该系统具有高性能的高速控制,系统功能强大,软硬件数据流结构清晰,减少不必要的数据流交互。该系统能够满足高速加工对CNC控制器提出的新要求。

【1】刘艳霞,李淑芬.基于ARM的嵌入式数控系统[J].微计算机信息,2006,22(35):90 -91.

【2】朱晓洁,舒志兵.基于ARM+FPGA的嵌入式数控系统[J].机床与液压,2008,36(7):311 -313.

【3】王田苗,陈友东,孙恺,等.基于UC/OS-2嵌入式数控系统研制[J].北京航空航天大学学报,2006,32(4):471 -480.

【4】周祖德,龙毅宏,刘泉,等.嵌入式网络数控系统[J].机械工程学报,2007,5(5):1 -7.

【5】ZHOU Z D,YIN Y,LONG Y H,et al.Embedded NC System Based on ARM and DSP[C]//Proceedings of the 2nd IEEE/ASME International Conference on Mechatronic and Embedded Systems and Applications,2006:1 -3.

【6】REN Qiang,JIANG Tingbiao.Research on Embedded Networked Numerical Control System Based on ARM and DSP[C]//11th IEEE International Conference on Communication Technology,2008:631 -633.

【7】王应莉.基于ARM+DSP构架的视频处理系统[D].成都:电子科技大学,2004.

【8】TMS320C6713,TMS320C6713B Floating-Point Digital Signal Processors[R].Texas Instruments Inc.,2004.

【9】CORBET Jonathan,RUBIN Alessandro,KROAH-HARTMAN Greeg.Linux设备驱动程序[M].3版.魏永明,等,译.北京:中国电力出版社,2006.

猜你喜欢

服务程序任务调度数控系统
SylixOS系统的中断嵌套机制研究与实现
基于C#的进程守护程序的设计
UDP穿透NAT技术实现数据唤醒车联网T-Box设备的方案
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于时间负载均衡蚁群算法的云任务调度优化
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
云计算环境中任务调度策略