您现在所在的是:

西门子SIEMENS

回帖:3个,阅读:1541 [上一页] [1] [下一页]
* 帖子主题:

[求助]关于WINCC报警

1003
cuit001
文章数:17
年度积分:50
历史总积分:1003
注册时间:2007/5/8
发站内信
发表于:2007/12/12 9:11:00
#0楼
我在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;

}
38113
cvlsam 版主
文章数:12488
年度积分:724
历史总积分:38113
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2007/12/12 10:04:00
#1楼
要想發聲,您需要確認以下動作:
1、系統中必須安裝聲卡
2、您的系統該目錄文件必須存在C:\\windows\\media\\Ringin.wav
3、您的操作系統必須與那位能發聲的操作系統相同
4、您必須在您的Wincc中啟用全局腳本運行系統。
1003
cuit001
文章数:17
年度积分:50
历史总积分:1003
注册时间:2007/5/8
发站内信
发表于:2007/12/12 10:18:00
#2楼
感谢cvlsam的回复

1、系统中已经安装声卡,用windows media player播放器可以播放该声音
2、该声音文件的路径无误,在“运行”中输入C:\\windows\\media\\Ringin.wav可以播放
3、我和他安装的操作系统版本一致,我就是用他的安装盘安装的系统
4、wincc-->计算机-->计算机属性-->启动-->全局脚本运行系统已打钩

可是还是不能报警,不知道问题出在哪里

1003
cuit001
文章数:17
年度积分:50
历史总积分:1003
注册时间:2007/5/8
发站内信
发表于:2007/12/13 12:25:00
#3楼
实在没办法了,做了个全局变量"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里去触发声音报警

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003