Wincc flexible如何创建报警系统
- 格式:ppt
- 大小:3.62 MB
- 文档页数:39
如何在WINCC在做单个报警触发对应单个报警声音
在WinCC中,可以通过配置报警触发器来实现单个报警触发对应单个报警声音的功能。
下面将详细介绍如何进行配置。
1.创建需要监控的变量
在WinCC项目中创建需要监控的变量。
例如,创建一个名为"AlarmTag"的变量。
2.创建报警触发器
3.配置报警触发器
在报警触发器列表中选中要配置的报警触发器,并点击右键,在上下文菜单中选择"Properties..."。
在报警触发器属性对话框中,选择"Actions"选项卡。
4.设置报警声音
在报警触发器属性对话框的"Actions"选项卡中,点击"New..."按钮以添加一个新的动作。
在动作类型下拉菜单中选择"Play alarm sound file"选项,然后点击"..."按钮选择要播放的报警声音文件。
5.配置报警条件
6.保存配置
点击报警触发器属性对话框中的"OK"按钮保存配置。
通过以上步骤,配置就完成了。
当监测的变量"AlarmTag"的值满足设定的触发条件时,报警触发器会自动触发,并播放指定的报警声音文件。
注意:在WinCC项目编译和运行前,确保报警声音文件存在于正确的位置,并已正确配置报警触发器的声音文件路径。
WinCC中使⽤脚本实现报警WinCC中使⽤脚本实现报警wincc 2009-01-19 14:30:04 阅读99 评论0 字号:⼤中⼩在6.2⾥,新建⼀个画⾯,两个按钮,⼀个开始播放声⾳(循环播放)按钮,⼀个停⽌播放按钮(没次按钮将循环播放,退出wincc同样在播放),试验成功了,就是第⼀次反应很慢,第⼀次成功报警后,之后在调⽤就快了。
开始播放按钮代码。
#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()DWORD SND_ASYNC=0x0001;DWORD SND_LOOP=0x0008;//循环播放sndPlaySoundA("d:\\致爱丽丝.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;//停⽌播放sndPlaySoundA(NULL,SND_ASYNC); 00000000000000000000000000000000000000000000000000积累—WinCC报警实例wincc 2009-01-19 14:33:28 阅读458 评论0 字号:⼤中⼩这是⽹友给的实际⼯程中的例⼦,以后做项⽬使⽤时可以仔细研究⼀下,再次感谢那位热⼼的⽹友,我贴出来供⼤家学习:在WinCC全局脚本编辑器中完成,达到了语⾔报警的预期效果。
具体步骤如下:A.监控系统所在项⽬创建⽂件夹Voices,所有的语⾳报警⽂件存储在该⽂件夹。
winccflexible报警事件可在屏幕上显示,还可以将报警事件记录下来
注意:只有TP270、OP270及以上的HMI设备才有报警记录功能。
组态练习:
S7-300的MW0第0位、第1位分别代表1号风机故障、2号风机故障;两个故障属于错误类别,将其记录到“报警记录_1”中;
报警视图中显示“报警记录_1”的内容,同时用EXCEL查看报警记录文件的内容。
第一步:选择左边项目工具栏--通讯--连接,建立一个S7-300的连接
第二步:双击通讯下的“变量”,在变量中建立一个变量,名称为“风
机故障”,连接为“连接_1”,数据类型
“word”,地址为MW10。
如下图:
第三步:在报警管理--双击离散量报警,建立两个文本“风机故障1”与“风机故障2”,类别“错误”,
触发变量“MW10”,触发器位0与1。
(这里注意触发器位0-7表示对应为M11.0--M11.7;8-15对应为M10.0--M10.7)
第四步:历史数据--报警记录,名称“报警记录_1”;存储位置“文件-CSV(ASCII)”,路径默认,记录方法“循环记录”,记录数--自己设(这里设10),其它默认。
属性--设置--勾选“记录报警文本和出错位置”
第五步:在设置--报警类别中,记录条目下选择先前建立的变量“报警记录_1”。
仿真组态。
报警记录在Wincc中可以组态事件的报警,组态事件报警基本上可以分为两个步骤。
1.在报警编辑器中设置报警的各种类别,包括上限下限值触发的模拟量报警,还有通过消息变量触发的报警例如:开关量的报警。
2.通过对报警控件的设置实现报警显示。
在画面编辑器中插入报警记录控件,报警控件具有很多的功能。
包括报警显示,对报警的确认,报警的自动归档,报警的查询等等。
首先组态一个模拟量报警,并通过此实例来说明状态变量,确认变量的定义及用法。
在下一个实例中说明消息变量的使用。
模拟量报警新建个项目命名为alarmtext点击创建按扭打开报警记录编辑器,我们可以看到报警记录的主画面,包括消息块,消息类别,组消息,和归档组态。
首先组态报警。
组态报警就是设置报警消息的一些内容,包括时间,日期。
报警地点,报警消息,产生报警的当前值以及报警的类别!报警消息的时间,日期对应消息块中的系统块。
报警地点,报警消息对应消息块的用户文本块。
当前值对应过程值块。
故障报警对应消息类别。
所以我们开始建立组态。
一.添加系统快。
在消息块的系统快点击右击添加/删除添加系统快我们可以看到系统已将编号,日期,时间选中。
我们还可以添加左侧的系统快。
但我们只使用编号,日期,时间选项。
点击确定按钮。
我们看到所选的系统快已经显示出来二.添加用户文本块。
用户文本块采用同样的方法添加所需的块。
我们采取默认选择的错误点和消息文本.点击确定订按钮。
为了能使报警信息显示更多内容修改消息文本和错误点的字符长度改为30.双击消息文本,错误点修改。
三.添加过程值块将过程值块中的过程值1,过程值2,过程值3添加到右侧如图。
点击确定按钮。
我们可以成功的添加过程值1. 过程值2. 过程值3.四.在消息类别中设置报警消息的颜色!设置报警的进入,离开,已确认的文本颜色,与背景颜色。
我们设置的颜色如图所示。
点击确定这样我们已经组态好了一个报警。
我们也可以使用系统向导来组态报警由于操作简单这里就不加诉说了。
报警记录在Wincc中可以组态事件的报警,组态事件报警基本上可以分为两个步骤。
1.在报警编辑器中设置报警的各种类别,包括上限下限值触发的模拟量报警,还有通过消息变量触发的报警例如:开关量的报警。
2.通过对报警控件的设置实现报警显示。
在画面编辑器中插入报警记录控件,报警控件具有很多的功能。
包括报警显示,对报警的确认,报警的自动归档,报警的查询等等。
首先组态一个模拟量报警,并通过此实例来说明状态变量,确认变量的定义及用法。
在下一个实例中说明消息变量的使用。
模拟量报警新建个项目命名为alarmtext点击创建按扭打开报警记录编辑器,我们可以看到报警记录的主画面,包括消息块,消息类别,组消息,和归档组态。
首先组态报警。
组态报警就是设置报警消息的一些内容,包括时间,日期。
报警地点,报警消息,产生报警的当前值以及报警的类别!报警消息的时间,日期对应消息块中的系统块。
报警地点,报警消息对应消息块的用户文本块。
当前值对应过程值块。
故障报警对应消息类别。
所以我们开始建立组态。
一.添加系统快。
在消息块的系统快点击右击添加/删除添加系统快我们可以看到系统已将编号,日期,时间选中。
我们还可以添加左侧的系统快。
但我们只使用编号,日期,时间选项。
点击确定按钮。
我们看到所选的系统快已经显示出来二.添加用户文本块。
用户文本块采用同样的方法添加所需的块。
我们采取默认选择的错误点和消息文本.点击确定订按钮。
为了能使报警信息显示更多内容修改消息文本和错误点的字符长度改为30.双击消息文本,错误点修改。
三.添加过程值块将过程值块中的过程值1,过程值2,过程值3添加到右侧如图。
点击确定按钮。
我们可以成功的添加过程值1. 过程值2. 过程值3.四.在消息类别中设置报警消息的颜色!设置报警的进入,离开,已确认的文本颜色,与背景颜色。
我们设置的颜色如图所示。
点击确定这样我们已经组态好了一个报警。
我们也可以使用系统向导来组态报警由于操作简单这里就不加诉说了。
wincc flex多报警画面如何处理
winccflex有多套系统,每套系统都做有一个报警画面,想对应的画面只显示本系统的报警,不想把所有系统的报警都显示出来,怎么个做法呢。
最佳答案
方法如下:
1.在“报警管理”--“设置”--“报警类别”中添加几个报警类别,比如A,B,C……,里面的颜色设置根据你的实际情况设置。
2.在你的每条报警(比如离散量报警)的类别属性选择各自的类别,比如报警1,2,3想要显示在第一套系统中,选择A类别……
3.在你的报警画面中添加“报警视图”来显示你的报警,在每个系统的报警视图的属性“常规”--”报警类别”中勾选各自需要显示的报警类别即可。
WinCC语音报警说明1、需要建立一个语音数据库,用来保存需报警的语音文件名,打开SQL的“EnterpriseManager”,如下图所示:新建一个数据库,名为“comm”,如下图所示:2、修改comm数据库的属性,将Model改为Simple,勾选Auto Shrink,如下所示:3、新建一张数据表sound,如下图所示:表的结构如下所示:保存,名为“sound”,如下图所示:关闭Sql。
4、打开Windows的控制面板-> 管理工具-> 数据源(ODBC),如下图所示:点击“添加”按钮:选中SQL Server,点击“完成”.在名称中输入comm,在服务器中选择本机的WinCC,然后点击“下一步”:默认选择,点击“下一步”:选中“更改默认的数据库为”,选择comm数据库,点击“下一步”:默认选择,点击“完成”:点击“测试数据源按钮”:出现“测试成功!”时,说明ODBC数据源添加OK,点击“确定”即可:5、打开WinCC的报警记录,将需要报警的项选中“触发一个动作”,如果想让变量在下降沿报警,就还要选中“是在下降沿创建”,如下图所示:6、打开WinCC的全局脚本,添加一个项目函数AddSoundToDatabase,代码如下:void AddSoundToDatabase(char* DatabaseName,char* TableName,char* Text){__object *db, *rs;char sql[500];db = __object_create("ADODB.Connection");rs = __object_create("ADODB.Recordset");if(db!=NULL){sprintf(sql,"DSN=%s",DatabaseName);db->Open(sql);if(db->State!=0){sprintf(sql,"INSERT %s VALUES (1,'%s')",TableName,Text);rs->Open(sql,db,1);}}db->Close();__object_delete(rs);__object_delete(db);}如下图所示:7、当变量“aaa”由0变成1时,就会触发一个动作,执行WinCC内部的GMsgFunction,我们需要修改这个脚本。
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\\Windows NT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP); elsesndPlaySoundA(NULL,SND_ASYNC);//sndPlaySoundA("C:\\windows\\media\\office97\\laser.wav",SND_ASYNC|SND_LOOP);}return 1;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。