基于生产者_消费者设计模式的连续音频信号采集系统.pdf
1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/基于生产者/消费者设计模式的连续音频信号采集系统王维喜,李 智(青岛大学 机电工程学院 山东 青岛 266071)摘 要:连续信号采集系统不仅需要保证信号采集的连续性,而且在信号采集过程中要有实时控制能力。使用生产者/消费者模式进行程序设计可以使程序设计更为快捷、简单和高效。以LabVIEW为开发平台,详细介绍了生产者/消费者程序设计的思路,并结合声卡信号采集实例给出了此程序设计的过程。结果表明在对实时性和连续性有严格要求的程序设计中引入生产者/消费者设计模式,可使程序的响应时间更快,执行效率更高。关键词:LabVIEW;生产者/消费者模式;声卡;连续采集;实时控制中图分类号:TN912 文献标识码:B 文章编号:10042373X(2009)072129204Continuous Sound Signal Acquisition System with Real2time Control Based onProducer/Consumer Design PatternWANG Weixi,LI Zhi(Mechano2Electronic Engineering College,Qingdao University,Qingdao,266071,China)Abstract:Continuous sound signal acquisition system not only guarantees the continuity of signal acquisition,but hasthe real2time control ability in the process of signal acquisition.A producer/consumer design pattern can make program de2signing quicker,simpler and more efficient.Through the example of continuous sound signal acquisition,the designing ideafor the Producer/consumer design pattern is described in details and the design process of this program on the LabVIEWplatform is given.The result shows that the introduction of the producer/consumer design pattern in the use of programdesign which has serious request in real2time and continuous sound signal acquisition can make the processes response fas2ter and more efficient.Keywords:LabVIEW;producer/consumer design pattern;sound card;continuous sound signal acquisition;real2time con2trol收稿日期:20082092160 引 言LabVIEW是美国NI公司1986年推出的一种图形化的编程语言和开发环境。作为虚拟仪器开发平台,由于其图形化的编程方式具有简单易学、直观方便、功能强大等特点,是很多工程设计人员进行虚拟仪器开发的首选。生产者/消费者设计模式是NI公司最新推出的程序设计概念,它从主/从设计模式发展而来,生产者/消费者设计模式将生产和消费数据速度不同的任务分开处理,大大提高了不同速率的多个循环之间数据共享的能力,对于多任务处理和实时性、连续性要求严格的程序设计,生产者/消费者设计模式是较好的选择。在虚拟仪器系统中,硬件解决信号的输入和输出,软件可以方便地更新仪器系统的功能,以适应不同使用者的需要。其中信号的输入部分一般使用数据采集卡实现,商用的数据采集卡具有较大的通用性。普通声卡具有16位的量化精度、数据采集频率是44 kHz,完全可以满足特定音频信号范围内数据采集的需要,个别性能指标还优于商用数据采集卡,而价格却为商用数据采集卡的十几分之一甚至几十分之一。若保证信号采集的逼真性,在采集过程中的连续性和实时控制显得尤为重要。本文以LabVIEW为平台,着重介绍了生产者/消费者模式的实现,以及在实时控制的连续音频采集系统中的应用。1 生产者/消费者设计模式概念及其实现1.1 生产者/消费者设计模式概念生产者/消费者设计模式包括多个并行循环,每个循环以不同的速率执行任务。一个循环作为生产数据的循环,其他循环作为消费数据的循环。生产数据的循环控制所有消费数据的循环,并且使用通信技术与它们进行通信。1.2 生产者循环与消费者循环之间的通信在LabVIEW程序设计过程中,变量(局部变量和全局变量)、通知器、队列常用于多个循环之间传921现代电子技术2009年第7期总第294期?测试 测量 自动化?1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/递数据。LabVIEW中的变量是程序框图中的元素,通过它可以在另一位置访问或存储数据。根据不同的变量类型,数据的实际位置也不一样。局部变量将数据存储在前面板的输入控件和显示控件中,全局变量和单进程共享变量将数据存储在特殊的通过多个VI可以访问的仓库中。不管变量将数据存储在何处,所有的变量都可以在不使用连线连接两个地方的条件下把数据从一个地方传递到另一个地方,而不必使用正常的数据流。但是变量的使用有着其自身的缺点,变量不仅不能保证各个循环之间的同步,而且使用变量会破坏LabVIEW的数据流模式,在对变量进行读写操作时容易产生内存拷贝,浪费内存资源,影响系统运行效率。变量还允许竞争状态的出现,竞争状态不容易识别和调试,因为输出取决于操作系统执行排定的任务和外部时间定时的顺序。任务之间和任务同计算机之间的交互方式,以及外部时间的任意定时都使这种顺序变得随机。很多情况下,带有竞争状态的代码会在数千次测试中返回相同的结果,但仍然可能会在运行时返回一个不同的结果。对生产者/消费者设计模式的一个更有效的实现是使用通知器和队列使数据传输保持同步。通知器在发出数据可用的通知时,将同时发送数据。使用通知器将数据从主循环传送到从循环消除了和竞争状态相关的问题。使用通知器还有同步的好处,因为数据可用时,主从循环都已完成定时,并准备实现一个良好的生产者/消费者设计模式。但是通知器不会缓冲数据,如果主循环在从循环读取第一份数据之前发送另一份数据,那么原来那份数据就会被覆盖并丢失。队列类似于通知器。但它可以存储多份数据,默认情况下,队列按照FIFO(先进先出)的方式执行。因此,第一份插入队列的数据,也是第一份从队列中删除的数据。在实时控制的连续音频信号采集过程中,由于需要处理许多用户界面的事件,为了不造成数据丢失,选择队列在各个循环之间传递数据,实现过程如图1所示。图1 使用队列的生产者/消费者设计模式如图1所示,在循环开始使用“获取队列引用”函数之前,队列就已经创建完毕。生产者循环使用“元素入队列”函数向队列中添加数据。消费者循环使用“元素出队列”函数从队列中移除数据。消费者循环一直到队列中的数据可用时才执行。可见,在此生产者/消费者设计模式中,两个循环均被同步为与生产者循环一致。消费者循环只在队列中的数据可用时才执行。这样就保证了消费者循环执行任务的连续性和高效性。并且,队列用于循环之间的数据传递,创建全局可用的位于队列中的数据,而且在添加新的数据到队列时,避免了丢失数据的可能性。2 实时控制的连续音频信号采集系统2.1 声卡简介从数据采集的角度看,声卡是一种音频范围内的数据采集卡,是计算机与外部模拟量环境联系的重要途径。一般声卡都是由以下几部分组成:声音控制/处理芯片,功放芯片,声音输人/输出端口等。声音控制/处理芯片是声卡的核心,集成了采样保持、A/D转换、D/A转换、音效处理等电路,它决定了声卡的性能和档次,基本功能包括对声波采样和回放控制、处理MIDI指令等,有的厂家还加进了混响、合声、音场调整等功能。功放芯片完成信号的功率放大以推动喇叭发声工作。声音输人/输出端口是音频信号的输人和输出,它主要有外接端口和内接端口。外接端口有“SPK Out”喇叭输出端口,“Wave Out(或Line Out)”线性输出端口,“Line In”线性输人端口,“MIC”麦克风输人端口,还有MIDI端口,连接电子乐器以及连接游戏控制器。内接端口是内置的输人/输出端口,是CD音频接口,通过34针的音频线直接连接。Line In接口和MIC都可以用于外部音频信号的输入,只不过后者可接入较弱的信号,幅值大约为0.020.2 V,显然这个信号较易受到干扰,因而常使用Line In,它可接入幅值约不超过1 V的信号。市面上的声卡主流都是16位的,声卡的最高采样频率是44.1 kHz,民用的声卡一般将采样频率设为4档,分别为44.1 kHz,22.05 kHz,11.025 kHz和8 kHz。与一般的数据采集卡不同,声卡的D/A和A/D功能都是连续状态的。2.2 具体设计根据声卡的性能指标,将声卡初始设置为双声道、44 100 Hz采样频率、16位采样精度。要使采集到的音频信号达到逼真的效果,要求信号的采集过程保持连续,但实时控制要求程序对用户界面的控件做出响应,031自动化技术王维喜等:基于生产者/消费者设计模式的连续音频信号采集系统 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/这就在采集的连续性和对用户的响应方面产生了矛盾。本音频信号采集系统,运用生产者/消费者程序设计模式,很好地解决了这一矛盾,使生产者循环完成对用户界面的响应,消费者循环完成音频信号的采集任务,从而不仅提高了整个信号采集过程的效率,而且使采集的语音信号效果逼真。图2是实际音频信号采集系统前面板。图2 实际音频信号采集系统前面板主要程序框图如图3所示,在循环开始前,使用“获取队列引用”函数创建消息队列。生产者循环使用“元素入队列”函数向队列中添加数据。消费者循环使用“元素出队列”函数从队列中获取消息并移除数据。该设计模式允许消费者循环以固有速度采集信号的同时,生产者循环完成对用户界面的响应,生产者循环中采用事件结构,事件结构的延时时间为100 ms,采用轮询操作,处理用户界面各个控件的响应,对信号采集进行实时控制,同时为了不影响消费者循环中信号采集的连续性,并不是每一个用户事件都通过队列产生消息,通知消费者循环重新配置信号采集,只有在声卡配置参数(采样点数、采样率)发生改变时,生产者循环使用“发送通知”函数产生消息,以便通过“等待通知”函数通知消费者循环。消费者循环内部是状态机结构,在第一次循环时进入“SetUp”分支,进行声卡的初始化配置,从下次循环开始,在其他控件发生改变而有关声卡配置的参数不发生变化时,生产者循环不会产生消息队列,消费者循环中在“daq”分支和“Wait”分支间进行,“Wait”分支仅检查消息队列中是否有消息,如果没有转“daq”分支进行数据采集,而不会进入声卡配置的“SetUp”分支,这样不仅保证了独立的采集过程不受影响,而且由用户界面引起的任何延时(如显示对话框)都不会导致采集过程的循环操作产生延时,从而保证采集音频信号的连续性。在用户改变声卡配置参数发生时,生产者循环响应该事件,“元素入队列”函数向队列中添加消息,消费者循环“Wait”分支中的“元素出队列”函数从队列中移出消息,在下次循环时进入“SetUp”分支进行声卡参数配置,然后转入“daq”分支继续进行信号采集。在“daq”分支中除进行数据采集外,还对信号进行功率谱分析,并将信号保存在一个硬盘文件中。图3 基于生产者/消费者程序设计模式的连续音频信号采集程序框图131现代电子技术2009年第7期总第294期?测试 测量 自动化?1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/ 通过大量实验发现采用生产者/消费者设计模式设计的音频信号采集系统能够有效避免在采集过程中出现的声音中断和失真现象,较之以前基于其他模式的设计有一定的优势。3 结 语在LabVIEW程序设计过程中,并行循环之间的数据传递必须进行妥善处理,否则就会出现死循环等预想不到的错误。该文介绍的生产者/消费者设计模式不仅使并行循环间传递数据的逻辑关系更加简洁明了,使得程序的修改维护更加方便,而且大大提高了程序运行的效率。本文只是利用一个简单的实时控制的连续音频信号采集系统介绍了此模式的应用,阐明了这种设计模式的思想,在用LabVIEW设计如网络通信程序等要求准确且响应速度快的实时控制程序时,生产者/消费者模式有很好的借鉴意义。参 考 文 献1 Conway J,Watts Steve A.Software Engineering Approachto LabVIEWM.New Jersey:Prentice Hall PTR,2003.2 Bitter Rick,Mohiuddin Taqi,Nawrocki Matt.LabVIEW Ad2vance Programming TechniquesM.Boca Raton:CRC PressLLC,2001.3 Johnson Gary,Jennings Richard.LabVIEW Graphical Pro2grammingM.New York:McGraw2Hill,2006.4 Jeffrey Travis,Jim Kring.LabVIEW大学实用教程 M.3版.北京:电子工业出版社,2008.5 Peter A.Blume,The LabVIEW Style book M.NewJersey:Prentice Hall PTR,2007.6周生国,李世义.机械工程测试技术M.北京:国防工业出版社,2005.7王磊,陶梅.精通LabVIEW 8.0 M.北京:电子工业出版社,2007.8郑继明,李仪.声卡在数据采集中的应用J.国外电子测量技术,2000(5):28229.9杨乐平,李海涛,杨磊.LabVIEW程序设计与应用M.2版.北京:电子工业出版社,2004.10胡生清,幸国全.未来的仪器仪表 虚拟仪器J.自动化与仪表,1999,14(6):527.作者简介 王维喜 男,1979年出生,硕士研究生。主要研究方向为智能仪器与测试技术。(上接第119页)4 改造效果对龙门刨床的电气控制系统进行了总体设计。主拖动采用调速范围宽、节能效果显著的变频器,用PLC实现开关量逻辑控制和变频电动机的转速控制。控制系统用触摸屏作人机界面,触摸屏用各种画面来显示龙门刨床的运行状态和故障信息。实践证明,改造好的龙门刨铣床大大提高了机床的性能和加工能力,有效地提高了工件的加工精度,产生了显著的经济效益和社会效益。参 考 文 献1廖常初.PLC基础及应用 M.北京:机械工 业 出版社,2003.2张国兵.基于PLC和变频器的龙门刨床改造J.工业控制计算机,2003,16(12):59261.3马红旗.触摸屏在PLC中的应用J.机电一体化,2003(4):36237.4宋健,袁驰.B2012A型龙门刨床拖动系统的改造J.潍坊高等专科学校学报,2001(3):78279.5许明新.变频技术及PLC在龙门刨床中的应用J.机车车辆工艺,2001(4):22224.6程彪,袁佑新,彭祥敏,等.基于PLC控制的龙门刨控制系统J.武汉理工大学学报,2001,23(10):46249.7刘东.龙门刨床变频调速系统的研制J.洛阳工学院学报,2000,21(3):17219.8安川电机.安川Varispeed F7系列使用说明书Z.2003.9深圳人机电子有限公司.EasyBuilder500软件使用手册Z.2002.10朱宁.触摸屏在机床PLC控制系统中的应用J.机床电器,2001(6):17218.微软IE8浏览器正式发布 路透社报道,微软公司将于美国当地时间2009年3月19日上午正式发布Internet Explorer 8浏览器,并同时开放下载。据报道,微软网站将从美国西部时间2009年3月19日上午9点,北京时间3月20日0点开始提供IE8免费下载,这一时刻正是在美国拉斯维加斯举行的MIX09(Microsoft Internet Exchange)展会上,微软IE开发团队主管Dean Hachamovitch发表主题演讲的开始时间。IE8支持Windows Vista和Windows XP操作系统,下载前需通过正版验证。根据之前的报道,首批IE8将提供24种语言版本,包括两岸三地使用的简繁体中文标准。(摘自 驱动之家)231自动化技术王维喜等:基于生产者/消费者设计模式的连续音频信号采集系统