摘 要:在立体库系统运营的过程中,不可避免地会发生因设备异常导致停机的情况。由于组成立体仓库系统的设备多,特别是移动设备结构复杂,以蜂鸣器和声光报警器为代表的传统的设备报警装置不能让维护人员迅速获取具体的设备异常原因。能否及时处理异常,会影响到立体库的运营效率。文中以某企业的立体库改造项目为依托,采用微软的TTS 语音引擎技术开发了立体库设备语音报警系统,使维护人员能够迅速地掌握设备异常的详细信息。最后通过对该立体库运营数据进行统计分析,表明该语音报警系统可以有效地提高维护人员工作效率。
0 引言
立体仓库在生产制造业的应用已经有相当长的时间,随着社会的发展,信息技术的不断进步,立体仓库在实现自动化的基础之上,正逐步朝着智能化方向前进,在满足工作最低需求的基础上,用户对技术更新带来使用体验的重视程度也不断提高,而信息技术的更新加速了立体仓库智能化的进度。语音播报是指用自然语音将信息朗读输出来,是一种非常接近人类自然交互信息模式,极大地方便了人员获取信息,近些年已经广泛应用于工业、医疗、服务等行业。
以往的立体仓库设备发生异常报警,通常是由设备附近的报警器发出特定警声提醒维护人员进行故障处理。由于立体仓库的设备数量大,设备结构复杂,发生异常的种类众多,电气设备驱动的报警器难以使维修人员快速地定位异常发生点以及异常原因,所以在立体库运营期间经常会发生设备的异常导致立体库运行效率降低。本文依托于某医药企业的立体库改造项目,采用微软的TTS(Text To Speech) 语音引擎,在Visual Studio 平台下开发了适用于该企业立体仓库的设备报警语音播报系统。
1 需求背景
近期某医药生产企业对其立体库的信息化系统进行了改造,本文主要针对立体库控制系统(WarehouseControl System,以下简称WCS)的改造工作,在新WCS 系统试用期间,用户提出需求能否减少因设备报警而产生的中控室操作员和设备维护人员之间的交流。
原有的工作模式是立体库系统的设备产生异常后,有蜂鸣器在立体库空间内发出报警声音通知设备维护人员,由于整个立体库的占地面积较大,如图1,故障位置不易快速定位,听到报警声音后,维护人员需要通过对讲系统询问中控室的WCS 操作员故障点的位置以及具体故障信息。得到WCS 操作员反馈后,再对故障设备进行处理。交互过程参见图2。
图1 立体库平面
图2 设备故障后原有的人员交互流程
在此交互流程模式下,如果中控室值班人员反馈信息不够及时,就会出现维修人员等待,设备故障不能及时处理的情况。如果在反馈故障信息时,个别文字发音相近或人员口音的原因,也可能导致维护人员对于反馈信息的错误理解。特别是该企业的立体库自2004 年投入使用到2019 年底已经运行了15 年,现场机械设备的老化引起异常发生的频率较高,导致维修人员与中控室人员每天会因设备故障而产生多次的交互。如果传递信息的过程中多次发生信息的延迟或是信息的失真,对于整个立体库的运行效率都会产生不利的影响。
2 解决思路及方案
语音播报功能在工业中已有应用案例。文献[1] 描述了一种基于科大讯飞嵌入式中文语音合成器开发的用于西门子S7-200 系列PLC 的功能扩展,是一种利用商业硬件模块实现的语音播报功能,但这种方式需要单独的采购硬件模块,同时还要对单片机、PLC 的编程设计能力有一定的要求。文献[2] 描述的分布式语音报警系统,适用于多现场或是大空间的环境,但基于串口通讯的硬件模块需要开发人员掌握串口编程的能力。考虑立体仓库的空间大,为保障生产原有的WCS 系统不宜做改动,考虑在立体库空间增加一个广播系统,现有WCS 负责底层PLC 通讯[3],采集PLC 信号,在设备产生报警时,通过信息系统发出语音提示并循环播放,通知设备维护人员进行后续的操作。当设备产生异常,PLC 会向WCS 发出代表设备异常的指令,指令中含有不同的编码,表示不同类型的异常。WCS接收到指令后,将编码转换成对应的文字显示在屏幕上,同时增加一个独立的将文字转换成语音输出的程序,该程序循环播放故障信息,直到故障设备恢复正常。新WCS 系统是基于西门子WinCC 平台的,主控制程序使用该平台的VBS 脚本进行开发,这种脚本程序对于主程序的线程不易控制,所以语音播报功能使用微软的VisualStudioC# 进行开发,作为一个单独的程序运行。具体的方案是WCS 采集到设备的故障指令,将指令转换成汉字,写入到数据库的设备故障表中,语音程序周期性的查询设备故障表,将查询到的结果以字符串的格式显示在程序主界的TextBox 中,然后利用微软的TTS 语音引擎将TextBox 的文字循环播放出来。
TTS 包含在Windows Speech SDK 开发包中,编程人员可以使用此开发包开发满足自己需求的程序。TheMicrosoft Speech API(以下简称SAPI)是微软的语音API, 由Windows Speech SDK 提供。Windows SpeechSDK 包含语音识别引擎(SR)和语音合成引擎(SS) 两种语音引擎。SR 引擎用来识别自然语音的输入,实现语音控制;SS 引擎用于将文字转换成语音进行输出。
具体的程序中建立两个定时器,定时器1 用来周期性的从数据库的设备故障表查询是否有故障信息,周期是固定的500 ms,如果查询有结果,将信息显示到程序窗口的TextBox 中;定时器2 用来周期性的播放TextBox 中的故障信息,周期可以根据用户的选择来进行调节,为了方便用户操作,给用户提供了三个周期选项。另外提供播报时的语速调节功能,语速是利用SpVoice 的Rate 属性赋值,程序中设定为快、中、慢三挡,分别对应Rate 的1,0,-2 三个值,用户可以根据具体工作需要在程序的设置菜单中进行调整。程序运行后,初始化的语音播报周期(即定时器2)是1 min,播报语速(即spVoice.Rate 值)是0。播放语音的代码
Type type = Type.GetTypeFromProgID("SAPI.SpVoice");
dynamic spVoice = Activator.CreateInstance(type);
spVoice.Rate = speakSpeed;
// 语速从最慢-10,最快10,操作员手动设置,默认0
if (textBox.Text.Length != 0)
// 文本框中的文字长度不为0
{
spVoice.Speak(textBox.Text);
// 播放textBox.Text
}