基于 LabVIEW队列状态机的数据采集系统
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
叶枫桦1, 2 ,周新聪1, 2,白秀琴1, 2 ,郭智威1, 2 ,袁成清1, 2
( 1.武汉理工大学 能源与动力工程学院 可靠性工程研究所 � 湖北 武汉 � 430063;
2.武汉理工大学 船舶动力工程技术交通行业重点实验室 � 湖北 武汉 � 430063)
摘 � 要:数据采集是计算机与外部物理世界连接的桥梁,以 LabVIEW 为开发平台的数据采集系统具有组建时间短, 功
能易于扩展与维护和开发费用低等优点。在此, 介绍 Anthony Lukindo 改进的队列状态机,并以此为构架构建数据采集系
统,实现多通道数据的实时采集、数据存储、数据
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
与显示等功能, 最后
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
了基于队列状态机进行数据采集的系统的
优势。
关键词: L abVIEW ;队列状态机; 数据采集; T DMS
中图分类号: T P274� � � � � 文献标识码: B � � � � � 文章编号: 1004- 373X ( 2010) 04- 204- 04
Design of Data Acquisition Program Based on Queued State Machine in LabVIEW
YE Fenghua1, 2 , ZHOU Xincong 1, 2 , BAI X iuqin1, 2 , GUO Zhiwei1, 2 , YUAN Chengqing 1, 2
( 1. Reliability Engineering Inst itute, Schoo l of Energy and P ower Eng ineering ,Wuhan Universit y of T echnolog y, Wuhan, 430063, China;
2. Key Laborato ry o f M arine Power Engineering & T echno logy ( Ministry of Communica tions) , Wuhan U niv ersity o f T echno logy ,Wuhan, 430063, China)
Abstract: Data acquisition is a bridge that connects the computer and the outside phy sical wo rld. The data acquisition sy s�
tem based on LabV IEW has advantages o f sho rt design per iod, easily ex tended function, low cost, remote and so on. The
queued state machine improved by Anthony Lukindo is introduced, and a DAQ sy stem builds on this ar chitect ur e, achieving the
function of multi- channel r eal- time data acquisit ion, data sto re, data analysis and display and so on. F inally, the advantages
of DAQ system based on queued st ate machine are summarized.
Keywords: L abV IEW; queued state machine; data acquisit ion; T DMS
收稿日期: 2009- 10- 11
基金项目:国家自然科学基金资助项目( 50705070)
0 � 引 � 言
利用虚拟仪器构建的测试系统以其性能高,扩展性
强,开发时间少和无缝集成等优点被广泛应用于测试领
域。其中, LabVIEW是目前应用最广、发展最快、功能
最强的图形化虚拟仪器开发工具, 其特点是用数据流流
程图代替文本语言编程。因此,一些文本语言编程的设
计模式,在 LabVIEW 中并不适用。这里主要研究以队
列状态机为构架构建数据采集的系统。
1 � LabVIEW程序设计模式
程序设计模式是指一些固定有用的程序结构模式,
它们通常具有简单易读、易于维护和适用于多种场合等
优点。LabVIEW 程序设计模式有很多,其中状态机和
生产者/消费者的结构最为普遍。
1. 1 � 状态机
Alan Turing 于 1936年最早提出了�状态机 的概
念。状态机是一种具有指定数目状态的概念机[ 1] ,它在
某个指定的时刻仅处于一个状态,状态的改变是由输入
事件的状态变化而引起的。作为对输入事件的响应, 系
统可能转变到相同或不同的状态,而输出事件可能是任
意产生的。状态机包含三要素:状态 ( State)、事件( E�
vent )和动作( Act ion)。
LabVIEW中的状态机由一个 while 主循环和一个
case结构组成,并利用位移寄存器来实现状态的跳转。
while 循环保证状态机的连续运行; case结构的分支与
系统的状态( State)一一对应, 即 case 结构的分支名称
对应着状态名称,分支里执行代码的功能对应着状态的
行为 ( Action) ; 而 case 结构的条件变量与系统的事件
( Event)相对应,引发状态的变迁以及决定状态迁移的
方向 [ 2- 5]。
1. 2 � 生产者/消费者结构
生产者/消费者结构主要用于数据的处理, 它通过
并行的方式实现多个循环。
一般的数据采集系统都包括数据采集、数据分析和
结果显示三个步骤。若将这三个步骤通过数据流连接
起来,即每采集一次数据都需要经过数据分析显示后才
204
虚拟仪器与应用 叶枫桦等:基于 LabVIEW 队列状态机的数据采集系统设计
能第二轮采集, 则数据分析导致的时间延迟会增大数据
采集的周期。采用生产者/消费者结构的数据采集系
统,可以很好地解决这一问题, 它通过并行的方式实现
多个循环。一个循环不断地采集数据(生产者) ,另一个
循环不断地处理数据(消费者) , 这两个循环互相通信,
但又不产生干涉。同时, 生产者/消费者结构还可以避
免数据采集周期与数据分析周期不一致时造成数据的
丢失或数据的重复利用等问题 [ 6]。
2 � 队列状态机
顾名思义, 队列型状态机是把将要执行的状态排
队,然后把它们的状态名存在队列里, 队列里的状态名
与状态机的各个状态一一对应,用来控制状态的转换顺
序。执行了的状态, 其名称会从队列中删除, 同时根据
运行时状态的动作和碰到的事件, 新的状态名又会被添
加到队列中 [ 7]。队列状态机的形式有多种,本文介绍的
是由 Anthony Lukindo[ 8]改进的队列状态机,其结构示
意图如图 1所示,实际应用中的程序框图如图 2所示。
从图 1中可以看出, 该队列状态机主要包括三大部
分:事件结构 2、状态结构 3和并行运行的子程序 4. 1~
4. 3, 它们通过队列引用 1 相连接。具体的细节如
下: 1. 1为获取子程序( 4. 1~ 4. 3)的状态引用; 1. 2为通
过 Dequeue E lement V I获取队列中的第一个元素,并
从队列中删除该元素; 1. 3为通过 Unbundle By Name
VI获得的状态名和数据; 1. 4为获得的状态名与� EX�
IT 的比较, 判断是否停止循环(相同则停止循环) ;
1. 5为队列管理( Queue M anager)子 VI ; 2. 1为前面板
动作产生的指令,将所需跳转至的状态名称添加到队列
中; 3. 4为 case结构; 3. 5为程序代码; 3. 6为下一个状
态序列。
图 1� 队列状态机示意图
注意到图 1中的 4. 1~ 4. 3和 1. 1之间是用虚线连
接的,虚线意味着这些并行子 VI可以通过队列引用和
主程序进行�无线 连接,它利用队列引用是队列惟一标
识的特性。队列管理子 VI 程序框图如图 3所示。它
主要实现两个功能。将状态序列 3. 6根据需要添加到
队列的前面、后面或者替换掉队列里的元素; 处理错误
信息,当有错误产生时, � ERROR 状态会添加到队列
的首部, 然后, 主程序会优先执行� ERROR 状态。
图 2 � 队列状态机程序框图
205
!现代电子技术∀2010年第 4期总第 315期 � � 新型元器件
� � 与普通状态机相比, 该队列状态机的优点是:
( 1) 具有错误处理机制。队列管理子 VI 保证程序
发生错误时自动进入� ERROR 状态, 然后在该状态下
进行错误处理。
( 2) 由于有事件结构的存在, 程序能够很好地响应
前面板的动作和外部事件, 同时在� IDLE 状态下不会
过多占用 CPU。
( 3) 队列结构能够将状态序列添加到队列中, 因
此,一个状态分支不只决定后面的一个状态, 而能决定
后面的多个状态。例如, 状态机有三个状态 A , B, C,前
面板有两个按钮,单击一个按钮时, 可以按照 A #B#C
的顺序执行,单击另一个按钮时,可以按照A #C #B的
顺序执行。
( 4) 将此结构用于数据采集, 可以构成一个生产
者/消费者结构。
图 3 � 队列管理( Queue M anager)子 VI程序框图
3 � 数据采集程序设计
3. 1 � 数据采集程序的状态
根据实验要求, 需实现对柴油机 6路振动信号实时
采集、数据存储和数据分析与显示等功能。采集设备为
NI公司的 PCI- 6251 十六位采集卡,驱动为 DAQmx。
整个程序设计建立在上述队列状态机的结构上; DAQ
子程序(图 2中的 4)负责数据采集,并将数据传递给主
程序;主程序负责接收数据,实现数据的存储、分析和显
示。整个程序包含有多个状态,其关系如图 4所示。
图 4中灰色椭圆代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
初始化, 黑色椭圆代表终止,
白色椭圆代表状态节点, 各个状态通过事件连线进行连
接。其中, default 连线代表执行完该节点内容后自动
转移到下一个连接的状态节点;含有[按键有效]的事件
连线表示该事件由前面板按钮触发;虚线的事件连线表
示主程序与子 VI 之间通过队列进行指令的� 无线
传输。
3. 2 � 程序功能的实现
程序运行后自动进行初始化, 包括控制前面板的大
小和位置, 清空显示控件的数据, 创建队列引用和对
一些布尔控件赋予初始值(见图 2)。初始化完成后, 程
序进入到� Idle 状态,等待进一步指令。
图 4 � 状态图
为使状态图清晰明了,图 4中省略了各状态节点发
生错误时转移到 ERROR状态节点的事件线。
3. 2. 1 � 数据的采集
单击前面板开始采集按钮,事件结构将�创建任务
状态名添加到主程序队列中, 主程序转换到如图 5( a)
所示的状态分支,转速、采样点数以变体的形式与�创建
任务 状态名一起捆绑添加到 DAQ 子 VI 队列中。此
时, DAQ子 VI进入�创建任务 状态分支(见图 5( b) )。
在此状态分支下, 程序调用 DAQmx API 函数和
DAQmx 属性节点创建采集任务, 并将采集任务( DAQ
task)捆绑至位移寄存器,提供给下一状态分支使用。
为了减少截断信号造成的能量泄漏,实验采取整周
期采样。因此,在确定了转速(试验机由伺服电机带动,
单位为转/分)和采样点数后,就得知了采样频率。触发
信号由键相传感器产生, 对应于活塞的上止点, 触发形
式为模拟边沿上升过程触发,同时为了避免信号中的噪
声造成误触发, 程序调用了触发属性节点 ( DAQmx
Tr ig ger Property Node)的滞后触发( Hyster esis T rig�
ger) ,这样只有当信号穿过触发量减滞后量的值, 再达
到触发条件后,触发才会有效 [ 9, 10]。
采集任务创建完毕后, DAQ 子 VI 进入� 数据采
集 状态(图 5( c) ) , DAQmx Read VI 不断读取数据, 并
将数据以变体的形式添加到主程序的队列中,主程序则
不断从队列中取出数据, 进行数据的存储和分析处理,
并显示在前面板(图 5( d) )上, 这样 DAQ子程序和主程
序之间便构成了生产者/消费者结构。数据采集系统的
前面板如图 6所示。
206
虚拟仪器与应用 叶枫桦等:基于 LabVIEW 队列状态机的数据采集系统设计
图 5 � 数据采集程序框图
3. 2. 2 � 数据的存储
由于实验是多通道数据采集, 且采样速度要求较
高,因此数据量较大。为了方便存储和管理这些数据,
程序采用 T DMS( Technical Data M anagement St ream�
ing)文件格式。T DMS 文件有三层结构: 文件、组和通
道,每一个文件可以有多个组, 每一个组可以有多个通
道,在每个层次上,都可以定义一些属性添加若干附加
信息,在查询时可以通过这些附加信息来查询所需要的
数据。
图 6 � 数据采集前面板
TDMS 文件具有良好的逻辑结构, 可以为数据添
加描述属性,有利于数据的查询和管理。另外, 该数据
存储为二进制, 在写文件和向文件追加 ( append)数据
时, 速度很快。因此 TDMS文件很适合于数据量庞大,
通道数较多,并需要很好管理的场合。
数据存储的程序框图如图 5( a)和 5( d)所示。在
图 5( a)中创建 TDMS 任务。在图 5( d)中进行数据的
存储。数据存储时,以采集的次数为通道组名, 传感器
的位置为通道名;数据回放时, 以采集的次数为通道组
名, 依次读取出数据。
4 � 结 � 语
基于队列状态机构建的数据采集系统具有错误处
理能力; 能够很好地响应前面板动作和外部事件; 空闲
状态下不占用 CPU; 同时能避免数据采集周期与数据
分析周期不一致造成的数据丢失或数据重复利用问题。
另外,当需要修改或增加状态时,只需要在 case机构中
修改或增加相应的分支即可。因此,该数据采集系统易
于维护和功能扩充。
参 � 考 � 文 � 献
[ 1] Jon Conway , Steve Watt s. A Soft war e Engineer ing Approach
to LabVIEW[M ] . New Jer sey : P rentice Hall PTR, 2003.
[ 2] 聂影,冯向军. 基于 LabVIEW 的状态机模型研究[ J] . 计算
机测量与控制, 2007( 15) : 116- 118.
[ 3] Rumega S. U sing H ier archical State Machines in LabV IEW
[ J] . LabV IEW T echnical Resour ce, 2005, 12( 3) : 18- 23.
[ 4] 李炎华,卢至孟, 樊可清.基于 LabVIEW状态机的程序设计
[ J] . 五邑大学学报:自然科学版, 2007( 10) : 40- 44.
(下转第 210 页) �
207
!现代电子技术∀2010年第 4期总第 315期 � � 新型元器件
2. 3 � 双斜率积分模式的实现
根据内部时序的要求, 在 Quar tus ∃平台下用
VHDL 言语编程实现了双斜率积分模式下外部控制信
号 Precharge, Sample, Reset , Reset_ds, M em_hl的时序
关系,如图 4 所示, Reset _ ds 脉冲的出现, 意味着在
这个时候给出了第二个复位脉冲, 这个复位脉冲电平必
须小于 2. 5 V,其大小由 V res_ds控制。
图 4� 双斜率积分模式驱动信号时序
如果要实现多斜率积分, 可以在积分过程多次给出
几个 Reset _ds 脉冲, 每个脉冲电平要逐渐依次低于
Reset电平。使用基于 LUPA4000 的相机系统在相同
条件下分别拍摄单积分模式下和双积分模式下的图像,
分别如图 5和图 6所示。
图 5 � 单积分模式下
拍摄的图像
� � 图 6� 双积分模式下
拍摄的图像
从图 5, 6可以看出, 单积分模式中的左下角建筑物
灰度接近饱和, 很难分辨其边缘与天空背景; 而当采用
双斜率积分模式时, 左下角建筑物灰度与天空背景的灰
度差别较大,能够很容易的分辨出其边缘。显而易见,
采用双斜率积分模式拍摄的图像的动态范围明显高于
采用单斜率模式下拍摄的图像的动态范围。
3 � 结 � 语
双斜率积分法可扩展有源 CMOS 图像传感器
LUPA 4000的动态范围, 可将图像传感器的动态范围从
单积分模式下的 66 dB提高到 70~ 76 dB。相比于传统
的数字图像处理方法,该方法简单易行、效果显著;但其
弊端是需要多种非标准电压,且对后续数据处理的灵活
性不够。
参 � 考 � 文 � 献
[ 1] 刘海英,曹剑中, 董森,等. 基于 CMOS 图像传感器多斜率光
积分的研究[ J] . 光子学报, 2007, 36( Z) : 331- 334.
[ 2] 伦向敏, 张伯珩, 边川平, 等. CMOS 图像传感器 IBISA- A
- 1300 多斜率光积分研究 [ J] . 弹道与制导学报, 2007, 27
( 1) : 372- 374.
[ 3] 黎向阳, 商伟, 杨光宏, 等. 面阵 CMOS 图像传感器 LU�
PA4000 的驱动设计[ J] .现代电子技术, 2008, 31( 8) :
17- 19.
[ 4] Cypress Semiconductor Corporat ion. LUPA4000 4Pixel CM
OS Image Sensor Datasheet[ Z] . 2007.
[ 5] 陈敏思,姚素英, 赵毅强,等. 高帧频大动态范围 CMOS 图像
传感器时序控制电路的设计与实现 [ J] . 电子学报, 2004
( 11) : 1 923- 1 924.
[ 6] 付贤松. CMOS 图像传感器动态范围扩展研究[ D] .天津: 天
津大学, 2006.
[ 7] 侯伯亨, 顾新. VH DL 硬件描述语言与数字逻辑电路设计
(修订版) [ M ] .西安: 西安电子科技大学出版社, 2003.
[ 8] Otim S O, Jo seph D, Choubey B, et al . M odeling of H igh Dy�
namic Range Logar ithmic CMOS Image Sensor s[ A ] . Instr u�
mentation and Measur ement T echnolog y Conference[ C] .
2004: 451- 456.
[ 9] 裴志军,国澄明, 姚素英,等. CMOS 图像传感器动态范围扩
展技术[ J] . 传感器技术, 2003, 22( 6) : 1- 3.
作者简介 � 陈楚君 � 女, 1983年出生 ,湖北黄冈人, 硕士研究生。研究方向为信号获取与信号处理。
� � (上接第 207 页)
[ 5] F alcon, Jeanne Sullivan. LabVIEW State Diag ram Too lkit for
t he Design and Implementat ion of Discrete- event Systems
[ A ] . Pro ceedings Eight h Internationa l Wo rkshop on Dis�
crete Event Systems[ C] . 2006: 469- 470.
[ 6] 陈锡辉, 张银鸿. L abV IEW 8. 20 程序设计从入门到精通
[ M ] .北京: 清华大学出版社, 2007.
[ 7] Rick Bitter , T aqi Mohiuddin, Matt Nawrocki. LabV IEW Ad�
vanced Prog ramming Techniques[ M ] . Second Edition. Boca
Raton: CRC Press LLC, 2007.
[ 8] Ant hony Lukindo. LabVIEW Queued State Machine A rchi�
tect ur e[ EB/ OL ] . http: / / expr essionf low . com, 2007.
[ 9] 龙华伟,顾永刚. LabV IEW 8. 2. 1 与 DAQ数据采集[ M ] .北
京:清华大学出版社, 2008.
[ 10] 陈珺, 黄用勤,王永涛. 基于虚拟仪器的实时数据采集系统
的设计[ J] .武汉理工大学学报, 2007( 6) : 122- 124.
作者简介 � 叶枫桦 � 男,硕士研究生。研究方向为故障诊断。
210
传 感 器技 术 陈楚君等:基于 LU PA4000图像传感器扩展动态范围方法研究