• {{item.name}}
自动化系统 {{item.name}}
{{item2.name}}
更多
常问问题

如何使用 WinCC Alarm Control 的 "MsgFilterSQL" 属性执行一个 SQL 语句来过滤显示消息?

star star star star star
5.0 分
  • 软件编程
  • SIMATIC WinCC Basic
  • alarm control
  • MsgFilterSQL
  • 过滤
文档编号:5668269| 文档类型:常问问题| 发布时间:2023年10月19日
  • 0
  • 837
  • 1
这个FAQ介绍了如何使用 WinCC Alarm Control 的 "MsgFilterSQL" 属性执行一个 SQL 语句来过滤显示消息

通过脚本动态显示消息。


通过脚本动态显示消息

这个条目使用一个例子来展示在 WinCC Alarm Control 中如何通过动态化 “MsgFilterSQL” 属性来设置以下的消息过滤。使用消息过滤,则只显示包含如下的这些消息:

  • 分配到 "Class 1" (“错误”), "Class 2" (“警告”) 或 "Class 4" (“PLC过程控制消息”) 的消息类别
  • 在用户文本块 tb1("source") 中包含有字符串 "TI4711"。
  • 在用户文本块 tb2("area") 中包含字符串 "area1" 或者 "area2"。
  • 未被隐藏的(隐藏消息这个选项在 WinCC V6.2 或者以上版本提供)。


下面的图中所示的脚本将 "SQL-where-clause" 赋值到 WinCC Alarm Control 的 "MsgFilterSQL" 属性中,这样只有需要的消息才会被显示出来。



图. 01

详细的信息在 WinCC Information System 下能够找到。 "SQL Instructions for Filtering Messages in the WinCC Alarm Control" (V6.0)。"Working with WinCC > Setting up an Alarm System > Display of in Runtime > SQL Instructions for Filtering Messages in the WinCC Alarm Control"(从 V6.2 起)。

下表描述了所使用的 SQL 语句的结构:

No.描述
1"#VisibleOnly\\" 在 WinCC V6.2 或者更高版本,支持隐藏消息。为了能够只显示隐藏消息或者只显示可见消息有两个控制字符串: "#VisibleOnly\" 和 "#HiddenOnly\"。因为在 "C" 语言中 "\" 是一个特定字符,在 C 中用字符串 "\\" 表示 "\"。控制字符串 "#VisibleOnly\" 和 "#HiddenOnly\" 能够在 SQL 语句的开始或者结束处使用。使用控制字符串 "#VisibleOnly\" 则显示可见消息。使用控制字符串 "#HiddenOnly\"则显示隐藏消息。如果您不使用 "#VisibleOnly\" 和 "#HiddenOnly\" 控制字符串,则可见和隐藏消息都显示。注意: SQL 语句包含了 “选择” 对话框的设置。在 WinCC V6.2 或者更高版本,SQL 语句还包含了 “显示选项” 对话框的设置。这两个对话框互不影响。可在 "Non-displayable SQL instructions" 部分查看注意事项。
2"CLASS IN(1,2,4)"
通过这个语句,只有属于消息类别 "Class 1" (“错误”), "Class 2" (“警告”) 或 "Class 4" (“PLC过程控制消息”) 的消息才会被显示。消息类别通过类别号来指定。在报警记录编辑器中,您可以在每一个消息类别的 “组态消息类别” 对话框查看该消息类别的类别号。
3"AND TYPE IN(1, 2, 19, 20, 55, 56)"
这部分语句用来扩展过滤条件。只有消息类型是 "Type 1", "Type 2", "Type 19", "Type 20", "Type 55" 或者 "Type 56" 能够被显示。消息类型使用消息类型号来指定。在报警记录编辑器中,您可以在每一个消息类型的 “类型” 对话框来查看该消息类型的类型号。
4"AND TEXT1 LIKE 'TI4711'"
这部分语句用来扩展过滤条件。只有在用户文本块 "TB1" 中包含有字符串 "TI4711" 的才会被显示出来。
5"AND TEXT1 LIKE 'TI4711'"
这部分语句用来扩展过滤条件。只有在用户文本块 "TB2" 中准确包含字符串 "area1" 或者 "area2" 的消息才会被显示出来。


Non-displayable SQL statements:
如果消息过滤通过 SQL 语句来定义,有可能出现这样的情况:在 WinCC Alarm Control 的工具栏 “选择” 对话框或者 “显示选项” 对话框中消息过滤设置不能显示。如果这样的一个过滤条件在 WinCC Alarm Control 中激活,随后当您打开 “选择” 对话框或者 “显示选项” 对话框,您将看到说明当前的选择不能在选择对话框中显示并且将被丢弃的消息提示框。



图. 02

下表描述了在运行模式下执行 SQL 过滤条件,但是在 WinCC Alarm Control 的 “选择” 对话框不能显示的情况。

No.描述
1"用户文本块中的 IN 语句"
使用 IN 操作能够为一个普通的用户文本块定义作为过滤标准的合法有效的多重文本。例如,使用该方法您可以定义一个显示多重区域 (例如:子系统 A 或者子系统 B ) 消息的过滤条件。
2没有指定消息类型的过滤
过滤标准里消息类别和消息类型是不相关的。如果,SQL 语句中只定义消息类别,不指定消息类型,这个过滤条件不能在 WinCC Alarm Control 的 “选择” 对话框中完全显示。但是如果在 SQL 语句中为所有的消息类别指定明确的消息类型,则能够完全显示。
3在 SQL 操作中的大写/小写字符
WinCC Alarm Control 中的 “选择” 对话框不支持所有的 SQL 操作 (例如:LIKE, TYPE) 中包含小写字符。消息过滤可以正常的执行,但是在选择对话框中的消息过滤不能够完全显示。
因此您必须在 SQL 操作中使用大写字符。
4通常用法 不要在查询指定的用户文本块使用任何确切等号(Operator "=")和查询其他用户文本块使用非确切等号(Operator "LIKE")的过滤标准。混合两种操作将导致在 WinCC Alarm Control 中不能正确显示消息。注意: 您可以使用操作符 "IN" 代替操作符 "=" 定义相同的消息过滤条件。对于用户文本块,您可以组合使用 IN 和 LIKE 操作符。然而, 请您查看这个表中有关注意事项。


注意
推荐按照下面的步骤插入一个正确的 SQL 语句。
首先,在 WinCC Alarm Control 的组态对话框中创建一个过滤条件。

  • 双击 WinCC Alarm Control 打开组态对话框。
  • 打开 “消息列表” 标签。
  • 在 “选择” 或 “固定选择” 项点击 “编辑”。
  • 组态选择条件(包括特殊字符)。点击 “确定” 关闭选择。
  • 点击 “确定” 关闭属性对话框。
  • 右键单击 Alarm Control 打开对象属性。
  • 属性 > 控件属性 > "MsgFilterSQL"/"DefaultMsgFilterSQL"。
  • “静态” 标签显示正确的 SQL 语句。
  • 复制这个语句到脚本里。

您可以前往全球资源库查看此文档:https://support.industry.siemens.com/cs/cn/zh/view/5668269


  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。