您好,欢迎访问泰安宏盛自动化科技有限公司!
20年专注工控自动化研发制造 系统设计\制作\安装一条龙服务
全国咨询热线:18605386049
当前位置: 首页 > 技术资料 > 程序案例

WINCC文本语音报警与一键消音功能实现

作者:小编 时间:2024-03-26 09:38:49 点击:

WINCC文本语音报警与一键消音功能实现

  • 1. 全局脚本
  • 2. 报警器
  • 3. 区分语音报警和普通报警


1. 全局脚本

首先找到一个语音生成软件,要求能将文本转换成WAV文件格式的软件。
软件链接: TTSmake

undefined

然后需要找到将导出的声音文件用文本命名加以区分,比如煤气浓度高报警,煤气浓度高高报警。不可以有特殊符号,可以用英文。

undefined

打开WINCC项目,新建内部变量。

如果报警时AZT_1001.H表示煤气浓度高报警,那么建立一个煤气高报警状态位ALARM_SOUND_AZT1001H,使用这个状态位来触发语音(因为报警消失的时间不确定,使用一键消音就必须做一个状态位)。同时还需要建立一个全局消音内部变量ALARMSOUND_ALL用来连接一键消音。

undefined

打开WINCC项目文件,新建全局脚本。

undefined

#include "apdefap.h"
int gscAction( void )
{
#pragma code("Winmm.dll")
void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag);
#pragma code()
if(!GetTagBit("AZT_1001.H"))// 煤气浓度高报警
{
SetTagBit("ALARM_SOUND_AZT1001H",0);
}
if(GetTagBit("ALARMSOUND_ALL")&&GetTagBit("AZT_1001.H"))
{
SetTagBit("ALARM_SOUND_AZT1001H",1);
}
//声音播报
if(GetTagBit("AZT_1001.H")&&!GetTagBit("ALARM_SOUND_AZT1001H"))
{
 PlaySoundA("C:\\alarmsound\\煤气浓度高报警.wav", NULL, 1);
}
SetTagBit("ALARMSOUND_ALL",0);
return 0; 
}

最后在C盘下面新建一个文件夹“alarmsound”,然后将语音文件全部放到该文件夹中。然后再画面中建立一个按钮,连接一键消音按钮ALARMSOUND_ALL,设置鼠标,事件,按下置1即可。


上述方法适合程序没有中没有报警状态变量,如果有的话可以直接使用报警器更方便。


2. 报警器

报警状态位与报警并不是一个变量,报警是现场决定的,我们不可以人为复位掉,因此控制报警语音必须要建立一个与报警对应的报警状态位。

image.png

如果再程序中建立了一个可以复位的报警状态位,那么可以直接将该变量导入到“报警记录——报警器——信号分配——变量”中去,然后后面声音的文件路径取决于语音文件存放的位置。


3. 区分语音报警和普通报警

在报警控件中需要区分语音报警于普通报警,这样就需要更改报警控件中文本的颜色和填充颜色:

image.png

可以在颜色的位置修改颜色。

QQ在线咨询
联系电话
17658151177
售后服务
17658151177