WINCC7.0组态报警声音演示过程
- 格式:doc
- 大小:4.06 MB
- 文档页数:13
如何在WINCC在做单个报警触发对应单个报警声音
在WinCC中,可以通过配置报警触发器来实现单个报警触发对应单个报警声音的功能。
下面将详细介绍如何进行配置。
1.创建需要监控的变量
在WinCC项目中创建需要监控的变量。
例如,创建一个名为"AlarmTag"的变量。
2.创建报警触发器
3.配置报警触发器
在报警触发器列表中选中要配置的报警触发器,并点击右键,在上下文菜单中选择"Properties..."。
在报警触发器属性对话框中,选择"Actions"选项卡。
4.设置报警声音
在报警触发器属性对话框的"Actions"选项卡中,点击"New..."按钮以添加一个新的动作。
在动作类型下拉菜单中选择"Play alarm sound file"选项,然后点击"..."按钮选择要播放的报警声音文件。
5.配置报警条件
6.保存配置
点击报警触发器属性对话框中的"OK"按钮保存配置。
通过以上步骤,配置就完成了。
当监测的变量"AlarmTag"的值满足设定的触发条件时,报警触发器会自动触发,并播放指定的报警声音文件。
注意:在WinCC项目编译和运行前,确保报警声音文件存在于正确的位置,并已正确配置报警触发器的声音文件路径。
wincc7.0中如何用上升沿触发音频输出,起到报警的作用想在工控机上装音响,设备停机就报警,这个该如何做?问题补充:不想用报警控件来触发让音响报警,除了这个之外还有别的办法吗?重点是在软件上如何编写指令使连接在工控机上的音响发声。
最佳答案其实不用horn报警器也是做出来。
上次试了试完全没有问题。
用wincc的全局脚本,做语音报警,1:用周期性1s做触发器2:当变量”报警”置1时,语音报警一直持续。
当变量”报警”置0时,语音报警停止继续。
程序如下:#include”apdefap.h”intgscaction(void){#pragmacode(“winmm.dll”)voidwinapiplaysounda(char*pszsound,char*hmode,dworddwfla g);#pragmacode()if(gattagbit(“报警”))playsounda(“c:\winnt.400\media\tada.wav”,null,0x1);return0;}注意:1:音乐地址为c:\winnt.400\media\tada.wav。
为\。
是不行的。
2:0x1也可以写成0x8.playsounda函数的说明:参数char*pszsound:指定声音文件(*.wav文件)的全路径。
参数char*hmode:总为0。
参数dworddwflag:snd_sync=0x0000:声音文件播放一次,该脚本一直等到播放结束snd_async=0x0001:声音文件播放一次,同时并行处理该脚本snd_nodefault=0x0002:如果未找到该声音文件,则不播放默认值,而是什么也不播放。
snd_loop=0x0008:重复该声音文件直到下个playsounda 调用(只能通过0x0001)=>总是指定0x0009。
#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内部变量的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报警控件,当报警消息到达后,会出现报警栏中,通过报警栏上的单个确认按钮或全部确认按钮确认到达的报警条目,当报警消息确认后报警声音停止。
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中的声音报警,也有不少的朋友在讨论这个话题,在这里写的是我在出差期间,需要在项目中用到的声音报警,并且实现自动触发,按钮关闭声音,再次自动触发的循环声音报警代码.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文件,播放完毕后将控制转移回你的应用程序中。
一、使用Horn报警器
WINCC软件“帮助”中有报警器用法的详细说明
Horn有关的系统变量
@RestartHorn
@Horn TriggeringSingalsActive 禁止或者运行播放声音文件@HornSettingTagsActive
@HornReset 可以用来确认报警,停止报警声音
开始组态
创建两个信号变量
在图形编辑器下报警记录下完成
打开报警器组态消息分配
组态信号分配(需要提前下载WAW格式的报警声音文件)
二、用C脚本播放WAV文件
组态:启动按钮字体-文本-启动效果-全局颜色方案-否颜色-背景颜色-绿色停止按钮字体-文本-停止效果-全局颜色方案-否颜色-背景颜色-红色为了监视程序运行,要插入智能对象
组态启动按钮C动作
#include”apdefap.h”
#pragma code(”Winmm.dll”)
VOID WINAPI PlaySoundA(char*pszSound,char*hmode,DWORD dwflag); #pragma code()
printf(“Start\r\n”);
PlaySoundA(“C:\\WINDOWS\\Media\\ALARM8.WAV”,NULL,0); printf(“End\r\n”);
组态启动按钮的SetTagBit
组态停止按钮的SetTagBit
三、用C脚本触发PC蜂鸣器
#include”apdefap.h”
#pragma code(”Kernel32.dll”)
BOOL Beep(DWORD dwFreq,DWORD dwDuration); #pragma code()
BOOL Beep(1000,100);。