如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?

本条目说明了如何在 S7-300 CPU 与 WinCC 之间实现按时间排序的消息传输。

说明:
按时间排序消息是指从 PLC 向 WinCC 站发送消息。在 PLC 中创建消息后,PLC 将会给消息分配一个时间戳并且将其传送给 WinCC 站。WinCC 站无需轮询 PLC。这样就显著减轻了总线的负荷。基本上 STEP 7 中有两种类型的消息:

  1. 符号相关的消息
  2. 块相关的消息

对于 S7-300 CPU 能组态块相关的消息。可以在 STEP 7 程序中通过系统消息块创建这些与块有关的消息。一旦 STEP 7 程序调用系统消息块,并且具备了发送消息的条件,系统就会发送消息。消息触发和程序执行是同步的。在 S7-300 CPU 中 (从CPU 314 开始),可以使用系统消息块 SFC17 (ALARM_SQ) 、SFC18 (ALARM_S) 、SFC107 (ALARM_DQ) 和 SFC108 (ALARM_D) 传送与块相关的消息。相比于 ALARM_S/SQ,ALARM_D/DQ 提供管理系统资源的可能;其它功能完全一样。S7-312 和 S7-313 CPUs 不支持这些系统消息块!

更多的信息:

  • 手册“SIMATIC S7-300 CPU 31xC 和 CPU 31x,技术数据”
    这里提供了关于 CPU 报警过程的工作特性数据的具体信息 -条目 ID 12996906
  • 手册“Operation List CPU 31xC,CPU 31x,IM 151-7 CPU,IM 154-8 CPU,BM 147-1 CPU,BM 147-2 CPU”
    这里提供了关于创建 CPU 报警消息的系统功能和系统功能块的详细信息 - 条目 ID 13206730
  • STEP 7 在线帮助
    您可以在 STEP 7 在线帮助“组态消息”下找到关于报警过程、报警类型和系统报警块的详细信息。如果您在程序中使用了这些块,那么可以点击 F1 获取详细信息。

必要条件:

  • 已经安装了 WinCC 组件“AS-OS Engineering”。
    对WinCC 进行用户自定义安装时可以选择该组件。请遵循如下安装顺序:
    1. STEP 7
    2. 包含“AS-OS Engineering”组件的 WinCC

    条目ID 22272911 包含了关于如何安装“AS-OS Engineering”组件的描述。

  • WinCC 项目已集成到 STEP 7 项目中。
    条目 ID 11841504 中包含如何将 WinCC 项目集成到 STEP 7 中的信息。
  • 在 WinCC 项目的“Computer Properties”对话框中的启动列表内启用“Alarm Logging Runtime”。

以下介绍了如何组态与块有关的消息传送。

组态与块有关的消息
这里使用系统消息块 SFC17 (ALARM_SQ) 来实现与块有关的消息传送。使用系统消息块的步骤本质上是相同的。将两个消息组态在一个功能块中。

序号 操作说明
1 将 SFC17 (ALARM_SQ) 拷贝到当前项目
在 SIMATIC Manager 中通过“File > Open... > Standard Library”打开标准库。选择系统消息块 SFC17 (ALARM_SQ)。它位于“Standard Library > System Function Blocks > Blocks”目录中。将系统消息块 SFC17 拷贝到项目中。
2 创建一个消息兼容块

  • 将一个新的功能块,比如“FB1”,插入到 STEP 7 项目中。使用 STL 语言编程。
  • 打开“FB1”功能块。
  • 创建如下输入变量:
    EV_ID1 (DWORD)
    EV_ID2 (DWORD)
    SIG1 (BOOL)
    SIG2 (BOOL)
    SD1 (WORD)
    SD2 (WORD)
  • 创建如下输出变量:
    RET_VAL1 (INT)
    RET_VAL2 (INT)
  • 创建如下临时变量:
    RET_iVal (INT)
  • 打开输入变量“EV_ID1”的“Object Properties”对话框。为以下属性赋值:
    S7_a_type = alarm_s
    S7_server = alarm_archiv

    如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
    图 01

  • 对输入变量“EV_ID2”重复上述过程。
  • 在程序部分选择系统消息块 SFC17 (ALARM_SQ)。将系统消息块的参数连接到相应功能块的输入/输出上。

    如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
    图 02

    注意:
    “ID”参数的值永远设为“W#16#EEEE”。
    SIG 参数触发消息。
    EV_ID 参数接收系统产生的消息号。
    通过 SD 参数可以组态一个消息关联值。
    RET_VAL 参数包含错误信息。

  • 因为该消息块只能监测一个消息变量,所以需要再次调用 SFC17,按照上述步骤进行相关的设置。
  • 保存功能块 FB1 并且关闭编辑器。
3组态标准的消息
在 SIMATIC Manager 中选中功能块“FB1”。在弹出菜单中调用命令“Special Object Properties > Messages...”。
消息组态对话框随即打开。

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 03

指定消息 EV_ID1 和 EV_ID2 的消息文本。

注意:
组态多种语言的消息文本是可行的。在“Message Configuration” 对话框中显示当前所选择的显示语言。必须为随后在 WinCC 运行系统中用到的所有语言组态消息文本。只需通过菜单命令“Options > Display Language...”即可改变 SIMATIC Manager 中的标准语言,然后再分别为每种语言分别重复组态消息。

4 在程序中调用消息兼容块
必须在您的程序中调用功能块 FB1。可以打开组织块 OB1 然后输入如下代码:

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 04

警告:
消息的 IDs 是由 STEP 7 自动生成的。绝对不能改变这些 IDs!

保存组织块 OB1 并且关闭编辑器。

5 组态与块有关的消息
集成消息兼容块后就可以改变消息文本。例如,可以将测量点的实际名称加入到消息文本中。通过选择背景数据块 (例如 SIMATIC Manager 中的“DB1”) 来实现此过程。在弹出菜单中调用命令“Special Object Properties > Messages...”。
消息组态对话框随即打开。根据各种相关语言改变对应的消息文本。

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 05

6将程序载入 PLC
将程序载入 PLC。
7编译 OS
“OS Compile”在 WinCC 中创建消息。在早期的版本中这个过程也可以使用“Mapping”或者“AS/OS Coection Data > Transfer”来完成。

必要条件:
PLC 的 CPU 和 OS 必须已经联网。在 NetPro 中必须至少有一个共用的网络连接。

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 06

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 07

向导将通过多个对话框引导用户进行操作,在此可以设置 OS 编译的各种设置项。必须选择将哪个 PLC 程序分配给哪个 OS,以及使用的是哪个连接。

使用“Back”和“Next”按钮可以在向导的设置画面中进行切换。使用“Finish”按键可以获得所显示的编译过程小结。使用“Compile”按钮启动编译程序。

8 载入 OS
将程序载入 OS。
9 在 WinCC Runtime 中测试消息
启动 WinCC Runtime,使用变量表触发消息。消息将显示在 WinCC 的报警窗口中,并且可以在需要的地方进行确认。也可以选择通过 STEP 7 程序“CPU Messaging”来诊断消息。

如何在 S7-300 CPUs 与 WinCC 之间实现按时间排序的消息传输?
图 08

注意

STEP 7 对话框“消息组态”使得在报警记录编辑器中默认的“消息文本”可用。“消息文本”列的文本保存在用户文本块 3(事件)里。
更多有关 STEP 7 消息文本分配到 WinCC 用户文本块的信息,请参考条目 ID: 30550239

本条目是使用 WinCC V6.0 SP4 和 STEP 7 V5.3 SP2 平台创建的。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论