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\\musi狐假虎威近义词
c\\06.wav",NULL,1);SetTagDWor d("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* l pszPropertyName) { AXC_OnBtnSinglAckn(lpszPictureName,"alarm1"); SetTagBit("HMI_ALA RM_RESET",1); //Return-Type: BOOL //返回类
型:BOOL // WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMT agName" // 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 Pl aySou去年的树课文
ndA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByt e("TAG")==1) 或 if (GetTagByte("TAG")>500)&一把雨伞英语
nbsp; {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, ch ar* hmode, DWORD dwflag );#pragma code()PlaySoundA("E:\\Projects-zrj\\Winc cStandard\\zrj\\AlarmMp3\\alarm2.wav",NULL,1);/*PlaySoundA 函数的说明:
参数char* pszSound:指定声音文件(*.wav 文件秘书实务
) 的全路径。参
数char* hmode:总为0。参数DWORD dwflag:SND_SYNC = 0x0000:声音文件播放一次,该脚本一直等到播放完毕SND_ASYNC = 0x0001:声音文件播放一次,同时并行处理该脚本SND_NODEFA
ULT = 0x0002:如果未找到该声音文件,如此不播放默认值,而是什么也不播放。SND_LOOP = 0x0008:重复该声音文件直到下个PlaySoundA 调用(只能通过0x0001) => 总是指定0x0009。
这些参数也可通过逐位逻辑‘或’进展组合(如:SND_ASYNC | SND_LOOP)
实现步骤:
1、先建立个内部二进制变量,如:Horn_Alarm
2、打开Horn,具体配置如图
3、点击完成,搞定!
汽化冷去操作画面增加声音报警的方法
为了保证春节期间的稳定运行,现在汽化冷却的操作画面的声音报警已经增加完毕。由于原来的声音报警画面没有备份,这次重新添加,发现存在几个要点需要注意,增加声音报警的步骤总结如下:
1、先确认计算机上安装的声卡驱动是否正常,确认方法,可以通过直接播放计算机内的音频文件,是否能正常播放。另外在声音和音频设备属性卡里是否有默认设