如何将WinCC报警消息通过语音进行播报

作者:胡世川-西门子数字化工业集团自动化部

客户经常问到:出现严重故障时,能不能自动语音播报消息文本?因为做不到时时刻刻盯着监控画面。

Soeasy!


,时长00:14

实验环境:

Windows10及WindowsServer2016/2019

实现思路:

实时捕捉WinCC的报警文本

调用windows自带的SAPI语音技术接口,播报文本

开发步骤

windows键+R,输入,打开windows服务界面


启动Windows的音频服务


在WinCC的“报警记录”中,对需要语音播报的消息变量,勾选“触发动作”,此报警消息触发后,会执行GMsgFunction函数。

在全局C脚本处的GMsgFunction函数里添加自定义的脚本(如下蓝颜色框),捕捉报警消息文本,传递给内部变量(如下红颜色框)。修改完后,此函数会自动从左侧目录树的“Alarm”进入“alarm”下:

.

MSG_RTDATA_STRUCTmRT;

MSG_CSDATA_STRUCTsM;//holdsalarminfo

MSG_TEXT_STRUCTtMeld;//holdsmessagetextinfo

CMN_ERRORpError;

memset(mRT,0,sizeof(MSG_RTDATA_STRUCT));

.

if(==MSG_STATE_COME)

{

MSRTGetMsgCSData(,sM,pError);

MSRTGetMsgText(0,[0],tMeld,pError);

SetTagBit("alarmComing",TRUE);//置位VBS脚本触发器

SetTagChar("alarmText",);//报警消息文本

}

VBS全局脚本中调用SAPI接口播报消息文本,此脚本采用变量触发(内部变量alarmComing)。

Dimspeaker,alarmText

DimalarmComing

alarmComing=("alarmComing").Read

alarmText=("alarmText").Read

IfalarmComing=1Then

Setspeaker=CreateObject("")

=0'语速

=100‘音量

("alarmComing").write0

If

Function

完成组态过程

若采用PC蜂鸣器提醒报警到来,可参考下面链接:

/service/elearning/course/1791.html

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系