《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于lwIP的电梯实时通话系统实现
基于lwIP的电梯实时通话系统实现
2016年微型机与应用第12期
郭晓天1,2,宋克柱1,2, 高林林1,2
(1.中国科学技术大学 物理学院,安徽 合肥 230026;2.核探测技术与核电子学国家重点实验室,安徽 合肥 230026)
摘要: :各地电梯事故频发,电梯五方对讲系统是乘客被困后用于紧急求援的重要手段。针对电梯实时通话系统的需求和稳定性问题,设计了一种基于物联网的智能电梯监控分布式系统的实现方案,在此基础上详细介绍了基于lwIP的实时网络通话的软件实现,并使用Speex语音压缩技术减少网络带宽占用,优化了通话实时性,保证了电梯监控中心服务器在多部电梯通话请求并发情况下的稳定性。
Abstract:
Key words :

  摘要:各地电梯事故频发,电梯五方对讲系统是乘客被困后用于紧急求援的重要手段。针对电梯实时通话系统的需求和稳定性问题,设计了一种基于物联网的智能电梯监控分布式系统的实现方案,在此基础上详细介绍了基于lwIP的实时网络通话的软件实现,并使用Speex语音压缩技术减少网络带宽占用,优化了通话实时性,保证了电梯监控中心服务器在多部电梯通话请求并发情况下的稳定性。

  关键词:电梯监控;实时通话;网络协议;语音压缩

0引言

  电梯行业日益发展,不同小区的电梯在地域上分布广,数量多,导致传统人工维修和处理故障的方法效率低下,电梯的维修保养成本高昂。

  现有的电梯智能监控系统[12]中, 往往使用SIM卡作为监控数据传输或通话的载体,但是其通话及网络均依赖井道里的信号强度。每个小区电梯需要SIM卡的数量比较多的情况下,随着时间增加,产生了电梯维护成本高的问题。为此,本文开发了一种基于互联网的分布式电梯智能监控系统,实现了电梯状态监控和紧急情况下五方实时网络通话的功能,具有很强的应用价值和前景。

1分布式智能电梯监控系统

  许多小区电梯维修或者紧急救援效率低,往往会影响到人们正常生活和生命安全。随着智慧城市建设的展开,基于物联网设计一种新型的大规模分布式电梯智能监控系统是必然的趋势。 

001.jpg

  整个分布式智能电梯监控系统由底层监控系统、小区网络部分、电梯监控服务中心三部分组成,如图1所示。底层监控系统主控芯片选用意法半导体公司生产的STM32F407,安装在电梯轿厢顶部监控电梯运行状态,且独立于电梯运行控制系统,通过网络连接到单元交换机。小区网络节点依托于小区电梯数量铺设,每个节点按照设置规则管理每部电梯网络数据的收发。电梯监控服务中心的主要功能是与各个小区网关节点网络通信,接收各小区电梯运行状态数据并建立数据库。在紧急情况发生时,电梯监控服务中心需要通过网络与轿厢内人员实时通话。

  在每部电梯顶部安装的底层监控系统采集电梯运行状态和参数,并将其通过交换机经小区光纤上传到电梯监控中心,如果出现电梯运行异常,电梯监控中心能够及时收到报警信息[3]。监控中心将电梯出错信息通过网络或者短信推送到小区附近的维修人员[4],从而提高了电梯维修效率,降低了维修成本。维修人员通过监控系统提供的电梯运行状态错误代码能准确判断出运行故障,从而节约维修时间。

2通话系统技术实现

  当电梯轿厢里紧急按钮按下时,五方对讲系统启动,电梯轿厢与电梯监控中心可实时进行语音通话,底层监控系统通过网络发送与接收通话时的语音数据流。

  在本电路系统中,采用LAN8720芯片作为物理层,传输协议采用轻量级开源协议栈lwIP[5],移植语音压缩Speex算法对音频流进行编解码,从而实现了低带宽占用的语音数据流的双向实时传输。

  通话系统核心程序采用C语言编写,为保证商业化使用方便及稳定性,单片机STM32内部并未移植类似于RTThread的操作系统,采用基本定时器的中断方式解决状态跳转等问题,系统成本低,稳定性高。

  2.1数据流控制

  单片机STM32的直接存储访问(Direct Memory Access,DMA) 控制器基于总线矩阵与独立先入先出队列(First Input First Output, FIFO)的结合,比普通CPU内存拷贝操作更加快速[6]。在通话系统中,音频芯片WM8978音频采样的数据与STM32内部数组的双向传递通过DMA技术能大大减小CPU占用率,并解决了在全双工对话时语音数据同步收发的问题。

  在移植的lwIP协议中,接收和发送以太网数据时STM32和内存之间的数据交换使用DMA技术能够减小每包间相对延迟,保证对话流畅度。

  2.1.1音频接收与发送

  在通话系统程序中DMA技术用于音频采样的数据流与STM32内部数组缓存空间的数据双向传递,可以减少数据传输的延迟。

  如图2所示,音频芯片WM8978与STM32交换数据的流程中, DMA总线每次将编码与解码需要的数组填充好后自动切换数组进行下一次填充,不涉及CPU操作,节省数据拷贝时间。每次填充时根据标志位判定哪个数组为空,每帧填充耗时为20 ms,填充后更改标志位并触发中断通知CPU对数组里数据进行编解码操作。

  

002.jpg

  2.1.2网络接收与发送

  每帧语音数据经过Speex压缩算法编码后,由lwIP协议循环发送到电梯安全监控中心。安全监控中心将每帧语音数据发送到STM32,STM32接收数据后进行Speex解码,再将数据发送至音频芯片播放。

  如图3所示,通过lwIP协议接收时,每帧数据(20 B)到达单片机时会触发中断,接收标志位翻转。单片机STM32检测到接收标志位后会进行Speex解码处理,并将标志位清零。每帧数据解码后的缓存数据大小为320 B,存储于数组中并通过I2S接口发送到左右声道播放,同时音频芯片I2S接口录音数据流也通过DMA技术传输到STM32芯片。编码时,通过检测音频数据接收标志位判断DMA已填充数组(recbuf1[]或recbuf2[]),从而对录音数组进行编码,更新发送标志位,通知lwIP协议发送。  

003.jpg

  在STM32中以太网接收和发送FIFO缓存数据,通过硬件DMA复制到内存中,不需要经过内存拷贝memcpy函数。在无操作系统的程序框架中,该操作保证数据交换时不占用CPU,相比普通操作系统中双线程交换数据稳定性更高。

  2.2系统优化

  实时通话时,音频数据需要与电梯监控中心协同收发,要尽量减少通话过程中因延时造成的沟通问题。

  2.2.1网络协议lwIP优化

  lwIP协议栈中使用pbuf结构体来描述以太网中缓存数据包,通过链表指针管理数据地址。

  制约UDP协议性能的瓶颈之一是内存数据的拷贝,接收1 KB数据包时,内存拷贝在底层驱动读入FIFO中的数据后会拷贝到lwIP协议栈中的pbuf缓存中,而在用户需要数据包时,协议栈中对应的拷贝库函数会将pbuf中数据拷贝到用户开辟的内存数组中。整个数据流程约占用总接收时间的一半[7],导致数据包延迟和处理器低效。

  单片机频繁接收数据会太过占用内存,同时因解码时间相对长,会存在缓冲栈溢出的问题。普通中断方式接收对话数据时,会导致CPU频繁进入中断降低效率,造成对话较大延迟甚至丢包的现象。

  在本系统中修改lwIP源代码[8],对lwIP协议内存占用率进行了很大改进,协议栈中内存拷贝不通过CPU,而是采用STM32 的DMA控制器接收和发送数据。

  如图4所示,STM32以太网DMA控制器描述符采用链式结构,每个描述符都有相应指针存储缓冲区地址,当以太网数据包比较大的时候会跨越多个描述符存储。描述符列表的最后一个描述符会指向第一个,形成链式结构[9]。  

004.jpg

  发送或接收时,每个描述符缓冲区存储设置为1 KB大小,STM32芯片中硬件DMA控制器直接参与以太网数据交换。CPU不用参与数据拷贝,相比于普通方式效率提高一倍,并且大幅减小了CPU与中断线负担。 如表1所示,若单片机工作频率为100 MHz,那么CPU拷贝每帧数据需要花费的时间约为3.3 μs。通过DMA总线操作能将这部分时间省略掉,提高效率,也能将CPU空闲出来用于表1优化前后运行时间比较拷贝时间/μs优化前3.30优化后0处理其他函数。

  2.2.2语音压缩与带宽优化

  在大型分布式电梯管理系统中,并发情况下多部电梯请求五方对讲通话时对电梯控制中心服务器的带宽压力非常大,会导致对话延时、服务器死机等诸多问题,因此需要减少单部电梯占用的带宽。

  语音芯片采样率为8 kHz,采样位数为16位,每秒通过DMA控制器的录音或放音数据大小为31.25 KB。在系统没有移植Speex语音压缩算法前,每秒由单片机传输到监控中心的录放音数据大小都为31.25 KB,那么每部电梯所占上下行带宽比较大,均为512 Kb/s。因此在多小区分布式电梯智能管理系统中,需要解决音频流数据流太大的问题。

007.jpg

  Speex压缩算法是一种基于码激励线性预测编码(Code Excited Linear Prediction,CELP)技术的语音压缩算法[910],在网络通话中有着极强的应用性[11]。

  线性预测编码(Linear Predictive Coding, LPC)使用过去样值对新样值进行预测,计算出最小误差信号。设样值序列为x1,x2…,xN,预测序列为y1,y2…,yN,则:

  2.png

  进行线性预测分析得到一组线性预测系数a1,a2…,aN,使得在该帧语音波形中均方预测误差E最小。

  B9SWPDG1_EB@JCY){~@6KXM.png

  式中L为线性预测器阶数。由于误差信号动态范围比样本值小,对误差信号进行量化编码可以有效降低编码比特位数。

  如图5所示,Speex算法解码过程中,激励信号e[n]是由基音尖峰预测信号与固定码书激励信号c[n]加权得到的。

  e[n]=βe[n-T]+c[n](3)

  式中T为尖峰周期,β为尖峰增益。e[n]通过感知加权合成滤波器,使得在该帧语音波形中均方预测误差最小,从而合成出语音数据。  

005.jpg

  在窄带模式(采样率8 kHz)下,每帧数据信号长度为20 ms,将其分为4个长度为5 ms的子帧。对每个子帧确定基音预测系数,并用固定码本中某一激励矢量经过加权合成滤波器并求解最小均方误差方程,从而选取到最佳激励矢量计算误差信号并进行量化编码。解码时借助于合成滤波器,将最佳激励信号通过滤波器产生近似合成语音。

  如图6所示,实时网络通话时,每部电梯与音频芯片交换的音频数据流速率为62.50 KB/s,单部电梯通话时所占网络实际带宽为512 Kb/s。经单片机STM32移植的Speex算法处理后,与电梯控制中心交换的上下行数据流约为1.95 KB,所占网络实际带宽减少为15.625 Kb/s。

 

006.jpg

  本系统中通过单片机移植Speex算法实现音频流压缩编解码,使得每秒语音上下行占用带宽大大减小,降低了智能电梯管理系统对服务器性能的要求,使得电梯智能监控中心能够同时管理几千余部电梯。

3结论

  本文提出了基于物联网的分布式智能电梯监控系统设计方案和电梯五方实时通话的技术实现流程。该系统为保证硬件工作的稳定性,不移植操作系统,而是修改移植网络协议lwIP实现系统网络连接,并通过STM32芯片DMA功能同步控制音频流,实现了全双工实时网络通话,优化了通话延时。在大型分布式电梯管理系统中,底层硬件通过移植Speex语音压缩编解码算法将网络带宽占用减少至原来的1/32,极大减少了单部电梯的带宽占用,满足了智能工业应用的生产需求和大规模使用要求。

参考文献

  [1] 吴卫, 郑建立, 孙佳新. 基于 RFID 电梯远程监测系统的设计与实现[J]. 微型机与应用,2011,30(3): 9294.

  [2] 闫学勤, 谢丽蓉,程志江,等. ZigBee+ 3G 网络在新型井道式电梯监控系统中的应用[J]. 自动化仪表,2015,36(1):14.

  [3] 李保礼. 电梯实时监控与故障报警系统设计研究[J]. 中国机械,2014(15):10.

  [4] 祝尊震, 苏宇,张玉亮,等. 基于物联网技术的电梯安全管理系统[J]. 微型机与应用,2015,34(1):7274.

  [5] DUNKELS A. Design and implementation of the lwIP TCP/IP stack[J]. Swedish Institute of Computer Science, 2001(27): 7792.

  [6] ST Microelectronics. STM32F405xx and STM32F407xx advanced ARMbased 32bit MCUs reference manual[DB/OL].(2015xxxx)[20160228]http://www.st.com/stweb-ui/static/active/cn/resource/technical/document/reference_manual/DM00031020.pdf.

  [7] 徐鑫,曹奇英. 基于 LwIP 协议栈的 UDP 协议分析与优化[J]. 计算机应用与软件, 2011, 28(3): 246249.

  [8] DUNKELS A. LwIP source code[EB/OL].(2008323)[20160229] http://download.savannah.nongnu.org/release/lwip/lwip1.3.0.zip.

  [9] 施纯启,吴景东.LwIP在LPC23/24XX以太网MAC控制器上的移植与应用[J].微型机与应用,2014,33(19):6770,75.

  [10] VALIN J M. The Speex codec manual version 1.2 Beta 3[Z].Xiph.org Foundation,2007.

  [11] 谢晓钢,蔡骏,陈奇川,等.基于Speex语音引擎的VoIP系统设计与实现[J].计算机应用研究,2007,24(12):320323.


此内容为AET网站原创,未经授权禁止转载。