基于Windows的全软件数控系统体系结构研究

2015-04-26 08:23:58雷立群王戬
机床与液压 2015年2期
关键词:实时控制数控系统线程

雷立群,王戬

(吉林农业科技学院机械与土木工程学院,吉林吉林 132101)

数控系统是一种典型的多任务实时控制系统,系统中的强实时控制部分主要是插补运算和位置控制脉冲的输出。众所周知,插补是数控机床控制刀具运动轨迹的核心,传统的数控系统多因实时性原因,主要采用硬件来实现强实时控制部分[1-3],硬件实现的数控系统限制了系统的体系结构,为开放式数控系统的实现增加了难度。而采用全软件的方法实现数控系统是实现开放式数控系统最简洁的途径,文献[4]提出采用引入外部时钟中断的方法,有效解决了Windows操作系统高精度定时时钟的问题,使全软件数控系统的实现成为可能。作者在此基础上构建了Windows操作系统全软件结构的整体建模,实验证明这种数控系统的结构模型是可行的。

数控加工是一种复杂的控制过程,在加工过程中同一时间段中可能需要同时完成两种不同的功能。例如,系统在插补的同时,需要不断地翻译并向内存送入数控代码。同时,系统还要能够随时接收用户发出的紧急控制信息等。全软件数控系统在总设计上的关键在于如何使系统能够更为精确和快速地响应控制,因此在程序的总体设计上尽量避免程序之间相互调用而产生的软件延时问题。

1 数控系统的整体结构模型

数控系统在整体上采用了分层的软件结构,图1给出了数控系统各个部分之间的相互关系(双箭头表示它们之间可以进行双向数据传输),可以清楚地看到数控系统的软件结构以及系统的控制策略。数控系统由底层WDM程序与顶层控制应用程序两部分组成:WDM程序主要负责系统的强实时控制部分,如外部硬件中断的截取、控制脉冲的输出等;而顶层应用程序则主要负责数控代码的编译、控制参数的设置、加工位置信息的显示等。

图1 数控系统整体结构框图

从图中可以看到,WDM程序位于控制结构的中间部分。因此在控制的过程中,底层的WDM程序必然要不断地同外部硬件以及顶层应用程序通信。

2 实时控制过程

从图1可以看到全软件数控系统整体上分为3个大的部分,这3个大的部分文中采用了多线程的编程实现方式,包括主线程、数据处理线程和插补线程。在程序的实现上,一方面要考虑如何避免线程之间的切换对强实时控制部分产生的影响,另一方面又要协调好各个线程之间的同步关系,以保证系统的整体控制结构更加合理完善。下面对各线程的功能进行一一介绍:

(1)主线程。负责对数控文件的处理(例如,对文件的编辑、修改、存储和读入等),以及接收用户的控制信息和输出系统的显示信息,如系统的启动、暂停、继续执行、倍率调整等的控制以及加工中刀具的位置、进给速度等内容的显示。

(2)数据处理线程。该线程主要负责对数控代码的处理,包括数控文件的编译、向内存中存放编译完成的数控指令、负责实时接收插补过程中传递过来的各种需要显示的数据信息和命令等。

(3)插补线程。主要用于实现系统中实时性较强的插补运算、位置控制等内容。图2为各线程之间的状态示意图。

图2 线接触加工数控系统线程之间的同步关系

从图2中可以看到各个线程之间具有如下的关系:

(1)主线程负责激活和挂起其他的线程。当接收到启动加工的信息后主线程负责激活数据处理线程和插补线程,当加工结束或接收到暂停信息时,主线程负责挂起其他的线程。

(2)线程之间的同步关系。插补线程与数据处理线程之间总是按照:插补线程→数据处理线程→插补线程→数据处理线程…这样的过程交替执行的。在插补过程中,数据处理线程一直处于等待状态,准备接收插补线程发来的编译数控文件并存入数控代码的命令,或者是接收用于显示刀具运动位置的数据。因此,它们之间存在着线程之间的同步问题。插补线程和数据处理线程之间是通过Win32事件通知的方式进行通信的。具体的实现过程是:在数据处理线程中创建一个事件后,直接将该事件句柄传递给插补线程,然后等待插补线程发送事件消息。插补线程通过类KEvent获取这个事件的一个对象指针后,通过设置事件信号状态来触发应用程序。

在插补线程中,当插补周期结束时,如果需要继续向内存空间填充数控指令时,则通过在延迟过程调用(DPC)函数内设置事件为信号状态,通知应用程序,程序如下:

VOIDSampleISADevice::dpc

{

m_pEventToSignal->Set();

}

数据处理线程通过下面的方式接收插补线程发送过来的通知信息:

while(1)

{

WaitForSingleObject(hEvent1,INFINITE);//等待插补命令执行完毕…//执行相应的操作}

3 控制/显示界面的组成

文中采用前后台的方式设计了Windows操作系统下数控系统的软件结构,其中前台软件用C++Bulider设计完成,后台采用WDM设备驱动程序设计实现,数控系统软件可实现对直线、圆弧轮廓的走刀控制。

数控系统的控制界面和加工运动控制过程中的位置显示界面如图3所示,下面对各部分进行具体的介绍。

(1)控制界面

控制面板由两部分组成,在设计时依据的是界面简单、清晰,控制方式便捷的原则进行的。它位于主功能界面的右方,用开关按键以及分页等进行设计的。

(2)显示界面

显示面板也由两部分组成,位于控制面板的左上方和右上方,主要用于显示加工中各个坐标轴的运动位置、加工中的进给速度等。

图3 线接触加工数控系统控制界面

图4 控制界面

图5 显示界面

4 小结

提出了采用多线程的程序结构模式实现全软件控制系统,控制系统的强实时部分在Windows操作系统底层的驱动程序部分实现,管理程序和显示程序等弱实时控制部分在应用程序层面实现,各个控制部分之间通过中断及线程通信来实现。数控系统软件最终实现了对9个轴电机驱动器的控制,实验证明:控制系统的极限加工进给速度可达到1 500 mm/min,系统的最小脉冲当量是0.037μm,数控系统可实现对空间直线、圆弧等轮廓的加工控制。

[1]赖晓丰,刘敬猛,李善锋.基于ARM和运动控制器的嵌入式数控系统设计[J].机床与液压,2011,39(6):86-88.

[2]朱利东,殷苏民.基于嵌入式实时操作系统的开放式数控系统的研究[J].机床与液压,2004(1):92-95.

[3]杨恒宗,傅星,张师伟.基于DSP与单片机的激光加工数控系统的研究[J].组合机床与自动化加工技术,2005(12):35-37.

[4]雷立群,于振文.基于Windows的全软件数控系统实现方法研究[J].机床与液压,2012,40(9):94-97,20.

[5]何航.Windows开发式数控系统软件设计与研究[D].成都:电子科技大学,2004.

[6]LEI L Q,WANG K Q,HAN J.Implementation Study about the Software CNCSystem Based on Windows[J].Advanced Materials Research,2011,411:264-269.

[7]武安河,邰铭,于洪涛.Windows2000/XPWDM设备驱动程序开发[M].北京:电子工业出版社,2003:1-354.

猜你喜欢
实时控制数控系统线程
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
浅谈linux多线程协作
环球市场(2017年36期)2017-03-09 15:48:21
基于LabVIEW微电网实验平台监控系统的设计与实现
探讨ERP系统环境下企业会计的实时控制
利用有线电视网络技术实现智能小区方法的探讨
空间机器人的计算力矩实时控制方法
Linux线程实现技术研究