当前位置:首页 > 单片机 > 单片机
[导读]引言 数控技术是发展尖端工业的使能技术和基础装备,数控系统作为数控车床的大脑,其性能直接影响甚至决定着机床的整体性能。数控机床既是高新技术专业不可缺少的基础装备,又是传统产业更新换代的重要手段。随着半导

引言

数控技术是发展尖端工业的使能技术和基础装备,数控系统作为数控车床的大脑,其性能直接影响甚至决定着机床的整体性能。数控机床既是高新技术专业不可缺少的基础装备,又是传统产业更新换代的重要手段。随着半导体技术的飞速发展,数控系统逐渐朝嵌入式方向发展。嵌人式系统是近年发展最快的技术之一,它是以应用为中心,以计算机技术为基础、软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。目前市面上主流的经济型数控系统如广州数控的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模块均设计为内核模块中,系统启动时,直接加载到实时内核中。


具体划分如图2所示:

点击图片查看大图

图2 系统软件结构和模块划分

3 系统软件详细设计

3.1 用户层与内核层的通信设计

用户层与内核层在嵌人式Linux系统中属于两个相对独立的空间,两个空间之间不能直接进行通信和数据交换。嵌入式Linux系统进行Xenomai实时化改造后,管道通信、消息队列和共享内存等全部保留。用户层与内核层通过管道通信进行连接,在内核层建立管道后,在用户层可以通过读取设备文件进行管道读写。

内核层创建及读写管道如下:

int rt_pipe_create (RT_ PIPE *pipe, const char*name, int minor,siu t poolsize); //创建管道

ssize t rt_pipe_receive (RT_PIPE *pipe, RT_PIPE_MSG **msgp, RTIME timeout);

//从管道接收一条信息;

ssize_t rt_pipe_send (RT_PIPE *pipe, RT_PIPE_MSG *msg, size_tsize, int mode);

//向管道发送一条信息

用户层读写管道如下:

int PipeO=open("/dev/ntp0",O_RDWR);

//打开管道文件

int write(int handle, void *buf, int nbyte);

//向管道文件写入数据

int read(int handle, void *buf, int nbyte);

//读取管道文件数据

3.2 用户层的设计

友好的人机界面是数控必须具备的功能,用户层的主要任务就是提供人机交互界面。通过比较市面上流行的GUI开发软件Qt/Embedded,MiniGUI, UC/GUI和Nano-X,结合Linux特性,本数控系统选用Qt/Embedded进行界面程序的开发。Qt/E是一个完整的基于framebuffer的GUI系统,它用C++编写,对用C语言程序有很好的兼容性,有着丰富的API函数库和图形处理功能,界面开发与图形驱动分开,易于开发和移植,同时它也是开源软件。

设计过程中,根据用户层的划分,把位置、刀补、程序等界面采用单独的QWidget设计,每个界面都有自己的头文件和cpp文件,所有界面公用一个数据结构,将各个界面通用的参数放到一起,设置一个主Mainwindow,用于系统初始化、界面切换、变量初始化以及加载系统信息等功能。主界面中对按键的处理也是相当重要的,开发过程中充分利用Qt中的按键事件,设计过程中区分按下及释放事件,并单独编写按键更新程序。具体如下:

void mainWindow::keyPressEvent(QKeyEvent *k}

void mainWindow::keyReleaseEvent(QKeyEvent *k)

void mainWindow::keyUpdateQ

用户层设计过程中着重要考虑的就是各个界面之间的通信问题,各界面之间充分利用Qt特有的信号与槽的通信机制,在界面之间进行信号发送和槽函数调用。具体实现如下:

signals: void mySignal(); //信号

public slots: void mySlotQ; //槽函数

bool QObject::connect(const QObject*sender,

const char*signal, const QObject*receiver,

const char * member);//信号与槽函数的连接



程序中可以通过emit();函数发出signals,调用与信号连接的槽函数。

3.3 内核层的设计

系统软件设计的关键仍然是内核层的设计,内核层满足硬实时任务的

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

现代控制系统的构成与运作你了解吗?在科技飞速发展的今天,控制系统作为技术体系的神经中枢,其作用日益凸显。无论是工业生产线上精准无误的机械臂,还是家庭中智能便捷的自动化设备,背后都离不开精密复杂的控制系统。那么,这些看似神...

关键字: 数控系统 数字控制

在现代制造业的舞台上,数控系统如同指挥家一般,精确地指挥着机械的运动,确保每一个零件、每一件产品都能达到设计的精确度。那么,什么是数控系统呢?数控系统,全称为数字控制系统,是一种通过计算机进行数字化程序控制的自动化技术。...

关键字: 数控系统 数字控制

数控系统作为现代制造业的核心,其发展水平直接影响着制造业的精度、效率和智能化程度。随着全球工业化进程的加速,尤其是在工业4.0和智能制造的背景下,数控系统正朝着更加智能化、精准化和柔性化的方向发展。本文将深入探讨数控系统...

关键字: 数控系统 数字控制

助力顶级特效公司Wētā FX构建云上工作室,支持《阿凡达:水之道》高达33亿渲染线程小时的云上制作任务 北京2022年12月19日 /美通社/ -- 近期,时隔十三年重返大荧幕的阿凡达系列电影《阿凡达:水之道》在全球...

关键字: 亚马逊 线程 云计算 数字化

摩尔线程专注于研发设计全功能GPU芯片及相关产品,支持3D高速图形渲染、AI训练推理加速、超高清视频编解码和高性能科学计算等多种组合工作负载,能够为中国科技生态合作伙伴提供计算加速能力。

关键字: 摩尔 线程 GPU

作为丹纳赫生命科学平台旗下的重要运营公司,Pall颇尔公司将进一步加大在华投资,导入更高芯片线程的产线及技术,强化对国内客户的供应链稳定性。Pall颇尔中国已落实1100万美元的产能扩建投资,以进一步拓建北京工厂的半导体...

关键字: 半导体 供应链 微电子 线程

(全球TMT2021年12月16日讯)摩尔线程与浪潮在京签署元脑战略合作协议。摩尔线程与浪潮将发挥各自在技术、生态和产业等方面的领先优势,基于创新算力芯片和元脑生态平台展开多维和深度合作,联手开发领先的人工智能行业解决...

关键字: 线程

目录Java线程与OS线程的区别与关联JNI的作用JNIEnv和JavaVM是啥JNI中数据是如何传递的Java线程与Native(OS)线程的区别联系:Java线程其实是一层OS线程的封装,本质上就是OS线程。【以前版...

关键字: Android NI 线程 LOADER

线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题。

关键字: 线程 进程 JAVA

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

关键字: 线程 进程 控制流
关闭
关闭