APP下载

LabWindows/CVI多线程技术在舵机测试软件中的应用

2011-01-17陶小亮

中国测试 2011年1期
关键词:测试软件偏角舵机

陶小亮,牛 振

(中国空空导弹研究院,河南 洛阳 471009)

LabWindows/CVI多线程技术在舵机测试软件中的应用

陶小亮,牛 振

(中国空空导弹研究院,河南 洛阳 471009)

在舵机性能测试过程中,需要对工作电流、舵偏角电压信号、编码器角度信号和扭矩信号进行实时高速采集。针对虚拟仪器开发平台LabWindows/CVI的多线程机制进行了详细的介绍,并给出了其在舵机测试中的应用。测试结果表明,利用多线程技术能够更好地开发并行任务,加快系统的响应速度,提高执行效率。

多线程;舵机测试;数据采集;LabWindows/CVI系统

1 引 言

在舵机性能测试过程中,需要对工作电流、舵偏角电压信号、编码器角度信号和扭矩信号进行实时高速采集。

如果采用传统的单线程顺序执行的方式,则采集任务一旦开启,操作界面将无法响应用户操作,在需要用软件紧急切断电源时系统无法及时响应,产生不可预测的后果。另外,用户操作界面时会影响数据采集,系统实时性变差,甚至可能出现“死机”现象。

多线程技术是指操作系统支持一个进程中执行多个线程的能力,可以实现任务的并行执行,提高CPU的利用率,保证数据采集的实时、高效。基于LabWindows/CVI多线程机制开发的测试软件,很好地解决了上述问题。

2 系统组成

舵机测试系统硬件架构如图1所示。系统工作时,主控计算机通过串口卡向舵机发送指令并接收反馈信息。舵偏角电压信号、加载力矩信号以及功率电源电流信号由数据采集卡实时采集。编码器输出的舵偏角脉冲信号由定时/计数卡进行差动计数,获得舵机的实际工作位置。

图1 系统硬件组成

3 多线程技术

3.1 多线程的概念

多线程是指操作系统支持一个进程中执行多个线程的能力[1-2]。当一个线程等待用户响应或大量计算结果时,另一个线程可以继续其他处理,使得进程总处于运行态,随时进行响应,从而提高系统的响应效率。一个多线程的应用程序实际上在其内部实现了多任务扩展,为代码赋予了并行执行的特性,因而可以执行某些实时性或随机性很强的操作,提高对CPU的利用率,加快程序的信息处理速度。

LabWindows/CVI提供了两种在次线程中运行代码的高级机制,分别是线程池(Thread Pools)和异步定时器(Asynchronous Times)。线程池适用于需要不连续的执行或在循环中执行的任务,而异步定时器适合于在固定时间间隔内执行的任务。结合舵机测试的不定时性这个实际情况,采用线程池的方法进行多线程控制。以下详细介绍如何利用线程池来创建、运行次线程。

3.2 线程池

线程池的多线程编程函数库包含了大量的支持多线程程序开发的函数和函数库,可方便地编写线程函数、创建线程、终止线程和设定线程优先级等多线程编程的基本内容[3-4]。

利用线程池来执行次线程中的代码,可以调用Utility Library库中的CmtScheduleThreadPoolFunction函数,把想要在次线程中执行的函数名传递给它,线程池就会调度这个函数在它的一个线程中运行[5]。而具体在哪个线程中运行函数由CmtScheduleThread PoolFunction函数执行查询得到。CmtScheduleThread PoolFunction函数的原型为:

int CmtScheduleThreadPoolFunction(int pool Handle,ThreadFunctionPtr threadFunction,void*threadFunctionData,int*threadFunctionID);

向CmtScheduleThreadPoolFunction传递的函数被称为线程函数。线程池的线程函数可以起任何名字,但必须有以下原型:

int CVICALLBACK dataThreadFunction(void*functionData);该函数名在线程池调用时传递到CmtScheduleThreadPoolFunction函数的第二个参数中。

CmtScheduleThreadPoolFunction函数的第一个参数表示用哪一个线程池调度函数。如传递DEFAULT_THREAD_POOL_HANDLE常量表示要使用缺省的线程池,用户不能更改缺省线程池的状态,线程结束时不需要调用cmtDiscardThreadpool函数来结束线程查询。

3.3 多线程在舵机性能测试系统中的应用

在该测试系统的软件开发中,采用LabWindows/CVI作为开发平台。它将功能强大、使用灵活的C语言与用于数据采集分析和显示的专业测控工具有机结合起来。它的集成化开发环境、交互式编程方法、丰富的库函数和可视化面板,为开发检测系统、数据采集系统和过程监控系统等应用软件提供了一个理想的软件开发环境。特别是它能与NI公司的硬件设备达到无缝结合,简化了对底层硬件的设置。

在编写舵机性能测试软件时,充分利用了LabWindows/CVI的多线程中的线程池技术。按照软件的功能需求,把应用程序需要处理的任务分为用户界面控制、数据采集、数据实时显示以及数据分析和保存等。测试软件将用户界面作为主线程,将数据采集、数据实时显示、数据分析作为次线程,这样多个线程同时执行,在相同的时间内可以并行完成更多的任务,既加快了系统的反应速度,又提高了执行效率。基于多线程的舵机测试系统软件结构如图2所示。

图2 多线程测试系统软件结构

3.3.1 界面控制线程

用LabWindows/CVI用户界面编辑器可轻松地建立复杂的交互式面板。在设计GUI的过程中,开发人员常常需要确定程序如何获取并显示数据,对面板、控件和对话框如何操作等问题,因此用户界面成为程序设计的起点,把它作为程序设计的主线程,及时处理各种交互信息。

舵机测试软件中,用户界面的显示、测试信号的选择、波形数据的显示、按钮控件等交互操作都在程序的主线程中实现。

3.3.2 数据采集线程

该线程在启动后,负责数据采集任务,包括扭矩信号的采集、舵偏角信号采集、光电编码器的角度信号采集。以下给出数据采集线程的程序主体。

3.3.3 功率电流采集和实时显示线程

舵机是大功率执行机构,其工作时电流比较大,通过监测电流可以反映出舵机在不同信号和载荷下的工作状态。系统通过GPIB通信实现电源的参数设置、电源的打开与关闭、电流的实时采集与显示。由于需要实时监测舵机工作时的电流并在意外情况下及时切断电源,需要把这部分单独放在一个线程中进行。测试中,当舵机开始动作就触发此线程进行功率电流采集。以下给出该部分的程序主体。

3.3.4 数据分析和实时显示线程

利用多线程技术对采集到的数据进行实时动态显示,便于测试人员更好地监测系统当前的状态及性能测试。系统获取数据后,要对数据进行格式化、归一化、信号处理、曲线拟合等处理,以衡量测试的结果是否满足性能指标要求。以下给出该部分的程序主体。

图3所示为使用多线程技术时实际测试的主界面。如果不使用多线程,而是把电源控制、数据采集、数据显示和分析放在主线程中,则程序一旦开始运行,在采集任务结束之前,主界面无法响应用户操作,表现为点击按钮、拖动界面没反应,整个程序呈现“死机”的状态。因此如果测试过程中,由于意外需要紧急切断功率电源时系统将无法响应操作,导致不可预测的结果。该文使用多线程技术在不断刷新主界面,响应用户操作(如紧急关闭电源、及时分析数据)的同时,在后台同步进行数据采集和分析、电流的实时采集和显示,这样在相同的时间内可以并行完成更多的任务,既加快了系统的反应速度,又增加了测试的安全性和可靠性。

4 结束语

该文利用多线程技术开发了舵机性能测试系统的软件。经过多次实际测试,系统能够准确地进行数据采集和处理,并大大提高了系统的效率和可靠性,现已成功应用到某型号舵机的性能测试中。

[1]成凤敏,苏小光.多线程技术在虚拟仪器软件开发中的应用[J].中国测试技术,2008,34(2):48-50.

[2]姜守达,吴昌盛.LabWindows/CVI多线程机制在数据采集中的应用[J].计算机应用,2004,23(8):56-57.

[3]National Instrument Corp.Multithread in LabWindows/CVI[Z].2000.

[4]National Instrument Corp.LabWindows/CVI Programmer Reference Manual[Z].2001.

[5]刘君华.虚拟仪器编程语言LabWindows/CVI教程[M].北京:电子工业出版社,2005.

[6]刘君华.基于LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.

Application ofmultithread in servo-actuator testing software based on LabW indows/CVI

TAO Xiao-liang,NIU Zhen
(CAMA,Luoyang 471009,China)

In the performance test of servo-actuator, the currency, servo-angle signal, coder signal and torque signal are required to be collected rapidly.In this paper,multithread technology in LabWindows/CVI and its application in performance test of servo-actuator were introduced.The results of test prove that the multithread technology is more effective in developing parallel task than current techniques.By using multithread,the response and efficiency of the system can be greatly enhanced.

multithread;servo-actuator test;data acquisition;LabWindows/CVI

TJ02;TP273

A

1674-5124(2011)01-0081-03

2010-03-05;

2010-05-26

陶小亮(1983-),男,河南焦作市人,工程师,硕士,主要从事智能检测与控制研究。

猜你喜欢

测试软件偏角舵机
翼吊长涵道发动机短舱内偏角优化和机理研究
网络自适应测试软件运行方法设计
2018全国Ⅱ卷选修3-4中偏角的解法探讨
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
自动化检测EPU10A板卡系统设计与实现
欧姆表偶然误差分析
基于高速同步485总线通信的多通道舵机控制器设计
基于云模型的舵机同步控制
远程开放教育学生自主学习能力评价的研究