当前位置:首页 期刊杂志

基于Robot Operator 的火电机组集控值班员智能操作设计

时间:2024-05-18

张暄博,魏铭毅,杜伟,王沛沛

(1.国电双维内蒙古上海庙能源有限公司,内蒙古鄂尔多斯 016200;2.国能智深控制技术有限公司,北京 102209)

火力发电在中国发电方式中占据重要位置,对于保障中国能源安全有巨大贡献。当前火电机组的运行参数等由集控值班人员在集控室DCS 界面当中完成设定。一旦发生故障,需要多人员协同操作,人员之间沟通成本较高。国内对电力机器人研究起步较晚,从1999 年开始研究带电作业机器人[1]。山东电力研究院、国网山东省电力公司济宁供电公司和山东鲁能智能技术公司合作先后开发了四代带电作业机器人[2]。机器人采用绝缘性好、质量轻的绝缘材料,能够完成复杂的带电任务。变电站巡检机器人可以作为无人值班站的“值班人员”进行变电站设备巡检,通过磁轨迹导航,依靠室外轮式移动,精准定位设备,按照最优的路线进行巡检,将巡检结果上送到监控中心校验[3-4]。2009年以来,国内无人机巡检逐步走向常态化,以无人机作为载体,装载可见光照相机等设备,对架空输电线路进行巡检。

人机语音交互是新一代交互模式,人与机器之间通过自然的对话进行交互,可以得到机器的决策和反馈结果。人机语音交互技术的发展,使人与机器人之间有了自然的交互方式,可以让机器人更自然地服务人类。本文基于Robot Operator 设计了一种虚拟机器人软件,采用外挂式操作DCS 系统,在原有火电机组设备的基础上,减少了火电机组集控值班员的工作强度,提高了工作效率,达到了集控室“减员增效”的目的,为建设智慧电厂提供了一种新思路。

1 设计目标与功能

设计目标:以火电机组集控值班员为服务对象,模拟集控值班员操作流程和形式,接收语音指令,完成指定设备操作,判断设备运行状态,并且能以语音形式回复。Robot Operator 将语音识别、操作动作模拟、图像识别等技术相融合,模拟人的操作行为,实现火电厂集控室少人化操作。

系统分为2 个部分:学习模型和操作模型。学习模型借鉴教师/学生的仿真操作教学形式,教师在DCS界面上进行语音讲解和操作演示,系统通过捕捉鼠键动作获得并储存相关的操作动作信息。操作模型通过与集控操作员交互,完成相应操作。系统可减轻集控操作人员的工作强度,达到火电机组集控室减员增效的目的。

2 语音交互系统设计与实现

集控值班员与软件之间通过语音进行交互,采用了语音识别、语音合成等技术[5]。虚拟操作机器人软件编程开发工具为Visual Studio2017;语音应用程序开发包使用微软的Microsoft Speech SDK 5.1 进行语音功能开发,Speech SDK 5.1 全面支持中文语音应用程序的开发,提供了语音识别引擎相关组件、应用程序层接口等文档。Speech SDK 5.1 开发包包含SAPI相关的程序接口,通过SAPI提供的基本程序接口进行开发。SAPI架构在COM 组件基础上,底层协议以COM 组件形式独立于应用程序层,主要优点是扩展性好、应用场景多。

2.1 语音识别

语音识别过程:通过一系列的初始化后,设置识别引擎返回消息,当语音识别事件发生后,识别引擎自动向程序窗口发送是否识别成功的消息,根据情况进行相应的处理。具体流程如图1 所示。

图1 语音识别流程图

2.1.1 初始化COM 端口

Speech SDK 5.1 提供的是COM 组件形式,在调用SAPI之前对COM 组件进行初始化。在CWinApp 的子类中调用CoInitializeEX 初始化COM 组件。代码实现如下:

2.1.2 创建识别引擎

创建识别引擎使用共享(Share)型。代码实现如下:

2.1.3 创建识别上下文

调用ISpRecognizer::CreateRecoContext 识别上下文接口ISpRecoContext。代码实现如下:

hr=m_cpRecoEngine->CreateRecoContext(&m_cp RecoCtxt)

2.1.4 设置识别引擎返回消息

程序首先调用API函数SetNotifyWindowMessage将自身的主窗口句柄和消息类型通过传参输入,然后程序调用接口ISpRecoContext 的方法SetInterest 指明程序的消息,当语音识别引擎检测到相关的事件后自动向程序发送上述设定好的消息。代码实现如下:

2.1.5 创建加载语法

为了提高语音识别率,操作命令的语法规则采用SPAI中“命令与控制模式”。语法规则用XML 语言形式储存到文件中,然后通过Speech SDK 5.1 自有编译器编译成.cfg 文件。在程序运行时加入,首先利用ISpRecoContext::CreateGrammar 创建语法对象,然后调用LoadCmdFromFile 方法从外部文件将语法规则加载进来。代码实现如下:

2.1.6 处理消息

开始识别时,通过SetRuleState 激活语法进行识别,获得识别消息后进行处理,通过CSpEvent 与当前的识别上下文联系;随后通过判断event ID 来确定消息的类型,做相应处理。代码实现如下:

2.2 语音合成

对于中文而言,微软提供了Simple Chinese。成功安装Speech SDK 5.1 后,语音合成的具体程序步骤如下。

第一,调用API函数CoInitialize 初始化COM 组件,代码实现如下:

第二,使用SpFindBestToken 函数,传入参数,设置中文语言类型。

第三,调用CoCreateInstance API函数创建COM语音合成接口ISpVoice。代码实现如下:

第四,调用ISpVoice 接口方法SetVoice,加载前面所设置的声音类型。代码实现如下:

ISpVoice::SetVoice(ISpObjectToken*pToken);

第五,初始化工作全部完成后,在需要的地方调用ISpVoice 接口中的Speak 方法朗读文本,代码实现如下:

2.3 语句分析

根据集控值班员工作特点,学习模型采用动词(关键字)+设备词(可选词)的模式设计。对操作指令进行解析,将操作动作分为调节类和非调节类,该设计模式实现对保存文件命名的规范统一,而且使人机语音交互过程的指令变得简单。2 类语义解析模块如下。

调节类:主要以调节设备的开度为主,如图2 所示。非调节类:主要以启动、关闭设备为主,如图3所示。

图2 调节类语义解析模块

图3 非调节类语义解析模块

2.4 语句执行的交互映射

参考火电机组仿真培训操作手册,了解设备的运行规程,结合集控值班员发布指令,软件设计了对应的XML 文件。文件分为操作动作类型库和设备库。语音交互库的设计具有灵活性高、针对性强的特点,因此方便修改、扩展语音关键字。操作动作类型库如表1所示。以锅炉上水系统为例列举系统设备库,如表2所示。

表1 操作动作类型库

表2 锅炉上水系统设备库

3 结论

本文根据语音指令操作,自主判断操作结果,实现集控值班员操作的智能化,具备学习能力。借鉴教师/学生的仿真操作教学形式,教师在DCS 界面上进行语音讲解和操作演示,系统能够“记忆”设备和操作信息知识。各项操作和状态判断完全模拟值班员的行为,均为自主进行,不需要DCS 软件开放数据接口。后续为虚拟机器人在智慧电厂的应用提供了新思路。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!