适用于总线控制的语音播报系统开发,语音播报方案

摘要:针对目前的语音播报设备不能适用于标准的总线拓扑控制且不能对其语音文件、语音表单信息在线更新等缺点,开发了其中适用于总线控制的语音播报系统。通过分析其功能需求选用STCI2LE5 A60S2为控制核心、WT588D语音模块为语音解码器和TPA3112D1为语音功率放大芯片,运用分层设计模式、低功耗设计及互换性设计理念,使其可在基于RS485总线的Modbus-RTU , Modbus-ASCII或自定义协议等上组网。然后给出了相关硬件结构图、原理图、程序结构图及部分流程图等。在组态软件等组成的测试环境和某客车地面电源管理系统中的实际应用情况,表明了该实现方案的可行性及可推广性。

目前,多媒体技术日益普及,尤其是语音提示在许多场合均有所应用,如车间广播、基于语音的机电设备检修维护远程监控引导系统等。但是目前市面上的语音播报系统不能实目前线更新语音文件、语音表单和多站点并发播报多种内容。如采用传统的架构模式,设备拓扑和管理均不易实现且成本较高。开发具有总线拓扑潜质、适合于总线控制的语音播报系统具有必定的价值。

笔者所述的适用于总线控制的语音播报系统以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。配合工作,表现稳定,证明该方案的可行性及可推广性。为后续将其在检修管理系统并入设备控制网络、设备自诊断、检修维护引导等技术综合提供硬件基础。本例也可为开发类似总线系统提供借鉴。

© 版权声明

相关文章

暂无评论

none
暂无评论...