wincc60的horn声音报警的使用.docx
- 文档编号:6041216
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:10
- 大小:610.77KB
wincc60的horn声音报警的使用.docx
《wincc60的horn声音报警的使用.docx》由会员分享,可在线阅读,更多相关《wincc60的horn声音报警的使用.docx(10页珍藏版)》请在冰点文库上搜索。
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安装程序,选择“自定义〞,勾选尚未安装的组件安装即可。
如果不清楚尚未安装的组件的内容,可以通过默然安装界面一比照就知道。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wincc60 horn 声音 报警 使用
![提示](https://static.bingdoc.com/images/bang_tan.gif)