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在做单个报警触发对应单个报警声音

2017年8月16日15:05:27如何在WINCC 中做单个报警触发对应单个报警声音如某个电机故障报警,就发出“某某电机故障报警”起到警示作用 一、首先安装一个文字转语音的软件!并打开软件!二、在软件里输入报警内容,如“P001收尘风机电机故障”三、点击生成MP3四、指定存放文件的路径,最好是存放在所要实现该功能的WINCC项目在网上邻居上的路径下的Horn下,这样到后面的组态就方便很多。

在WINCC项目在本电脑被正确打开后就会在网上邻居存放有WINCC项目和路径。

以上就是刚刚生成的报警声音所在的路径的报警声音文件,但它们格式只是MP3格式,不是WINCC系统所要求的WAV 格式,所以要下载的格式转换软件,将刚刚生成的MP3格式转换成WAV格式才行。

利用这个格式转换软件将MP3转换成WAV格式,再次将文件存放在刚刚的路径中来。

方便后面的组态。

打开WINCC项目,新建一个二进制变量内部变量Error打开WINCC报警器组件在报警器组态的对话框中的消息分配中设置如上图所示内容,意思就是当报警记录中的错误类别有报警触发时就置位刚刚新建的内部变量Error。

然后在报警器组态的信息分配中组态最关键的内容4的意思即使有很多报警同时触发时,也只能有一个声音报警响起,5组态触发声音报警的变量,6组态触发声音报警变量所对应的报警声音。

此处选择触发的报警变量此处选择报警触发变量所对应的报警声音至此报警器组态工作完成。

五、然后在WINCC项目的主画面组态能打开和关闭报警声音的按钮功能所用的报警的内部系统自动的变量如下:其内部变量对应的功能如上图所示它在WINCC项目的位置如下:六、在WINCC主画面中新建一个打开声音报警功能的按钮组件:它的属性如下:几何属性颜色属性样式属性字体属性主要是在文本中输入“报警音关”内容闪烁属性如下不开闪烁功能其它功能如下主要是想组态当报警声音被关闭的时候显示该按钮填充属性如下画面属性如下效果属性如下然后就在事件选项中组态意思就是当在按钮组件上释放左键时就将常数1赋值给@HornTriggeringSignalsActive,打开声音报警功能七、再新建一个取消声音报警功能的按钮组件该按钮的属性如下几何属性如下颜色属性如下:样式属性如下:字体属性如下:关键是在文本里输入“报警音开”字体闪烁属性如下:闪烁功能不开其它属性如下:意思是当报警声音开时显示该按钮组件填充属性如下:画面属性如下:效果属性如下:下面组态事件意思当鼠标在该按钮有鼠标动作时有如下C动作1、会弹出一个对话框,让你选择是进行取消报警声音的操作,并进行操作提示“请确认是否取消报警声音”2、同时赋值0给@HornTriggeringSignalsActive和@HornRese完成后将两个按钮重叠在一起并在画面中合适的位置上!C脚本如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1if( MessageBox(NULL,"请确认是取消报警声音","报警声音取消操作提示!!",MB_OKCANCEL )== IDOK){SetTagBitWait("@HornTriggeringSignalsActive",0); //Return-Type: BOOLSetTagBitWait("@HornReset",0); //Return-Type: BOOL}// WINCC:PICNAME_SECTION_END //Return-Type: BOOL// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_END}至此整个组态工作完成以上的这种消除报警声音的方法只要取消报警声音按钮按下,即使系统再有报警出现也不会发出报警,除非再次点击“报警音开”打开报警音功能,此时若再有报警出现才会有报警声音出现。

WinCC实现声音报警的方法

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

wincc6.0-的horn声音报警的使用

wincc6.0-的horn声音报警的使用

wincc 的horn声音报警的使用•悬赏分:20•- 解决时间:2009-5-22 17:14在horn中,我用一个报警类触发一个变量,用这个变量触发声音文件,但是报警类最多定义16个,我报警有50个,怎么做啊?我又不能直接用报警变量触发声音文件,因为这样如果报警存在,是复位不掉的,声音一直响,请问应该怎么做啊,是不是我理解错了问题补充:问题是如果用PLC的变量触发,上位机复位,你复位按钮怎么知道现在复位的报警是那个报警啊?问题ID: 36379提问者:炜- 资深学长第3级最佳答案1.WinCC V6.0可以用Horn组态实现声音报警,不用编程。

打开Horn,在Message assignment选项页选定Message Class为Error,定义一个Bool型的Tag;在Signal assingment选项页选定Tag为刚才定义的Bool型的Tag,在Sound中选择要播放的.wav声音文件。

运行时,只要Error类别的报警触发,则Bool型的Tag置位,.wav声音循环播放;在报警控件中确认报警,.wav声音中止,也可以将Bool型的Tag复位,.wav声音中止。

Horn是基本过程控制(BPC)的组件,标准安装是不会安装的。

安装WinCC时选择“自定义安装”,已经安装了就选择“安装卸载组件”,组件栏中选择“选项”,右边栏子选项选择“Ba sic Process Control”安装即可。

2.自定义两个内部32位变量stat1和stat1_save,然后在报警记录里面消息位使用外部变量,状态位为stat1中的位。

然后在脚本中:定义两个DWord变量A1、B1连接stat1和stat1_save。

#pragma code("Winmm.dll")void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag);#pragma code()A1=GetTagDWord("stat1");B1=GetTagDWord("stat1_save");if((A1^B1)&A1)SetTagBit("ok_1",1);if(GetTagBit("ok_1"))PlaySoundA("C:\\winnt\\music\\06.wav",NULL,1);SetTagDWord("stat1_save",A1);回答者:满- 高级工程师第11级2009-5-22 07:45提问者对于答案的评价:多谢30天内的投票结果:好100% (1)不好0% (0)其他回答可以再plc中,几个报警触发一个变量让他置位。

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

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声音报警

WINCC声音报警

WINCC声⾳报警显⽰订货号站配置声卡或信号模块。

该实例描述了如何组态报警设备的报警和警告事件类来触发语⾳信号。

下述内容包括了⼯程站的所有组态(包括冗余服务器和OS客户端组态及消息确认)。

1.按照PCS 7 V6.0组态⼿册在SIMATIC Manager中组态所有单站、服务器、冗余服务器和客户OS站。

2.在⼯程站上通过WinCC Explorer打开 SIMATIC PCS 7 单站或服务器OS站。

3.切换到WinCC Explorer中的“内部变量”管理,在“Horn”变量组中分别为报警和警告事件类创建内部变量(也可以创建/选择新的变量组)。

图 01:报警设备编辑器中为后续连接创建内部变量4.注意事项:该程序仅⽤于在连接的OS客户站上进⾏组确认的情况下。

这时,需要其他的变量。

在同⼀组中创建该内部变量并确保对这些变量设置为“项⽬范围更新”。

图 02:通过“项⽬范围更新”定义的变量属性对话框5.双击WinCC Explorer中的Horn图标打开报警编辑器。

在“信号分配”标签中的事件类的下拉菜单中选择“报警”,下⼀⾏选择“警告”。

插⼊需要的其他事件类。

图 03:在“信号分配”标签中为报警编辑器组态和选择事件类。

6.通过“变量”栏中的变量选择对话框选择内部变量,该变量先前已被创建⽤于报警和警告事件类。

在后⾯通过这些变量的赋值过程控制声信号的触发。

图 04:在“信号分配”标签中选择报警编辑器的内部变量7.在“信号分配”标签中可从下拉菜单中使应⽤⽤户权限设置,并且此处必须按优先级激活事件变量。

您可以在⽂本末列出的⽂档中找到更多信息。

8.在该例的报警编辑器中组态“信号分配”标签,如下图所⽰。

图 05:报警编辑器中组态“信号分配”标签9.打开“信号分配”标签。

该标签中,先前选择的变量与信号模块的输出相连接(输出1、2或3),或者,如实例所⽰,通过声卡为信号的声输出选择语⾳⽂件(*.WAV)。

在每⾏中选择两个内部变量⽤于报警和警告;通过变量选择对话框的“Tag”栏选择。

WINCC通过PC电脑主机输出报警音效

WINCC通过PC电脑主机输出报警音效

WINCC通过电脑机箱~输出报警音效
步骤一:建立WINCC变量,对应PLC的报警输出变量(例Q1.0)
步骤二:建立WINCC内部变量,在WINCC报警控件报警时,做为联接电脑里音频文件用。

名称任意:例:1:eorrsond,2:syssond
步骤三:编辑WINCC“报警记录”连接变量Q1.0,做为报警输出
步骤四:编辑WINCC”报警器”
连接变量:
1、消息分配:(可以编辑两种类型的报警,2种形式)
选择“错误”对应wincc内部变量1:eorrsond,
新建行:选择“系统,需要确认”对应wincc内部变量2:syssond 2、信号分配:变量1对应C:\Windows\Media\DJ.wav
变量2对应C:\Windows\Media\任意.wav
注:连接的音频文件,需是(.wav)格式,pcm编码
步骤五:编辑WINCC”画面编辑器”
步骤六:编辑WINCC”画面编辑器”-勾选报警记录运行系统
步骤七:保存,运行,与PLC进行通信,正常运行控制
步骤八:模拟报警变量Q1.0置1,报警记录输出,音频同时播放,步骤九:取消报警,需要点击“WINCC ALARM CONTROL”上按钮,经岗位确认后,进行报警取消。

WinCC实现声音报警的方法

WinCC实现声音报警的方法

内料介绍:C 脚本播放wav 艾件 C 脚木触发PC 蜂鸣器 VBS 脚木调用媒休播放器 报警器HORN 的使用、、、〕._j C:\WIHDOWS\Media、x 名称大才Q Config 亠(Sljonest^p. mi d40 39 3-91 _J CursorsXP 关键性终止.WWXp 电话拨入wav@1 Dowiiloade& Frogrsiii lil^s+ 二 Driver Cacheehome鬥 Fonts 田亡j HelpIIS Temporary Compressed Files ime in£InstallerowsWindows @L|Win ^WindowsWindows ^Jrecycle, w l±lX 首先请记录声音文件所 存放的路径名及文件名 (脚本当中需要填写) j125chemas MediaMicrosoft. HETiris agent crisapps rriuinetwork diagnostic + 因Offline Web Pa.ges +: _j pchoalth;3 Fe^rNet,J Prefetch^Windows X (g^flonri sh. (gjwindovs XFWindows XF town.(Tii iWindows XPWindows XPe]Windows XF(£]Windoys XF 込Ji-ingim wav^Windows XF^^jringout. waWindows XPWindows XFg ijilstart. wav请单击继续电 .wav av .wav .wav .wav 单命令川葩 23 23 22 22 20 20 17 10 7 6 3 2 2 205首先创建一个模拟水泵运行状 态的Bool 型变量“ Pump i ”濟抽电直X f W SE M 舒3舍局库E-C ] Displays + _J Op er at i CRB + 口 FlantELem ents⑥曰 _______ + 口 Symb ols 电SiemensHTAI ■库 D: \TESTPRJ\raCC\ELearning\0®总/电皂X 囤|》注ffii [画&-»—Q-& —M A$¥J -Ky J -?ra IS 曲如如符设管处、员Mf ns D HT昭跟A 全形科暖作规 (Tler AS AS AS Is 安泵变材采操常□□口□口 Hl rr l i ..砂t r r a ^^H M 冷却泵简易立式泵2 口离心泵1[®fil离心泵3 离心泵4离心泵2■对象属性扈性事件SymbolLibrary Cont roll打开泵对象的属性窗口进行属性设置■ Symb olLi brary i几何其它拄岸屁性Pi cture伸展符号翻转对象闪烁速度静态动?原本・0中-500添加泵的湄/停‘控制按钮在画面中插入诊断窗口(使于检验脚本执行过程D■对象冒性11形按钮园形按钮1十-1双点划线线宽二E 智能对象□画面窗口 0控件OLE 元素 筍入/辐出域应用程序窗口 对鎳展性GSC Diagnostics&翠玄应用程厚窗口融示勰翅框题IA斥显可可边标_冒前应用鸟窗口 1是是是是是是是否□匣園函=国形对象 伏态显示厘性爭件划启动/停止“按钮组态事件在以下情况下执行释放左键 按右键 释放右键动作动作边… E直接连接@)・.・ 总册]除鬼)^include •'apdefap -h" void OrtCIick(chIp§zPictureName, char^IpszObjectName, char* IpszPropertyName) { ^pragma option(mbcs)//WINCC:TAGNAME_SECTION_START// syntax:卡define TagNameInAction "DhCTsgMsme" //nextTsglD : 1//WIN CQTAGNAME.S ECTION 上 ND〃 WIN CCPICNAM E_SECTION_START// syntax: #define PicN&melnAction ''PictureName" //next PicID: 1/./WIN CCPICNAM E.SECTION.END ^include "apdefap.h"fKpragmacode ("Winmm.dll '*)VOID WINAPI PlaySoundA (char* pszSound, char^hmode, DWORD dwflag); #pragmacodeO printfC Start V\n H );PlaySoundA(,,C :WINDOWSWedia\VXLARM8.WAV ,,z NULLO); printf(,,End\rAn ,,)J T}t^pragma option (mbes)// WINCCTAG NAME.S E CTION^START//syntax: #define TagNameInAction "DMTagName" //next Tag ID : 1// WINCCTAG NAME_S E CTION.END圖SetTagBit3 SetTagByte 蜀 SetTagChar 圃 SetTagJouble 窗 SetTagDWord ►3SetTagfloa.t 圃 SetTagRaw 圃 SetTagSByte :...3 SetTagSDWord ; (3)SetTagSWord :蜀 SetTag :ViLu.e •““ 畐 SetTagWord.•♦-目 wince启动按钮C 脚本&匸空都崖欽►2Jallocate c_bibgraphics13邑曲 Sgset£1S Q state wait^include "apdefap.h"void OnCli ck(ch IpszPictureName, chs.^ IpszObjectName, char* IpszPropertyName) #pragm a option (m b cs)// WIN CC:TAG NAME^S E CTION_START// syntax: ^define TagNameInActi o n "DMTagName"//nextTagID : 1// WIN CC:TAG NAME.S E CTIO N_END// WIN CC:PICNAME_S ECTION_START// syntax: #define PicNameInAction "PictureName"//next PicID : 1//WINCC:PICNAME_SECTION_END尹in elude "apdefaph"^pragmacode ("Winmm.dll')VOID WIN API PlaySoundACchar" pszSound, char^hmode, DWORD dwflag);#pragmacodeQprintff Start \r\n n):PlaySoundAC'CA^INDOWS^MedisX^L^RMSWAV^N UIXO); printfCEndW1);^etTagBitfPumpI"J); //Return-Type:BOOL^)停止按钮C脚本include "apdefap-h11void OnClick(char^ IpszPictureName, char^ IpszObjectName, chat^ IpszPropertyN ame) {#pragma option(mbcs)//WINCC:TAGNAME_SECTION.START// syntax: #deline TagNamelnAction "DMTagName"//nextTagID : 1//WINCC:TAGNAME_SECTION_END//WINCCFICNAME.SECTION.START// syntax: #deline PicName InAction "PictureName"//nextPiclD:1//WINCC:PICNAME_SECTION_END#include "apdefap.h"#pragma code ("Winmm.dll '*)VOID WIN API PlaySoundA (char^ pszSound, char^ hmode z DWORD dwflag);# pragma codeOprintfCStart^n11);PlaySoundAC'OWINDOWS^Media^LARMS.WAV'LNU 丄0); printfC'End^n'1);SetTagBitC'Pumpl'lO); //Return-Type: BOOL注意:Flag =0x0000,该脚本独占C脚本线程,其它C脚本在此期间无法执行。

画面增加声音报警的方法总结

画面增加声音报警的方法总结

汽化冷去操作画面增加声音报警的方法为了保证春节期间的稳定运行,现在汽化冷却的操作画面的声音报警已经增加完毕。

由于原来的声音报警画面没有备份,这次重新添加,发现存在几个要点需要注意,增加声音报警的步骤总结如下:1、先确认计算机上安装的声卡驱动是否正常,确认方法,可以通过直接播放计算机内的音频文件,是否能正常播放。

另外在声音和音频设备属性卡里是否有默认设备图1 声音和音频设备属性页2、汽化冷却系统的操作画面是基于WINCC软件制作的,在WINCC上增加声音报警通常有两种方法:一种是通过C语言编程的方式在WINCC里的全局脚本中增加相应的程序段,实现声音报警的功能;另一种是通过wincc中的HORN 声音报警控件实现报警,由于在安装程序时没有安装相关的控件软件,所以我选择了第一种用C语言编译的方法来实现。

3、在WINCC项目界面中找到全局脚本选项,有C-Editor和VBS-Editor两个选项卡,如图2,打开C-Editor ,本次要进行做的声音报警,可以通过动作中的全局动作来实现,新建一个全局动作,如图3。

图2 WINCC 项目主界面图3 全局动作编辑界面4,在程序编辑界面中,按照要求编辑入逻辑程序。

编辑结束以后点击编译键,如果编译成果会在下边提示“0warning ,0error ”,然后点击保存。

保存为声编译键信息和触发键音报警.pas,附录1为现在最新编辑的程序。

在编辑程序过程中创建了一个WINCC内部变量,用来控制声音报警开启和暂停,用于画面上操作用。

5、编辑完成后,还要设定触发方式和周期,单击编译键左边的信息和触发键,会打开一个相关的对话框,点击到触发页。

分为周期触发和变量触发,两种方法都可以,这里我选用的是周期触发,设定周期为5秒,如图4所示。

图4 触发器编辑界面6、由于使用的全局脚本在WINCC软件中为独立的系统,所以需要在WINCC 里计算机属性中的启动选项中将全局脚本系统选中,然后再重新激活运行。

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

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

WinCC的声音报警对于组态软件WinCC中的声音报警,也有不少的朋友在讨论这个话题,在这里写的是我在出差期间,需要在项目中用到的声音报警,并且实现自动触发,按钮关闭声音,再次自动触发的循环声音报警代码.在这之前我也不会用这一方面的报警,毕竟C语言对我来说,我只能说了解而不是精通,下面的代码实现过程是我从其他地方咨询了多次找来的可行的解决办法.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 文件,播放完毕后将控制转移回你的应用程序中。

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

在WINCC中实现声音报警2009-02-06 20:13先在alarm logging里把报警分类打开自定义的报警类属性有3项 "status tag" "lock tag" "acknowledge tag" 后两个没用在status tag里添加一个byte格式的tag "A"然后你可以试验一下有报警了A为0x1f 确认后为0x01然后C s cript编一下须要编一下了if(GetTagByte("OS1_ALARM") &0xf0){cc_playsound("A.wav");return 1;}此外还需要cc_playsound()和GetProjectPath()两个函数我有现成了把这两个函数复制到项目library里编译一下脚本就行了对了声音文件*.wav放在项目sound下没有的自己建一个//Project Function GetProjectPath()BOOL GetProjectPath(char* lpstrProjectPath){BOOL bRet = FALSE;char szProjectFile[_MAX_PATH+1];char* psz = NULL;CMN_ERROR Error;bRet = DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,&Error);if (bRet == FALSE){return FALSE;}psz = strrchr(szProjectFile,'\');if (psz ==NULL){return FALSE;}*(psz+1) = 0;strcpy(lpstrProjectPath, szProjectFile);return TRUE;}//Project Function CC_PlaySound()#include "apdefap.h"void cc_playsound(char* lpszSoundFile){#pragma code("winmm.dll")BOOL PlaySound(LPCTSTR lpszSound, HMODULE hModule,DWORD dwSound); #define SND_FILENAME 0x00020000L#define SND_ASYNC 0x0001#define SND_LOOP 0x0008#pragma code()BOOL bRet = FALSE;char szProjectPath[_MAX_PATH];char szSoundPath[_MAX_PATH];if (lpszSoundFile == NULL){bRet=PlaySound(NULL,NULL,SND_FILENAME|SND_ASYNC);}else{GetProjectPath(szProjectPath);sprintf(szSoundPath,"%sSound%s", szProjectPath, lpszSoundFile); bRet=PlaySound(szSoundPath,NULL,SND_FILENAME|SND_ASYNC);}if (bRet == FALSE){MessageBeep((WORD)-1);}}报警可以用以下两种实现方法: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: ingout.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 FilesWindowsNTPinballSOUND36.WAV",SND_ASYNC|SND_LOOP);elsesndPlaySoundA(NULL,SND_ASYNC);//sndPlaySoundA("C:windowsmediaoffice97laser.wav",SND_ASYNC|SND_LOOP) ;}return 1;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。

以上程序均已在WINCC5.1、WINCC6下运行通过//在菜单栏的触发器里选择周期触发250MS#include "apdefap.h"int gscAction( void ){#pragma code("winmm.dll")BOOL PlaySound(LPCTSTR lpszSound,HMODULE hmodule,DWORD dwsound );//BOOL aa=FALSE;#pragma code( )if(GetTagBit("test")==1){PlaySound("c:\\winnt\\Media\\ringout",NULL,8 );}return 0;}WinCC中如何播放声音文件(下)——播放声音文件:文章标签: wincc项目函数CC_PlaySound● 在第一部分中,集成apdefap.h文件。

通过该文件,当前项目函数也可以调用其它项目函数。

● 函数标题定义了一个字符串变量,作为传送参数。

使用该变量,可传送要播放的声音文件的名称。

● 在第二部分中,集成Windows DLL winmm。

由于只需要 DLL 的一个函数,因此直接声明该函数。

此外,还定义两个符号常量。

● 该项目函数假定项目文件夹中存在一个声音子文件夹。

在该文件夹中,存储项目中使用的声音文件。

所期望声音文件的路径包括项目路径,声音文件夹的名称以及所传送的声音文件的名称。

它将存储在变量szSoundPath中。

● 通过Windows函数PlaySound()即可播放该声音。

如果不能播放声音文件,则通过Windows函数MessageBeep()产生简短的蜂鸣声来代替声音文件。

#include "apdefap.h"void CC_PlaySound(char* lpszSoundFile){#pragma code("winmm.dll")BOOL PlaySound( LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound); #define SND_FILENAME 0x00020000L#define SND_ASYNC 0x0001#pragma code()BOOL bRet = FALSE;char szProjectPath[_MAX_PATH];char szSoundPath[_MAX_PATH];GetProjectPath(szProjectPath); //Return-Type: BOOLAuthor:Smartsyssprintf( szSoundPath,"%sSound\\%s",szProjectPath,lpszSoundFile); bRet = PlaySound( szSoundPath,NULL,SND_FILENAME|SND_ASYNC);if (bRet == FALSE){MessageBeep((WORD)-1);}}。

相关文档
最新文档