跨平台船岸两用VHF模拟器仿真
2014-10-15李少伟施朝健余立立
李少伟,施朝健,余立立
(1.同济大学电子与信息工程学院,上海 201804;2.上海海事大学商船学院,上海 201306)
0 引言
船用甚高频(VHF)是海事语音通信中重要的组成部分,同时也是航海模拟器教学中重要的教学辅助设备。但是由于VHF各终端之间是通过无线电进行数据交换,如果使用不当完全可能造成无线电干扰而酿成灾难事故,故其使用受到各国无线电管理委员会的严格控制[1]。船用VHF仿真模拟器由于其不发射射频无线电波,同时可以真实模拟VHF全部功能,现在已经逐步成为航海模拟器教学中的标准组成模块[2-3]。
上海海事大学余立立采用专用语音处理芯片的方式,设计了基于因特网的船用VHF模拟器[4]。这种方式采用专用语音处理芯片实现对语音数据的采集与处理,并将采集的数据通过单片机的RS232接口传输到上位机,再通过因特网传输到远程终端。一方面,由于增加了专用语音处理芯片,其生产成本必然有所增加;另一方面,由于芯片与因特网之间的数据交换是通过速度较慢的RS232接口中转实现。本文选定的接口传输速率仅为19200kbps。根据奈奎斯特采样定律,在8位采样精度的情况下,其采样效率为:
根据公式(1),系统能处理的语音带宽仅为1200Hz,其效率较低,无法满足实际需求。中国海洋大学丁峰等开发了基于Flash的VHF模拟器系统[5],但其研究仅停留在理论上,未有提及具体的实现方法且缺乏有效的结论,无法得知模拟器的最终实现效果;再者,纯粹采用Flash软件方法实现VHF模拟器必然缺乏真实感,会大大影响教学效果。
本文依托上海海事大学与上海海事局联合研制项目“VTS值班人员操作、训练、评估系统”为研发平台,以上海吴淞海事处ATLAS 9760型VTS配套的VHF为仿真对象,设计一种跨平台船、岸两用VHF模拟器系统。模拟器软硬件部分在顶层设计上实现船岸两用VHF的功能复用,其在硬件上充分利用现有的计算机及网络资源,在仅增加最少的人机交互硬件的基础上,实现语音数据的采集处理;软件上以跨平台开发工具Qt为基础,实现软件在不同操作系统上的代码重用。模拟器总体结构框如图1所示。
图1 模拟器系统结构
1 模拟器系统
VHF模拟器系统由人机交互硬件、上位机、配置文件以及计算机网络组成。人机交互硬件以低成本、开发简单的单片机作为核心处理单元,实时监控用户的各项操作,并将用户操作经过编码后通过RS232接口传输到上位机[6];上位机根据配置文件以及下位机当前状态,利用计算机的硬件资源,实现语音数据的采集、处理以及收发。图2为模拟器系统工作流程图。
从图2可以看到,单片机在时钟脉冲的驱动下,周期性对各种按键进行扫描,一旦发现有键按下,便将按键信息经过编码后发送到上位机;上位机根据不同的按键信息,调用相应的处理例程,实现对用户操作的响应。
图2 模拟器工作流程图
2 VHF模拟器关键技术
2.1 硬件组成及复用
VHF模拟器硬件以51系列单片机作为核心处理单元[9],围绕其设计收发开关模块、矩阵键盘模块、音量调节模块、液晶屏显示模块以及数据通信模块。模拟器硬件组成如图3所示。
图3 硬件设备组成图
根据图3,模拟器硬件设备由5部分组成。这5部分为岸基及船载VHF模拟器所共有,其不同之处仅体现在硬件外观以及按键数量上。所以在硬件设计上,2种模拟器可以实现除外观以外的其他部分相互通用。根据图3,VHF功能描述如下:
(1)单片机。系统的控制核心部件。
(2)串口模块。负责硬件人机交,互硬件与上位机的数据通信。串口速率设定为9600kbps。
(3)显示模块。将系统当前状态以图符的方式展示给用户。
(4)矩阵键盘模块。用以采集用户对系统的功能选择。岸基VHF模拟器外部键盘拥有32个按键,采用矩阵键盘的方式实现对输入按键的处理,使用12路引脚资源实现对外部键盘的扫描。按照矩阵键盘理论,12路引脚最大可以对6×6的键盘进行扫描,完全满足系统需求;船载VHF模拟器外部仅拥有6个按键,为了不改动硬件设计,对于岸基VHF模拟器中多出的26个按键,直接采取屏蔽的措施。
(5)A/D转换模块。采用电位器方式实现对音量的控制,采用A/D转换模块读取电位器状态,调节系统音量。
2.2 语音数据的采集与播放
为了减少硬件成本,本系统利用上位机中的声卡芯片实现对语音的采集与回放[7]。语音数据的处理流程如图4所示。
图4 语音采集/播放流程
在跨平台开发工具Qt中已经内置有语音数据采集及播放接口,其实现名称分别为QAudioInput和QAudioOutput[8]。为了接口能够正常工作,在使用以上接口进行语音数据处理前,传输如表1所示的参数以便对接口进行初始化。
表1 语音采样参数
采用多块缓冲区的目的是为了在当前缓冲区被写满后,后备缓冲区快速切换,实现语音数据的无缝记录。在4块缓冲区的状态下,多缓冲区的切换原理如图5所示。
图5 语音数据缓冲区
2.3 跨平台串口通信模块
由于跨平台开发工具Qt并未实现RS232串行通信口的数据收发功能,为了使程序代码在不同的操作系统平台下获得支持,本文利用现代操作系统普遍具有的动态链接库特性,设计在不同操作系统下的串口操作代码,并封装在相应的动态库中。
为了实现串口通信代码的可移植性,软件将不同操作系统的API经过封装后采用统一的接口引出,针对不同的操作系统,使用C语言中的预定义宏#define加以区分。统一的接口操作函数如表2所示。
表2 通用串口操作函数
表2中,OpenPort函数接受唯一的整数型变量,用以标识当前需要操作的串口编号;SetPort仅仅实现对波特率的设置,其参数为一整型变量,取值为常用的串口波特率;ReadPort/WritePort采用阻塞的方式实现串口读写功能。为了不影响模拟器程序主线程部分的正常运行,串行接口的数据收发必须单独放在专门的线程中进行。
2.4 语音数据压缩
由于局域网具有较大的网络带宽以及较小的网络延时,所以在将VHF模拟器应用于局域网内时,没有必要对语音数据进行压缩。但是若将VHF模拟器应用于基于互联网的多模拟器系统中,那么在对语音数据发送以前,对语音数据的压缩就显得必不可少。
在本模拟器设计中,采用小波算法实现对语音数据进行压缩[9-10],小波变换定义如下式:
称为小波基函数。在此,选择Harr正交小波基对样本语音信号作三级小波包分解,然后进行重构。
图6 原始数据时域/频域幅值
图7 重构数据时域/频域幅值
图6为原始语音样本数据的时域/频域信息,图7为经过重构后,语音数据的时域/频域信息。从2幅图的对比可以发现,语音数据仅在高频部分有微小的失真,人耳对声音的分辨几乎不会造成影响。
定义信号压缩比:
其中,B为压缩后的数据,A为原始数据,经过计算,样本数据压缩比为0.515。由于样本数据大多集中在低频部分,若增加高频部分的数据量,则压缩比会有一定程度的增大,但样本压缩比不会有较大变化。
3 运行结果
整个模拟器的运行分为2部分:岸站VHF和船用VHF。如图8所示为VHF模拟器的运行结果。其中岸基VHF主要由海事行政单位(如海事局、海洋局等部门)使用;船用VHF模拟器可以安装在航海模拟器等培训设备中。两者的组合可满足当前教学培训对VHF功能的全部需求。另外,由于以Qt[11-13]作为开发平台,所以VHF模拟器可在不修改或少量修改源代码的情况下,运行于桌面Windows平台、WinCE操作系统平台以及Linux平台。
图8 模拟器的实现
4 结束语
在上海海事局的大力支持下,本模拟器系统已在上海吴淞海事处安装完毕。本系统在软硬件设计上很好地实现了船、岸VHF模拟器的功能复用。在Qt跨平台工具的支持下,解决了软件跨平台的运行障碍,有效地减少了系统的开发时间。经过一段时间的实际运行,本模拟器运行状态良好,但是同时也不可避免地暴露出一些问题。其中最主要的是录制的声音不够清晰,据分析,这可能是由于系统的设计仅考虑了语音的数据压缩,而忽略了语音质量。在下一步的设计中,笔者会对这些问题进行改进和完善。
[1]施朝健,陈锦标,胡勤友.船舶操纵模拟器开发和应用的全球协作[J].上海海事大学学报,2007,28(1):1-6.
[2]施朝健,胡甚平,陈锦标.船舶操纵模拟器技术性能标准研究[J].上海海事大学学报,2005,26(2):4-8.
[3]刘检平,黄勇,周西柳.云计算科技服务系统平台设计研究[J].科技通报,2012,28(10):19-21.
[4]余立立,施朝健,黄震民,等.多模拟器集成的船用VHF通信仿真系统[J].上海海事大学学报,2009,30(1):20-23.
[5]丁峰,魏伟.基于Flash Media Server实现VHF模拟器的语音通信[J].青岛远洋船员学院学报,2009,30(4):9-11.
[6]吕俊亚.一种基于单片机的温度控制系统设计与实现[J].计算机仿真,2012,29(7):230-233.
[7]李少伟,庄新庆.基于海事卫星的语音数据通信模块设计[J].中国航海,2008,31(2):114-116,134.
[8]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt 4(2nd Edition)[M].Canada:Prentice Hall PTR,2008.
[9]张玺君,王继曾,蔺莹.基于小波变换的语音数据压缩的研究[J].科学技术与工程,2009,9(2):272-276.
[10]崔静,王雪梅.数字图像压缩算法的仿真与应用研究[J].计算机仿真,2012,29(8):265-268.
[11]王胜正,施朝健,石永辉.新一代船舶操纵模拟器关键技术[J].上海海事大学学报,2007,28(1):143-149.
[12]Duane Hanselman,Bruce Littlefield.Mastering Matlab 7[M].Beijing:Tsinghua University Press,2006.
[13]廖河树.大型船舶操纵模拟器的系统组成及分析[J].中国航海,2003,55(2):8-11,17.
[14]曾庆军,周耀庭.综合船桥系统研究的核心内容[J].航海技术,2001(4):24-27.