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

合集下载

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中使⽤脚本实现报警wincc 2009-01-19 14:30:04 阅读99 评论0 字号:⼤中⼩在6.2⾥,新建⼀个画⾯,两个按钮,⼀个开始播放声⾳(循环播放)按钮,⼀个停⽌播放按钮(没次按钮将循环播放,退出wincc同样在播放),试验成功了,就是第⼀次反应很慢,第⼀次成功报警后,之后在调⽤就快了。

开始播放按钮代码。

#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()DWORD SND_ASYNC=0x0001;DWORD SND_LOOP=0x0008;//循环播放sndPlaySoundA("d:\\致爱丽丝.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;//停⽌播放sndPlaySoundA(NULL,SND_ASYNC); 00000000000000000000000000000000000000000000000000积累—WinCC报警实例wincc 2009-01-19 14:33:28 阅读458 评论0 字号:⼤中⼩这是⽹友给的实际⼯程中的例⼦,以后做项⽬使⽤时可以仔细研究⼀下,再次感谢那位热⼼的⽹友,我贴出来供⼤家学习:在WinCC全局脚本编辑器中完成,达到了语⾔报警的预期效果。

具体步骤如下:A.监控系统所在项⽬创建⽂件夹Voices,所有的语⾳报警⽂件存储在该⽂件夹。

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语音报警及C#实现文字转语音

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.以上可以看出,不管哪一种方式,本质上都是在播放已经存在的文件,那比如像钢卷号什么的每次都不一样,想要实现语音播放就不可能。

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实现声音报警的方法
//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文件,播放完毕后将控制转移回你的应用程序中。

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语音报警及C#实现文字转语音

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

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.V BS实现语音报警利用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.变量设置,此处和报警记录的设置一样,如下为1报警记录中设置:此时会同时播当testbool为1时,报警控件显示如下:4.以上可以看出,不管哪一种方式,本质上都是在播放已经存在的文件,那比如像钢卷号什么的每次都不一样,想要实现语音播放就不可能。

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实现声音报警的方法

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脚本在此期间无法执行。

WinCC中使用脚本实现报警

WinCC中使用脚本实现报警

WinCC中使用脚本实现报警wincc 2009-01-19 14:30:04 阅读99 评论0 字号:大中小在6.2里,新建一个画面,两个按钮,一个开始播放声音(循环播放)按钮,一个停止播放按钮(没次按钮将循环播放,退出wincc同样在播放),试验成功了,就是第一次反应很慢,第一次成功报警后,之后在调用就快了。

开始播放按钮代码。

#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()DWORD SND_ASYNC=0x0001;DWORD SND_LOOP=0x0008;//循环播放sndPlaySoundA("d:\\致爱丽丝.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;//停止播放sndPlaySoundA(NULL,SND_ASYNC);00000000000000000000000000000000000000000000000000积累—WinCC报警实例wincc 2009-01-19 14:33:28 阅读458 评论0 字号:大中小这是网友给的实际工程中的例子,以后做项目使用时可以仔细研究一下,再次感谢那位热心的网友,我贴出来供大家学习:在WinCC全局脚本编辑器中完成,达到了语言报警的预期效果。

具体步骤如下:A.监控系统所在项目创建文件夹Voices,所有的语音报警文件存储在该文件夹。

通过C脚本代码获取通用路径。

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

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 Function。

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

wincc声音报警

用户要求项目的任何一个阀门或泵出现故障后,都要有声音报警。

我在S7-300中把这些故障(60多个)都集中到了一个开关量上。

我点击WINCC的Horn后出现的对话框里面Message class下面只有3个选项:错误。

系统,需要确认。

系统,无确认。

我应当选哪一个呢?另外,我那个开关量,例如M1.0,应当放在哪一列?是Tag吗?1.HORN编辑器中有两个选项页,第一页指定报警类型(至于是否确认,那要看你的要求了)和报警TAG,也就是要指定TAG的报警类型;2.第二页指定报警声音,也就是报警TAG对应相应的报警声音,这个声音文件是WAV类型的;3.HORN组态起来还是很方便的。

先在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\下没有的自己建一个。

你不就是想在音箱里播放报警吗?这么用最简单:#pragma code ("Winmm.dll ")VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag );#pragma code()PlaySoundA("E:\\Projects-zrj\\WinccStandard\\zrj\\AlarmMp3\\alarm2.wav",NULL,1); /*PlaySoundA 函数的说明:参数 char* pszSound:指定声音文件 (*.wav 文件) 的全路径。

WinCCHorn报警器的使用

WinCCHorn报警器的使用

WinCCHorn报警器的使用
关键词:WinCC Horn 报警器
西门子WinCC的报警器Horn是Wincc自带的一个功能,在上位机监控的系统中,由于操作台的取消,没有了声光报警,声音报警就显得很重要了。

Horn的使用是很简单的,配置也不多,但是,在使用过程中还是经常要出一些问题,引起无法发出声音,本文介绍一些使用的注意事项。

1. 声音的准备
不能发音的很多问题都是由于声音文件造成的,声音文件要采用WAV 格式,而且最好是直接产生WAV声音文件,有些通过其它软件转换过来的WAV格式声音,WINCC无法识别,不能使用。

如果不能确定是否为声音文件的问题,最好的办法就是使用Windows自带的声音测试,C:\Windows\Media目录下的WAV文件,比如:Ring09,如果这个测试正常,系统就没有问题。

2. 启动选项设置
要勾选报警记录,是HMRT.EXE运行
3. 报警变量优先级设定
优先级不是必须的,当报警很多时,需要区分报警,最多可以设置16个级别的报警
4. 建内部变量,触发报警
变量必须是二进制变量,=1时触发声音,通过声音复位按钮,复位。

5. 报警器-消息分配设置
如果是单用户,没有提供登录的,要把登陆后激活取消。

消息类别可以不选,优先级选择后,可以分类报警
6. 报警器-信号分配
将前面设置的变量,分配声音文件就可以了。

7. 画面声音复位和变量监视
在画面上做一个变量监视和使用复位,如果变量为1,没有声音,就要看看声音文件有没有问题和系统的设置。

通常在WINCC系统启动后,会延时发出声音,稍微等一会,把变量置为1,检测一下就可以了。

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

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);
else
sndPlaySoundA(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 文件,播放完毕后将控制转移回你的应用程序中。

是不会一直响个不停的。

0x1:播放WAV文件,然后将控制立即转移回你的应用程序中,而不管对WAV文件的播放是否结束。

0x8:循环播放WAV 文件。

使用该代码即可实现WinCC中的声音报警.
2.采用Wincc中的Horn控件实现
在WinCC变量管理编辑器中,您创建几个或几个数据类型为二进制的信号变量,在“Horn”编辑器中,每一个信号变量被指派到一个信号模板或者“WA V”文件。

信号模板的输出能够被连接到一个喇叭或者另外的信号转送装置。

如果在运行模式中一个信号变量的值为“1”,则相对应于该信号变量的信号模板输出或者配置的WA V文件将被播放。

打开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时选择“自定义安装”,已经安装了就选择“安装卸载组件”,组件栏中选择“选项”,右边栏子选项选择“Basic Process Control”(基本过程控制)安装即可。

确认报警:
1. 通过报警控件中的工具栏实现:
2. 通过脚本实现:
可以用如下的函数确认报警窗口单个报警
4版本和低于此版本的WinCC:BOOL
OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)
5版本和高于此版本的WinCC:BOOL
AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)
可以用如下的函数确认报警窗口所有可见的报警:
4版本和低于此版本的WinCC:BOOL
OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)
5版本和高于此版本的WinCC:BOOL
AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName) 其中char*lpszPictureName 是报警控件所在的页面名称,,如果按钮跟控件在同一个页可以不用写
char*lpszObjectName 是报警控件的名称,,注意不是标题名称.
可以给每个变量分配各自的声音。

当一类报警来时都会触发声音。

相关文档
最新文档