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

多线程在火焰切割机数控软件中的应用

发布时间:2013-10-06 作者:陈辉 郭艳玲  来源:万方数据
本文讨论了基于运动控制卡的火焰切割机数控系统的软件设计中多线程技术的应用。数控系统软件运行时。要求在控制电动机以及各种开关的同时,能够处理出错信息,动态显示加工轨迹,响应用户的输入操作。数控系统软件同时执行多个任务会产生系统响应滞后问题。为此引入了多线程技术,把某些任务放在子线程中执行。它为解决数控软件系统中不同任务的时间性能要求。即响应时间提供了一种方法。

  在设计火焰切割机数控系统的过程中,我们采用微机与ADT-853运动控制卡的结构。微机作为上位机,负责系统的管理功能,如数控加工文件管理,数控代码译码,与下位机通信,显示加工过程中的信息,接受用户输入的信息等任务。运动控制卡作为下位机则负责驱动电动机,开关量的控制,以及插补运算等实时性较强的任务。在加工过程中,计算机主要执行加工过程控制任务,即调用动态链接库函数控制机床运动。同时在屏幕上动态地显示当前刀具轨迹和加工程序段,及时地响应暂停、急停等用户信息。

  作为上位机的微机需要同时执行控制及显示等任务,如采用单线程会造成软件无法及时响应。为此我们采用多线程技术,把各个任务放在不同的线程中执行,使数控系统软件能较好地执行各种不同的任务,互不干扰。

1 数控系统软件结构

  本系统使用目前流行的WINDOWS操作系统,采用VC++6.0编译器开发。系统要实现的主要功能有:数控代码译码,刀具半径补偿,离线仿真,加工过程控制,加工轨迹动态显示,机床故障及状态检查等。火焰切割机数控系统软件结构如图1。

数控系统软件结构图
图1数控系统软件结构图 

  虽然WINDOWS操作系统是一个多任务的操作系统,能够同时处理多个任务,但如果某一个任务执行的时间很长,就会造成其它的任务得不到及时响应。例如,在开始设计时,我们把加工过程控制和加工轨迹显示功能都放在主线程中实现,结果,由于加工过程控制任务需要不断查询控制卡的状态,占用了大部分的CPU资源,使得加工轨迹显示任务得不到及时响应,轨迹显示严重滞后,甚至严重偏离实际的加工位置,并且不能及时响应用户的输入,如“暂停”、“停止”等操作。由此可见,由于数控系统软件的多任务同时并发执行,数控系统软件中各个任务争夺CPU资源,导致某些任务不能及时执行,影响了数控系统性能。为了解决这个问题,我们把多线程技术引入到软件设计中。

2 多线程技术

  每一个应用程序的执行实例称为进程,每个进程至少有一个线程,称为主线程。线程是进程内部可独立执行的一个单元,系统分配给每个线程一定的执行时间。由于每个线程的执行时间片只有20μs,可以认为它们几乎是同时执行的。Windows操作系统的多线程机制,为我们解决数控系统的多任务同时执行问题提供了方案。

  数控软件运行时,产生了数控软件的一个实例,即进程。同时开始执行该进程的主线程。此线程终止时,进程也终止。除主线程外,windows操作系统允许用户根据需要在应用程序中创建其他线程,使您可以同时运行多个并行执行的线程。我们可以创建其他线程执行加工过程控制任务、显示运动轨迹等。因此,多线程技术可以满足数控系统多任务并行执行的要求。

  Windows提供了两种线程类型:用户界面线程(user—interface thread)和辅助线程(worker thread),它们都是从CWinThread类派生出来的。用户界面线程通常有窗口,有自己的消息循环。一般用于处理用户的输入和对用户生成的事件及消息的响应。辅助线程没有窗口,不需要处理消息。一般用于完成不需要用户输入的后台任务。如计算、调度等工作。2 J。

3 线程在数控软件中的应用

  在本系统中由主线程负责维护人机界面,数控代码译码,刀具半径补偿,离线仿真等功能。这些功能的实时性要求不强,可以在非加工过程中完成。加工过程中,主线程创建加工过程控制子线程、加工轨迹显示子线程。下面以加工过程控制为例,介绍如何使用多线程。

  加工过程控制子线程负责控制运动控制卡。在自动加工过程中它先读取一行刀位文件数据,判断是执行什么样的动作,然后调用相应的动态链接库函数。读下一行数据并执行相应的函数之前,ADT一853运动控制卡要求查询上一次的函数执行过程是否有错误发生,当进行连续插补运算时还要查询是否可以发送下一个数据。当用户发现加工过程有错误,按下“暂停”、“停止”等按钮时,主线程通知加工过程控制线程,子线程执行相应的函数实现暂停或停止功能。

  3.1 线程的创建

  由于加工过程控制线程不需要窗口,可以使用辅助线程作为加工过程控制线程。辅助线程的创建非常简单,不需要显式的从CWinThread类派生一个辅助线程类。直接在主线程的自动加工消息响应函数中创建运动过程控制线程。它的创建函数的用法如下。

函数

  参数pfnThreadProc是指向线程的控制函数的指针,这个控制函数必须按下面的形式申明。

函数

  pParam是传递给线程控制函数的参数。nPfiofity是线程的优先级。操作系统根据线程的优先级决定它们的执行时间。由于加工过程控制需要较高的实时性,所以它的优先级要比主线程的优先级(THREAD—PRIORITY—NORMAL)高。设辅助线程的优先级比主线程的优先级高一级,为THREAD—PRIORITY—A.BOVE—NORMAL。

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