2. WinCC冗余系统架构解析

WinCC冗余系统的本质,是把“单台服务器可能失效”这一工程现实,转化为“两台服务器互为备份、对外表现为一个系统”的可用性设计。理解这套架构,关键不是记住几个名词,而是看清四件事:冗余选件提供了什么能力、主站与备用站各自承担什么角色、故障切换在什么条件下发生、以及心跳检测与同步如何支撑这一切。

一、冗余选件:把两台服务器“绑”成一个系统

WinCC冗余能力由 WinCC Redundancy 选件提供。它并不是简单地把两个项目复制到两台机器上运行,而是在两台服务器之间建立一条专用的冗余连接,用于交换心跳、同步数据和状态信息。典型部署中,两台服务器通过独立的冗余网卡或独立网段直连,避免与终端总线、系统总线争抢带宽,也避免单条网络故障同时切断两台服务器的通信。

冗余选件带来的核心能力包括:

  • 项目一致性:主站运行期间产生的报警、归档、变量记录等变化,会持续同步到备用站,使备用站随时具备接管条件。
  • 角色协商:两台服务器启动后自动协商出主站与备用站,无需人工指定,避免双主冲突。
  • 故障检测与切换:通过心跳与状态监视判断对端是否可用,在满足条件时触发角色切换。
  • 客户端透明性:WinCC客户端通过服务器列表连接,切换后客户端重新建立到新主站的连接,操作员界面无需重新组态。

需要强调的是,冗余选件解决的是服务器级的高可用,不自动覆盖控制器、现场总线或客户端本身的单点故障。因此实际工程中,冗余服务器通常与冗余控制器、冗余网络配合使用,才能形成端到端的高可用链路。

二、主站与备用站:角色不是固定的

在WinCC冗余系统中,两台服务器在任一时刻分别处于主站(Master)和备用站(Standby)状态。主站是当前对外提供服务的服务器:客户端连接它、读取它的归档与报警、向它写入操作命令;备用站则处于热备状态,持续接收主站同步过来的数据,但不主动向客户端提供服务。

角色并非永久绑定在某台机器上。系统启动时,两台服务器通过冗余连接协商,先启动或先取得控制权的一方成为主站;运行过程中,如果主站失效或主动退出,备用站会接管成为新的主站。原主站恢复后,通常以备用站身份重新加入,而不是强行抢回主站角色,这样可以避免反复切换造成系统震荡。

工程上常把两台服务器分别称为“服务器A”和“服务器B”,而不是“主服务器”和“备服务器”,正是因为角色会动态变化。组态时应对两台机器做完全对称的配置,包括相同的项目副本、相同的归档路径、相同的用户权限和相同的网络参数,否则切换后可能出现数据缺失或权限异常。

三、故障切换机制:什么条件下切、切了之后发生什么

故障切换的触发条件主要分为三类:

  1. 主站进程或操作系统失效:WinCC运行系统崩溃、操作系统宕机、服务器断电等,备用站检测不到主站心跳,判定主站不可用。
  2. 冗余连接中断:两台服务器之间的冗余网线断开或网卡故障,备用站无法收到主站状态,按“对端不可用”处理。
  3. 主站主动退出:维护人员停止主站运行系统或执行切换命令,备用站按正常流程接管。

切换过程可以概括为:备用站检测到主站失效 → 确认自身数据同步状态 → 将自己提升为主站 → 通知客户端重新连接 → 继续提供报警、归档和操作服务。切换时间通常在秒级,具体取决于心跳超时设置、同步数据量和客户端重连速度。

切换后需要重点观察三件事:客户端是否自动重连到新主站、报警和归档是否连续、原主站恢复后是否以备用站身份重新同步。如果客户端长时间无法连接,往往不是切换失败,而是客户端服务器列表未正确配置或网络路径未放行。

WinCC冗余系统架构与故障切换 WinCC 客户端 通过服务器列表连接当前主站 服务器 A(主站 Master) · 对外提供报警 / 归档 / 操作 · 接收客户端连接 · 向备用站发送同步数据 · 周期性发送心跳 服务器 B(备用站 Standby) · 热备运行,不对外服务 · 接收并应用同步数据 · 监视主站心跳 · 满足条件时接管为主站 冗余连接 心跳 + 同步数据 故障切换过程 ① 主站失效 宕机 / 断电 / 冗余链路中断 ② 心跳超时 备用站判定 对端不可用 ③ 备用站接管 提升为主站 继续提供服务 ④ 客户端 重连新主站 服务恢复 原主站恢复后以备用站身份重新加入,避免角色震荡

四、心跳检测与同步原理:切换判断的依据

心跳检测是冗余系统判断“对端是否还活着”的基本手段。主站周期性地通过冗余连接向备用站发送心跳报文,备用站则在本地维护一个超时计时器。只要在设定时间内收到心跳,就认为主站正常;一旦连续多个周期未收到,就判定主站失效,进入切换流程。

心跳周期和超时时间需要权衡:周期太短、超时太紧,网络瞬时抖动就可能误判切换;周期太长、超时太松,真正故障时切换又太慢。工程上常见的做法是把心跳周期设为数百毫秒到1秒量级,超时时间设为心跳周期的3~5倍,并确保冗余链路本身稳定、不与其他大流量通信共用。

同步则解决“备用站接管后数据是否连续”的问题。主站在运行过程中,会把以下内容持续同步到备用站:

  • 过程变量与报警状态:当前变量值、报警到达与确认状态,保证切换后报警视图不丢、不重复。
  • 归档数据:变量归档和报警归档的写入内容,使备用站具备与主站一致的归档记录。
  • 用户与操作信息:登录状态、操作记录等,保证切换后权限和审计连续。

同步分为初始同步和增量同步两个阶段。初始同步发生在备用站刚启动或重新加入时,需要把主站已有的归档和状态整体复制过来,数据量较大,耗时也较长;增量同步则在运行期间持续进行,只传输变化部分,负担较小。如果备用站在初始同步未完成时就被要求接管,可能出现部分数据缺失,因此工程上应尽量让备用站先完成初始同步再投入热备。

冗余系统不是“配好就一劳永逸”。投运前应实际做一次切换测试:手动停止主站运行系统,观察备用站是否在预期时间内接管、客户端是否自动重连、报警与归档是否连续。只有测试通过,才能确认心跳参数、同步配置和客户端服务器列表都正确。

五、架构要点回顾

要素 作用 工程关注点
WinCC Redundancy 选件 提供冗余连接、角色协商、同步与切换能力 两台服务器项目对称、冗余网卡独立
主站 Master 对外提供报警、归档、操作服务 角色动态变化,不绑定固定机器
备用站 Standby 热备运行,接收同步数据,监视主站 需先完成初始同步再投入热备
心跳检测 判断主站是否可用,触发切换 周期与超时需权衡,避免误切与慢切
同步机制 保证切换后数据连续 初始同步 + 增量同步,关注数据完整性

把这五个要素串起来看,WinCC冗余系统的运行逻辑就清晰了:冗余选件搭起两台服务器之间的通道,主站对外服务、备用站热备待命,心跳负责判断“主站还在不在”,同步负责保证“接管后数据不断”,故障切换则是在心跳判定失效后把角色交给备用站。理解这条链路,后续配置冗余项目、设置心跳参数、执行切换测试时,就能知道每一步在解决什么问题。