background image

基于线程技术的

PC 数控软件设计

阐述了

PC 机数控系统的特点,介绍了一种利用线程技术实现 PC 机数控系统,并分析了在

数控加工中数据的结构以及算法的实现。该系统已经在实际的车床数控系统中得到应用。

1 引言

  随着制造业发展,对数控机床的柔性和通用性提出了更高的要求,同时伴随着计算机
技术的迅速发展,开放式数控系统应运而生,并已经成为当前研究的热点。此类系统分为
“PC 嵌入 NC”结构、“PC 嵌入 NC”结构、全软件型结构。第一种系统硬件结构较复杂,系统价
格十分昂贵。第二种,采用运动控制卡

+PC 机构成。最后一种,所有的数控功能全部都由计

算机软件来实现。

  本文采用

NC 嵌入 PC 的开放式数控结构形式,由运动控制器完成数控实时响应和控制,

PC 完成数控人机界面功能。在人机界面的处理中采用了多线程技术。

  本系统所采用的数控系统结构图如图

1 所示。用研华公司的运动控制卡+PC 机,以 JZ

位的

Whdows98/NT 4.0/Win-dows2000 操作系统为开发平台;并采用支持可视化编程的集成

环境

Visual C++6.0 作为算法语言和界而设计上具,利用封装性,继承性和可重用性作为特征

的而向对象的编程技术。

1 数控系统

结构示意图

2 数控加土过
程的控制

  机床的数控系统是以程序指令为依据来控制机床的运动。首先就要对程序指令进行检查,
并进行预处理转化为刀具的运行轨迹。

  

2.1 数据结构

  由于数控加上程序是由程序段组成,每一个程序段又由各个指令构成,所以用一个链
表结构来存储、管理这些代码比较有效。

  

1)用 DotList 表示点数据。首先用从 CObject 派生的 CDot 类记录程序指令信息。采用链

表结构记录程序加上点的数据,选用

MFC 的数据结构 CTypedPtrList 模板类定义一个点的

链表类

DotList}链表结构易于遍历和插入操作,可以提高效率。

  

2)用 SubFuncList 栈类进行子程序调用。在数控加上时,用子程序编写经常重复进行的

加上,比如某一确定的轮廓形状。子程序位于卞程序中适当的地方,在需要时进行调用。栈
的特点就是后进先出,正好符合子程序,所以采用链式栈

SubFuncList 来表示。栈的每个元

('SubFuncInfo 由四部分构成:

  

CString szSubFuncName//子程序名

  

int iSubFuncAddress;//子程序的起始位置

  

int iSubFuncRetAddress;//子程序返回卞程序的位置