关于西门子软件报警的设置个人总结 点击:4864 | 回复:7



门徒

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:37:39
楼主
关于报警功能,SIEMENS公司不管是用WinCC、或用STEP7WinCC、或用PCS7系统都可实现很强大而完善功能,但是每种报警组态方法各有特点,虽功能一样,但组态效率确不一样。现我就这三种系统实施报警功能的特点分析总结如下:

   1WinCC方式——报警功能主要是通过手动对WinCC项目中逐一组态需要过程变量(Process Tag)完成的。很显然,逐一组态过程变量(Process Tag)的效率不高、时间长、重复工作量大,且还容易出错。

   所以用这种方式组态报警只适用于组态报警变量较少的场合。既然手动逐一组态过程变量的效率不高,如果要组态的报警变量较多,我们一定会想到SIEMENS公司是否提供有一个组态报警模板,或报警功能块吗!且看如下。

   2STEP7WinCC方式——要高效组态报警功能不能仅依靠在WinCC中完成,还要利用STEP7编程软件,具体的说是利用STEP7系统功能库(SFB)中ALARMSFB33)、ALARM_8SFB34)、ALARM_8pSFB35)、和NOTIFYSFB36这几个系统功能块的选择和组合。ALARMSFB33)块能对单个变量组态报警;ALARM_8SFB34)块能对8个变量组态报警,不带关联变量;ALARM_8pSFB35)块也能对8个变量组态报警,但带关联变量(SD1SD10);NOTIFYSFB36)块用于PLC热启动(Warm Restart)时读取启动信息(如OB块的加载编号等),然后初始化一些报警信息,或在PLC开机瞬间抑制一些不必要的报警信息。

   ALARMSFB33)、ALARM_8SFB34)、ALARM_8pSFB35)系统报警功能块功能相当强大,如果在项目编辑器SIMATIC Manager中编译(Compile)你的OS项目后,不仅可以在WinCC项目中自动生成报警归档变量(即打开Alarm Logging可看到),还可在使用的ALARM报警功能块上,对某个报警变量单独指定报警消息类型(Message Class)、报警优先级(Priority)报警确认方式(Acknowledgement)、填入自己需要的字符串作为报警事件(Event),和报警消息文本(Info Text)。这样,当在WinCC激活运行(Activate)中触发产生报警后,不仅可以清楚的知道报警变量名、报警时间、报警来源的程序块名、报警源程序块放置路径,及报警事件类型、报警提示消息文本等,可谓一应俱全。特别适用于需对多个相同的生产运行设备进行监控报警组态(如多台风机、泵,多个压力容器等),报警组态效率极高。

由于ALARMSFB33)、ALARM_8SFB34)、ALARM_8pSFB35)系统报警功能块各有特点,用户需针对性的选择使用。鉴于篇幅原因,具体使用方法和步骤不再详述,可参阅相关技术文档。有兴趣的朋友我还可与其交流探讨。

   3PCS7方式——PCS7SIEMENS公司全面集成的自动化(TIA)软件版本。报警功能组态除了遵循上面讲述的“STEP7WinCC”实现方式外,PCS7方式还可组态报警块图标(Block Icon)。在SIMATIC Manager中编译OSCompile OS)后,组态的报警块图标(Block Icon)会在WinCC项目Graphics Designer中的Picture里自动生成,以用于放置在WinCC运行监控工艺画面中对应的检测点位置上直观地监控。

   这大大增强了报警使用功能,用户不仅可以在报警列表(Alarm List)中清晰的查阅报警源变量信息,还在监控工艺画面中看到对应的报警块图标(Block Icon)提供的报警提示信息。PCS7项目通常使用CFC工具在AS中组态项目程序。(关于在PCS7中组态报警块图标(Block Icon)方法步骤较多,具体不再详述,使用时参阅相关技术文档)

   总之,SIEMENS公司提供了丰富而强大的报警组态工具。仅靠OS侧的WinCC只能逐一对报警变量组态,要想高效、大批量的进行报警变量组态,更多的需要在AS侧的STEP7程序中多下功夫。由于过程控制与过程监视和监控密不可分,所以在设计报警时,只有将下位的过程控制部分AS程序与上位的监控组态OS程序相互融合考虑和规划,才能作设计出高效和优异的报警程序。

   这种上位监控操作软件(WinCC)与下位过程控制PLC的软件(STEP7)既可独立使用,又可相互融合使用的特点,正是体现出SIEMENS公司一贯倡导的全面集成自动化(TIA)的理念,也使得SIEMENS公司自动化产品使用范围广,应用灵活。所以SIEMENS公司STEP7WinCC相结合后,其产生的功效可不是简单的112




门徒

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:38:12
1楼

声音报警

打开Horn,在Message assignment选项页选定Message ClassError

定义一个Bool型的Tag此变量是内部变量,与报警变量没有关系;在Signal assingment选项页选定Tag为刚才定义的Bool型的Tag

Sound中选择要播放的.wav声音文件。运行时,只要Error类别的报警触发,

Bool型的Tag置位,.wav声音循环播放;

在报警控件中确认报警,.wav声音中止,也可以将Bool型的Tag复位,.wav声音中止。

Horn是基本过程控制(BPC)的组件,标准安装是不会安装的。

安装WinCC时选择“自定义安装”,已经安装了就选择“安装卸载组件”,

组件栏中选择“选项”,右边栏子选项选择“Basic Process Control”安装即可。

门徒

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:39:14
2楼

Wincc报警过滤

 

去年参加wincc7的一个介绍会,曾经提到了wincc7的报警增加了所谓的高级过滤功能,即面对大量的报警导致关键的报警被淹没,wincc7提供了一种智能化的过滤策略。

前段时间参加了pcs7V7的介绍,也提到了这个功能。事实上在以前的项目里面很少会想到做报警过滤的功能,用户也基本上没有这方面的要求,

在实际运行过程中,一般都是一页一页的翻看过往的报警。而在事故的时候,系统产生的报警特别多,此时要找出有用的报警就需要耐心和细心了。

又或者一个大型系统,很多设备但是集中监控,那么就可以按照设备和区域来显示各自的报警。

现在想想,有时候报警过滤应该是很有用的,比如按类别过滤,按时间过滤,按报警文本内容过滤以及综合几个条件进行过滤等等。

 

手上的机器没有按照wincc7,不过wincc6的报警过滤应该是可以简单实现的。

搜了下西门子网址,果然有个编号为5668269的条目解答了这个问题,即对报警控件的msgfiltersql属性进行改写。

例子里面是用c脚本写的,我测试的时候改用vbs,看上去要少敲点字母:) ,例如:

 

ScreenItems("algwinccCtrl").msgFilterSql="#VisibleOnly\\CLASS IN(1)"

 

在组态画面双击报警控件-消息列表-数据准备-选择想要显示的报警类别、类型,在下面提示框内可以看到VBS编程需要的classtype代码

门徒

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:40:10
3楼

报警的确认按钮脚本

   昨天改一个WINCC项目,用到报警的确认按钮脚本,折腾好几次都报错。

又重新温习了C的基本知识,发现脚本写法还是不少。因为按钮与报警控件在同一画面,直接用lpszPictureName就可以了。

 

下面几种写法都可行,特此做个记录:

 

AXC_OnBtnVisibleAckn("ALARM.PDL", "ALARM_ALL");

AXC_OnBtnVisibleAckn("ALARM", "ALARM_ALL");

AXC_OnBtnVisibleAckn(lpszPictureName, "ALARM_ALL");

 

假设你建立的报警控件名字为控件1,所属画面名字为alarmline.pdl

C动作里面输入

AXC_OnBtnSinglAckn("alarmline.pdl","控件1");  //Return-Type :BOOL

 

Wincc报警记录查询(大于1000条)

报警控件一次最多装载1000条报警记录。
因此,如果在设定的时间范围内,比如1天,超过1000条的话,那么超过部分的报警通过翻页是翻不到的。
可以通过设置更短的时间范围,来查看,比如半天等等。分几次查询来实现。

门徒

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:41:57
4楼

Wincc报警闪烁

终于找到WINCC报警闪烁的设置了,郁闷找了好久

 消息类别点击右键-〉确认列表中有一个闪烁开始选项,选择就可以了

关于SFB35ALARM_8P)的使用方法及原理

SFB 35 "ALARM_8P"表示将SFB 33 "ALARM"线性扩展至八个信号。 

只要未启用确认触发报告,在一个或多个信号处检测到信号转变时即会生成消息(例外:初次调用块时将始终发送消息)。所有八个信号拥有公用消息ID,它在显示设备上被拆分成八个独立的消息。可以分别确认各个消息或确认一组消息。可以使用ACK_STATE输出参数在程序中处理单个消息的确认状态。如果禁用或启用ALARM_8P块的消息,在任何情况下均会影响整个ALARM_8P块。无法禁用或启用单个信号。 



每个SFB35 "ALARM_8P"的实例可以使用一个带有两个存储器块的存储器。 



参数 声明 数据类型 存储器区 说明

EN_R INPUT BOOL I
QMDL

常数 为接收该项而启用的控制参数

决定调用块时

更新

(EN_R=1)
还是不更新(EN_R=0)输出ACK_STATE

SIG_i
1 = i = 8 INPUT BOOL IQMDL 要监视的i(th)信号

ID INPUT WORD I
QMDL

常数 消息的数据通道:

仅在初次调用时判断W#16#EEEE

ID


EV_ID INPUT DWORD I
QMDL

常数 仅在初次调用时判断消息号(不允许为0)

EV_ID
。此后每次使用相应的情景数据块调用SFB 35时,都将应用初次调用所使用的消息号。STEP 7会自动分配消息号以确保消息号的一致性。用户程序内的消息号必须唯一。

SEVERITY INPUT WORD I
QMDL、常数 事件权重

有效值:0127 (0表示最高权重)

此参数与该消息的处理无关。

DONE OUTPUT BOOL I
QMDL DONE状态参数:消息生成

已完成

ERROR OUTPUT BOOL I
QMDL ERROR状态参数

ERROR=TRUE
表示处理过程中出错。有关详细信息,请参考参数STATUS

STATUS OUTPUT WORD I
QMDL STATUS参数:显示出错信息

ACK_STATE OUTPUT WORD I
QMDL 包含所有八个消息的当前确认状态的位字段:(1:事件已确认,0:事件未确认)?07位分别对应SIG_1SIG_7的进入事件?815位分别对应SIG_1SIG_7的离开事件初始化状态:W#16#FFFF,即已确认所有进入和离开事件

SD_j
1?j ?0 IN_OUT ANY IQMDTC j-th关联值关联值将应用于所有消息。只允许使用以下数据类型:BOOL (不允许:

位字段)BYTECHARWORD

INT
DWORDDINTREAL

DATE
TODTIMES5TIME

DATE_AND_TIME
。注意:

 

门徒

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-07-28 22:42:40
5楼

如果ANY指针访问某个DB,则务必指定该DB (例如:P# DB10.DBX5.0 Byte 10)

出错信息



下表包含所有可通过ERRORSTATUS参数输出的SFB 35特有的出错信息。



ERROR STATUS (
十进制) 解释

0 11
警告:消息丢失,至少一个信号转变/消息无法发送。

0 22 ?
指向关联值SD_i的指针出错:- 与数据长度或数据类型有关- 无法访问用户存储器中的关联值(例如,由于DB已被删除或区域长度出错)激活的消息未与关联值一起发送?所选的SEVERITY实际参数

超出了允许的范围。激活的消息将

SEVERITY=127下发送。

0 25
启动了通讯。正在处理消息。

1 1
通讯问题:连接中止或未登录启用了确认触发报告时:临时显示,如果没有显示设备可以支持确认触发报告

1 4
初次调用时:?指定的EV_ID超出了允许的范围或?ANY指针SD_i有形式错误?超出了每个SFB 35可以为CPU发送的最大存储器区

1 10
无法访问本地用户存储器(例如,访问的DB已被删除)

1 12
调用SFB时:?指定了不属于SFB 35的情景数据块?指定的是共享数据块而不是情景数据块

1 18 EV_ID
已由SFB 313336中的一个使用。

1 20
工作存储器空间不足。H系统:更新过程中调用了此SFB

1 21
禁用了带有指定EV_ID的消息。

注意初次调用块后,将设置ACK_STATE输出的所有位,并假定输入SIG_i (1< I < 8)的先前值均0

 

阿水--王者之师

  • 精华:23帖
  • 求助:347帖
  • 帖子:1611帖 | 22281回
  • 年度积分:37
  • 历史总积分:98482
  • 注册:2007年3月22日
发表于:2012-07-29 09:17:50
6楼
     Y这么好的 SIEMENS 资料, 先收藏了, 然后再慢慢来看吧 Q 

xiaobeiweng

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 424回
  • 年度积分:0
  • 历史总积分:1461
  • 注册:2009年8月25日
发表于:2012-07-31 10:45:17
7楼
收藏了~~                       

热门招聘
相关主题

官方公众号

智造工程师