首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于嵌入式linux的数控系统软件设计

基于嵌入式linux的数控系统软件设计

引言
    数控技术是发展尖端工业的使能技术和基础装备,数控系统作为数控车床的大脑,其性能直接影响甚至决定着机床的整体性能。数控机床既是高新技术专业不可缺少的基础装备,又是传统产业更新换代的重要手段。随着半导体技术的飞速发展,数控系统逐渐朝嵌入式方向发展。嵌人式系统是近年发展最快的技术之一,它是以应用为中心,以计算机技术为基础、软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。目前市面上主流的经济型数控系统如广州数控的GSK980TDb和北京凯恩帝K90Ti等都是使用了ARM处理器构建的嵌入式数控系统。
    本数控系统硬件平台分为两大组成部分:ARM子系统和FPGA子系统,采用主从式的两级插补结构。ARM子系统采用三星S3C24I0处理器,主要用于粗插补计算,以及键盘、显示和D/A转换等管理工作。FPGA子系统采用Altera公司的ACEX系列芯片,主要负责系统的精插补脉冲输出、编码器脉冲计数以及I/O控制等工作。
    本数控系统软件部分采用Xenomai实时化方案改造标准Linux内核,构建基于Xenomai的实时嵌入式操作系统。Xenomai/Linux系统为用户程序提供了内核空间和用户空间两种模式,前者通过系统调用接口实现,后者通过实时内核实现。用户空间的执行模式保证了系统的可靠性和良好的软实时性,内核空间程序则能提供优秀的硬实时性。
1 系统硬件模块设计
    数控系统开发的关键是软件部分,为缩短系统开发周期,本系统尽量采用模块化设计,积极利用市场现有的成熟技术。该数控系统按功能模块构架设计,大致划分为如下几个模块:
    控制模块:控制模块的主处理器采用市面上流行的三星S3C2410处理器,片上运行嵌人式Linux+Xenomai操作系统,负责信息存储、LCD显示、串口传输、USB接口的处理,实现译码、文件系统、图形显示和PLC等功能。控制模块采用市面流行的MINI2440开发板实现控制功能,该开发小板集成了三星S3C2440微处理器、并使用两片外接的SDRAM芯片,两片共64Mb并连在一起形成32位的数据总线宽度;配备2Mb的NOR FLASH和128Mb的NAND FLASH,支持两种FLASH启动,有利于开发阶段的调试和系统文件的烧写。
    键盘模块:采用AVR单片机,负责键盘扫描、LED灯点亮等信号处理,通过串行口与ARM进行通信。
    FPGA模块:该模块采用AITERA的FPGA控制。负责输入输出接口控制、编码器反馈和机床I/O信号处理。FPGA模块与键盘模块一起集成设计在核心板上,采用4层板设计,留出各个JTAG接口,利于集中调试和烧写。
    电源及接口模块:该模块主要用于核心板和控制板的供电及I/O接口处理。该模块设置在I/O接口板上,该板同样采用4层板设计,配置各种外部连接和调试插头。
    各模块组成的数控系统硬件结构如下图所示:
点击图片查看大图
   
图1 系统硬件结构
2 系统软件模块设计
    2.1数控系统软件平台的选择
    数控系统本身是一个复杂的多任务并发的实时应用系统,目前市面上比较流行的实时操作系统有VxWorks, QNX等,这些系统实时性好,但开放性差并且价格昂贵;开源但不免费的uC/OS-II是由美国人Jean J.Labrosse先生所编写的实时嵌入式操作系统内核,实时性好并且相当精简,但由于其仅是操作系统内核,针对其内核要进行开发的内容和项目比较多,影响开发进度;因此本系统选用开放性好、移植性强、免费并且开源的嵌人式Linux+Xenomai实时操作系统作为软件平台,该软件平台具有良好的用户态实时性和优秀的内核态实时性,可分别用于实时性不高的软实时任务和实时性要求很高的硬实时任务。
    2.2 系统的软件结构
    系统软件部分的开发是关乎整个数控系统研发成败的关键。数控系统具备的功能比较多,但其主要功能是解释翻译数控代码,并按照代码要求自动完成工件的加工。自动加工过程主要是完成刀具轨迹的控制,如加减速、插补、位置控制等;其次是一些逻辑控制,如冷却液开关及限位控制等等;除具备主要功能外,数控系统应该具备良好的人机界面等功能。如何合理的布置这些层次结构及划分模块,对整个数控系统的开放性、后期可扩展性以及系统的性能都具有重要意义。结合选用的嵌入式Linux+Xenomai软件平台,综合考虑数控系统的功能需求及多任务之间数据依赖等要求,我们把系统分两层进行开发:用户层和内核层,每层又划分为若干模块和子模块,同层模块相互配合共同完成该层任务,用户层与内核层之间通过命名管道实现数据通信。
    用户层:主要提供系统的人机接口界面,人机接口界面内包含有位置界面、程序界面、刀补界面、设置界面、参数界面和诊断界面。人机接口界面为用户提供直观的操作界面及各种加工信息、状态参数和诊断参数等,等待接受用户的操作要求,并将操作要求和数据处理后传递给内核层。
    内核层:主要用于内核控制、运算控制、输人输出控制,分算法模块和FPGA模块;算法模块内又分译码、预插补、插补、位置控制、加减速控制、PLC控制等子模块。每个子模块都是一个单独的线程,子模块之间通过消息队列进行通信。内核层中的算法模块是整个系统的核心,它进行的都是实时性要求很高的插补、加减速、位置等控制任务,实现毫米级甚至微秒级的间隔周期;决定着系统的整体性能。FPGA模块用于直接控制硬件芯片,完成输人输出控制。算法模块和FPGA模块均设计为内核模块中,系统启动时,直接加载到实时内核中。
返回列表