n
1. WinCC消息系统简介
消息系统是SCADA系统中非常重要的组成部分,用来监视自动化系统的异常和事件,借助于可视或有声提示,帮助操作人员快速发现、定位、解决处理故障和错误,从而有效减少宕机时间和生产事故的发生,并能通过消息归档,追溯报警和事件,进而分析事故起因、认定事故责任等。
WinCC的消息来源可以分为两大类:由数据管理器的消息变量触发的消息和来自与WinCC系统内部的消息,如下图所示:n
对于来自于数据管理器的消息变量又分为:
• 布尔值变量
• 模拟量变量(上下限报警)
• 消息帧变量
其中,布尔值变量和模拟量变量较常用,分别是指WinCC普通的位报警和模拟量上下限报警。而消息帧变量是指WinCC使用一个RawData (原始数据类型) 变量来获取来自于一个PLC主动发送的所有消息帧,然后用特定的格式动态链接库,从该数据帧中提取出相关的消息信息,在HMI上实现归档显示等功能。n
2. 消息方式的比较
消息帧方式一般常见与WinCC(或WinCC Flexible等)集成在Simatic Manager中的项目,如下图所示:n
经过简单设置和OS编译后,WinCC项目中会自动生成与PLC的连接,并自动生成变量,其中就有类型为Raw Data的消息帧变量xxx#RawEvent,如下图所示:n
该消息变量会在WinCC的报警记录中使用,如下图所示:n
在消息属性中可以看到所使用的格式动态链接库,如下图所示:n
这类似与PCS7的消息实现方式,消息组态是在Step7中完成的,消息经编译进入WinCC报警记录中,并且每条消息被自动分配了不同的消息号,我们称这类消息为编号消息,它又可分为块消息和符号表消息。n
块消息是指PLC侧通过调用相应的消息功能块将消息主动上发给WinCC等HMI系统,适用于:n
- 西门子HMI:WinCC 或面板n
- S7-300/400n
- 使用ALARM_S等块主动发送消息n
- HMI项目集成在Simatic Manager中
符号表消息:n
- WinCCn
- 仅S7-400支持n
- 组态符号表,无需编程n
- WinCC项目集成在Simatic Manager中
和WinCC的位消息相比,编号消息的优点在于:n
- PLC是基于事件主动上发消息,故总线通讯负载占用少n
- 消息使用PLC时间戳或自定义时间戳,具有更高的时间精度。n
- 更多高级的功能是基于编号消息实现的:
对于WinCC来讲组态符号表消息和块消息都需要:n
• 安装WinCC的组件“AS-OS Engineering”
• WinCC集成进Simatic Manager中
• 在 WinCC 项目的“Computer Properties”对话框中的启动列表内启用“Alarm Logging Runtime”n
3. 组态集成在Simatic Manager中的WinCC项目
打开Simatic Manager,插入PLC站,和OS站,组态PLC站的硬件并为其添加网络,如MPI、Profibus或以太网等;
在Simatic Manager中双击OS站,打开WinCC项目,需要预先设置报警类别和类型,一种方法可以打开Alarm Logging ,手动添加相应的报警类别和类型。
另一种简单的方法可以使用“OS Project Editor”,在WinCC 资源管理器中双击“OS Project Editor”打开最后一个页签“General”,按下图设置,点击“OK”。这样只产生报警组态设置,而不会产生其他的内容。如下图所示:n
打开Simatic Manager 编译OS,选择WinCC用何种方式与哪一个CPU连接:n
这个步骤会将PLC中做过特殊设置的变量,消息等内容传到WinCC的组态数据库中,从而提高组态效率。
下面将分别介绍如何在Step7 中组态符号表消息和块消息并上传到WinCC中。
关于如何将Step7中的变量通过编译上传到WinCC的方法,请参见:71759485
4. 符号表消息的组态方法
在Simatic Manager中打开PLC程序的符号表,通过菜单“View” 选择“Columns R,O,M,C,CC” ,这样在符号表中的就会出现多个列,鼠标单击选中要监视的布尔型变量的M列;
或在符号表中右键点击的要监视的布尔型变量,在弹出菜单中进入“Special Object Properties”->“Message”,如下图所示:n
在消息组态对话框中的Message Text列中,填入相应的消息文本:n
点击“OK”,保存符号表,退出。然后编译OS并下载整个站到PLC。n
5. 块消息函数的实现方法
S7-300/400 CPU支持多种消息函数,下表列出的是各消息函数的区别:n
名称 | SFB/SFC | S7 CPU | 可确认 | 通道数 | 过程值 | WinCC | OP |
ALARM_SQ | SFC 17 | S7-300/400 | Yes | 1 | Yes | Yes | Yes |
ALARM_S | SFC 18 | S7-300/400 | No | 1 | Yes | Yes | Yes |
ALARM_SC | SFC 19 | S7-300/400 | - | - | - | Yes | Yes |
ALARM_DQ | SFC 107 | 仅 S7-400 | Yes | 1 | Yes | Yes | Yes |
ALARM_D | SFC 108 | 仅 S7-400 | No | 1 | Yes | Yes | Yes |
NOTIFY_8P | SFB 31 | 仅 S7-400 | No | 8 | Yes | Yes | No |
ALARM | SFB 33 | 仅 S7-400 | Yes | 1 | Yes | Yes | No |
ALARM_8 | SFB 34 | 仅 S7-400 | Yes | 8 | No | Yes | No |
ALARM_8P | SFB 35 | 仅 S7-400 | Yes | 8 | Yes | Yes | No |
NOTIFY | SFB 36 | 仅 S7-400 | No | 1 | Yes | Yes | No |
需要注明的是某些新型的S7-300 CPU也支持 Alarm_D/Alarm_DQ,如:CPU 315-2DP/PNn
下面以 SFC107 Alarm_DQ 为例说明组态的过程:
在Step7中建立FB1,定义DOWRD型输入参数EV_ID1和EV_ID2,并分别设置参数属性:n
设置后,该参数上会出现绿色的小旗标,如下图所示。在FB1中调用SFC107, 其参数:
• SIG为所监视的报警变量
• ID = W#16#EEEE
• EV_ID为FB1的输入参数EV_ID1/ EV_ID1
• CMP_ID =DW#16#1
• SD:为报警所携带的过程值的地址,ALARM_DQ可携带最多12个字节的过程值,这些过程值可以在报警消息文本中使用
• RET_VAL为执行状态返回值n
保存,退出。
打开OB1,调用FB1。其输入参数EV_ID1和EV_ID2系统会自动分配事件编号,无需用户设置。为输入参数Sig1和Sig2指定要监视的布尔量。
参数输入完成后,打开菜单“Edit”->“Special Object Properties”->“Message…”或直接右键单击FB1的调用程序,在弹出菜单中选择“Special Object Properties”->“Message…”:n
在弹出的消息组态对话框中输入相应的消息文本:n
消息文本中可以携带过程值如上图所示。其格式为:n
@ PwnTpy%Width. precision Format @, 具体含义见下表:n
符号 | 含义 | 值及含义 |
@ | 起始符 | |
Pwn | 过程值号 | 1、2、3、… |
Typ | 过程值数据类型 | b:BOOL;y:BYTE|y;c:Chr; w:WORD; i:Int; x:DWORD; d:DINT; r:REAL |
%width | 数据显示宽度 | |
.precision | 数据显示精度 (可选项) | |
Format | 数据显示格式 | d:有符号十进制;u: 无符号十进制; X:十六进制; f:有符号定点数; s: ANSI字符串 |
@ | 截止符 |
保存退出,下载整个站到PLC中。
在Simatic Manager中编译OS,结束后,打开Alarm Logging可以看到Step7中组态的消息已经编译进WinCC的报警记录中了。
在WinCC中新建一幅画面,放置Alarm 控件。激活WinCC。PLC程序运行在PLCSim上,打开变量监控表,如下图赋值,并设置M1.0 和M1.1为1触发报警:
在WinCC的报警控件上,可以立即看到相应的报警消息,并可对其进行确认:
WinCC支持多语言项目,对于来自于PLC消息的组态,可以在WinCC 的文本库中实现消息文本翻译;也可以在Simatic Manager菜单“Options”->“Language for Display Devices”中设置项目中用到的语言,并在此设置默认语言,在每种默认语言状态下输入相应语言文本。多语言文本经OS编译后也可进入WinCC的文本库。
关键词
Alarm_D, Alarm_S, 报警,WinCC
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc326151.html