WinCC报警的设置
报警消息系统是SCADA系统中非常重要的组成部分,用来监视自动化系统的异常和事件,借助于可视或有声提示,帮助操作人员快速发现、定位、解决处理故障和错误,从而有效减少宕机时间和生产事故的发生,并能通过消息归档,追溯报警和事件,进而分析事故起因、认定事故责任等。WinCC提供了功能强大的报警消息系统。
在实际项目组态中,也许大家对报警的应用都有自己的看法或疑问,如何设置和灵活使用WinCC 消息报警等,这些将是这次交流的重点。
网友et2008:我觉得WinCC的报警简单显示挺方便,其他参数挺多,没怎么用过。
另外,用wincc5.1的时候启动列表只要选报警,经常激活不了,原来是和Step7 v5.2兼容性问题,在Step7v5.2的光盘中安装一个补丁就OK了。后来安装WinCC的时候都要先查和Step7的兼容性。
说起报警脚本,报警来时播放声音的全局脚本以前经常用到啊:
BOOL GMsgFunction( char* pszMsgData)
{
#pragma code("winmm.dll")
BOOL PlaySound(LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound);
#define SND_FILENAME 0x00020000L
#define SND_ASYNC 0x0001
#pragma code()
BOOL bRet=FALSE;
MSG_RTDATA_STRUCT mRT;
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
if( pszMsgData != NULL )
{
sscanf( pszMsgData, "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d",
&mRT.dwMsgNr, // Meldungsnummer
&mRT.dwMsgState, // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM
&mRT.stMsgTime.wYear, // Tag
&mRT.stMsgTime.wMonth, // Monat
&mRT.stMsgTime.wDay, // Jahr
&mRT.stMsgTime.wHour, // Stunde
&mRT.stMsgTime.wMinute, // Minute
&mRT.stMsgTime.wSecond, // Sekunde
&mRT.stMsgTime.wMilliseconds, // Millisekunde
&mRT.dwTimeDiff, // Zeitdauer der anstehenden Meldung
&mRT.dwCounter, // Interner Meldungsz?hler
&mRT.dwFlags, // Flags( intern )
&mRT.wPValueUsed,
&mRT.wTextValueUsed );
if(mRT.dwMsgNr==1)
{ //printf(" No 1 alarm\r\n");
bRet=PlaySound("C:\\mm.wav",NULL,SND_FILENAMESND_ASYNC);
if(bRet) {MessageBeep((WORD)-1);}
}
}
。。。
return( TRUE );
}
大概从V6以后,可以使用horn了,使用起来较方便,点选即可。
网友四书五经:楼上的方法很不错,呵呵,不过每条报警都要按下图设置:
"触发一个动作"要选上,这样才会触发GMsgFunction函数。
我采用的方法是选择"控制中央信令设备",这样设置后,当报警触发时会触发一个设置好的变量。如下图进行设置:
上图中“变量”里选择一个变量,当这种类型的报警被触发后,将触发这个变量。根据这个变量就可以在脚本中进行声音处理了。
当然这个变量如果是一个外部TAG,然后用这个外部TAG去触发一个电铃或者报警灯应该更好。呵呵,我觉得WINCC的设计者设计初衷应该就是这样,这样的话结合报警的确认功能,可以更好的实现报警。也就是说当报警出现时,外部TAG有效,电铃响,而且如果不进行报警确认,则电铃会一直响,直到所有报警被确认(所有报警被触认后,上述中央信令信号将无效)为止。
报警隐藏功能在生产过程发生危险的时候,尤其能体现出它的优点:
当生产过程不正常时,系统可能会短时间产生大量的报警和事件,其中有些是关键的报警,有些是不太重要的提示消息,但它们通常会挤满整个报警窗口,大量消息同时出现可能导致操作员手足无错,顾此失彼,来不及响应最重要的消息,错过处理问题的最佳时间或忙中出错,造成严重的后果。历史上曾经发生过类似的非常严重的事故,比如美国的三里岛核电站事故。
通过使用报警隐藏功能,可以让一些不重要的消息暂时不显示,可以有效地帮助操作员从容的处理异常情况。
与此类似的功能是报警锁定\解除锁定,它可以彻底屏蔽指定的消息(比如指定某些消息组、某些消息类别或单个消息等),使其不再归档不再显示。当需要时可再解除锁定。适合于:局部检修调试等状况。
网友凌波微步:最近比较忙,没有时间发帖子,根据PCS7的使用经验,现简单的谈谈我的看法,按照楼主的提示如下:
1.报警可视:这个我想大家都很熟悉了,一般都会在监控画面的最上方设置个“报警条”,这个“报警条”显示最新的报警信息,当新报警出线,会以“闪烁”方式提示;具体的报警信息查询,我们一般都会制作一套单独的报警画面显示不同的报警信息,如:确认的信息,系统报警,错误报警,诊断信息等等,这些就以个人的喜好以及客户的要求而定了;
2.报警有声提示:目前用的最多的当然是HORN的方式;组态简单,又无需另加脚本。报警的有声提示往往是计算机声卡+音箱,或者外加扬声器,通过PLC输出DO触发扬声器发声;
3.快速发现:
(1)报警条
(2)ICON闪烁及颜色变化
(3)声音提示
4.定位:“报警条”旁边设置定位按钮,当最新的报警产生时,可通过这个定位按钮跳转到相应的画面,并且报警的设备位号以“高亮”显示,同时设备的ICON以颜色变化及闪烁功能提示;
5.解决处理故障和错误:这个工作就需要在ALARM LOGGING做好信息提示文本编辑。再一个就是诊断信息的读取以及报警显示,这个是解决处理问题的重要信息。
6.消息归档:报警控件+ALARM LOGGING的方式可以进行报警归档以便问题查找和责任追溯;
7.追溯报警和事件:消息归档+操作记录的归档信息=分析事故起因、认定事故责任。
在实际项目组态中,也许大家对报警的应用都有自己的看法或疑问,如何设置和灵活使用WinCC 消息报警等,这些将是这次交流的重点。
网友et2008:我觉得WinCC的报警简单显示挺方便,其他参数挺多,没怎么用过。
另外,用wincc5.1的时候启动列表只要选报警,经常激活不了,原来是和Step7 v5.2兼容性问题,在Step7v5.2的光盘中安装一个补丁就OK了。后来安装WinCC的时候都要先查和Step7的兼容性。
说起报警脚本,报警来时播放声音的全局脚本以前经常用到啊:
BOOL GMsgFunction( char* pszMsgData)
{
#pragma code("winmm.dll")
BOOL PlaySound(LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound);
#define SND_FILENAME 0x00020000L
#define SND_ASYNC 0x0001
#pragma code()
BOOL bRet=FALSE;
MSG_RTDATA_STRUCT mRT;
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
if( pszMsgData != NULL )
{
sscanf( pszMsgData, "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d",
&mRT.dwMsgNr, // Meldungsnummer
&mRT.dwMsgState, // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM
&mRT.stMsgTime.wYear, // Tag
&mRT.stMsgTime.wMonth, // Monat
&mRT.stMsgTime.wDay, // Jahr
&mRT.stMsgTime.wHour, // Stunde
&mRT.stMsgTime.wMinute, // Minute
&mRT.stMsgTime.wSecond, // Sekunde
&mRT.stMsgTime.wMilliseconds, // Millisekunde
&mRT.dwTimeDiff, // Zeitdauer der anstehenden Meldung
&mRT.dwCounter, // Interner Meldungsz?hler
&mRT.dwFlags, // Flags( intern )
&mRT.wPValueUsed,
&mRT.wTextValueUsed );
if(mRT.dwMsgNr==1)
{ //printf(" No 1 alarm\r\n");
bRet=PlaySound("C:\\mm.wav",NULL,SND_FILENAMESND_ASYNC);
if(bRet) {MessageBeep((WORD)-1);}
}
}
。。。
return( TRUE );
}
大概从V6以后,可以使用horn了,使用起来较方便,点选即可。
网友四书五经:楼上的方法很不错,呵呵,不过每条报警都要按下图设置:
"触发一个动作"要选上,这样才会触发GMsgFunction函数。
我采用的方法是选择"控制中央信令设备",这样设置后,当报警触发时会触发一个设置好的变量。如下图进行设置:
上图中“变量”里选择一个变量,当这种类型的报警被触发后,将触发这个变量。根据这个变量就可以在脚本中进行声音处理了。
当然这个变量如果是一个外部TAG,然后用这个外部TAG去触发一个电铃或者报警灯应该更好。呵呵,我觉得WINCC的设计者设计初衷应该就是这样,这样的话结合报警的确认功能,可以更好的实现报警。也就是说当报警出现时,外部TAG有效,电铃响,而且如果不进行报警确认,则电铃会一直响,直到所有报警被确认(所有报警被触认后,上述中央信令信号将无效)为止。
报警隐藏功能在生产过程发生危险的时候,尤其能体现出它的优点:
当生产过程不正常时,系统可能会短时间产生大量的报警和事件,其中有些是关键的报警,有些是不太重要的提示消息,但它们通常会挤满整个报警窗口,大量消息同时出现可能导致操作员手足无错,顾此失彼,来不及响应最重要的消息,错过处理问题的最佳时间或忙中出错,造成严重的后果。历史上曾经发生过类似的非常严重的事故,比如美国的三里岛核电站事故。
通过使用报警隐藏功能,可以让一些不重要的消息暂时不显示,可以有效地帮助操作员从容的处理异常情况。
与此类似的功能是报警锁定\解除锁定,它可以彻底屏蔽指定的消息(比如指定某些消息组、某些消息类别或单个消息等),使其不再归档不再显示。当需要时可再解除锁定。适合于:局部检修调试等状况。
网友凌波微步:最近比较忙,没有时间发帖子,根据PCS7的使用经验,现简单的谈谈我的看法,按照楼主的提示如下:
1.报警可视:这个我想大家都很熟悉了,一般都会在监控画面的最上方设置个“报警条”,这个“报警条”显示最新的报警信息,当新报警出线,会以“闪烁”方式提示;具体的报警信息查询,我们一般都会制作一套单独的报警画面显示不同的报警信息,如:确认的信息,系统报警,错误报警,诊断信息等等,这些就以个人的喜好以及客户的要求而定了;
2.报警有声提示:目前用的最多的当然是HORN的方式;组态简单,又无需另加脚本。报警的有声提示往往是计算机声卡+音箱,或者外加扬声器,通过PLC输出DO触发扬声器发声;
3.快速发现:
(1)报警条
(2)ICON闪烁及颜色变化
(3)声音提示
4.定位:“报警条”旁边设置定位按钮,当最新的报警产生时,可通过这个定位按钮跳转到相应的画面,并且报警的设备位号以“高亮”显示,同时设备的ICON以颜色变化及闪烁功能提示;
5.解决处理故障和错误:这个工作就需要在ALARM LOGGING做好信息提示文本编辑。再一个就是诊断信息的读取以及报警显示,这个是解决处理问题的重要信息。
6.消息归档:报警控件+ALARM LOGGING的方式可以进行报警归档以便问题查找和责任追溯;
7.追溯报警和事件:消息归档+操作记录的归档信息=分析事故起因、认定事故责任。
新闻详情