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

基于脚本语言的数控系统可定制界面的实现

发布时间:2012-09-29 作者:张建磊 吴文江  来源:万方数据
本文设计的数控系统可定制界面是以QT为平台,采用脚本程序定制界面的功能来实现。包括人机界面的设计与构建,QT界面加载器和脚本引擎的扩展,以及底层接口主程序的实现等;同时在QT图形组件类的基础上构建了数控系统专用的图形组件类库,是实现界面可定制性的基础。该方法充分利用了QT在GUI(GraphicalUser Interface,图形用户界面)设计方面的优势以及新增的支持脚本功能模块,使定制人机界面的过程变得简便快捷。

引言

    开放式数控系统是现代数控系统的主流发展趋势,开放性体现在两个方面:一是NC系统的开放性,二是人机界面的开放性。界面的开放性就是允许在标准界面上,加入满足特殊工艺和操作的定制界面,而且人机界面的图形构造与人机交互功能直接影响人们对数控系统的评价。这就要求数控系统的人机界面具有二次开发的功能,能够提供一种方法和手段,使系统开发人员和用户能够根据实际需要,方便、快捷地设计出与特定功能相匹配的专用界面。本文提出了一种实现人机界面可定制化的方法:它以QT为开发平台,通过对QT界面加载器和脚本引擎进行扩展,使开发人员可以使用扩展的界面加载器加载定制的专用界面;而定制界面的功能则通过脚本程序实现;最后由扩展的脚本引擎将定制的人机界面和对应的脚本程序结合生成具有特定功能的人机界面。它利用QT本身在界面设计方面的优点,结合脚本程序使定制人机界面的过程变得简单快捷。

1、软件结构

    人机界面的功能是提供一个友好的图形界面,显示数控加工过程中的各种信息,如位置、加工模式、加工轨迹等;同时还要实现人机交互功能,接受外部用户的指令,如文字输入,开关、按钮动作等,扮演控制台的角色,将用户的动作转换为相应的内部指令,然后传送给数控软件的底层功能模块实现;同时,人机界面从数控软件的底层功能模块中获得诸如位置、刀具轨迹等信息,这就要求界面程序能够与底层的功能模块即任务控制器模块进行数据通信。

    本设计当中所实现的定制人机界面的过程可以分为三层结构。如图1所示:顶层为人机界面的配置文件ui和脚本程序。其中ui文件描述界面各个组件的位置、大小、颜色等属性,而脚本程序则实现界面的特定功能,该层涉及自定义组件类的封装以及脚本程序的实现。中间层则是根据数控系统的实际需要扩展的QT定制界面加载器和标准界面加载器,以及扩展的QT脚本引擎。ui文件中仅使用标准组件的界面则使用标准界面加载器加载,否则,使用定制的界面加载器,然后由脚本引擎将界面加载器加载的ui文件和相应的脚本程序结合,生成具有特定功能的定制界面。正是由于在ui文件中可以根据实际需要来添加组件(包括自定义的组件),并在脚本程序中编程来实现特定的功能,也就实现了界面的可定制性。而底层的通信接口主程序负责与数控系统的任务控制器层通信,实现命令信息的发送和状态信息的获取、更新,它是通过使用RCS(Real-time Control Systems)库所提供的NML(NeutralMessage Language,中性消息语言)实现的。

 定制界面结构图

图1 定制界面结构图

2、可定制界面的具体实现

    2.1 编写脚本程序,实现用户的定制界面

    2.1.1 图形组件类库

    要实现界面设计,需要有适合数控系统的图形组件类,本设计中的图形组件类由两部分组成:一是QT提供的图形组件类;二是自定义的图形组件类,它们是根据数控系统的实际需要而封装的实现特定功能的类。

    实现自定义的图形组件类有三种方法:一是通过对QT原有的图形组件类进行子类化,重新实现一些虚函数以改变其行为来满足我们的需要;二是通过对现有图形组件类的组合实现功能比较复杂的类;三是在上述两种方法都不能达到目的时,通过子类化QWidget(它是QT中几乎所有图形组件的基类)并重新实现一些用来绘制窗口部件、相应鼠标点击及键盘按键的事件处理器实现自定义图形组件类[2]。

    在封装图形组件类的过程中,除了添加新的属性及操作函数外,特别是要重新实现其父类中的各种事件处理函数,以实现功能定制,主要涉及的事件有11种,如图2所示。

 事件处理函数

图2 事件处理函数

    上述三种方法中,前两种方法相对简单,但灵活性不够,用户通过它们所能实现的自定义类的功能有限。第三种方法则比较灵活,用户可以按照自己的需要来定义类型,但是其实现过程比较复杂。

 

3