最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于数控流水线技术的开放式数控系统(上)

发布时间:2013-03-13 作者:董靖川 王太勇 徐跃  来源:万方数据
为了能使开放式数控系统的设计不依赖于特定的软硬件平台,提出了一种由数控主控流水线线程、驱动程序和数控微代码实时执行单元构成的数控流水线体系。

1.2.2 控制驱动层
    控制驱动层内唯一的模块是驱动程序模块。在多数现代操作系统中,驱动程序属于内核的一部分,比用户程序具有更高的特权,因此可直接对硬件进行访问[12]。在数控流水线中,驱动程序功能十分精简,以便减少在不同系统间移植的工作量,提高系统的开放性。控制驱动层仅仅提供了最基本的NCM 缓冲区定位、读/写、NCMP 与上位机的基本通信等功能;驱动程序本身并不关心NCM的具体含义。

1.2.3 数控微代码实时执行单元NCMP
    数控微代码实时执行单元主要完成NCM 代码的执行、机床电气信号的接口、强实时输入信号本地处理等强实时功能。每一条NCM 代码对于NCMP 而言是不可分割的“原子”操作,也是数控流水线中算法复杂性最低、调用频率最高、实时性最强的功能。因此,这部分可通过独立的嵌入式微控制器(Microcontroller Unit, MCU)和现场可编程门阵列(Field Programmable Gate Array, FPGA)或复杂可编程逻辑器件(Complex Programmable Logic Device, CPLD)等可编程逻辑器件(ProgrammableLogic Device, PLD)实现,以确保高速状态下的实时性。但由于算法简单,因此只需要低成本少量硬件即可实现。由于NCM 缓冲区缓存了一段时间内的NCM 代码,因此降低了对于主控流水线线程的实时性要求。而机床的强实时输入信号(限位、急停等)的处理首先是由NCMP 硬件逻辑实现,确保了最快的响应速度和高可靠性的要求。此外,NCMP 还负责采集当前状态信息,并通过驱动程序反馈给上位机。

1.3 基于数控流水线的数控系统架构
    应用数控流水线技术的一种基本控制方案如图 3 所示。数控系统的控制程序以一个操作系统进程的方式运行。此进程包含两个线程:数控流水线线程和管理线程。管理线程对整个加工过程进行管理和监视。管理线程通过配置数据,对流水线线程和驱动程序进行设置,并采集流水线的状态反馈信息用于运行状态监控、显示。同时,管理线程将来自人机界面的键盘命令控制数控流水线的执行状态。数控流水线完成加工程序到机床控制信号的控制功能,并生成状态反馈信息。数控系统的流水线对于数控系统强实时功能进行了封装。管理线程可以通过图 2 中数控主控流水线线程和驱动控制层提供的4 类标准操作接口对流水线的运行进行管理和监视。这4 类接口的功能列于表2。
 

如图

图3 应用数控流水线技术的一种控制方案

    如图

表 2 数控流水线标准操作接口

2 实现数控流水线的单元技术
    数控流水线的设计目标之一是平台无关性,因此在实现数控流水线时采用了如下技术以确保其跨平台开放特征。

2.1 两个重要的接口

    在数控流水线中,数控规范指令接口和数控微代码接口是两个最重要的接口,为不同模块间数据交换提供了标准化的开放界面,保证模块的互换性,从而实现流水线的可重构。
    
2.1.1 数控规范指令(NC Canonical Command, NCCC)接口
   
    NCCC 接口为指令译码模块提供的一个标准的应用程序接口(Application Programming Interface,API)。NCCC 接口试图提供一个通用性强、简明易用的编程手段。NCCC 接口参照了NIST 的RS274NGC 译码器项目中的规范加工函数[13](Canonical Machining Functions)。与规范加工函数相比,

    NCCC 接口重点在于加工动作的描述,因此去掉了如设置计量单位、设置刀具长度偏置等应在指令译码模块内部实现的功能。此外,为了适应数控流水线的需要,又增加了用于反馈状态的解释(程序标签功能),NCCC 缓冲区管理等的新功能。表3 中列举了一些典型的NCCC 指令。

表 3 部分NCCC 指令

如图

注:1. C 函数原型描述,三轴版本

2.1.2 数控微代码(NC Micro-code, NCM)接口

    NCM 接口规定了一组NCMP 执行的标准化指令集及各指令的具体格式。NCM 代码用于NCMP对机床的强实时控制,具有简单而紧凑的可变长度格式,如图4 所示。

如图
 

    如前所述,每一条NCM 代码对于NCMP 而言是一个不可分割的“原子”操作,因此每条指令的功能都十分精简,非常有益于NCMP 的实时执行。实际上,NCM 代码执行过程就是控制和指定的命令相对应的某个执行器件执行一次动作。表4 中列举了一些典型的NCM 代码。

表 4 部分NCM 代码 
如图

    NCM 代码定义了基本执行动作的结果,但并未规定动作的具体实施策略。这种开放式的接口定义允许不同的厂商或用户定制自己的NCM 代码执行策略,设计出适合特定场合的NCMP。
2.2 多线程编程及其操作系统支持

    数控流水线中,数控主控流水线线程应尽量做到与操作系统无关,以便能够在多种操作系统间移植,提高其开放程度。目前,国际上流行的多线程编程标准POSIX 1003.1-2001[14]已被Unix、Linux系统及众多的嵌入式操作系统等支持。因此数控主控流水线线程采用此接口进行设计,以确保系统的开放性。至于Windows 等尚未支持此标准的操作系统,可采用Open Source POSIX Threads forWin32 等开源软件使此类系统支持POSIX 线程标准。

2.3 NCMP 的实现
    NCMP 的主要任务是实时执行NCM 代码并反馈执行结果。图5 是NCMP 的一种参考设计方案。NCMP 要求NCM 代码执行具有较高的实时性能。但由于NCM 代码执行算法简单,因此,与传统的运动控制卡相比,NCMP 的设计也十分简单。在参考设计中,NCMP 的功能模块可分为5 个部分:数据缓冲区、NCMP 主控器、NCM 执行器件、机床信号变换与隔离、NCMP 重构接口。 

如图

图5 NCMP 参考设计方案

 

 

2