声音报警确认问题

报警使用HORN方式做的,问下专家,,报警如果不消除,声音是一直响的,那个horn组里的reset不好复位的。能不能做到确认此次报警后不响,下一批新报警来时再发出声音???以此类推!

问题补充:
请问我如何判断新报警到来,脚本怎么写,谢谢!

最佳答案

打开全局脚本C脚本编辑器,然后找到标准函数里的Alarm这个组里的GMsgFunction函数
把它改成下面这样
BOOL GMsgFunction( char* pszMsgData)
{
#pragma code("Winmm.dll")
void WINAPI PlaySoundA(char*pszSound,char*hmode,DWORD dwflay);
#pragma code()
MSG_RTDATA_STRUCT mRT;
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
  if( pszMsgData != NULL )
  {
     printf( "Meldung : %s \r\n", pszMsgData );

    // Meldungsdaten einlesen
     sscanf( pszMsgData,  "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d",
 &mRT.dwMsgNr,    // Meldungsnummer
 &mRT.dwMsgState,     // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM
 &mRT.stMsgTime.wYear,   // Tag
 &mRT.stMsgTime.wMonth,   // Monat
 &mRT.stMsgTime.wDay,  // Jahr
 &mRT.stMsgTime.wHour,   // Stunde
 &mRT.stMsgTime.wMinute,  // Minute
 &mRT.stMsgTime.wSecond,   // Sekunde
 &mRT.stMsgTime.wMilliseconds, // Millisekunde
 &mRT.dwTimeDiff,   // Zeitdauer der anstehenden Meldung
 &mRT.dwCounter,   // Interner Meldungsz?hler
 &mRT.dwFlags,   // Flags( intern )
 &mRT.wPValueUsed,
 &mRT.wTextValueUsed );
 
      // Prozesswerte lesen, falls gewünscht
    } 

if (mRT.dwMsgState==MSG_STATE_COME)
{
PlaySoundA("C:\\WINDOWS\\Media\\ringin",NULL,1|8); \\当报警到达,报警声循环发声
}
else if(mRT.dwMsgState==MSG_STATE_QUIT)
{
PlaySoundA("C:\\WINDOWS\\Media\\notify",NULL,0); \\当报警确认,确认声发一声
}
else if(mRT.dwMsgState==MSG_STATE_GO)
{
PlaySoundA("C:\\WINDOWS\\Media\\chimes",NULL,0); \\当报警离开,离开声发一声
}

  printf("Nr : %d, St: %x, %d-%d-%d %d:%d:%d.%d, Dur: %d, Cnt %d, Fl %d\r\n" , 
  mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear, 
  mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wSecond, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff,
  mRT.dwCounter, mRT.dwFlags ) ;

   return( TRUE );

然后,打开报警记录,在每条报警编号的属性里进行组态,在“触发一个动作” 前打上勾,例如有100条报警,那么在这100条报警编号的属性里都要打勾。
进行完这个步骤后,就可以在WINCC平台中实现报警发声功能了。

提问者对于答案的评价:
谢谢 ,我试试看

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc266834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午4:49
下一篇 2019年6月11日 上午4:49

相关推荐

  • WINCC报警与DB块

    如何通过WINCC来寻找PLC程序中哪个变量对应的该报警信息?如图所示:看到报警电动阀1损坏,我如何知道在PLC中是哪个DB块中的那个地址对应的该变量 图片说明:  &n…

    2017年11月25日
  • 变量记AAA

    变量记录中一个变量A, 其随时间变化。 然后对A进行归档,在其属性参数项中选择: 处理—总和 用报表查询其在某一段时间内的总和时为何始终…

    SIMATIC WinCC 2019年6月11日
  • 200smart与WINCC怎么用以太网通讯

    200smart与WINCC怎么用以太网通讯没有用过WINCC 好搞吗?有什么能快速入门的资料,要求不高 就做些模拟量的现实 与电机控制类的&nbsp…

    SIMATIC WinCC 2021年7月5日
  • 变量归档数据如何保存到Excel中?

    问题补充:我现在已经进行了变量归档,并在图形编辑器中用wincc table control 控件显示,如何将存储在archivemanager中的记…

    SIMATIC WinCC 2019年6月11日
  • 求教WINCC7.0用C脚本实现一个功能

    当标签“A”为1时,将标签“B”赋值1;当标签“B”为2时,将标签“B”赋值2,谢谢 最佳答案 “当标签“B”为2时,将标签“B”赋值2,”这句有意义吗?本来就是2 那你…

    SIMATIC WinCC 2019年6月10日
  • ProSave

    安装ProSave出错 图片说明:       最佳答案 现象:安装 WinCC flexible 时要求重新…

    2021年7月5日
  • 请问为什么wincc不能新建和打开项目?

    我昨天装了个WINC V7.4 SP1,安装时关闭系统保护及杀毒软件,没报警,但是使用时,却连不上服务器。我都是用ying的管理员账户安装的,请问这是为什么?请…

    2021年7月5日
  • 全局脚本函数文件

    我的项目里的有几个全局脚本函数文件被加了密码,请问哪位大哥能帮帮忙,告诉一个解密的方法,不知道能不能解密呢. 最佳答案 现在还没有方法解密,而且在这里讨论解密问题不合适,最好是找编…

    SIMATIC WinCC 2019年6月11日
  • 怎么提取系统时间并显示

    我想在界面上用三个 I/O域控件 分别显示出系统时间的 时、分、秒。请问该怎么操作?除了在变量器里添加 SYSTEM INFO&n…

    SIMATIC WinCC 2019年6月11日
  • WINCC Flexible smart V3

    操作画面已经做好,怎么做运行记录?就是把设备的启动信息记录下来! 问题补充:能不能说的详细点,拜托了! 最佳答案 smart系列的屏是不支持脚本的所以不能实现j脚本,但是可以使用现…

    SIMATIC WinCC 2017年5月28日