声音报警确认问题

报警使用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 c动作

    在wincc项目中,画面上的对象只有一处可以点击,而我看了该对象的c脚本共有3处编程(点击功能),为什么另两处鼠标指向时没有闪电符号(就是不能点击)? 问题补充:c脚本中所编辑的属…

    SIMATIC WinCC 2018年12月5日
  • wincc报表与excel

    现客户要求在wincc运行系统里补齐前3个月的历史数据,但嫌wincc自带“创建归档值”的方法太麻烦,且创建的归档值后面会自动产生字母m,他们也不认可,所以我想通过先在excel表…

    SIMATIC WinCC 2017年11月1日
  • 求求 simatic wincc flexible 2008 sp3 软件下载链接 谢谢!!!!!!!

    simatic wincc flexible 2008 sp3  软件下载链接 钻石用户推荐最佳答案 WinCC&nbs…

    SIMATIC WinCC 2021年7月5日
  • wincc在编辑画面时报的错误信息

    wincc在编辑画面时错误信息:“StgOpenStorage hr = There are  insufficient…

    SIMATIC WinCC 2019年6月11日
  • TIA wincc profession 如何与实体PLC进行连接

    用仿真PLC与wincc profession可以进行连接 数据都能显示,与实体PLC进行连接后数据连接不上,也不知道是什么问题程序可以下载 图片说明: &nb…

    2021年7月5日
  • 组态小叉叉

    在WInCC里,如何象操作系统一样组态出每一个弹出的窗口上部分有起关闭作用的小叉叉? 最佳答案 窗口属性中有个可以关闭的项可设置。 提问者对于答案的评价:完全正确,谢谢。

    SIMATIC WinCC 2017年11月19日
  • wincc弹出窗口

    请教下,wincc怎么通过常数1打开指定子画面,并且子画面可以关闭,而不是通过画中画打开,以为在用画面管理打开会就开发界面留下固定窗口 最佳答案 可以直接控制画面窗口的可见性就可以…

    SIMATIC WinCC 2021年7月5日
  • WINCC弹框

    WINCC使用C或VB进行弹框,并且显示可变倒计时 最佳答案 这个弹框只能用画面做,弹框用画面窗口控件装载,弹出时,画面显示;不弹时画面隐藏。倒计时好做,如果用VBS就更简单了,V…

    SIMATIC WinCC 2021年7月5日
  • 请问如何在wincc画面中调用vb工程

    我用vb做了一个报表查询。想在wincc画面上调用这个vb工程,即当wincc运行时,点报表按钮。能打开vb的工程,且vb是在运行状态。请问如何实现 最佳答案 先把VB程序生成.e…

    SIMATIC WinCC 2019年6月11日
  • 安装WINCC出现问题求助

    安装wincc的时候出现“! 产品: >=MICROSOFT SQL SERVER 2000(INSTANZ WINCC…

    SIMATIC WinCC 2019年6月11日