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

基于PC机的通用数控系统软件的设计与应用

发布时间:2013-10-10 作者:曾盛绰 徐静  来源:万方数据
关键字:CNC 数控系统 多线程 
在Windows操作系统平台上所设计的通用数控系统软件是一个具有开放性、模块化特征的CNC应用软件。该软件已在改造后的CK6140H普通车床上应用,效果良好。

  CNC系统软件结构的设计与实现是系统开发的核心部分。CNC系统实质上是一个实时多任务系统,主要实现控制对象的协调运动和精确定位,其控制软件的各功能模块可认为是交由系统完成的任务。这些任务以顺序方式或并行方式协调运行。因此,系统软件必须要有一个合理的结构以确保各模块间的协调工作。

1 CNC系统软件要求

  CNC系统在高速度、高精度加工控制、图形显示等方面应具有很强的功能。因此,CNC系统的系统软件应达到以下要求:

  (1)强实时性。CNC系统软件应具有实时的进行数据计算和对各种异步事件进行检测和处理的功能。

  (2)任务并发处理与调度。CNC装置通常作为一个独立的过程控制单元应用于工业自动化生产过程中,系统软件必须完成管理和控制两大功能。系统的管理部分包括输入、I/O处理、显示、诊断等,而控制部分包括译码、刀具补偿、速度处理和位置控制等。在系统实际运行过程中,这多个任务中的若干个任务需要同时工作。对于多个任务并发的情况,系统软件应能相应进行处理和调度,提高CPU的利用率,缩短加工时间,提高工作效率。

  (3)开放性。系统软件应能根据用户不同的工作环境进行裁剪和配置,增减控制和管理功能。

  (4)模块化。各模块间尽量相互独立而又能相互配合。

(5)友好的人机界面。方便用户进行操作和及时了解系统当前的运行状态。

2 CNC系统软件的模块化设计

  2.1 设计思路

  根据Windows的多线程机制,建立CNC系统软件的多线程模型,将CNC系统中管理、控制功能实现分作若干个模块,分别置于独立的线程中,以消息排队和消息循环推动CNC系统的运行,那么,系统的整体运行效率将得到较大提高。

  Windows多线程模型建立CNC系统软件的多线程模型,实际实现是将CNC软件模块置于若干独立的进程中来实现。Windows提供了几种高效的进程间交换数据的机制,如管道、邮路和文件映射等。本文选择文件映射方式来实现各进程间的数据交换。

  所谓文件映射,简单地说,就是将磁盘文件(或部分)映射到某段内存空间,对磁盘文件的访问转变成对内存的访问,显然,这大大提高了访问速度。实际的映射过程是通过若干API函数来实现的,首先需要创建一个“文件映射对象”,而这个对象是共享的,各个进程可将对象映射到自己的内存地址空间,各进程的映射地址不一定相同,但地址中的内容却一定是相同的,各进程对各自的映射地址的访问都归结为对“文件映射对象”的访问。因此,可以认为“文件映射”是将文件映射到内存供各进程共享。

  这种方案在一定程度上提高了系统运行效率,在实际的调试加工过程中,电机运动也比较流畅,无阻滞现象,以插补运动后得到的圆弧效果来看,这一设计理论是可行的。

  2.2 CNC系统的多线程模型与模块设计

  2.2.1 CNC系统的多线程模型

  CNC系统的多线程模型包括主控制线程、自动加工线程和显示/面板操作线程。

  主控制线程负责实时启动和消除自动加工线程,系统退出时,将消除显示/面板操作线程。其主要完成的工作内容非常复杂,如系统初始化;数控加工程序输入、编辑;参数设置;操作功能控制;坐标设置;语法检查和文件编译等。主控线程中应设计一系列相对独立的功能模块来分别完成上述任务。

  自动加工线程如图1所示,主要完成译码,刀具补偿,插补,产生加工数据,驱动控制器工作。加工程序由计算机进行译码,刀具补偿,速度处理后,得到刀具中心的插补指令数据。计算机将这些插补指令数据和其他指令数据以固定格式存放于一内存空间中。每次中断发生时,计算机根据这些指令数据进行相应的处理。如存在插补指令,则实时算出插补数据,并送回内存空间,运动控制器根据这些数据控制相应轴的电机动作。当计算机中一帧指令数据读完后,在插补间隙自动计算出新的插补指令数据,送回内存空间。Windows是一种非独占式的多任务系统,由于实际加工(特别是插补)对于实时性要求很高,因此选择采用中断方式实现对控制器的输入控制。

自动加工线程
图1 自动加工线程

  显示/面板操作线程模块完成的功能有刀位坐标,刀位运动轨迹显示,面板操作读人,故障指示等。

  2.2.2 CNC软件功能模块

  开放式的CNC控制系统采用分层的体系结构。分层使得各层实现隔离,层与层间通过标准的接口进行通信,实现较好的可移植性。

  2.3 CNC系统主要软件模块的设计

  2.3.1 菜单总控模块

  菜单总控模块是整个系统的顶层调度模块,各子系统功能模块都经由它进行调度执行。总控模块由系统运行界面和各回调函数组成。回调函数完成界面上的控件的事件驱动操作。通过回调函数,进入下一级子功能模块,如NC文件管理、操作管理、刀库管理和参数设置等。

  2.3.2 自动运行模块

  (1)加工进程的建立与管理。一旦CNC系统接受了一个经过_预处理的NC数据文件,并准备开始译码一擀,本系统称其为建立并开始一个加工进程。同时,系统定义的全局性进程数据结构MProcess存储这次加工的所有数据。

  (2)译码。将经过预处理的NC指令字符串读入系统进程数据结构中的对应插补译码用数据结构的子数据结构Ncfileformat中。

  (3)插补和速度计算。在算法的具体实现上,针对一般的直线和圆弧指令插补和要求与主轴同步的螺纹插补的不同要求设计了不同的运行策略和流程。

  对一般的直线和圆弧指令G01/G02/G03的插补来说,主要矛盾是要保证插补输出的连续性与准确性。特别是G02/G03指令,由于插补中主要使用最占用CPU时间的三角函数计算,再加上轨迹位置的显示更新,容易影响插补的实时性,造成系统走走停停,影响加工质量。为避免这种情况,把更新频率降到每10次插补刷新一次屏幕,可以减少占用CPU的时间。对螺纹插补来说,关键是要求对主轴联动建立严格的同步。由于螺纹插补的算法本身比较简单,只牵扯到不多的乘法运算和流程判断,占用CPU时间不多。因此,设计时把它的插补运算部分放入8~10ms的中断程序中进行运算,在第二次中断开始时输出,再配合启动时预读主轴信号进行预计算的方式,即可同时满足系统加工的连续性和实时性的要求。

2
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。