基于I²C和双ARM的PCB钻床控制器设计
3.软件设计
软件部分主要由人机交互系统软件和机床运动控制系统软件组成。人机交互系统软件结构比较复杂,所以软件移植了μC/OS-II 操作系统。机床运动控制系统软件结构比较简单,但是这部分软件有很强的实时性要求,所以软件没有移植操作系统,而是采用时间触发模式编写。
3.1 人机交互系统软件设计
人机交互系统软件采用分层方式进行编写。软件分为系统层和应用层。系统层设计的主要任务是首先进行嵌入式操作系统μC/OS-II 移植,然后再对操作系统内核进行扩展,形成一个简单高效的平台。应用层设计是在这个平台的基础上实现加工文件的操作,机床手动加工,机床自动加工,机床参数设置等任务。
系统层以μC/OS-II 操作系统内核为基础进行移植和扩展。所谓移植,是指通过编写一定代码,使得操作系统能够在特定的处理器平台上运行。根据μC/OS-II 的说明,移植包括对与处理器相关的OS_CPU.H,OS_CPU_A..ASM,OS_CPU_C.C 三个文件中的代码进行移植[4]。在μC/OS-II 提供的内核基础上,通过设计驱动程序模块,系统任务,操作系统的API 函数和任务调度模块等对操作系统内核进行扩展。通过设计实现LCD,键盘,K9F2808,I²C总线和串口通信等的接口函数,建立驱动程序模块,使操作系统API 函数和底层硬件分开。系统任务部分设计了LCD 刷新任务,键盘读取任务,I²C总线读写任务这三个基本任务,并随着操作系统的启动而运行。
应用层在系统层提供的 API 函数的基础上,设计了主任务和机床手动加工,自动加工,文件传输,参数设置等任务。系统的入口函数Main 函数流程如图2 所示。主任务函数结构如图3 所示:
3.2.LPC2214 程序设计
机床运动控制系统控制程序结构比较简单,程序模块间相对独立,但是实时性要求很高。由于嵌入式实时操作系统会占用一部分系统资源,影响系统的实时性,增加系统设计难度,所以,我们没有移植嵌入式实时操作系统,而是使用简单时间调度方式。使用该调度方式可以使程序具有较好的健壮性和稳定性。系统采用定时器来产生系统调度的节拍,利用定时器中断程序进行调度。系统使用定时器0 产生系统的节拍,定时周期为1ms。系统利用PWM控制器的中断和四个比较寄存器控制交流伺服系统进给脉冲的生成。我们把任务分成两类:一类为周期任务,另一类为非周期任务。每一个任务都有一个任务控制块,任务控制块的数据结构如下:
typedef data struct
{void (*P_task)(void); //指向任务的指针
unsigned int Delay; //延时时间
unsigned int Period; //任务再次运行的间隔时间
unsigned int run; //任务需要运行的次数
}task;
任务控制块包含了任务被调度的重要信息:任务是周期任务还是非周期任务,以及任务在何时运行,任务准备就绪的标志等。控制系统的主要任务有:X 进给轴脉冲发送任务,Y 进给轴控制任务,Z1 进给轴控制任务,Z2 进给轴控制任务,主轴电机控制任务,换刀任务等。
4.结束语
在控制器方案考虑和设计中,我们充分考虑了嵌入式系统对功耗,成本和尺寸的敏感性。基于I2C 的双ARM结构的钻床控制器具有性能优良,系统集成度高,性能可靠,人机交互友好,可扩展性好的特点,相对于传统的基于单片机的钻床控制器在性能上有很大的提高。本设计为嵌入式系统在印刷电路板控制器中的应用提供了新的思路,具有较好的应用价值。
评论