现在,多媒体技能日益遍及,尤其是语音提示在很多场合均有所运用,如车间广播、基于语音的机电设备检修掩护远程监控勾引系统等。但是目前市情上的语音播报系统不能实现在线更新语音文件、语音表单和多站点并发播报多种内容。如采取传统的架构模式,设备拓扑和管理均不易实现且本钱较高。开拓具有总线拓扑潜质、适宜于总线掌握的语音播报系统具有一定的代价。
笔者所述的适用于总线掌握的语音播报系统以RS485总线为物理根本,集成了Modbus-ASCII, Modb-us-RTU以及自定义通信规约协议,可实现在线更新语音列表、多从站同步或全从站广播等多种办法更新音频文件、音频列表等功能。
1系统硬件设计
1.1语音播报系统构造
语音播报系统须要实现对语音播报掌握、通信报文吸收和解析并天生发送应答报文、自身工况采集(最大语音功率输出为20 W,监控环境和自身温度等是其正常事情的保障)、播音设置和历史事宜存储/读取以及上位机对语音文件的数据更新等事情。
选择STC12LE5A60S2系列的MCU和相应的外围电路以及WT588D为播音解码(其高音区辨识度较高)和语音内容存储器、通信模块和其他赞助人机接口,然后合营得当的掌握程序可以完成该适用于总线掌握的语音播报系统,其硬件构造如图1所示。
为了使该系统的运用处所(运用环境不同可能采取不同的通信协议)不限于某个别系背景下,外拓了多个接口和模块。并通过LED指示系统是否事情正常、是否掉线和事情模式等。温度采集模块用于检测板级温度,尤其可监控最高功耗为20 W的语音功放模块,可根据不同设置保护设备。语音存储模块同时与语音播报模块及单片机连接,通过单片机掌握可以使系统进人播报模式和语音更新模式,辅以多种报文解码程序、通过通信指令或按键掌握可实现系统通信协议选择和最大音量设置等操作。
1.2主控及语音解码部分
系统中的语音旗子暗记天生部分由WT588D解码SPI-Flash中存有的语音文件产生,鉴于某些语音场合,如广告、公交车报站系统等对语音播报系统升级速率快的需求,增加了与WT588D相匹配的USB-SPI语音下载芯片WT55 U02在USB2. 0接口下可以于2 min内完成32 Mbits所有语音文件更新)。语音的更新有两种类型和目标:①语音文件,更新目标为SPI-Flash ;②语音播放表单,更新目标为与MCU合营事情的E2PROM,该部分事理图如图2所示。
在基于语音播报的检修系统中,语音内容更新频度较低且更新时限充足,逐日的掩护内容大多可在8h事情韶光内完成,组网模式下更新第一类语音文件时,如语音播报检修管理系统RS485网络上波特率采取19.2 kbit/s,Modbus-RTU协议下每帧数据通报200 B的语音数据,增加数据校验冗余及其他赞助指令按每帧256 B打算,加高下位机对数据校验、转存等操作,完成一个从站整片32 Mbits(根据目前项目利用情形来看,大约只须要利用60%的容量)须要韶光总和小于即是2800 s(实际测试时采取57. 6 kbit/s下小于即是930s)。而大多数只需更新语音列表(不到1 kB的数据),故10s内可完成更新而知足工程运用。
1.3语音播报功率放大部分
常见的音频输出旗子暗记有单端旗子暗记和差分旗子暗记两种类型。功放和前端旗子暗记之间的旗子暗记调理匹配将影响整体音质。WT588D语音模块支持PWM和DAC两种输出办法,DAC相对PWM而言具有更优的表现力,源于本系统利用场合须要其吐字清晰,在DAC输出单端旗子暗记匹配后级功放将驱动4 S}/20 W的号角喇叭(在环境构造繁芜环境下,高音类喇叭具有更好的声音辨识度),后端功放芯片TPA3112D1支持旗子暗记的差分办法输人,详细匹配电路如图3所示。音频放大器的频带宽度决定了所传音频旗子暗记担保不失落真、且有良好的放大浸染频率范围。利用晶体管将原始旗子暗记(75 mV ±75 mV)放大3一4倍与原始旗子暗记组成可得到VPP≈600 mV的差分旗子暗记,并充分突出其高音部分。通过设置芯片的放大增益为36 dB下,其最大功率输出约为20 W。在无作业和语音播放起始阶段时,MCU还可以通过拉低其SD#掌握端,降落系统功耗、屏蔽低端解码芯片的起始爆破音。
1.4音乐播放掌握及其低功耗掌握
如图2所示,MCU与语音解码芯片之间采取三线串口模式,按照语音解码芯片哀求的时序可以实现对其有效掌握。在没有语音播报任务时,WT588D可以自动降落功率。并在缓冲区指令行列步队顺序优化过程中创造无语音任务时(详见2. 4节),MCU通过拉低功放TPA3112D1的“静音”掌握管脚可以实现对功放内部的功率放大部分实现“断电”,从而实现降落功耗的设计。当有播音任务时,在语音播放状态机自行开启播音功放,同时语音解码芯片可自行启动进人播音状态。
2系统软件设计
STCI2LE5A60S2系列MCU自身具备的RAM只有1280 B,如要运行一些相对较小的操作系统也会极大压缩功能函数所能分配的RAM区大小,可能导致设备处理网络指令能力的低落。采取分层设计模式实现量子框架模型再合营一些成熟的设计模式将会提升系统稳定性并减少软件毛病,如利用静态内存分配模式、有效解耦系统各功能后配备各自的行列步队组成多个FSM ( finite state machine,有限状态机),各自利用发来实现任务并行、互斥、壅塞等,可实现多任务耦合和有条件运行。本例所述掌握程序的功能解耦和耦合后的软件构造框图如图4所示。
2. 1各个状态机的事情内容及其调度关系
系统上电后先读取E2PROM中的配置参数(有效通信协议、波特率等),然后依照这些参数对各个状态机及其任务行列步队初始化。如图4所示,在调度本例所述的各个状态机时采取有条件循环实行模式:①网络任务由串口中断触发,同时匹配一个中断优先级相对较低的定时器来合营实现吸收任务的终止判断和吸收完成后向主任务发出任务等事情;②根据语音解码芯片的事情特性哀求,在发出播放指令后有一个大约30 ms的任务启动准备期,依系统嘀嗒时钟每隔80ms触发其循环实行条件来实现有条件实行掌握;③由嘀嗒时钟衍生出来的定时器状态机卖力定时扫描外部输人接口、查看无线吸收器状态等,还定时向主任务状态机发送指定来驱动相应定时任务,如实行定时播报列表、定时对板级发热元件温度检测、扫描实时时钟DS1302及如2. 4节描述的自检等操作;④多个操作构成主任务状态机。以下着重先容几个关键部分。
2. 2多种通信协议的集成实现
对任何一个开拓团队而言,开拓一款产品且兼顾其潜在运用处所比开拓多种相对专一的产品具有更低的研发投人和更高的产品生命周期。因此,在程序中设置了多种协议解码,在某个详细的韶光点上只有一种有效,合营复位等按键掌握以及在线动态切换等。本例实现了对Modbus-RTU, Modbus-ASCII以及自定义协议的集成,3种数据帧起始条件由串口吸收中断机制实现,其结束条件如表1所列。
Modbus干系的3种总线协议(TCP/IP, RTU和ASCII )已经成为一种工业标准,不同厂商生产的掌握器和总线设备可以进行组网,实现集散掌握。在嵌入式运用中常见的实现办法是直接移植Modbus协议栈、和自主实现两种。如采取前者,软件的可靠性一定得到保障,但是其所需的RAM分配对单片机而言不是轻量级的;而后者在处理好各个临界韶光和数据帧解码和应答数据天生时亦可稳定事情。比较Modbus协议而言,在一些轻量级的运用中,协议繁芜操作会给如S7-200类可编程掌握器带来不少扫描韶光的花费,而采取一些通用的自定义协议却能使掌握系统如披轻纱。3种协议的实现过程均可由标准的Modbus-RTU从机协议流程衍生而来,本例由如图4所示的网络任务状态机实现。
2. 3主任务状态机及指令解析
当串口吸收到网络数据指令、无线吸收模块和按键扫描以及定时器状态机天生定时指令或主任务自主天生等过程都会先实行各自对应的指令翻译程序,而后统一表示为Modbus-RTU协议指令,同时向主任务状态机行列步队(前辈先出模式)压人任务指令行列步队,其指令类型及其功能简要解释如表2所示。
图4列出的各状态机都有自主运行的权利,除两种情形可由主任务状态机短暂壅塞其他状态机的运行:①系统初始化后,程序前辈人主任务状态机,由其初始化各个状态及进行其他参数配置,实现对系统运行环境的初始化;②上位机通过发送指令或者定时器状态机有条件天生系统自检指令后,由主任务状态机运行处理,创造有任何行列步队溢出后,将会再次运行系统初始化指令,而后轮流实行各个状态机。
2. 4缓冲区指令行列步队顺序优化及系统自检
实时设计模式中的监视器一实行器模式常用来监控实行单元对指令相应状况的利用方案,可提高系统的安全性和可靠性。本例中多个状态机都具备或大或小的行列步队,而这些是否达到“实时”哀求却不能够担保。由定时器状态机触发,而后由主任务状态机实行一个轻量级的监视器来掩护行列步队,按各个指令的静态优先级对部分具备实时需求的指令进行行列步队优化可增强这些指令的实时性;保护播放列表及保持全部状态机的状态(尤其处在实行语音文件和列表更新期间)可以影响下次是否精确播音。系统自身可能须要永劫光在网事情,在有看门狗可以对部分关键代码实行监控的浸染下,增加自检功能程序来对各个状态机进行大范围的按需监控是必要的方法。
3结束语
在剖析语音播报系统的现状的根本上,开拓了个中适用于总线掌握的语音播报子系统。分别用Modb-us-RTU和Modbus-ASCII协议下组网,在以组态王为上位机的环境下可以实现既定功能,知足运用需求。并在自由通信模式下与某客车地面电源管理系统中S7-20。合营事情,表现稳定,证明该方案的可行性及可推广性。为后续将其在检修管理系统并入设备掌握网络、设备自诊断、检修掩护勾引等技能综合供应硬件根本。本例也可为开拓类似总线系统供应借鉴。