找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

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

2021-11-23 19:46| 发布者: 198366809| 查看: 3495| 评论: 0

摘要: 作者:胡世川 - 西门子数字化工业集团自动化部客户经常问到:出现严重故障时,能不能自动语音播报消息文本?因为做不到时时刻刻盯着监控画面。So easy!有视频有真相实验环境:WinCC 7.5 SP2Windows10 及 Windows Se ...

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

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

So easy

有视频有真相

实验环境:

  • WINCC 7.5 SP2
  • Windows10 及 Windows Server 2016/2019


实现思路:

  • 实时捕捉WinCC的报警文本
  • 调用windows自带的SAPI语音技术接口,播报文本


  • 开发步骤
  • windows键+R,输入services.msc,打开windows服务界面

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

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

.......


MSG_RTDATA_STRUCT mRT;

MSG_CSDATA_STRUCT sM; // holds alarm info

MSG_TEXT_STRUCT tMeld; // holds message text info

CMN_ERROR pError;

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

.......

if(mRT.dwMsgState == MSG_STATE_COME)

{

MSRTGetMsgCSData(mRT.dwMsgNr, &sM, &pError);

MSRTGetMsgText(0, sM.dwTextID[0], &tMeld, &pError);

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

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

}


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

Dim speaker, alarmText

Dim alarmComing

alarmComing=HMIRuntime.Tags("alarmComing").Read

alarmText=HMIRuntime.Tags("alarmText").Read

If alarmComing = 1 Then

Set speaker = CreateObject("SAPI.SpVoice")

speaker.rate = 0 '语速

speaker.volume = 100 ‘音量

speaker.Speak alarmText

HMIRuntime.Tags("alarmComing").write 0

End If

End Function


  • 完成组态过程


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

www.ad.siemens.com.cn/service/elearning/course/1791.html

来源:人机常情 WinCC(微信公众号)

关注公众号,加入500人微信群,下载100G免费资料!
发表评论

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 04:50 , Processed in 0.084958 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部