如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化?

操作规程:
系统在每个冗余服务器上创建了关于冗余的内部变量。这些变量给出来自各个服务器角度的系 统冗余状态信息。本条目给出一种方法,用于判别两个服务器冗余状态,让上层系统在 WinCC 运行期间得到该冗余状态并将其可视化。一对冗余服务器中的每个服务器都在 S7 控制器为其预留的存储器中写入来自各自角度的冗余系统状态。由控制器处理两个服务器的冗余数据,进行合理性检测,得出可用于进一步处理和可视化的结果。n

优点:

  • 上层系统可以得到冗余系统的当前状态
    通过这种方式上层系统可以得到冗余 WinCC 服务器的当前状态。n
  • 在 WinCC 客户端上可视化两个服务器的冗余状态
    在任何指定时间客户端总是仅连接到两个冗余服务器中的一台上。因此它仅能显示两台服务器中一台的冗余变量。该条目说明了在一个处理画面中如何可视化两台服务器的冗余状态。n
  • 控制器中附加的合理性检测 (AS - 自动化系统)
    该条目的 AS 块执行合理性检测。如果出现不能被 WinCC 冗余识别的错误,将触发一条消息。错误的可能原因为:
    - 在配置和匹配后没有激活冗余。
    - 冗余系统有不合法状态 - 如:因为在两个冗余的服务器间没有连接,所以当两个 WinCC 服务器都是主站时会发生这种情况。

要求:
下面的操作规程要求将 WinCC 工程集成到 SIMATIC 管理器中。使用 SCL 和 CFC 编辑器。WinCC 变量和消息是在 AS-OS 工程中创建的。
n

编号 步骤
1 为冗余检测创建一个 S7 功能块
创建一个 S7 功能块处理冗余服务器对的冗余数据。 n

下面的文本文档显示了一个 S7 功能块的 SCL 源码,它可以作为一个块模版。可以在 SCL 编辑中输入代码和修改它用以满足特定的要求。n

如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化? I_STEP7.exe ( 10 KB ) n

创建块时的注意事项:

  • 在编译 S7 程序前应该选择“Update scan time”选项。n
  • 一旦在符号表中分配了块的符号名,就能够编译该块。在编译成功后相关的功能块 (FB) 会被创建在 S7 程序的块文件夹中。

块功能:

  • 定义启动行为
    在 S7 程序启动后将相关的输入/输出包括监视时钟复位。n
  • 两台服务器的看门狗监视
    块循环 访问两台服务器的看门狗位。每个看门狗位必须是由 WinCC 设置的,并由监视块来复位。如果看门狗位在一段参数化的监控时间内没有被复位,就会在块的输出端置位一个错误位。n
  • 冗余状态的合理性检测
    块检测两台服务器的冗余状态。一旦冗余服务器不具备“MASTER”和“STANDBY”状态,并经过一段参数化的延迟时间后,就会在块的输出端置位一个错误位。n
  • 消息行为
    错误通过 ALARM_8P 块以报警方式上报给 WinCC。n
  • 在特定功能块输出端的 Master/Standby 数据
    根据当前的冗余状态,将计算机的名称和“@RedundantServerState”变量的值,写到 Mater 或 Standby 相应的输出中。

块连接“SV1_QiState”和“SV2_QiState” 的可能值(输出):

  • “0”(未定义状态;WinCC 的初始值)n
  • “1”(服务器是 Master)n
  • “2”(服务器是 Standby)n
  • “3”(服务器出错)n
  • “4”(服务器独立运行,无冗余操作)n
  • “9”(连接服务器时有错误)

状态“0”到“4”对应于系统变量“@RedundantServerState”的状态。该块中只有状态“9”是一个特殊的扩展。

2在 S7 程序中调用 S7 功能块进行冗余性检测 n

在 CFC 图表中放置用于冗余检测的功能块。编译并加载 S7 程序。下图显示了在测试模式中内置的冗余性检测模块。n

如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化?
图 01n

注意事项:
为了能在目录中选择冗余检测块并把它放置在 CFC 图表中,必须通过“Options > Block Types...”为该块创建块类型。如果改变了接口和属性需要更新块类型。

3编译 OS
编译并加载 WinCC 站。
4在 WinCC 站中创建周期触发的 C 脚本
在 WinCC 站中创建一个周期性动作,把冗余数据写入到 S7 中冗余检测块的有关输入中。 n

下面的文本文档显示了一个 C 脚本的源码,它可以用作一个模版。您可以在全局脚本编辑器中插入 C 代码。必须修改并编译该代码来满足特定的需要。n

注意事项:
改变常量“WINCC_SERVER1_NAME”(首先 #define-C 脚本的声明),使它包含其中一台服务器的计算机名称。在运行时脚本将当前的计算机名称和该常量进行比较。据此,该脚本把冗余数据写入到 S7 监视块的相关块连接 (“*.SV1_”“*.SV2_”块连接) 中。n

如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化? WinCC_RedundancyCheck.txt ( 3 KB ) n

下图显示了在周期性动作中的函数调用。n

如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化?
图 02

5可视化冗余数据 n

创建一个 WinCC 画面将冗余检测块的数据可视化。n

注意事项:
使用 WinCC Alarm Control 和一个相应的过滤器,也可以在该画面中显示冗余检测块的消息。

如何判别一对冗余服务器的冗余状态,上层系统如何得到该冗余状态并将其可视化?
图 03

6加载备用 OS
加载备用 WinCC 站。
7执行一次功能测试
在运行期间测试所需的功能。

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

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

相关推荐

发表回复

登录后才能评论