如何实现wincc的声音报警
本人想做一个诸如液位报警之类的程序,即,液位高报、低报,在wincc有数据颜色变化,同时有报警声音输出,我用的是v6.2版本。请麻烦说明具体操作编程步骤,参看的资料是“报警记录”吗,请大家赐教。
另外,程序中有一个变量,前段时间,有报警时,还有声音,最近据反映,光有画面报警,没有声音报警,请问原因
答:可以调用WINDOW API函数PLAYSOUND(),或MESSAGEBEEP();
最简单的方法是直接调用MIDI播放器,通过变量状态修改播放器当前播放文件的名称和路径,报警产生时赋值正常名称和路径,报警消失时赋值错误的名称.
将需要报警的声音文件拷贝到WINCC运行项目下的horn目录下,以便供报警变量调用声音文件;
打开WINCC编辑窗口,双击打开horn编辑窗口,选择“signal assignment”
组态完声音报警后,需要重新启动WINCC项目,有时还需要重启计算机才能生效.
1使用horn配置报警变量和声音
2、字节写脚本:
#include "apdefap.h"
int gscAction( void )
{
#pragma code("Winmm.dll")
void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag);
#pragma code()
DWORD A1,A2,A3,A4,A5,A6,A7;
DWORD B1,B2,B3,B4,B5,B6,B7;
A1=GetTagDWord("YQ_ALARM_1");
A2=GetTagDWord("YQ_ALARM_2");
A3=GetTagDWord("YQ_ALARM_3");
A4=GetTagDWord("YQ_ALARM_4");
A5=GetTagDWord("YQ_ALARM_5");
A6=GetTagDWord("YQ_ALARM_6");
A7=GetTagDWord("COMM_ALARM");
B1=GetTagDWord("YQ_ALARM_SAVE_1");
B2=GetTagDWord("YQ_ALARM_SAVE_2");
B3=GetTagDWord("YQ_ALARM_SAVE_3");
B4=GetTagDWord("YQ_ALARM_SAVE_4");
B5=GetTagDWord("YQ_ALARM_SAVE_5");
B6=GetTagDWord("YQ_ALARM_SAVE_6");
B7=GetTagDWord("COMM_ALARM_SAVE");
if(
((A1^B1)&A1)|
((A2^B2)&A2)|
((A3^B3)&A3)|
((A4^B4)&A4)|
((A5^B5)&A5)|
((A6^B6)&A6)|
((A7^B7)&A7)
)
SetTagBit("yq_alarm_out",1);
if (GetTagBit("yq_alarm_out"))
PlaySoundA("c:\\winnt\\Media\\chord.wav",NULL,1);
SetTagDWord("YQ_ALARM_SAVE_1",A1);
SetTagDWord("YQ_ALARM_SAVE_2",A2);
SetTagDWord("YQ_ALARM_SAVE_3",A3);
SetTagDWord("YQ_ALARM_SAVE_4",A4);
SetTagDWord("YQ_ALARM_SAVE_5",A5);
SetTagDWord("YQ_ALARM_SAVE_6",A6);
SetTagDWord("COMM_ALARM_SAVE",A7);
return 0;
}
另外,程序中有一个变量,前段时间,有报警时,还有声音,最近据反映,光有画面报警,没有声音报警,请问原因
答:可以调用WINDOW API函数PLAYSOUND(),或MESSAGEBEEP();
最简单的方法是直接调用MIDI播放器,通过变量状态修改播放器当前播放文件的名称和路径,报警产生时赋值正常名称和路径,报警消失时赋值错误的名称.
将需要报警的声音文件拷贝到WINCC运行项目下的horn目录下,以便供报警变量调用声音文件;
打开WINCC编辑窗口,双击打开horn编辑窗口,选择“signal assignment”
组态完声音报警后,需要重新启动WINCC项目,有时还需要重启计算机才能生效.
1使用horn配置报警变量和声音
2、字节写脚本:
#include "apdefap.h"
int gscAction( void )
{
#pragma code("Winmm.dll")
void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag);
#pragma code()
DWORD A1,A2,A3,A4,A5,A6,A7;
DWORD B1,B2,B3,B4,B5,B6,B7;
A1=GetTagDWord("YQ_ALARM_1");
A2=GetTagDWord("YQ_ALARM_2");
A3=GetTagDWord("YQ_ALARM_3");
A4=GetTagDWord("YQ_ALARM_4");
A5=GetTagDWord("YQ_ALARM_5");
A6=GetTagDWord("YQ_ALARM_6");
A7=GetTagDWord("COMM_ALARM");
B1=GetTagDWord("YQ_ALARM_SAVE_1");
B2=GetTagDWord("YQ_ALARM_SAVE_2");
B3=GetTagDWord("YQ_ALARM_SAVE_3");
B4=GetTagDWord("YQ_ALARM_SAVE_4");
B5=GetTagDWord("YQ_ALARM_SAVE_5");
B6=GetTagDWord("YQ_ALARM_SAVE_6");
B7=GetTagDWord("COMM_ALARM_SAVE");
if(
((A1^B1)&A1)|
((A2^B2)&A2)|
((A3^B3)&A3)|
((A4^B4)&A4)|
((A5^B5)&A5)|
((A6^B6)&A6)|
((A7^B7)&A7)
)
SetTagBit("yq_alarm_out",1);
if (GetTagBit("yq_alarm_out"))
PlaySoundA("c:\\winnt\\Media\\chord.wav",NULL,1);
SetTagDWord("YQ_ALARM_SAVE_1",A1);
SetTagDWord("YQ_ALARM_SAVE_2",A2);
SetTagDWord("YQ_ALARM_SAVE_3",A3);
SetTagDWord("YQ_ALARM_SAVE_4",A4);
SetTagDWord("YQ_ALARM_SAVE_5",A5);
SetTagDWord("YQ_ALARM_SAVE_6",A6);
SetTagDWord("COMM_ALARM_SAVE",A7);
return 0;
}
新闻详情