wincc60的horn声音报警的使用.docx

上传人:b****7 文档编号:10720017 上传时间:2023-02-22 格式:DOCX 页数:10 大小:610.77KB
下载 相关 举报
wincc60的horn声音报警的使用.docx_第1页
第1页 / 共10页
wincc60的horn声音报警的使用.docx_第2页
第2页 / 共10页
wincc60的horn声音报警的使用.docx_第3页
第3页 / 共10页
wincc60的horn声音报警的使用.docx_第4页
第4页 / 共10页
wincc60的horn声音报警的使用.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

wincc60的horn声音报警的使用.docx

《wincc60的horn声音报警的使用.docx》由会员分享,可在线阅读,更多相关《wincc60的horn声音报警的使用.docx(10页珍藏版)》请在冰豆网上搜索。

wincc60的horn声音报警的使用.docx

wincc60的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时选择“自定义安装〞,已经安装了就选择“安装卸载组件〞,组件栏中选择“选项〞,右边栏子选项选择“Basic 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中。

声音与变量连接,复位时它也能复位

回答者:

qingzi-中级技术员  第6级 2009-5-21 21:

15

可以再plc中,几个报警触发一个变量让他置位。

上升沿触发变量,复位按钮让他复位。

然后再弄到wincc中。

声音与变量连接,复位时它也能复位.  首先在变量管理器的外部变量里建立一个变量例如:

HMI_ALARM_RESET,地址位100.1,在画面中插入报警控件,编写脚本确认信息:

  #include "apdefap.h"  void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)  {  AXC_OnBtnSinglAckn(lpszPictureName,"alarm1");  SetTagBit("HMI_ALARM_RESET",1); //Return-Type:

 BOOL //返回类型:

BOOL   // WINCC:

TAGNAME_SECTION_START  // syntax:

 #define TagNameInAction "DMTagName"  // next TagID :

 1  // WINCC:

TAGNAME_SECTION_END

  // WINCC:

PIAME_SECTION_START  // syntax:

 #define PiameInAction "PictureName"  // next PicID :

 1  // WINCC:

PIAME_SECTION_END

  }

WinCC报警发声简单方法可以利用WinCC软件自带的组件HORN来实现,具体使用方法可以通过-帮助-进展学习,十分方便,如果组件HORN自带的WAV文件没有适宜的,可以自己进展添加.

另一种方法通过C脚本编写,如下:

 

全局脚本,时基为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 

 

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

我在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 文件) 的全路径。

 参数 char* hmode:

总为 0。

 参数 DWORD dwflag:

SND_SYNC = 0x0000:

声音文件播放一次,该脚本一直等到播放完毕SND_ASYNC = 0x0001:

声音文件播放一次,同时并行处理该脚本SND_NODEFAULT = 0x0002:

如果未找到该声音文件,如此不播放默认值,而是什么也不播放。

SND_LOOP = 0x0008:

重复该声音文件直到下个 PlaySoundA 调用 (只能通过 0x0001) => 总是指定 0x0009。

这些参数也可通过逐位逻辑‘或’进展组合 (如:

SND_ASYNC | SND_LOOP)

 

实现步骤:

1、先建立个内部二进制变量,如:

Horn_Alarm

2、打开Horn,具体配置如图

3、点击完成,搞定!

汽化冷去操作画面增加声音报警的方法 

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

由于原来的声音报警画面没有备份,这次重新添加,发现存在几个要点需要注意,增加声音报警的步骤总结如下:

 

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里计算机属性中的启动选项中将全局脚本系统选中,然后再重新激活运行。

这样声音报警就能投入运行了。

 

7、在操作画面上创建一个控件,连接到已经创建的在全局动作中使用的内部变量上,这样单击控件按钮就可以实现开启和暂停功能的效果,如图5。

 

 

图5 开启功能和关闭功能时的显示 

以上就是增加声音报警方法,另外,需要一个准备好的音频文件,放在相应

 

的文件夹中,以便于调用。

具体使用是否适宜,还需要进一步调试。

 

      附录:

 使用中的程序 

#include "apdefap.h" int gscAction( void ) { 

 #pragma code("winmm.dll") 

BOOL PlaySound(LPCTSTR lpszSound,HMODULE hmodule,DWORD dwsound ); 

BOOL ss=( GetTagBit("S11.8")==1|| GetTagBit("S12.8")==1|| GetTagBit("S11.7")==1|| GetTagBit("S11.6")==1|| GetTagBit("S11.4")==1|| GetTagBit("S11.5")==1|| GetTagBit("S12.6")==1) #pragma code( ) 

if(GetTagBit("111")==1&&ss==1) { 

PlaySound("d:

\\qhhmi11-7-11\\ringout.wav",NULL,8 ); } return 0; 

 

不必全新重安装WinCC,补装未安装的组件。

重新运行WinCC安装程序,选择“自定义〞,勾选尚未安装的组件安装即可。

如果不清楚尚未安装的组件的内容,可以通过默然安装界面一比照就知道。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1