基于线程技术的
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;//子程序返回卞程序的位置