ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

MMC级联H桥容错与冗余控制:从故障定位到重构策略的工程实践

MMC级联H桥容错与冗余控制:从故障定位到重构策略的工程实践 MMC 级联 H 桥这类设备说白了就是一串 H 桥功率单元串联起来叠电压、出多电平在中高压变频、链式 SVG、储能 PCS 里越用越多。单元数量一上去单个子模块出故障就成了躲不开的现实容错与冗余控制也就从“可选功能”变成了“必做项”。今天不聊拓扑理论只讲工程上怎么配冗余、怎么发现故障、怎么在故障之后把装置重新组织起来继续干活顺带分享一些现场调试才踩得到的坑。平时经常被人问容错和冗余到底是不是一回事。我的回答是冗余是“预先多放几个能用的单元”容错是“故障后重新组织系统让它还能工作”。前者是硬件预算后者是控制策略两者配合起来才是一套完整的可靠性方案。这篇文章的读者应该是正在做中高压变流器、PCS、变频器或者任何子模块化变流装置的人哪怕你只是刚接触这类设备把这三块内容理顺了也能少走不少弯路。1. 为什么容错与冗余是级联 H 桥绕不开的设计题1.1 子模块故障是必然事件不是偶然事件功率单元数量上去了器件的总失效率跟着上去。一个桥臂串 20 个 H 桥整机可能就有 60 个甚至更多功率单元每个单元里又是 IGBT、驱动板、电容、旁路接触器一整套哪个环节闪失都能让整个桥臂停止输出。我在做某型 10kV 链式装置前期可靠性评估的时候按单模块年失效率粗算整机一年内发生至少一次可维护故障的概率已经高到不能忽略。所以拓扑结构越是模块化系统层面的容错设计就越要前置。这不是“多加几个备件”的口号而是需要从三个层面同时预留主电路层面要留出可旁路的电气通路控制层面要预埋故障检测和状态上报机制通讯层面则要保证故障信息能在几个周期内稳定上传主控。很多项目最后容错效果差不是某一个环节没做到位而是这三个层面没有对齐。1.2 容错和冗余到底在解决什么不同的问题冗余解决的是“硬件还有没有余量”容错解决的是“软件怎么把余量用起来”。常见的理解误区是拿冗余度直接等于容错能力这不对。给了 N2 的硬件但不做故障定位、不做旁路时序、不调整调制波故障一来照样跳机。反过来没有任何冗余的桥臂理论上也能通过降容坚持一小段时间但可用时间极短没有工程意义。我的设计习惯是先根据任务可靠度要求定冗余数量再围绕这组冗余配置去写故障后的控制逻辑每一个故障模式都要有对应处理路径。落到具体项目里我会在规格书阶段就明确允许几个单元同时故障、故障后维持额定还是降容、从故障发生到重构完成允许多少毫秒。这些指标定了后面主电路和控制软件的改动就有边界了。2. 冗余配置怎么选冷备用、热备用和裕度计算2.1 冷备用与热备用的取舍工程上常见的冗余方案是两种冷备用和热备用。冷备用是把额外的子模块放在桥臂里平时不给触发故障单元被旁路之后再把冷备用单元切入承担电压优点是待机损耗小缺点是切入瞬间冲击大需要预充电和相位对齐切换时间通常在几十毫秒级。热备用则让所有单元始终参与调制额定电压等级由全部 N冗余 个单元共同承担故障后把故障单元摘掉剩余单元继续按原逻辑运行切换快但热备用单元每天都在承受电容应力和电流应力老化和损耗都比冷备用大。对比项冷备用热备用待机损耗很小有持续损耗故障切换时间较慢几十毫秒级别快一个控制周期内可完成切入冲击大需预充电对齐小器件应力备用单元几乎无应力所有单元持续带应力适用场景对切换时间要求不苛刻对切换时间敏感的主电源场合实际工程里两者并不是完全对立。我见过不少系统采用“虚拟热备用”的折中方案备用单元平时并不投入调制但电容一直通过辅助回路维持在额定电压附近一旦需要切入省去预充电步骤冲击电流大幅小代价是备用单元的辅助供电回路要一直工作。这类细节在设计阶段就要想清楚否则现场改起来很被动。2.2 冗余度怎么定从 N1 到参数化方法最粗暴的做法是每个桥臂多配一个单元也就是 N1。但单元数量多的设备一个冗余量往往不够。我习惯先定可用度目标比如希望桥臂在两个检修周期内不因为单点故障而停机再拿子模块故障率去算。假设单个子模块年均故障率是 λ桥臂有 N 个额定单元、额外配 r 个冗余单元那允许 r 个单元故障后仍能维持额定的概率可以用泊松分布粗略估算。工程上r 取 1 到 3 就能覆盖绝大多数场景取太多成本收不住。曾有项目想把每个桥臂配 5 个冗余单元我按故障率和检修周期一算可靠性收益曲线已经很平硬件成本却增加了不少最后砍到 2 个。冗余不是越多越好而是要让“故障概率”和“检修间隔”匹配。现场运维如果三个月就全面巡检一次冗余可以少配如果一年才停一次机冗余就得留足。2.3 备用单元的接入位置与投切时序备用单元不是随便挂上去就行。桥臂串联结构里每个单元位置对应固定的电位、冷却条件和通讯链路。我的习惯是备用单元也放在桥臂中物理上随时能旁路脱离或投入而不是只放在备件库里。冷备用单元平时不参与调制但电容要通过预充电回路维持在额定电压附近这样故障切入时不会因为电位差产生大冲击。投入时序分三步先检测备用单元电容电压与桥臂实际电位是否匹配再解锁旁路回路让单元接入串联路径最后给该单元分配载波相位和均压队列位置。三步之间要加互锁否则很容易在切换瞬间把好单元也拖坏。我做热备用切换时一般把这三步收敛在一到两个 PWM 周期内完成对调制连续性影响很小。3. 故障定位三步走先把故障“看”清楚3.1 常见故障类型与故障机理H 桥子模块里最常见的是功率开关器件故障IGBT 开路、IGBT 短路、驱动板欠压或信号丢失、直流电容退化甚至失效。开路故障最阴险——系统还能跑但输出波形已经残缺谐波变大电容电压不平衡会缓慢积累短路故障最危险——如果不快速封波封锁 PWM直流母线相当于被直接短路可能烧毁更大范围。此外还有旁路开关本身的故障比如机械接触器粘连或驱动失效这种问题往往在故障重构时才会暴露出来。我把故障类型和对应表现整理成了一张表方便现场排查时快速对照故障类型典型表现优先定位手段IGBT 开路电容电压周期不对称输出波形残缺电压残差、波形形态IGBT 短路电容电压骤降桥臂电流异常硬件保护动作、快速封锁驱动信号丢失单元输出丢失状态字上报异常子模块状态字确认电容退化电压纹波增大温升偏高电容电压纹波分析旁路接触器粘连旁路后状态反馈错误旁路回路通流检测3.2 基于电容电压和输出波形的判据设计我这边实际用的故障判据第一看 H 桥电容电压。正常运行时电容电压围绕指令值波动上下偏差一般控制在 5% 以内如果某单元 IGBT 开路它在特定开关状态下电容不再正常充放电电压会持续偏移超限。第二看子模块输出电压与调制指令的残差这个残差在控制器里很容易算用一个基波周期的滑动窗口算 RMS 值超过阈值就报可疑。第三看桥臂电流 THD 和特征谐波电流畸变往往比电压偏差晚出现但能帮助确认故障影响范围。三个判据取“或”逻辑还是“与”逻辑取决于你对误报的容忍度。为了保护设备建议快速报警用“或”定位确认用“与”配合延时去抖误报率能压下来。阈值没有统一标准一般取额定电容电压的 5%~10%。我在某项目上试过把阈值调到 3%结果负载一波动就容易误报最后折中到 6%既不会漏掉明显故障也不会成天鸡飞狗跳。3.3 故障定位的工程实现定位故障单元不能靠猜。工程上每个子模块控制器会上报自己的状态量包括电容电压、温度、驱动故障信号、旁路开关位置反馈主控制器拿到这些信息后与电气判据交叉验证。我初期测试只靠电容电压排序做定位负载突变时误判过好几回后来改成“电气量初筛 各模块状态字确认”定位准确率和速度都上来了。定位时间一般控制在 1 到 2 个基波周期内。定位太慢故障扩展风险大定位太快抗扰动能力差。这里建议把“初筛、确认、旁路、重构”四步的状态机画清楚每一步都记录故障录波。故障录波这个东西现场排查时价值极高没有录波故障就像发生过又没发生过全靠人猜。4. 旁路投入与重构控制现场最容易出问题的环节4.1 旁路回路设计要点旁路开关是容错动作的执行机构很多项目在这里翻车。机械接触器便宜、漏电流小但动作时间在 10ms 量级而且大电流分断能力有限容易熔焊。晶闸管旁路速度快微秒级就能导通但导通后要等电流过零才能自然关断需要合理设计维持回路。固态开关速度最快成本也高、驱动复杂。我的建议是功率等级不太高时用晶闸管旁路配合机械旁路作后备两路并联兼顾速度和可靠。旁路动作后子模块的直流电容一定要通过放电电阻缓慢泄放避免长期带电。旁路导通过程中的冲击电流也得关注最好在主电路层面有限流设计否则故障重构瞬间旁路的浪涌会把旁边健康单元也震出保护。我碰到过一套设备故障单元旁路时相邻单元的驱动直接报过流就是旁路回路阻抗太低、冲击电流过大导致的。4.2 载波移相策略在线重构载波移相是最常用的调制方式正常 N 个单元平均错开 360/N 度相位。故障单元旁路后如果还按原来的载波相位发波输出波形质量会明显变差。我实际用到的做法是主控制器看到定位结果后把故障单元的载波相位从相位表中删除剩余单元重新均分相位同时把故障单元原本承担的电压份额重新分配到所有健康单元上。这个载波表更新操作必须在故障后 1 到 2 个基波周期内完成否则均压环会紊乱。重新分配之后电容电压排序队列也要同步更新把故障单元从队列里摘掉。现场实测下来重构完成后输出线电压 THD 基本能回到接近故障前的水平只是谐波带宽略窄一点。如果重构速度慢了系统会先触发过流或者过压保护容错等于没做到位。4.3 NLM 与排序均压策略的故障适配采用最近电平逼近NLM调制时故障后的处理更直接电平数从 Nr 降到 Nr-k控制器把目标电平序列相应减少就行但排序均压算法要特别小心。排序算法如果继续对故障单元做开关动作就会把故障单元反复“唤醒”容易引发二次故障。正确的做法是在排序前先屏蔽故障单元并更新均压队列。还有一个容易被忽略的细节故障单元旁路后桥臂等效开关节点少了单个健康单元的等效开关频率会上升温升压力变大。所以容量设计和散热设计都要留有余量否则故障没把设备搞停重构后的过温保护先动作了。我在某个样机上做过测试旁路掉一个单元后剩余单元的最高温升比正常工况高了不少后来水冷流量做了调整才压住。4.4 故障后的环流抑制与参数调整MMC 结构里桥臂之间本来就有环流故障后三相桥臂参数不对称环流会明显增大。我处理的办法是加一个环流控制器用准 PR 调节器把二倍频环流压到额定值以内同时观察桥臂电感电流如果电流脉动过大需要稍微降低调制比运行。对于级联 H 桥这种不带桥臂电感的场合故障相的电流分配会更难平衡这时候得靠单元间均压去强化收敛。这里建议桥臂电感设计时预留 10% 到 20% 的裕量就是给这种不对称工况准备的。当然这些都是事后补救真正稳的还是冗余配置让故障后剩余单元数量依然高于最小运行单元数量系统就始终有回旋余地。5. 三相不平衡工况下的降容运行零序注入和功率再平衡5.1 故障相容量下降后的运行边界故障单元被旁路后那一相的最大输出电压能力就减少了。如果三相都运行在额定点附近故障相肯定顶不上去整个系统就被迫降容。设每相额定单元数为 N故障后有效单元数为 Nf则该相最大输出幅值按 Nf/N 比例折算整体出力也要跟着降。核心问题不是“降多少”而是“怎么把剩余能力利用到极限”。对级联 H 桥这类每相独立、有零序通路的拓扑结构通过注入零序电压可以重新分配三相的电压利用率让故障相不越限的同时非故障相尽量多出力。对 MMC 三相桥臂直接耦合的结构相间能量再平衡靠环流控制实现本质也是类似的再分配思路。搞清楚了这一点你就能理解为什么同样是一个单元故障不同拓扑能坚持的出力水平差别很大。5.2 零序注入算法怎么落地零序注入说起来简单落地要小心。最常用的方法是实时计算三相调制波包络如果某一相调制波峰值超过限幅就整体叠加一个零序分量把三相峰值压回限幅范围内。具体可以这样算取三相参考波的最大值 umax 和最小值 umin若组合区间超出限幅框则叠加 u0 -0.5 * (umax umin)把可用区间整体平移到限幅框内。这个式子不用解三相复杂方程在控制器里每个基波周期算几次就能跟上。但注意零序注入会改变每一相相对中点的电压也会影响直流侧电容的功率分配实际调试时最好先在离线电磁暂态仿真软件里跑一遍再搬到控制器里。我做过一个项目就是先离线仿真验证算法再做硬件在环故障注入测试最后才上真机这样一步步走过来出问题的概率就小很多。5.3 降容策略与实际出力评估降容不是直接把指令调小那么简单。我习惯先算故障后三相可输出的最大调制比范围再按负载类型降额风机泵类负载可以降转速转矩需求小的负载甚至可以维持转速但降转矩如果负载必须降额要给上位机送一个“当前可用功率”状态字避免现场运维误以为是控制器抽风。实测数据供参考某 10kV 级联装置旁路一个单元后输出电流额定值能保持到大约 90%旁路两个单元后一般就降到 80% 以下这时是否继续运行要结合负载和温升判断。容错能力要在主控里量化为可用的出力边界而不是一个模糊的“能跑就行”。出力边界没有量化现场人员和上位机都不知道系统还剩多少能力很容易在极限状态下把设备逼停。6. 实战排查记录几个典型的“翻车”现场6.1 案例一IGBT 开路电容电压同步升高某项目调试中出现一个 H 桥单元的电容电压持续高出指令值 15%但整机没有立刻报警。拉故障录波发现这个单元在一个基波周期内的充电时间明显比放电时间长判断为 IGBT 开路导致单元只能充电、不能正常放电。处理方法是先封锁该单元 PWM再旁路重新分配载波相位系统降载运行。事后拆机确认是其中一只 IGBT 的门极驱动信号接触不良。这个案例给我的教训是不要等系统报“过压”才检查电容电压的周期不对称比单纯超限更早暴露故障。我在后续的故障诊断逻辑里加了“正负半周电容电压变化量对比”这个特征量对单管开路故障的敏感度提升不少。6.2 案例二旁路接触器粘连导致重构失败还有一次是故障重构时机械接触器闭合后无法反馈“已旁路”状态主控按旁路失败处理直接停机。原因是旁路电流太大触点熔焊在了一起。后来我们把机械接触器换成“晶闸管快速旁路 接触器后备”的组合并增加了旁路回路通流检测问题才彻底解决。这里特别提醒旁路开关的选型要看故障冲击电流和通流时间而不是只看额定电流。机械触点在大电流冲击下的熔焊风险在实验室里未必看得见到了现场大负载条件下是真的会发生。所以我在设计评审时一定会追问旁路器件的极限通流曲线不满足就换方案。6.3 案例三冷备用单元投入后直接过流冷备用单元第一次切入系统时电容电压与桥臂电压差异过大投入瞬间产生较大冲击电流把上游驱动都打保护了。原因是备用单元长期不带载电容电压和桥臂实际电位没有对齐。后面在备用单元待机期间增加了周期自检和预充电保持投入前再校验电压误差调整了切入时序冲击电流才压下来。这个坑说明切换速度不是越快越好而是“先对齐再切”才稳。很多人一开始都在追求毫秒级切换结果现场一次冲击就把开关管打了实际上多花十几毫秒做电压对齐对系统连续性影响并不大可靠性却高很多。6.4 案例四NLM 模式下故障单元旁路后谐波异常还有一次是 NLM 调制的系统故障单元旁路后电平数减少了但排序均压算法没有及时屏蔽故障单元导致健康单元频繁取向故障单元的开关位置输出电压出现明显毛刺。整改后把故障单元从均压队列中剔除并将均压排序周期适当加长波形立刻干净了。这类问题在纯软件仿真里有时显示不出来因为仿真模型没有接触器响应时间和开关损耗的实际差异。所以我的原则是容错策略必须用硬件在环或者真机故障注入来验证光看仿真波形会漏掉很多现场因素。7. 从调试现场总结的几条干货7.1 出厂联调时重点验证的容错场景我现在做这类装置出厂联调会强制要求跑这些场景单单元故障旁路、双单元故障旁路、旁路开关拒动、备用单元冷启动投入、故障期间输出跌落再恢复。每个场景都要记录从故障发生到重构完成的时间、降容比例、THD 变化作为出厂数据存档。仿真通过不算数必须真机做故障注入哪怕是低压模拟故障也比纯软件仿真可靠得多。这套出厂测试流程看起来多花了一些时间但能提前暴露一多半的现场问题。我曾经在一套样机上连着发现三个控制时序问题全是在故障注入环节暴露的要是直接拉到现场每个问题都会成为一次停机事故。7.2 现场运维中值得坚持的几个习惯现场调试时随身带一套故障录波分析工具故障发生后先看录波再复位不要急着消除报警。定期做冗余单元的脉冲测试让备用单元也轮流参与运行避免“关键时刻备件是坏的”。每次容错动作之后复位后的系统要重新执行一次自检确认旁路回路和通讯链路都正常再重新投入。最后再分享一个小技巧把故障后的重构策略做成“参数表 状态机”不要散写在乱糟糟的逻辑代码里。每个故障模式对应一组成熟的参数比如目标电平数、均压队列、载波相位表、降容比例这样处理故障时主控只需要查表切换逻辑清晰调参也快。我在几个项目里用这套思路现场问题定位时间平均缩短了三分之一这个收益是实实在在的。容错与冗余控制做到这个程度才算是真正能让人放心运行的可靠性设计。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进