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

Windows环境下数控软件实时控制的实现

发布时间:2014-05-12 作者:文清华 吴来杰 杨代华 江进国  来源:万方数据
关键字:数控软件 实时控制 CNC 
本文探讨了在Windows 环境下精确时间实现数控软件实时控制的方法,并以实现M0I 功能为例,介绍了在VisuaIC + + 中用多线程和事件同步的方法解决实时控制中存在的问题。

3 实现M01功能

  M01—计划程序停止。该指令的作用是:在操作面板上预先按下“任选停止”按钮,当执行完M01指令之后,程序停止,主轴停转,进给停止,冷却工作者线程流程图液关闭,加工停止。

  如果不按“任选停止“按钮,则M01指令无效。在加工停止后,如果重新按下“循环启动”按钮,则继续加工。如果仅用用户界面线程,当控制精度很高,采用了延时程序时, 循环指令将会“独占CPU”,从而导致用户界面线程不能处理用户输入的事件和消息,无法实现人机交互。解决的方法是将含有轨迹插补的循环指令放入一个工作者线程中,将各种实现人机交互的按钮(如“任选停止”按钮)放在用户界面线程中。这样,尽管工作者线程一直“忙” 个不停,但用户界面线程却“闲”着,能够及时响应用户输入的事件和消息。当用户界面线程接收到用户输入的事件和消息后,通过线程同步,就能使工作者线程实现预定的操作实现M01功能的具体方法如下:

  首先在“任选停止”按钮和“循环启动”按钮的ciick(单击)事件的响应函数中分别设置某一事件有信号,然后在工作者线程的扦环体内检测相应事件是否有信号,并根据检测的结果做出相应的处理。需要做的工作是:定义两个事件,创建一个工作者线程,并建立工作者线程的控制函数体。程序流程如图所示,主要代码如下:

数控软件代码

  其中,AfxBeginThread 为启动工作者线程的全局函数,该函数创建并初始化CwindThread 对象、启动并返回线程的地址。

  控制函数用于定义线程。进入控制函数时,线程启动;退出时,线程终止。以上控制函数中Deaiedatathread为控制函数名,参数param 是一个32 位值。该参数在创建线程对象时传递过来。工作者线程的控制函数体如下:

数控软件代码
数控软件代码

  最后在“任选停止”按钮和“循环启动”按钮的click(单击) 事件的响应函数中分别设置gpauseevent 和g starteevent 有信号即可,可通过以下两条语句实现。

  g pauseevent. SetEvent(); / / 设置停止事件为有信号
  g pauseevent. SetEvent(); / / 设置启动事件为有信号

4 结束语

  多线程和事件同步能有效地解决数控软件实时控制中存在的“独占CPU”的问题,实现人机交互。本文介绍了一种易于实现的简便方法。 

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