2. WinCC冗余系统架构解析
WinCC冗余系统的本质,是把“单台服务器可能失效”这一工程现实,转化为“两台服务器互为备份、对外表现为一个系统”的可用性设计。理解这套架构,关键不是记住几个名词,而是看清四件事:冗余选件提供了什么能力、主站与备用站各自承担什么角色、故障切换在什么条件下发生、以及心跳检测与同步如何支撑这一切。
一、冗余选件:把两台服务器“绑”成一个系统
WinCC冗余能力由 WinCC Redundancy 选件提供。它并不是简单地把两个项目复制到两台机器上运行,而是在两台服务器之间建立一条专用的冗余连接,用于交换心跳、同步数据和状态信息。典型部署中,两台服务器通过独立的冗余网卡或独立网段直连,避免与终端总线、系统总线争抢带宽,也避免单条网络故障同时切断两台服务器的通信。
冗余选件带来的核心能力包括:
- 项目一致性:主站运行期间产生的报警、归档、变量记录等变化,会持续同步到备用站,使备用站随时具备接管条件。
- 角色协商:两台服务器启动后自动协商出主站与备用站,无需人工指定,避免双主冲突。
- 故障检测与切换:通过心跳与状态监视判断对端是否可用,在满足条件时触发角色切换。
- 客户端透明性:WinCC客户端通过服务器列表连接,切换后客户端重新建立到新主站的连接,操作员界面无需重新组态。
需要强调的是,冗余选件解决的是服务器级的高可用,不自动覆盖控制器、现场总线或客户端本身的单点故障。因此实际工程中,冗余服务器通常与冗余控制器、冗余网络配合使用,才能形成端到端的高可用链路。
二、主站与备用站:角色不是固定的
在WinCC冗余系统中,两台服务器在任一时刻分别处于主站(Master)和备用站(Standby)状态。主站是当前对外提供服务的服务器:客户端连接它、读取它的归档与报警、向它写入操作命令;备用站则处于热备状态,持续接收主站同步过来的数据,但不主动向客户端提供服务。
角色并非永久绑定在某台机器上。系统启动时,两台服务器通过冗余连接协商,先启动或先取得控制权的一方成为主站;运行过程中,如果主站失效或主动退出,备用站会接管成为新的主站。原主站恢复后,通常以备用站身份重新加入,而不是强行抢回主站角色,这样可以避免反复切换造成系统震荡。
三、故障切换机制:什么条件下切、切了之后发生什么
故障切换的触发条件主要分为三类:
- 主站进程或操作系统失效:WinCC运行系统崩溃、操作系统宕机、服务器断电等,备用站检测不到主站心跳,判定主站不可用。
- 冗余连接中断:两台服务器之间的冗余网线断开或网卡故障,备用站无法收到主站状态,按“对端不可用”处理。
- 主站主动退出:维护人员停止主站运行系统或执行切换命令,备用站按正常流程接管。
切换过程可以概括为:备用站检测到主站失效 → 确认自身数据同步状态 → 将自己提升为主站 → 通知客户端重新连接 → 继续提供报警、归档和操作服务。切换时间通常在秒级,具体取决于心跳超时设置、同步数据量和客户端重连速度。
切换后需要重点观察三件事:客户端是否自动重连到新主站、报警和归档是否连续、原主站恢复后是否以备用站身份重新同步。如果客户端长时间无法连接,往往不是切换失败,而是客户端服务器列表未正确配置或网络路径未放行。
四、心跳检测与同步原理:切换判断的依据
心跳检测是冗余系统判断“对端是否还活着”的基本手段。主站周期性地通过冗余连接向备用站发送心跳报文,备用站则在本地维护一个超时计时器。只要在设定时间内收到心跳,就认为主站正常;一旦连续多个周期未收到,就判定主站失效,进入切换流程。
心跳周期和超时时间需要权衡:周期太短、超时太紧,网络瞬时抖动就可能误判切换;周期太长、超时太松,真正故障时切换又太慢。工程上常见的做法是把心跳周期设为数百毫秒到1秒量级,超时时间设为心跳周期的3~5倍,并确保冗余链路本身稳定、不与其他大流量通信共用。
同步则解决“备用站接管后数据是否连续”的问题。主站在运行过程中,会把以下内容持续同步到备用站:
- 过程变量与报警状态:当前变量值、报警到达与确认状态,保证切换后报警视图不丢、不重复。
- 归档数据:变量归档和报警归档的写入内容,使备用站具备与主站一致的归档记录。
- 用户与操作信息:登录状态、操作记录等,保证切换后权限和审计连续。
同步分为初始同步和增量同步两个阶段。初始同步发生在备用站刚启动或重新加入时,需要把主站已有的归档和状态整体复制过来,数据量较大,耗时也较长;增量同步则在运行期间持续进行,只传输变化部分,负担较小。如果备用站在初始同步未完成时就被要求接管,可能出现部分数据缺失,因此工程上应尽量让备用站先完成初始同步再投入热备。
五、架构要点回顾
| 要素 | 作用 | 工程关注点 |
|---|---|---|
| WinCC Redundancy 选件 | 提供冗余连接、角色协商、同步与切换能力 | 两台服务器项目对称、冗余网卡独立 |
| 主站 Master | 对外提供报警、归档、操作服务 | 角色动态变化,不绑定固定机器 |
| 备用站 Standby | 热备运行,接收同步数据,监视主站 | 需先完成初始同步再投入热备 |
| 心跳检测 | 判断主站是否可用,触发切换 | 周期与超时需权衡,避免误切与慢切 |
| 同步机制 | 保证切换后数据连续 | 初始同步 + 增量同步,关注数据完整性 |
把这五个要素串起来看,WinCC冗余系统的运行逻辑就清晰了:冗余选件搭起两台服务器之间的通道,主站对外服务、备用站热备待命,心跳负责判断“主站还在不在”,同步负责保证“接管后数据不断”,故障切换则是在心跳判定失效后把角色交给备用站。理解这条链路,后续配置冗余项目、设置心跳参数、执行切换测试时,就能知道每一步在解决什么问题。