WinCC实现声音报警的方法

合集下载

如何在WINCC在做单个报警触发对应单个报警声音

如何在WINCC在做单个报警触发对应单个报警声音

如何在WINCC在做单个报警触发对应单个报警声音
在WinCC中,可以通过配置报警触发器来实现单个报警触发对应单个报警声音的功能。

下面将详细介绍如何进行配置。

1.创建需要监控的变量
在WinCC项目中创建需要监控的变量。

例如,创建一个名为"AlarmTag"的变量。

2.创建报警触发器
3.配置报警触发器
在报警触发器列表中选中要配置的报警触发器,并点击右键,在上下文菜单中选择"Properties..."。

在报警触发器属性对话框中,选择"Actions"选项卡。

4.设置报警声音
在报警触发器属性对话框的"Actions"选项卡中,点击"New..."按钮以添加一个新的动作。

在动作类型下拉菜单中选择"Play alarm sound file"选项,然后点击"..."按钮选择要播放的报警声音文件。

5.配置报警条件
6.保存配置
点击报警触发器属性对话框中的"OK"按钮保存配置。

通过以上步骤,配置就完成了。

当监测的变量"AlarmTag"的值满足设定的触发条件时,报警触发器会自动触发,并播放指定的报警声音文件。

注意:在WinCC项目编译和运行前,确保报警声音文件存在于正确的位置,并已正确配置报警触发器的声音文件路径。

WinCC实现声音报警的方法

WinCC实现声音报警的方法

#include "apdefap.h"int gscAction( void ){#pragma code("Winmm.dll")VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByte("TI101")>100){PlaySoundA("C:\\\\Program Files\\\\Windows NT\\\\Pinball\\\\SOUND36.WAV",NULL,1);} return 0;}报警可以用以下两种实现方法:1、建一个全局脚本,时基为2S#include "apdefap.h"int gscAction( void ){#pragma code("Winmm.dll")VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByte("TAG")==1) 或if (GetTagByte("TAG")>500) {PlaySoundA("d:\\ringout.wav",NULL,1);}return 0;}用以上程序就可以实现单个变量报警,开关量为1或模似量大于500都可以报警,用户可以根据自己的情况改变以上数值,如果有多个变量可以增加多个if .2、通过报警记录,先在报警记录中组态好报警记录建一个全局脚本,时基为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);SetTagDWord("number",alarmunack);MSRTGetMsgActual(&alarmsum,errorsum);SetTagDWord("sum",alarmsum);if (alarmsum==0)sndPlaySoundA(NULL,SND_ASYNC);else{if (alarmunack>0)sndPlaySoundA("C:\\Program Files\\WindowsNT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP);elsesndPlaySoundA(NULL,SND_ASYNC);//sndPlaySoundA("C:\\windows\\media\\office97\\laser.wav",SND_ASYNC|SND_LOOP); }return 1;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。

wincc软件报警声音的做法

wincc软件报警声音的做法

Wincc软件报警声音的触发和确认
通过wincc内部变量的Horn变量组,报警记录,报警器,实现触发报警声音
第一步:打开wincc变量管理器,选中内部变量,在Horn变量组新建几个内部变量,本例中新建HORN_ALM,数据格式定无符号的值,8位,16位,32位都可以,本例中定义为32位,新建HORN1,HORN2,HORN3,数据格式为二进制变量
第二步:打开报警记录,在消息下面可以新建消息,本例中创建了三个消息组,按报警的等级创建了一级报警,二级报警,三级报警,等级的划分看项目上是否有要求,没有就不用划分
第三步:将HORN_ALM变量在添加到三个消息组中,消息位不能重复,HORN_ALM定位32位值,消息位可以从0-31中任意选择
第四步:打开报警器,在消息分配中将三个报警等级选上,消息类别对应的变量为新建内部变量的HORN1,HORN2,HORN3
第五步:在信号分配中,组态HORN1,HORN2,HORN3,对应报警声音文件
总共五步步骤可以实现通过Horn变量组,报警记录,报警器,触发报警声音
报警声音的确认:使用wincc AlarmControl报警控件,当报警消息到达后,会出现报警栏中,通过报警栏上的单个确认按钮或全部确认按钮确认到达的报警条目,当报警消息确认后报警声音停止。

WinCC实现声音报警的方法

WinCC实现声音报警的方法
Windows XP电
^JWindo*rs XPK£]WlndQrS XP J
Windows XF PS^Jringin WaVsΛjWιndovs XP ^^jrlngout. WaVrJWindO^SXP
请单击继续
大才
——
40
39
39
首先请记录声音文件所
WaV
.WaV
.VraLv
.Wav
vfs XF腿?单命令・way
工15t辽t∙*3
23
23
22
22
20
20
17
10
7
6
3
2
2
205
□≡≡同步
匚:线性标定
过程值范圉
值1
≡2
变呈值范国
从操作粟纭观点看变星的数据类型
取消
⅛
■全局库
÷IBiSPlayrS
÷ _J OPerati on
÷ _J Γl WtELein^nt 2
SlQ
+_J SyiTlbOIS
念项目库
⅛ ⅛β X
^pragmaOPtiOn(mbcs)
//WIN ∞:TAGNAME-BSECTlONeSTART
// syntax: #define TQgNameInAetion "DMTagName11
//nextTQglD:1
//WIN CC:TAGNAME_S ECTIONLEND
/∕WIN∞PICNAME-SECTION-START
inf
+:」InStalIer
,*∣j ⅛v∙⅛
12 sChelnaS
Media
Mi CrOSOft. NEr ms agent Risapps fhui network diagnostic OfnLRe Web P⅛ξβs

wincc声音报警实现方法

wincc声音报警实现方法
NT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP);
else
sndPlaySoundA(NULL,SND_ASYNC);
//sndPlaySoundA("C:\\windows\\media\\office97\\laser.wav",SND_ASYNC|SND_LOOP);
#pragma code("Winmm.dll")
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code()
DWORD SND_ASYNC=0x0001;
DWORD SND_LOOP=0x0008;
DWORD alarmsum,alarmunack;
#pragma code( )
if (GetTagByte("TAG")==1) 或 if (GetTagByte("TAG")>500)
{PlaySoundA("d:\\ringout.wav",NULL,1);}
return 0;
}
用以上程序就可以实现单个变量报警,开关量为1或模似量大于500都可以报警,用户可以根据自己的情况改变以上数值,如果有多个变量可以增加多个if .
MSRTGetMsgActual(&alarmsum,errorsum);
SetTagDWord("sum",alarmsum);
if (alarmsum==0)
sndPlaySoundA(NULL,SND_ASYNC);
else

WINCC实现有声报警的方法

WINCC实现有声报警的方法

WINCC实现有声报警的方法WinCC实现声音报警的方法#include "apdefap.h"int gscAction( void ){#pragma code("Winmm.dll")VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByte("TI101")>100){PlaySoundA("C:\\\\Program Files\\\\Windows NT\\\\Pinball\\\\SOUND36.WAV",NULL,1);}return 0;}报警可以用以下两种实现方法:1、建一个全局脚本,时基为2S#include "apdefap.h"int gscAction( void ){#pragma code("Winmm.dll")VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByte("TAG")==1) 或 if (GetT agByte("TAG")>500){PlaySoundA("d:\\ringout.wav",NULL,1);}return 0;}用以上程序就可以实现单个变量报警,开关量为1或模似量大于500都可以报警,用户可以根据自己的情况改变以上数值,如果有多个变量可以增加多个if .2、通过报警记录,先在报警记录中组态好报警记录建一个全局脚本,时基为2S#include "apdefap.h"int gscAction( void ){MSG_RTDATA_STRUCT mRT;int i;char* pszT oken;//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); SetTagDWord("number",alarmunack); MSRTGetMsgActual(&alarmsum,errorsum);SetTagDWord("sum",alarmsum);if (alarmsum==0)sndPlaySoundA(NULL,SND_ASYNC);else{if (alarmunack>0)sndPlaySoundA("C:\\Program Files\\Windows NT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP); else sndPlaySoundA(NULL,SND_ASYNC);//sndPlaySoundA("C:\\windows\\media\\office97\\laser.wav ",SND_ASYNC|SND_LOOP);}return 1;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。

WINCC 声音报警设置办法

WINCC 声音报警设置办法
1、建立一个WINCC的内部变量,例如建立内部变量―――state。

2、修改“全局脚本”条目下的“标准函数”条目下的“Alarm”目录下的
“GmsgFunction”这个WINCC自带函数的内容,在其中添加―――
“ SetTagBit(“state”,1 ); ”这条语句并保存退出。

3、组态“报警记录”,在“模拟量报警”目录下添加需要报警的变量消息行,右
击该消息行,打开该变量消息行的“属性”对话框,把“触发一动作”前的选项框选中,保存。

4、组态“全局脚本”条目下的“全局动作”,建立一个用于发出声音的全局动作
脚本(例如叫“报警.PAS”,可以复制别的现有项目中的现成脚本来修改得到),在该脚本里面主要是编写有根据“state”变量的“1”或“0”状态来执行一条播发声音文件的语句;再建立一个用于“自动定时消除声音”的全局脚本(例如叫“消音.PAS”),在该脚本里面主要是有使变量“state”进行复位(置“0”)的语句。

WinCC实现声音报警的方法

//Syntex: ^define PiCNGmeInACtiOnllPictureNsme"
//next PidD:1
//WlNCCFICNAMEeSECTIONeEND
^include,⅛pdefap h"
^PrSgmaCOde("Winmrn.dll,,)
VOlD WlNAPl PleySOUndA (CharfcPSZSOUnd,ChGL广hmode, DWORD dυvflag);
#Pragma code(
PlaySOUndA(
}
PlaySOUndA ι⅛数的说啊=
姿数char* PSZSoUndt
指定声音文件r.wav ±ftj的全S⅛径G
篆武CharThmodθf为NLILL.
参数DWoRD Clvxflag:
SND,SYNC = OXOOOOf津首文件播取一次J诙脚本一宜尊到播歆结朿
^pragmaOPtiOn(mbcs)
//WIN ∞:TAGNAME-BSECTlONeSTART
// syntax: #define TQgNameInAetion "DMTagName11
//nextTQglD:1
//WIN CC:TAGNAME_S ECTIONLEND
/∕WIN∞PICNAME-SECTION-START
在WirlCC中实现声音报警功能
内容介绍;
1、C脚本播放WaV文件
2、C脚本触发Pe蜂鸣器
3、VBS脚本调用媒体播放器
3、报警器HORN的使用
C脚本播放WaV文杵
ffinclude "aρdefap.h
VOid OnCliCk(Char
ffpragma COde ('Winmrτι.dll

WinCC的声音报警(通过HORN控件和脚本分别实现)

WinCC的声音报警对于组态软件WinCC中的声音报警,也有不少的朋友在讨论这个话题,在这里写的是我在出差期间,需要在项目中用到的声音报警,并且实现自动触发,按钮关闭声音,再次自动触发的循环声音报警代码.1.采用代码实现首先,这是一个全局脚本(在全局脚本中创建一个项目函数,然后调用此函数),可以放在当前显示的画面的任何元素中,并对代码进行如下的添加:建个变量(Bit)“AlarmSound”有报警的时候为“1”,没有报警的时候“0”,写个全局脚本触发器里选择变量触发“AlarmSound”(脚本触发变量为内部变量,若是外部变量则使其与一内部变量关联)int gscAction( void ){#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()if(GetTagBit("AlarmSound")!=0)sndPlaySoundA("c:\\win2003\\system32\\ALSNDMGR.WAV",0X1|0X8);elsesndPlaySoundA(NULL,0X0);return 0;}即可实现在肩控画面中出现报警的同时启动声音文件.在停止的时候用按钮控制,其中事件代码为:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()sndPlaySoundA(NULL,0X0);}对上述代码中:关于windows API函数sndPlaySoundA(char* szWave,DWORD dwFlag);char* szWave是声音文件的路径DWORD dwFlag是标识常量0x0:播放WAV文件,播放完毕后将控制转移回你的应用程序中。

Wincc语音报警及C#实现文字转语音

Wincc语音报警Wincc本身可以利用C脚本,VBS及HORN来做语音报警,但是上述本质上是调用的已存在的音频文件,想实现播放实时更新的信息是不行的,本文主要介绍通过C脚本,VBS及HORN来实现语音报警,并最后介绍一种文字转语音---TTS的实现方法。

1.C脚本实现语音报警利用C脚本实现语音报警,只能是播放WAV文件。

在C脚本中添加如下代码:#include"apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char*lpszPropertyName){void WINAPI PlaySoundA(char *pszSound,char*hmode,DWORD dwflay);#pragma code()if (GetTagBit("testsound")==1){PlaySoundA("c:\\wav\\1.wav",NULL, 1); }return 0;}另外需设置触发器,如下:报警器变量设置语音文件路径2.VBS实现语音报警利用VBS,实际是在调用媒体播放器,可以播放视频,代码如下:Function BackColor_Trigger(ByVal Item)Dim soundDim objWshShellsound= "c:\wav\1.avi"Set objWshShell=CreateObject("Wscript.Shell")objWshShell.Run "mplay32.exe/play/close" & sound,0End Function3. 利用HORN 实现语音报警a.首先打开报警器b.变量设置,此处和报警记录的设置一样,如下报警记录中设置:当testbool 为1时,报警控件显示如下:为1时报警此时会同时播放1.WAV 文件4.以上可以看出,不管哪一种方式,本质上都是在播放已经存在的文件,那比如像钢卷号什么的每次都不一样,想要实现语音播放就不可能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档