近年来,开放式的数控系统在工业领域得到广泛应用,但目前在世界机床业中占统治地位的仍是基于专用硬件的数控系统。这种系统的内部细节一般属于企业机密,是不开放的。以Windows和运动控制器构建的数控系统近年得到较大的发展,但是在数据处理的实时性上却无法满足数控加工的要求。因此,本文选择了这种上、下位机的结构,上位机主要分担加工中的弱实时部分,下位机则负责强实时部分。在Windows环境下,利用VC++6.0开发了数控 软件,并通过二维绘图实验平台进行了实验验证,系统具备了良好的实时性和开放性。
1 系统构成及工作过程
本文的系统构成如图1所示。Computer为通用PC机,充当系统的上位机,主要承担数控加工中的弱实时部分(如:参数设置、G代码编辑与编译、图形仿真、状态诊断等)。下位机则选用了固高科技(深圳)公司研发的GT4∞SV型四轴通用运动控制器。该控制器上的DSP充当了下位机的CPU,由于DSP芯片具有很强的数字信号处理能力,因此,承担数控加工中的强实时部分是能够满足要求的。
运行在上位PC机中的系统管理软件是人机交互的媒介。一方面它将系统的各种信息以数据或图形的方式显示给用户,另一方面又接收来自用户输入的各种数据(如:参数、加工代码、工件图形等)。并交由软件的相关模块进行处理,处理后的数据被保存在PC内存上指定的缓冲区中。一般来说,运动控制器厂家已在DSP中开发好了一系列的功能函数,并将它们封装成一个动态链接库文件。上位机系统软件就是通过这个动态链接库来实现与运动控制器的数据交换的。
2 软件的模块化设计思想与实例
2.1 模块化设计思想
系统软件的开发以Windows 2000为操作系统,在VC++6.0开发环境中,采用C++语言。结合MFC、Windows API和GT400SV API来实现。根据开放式数控系统的要求与思想,系统软件的设计采用了图2所示的同心圆环结构。通过类的定义、封装和继承技术来实现模块化开发。
图中越靠近圆心的模块表示核心度越高,最核心的任务调度代表系统的主用户界面,它负责整个系统的任务调度工作,被分配予应用程序的主线程,因此它的产生与销毁就代表着应用程序的生与死。中间环分为7个子功能模块,每个子功能模块又包含着数目不等的子模块,各模块皆由一个单独的类来进行标识和处理,在这砦类中设计和封装了一系列的成员函数和成员变量,用以完成各个相应的子任务。
模块间的通信主要通过两种方式来实现,环状的同层通信和线状的越层通信。同层通信负责同一核心层中各模块之间的通信工作。第一层主要通过对象和指针操作来实现。第二层主要通过开辟数据缓冲区和创建结构体来实现。越层通信则负责同一类别不同核心层模块间的通信工作。所谓同一类别的模块即是处于同一个扇形域内的模块。主要通过菜单管理和视图管理来实现。
对于这样一个同心圆环结构的模块化通信框架,任意两个模块间可方便地进行通信。当应用场合发生改变,需要修改其中的某个或某几个模块时,只需将其单独抽取出来进行修改。当需要添减系统的模块时,也无需对代码做太大的改动,因为某个模块的改动对其他模块问的通信并不会造成很大的干扰,增强了系统的可伸缩性。
2.2 主要模块的分析与实例
考虑到本系统在操作上的一些特点,如:不会同时编辑多个文档、需要同时显示多项数据、后台运算与前台操作必须支持同步等。因此系统软件采用了单文档、多视图和多线程的结构。主程用于处理用户界面的操作和管理。如:菜单切换、参数设置、代码编辑等。子线程则处理一些纯运算性质的工作,如:代码编译、插补运算、图形仿真等。