APP下载

基于LINUX+RTLINUX平台的开放式数控系统的设计*

2012-11-24姜凌羽

组合机床与自动化加工技术 2012年10期
关键词:PC机驱动程序数控系统

潘 策,姜凌羽

(1.大连高金数控技术有限公司,辽宁 大连 116001;2.北京航空航天大学 机械工程及自动化学院,北京 100083)

0 引言

开放式的数控系统是随着计算机数控系统(CNC)的飞速发展而逐渐成为现代机床控制领域的新方向,其体系结构的标准化、柔性化、功能模块化以及超强的可扩展性和移植性,特别是它能够通过现场总线将单个设备连接,实现控制的网络化和集成化,这是传统的体系结构所无法比拟的。在软件应用平台开发上也具有更加宽广的空间,能满足不同用户对其二次开发的不同需求。

在开放式数控系统中主要有两大功能模块:运动控制模块和伺服控制模块。运动控制模块主要实现位置环的控制;伺服控制模块主要实现速度环和电流环的控制。运动控制模块通过特定的控制算法将机床位置参数转化成速度指令,传递给伺服控制模块,后者将传来的速度指令和速度反馈值比较,其偏差作为速度控制器收入,其输出为转矩给定,并和电流环的反馈值比较,经转矩/电流变换后得到转矩电流给定,从而完成一次完整的三环闭环控制。电流环是内环,速度环是中间环,位置环是外环。机床电机得到是电流输出值,而实现的是机床的位置控制,因此运动控制模块决定了开放式数控系统的精度。

1 开放式数控系统的构成

IEEE关于开放式系统的定义是:开放式系统能有效地运行于不同的平台之上,可以与其他应用系统相互操作,并提供与用户交互的统一风格,即所谓互操作性、可移植性、可伸缩性和可互换性[1]。

开放式数控系统平台由硬件和软件组成。系统软件包括实时操作系统、通讯系统、设备驱动程序以及其它应用程序。系统软件通过标准的应用程序接口向应用软件提供服务。系统硬件包括组成系统的各种物理实体。

1.1 CUnet现场网络

Cunet网(Corective Uncontiunse Network)为无主从式、数据共享型现场总线网。特点是:把连接I/O设备的所有功能集成在一块边长16mm的正方形IC芯片中,可省去使用者许多复杂的事先设置工作;仅用2条线,连接所有的I/O局,有极高的可维护性;IC芯片内带高性能纠错功能,具有极好的耐环境性;采用数据共享式通讯网络组织方式,整个网络溶为一体;不仅仅传送I/O数据,更可传送网络通讯局自身的有关信息。一个CUnet网络中最多可连接64台I/O设备。64台I/O设备共享所有的I/O信息[2]。

MKY40是为Cunet总线网络而配置的集成芯片,将各个站点通过MKY40相连接,可以形成分布式处理系统网络,从而增强整个网络的存储和处理能力[2]。

Cunet有两种工作模式:内存模

式和I/O模式。两种模式之间可以通过硬件设置相互转换。处于内存模式的MKY40有两个接口:总线接口(BUS-I/F)和网络接口(Network I/F),将BUSI/F和用户端CPU连接,同时将Network I/F和网络连接,可以在Cunet总线网络创建一个内存基站[2]。

1.2 MCX314多轴电机伺服控制器[3]

MCX314是日本NOVA电子公司研制的DSP运动控制专用芯片,能实现4轴3联运动的位置、速度、加速度控制和直线、圆弧、位元3种模式的连续插补位置环闭环控制,其性能优良、接口简单编程方便,广泛应用于数控机床和机器人控制领域。

2 开放式数控系统的硬件设计

本文采用的是通用PC加实时控制单元的双内核控制结构。利用PC机的Linux形成完善的人机界面,同时用软件来实现各种先进的控制技术;开放式结构平台可以集成不同开发商提供的软件并适合联网需要,且具有与硬件无关的特性。如图1所示。

图1 基于PCI总线的运动控制原理图

PCI9052是连接PCI总线和MCX314的桥接口电路芯片,从PC机中发来的加工参数、插补轨迹以及状态信息通过PCI总线传到PCI9052的高速缓存FIFO中,PCI9052作为总线主设备将PC机传来的信息经过缓存最终存储到MKY40内,由于MKY40映射为PC机的一部分内存地址所以PC机就像操作内存一样将信息存储到MKY40,等待MCX314的读取。MCX314定时从MKY40中读取PC机传来的各种控制信息。MCX314的主要功能是根据PC机送来的插补信息通过插补算。如图2所示。

图2 PCI9052与PCI总线和MCX314的接口电路

3 开放式数控系统的软件设计

在Linux下,驱动程序处于“核心态”,所有的硬件设备都被映射为文件,对外提供统一的标准的软件调用接口。上层软件通过fopen(),fread(),fwrite()等,透明地在用户层对硬件实现控制[4]。

驱动程序的主要工作是:监控板卡状态,控制板卡的热插拔和热交换;提供应用程序访问接口;从RAM中取出指令数据;根据应用程序的读写请求,将数据提供给应用程序。

PCI设备的驱动程序主要解决的首先是即插即用问题,如何获取系统分配给该设备的配置资源,然后是如何访问设备I/O内存映射硬件,如果处理硬件中断,最后还要解决和应用程序的通讯问题。

图3 基于PCI总线的运动控制原理图

3.1 驱动程序的编写

3.1.1 设备驱动程序的结构

Linux的设备驱动程序大致可以分为如下几个部分:

驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理。

驱动程序的注册与注销:通过在驱动程序的初始化过程中调用register_chrdev()或者register_blkdev()来完成。而在关闭字符设备或者块设备时,则需要通过调unregister_chrdev()或unregister_blkdev()从内核中注销设备,同时释放占用的主设备号。

设备的打开与释放通过调用file_operations结构中的函数open()和release()来完成的。

设备的读写操作:直接使用函数read()和write()就可以了。

设备的控制操作:通过设备驱动程序中的函数ioctl()来完成。

设备的中断和轮询处理:对于不支持中断的硬件设备,读写时需要轮流查询设备状态,以便决定是否继续进行数据传输。如果设备支持中断,则可以按中断方式进行操作。

3.1.2 设备驱动程序的接口

Linux中的I/O子系统向内核中的其他部分提供了一个统一的标准设备接口,这是通过include/linux/fs.h中的数据结构file_operations来完成。当应用程序对设备文件进行诸如open、close、read、write等操作时,Linux内核将通过file_operations结构访问驱动程序提供的函数。例如,当应用程序对设备文件执行读操作时,内核将调用file_operations结构中的read函数。

3.1.3 设备驱动程序的动态加载

从本质上来讲,模块也是内核的一部分,它不同于普通的应用程序,不能调用位于用户态下的C或者C++库函数,而只能调用Linux内核提供的函数,在/proc/ksyms中可以查看到内核提供的所有函数。

在以模块方式编写驱动程序时,要实现两个必不可少的函数init_module()和cleanup_module(),而且至少要包含<linux/krernel.h>和<linux/module.h>两个头文件。在用gcc编译内核模块时,需要加上-DMODULE-D_KERNEL_-DLINUX这几个参数,编译生成的模块(一般为.o文件)可以使用命令insmod载入Linux内核,从而成为内核的一个组成部分,此时内核会调用模块中的函数init_module()。当不需要该模块时,可以使用rmmod命令进行卸载,此进内核会调用模块中的函数cleanup_module()。任何时候都可以使用命令来lsmod查看目前已经加载的模块以及正在使用该模块的用户数。

3.2 应用程序的编写

上层应用程序模块主要包括:人机接口模块、解释程序模块、PLC接口模块、插补模块 、运动算法模块五大部分,通过将输入指令逐步分解、传达至运动控制器,实现对机床的准确控制,由于软件采用了模块化,同时基于组件技术,所以进行软件升级以及用户进行二次开发都比较方便[4]

4 结束语

基于LINUX+RTLINUX双内核开发平台和PCI总线的开放式数控系统,具有实时性高、成本低,可移植性和可扩展性好,易于二次开发等优点,能够满足数控车床、铣床、车铣中心、车削中心,立式和卧式加工中心等高精度机床的应用。

[1]于东,郭锐锋.开放式数控系统域建模研究[J].小型微型计算机统,2000.

[2]Technical report No.006> CUnet Family> MKY40,Method of selecting the crystal oscillator for MKY40,2006.

[3]叶佩青,汪劲松.MCX314运动控制芯片与数控系统设计[M].北京:北京航空航天大学出版社,2002.

[4]马毅,李霞峰,盛焕华.基于Linux的实时操作系统设计[J]. 计算机工程与应用,2001(12):109-110,176.

[5]冯俊平.基于MPC8250的嵌入式Linux系统开发[D].西安电子科技大学,2006.

[6]张俊鹏.PCI通信板卡及Linux驱动设计与实现[D].大连:大连理工大学,2007.

[7]赵昌永,等.一种基于嵌入式Linux的视频采集系统仪器仪表学报,2005.

[8]DVB-S机顶盒前端驱动的软件实现.天津大学,2006.

猜你喜欢

PC机驱动程序数控系统
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
基于单片机与PC机的电气量采集系统设计
VIVID3彩色超声仪结构原理及维修