APP下载

基于Qt的数控系统测试软件的设计与实现

2016-12-06吴纯赟杜少华葛小川

组合机床与自动化加工技术 2016年11期
关键词:测试软件测试人员驱动程序

吴纯赟,栾 勇,杜少华,葛小川

(1.中国科学院大学,北京 100049;2.中国科学院沈阳计算技术研究所 高档数控国家工程研究中心,沈阳 110168;3.沈阳高精数控智能技术股份有限公司,沈阳 110168)



基于Qt的数控系统测试软件的设计与实现

吴纯赟,栾 勇,杜少华,葛小川

(1.中国科学院大学,北京 100049;2.中国科学院沈阳计算技术研究所 高档数控国家工程研究中心,沈阳 110168;3.沈阳高精数控智能技术股份有限公司,沈阳 110168)

数控系统的测试相比较一般的系统更加复杂,以往的测试工具存在测试过程复杂、测试效率低下、可移植性差、用户交互不理想等缺点。在研究了Linux驱动及Qt技术的基础下设计并实现了蓝天数控系统的测试驱动程序以及基于Qt的测试应用软件,完成对数控系统IO、DA、键盘操作站等的测试。软件具有较高的移植性,可以运行在不同平台上,测试人员可以自主选择测试的项目与过程,提高了测试效率,简化了测试过程,缩短了测试时间。测试软件在生产车间中投入使用,有效地保障了数控系统的可靠性。

数控系统;软件测试;Qt技术

0 引言

数控技术是工业化过程中发展国家高新技术产业和尖端工业的重要一环,也是先进制造技术的核心研究内容。数控系统测试软件为工业生产提供了有效保障,目前我国的数控测试软件主要采用基于C语言的命令行模式,虽然在功能上能覆盖常用的模块,但存在可移植性差、用户交互性弱、测试过程复杂等缺点。基于Qt的数控系统测试软件正是要解决以上问题,为测试人员提供一个操作简便、可视化程度高、移植性好的测试环境。

在深入理解Linux内核以及Qt界面、信号与槽机制的前提下,基于Qt的数控系统测试软件重新设计了GJ303系统的测试驱动程序,并且使用Qt的UI实现了可视化操作。软件完成了对IO、DA、键盘、操作站等功能模块的设计与实现,编译后部署在蓝天高精数控测试生产线上进行实际测试,并记录测试时间和故障率,从而验证测试软件的可行性。

1 需求说明

GJ303是新一代开放式普及型数控系统,采用高性能工业级PC平台,在工业生产中已经有广泛的应用,生产车间需要在数控系统出厂前对IO、DA、键盘操作站等进行测试,以确保软硬件的正确性和稳定性,为工业生产提供保障。

对于IO部分,需要GJ303系统与外接板连接,通过测试程序对IO读写信号进行测试;DA部分需要程序对DA输出值进行测试;键盘和操作站部分需要通过程序对数控系统键盘键位的有效性及操作站控制的有效性等进行测试。

从上述可以看出数控系统的测试存在步骤多、测试过程繁琐、测试过程掌控不到位等问题。在此背景下,结合当前数控封装测试车间的实际应用场景,采用Qt技术[2]实现功能完备、测试过程简单高效、移植性强、可视化程度高的数控系统测试软件。

2 测试软件驱动的设计与实现

测试软件需要对数控系统的硬件资源进行操控,所以底层需要一套专门的驱动来配合上层的Qt程序。蓝天数控系统内核是基于Linux 2.6系统,测试驱动程序符合一般Linux字符驱动程序开发的流程[10]。在整个数控系统测试软件中,驱动程序扮演着承上启下的作用。

在Linux2.6内核中,使用cdev结构体[11]描述一个字符设备,cdev结构体的定义描述如下:

struct cdev {

struct kobject kobj;//内嵌的kobject对象

struct mouule *owner;//所属模块

struct file_operations *ops;//文件操作

struct list_head list;

dev_t dev;//设备号

unsigned int count;

};

cedv结构体的dev_t成员定义了设备号,为32位,其中12位主设备号,20位次设备号。使用下列宏可以获得主设备号和次设备号:

MAJOR(dev_t dev)

MINOR(dev_t dev)

使用下列宏可以通过主设备号和次设备号生成dev_t:

MKDEV(int major, int minor)

文件操作file_operations[12]是程序操作设备的主要结构,它的成员在应用层中以open(),write(),read(),close()等系统调用来体现。以上操作在测试软件中需要进行自定义,以read函数为例,GJ303系统中需要先设置偏移找到读取的起始位置,再根据传入的读取范围分配内核空间内存,最后调用__copy_to_user函数将需要的数据从内核空间拷贝到用户空间。write函数操作过程类似,只是拷贝数据的方向相反。

上层的应用程序在测试过程中需要对机床的各个功能硬件进行命令的收发,通过以上驱动程序的调用就可以高效便捷地进行交互。

3 测试软件应用层的设计与实现

3.1 总体架构设计

测试软件从结构上分成三层,如图1所示,用户界面采用Qt技术[6]实现,底层调用驱动测试程序。驱动程序直接解析用户界面传来的测试命令,数控硬件系统根据驱动程序进行相应的操作完成测试。

图1 系统整体结构

Qt具有跨平台以及界面美观等优点,且在嵌入式领域已经有广泛地应用,所以本软件的用户交互界面全部由Qt来实现。应用层的开发在搭载Ubuntu14.04的PC下完成,测试与部署则在蓝天数控GJ303系统上进行。上图中数控系统部分实际还需要用到IO、DA的外接测试板以及外置手轮。

3.2 事件处理机制

由于以往的蓝天数控系统测试工具都是基于C语言的命令行格式,测试人员即便测试某个小功能也要掌握所有的命令选项,一步步地进入到测试点。这不仅造成测试过程复杂,还容易出错。传统的程序界面跳转采用顺序驱动,导致逻辑复杂,跳转代码与业务代码掺杂在一起,结构混乱,不利于软件的功能扩展及移植。

软件使用Qt实现事件驱动机制,并抽取测试人员常用的测试选项于页面供直接使用,很好地解决了以上问题。测试软件的测试组件由按钮和命令行组成。按钮是由事件驱动的测试路径,需要通过数控系统自带的键盘绑定相应的事件;命令行则是快捷测试路径的入口,需要绑定并解析相应键盘输入的字符串。为了让软件更好地支持与底层硬件通信,提高测试效率,以上测试路径采用异步[8]的事件通知。异步意味着当主线程接受完一个信号后可以继续处理业务逻辑,不必等待,当调用QApplication::exec()时,就进入了事件循环队列[10]。对于按钮和命令,自定义的事件主要对QKeyEvent进行封装,只需对不同的事件源进行判断就可以满足动态需求。测试人员在对某个功能进行测试时,其输入将被包装成一个事件源。如果是简单的键盘事件,将调用Qt自带的事件处理器,但当要输入命令时,就先由事件分发器捕获[9]这次命令事件,然后判断是否自定义的事件,若是则分发器查找对应的自定义事件处理器,并触发相应的操作,具体流程如图2所示。为了便于管理众多的按钮与命令输入框,也为了统一结果显示页面,软件还扩展了Qt的部分控件:

(1)状态控制方法, 由于不同控件有各自的布局及大小管理方法,使用时十分不便,本软件设计的void set_geometry(int,int,int,int)成员方法可以统一设置所以控件的大小及位置,前两个参数表示起点位置,后两个参数表示长度和宽度;

(2)字体设置方法,为了使界面支持各种编码的字符,设计了QString to_chinese(const char* str, const char* code)方法,内部使用了QTextCodec字符编码器将传入的信息提示字符串str转变为code指定的编码,使得软件支持国际化。

基于异步的事件处理机制对数控测试软件的各个功能模块进行了解耦[1],不同模块间形成了责任链模式,在提高性能的同时也增加了扩展性。

3.3 IO与DA测试的设计与实现

IO与DA是数控系统的基础,是数控系统机床控制系统的重要组成部分,因此对这两部分的测试就尤为重要。GJ303数控系统的IO模式是48IN32OUT以及32IN24OUT,测试时需要考虑多种输入输出的情况。

IO测试模块程序流程如图3所示,以48IN32OUT输出测试为例,32个比特要每隔1s输出一位,要控制时间间隔便要使用Qt定时器来完成任务。该功能模块的实现方法定义:void IO_outport(int offset,int st,unsigned int word),该方法内部实现需要使用上文的驱动程序,即调用write系统调用[11],该系统调用将向操作系统内核传递IO输出数据。

DA的测试需要提供一组待测电压以及一组与之对应的地址。软件中封装了void DA_outport(int st,int ch,unsigned int word)方法,word参数就是要测试的DA地址值,前面两个参数是状态控制参数。为了可扩展性,测试的地址[8]值可以由测试人员自行输入,软件后台会将最近的一次设定值保存在数组中,并写入配置文件刷新到磁盘上。测试开始时软件会根据最终的地址传入上述方法,底层使用系统调用传递给数控系统。

图3 IO测试流程

3.4 键盘测试的设计与实现

数控系统的键盘是其在工业生产环境中最常用的外设,操作人员绝大部分操作及维护都是通过它来完成的,因此对键盘的测试尤为重要。GJ303数控系统的键盘和普通PC机的键位基本相同,但多了几个系统键。该部分测试的主要思想是利用Qt的键盘事件。当在主界面按下代表键盘测试的按钮后,整个键盘进入测试模式,测试人员之后按下的每个键都会在软件的界面上进行回显,直到连按2次ESC键后退出测试。

进入键盘测试后就触发了事件源,事件分发器捕获事件源并判断自定义事件。软件中对该功能的自定义事件改变了QKeyEvent原来的传播行为[5],将输出重定向至内存中,再在界面上输出。只要生产时键盘焊接等工艺没有发生错误,测试时键盘的事件源就会被准确地捕获,一次典型的捕获过程如图4所示。

图4 键盘测试流程

3.5 操作站测试的设计与实现

操作站是键盘的延伸,是数控系统对机床进行控制的操作面板,可以控制数控运行过程中主轴的转动方向、液压系统、照明等,图5是GJ303系统配套的操作站。

图5 操作站

对操作站的测试不同于键盘,因为它是数控系统独有的,Qt的事件并不支持。软件中采用的方法是对操作站的键位进行转换,然后用类似于键盘的测试方法在主界面上回显按下的键位。

对于数控系统底层驱动来讲,操作站的每个键位都对应着IO[10]的某个地址,地址的格式是8位的无符号整数。在软件中为了简洁使用unsigned char ch_pre变量表示,整个转换的过程使用void mopValueToText(unsigned char ch_pre,unsigned char ch_rev, char* str)这个方法来完成,转换过程如图6所示。

图6 操作站转换过程

接下去的操作是分发器[12]调用以上转换方法,而非某个自定义事件。转换方法的核心部分是将IO地址一一转换成中文或其他语言,代码片段如下:

case 0x81:sprintf(str,"%s","进给修调 0%");

0x81就是IO地址,“进给修调”是需要在主界面上显示的表述。

4 测试结果

测试软件通过交叉编译后部署在测试车间的GJ303数控系统上供测试人员使用。针对3个月的车间平均测试统计,结果如表1所示。

表1 GJ303数控系统测试时间比较

表1中数据是部署后车间流水线上每台数控系统各个项目的平均测试时间,是经过长时间累计测试得出的。从中可以看出4个项目测试时间都有较大的缩短,使得测试效率得到提高。对于出厂数控系统的故障率和返修率也进行了统计,如表2所示。

表2 GJ303数控系统故障率比较

从表2可以看出在使用新的测试软件后平均故障率大幅下降,给生产带来了较大的保障,提高了产品的经济效益。

5 结论与展望

基于Qt的GJ303数控系统测试软件完成了对IO、DA、键盘与工作站的测试,并且在蓝天数控测试生产线上进行了部署。经过长期运行证明了该软件测试系统的稳定性与高效性。软件帮助测试人员建立了完善易用的人机交互界面,对各个部分的测试效率也有较大地提高。

由于软件采用了Qt技术,因此其跨平台性也进一步得到了提高,目前已经针对GJ301、GJ302等蓝天数控系统进行改造,是测试软件能部署在更多的数控系统上,从而创造更多的经济效益。

未来的工作还要进一步扩展测试软件的功能,例如编码器、轴测试等,最终使软件能够适应更多的生产环境。

[1] 李一雄,刘建群,陈新度,等.Qt环境下基于PMAC运动控制器的控制系统开发与应用[J].组合机床与自动化加工技术,2014(1):114-116,120.

[2] 杨杏,陈富林,周霏.基于Qt的工业机器人语言系统的设计[J].组合机床与自动化加工技术,2014(2):71-74.

[3] 王彩芳,刘建群,高伟强,等.基于QT+PMAC的V沟机数控软件的开发[J].组合机床与自动化加工技术,2015(3):98-101.

[4] 梁凡,宋晓秋.基于二组合的测试用例集生成及精简方法研究[J].计算机工程与设计,2014,35(5):1662-1666.

[5] 王立宏,王曙燕,孙家泽.一种分阶段组合测试数据生成算法[J].计算机应用与软件,2013,30(3):67-70.

[6] 任立松.基于嵌入式QT4渔业电台GUI的设计和实现[D].大连:大连海事大学,2013.

[7] 胡毅,于东,郭锐锋,等.数控总线的消息安全通信方法[J].机械工程学报,2011,47(5):134-142.

[8] 徐晓露.基于故障注入的嵌入式系统测试研究[D].杭州:浙江大学,2008.

[9] 徐柯.嵌入式软件测试的研究[D].成都:电子科技大学,2006.

[10] 单锦辉,姜瑛,孙萍.软件测试研究进展[J].北京大学学报(自然科学版),2005,41(1):134-145.

[11] 张春晓.基于实时Linux平台的CNC系统研究与实现[D].南京:南京航空航天大学,2002.

[12] William von Hagen, Real-Time and Performance Improvements in the 2.6 Linux Kernel[J]. Linux Journal,2005.

(编辑 李秀敏)

Design and Implementation of CNC System Testing Software Based on Qt

WU Chun-yun1,2,LUAN Yong2,3,DU Shao-hua2,3,GE Xiao-chuan1,2

(1.University of Chinese Academy of Sciences, Beijing 100049,China;2.National Engineering Research Center For High-End CNC, Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168,China)

Compared with the general system, the testing of CNC system is more complex, and the original testing tools have the disadvantages of complex testing process, low efficiency, poor portability and poor user interaction.This paper designs and realizes the test driver of the blue sky numerical control system and the application software based on Qt,and complete the test of IO, DA, keyboard, etc.The software has a high portability and can run on different platforms,test personnel can choose which part to test .Through the software, it improves the test efficiency, simplify the testing process, and shorten the test time. The test software is put into use in the workshop, which effectively ensures the reliability of the numerical control system.

CNC system;software test;Qt technology

1001-2265(2016)11-0076-04

10.13462/j.cnki.mmtamt.2016.11.021

2015-12-28;

2016-01-22

“高档数控机床与基础制造装备”国家科技重大专项:基于二次开发平台的专用数控系统开发与应用(2013ZX04007011)

吴纯赟(1990—),男,浙江海盐人,中国科学院大学、中科院沈阳计算技术研究所硕士研究生,研究方向为数控系统软件测试,(E-mail)437063174@qq.com。

TH166;TG659

A

猜你喜欢

测试软件测试人员驱动程序
网络自适应测试软件运行方法设计
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
自动化检测EPU10A板卡系统设计与实现
软件测试误区分析
浅析软件测试中的心理学应用
绿植防辐射只是个传说,是真的吗?
远程开放教育学生自主学习能力评价的研究
一款重型包装抗压系统控制软件的设计与开发
犯罪心理测试人员素质要求分析