当前位置:文档之家› WINCC语音报警脚本

WINCC语音报警脚本

新建全局脚本 时基2S
#include "apdefap.h"
int gscAction(void)
{
#pragma code("Winmm.dll")
VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);
#pragma code()
if (GatTagByte)("TAG")==1) 或 if (GetTagByte("TAG")>500)
{PlaySoundA("d:\\ringout.wav",NULL,1);}
return 0;
}
可实现单变量报警,开关量为1或模拟量大于500即可报警,若有多个变量可增加多个if.



通过报警记录报警,现在报警记录中组态好报警记录
建全局脚本,时基为2s
#include "apdefap.h"
int gscAction(void)
{
MSG_RTDATA_STRUCT mRT;
int i;
char* pszToken
//NOW is my code
#pragma code ("Winmm.dll")
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;
n1=MSRTGetMsgQuit(&alarmunack,errorunack);
SetTagWord("number",alarmunack);
MSRTGetMsgActual(&alarmsum,errorsum);
SetTagWord("sum",alarmsum);
if (alarmsum==0)
sndPlaySoundA(NULL,SND_ASYNC);
else
{
if (alarm>0)
sndPlaySoundA("C:\\program files\\windows nt\\pinball\\sound36.wav",SND_ASYNC|SND_LOOP);
else
sndPlaySoundA(NULL,SND_ASYNC);
//sndPlaySoundA("C:\\windows \\media\\laser.wav",SND_ASYNC|SND_LOOP);
}
return 1;
}
可实现报警记录中只要有警报发生,就触发声音警报



 1 编写如下C-Action:
#pragma code("kernel32.dll");
BOOL Beep(DWORD dwFreq,DWORD dwDuration);
#pragma code();
Beep(500,500);

2 语音报警的组态

相关主题
文本预览
相关文档 最新文档