APP下载

基于生产者/消费者设计模式的应力波信息采集系统的设计

2016-11-17刘素贞吴延俊杨庆新

计算机测量与控制 2016年9期
关键词:设计模式采集卡生产者

刘素贞, 吴延俊, 张 闯, 杨庆新

(1.河北工业大学 电磁场与电器可靠性省部共建重点实验室,天津 300130;2.天津工业大学 电工电能新技术天津市重点实验室,天津 300387)



基于生产者/消费者设计模式的应力波信息采集系统的设计

刘素贞1, 吴延俊1, 张 闯1, 杨庆新2

(1.河北工业大学 电磁场与电器可靠性省部共建重点实验室,天津 300130;2.天津工业大学 电工电能新技术天津市重点实验室,天津 300387)

以LabVIEW14.0为虚拟仪器软件开发平台,采用生产者/消费者设计模式的控制策略、技术数据管理流(TDMS)二进制文件储存策略和SQL数据库及事件结构相结合的实时更新策略,设计了集实时信息采集、储存、显示等功能于一体的应力波采集系统;3种控制策略相结合,解决了传统顺序结构设计模式下程序循环周期长、执行效率低的问题,而且解决了实时采集过程中数据的快速、大容量储存问题,实现了采集过程中采集参数的实时更新;实验结果表明该应力波采集系统具有响应速度快、执行效率高等优点。

虚拟仪器;数据采集;生产者/消费者;技术数据管理流;数据库; 事件结构

0 引言

无损检测技术经历一个世纪的发展,虽然它本身不是一种生产技术,但其技术水平能反映该行业、该地区甚至是该国家的工业技术水平。据统计资料显示,无损检测带来了十分明显的经济效益。经过无损检测后,机械产业增值5%,国防、宇航产品增值12%-18%。可见无损检测在现代工业中占有重要的地位[1-3]。近年来,随着无损检测技术的提高,对无损检测信号的采集和处理提出了越来越高的要求,比如检测过程的自动化、操作过程的傻瓜化、信号分析与处理的智能化[4]。因此,无损检测仪器的物理功能越来越重要,传统仪器的固有缺点(如响应速度慢、缺乏灵活性、封闭性)不能满足现代工业对无损检测的要求。另外,被测对象的频率范围越来越宽,要求总线具有相应的高速数据传输能力和灵活的扩展能力,于是出现了基于虚拟仪器的无损检测系统[5-6]。

在给定计算机必要的仪器硬件之后,构成和使用虚拟仪器的关键在于软件。LabVIEW[7]是美国NI公司创建的一个功能比较完整的软件开发环境,也是目前应用最广泛、发展最快、功能最强的图形化编辑软件开发环境。

许多学者在基于虚拟仪器的无损检测系统和生产者/消费者设计模式方面做了很多研究。文献[8]对基于LabVIEW的超声检测系统进行了研究,完成了实时显示超声波信号,并且实现了对焊缝缺陷的定位。文献[9]对基于LabVIEW的电磁超声数据采集与分析系统进行了研究,完成了对信号的实时采集、滤波及其显示,并实现了对信号的实时处理。文献[10]对基于虚拟仪器的电磁超声数据采集和分析软件进行了研究。文献[11]利用LabVIEW实现了超声信号在高采样率下的实时显示。文献[12]在LabVIEW编程下,采用生产者与消费者并行的结构,对采样数据进行了读取。文献[13]基于LabVIEW,构建了一种利用生产者/消费者模式的齿轮传动振动检测系统。文献[14]基于LabVIEW开发平台,介绍了生产者/消费者架构设计思路和实现过程。文献[15]阐述了基于生产者/消费者模式的钢轨廓形采集系统设计思路和实现的方法,实现了图像采集和图像处理模块的并行处理。文献[16]以LabVIEW为开发平台,介绍了生产者/消费者程序设计思路,并结合声卡信号采集实例给出了此程序设计的过程。

文献[8-11]主要研究了基于虚拟仪器的无损检测系统,但其控制策略采用了传统的循序结构[8-11];文献[12-16]主要研究了基于虚拟仪器的生产者/消费者设计模式的实现方法,但并没有研究如何把该模式应用到无损检测系统中。在上述的研究基础上,本文结合生产者/消费者设计模式、无损采集技术和虚拟仪器技术,针对传统虚拟仪器的控制方案存在的循环周期长、执行效率低、数据大容量储存以及参数实时更新困难等问题,设计了采用生产者消费者设计模式的控制策略、TDMS二进制文件储存策略和SQL数据库及事件结构相结合的实时更新策略的应力波无损检测系统。实现了对应力波信息的实时采集,采集信息的快速、大容量读取,连续采集过程的实时更新,从根本上解决传统虚拟仪器存在的问题。

1 生产者/消费者设计模式及其实现

1.1 生产者/消费者设计模式

生产者/消费者设计模式是多线程编程中最基本的设计模式,是事件处理器和队列消息处理器相结合而构成的复合设计模式。该设计模式包括一个生产者循环和多个消费者循环,各个循环以不同的速率并行运行。生产者循环作为主循环控制着所有的消费者循环,并且使用通信技术与它们进行通信。生产者/消费者设计模式将生产和消费数据速度不同的任务分开处理,大大提高了不同速率的多个循环之间数据共享的能力,解决了程序循环周期长、执行效率低等问题,且具有系统响应快、执行效率高等优点。

1.2 生产者循环与消费者循环之间的通信

在LabVIEW中通常采用变量(局部变量和全局变量)、通知器、队列实现在多个循环体中的数据传递。变量其实就是程序框图中的元素,可以在任意位置访问或存储数据。但其存在着数据同步困难、破坏LabVIEW的数据流模式和读写操作时易产生内存拷贝、计算机内存浪费等缺点,影响系统运行效率,并且变量还存在着出现竞争的危险。

通知器和队列通常在生产者/消费者设计模式下传输和同步数据。使用通知器解决了和竞争状态相关的问题。但通知器不存在缓冲区,易造成数据覆盖或丢失。队列比通知器多了缓冲区,故可以存储多份数据。通常情况下,队列按照先进先出(FIFO)的方式发出命令,即先插入的数据,也最先从队列中删除。在应力波信息采集过程中,由于需要处理许多用户界面的事件,为了不造成数据丢失,选择队列在各个循环之间传递数据,实现过程如图1所示。在循环开始之前,首先使用“获取队列引用”创建‘数据采集’队列。随后使用了两个并行的while循环分别充当生产者循环和消费者循环。在生产者循环中,使用了事件结构。当前面板中布尔变量值改变,相应的事件结构动作,进而通过“元素入队列”函数向队列中添加相应的事件。在消费者循环中,使用了条件结构。当消费者循环时,首先通过“元素出队列”函数获取队列中的事件,然后通过条件结构选择相应的分支。在循环结束后,使用“释放队列引用”释放队列。可见,在此生产者/消费者设计模式中,两个循环均被同步为与生产者循环一致。消费者循环只在队列中的数据可用时才执行,这样就保证了消费者循环执行任务的连续性和高效性。

图1 生产者消费者设计模式

2 采集系统的组成

应力波无损检测系统的原理如图2所示。

图2 应力波无损检测原理图

信号发生器产生的信号经过功率放大器后通过激发探头在试块上激发超声波,此时,采集卡通过另一侧的接受探头完成对超声波信号的采集,进而通过LabVIEW在PC屏幕上进行信号的显示以及后续的处理。图2中虚框部分为应力波信号采集系统。

应力波采集系统的流程图如图3所示。运行程序后,首先,初始化参数设置面板,使采集卡的各项参数归为程序预先设置的安全参数,以防过大或者过小的参数对采集卡造成不必要的损害。然后打开采集卡,进而启动采集卡,如果打开或启动采集卡失败,将报错并回到初始化参数设置模块,如果正常运行将进入空闲状态,等待虚拟面板的指令。

在空闲状态下有4个功能可以选择:读取数据、连续采集、单次采集、参数设置。如在虚拟面板上点击读取数据,前面板将通过对话框的形式提示输入将要读取文件的参数,读取的数据将在前面板波形图上显示。如在虚拟面板上点击连续采集,程序将自动进入连续采集状态,采集的数据在前面板波形图中连续显示。如采集过程中需要设置参数,可以通过虚拟面板直接对参数进行设置。如点击单次采集按钮后,程序将进行一次数据采集。

图3 应力波信息采集系统的流程图

3 应力波采集系统的软件设计

图4 信息采集程序框图

本系统以图形化编程语言LabVIEW为开发平台,采用生产者/消费者设计模式的控制策略以及模块化的编程思想,完成对应力波信号的采集。首先,通过VC++6.0完成对采集卡DLL动态链接库的编写。其次,通过LabVIEW自带的调用函数库节点CLN(Call Library Function Node)调用DLL动态链接库函数实现PC对采集的控制。再次,通过LabVIEW对各模块的调用,完成对采集卡采集数据的显示、储存、调用、打印等。其中利用SQL数据库和事件结构,实现了对采集参数的实时更新。利用TDMS(Technical Document Management System)实现了对采集数据的储存和读取。

3.1 功能模块的设计

在设计过程中,遵循由上至下的设计方法,首先根据系统的总体需求,将系统划分为几个功能模块:数据采集模块、数据储存模块、数据读取模块、参数更新模块、数据分析模块。由于采用了模块化的设计思路,当需要添加新的功能时,只需要将新的功能模块加入到系统中即可,这使得系统的扩充性提高,充分体现了“软件就是仪器"。

3.1.1 数据采集模块

数据采集卡是应力波采集系统的重要组成部分,本系统采用的是汕头超声CTS04-PC多通道采集卡。此采集卡是基于计算机标准PCI总线制作的一种工业超声检测设置,可安装在台式计算机或者工控机的PCI插槽中使用,该卡具有4个超声工作通道,亦可根据实际检测的需要多卡级连,构成4-32或者更多通道的自动化超声探伤系统,应用于工业无损检测的各种不同领域,尤其是多通道自动采集、多通道超声成像方面。

LabVIEW驱动程序库中提供的驱动程序仅面对NI公司生产的板卡和少数公司开发支持的LabVIEW平台的板卡。本系统使用的CTS04-PC板卡属于普通板卡,不能在LabVIEW环境下直接驱动。

目前,在LabVIEW语言开发环境下实现程序和普通采集卡交换数据的方式有端口直接操作、使用外部代码节点CIN(code interface node)、调用动态链接库DLL(dynamic link library)等3种方式。本系统设计中采用DLL实现采集卡的驱动,而且一般厂家的普通采集卡都带有DLL形式的驱动程序。在LabVIEW编程语言中,可以通过调用函数库节点CLN(call library function node)完成对DLL的调用。

综合DLL动态链接库的编写、LabVIEW调用函数库节点CLN对DLL的调用等技术,编写了数据采集模块,程序框图如图4所示。

在程序空闲状态下,当在虚拟面板上按下数据采集按钮,在生产者/消费者设计模式下,生产者提供连续采集的命令、消费者接收连续采集的命令后,图4所示的程序开始运行。其工作流程如图5所示。

当获取采集命令后,进入数据采集模块。首先通过SQL数据库获取控制面板上的参数。然后根据相应的参数(采集卡号、通道号),输出相应采集卡、通道的波形数据;最后再利用构建波形模块,以及先前得到的控制面板的参数(位移,范围)构建波形并通过波形图在前面板上显示。

图5 数据采集模块的流程图

3.1.2 参数实时更新模块

在数据采集过程中,为了实时显示不同参数下应力波的波形,参数的实时更新变得尤为重要。在一些数据采集系统中,当数据连续采集过程时,参数通常不可以改变。当采集不同参数下的波形时,需要停止采集程序后设置,浪费了时间。本设计系统通过SQL数据库和事件结构相结合的控制策略完成了连续采集过程中参数的实时更新功能,其程序框图如图6所示。

在数据采集过程中,当控制面板上十六个参数中任一参数改变时,都会引起事件结构动作,进而通过相应的参数设置模块设置采集卡内的参数。如在数据采集过程中,当前面板的卡号由原来的1号卡改变成2号卡,此时事件结构中“‘控制面板,卡号:值’改变”分支动作。此后通过事件结构中的新值和设置卡号模块更新采集卡和控制面板的参数。

图6 参数实时更新程序框图

3.1.3 数据储存模块

在数据连续采集过程中,对数据储存有数据量大、储存速度快等要求,一般的数据储存策略难以满足此类要求。NI公司开发的二进制文件TDMS文件,具有高速、大存取和方便等多种优势,并与LabVIEW无缝支持。故本系统采用TDMS文件储存策略,其程序框图如图7所示。

图7 数据储存程序框图

首先通过TDMS打开.vi创建新的TDMS文件,其中通过路径设置程序确定新创建的TDMS文件的存储路径。为了区分不同文件,使用文件命名模块(自动生成带有时间标识符的文本)定义TDMS文件的名称。进而通过TDMS写入.vi把波形文件写入,卡号和通道号的组合定义了TDMS文件的组命名。最后通过TDMS关闭.vi完成对数据的储存。

3.2 生产者消费者模式在应力波采集系统的实现

主程序框图如图8所示。在循环开始之前,首先使用“获取队列引用”函数创建消息队列,生产者使用“元素入队列函数”向队列中添加元素,消费者使用“元素出队列”函数从队列中获取元素并移除数据。

图8 主程序框图

在程序的空闲状态下,当点击虚拟面板上单次采集按钮,时间结构中“单次采集值改变”分支动作,枚举类型的单次采集变量通过“元素入队列”函数向数据采集队列添加了‘单次采集’元素。同时在消费者循环中,通过“元素出队列函数”获取了枚举类型的‘单次采集’元素,然后通过条件结构选择单次采集条件分支,运行单次采集模块,从而完成对数据的显示。

在程序创建消息队列后,通过以条件结构为基础的状态机制完成对采集卡、控制面板、虚拟面板按钮的初始化,进而进入条件结构下的空闲状态,等待虚拟面板按钮的响应。在条件结构的空闲分支内为事件结构的生产者模式。

该设计模式允许消费者以固有速度采集数据的同时,生产者循环完成对用户界面的响应。此前介绍的实时参数更新模块就是利用了生产者消费者这一特点。

当需要增加软件的功能时,只需更改枚举变量,在生产者循环中增加事件结构,在消费者循环中增加条件结构,并在条件结构中增加响应的功能模块。

在程序运行过程中,为了防止误按或者错按按钮,从而带来不必要的损失。此系统采用布尔控件可见不可见的方法,实现对程序的自锁或互锁。

4 系统运行实验

为了验证基于生产者消费者设计模式的应力波检测系统的性能,对厚度为20 mm的铝板进行连续的数据采集实验。在采集过程中,进行参数的实时更新和数据的储存。其中采集卡的工作状态是单发单收,参数设置为:帧压缩比为1:1,增益30 dB,验波方式为射频,波形显示范围为40 μs。

运行程序后,在前面板的状态显示区显示采集卡1、2的运行状态(灯亮表示正在运行),采集卡的数目和采集次数。在参数设置区域,可以对采集过程中的参数进行设置(其中显示的参数为初始化参数)。在设备控制区域显示着虚拟控制按钮,其中按钮根据程序的不同阶段进行不同的显示。比如在程序的等待过程中,显示实时采集、外部触发采集、单次采集、停止、数据读取按钮。但当点击实时采集按钮后,程序进入实时采集,按钮显示为暂定、触发保存和滤波。此方法很好地解决了程序运行过程中设备控制的误操作问题。

连续采集的波形如图9所示。其中第一个波包为基波,后面的波包依次为铝板的底面回波。

图9 应力波无损采集系统的前面板

在连续采集过程中,进行了参数实时更新功能和数据储存功能的验证。实验结果表明:在实时采集过程中,可以实时地更新采集的参数和保存采集的数据。

5 总结

本文采用生产者-消费者设计模式的控制策略设计了应力波数据采集系统,解决了传统顺序结构存在的程序循环周期长、执行效率低、增加功能困难等问题。在数据储存方面应用了NI公司开发的二进制文件TDMS文件,具有快速、储存量大、方便等优势,为以后数据的分析处理带来便利。并使用SQL数据库和事件结构的相结合的方法,在连续采集过程中实现参数的实时更新。本文的研究为应力波无损检测系统操作的傻瓜化、数据分析和处理的智能化奠定了基础。

[1] 施克仁.无损检测新技术[M].北京:清华大学出版社,2007.

[2] 罗雄彪,陈铁群.超声无损检测的发展趋势[J].无损探伤,2004, 8(3):1-4.

[3] 沈功田.中国无损检测与评价技术的进展[A].第17届世界无损检测会议专题报告[C].上海,2008:787-793.

[4] 李 铁,刘时风,李路明.基于LabVIEW的虚拟仪器技术在无损检测中的应用[J].无损检测,2001:23(6):240-242, 248.

[5] National Instruments Corporation. LabVIEW Analysis Concepts[Z].US,National Instruments Corporation,2004.

[6] National Instruments Corporation. NI Vision for LabVIEW User Manual[Z].US,National Instruments Corporation,2005.

[7] Jeffrey Travis,JimKring. LabVIEW for Everyone [M].New Jersey:Prentice Hall PTR,2008.

[8] 马宏伟,王华玲,李海宁.基于LabVIEW的超声检测虚拟仪器开发[J].仪器仪表学报,2006,27(s3):1785-1787.

[9] 陈 鹏,蔡强富,刘美全,等.基于LabVIEW的电磁超声数据采集与处理系统设计[J].计算机测量与控制,2013,21(3):816-818.

[10] 王 珅,黄松岭,赵 伟.基于虚拟仪器技术的电磁超声数据采集和分析软件设计[J].仪表技术与传感器,2009(5):37-39.

[11] 耿晓琪,张钦宇.基于LabVIEW超声信号的数据采集系统[J].微计算机信息,2008,24(10-1):141-143.

[12] 李羽翠,姚运萍.基于LabVIEW的心电采集分析系统的设计[J].自动化与仪器仪表,2015,7:174-176.

[13] 唐进元,李 松,邵 文.基于LabVIEW生产者-消费者模式的齿轮传动振动测试系统[J].机械传动,2011,35(1):5-7.

[14] 雷晏瑶,李 智.基于生产者/消费者的数据采集系统设计[J].计算机应用技术,2011,38(9):39-43.

[15] 王 健,胥燕军,王伟平,等.基于生产者/消费者模式的钢轨轮廓采集系统[J].中国铁路,2014,74-76.

[16] 王维喜,李 智.基于生产者/消费者设计模式的连续音频信号采集系统[J].现代电子技术,2009(7): 129-132.

Design of Stress Wave Information Acquisition System Based on Producer/Consumer Design Pattern

Liu Suzhen1, Wu Yanjun1, Zhang Chuang1, Yang Qingxin2

(1.Province-Ministry Joint Key Laboratory of Electromagnetic Field and Electrical Apparatus Reliability, Hebei University of Technology, Tianjin 300130; China; 2.Key Laboratory of Advanced Electrical Engineering and Energy Technology, Tianjin Polytechnic University, Tianjin 300387, China)

The stress wave information acquisition system which bases on the virtual instrument software development platform of LabVIEW 14.0 and combines some strategies, including producer/consumer design pattern control strategy, TDMS binary file storage strategy and the real-time updating strategy with the combination between SQL database and event structure, is designed. This system realizes real time stress wave information acquisition, storing, displaying, and other functions. The combination of three control strategies overcomes the problems which the long execution cycle and low efficiency in traditional sequential structure and realizes fast, large capacity storage in the process of real time acquistion. At the same time, it also implements the acquisition parameters updating in real time.The experimental results show that the stress wave acquisition system has advantages of fast response speed, high execution efficiency and so on.

virtual instrument; date acquisition; producer/consumer design pattern; technical document management system(TDMS); SQL database; event structure

2016-03-09;

2016-04-25。

国家自然科学基金资助项目(51307043);河北省自然科学基金资助项目(E2016202260)。

刘素贞(1969-),女,河北大城人,博士,教授,博士生导师,主要从事工程电磁场与磁技术方向的研究。

1671-4598(2016)09-0198-05

10.16526/j.cnki.11-4762/tp.2016.09.056

TP311.1

A

猜你喜欢

设计模式采集卡生产者
“1+1”作业设计模式的实践探索
高精度AD采集卡性能测试及评价方法研究
1月巴西生产者价格指数上涨3.92%
三维协同设计模式下的航天项目管理实践与展望
2019德国IF设计大奖
交通机电工程设计模式创新探讨
家禽福利的未来:生产者能期待什么?
面向数控机床的多通道传感数据采集卡设计
并行高速采样在地震物理模拟采集中的应用
一场大风带给生产者的思考