1 引言
随着制造业发展,对数控机床的柔性和通用性提出了更高的要求,同时伴随着计算机技术的迅速发展,开放式数控系统应运而生,并已经成为当前研究的热点。此类系统分为“PC嵌入NC”结构、“PC嵌入NC”结构、全软件型结构。第一种系统硬件结构较复杂,系统价格十分昂贵。第二种,采用运动控制卡+PC机构成。最后一种,所有的数控功能全部都由计算机软件来实现。
本文采用NC嵌入PC的开放式数控结构形式,由运动控制器完成数控实时响应和控制,PC完成数控人机界面功能。在人机界面的处理中采用了多线程技术。
本系统所采用的数控系统结构图如图1所示。用研华公司的运动控制卡+PC机,以JZ位的Whdows98/NT 4.0/Win-dows2000操作系统为开发平台;并采用支持可视化编程的集成环境Visual C++6.0作为算法语言和界而设计上具,利用封装性,继承性和可重用性作为特征的而向对象的编程技术。
2 数控加土过程的控制
机床的数控系统是以程序指令为依据来控制机床的运动。首先就要对程序指令进行检查,并进行预处理转化为刀具的运行轨迹。
2.1 数据结构
由于数控加上程序是由程序段组成,每一个程序段又由各个指令构成,所以用一个链表结构来存储、管理这些代码比较有效。
1)用DotList表示点数据。首先用从CObject派生的CDot类记录程序指令信息。采用链表结构记录程序加上点的数据,选用MFC的数据结构CTypedPtrList模板类定义一个点的链表类DotList}链表结构易于遍历和插入操作,可以提高效率。
2)用SubFuncList栈类进行子程序调用。在数控加上时,用子程序编写经常重复进行的加上,比如某一确定的轮廓形状。子程序位于卞程序中适当的地方,在需要时进行调用。栈的特点就是后进先出,正好符合子程序,所以采用链式栈SubFuncList来表示。栈的每个元素('SubFuncInfo由四部分构成:
CString szSubFuncName//子程序名
int iSubFuncAddress;//子程序的起始位置
int iSubFuncRetAddress;//子程序返回卞程序的位置
int iLoopNum;//子程序循环次数
考虑到Windows操作系统并不是一个严格意义上的实时操作系统,为了提高实时响应速度,本系统首先对程序指令进行翻译,全部转换成最后加上的点的信息,既先对程序指令扫描一边记录下信息,再进行扫描一边,把子程序调用插入到第一次扫描的结果中而得到最后的扫描结果。图2所示是第1次扫描的流程图。