WinCC -- 组态报警和消息 -- 声音报警和消息
WINCC实现声音报警

在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;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。
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 声音报警设置办法

WINCC 声音报警设置办法
1、建立一个WINCC的内部变量,例如建立内部变量―――state。
2、修改“全局脚本”条目下的“标准函数”条目下的“Alarm”目录下的
“GmsgFunction”这个WINCC自带函数的内容,在其中添加―――
“ SetTagBit(“state”,1 ); ”这条语句并保存退出。
3、组态“报警记录”,在“模拟量报警”目录下添加需要报警的变量消息行,右
击该消息行,打开该变量消息行的“属性”对话框,把“触发一动作”前的选项框选中,保存。
4、组态“全局脚本”条目下的“全局动作”,建立一个用于发出声音的全局动作
脚本(例如叫“报警.PAS”,可以复制别的现有项目中的现成脚本来修改得到),在该脚本里面主要是编写有根据“state”变量的“1”或“0”状态来执行一条播发声音文件的语句;再建立一个用于“自动定时消除声音”的全局脚本(例如叫“消音.PAS”),在该脚本里面主要是有使变量“state”进行复位(置“0”)的语句。
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
WinCC flexible ES -- 创建HMI组态 -- 组态报警和消息

z Counts up one for each alarm message that arrives z Counts down one for each alarm message that goes z Is zero when all the errors messages arrived have gone again.
/CN/llisapi.dll/21976869?func=ll&objId=21976... 2009-12-1
Siemens - Industry Automation and Drive Technologies - Service& Support - Automa... Page 4 of 35
The message indicator has two states:
z Flashing: as soon as at least one unacknowledged message is present. z Static: when all alarm messages have been acknowledged, but at least one of them has not yet gone.
显示订货号
描述: 如下 FAQ 描述了如何直接在面板上显示变频器的错误消息和报警。
请参照附件1的PDF文件中的说明。
附件1: 29522676_Fehlermeldungen_Warnungen_darstellen_e.pdf ( 1176 KB ) 附件和下载:
1. 错误列表参见条目 ID: 31906972.
Siemens - Industry Automation and Drive Technologies - Service& Support - Automa... Page 2 of 35
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文件,播放完毕后将控制转移回你的应用程序中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/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 通过用户自定义逻辑设置/重设信号变量 信号变量的值没有必要必须连接到消息级别的报警状态。设置/重设信号变量的逻辑同样也可以在用 户指定逻辑中编程。
显示订货号 如何设置带有声音的信号消息?
说明: "Horn"编辑器用来配置与报警相关事件信号模板和PC声卡的输出。Horn编辑器是WinCC选件“基本过程控 制”的一个组件,自WinCC V6.0版本以后,“基本过程控制”不需要任何附加的授权,默认获得。
关于“Horn”主题的信息可以通过以下方式获得
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 7 of 24
图 5:报警编辑器中组态“信号分配”标签 9. 打开“信号分配”标签。该标签中,先前选择的变量与信号模块的输出相连接(输出1、2或3),或 者,如实例所示,通过声卡为信号的声输出选择语音文件 (*.WAV)。在每行中选择两个内部变量用 于报警和警告;通过变量选择对话框的“Tag”栏选择。然后在“Sound”栏中点击声音文件的选择对 话框。可根据需要,选择标准PCS 7声音文件或者您自己的语音WAV文件。 注意事项: 如果选择语音文件的绝对路径(例如C:\SIEMENS\WinCC\Sound\Horn.wav),记得在装载项目时目标 PC中需要有同样的路径。我们推荐将文件保存在自己的项目路径中。这样就可以在保存项目的同时 保存语音文件,从而路径始终正确。
注意: 只有在内部系统变量“@HornTriggeringSignalsActive”是“1”的情况下,输出才会被执行或WAV文件被 播放,在默认的情况下,这个值在变量管理器中作为初始值被置位。
在运行模式中用两种不同的途径使一个变量被赋值。
z 信号变量 在运行模式中,一个信号变量的值能够直接连接到一个配置消息的报警状态。将信号变量赋值到消息 可以在“Horn”编辑器中的“Message assignment”菜单中配置。这个参数对话框提供了连接一个信 号变量到指定的报警状态的不同的过滤标准(消息类别,优先级,数据源,范围,事件,允许)。
z WinCC帮助系统下“Options > Options for Process Control > Horn” z 配置手册“SIMATIC Process Control System PCS 7 V7.0 Operator Station”。 该手册可在条目ID
24449737.下获得。
配置horn 在WinCC变量管理编辑器中,您创建几个或几个数据类型为二进制的信号变量,在“Horn”编辑器中,每一 个信号变量被指派到一个信号模板或者“WAV”文件。信号模板的输出能够被连接到一个喇叭或者另外的信 号转送装置。如果在运行模式中一个信号变量的值为“1”,则相对应于该信号变量的信号模板输出或者配 置的WAV文件将被播放。
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 4 of 24
5. 双击WinCC Explorer中的Horn图标打开报警编辑器。在“信号分配”标签中的事件类的下拉菜单中 选择“报警”,下一行选择“警告”。插入需要的其他事件类。
部变量(也可以创建/选择新的变量组)。
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 3 of 24
{ "@HornReset" 通过组确认实现的多重确认 在这样的情况下,变量的被设置为不变。经过点击“acknowledge horn”按钮确认 “Horn”后,变量“@HornReset”被直接重置为“0”,然后被迅速的再次设置为“1”。
z 如果信号变量经过在报警控件中确认所有相关报警被重置或者脚本直接重置变量,在这样的操作下 计算机的声音信号被确认(关闭),但是在这种情况下“@HornReset”不会被设置为“0”。 这样, 在某一台计算机,为了实现多重确认的计算机配置收不到信号已经被确认的信息。在这样的情况 下,为多重确认配置的计算机的信号传输不能够被确认(关闭)。多重确认只能在分别点击 “acknowledge horn” 按钮后起作用。
在SIMATIC PCS 7 / WinCC V6.x下如何组态单站、服务器、冗余服务器和客户OS站的Horn编辑器?
说明: 下列组态过程基于SIMATIC PCS 7 V6.0版本。因此,适用于所有的PCS 7 V6.0 和WinCC V6.0以上的版 本。
注意: 从PCS 7 V7或WinCC V6.2开始,系统增加了一些功能。附录中详细介绍了这些附加功能。 在SIMATIC PCS 7 V6.0中,通过Horn编辑器为单站、服务器、冗余服务器和客户OS站配置声卡或信号模 块。该实例描述了如何组态报警设备的报警和警告事件类来触发语音信号。下述内容包括了工程站的所有 组态(包括冗余服务器和OS客户端组态及消息确认)。
图 1:报警设备编辑器中为后续连接创建内部变量 4. 注意事项: 该程序仅用于在连接的OS客户站上进行组确认的情况下。这时,需要其他的变量。在同一组中创建 该内部变量并确保对这些变量设置为“项目范围更新”。
图i.dll/24740744?func=ll&objId=24740... 2008-3-19
图 3:在“信号分配”标签中为报警编辑器组态和选择事件类。 6. 通过“变量”栏中的变量选择对话框选择内部变量,该变量先前已被创建用于报警和警告事件类。 在后面通过这些变量的赋值过程控制声信号的触发。
/CN/llisapi.dll/24740744?func=ll&objId=24740... 2008-3-19
主意: 在运行模式,信号变量自动拥有已配置消息类别的报警状态,只要内部系统变量
“@HornSettingTagsActive” 的值为“1”,默认的情况,这个值在变量管理器中被初值化为1。 如果,例如,系统变量的值从“0”设置为“1”并且此刻已经有消息到达,这样将引起一个声音输出, 信号变量没有被立即置位,因此声音输出将不会被立即触发。信号变量和声音输出只有在一个消息
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 5 of 24
图 4:在“信号分配”标签中选择报警编辑器的内部变量 7. 在“信号分配”标签中可从下拉菜单中使应用用户权限设置,并且此处必须按优先级激活事件变 量。您可以在文本末列出的文档中找到更多信息。 8. 在该例的报警编辑器中组态“信号分配”标签,如下图所示。
1. 按照PCS 7 V6.0组态手册在SIMATIC Manager中组态所有单站、服务器、冗余服务器和客户OS 站。
2. 在工程站上通过WinCC Explorer打开 SIMATIC PCS 7 单站或服务器OS站。 3. 切换到WinCC Explorer中的“内部变量”管理,在“Horn”变量组中分别为报警和警告事件类创建内
{ 设置信号变量 当符合过滤标准的消息到来时,信号变量的状态从“0”变到“1”。
{ 重置消息变量 当所有的按照预先设置信号变量的过滤标准配置的消息被确认后,信号变量的状态从“1”改 变为“0”。当经过“acknowledge horn”按钮,“Horn”被分别确认后,信号变量同样会给重
置。
. 在运行模式,在基本过程控制的按钮设置后,这个按钮能够使用。
Siemens - Automation and Drives - Service& Support - Automation Service, Automat... Page 1 of 24
返回列表
WinCC -- 组态报警和消息 -- 声音报警和消息