wincc的声音报警
WinCC -- 组态报警和消息 -- 声音报警和消息
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 6 of 24
消息的声音输出能够在WinCC服务器和WinCC客户端执行。“Horn”需要在每一WinCC工作站单独配 置。
“Horn”编辑器允许您使用确认变量或者一个确认组来配置一个多重确认。使用确认组的多重确认选件将从 WinCCV6.2以后可以获得。在这里,“Horn”确认可应用于在被设置为相同的确认组的WinCC工作站。确 认组是一个简单的,实现客户端,服务器和冗余服务器器的声音信号输出的多重确认的方法 ,推荐使用一 个确认组的来实现多重确认。
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 2 of 24
“0”。
z 通过用户自定义逻辑设置/重设信号变量 信号变量的值没有必要必须连接到消息级别的报警状态。设置/重设信号变量的逻辑同样也可以在用 户指定逻辑中编程。
显示订货号 如何设置带有声音的信号消息?
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声音报警实现方法
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实现声音报警的方法
//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声音报警的使用
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的声音报警对于组态软件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 声音报警和消息
z 如果信号变量经过在报警控件中确认所有相关报警被重置或者脚本直接重置变量,在这样的操作下 计算机的声音信号被确认(关闭),但是在这种情况下“@HornReset”不会被设置为“0”。 这样, 在某一台计算机,为了实现多重确认的计算机配置收不到信号已经被确认的信息。在这样的情况 下,为多重确认配置的计算机的信号传输不能够被确认(关闭)。多重确认只能在分别点击 “acknowledge horn” 按钮后起作用。
图 3:在“信号分配”标签中为报警编辑器组态和选择事件类。 6. 通过“变量”栏中的变量选择对话框选择内部变量,该变量先前已被创建用于报警和警告事件类。 在后面通过这些变量的赋值过程控制声信号的触发。
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
显示订货号 如何设置带有声音的信号消息?
说明: "Horn"编辑器用来配置与报警相关事件信号模板和PC声卡的输出。Horn编辑器是WinCC选件“基本过程控 制”的一个组件,自WinCC V6.0版本以后,“基本过程控制”不需要任何附加的授权,默认获得。
关于“Horn”主题的信息可以通过以下方式获得
在SIMATIC PCS 7 / WinCC V6.x下如何组态单站、服务器、冗余服务器和客户OS站的Horn编辑器?
说明: 下列组态过程基于SIMATIC PCS 7 V6.0版本。因此,适用于所有的PCS 7 V6.0 和WinCC V6.0以上的版 本。
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 文件) 的全路径。
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实现声音报警的方法
内料介绍: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脚本在此期间无法执行。
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的声音报警WinCC的声音报警工控Siemens WinC 2007-11-07 12:33:36 阅读592 评论1 字号:大中小订阅对于组态软件WinCC中的声音报警,也有不少的朋友在讨论这个话题,在这里写的是我在出差期间,需要在项目中用到的声音报警,并且实现自动触发,按钮关闭声音,再次自动触发的循环声音报警代码.在这之前我也不会用这一方面的报警,毕竟C语言对我来说,我只能说了解而不是精通,下面的代码实现过程是我从其他地方咨询了多次找来的可行的解决办法.首先,这是一个全局脚本,可以放在当前显示的画面的任何元素中,并对代码进行如下的添加:建个变量(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 V7.3基于上位机声音报警的实现方法
11.Wincc V7.3基于上位机声音报警的实现方法(2016-02-29 19:24:09)转载▼标签:wincc上位机声音报警分类:西门子软硬件案例:Wincc V7.3做上位机程序,希望有报警到来时,发出声音报警防止操作员打盹。
这里描述了实现这种功能的方法之一,但不是唯一的方法。
Wincc建以下内部变量:Alarm 32位浮点数;Path 文本变量8位字符集。
Wincc中建立一个主画面,有一排导航按钮,有一个picturewindow,点击导航按钮跳转到相应工艺画面,有一个报警控件,名字为ctrlAlarm,有一个消音按钮用于消除声音和报警确认,如下图所示。
在画面的打开事件中,写入以下VBS脚本,把项目路径和波形文件路径写入path变量。
Sub OnOpen()Dim path_vbs,path_cSet path_vbs=HMIRuntime.Tags("Path")path_vbs.write HMIRuntime.ActiveProject.Path & "\alarm.wav"'以下代码将'\'替换成'\\',以备c脚本引用项目路径path_c=Replace(path_vbs.read,"\","\\")HMIRuntime.Tags("Path").Write path_cEnd Sub建立一个全局VBS脚本,判断是不是有新的报警产生,5秒循环触发。
Option ExplicitFunction action'每5秒通过每个工艺画面报警控件"组确认"按钮是不是灰色的判断是不是有新的报警,如果有就把ResetAlarm复位Dim ctrlAlarm,ctrlToolbarButtonSet ctrlAlarm=HMIRuntime.ActiveScreen.ScreenItems("ctrlAlarm")Set ctrlToolbarButton=ctrlAlarm.GetToolbarButton("QuitVisible")If ctrlToolbarButton.Enabled Then‘如果按钮'组确认'不是灰色的,说明有新的报警产生HMIRuntime.Tags("Alarm").Write 1.0ElseHMIRuntime.Tags("Alarm").Write 0End IfEnd Function建立一个全局C脚本,用于播放声音文件,5秒循环触发.#include "apdefap.h"int gscAction( void ){// 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 : 1// WINCC:PICNAME_SECTION_END//每5秒做一次判断#pragma code("Winmm.dll")void WINAPI sndPlaySoundA(char *szWave,DWORD dwflag);#pragma code()char* prjpath;prjpath=GetTagChar("Path");//Return-Type: char*if (GetTagFloat("Alarm")==1.0){if (GetTagChar("Path")!=""){sndPlaySoundA(GetTagChar("Path"),1);}}return 0;}在WINCC-计算机属性的启动选项中,勾选“全局脚本运行系统”和“报警记录运行系统”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现在,在启动时你希望对某个消息类别或所有的消息类别取消激活喇叭触发。再次启动报警记录向导并取消激活"连接声音信号设备"选项。把各个消息类别的信号设成"无"。在消息属性里,与所预期的情况相反,一旦报警记录向导运行完它的例程后,可看到"连接声音信号设备"选项没有被取消激活,而那些以前设置好此选件的所有消息仍保持在设置好的状态。这意味着,你有必要对每条消息打开属性窗口,然后人工取消激活它。
注意:
? 实现多重确认需要选择正确的终端总线。注意在“Simatic Shell”中的设置。关于Simatic Shell 的更多的信息在条目 ID 18967416. 可以获得
? 为了能够通过使用组确认实现多重确认,您应当对组确认使用唯一的名字。这个名字在整个终端总线上必须唯一。 注意,使用相同的组确认,但不直接属于当前工程的WinCC工作站可以在总线上存在。
全局脚本可以设置每两秒执行一次。
问:WINCC在报警的时候,需要声光报警,而且要求在电脑的音响里出声,我以前了解过,好像有一个选件。请问如何使用?如果有资料,最好能提供中文版的,我以前好像见过英文的,使用起来很麻烦。。多谢! 内容来自
答:如何设置带有声音的信号消息? 内容来自
? WinCC帮助系统下“Options > Options for Process Control > Horn”
? 配置手册“SIMATIC Process Control System PCS 7 V7.0 Operator Station”。 该手册可在条目ID 24449737.下获得。
至于 "喇叭",你必须区别对待互不相干的两个选项:
基本 WinCC:不用信号模块:
在报警记录里,你可以选择各个单条消息并鼠标右击打开"属型"对话框。在"此消息"域里,可已激活"触发喇叭"。这里,"喇叭"的意义取决于着消息所属的类别。你可以为每一个消息类别触发一个喇叭信号。而对此类别中的每一条消息你又可以决定喇叭要不要发声。下面以"报警"消息类为例说明你应该做些什么。
在此之后,你想按装信号模块并设置声音信号功能。为此,你重新启动了报警记录向导并对所需的消息类别激活了" 连接声音信号设备"选项并设定了相应的声音信号 (@Signal1, @Signal2 和 @Signal3)。 现在你浏览报警记录向导,/ 可看到在消息属性里"连接声音信号设备"选项已经被设置好。
6. 另外, 你还可以依据区域(也就是依据注册)来生成喇叭的声音以及确认。如果在图片树管理器存在一个层次,那么在警报纪录里各个消息都被分配给这个层次里的一个区,与此同时用户在用户管理器中被组态。当一条消息出现时,在登录到运行系统的用户中,只有对该区(该区分配有所涉及的消息)有权限的那些用户喇叭才被触发。基于此理由,正如"基本 WinCC:不用信号模块"所述,< b>不可能在报警记录里把一个变量或其它@信号变量分配给各条消息。只存在一个链接部件,就是 HMRT.exe。HMRT.exe 把@信号变量的状态传输给信号模块的驱动程序,而正是通过信号模块各个继电器的触点才可以开/闭。
1. 选择消息类别,比如"报警"。
2. 鼠标右击打开属型对话框。
3. 在"确认"标记中,通过在"确认中心喇叭"域里选择一个变量,来定义喇叭何时被触发(带同步确认)。
4. 通过一个到 AS 系统的链接来把这个变量应用到一个二进制输出模块上。用此办法,可以控制任何类型的听觉或视觉信号设备。确认可在消息窗口里进行。
内容来自
说明:
"Horn"编辑器用来配置与报警相关事件信号模板和PC声卡的输出。Horn编辑器是WinCC选件“基本过程控制”的一个组件,自WinCC V6.0版本以后,“基本过程控制”不需要任何附加的授权,默认获得。
关于“Horn”主题的信息可以通过以下方式获得
1 Wincc组件Horn,报警时会使一个变量置1,确认报警后会置0。
然后全局脚本添加C,判断当变量为1时执行以下代码。
#pragma code(\"Winmm.dll\")
void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay);
5. 如果你激活了运行系统, Audible Signal Runtime.exe (HMRT.exe) 执行文件也启动起来,因为它启动列表中也被报警记录向导设置了。如果此时数据库表是空的,它自动终止。因为没有声音信号的分配 。执行文件 HMRT.exe 连接到AlarmLoggingRuntime 并且知道新的"报警", "警告", "AS 控制系统消息" 或 "OS 控制系统消息"何时出现。在这样的情况下,它就会置起相应的信号:"@Signal1, @Signal2 或 @Signal3"。如果你单击"确认喇叭"按钮,你就直接把这三种 @ 信号都取消激活了。
配置horn
在WinCC变量管理编辑器中,您创建几个或几个数据类型为二进制的信号变量,在“Horn”编辑器中,每一个信号变量被指派到一个信号模板或者“WAV”文件。信号模板的输出能够被连接到一个喇叭或者另外的信号转送装置。如果在运行模式中一个信号变量的值为“1”,则相对应于该信号变量的信号模板输出或者配置的WAV文件将被播放。
内容来自
内容来自
内容来自
内容来自
内容来自
内容来自电气自动化技术网
#pragma code()
if(GetTagBit(\"TAG\"))
PlaySoundA("\"d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft sound.wav\",NULL,8);
TAG是变量,wav声音文件路径自己设置。
注意:
只有在内部系统变量“@HornTriggeringSignalsActive”是“1”的情况下,输出才会被执行或WAV文件被播放,在默认的情况下,这个值在变量管理器中作为初始值被置位。
在运行模式中用两种不同的途径使一个变量被赋值。
? 信号变量
在运行模式中,一个信号变量的值能够直接连接到一个配置消息的报警状态。将信号变量赋值到消息可以在“Horn”编辑器中的“Message assignment”菜单中配置。这个参数对话框提供了连接一个信号变量到指定的报警状态的不同的过滤标准(消息类别,优先级,数据源,范围,事件,允许)。
3. 鼠标单击"应用"按钮,打开一个"设置总览"窗口。这些是报警记录向导要用来组态消息系统的设置。将变量 @Signal1, @Signal2 和 @Signal3 分配给消息类并不在报警记录里输入,而是由HMRT.exe在运行系统里动态处理。
4. 报警记录向导(基本数据)在其初次运行时,在数据库里创建了 REPORTHORNASSIGN 表。< /b>如果没有设置"连接声音信号设备"选项,表就是空的。否则它就包含有信号分配。如果,通过重复运行报警记录向导,你取消激活了" 连接声音信号设备"选项 ,数据库表的内容被删掉,但表本身被保留。
o "@HornReset" 通过组确认实现的多重确认
在这样的情况下,变量的被设置为不变。经过点击“acknowledge horn”按钮确认“Horn”后,变量“@HornReset”被直接重置为“0”,然后被迅速的再次设置为“1”。
? 如果信号变量经过在报警控件中确认所有相关报警被重置或者脚本直接重置变量,在这样的操作下计算机的声音信号被确认(关闭),但是在这种情况下“@HornReset”不会被设置为“0”。 这样,在某一台计算机,为了实现多重确认的计算机配置收不到信号已经被确认的信息。在这样的情况下,为多重确认配置的计算机的信号传输不能够被确认(关闭)。多重确认只能在分别点击“acknowledge horn” 按钮后起作用。
? 当您改变实现多重确认的过程,定义的确认组和确认变量将丢失。
? 根据多重确认使用的过程的不同,内部变量"@HornReset" 的行为不同:
o "@HornReset"没有多重确认或者使用确认变量实现的确认组
当信号传输状态(信号模板或者WAV文件的输出)变为“1”,变量"@HornReset"的值从“0”变到“1”。经过点击“acknowledge horn”按钮确认信号传输,"@HornReset"被重置。
o 设置信号变量
当符合过滤标准的消息到来时,信号变量的状态从“0”变到“1”。
o 重置消息变量
当所有的按照预先设置信号变量的过滤标准配置的消息被确认后,信号变量的状态从“1”改变为“0”。当经过“acknowledge horn”按钮,“Horn”被分别确认后,信号变量同样会给重置。 . 在运行模式,在基本过程控制的按钮设置后,这个按钮能够使用。
主意:
在运行模式,信号变量自动拥有已配置消息类别的报警状态,只要内部系统变量“@HornSettingTagsActive” 的值为“1”,默认的情况,这个值在变量管理器中被初值化为1。
如果,例如,系统变量的值从“0”设置为“1”并且此刻已经有消息到达,这样将引起一个声音输出,信号变量没有被立即置位,因此声音输出将不会被立即触发。信号变量和声音输出只有在一个消息再次到来或者重新启动“Horn”才会被触发。您可以通过设置内部系统变量“@RestartHorn” 为“1”来重新启动“Horn”。当“Horn”被重新启动后,系统自动重置系统变量“@RestartHorn”的值为“0”。