登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:[求助]关于WINCC报警

点击:1584 回复:3

我在WINCC全局动作里新建了一个动作,时基2S,程序如下:
请问为什么运行在我的机器上没有报警,而在别人的机器上就可以发声,是WINCC需要设置什么吗还是怎么回事?请大家帮帮我啊
#include "apdefap.h"
int gscAction( void )
{
MSG_RTDATA_STRUCT mRT;
 int i;
 DWORD y;
 char* pszToken;
 #pragma code("Winmm.dll")
 //sound output function
 BOOL WINAPI sndPlaySoundA
(char* szWave,DWORD dwFlag);
 #pragma code()
 DWORD SND_ASYNC=0x0001;
 DWORD SND_LOOP=0x0008;
 DWORD alarmsum,alarmunack;
 LPCMN_ERROR errorunack,errorsum;
 #pragma code("msrtcli.dll")
 #pragma code()
 LPDWORD lpdwServiceID;
 MSG_SERVICE_NOTIFY_PROC lpfnNotifyProc;
 LPMSG_FILTER_STRUCT lpMsgFilter;
 DWORD dwNotifyMask;
 LPVOID lpvUser;
 LPCMN_ERROR lpError;
 BOOL n1;
//inquire number of unacknowledged alarm message
 n1=MSRTGetMsgQuit(&alarmunack,errorunack);
 SetTagDWord("number",alarmunack);
 //inquire number of messages queued in the message list
 MSRTGetMsgActual(&alarmsum,errorsum);
 SetTagDWord("sum",alarmsum);
 if (GetTagBit("Alarm_Stop")==1)
{
 sndPlaySoundA(NULL,SND_ASYNC);
 else
 {
    if  (alarmunack>0)
     {sndPlaySoundA("C:\\windows\\media\\Ringin.wav",SND_ASYNC|SND_LOOP);
         else
     { sndPlaySoundA(NULL,SND_ASYNC);
 
}
  return 1;
}
07-12-12 09:11
要想發聲,您需要確認以下動作:
1、系統中必須安裝聲卡
2、您的系統該目錄文件必須存在C:\\windows\\media\\Ringin.wav
3、您的操作系統必須與那位能發聲的操作系統相同
4、您必須在您的Wincc中啟用全局腳本運行系統。
07-12-12 10:04
感谢cvlsam的回复
1、系统中已经安装声卡,用windows media player播放器可以播放该声音
2、该声音文件的路径无误,在“运行”中输入C:\\windows\\media\\Ringin.wav可以播放
3、我和他安装的操作系统版本一致,我就是用他的安装盘安装的系统
4、wincc-->计算机-->计算机属性-->启动-->全局脚本运行系统已打钩
可是还是不能报警,不知道问题出在哪里
07-12-12 10:18
实在没办法了,做了个全局变量"ALARM_FLAG"
if (GetTagBit("Alarm_Stop")==1)
  {SetTagBit("ALARM_FLAG",0);}
else
 {
    if  (alarmunack>0)
     {SetTagBit("ALARM_FLAG",1);}
    else
     {SetTagBit("ALARM_FLAG",0);}
 }
然后把这个全局变量引用到HORN里去触发声音报警
07-12-13 12:25

工控新闻

更多新闻资讯