ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

混合MMC直流故障穿越原理与仿真控制方法

混合MMC直流故障穿越原理与仿真控制方法 简介面向电力电子与高压直流输电研究者的混合MMC直流故障穿越控制资料包聚焦模块化多电平换流器在HVDC系统中的故障穿越难题。内容涵盖DC-FRT控制方法原理、桥臂能量平衡策略、短路电流抑制及STATCOM辅助支撑等核心环节并附有完整可运行的Python仿真代码覆盖系统参数定义、能量平衡控制器、直流故障穿越控制器与系统模型仿真便于读者逐一复现与二次开发。资料共1个docx文件压缩包大小52KB虽体量紧凑但理论推导与代码注释相互对照适合具备一定控制理论基础的高校师生、科研人员及工程师深入研读。目前已有90人学习下载可用于研究MMC直流故障穿越控制策略、开发新型算法、评估故障工况下换流器性能也可作为相关课程设计与项目仿真的参考资料。1. 混合模块化多电平换流器与直流故障穿越为什么是HVDC的硬需求做柔性直流输电仿真的人都有这种经历系统稳态调得再好一个双极短路故障就把整站打回原形。半桥MMC在直流侧短路的瞬间子模块电容经故障点放电交流系统沿换流器继续馈入短路电流几毫秒内流过功率器件的电流就会超过安全区。不把故障电流及时压住换流阀直接报废HVDC系统只能等交流断路器切除线路恢复时间以秒计。直流故障穿越要解决的正是这个问题让换流器在故障期间自己具备抑制电流的能力。混合MMC的思路是在桥臂里混入一批全桥子模块平时当正电平单元用故障时切到负电平输出用子模块电容电压抵消直流侧残余电压把故障电流钳到零。这套控制方法已是HVDC工程的主流方案之一仿真中控制逻辑怎么写对、参数怎么配、波形怎么判读就是下面要展开的内容。2. 混合MMC的子模块组成、故障电流路径与穿越原理为什么非要在MMC内部做文章对比一下主流方案就清楚了。直流侧加装直流断路器是另一种思路它直接切断故障电流响应速度也能到几十毫秒但一台高压直流断路器的成本几乎相当于半个换流站。换用全桥MMC可以无源穿越但全桥在所有工况下的损耗都比半桥高出一截。混合MMC正好在两者之间取平衡平时大部分子模块用半桥走低损耗路径故障时动员全桥子模块输出负压穿越能力换来的是适中的成本和可接受的稳态损耗。这个定位决定了它在HVDC工程仿真中出现的频率越来越高。2.1 半桥与全桥子模块在故障状态下的角色差异2.1.1 子模块结构与输出电平对比先明确两种基本子模块。半桥子模块HBSM由两个IGBT和一个电容组成正常工作时可以输出电容电压Uc和0两种电平导通损耗低、器件少所以柔性直流工程里绝大多数桥臂由它构成。全桥子模块FBSM用四个IGBT组成一个H桥电容可以正向接、反向接或者旁路因此能输出Uc、0、-Uc三种电平。多出来的负电平就是故障穿越的核心资源。子模块类型输出电平IGBT数量故障电流贡献成本/损耗半桥HBSMUc, 022二极管电容经故障点放电无法主动抑制低全桥FBSMUc, 0, -Uc44二极管可输出负压抬高故障点电压高混合MMC的桥臂由上述两种子模块串联工程上通常把全桥占比设在20%到50%之间具体取决于直流故障清除速度和交流系统支撑能力的要求。全桥占比越高负压注入能力越强但代价是器件数量和导通损耗上升。2.1.2 故障电流的物理路径直流双极短路发生后几个毫秒内故障电流来源主要分成两路。第一路是子模块电容放电桥臂里所有未旁路的子模块电容通过上下桥臂和故障点构成放电回路电流呈现RLC二阶衰减振荡特性幅值上升极快。第二路是交流系统馈入交流电网通过反并联二极管和导通着的IGBT形成不控整流路径持续向直流侧注入能量。如果子模块全由半桥构成这两路电流都抑制不住因为半桥只输出正电平或零电平无法在故障点建立反向电压。混合MMC的做法是检测到故障后把全桥子模块切入负电平输出状态让整个桥臂对故障点呈现一个与故障电流方向相反的电压源。当这个反向电压大于故障点残余电压时故障电流就被迫下降并最终被钳制在零附近。关键不是把换流器完全闭锁而是保持部分子模块可控让能量只在内部循环不再向故障点馈送。2.2 为什么混合MMC能做到“可控隔离”而半桥只能“被动等待”闭锁是所有MMC在严重故障时都会触发的保护动作它将所有IGBT关闭靠二极管不控整流续流。半桥MMC闭锁后故障电流依然通过二极管通路维持交流系统向直流故障点馈流直到交流断路器跳闸。混合MMC不需要完全闭锁它进入一种特殊运行模式半桥子模块按策略旁路或只输出零电平全桥子模块输出负电平桥臂的整体输出电压被调配成与故障电流方向相反的电压故障点电流减小到零的同时交流侧不再向直流故障点馈入能量。故障清除后可以重新启动整流/逆变调制恢复功率传输。这里要区分一个容易混淆的点故障穿越控制期间系统仍处于受控状态调制波、载波相位和电容均压算法都还在运行只是参考电压的生成方式切换到了故障模式。这也是“控制方法”和“保护策略”的根本区别。2.3 全桥占比怎么定负压需求与成本折中工程上确定全桥占比先要算故障瞬间需要的负压。假设直流电压标幺值为1pu桥臂子模块总数为N全桥占比α忽略电容电压波动时全桥可以提供αN份Uc的负压。要让故障点电流下降桥臂输出负压至少要抵消掉直流母线电压的一部分再加上桥臂电感反向电动势的裕量。取α0.2时若N200则有40个全桥子模块按每个电容电压1.6kV计算理论负压能力为64kV对±320kV系统来说约占20%的直流电压配合电流变化率控制已经可以把短路电流限制在可控范围内。要提高故障清除速度就得往上加到0.3到0.5。全桥占比不是越高越好器件数量、导通损耗、子模块电容成本都随α线性上升还有IGBT串联均压复杂度。实际工程的做法是先定“故障清除时间目标”再反推负压注入能力最后用仿真校核桥臂电流峰值和电容电压波动。这个顺序在仿真和真机上一致先算清楚再动手建模能避免很多无效迭代。3. 直流故障穿越控制策略检测判据、负压注入与重启时序故障穿越控制的第一步是能在极短时间内分辨出“瞬态扰动”和“真实故障”。常见的检测量有三个直流电压跌落幅度、直流电流上升率di/dt、直流电流瞬时值过流。电压跌落最容易测但响应偏慢电流变化率最快但噪声敏感所以工程实现一般把三者结合用“三取二”判据降低误动率。3.1 故障检测判据与防误动逻辑检测量阈值响应速度抗扰动能力直流电压跌落小于0.85pu慢毫秒级强直流电流变化率大于0.2pu/ms快亚毫秒级弱直流电流过流大于1.5pu中中电压跌落到0.85pu以下说明直流侧已经出现低阻通路电流变化率超过0.2pu/ms说明这个通路正在快速建立过流判据则作为故障持续存在的确认。三者取二再加一个短延时能避开交流系统扰动和对端功率阶跃造成的瞬时电压跌落。我一般在仿真里用下面这段逻辑做检测function fault_flag detect_fault(u_dc_pu, i_dc_pu, di_dc_pu, t, params) % 输入直流电压标幺值、直流电流标幺值、直流电流变化率标幺值、当前时刻 % 输出fault_flag1表示确认进入故障穿越模式 persistent start_time; persistent armed; if isempty(start_time) start_time 0; armed 0; end % 判据1直流电压跌落至0.85pu以下 c1 (u_dc_pu 0.85); % 判据2直流电流变化率超过0.2pu/ms c2 (di_dc_pu 0.2); % 判据3直流电流超过1.5pu c3 (i_dc_pu 1.5); % 三个判据满足任意两个且持续0.1ms以上才确认故障 if (c1 c2 c3) 2 if ~armed start_time t; armed 1; end if (t - start_time) 0.1e-3 fault_flag 1; else fault_flag 0; end else armed 0; fault_flag 0; end end判据1的电压阈值0.85是柔性直流保护里常用的低电压判据起点判据2的0.2pu/ms对应电流快速上升段能在故障后一到两毫秒内触发判据3是过流保护的回退判据。0.1ms延时的作用是滤除测量噪声导致的瞬时抖动。注意仿真里的0.1ms延时取值相对乐观真实换流阀控制中还要加上测量环节的固有延时通常要放宽到0.5ms以上否则容易在噪声环境下频繁误触发。3.2 负压注入与电容电压平衡故障确认后调制出的参考电压不再是正弦波而是按“故障清除”目标特制的波形。混合MMC最常见的做法是让全桥子模块工作在负压注入模式将全桥子模块的输出电压参考设置为负的电容电压同时让半桥子模块保持旁路或零电平输出。此时桥臂电压等于全桥子模块负电压之和故障点电流在该反向电压作用下快速下降。负压注入不是让所有全桥子模块都全力以赴输出-Uc因为电容电压需要均衡。仿真中通常用一个占空比调节逻辑function n_fb_neg calc_neg_injection(u_dc_fault, params) % 根据故障时直流电压计算需要投入负压的全桥子模块数量 % params.n_fb_total: 全桥子模块总数 % params.uc_nom: 子模块电容额定电压(kV) u_need u_dc_fault * 0.5; % 需要补偿的直流电压取故障电压的一半 n_fb_neg ceil(u_need / params.uc_nom); n_fb_neg min(n_fb_neg, params.n_fb_total); endu_need取故障电压的一半是考虑到桥臂电感还要继续支撑电流下降留出一半电压给电感储能释放n_fb_neg是实际投入负电平的全桥子模块数。投切顺序按照电容电压排序电压高的优先投入负压输出这样负压注入的同时也在做大范围的电容均衡。这个方案简单、稳定、参数少缺点是负压值不能连续调节会有电压台阶但配合桥臂电感的续流作用电流波形已经足够平滑。3.2.1 负压注入时的电容电压排序细节负压注入模式下全桥子模块持续输出负电平会让一部分电容持续放电如果不做切换个别电容电压会明显跌落重启时容易过流。常见的做法是给每个全桥子模块一个投切周期在一个开关周期内按电容电压排序轮流输出负压等效于让全桥整体输出一个平均值。这个思路与正常工况下的电容均压排序算法完全一致只是排序的方向相反输出负压时电容电压最高的优先放电而不是最低的。这个细节恰恰是“代码能跑”和“结果正确”的分水岭。如果负压注入时不带电容排序仿真波形看起来故障电流也能压住但重启的瞬间电容电压离散度会很大往往直接触发过流保护或者造成个别子模块电容电压越限。3.3 故障清除后的重启时序故障电流归零后并不是立刻把调制波切回正弦。直流线路相当于被短路放电后重新充电电容电压需要时间恢复所以重启要分两步先让换流器工作在“电压建立模式”以受控电流源的方式对直流线路充电将直流电压从零缓慢抬升到额定值电压达到额定值且电流稳定后再切回正常的功率控制。重启时序在仿真里一般用状态机实现三个状态分别是故障穿越态、电压建立态、稳态运行态。状态切换条件要跨过“电流小于门槛且持续一定时间”防止故障没清除就重启。我在实际仿真中还发现重启电流限幅如果直接取稳态额定值往往会在充电初始阶段触发限流导致直流电压建立缓慢更好的做法是按升压斜率分段限流电压低时允许更大充电电流电压接近额定值时再收紧。4. 仿真模型与可运行代码搭一版混合MMC直流故障穿越4.1 顶层结构与参数表在MATLAB/Simulink中搭混合MMC故障穿越模型常见结构是“交流电源换流变压器混合MMC直流线路故障发生器对端站”。MMC可以用单相或三相桥臂的详细模型也可以用平均值模型。故障穿越控制更关注动态过程所以用平均值模型已经足够要验证子模块电容应力、开关器件时序则需要详细模型。两种模型的控制代码差异不大主要差异在桥臂参考电压到子模块投切命令的转换部分。参数取值说明额定直流电压±320kV点对点HVDC常用电压等级桥臂子模块总数N200每桥臂其中全桥子模块60占30%满足负压注入需求子模块电容3mF按电容储能时间常数选择桥臂电感45mH抑制环流与故障电流上升率故障电阻0.01Ω模拟双极金属性短路控制采样频率10kHz控制周期100μs求解器ode23tb变步长含开关过程仿真常用这个表里的数值是工程上常见的一组合适参数。故障电阻取0.01Ω接近金属性短路仿真时容易暴露控制器参数偏小的问题属于极端算例。4.2 故障穿越控制完整代码下面是一个完整的MATLAB函数文件保存为fdtc_controller.m之后可以在MATLAB脚本里直接调用做逻辑验证。在Simulink的MATLAB Function块中使用时由于该模块不支持局部函数把detect_fault和calc_neg_injection两个局部函数的内容展开合并到主函数即可。function [mode, n_fb_neg, u_ref_rebuild, n_fb_pos] fdtc_controller(u_dc_pu, i_dc_pu, di_dc_pu, t, params) % 混合MMC直流故障穿越控制器 % 输入直流电压pu直流电流pu直流电流变化率pu/s当前时间t参数结构体params % 输出 % mode: 0稳态运行 / 1故障穿越 / 2电压建立 % n_fb_neg: 需要投入负压的全桥子模块数 % u_ref_rebuild: 电压建立阶段的升压参考值 % n_fb_pos: 电压建立阶段投入正压的全桥子模块数 u_base params.u_base; % 直流电压基准值kV uc_nom params.uc_nom; % 子模块电容额定电压kV n_fb_total params.n_fb_total; fault_flag detect_fault(u_dc_pu, i_dc_pu, di_dc_pu, t, params); if fault_flag % 故障穿越态只做负压注入不做升压 mode 1; n_fb_neg calc_neg_injection(u_dc_pu * u_base, params); u_ref_rebuild 0; n_fb_pos 0; else if u_dc_pu 0.95 % 电流已经归零直流电压还未恢复进入电压建立模式 mode 2; n_fb_neg 0; n_fb_pos n_fb_total; % 全部全桥先参与重建电压 u_ref_rebuild u_base * 0.05; % 每步抬升5%电压参考 else % 电压恢复至95%以上切回稳态 mode 0; n_fb_neg 0; n_fb_pos n_fb_total; u_ref_rebuild 0; end end end function fault_flag detect_fault(u_dc_pu, i_dc_pu, di_dc_pu, t, params) % 故障检测三取二判据加延时确认 persistent start_time; persistent armed; if isempty(start_time) start_time 0; armed 0; end c1 (u_dc_pu 0.85); c2 (di_dc_pu 0.2); c3 (i_dc_pu 1.5); if (c1 c2 c3) 2 if ~armed start_time t; armed 1; end if (t - start_time) params.t_fault_delay fault_flag 1; else fault_flag 0; end else armed 0; fault_flag 0; end end function n_fb_neg calc_neg_injection(u_dc_fault, params) % 负压注入数量计算 u_need u_dc_fault * 0.5; n_fb_neg ceil(u_need / params.uc_nom); n_fb_neg min(n_fb_neg, params.n_fb_total); end主控制器的核心是mode切换逻辑。故障穿越态只做负压注入不做升压直流电流归零后进入电压建立态全桥子模块全部转为正电平输出每步抬升5%的电压参考让直流线路电容缓慢充电电压达到95%以上才认为故障清除完成切回稳态调制。这样设置的好处是控制状态不会来回抖动重启过程平缓不会因为故障点电弧重燃导致二次过流。参数说明params.t_fault_delay建议取3e-4到1e-3秒之间取值越小故障响应越快但抗扰动能力越差params.u_base、params.uc_nom、params.n_fb_total需要与实际模型保持一致。如果你的仿真里电流归零但电压建立不了先检查故障电阻设置是不是太小以及故障发生器是否真的在电流归零后被切除。4.3 波形判读与“仿真发散”排查最典型的故障穿越成功波形是故障时刻直流电流迅速上升约1到2ms后负压注入生效电流掉头向下并在几个毫秒内归零故障穿越期间直流电压维持在较低水平不出现持续振荡重启阶段直流电压按阶梯上升电流保持在限幅值以内。如果看到电流归零后又有一次小尖峰先怀疑是不是负压投入的全桥数量计算有误用calc_neg_injection里的u_need乘以实际参与的全桥数量对比电容电压总和即可。模型出现开关切换不收敛、Simulink瞬态仿真不收敛也很常见。这类故障穿越模型推荐使用二阶隐式求解器并在桥臂电感、线路电感上添加合适的初始状态。遇到仿真发散先做三步排查第一步把故障电阻调大到1Ω再跑确认控制逻辑正确后再改回小电阻第二步把控制采样周期从10kHz降到5kHz看是否数值震荡第三步检查detect_fault里的延时逻辑确认故障标志在故障期间没有被复位。多数情况下问题出在故障标志抖动而不是控制参数本身。5. 换流阀实现里的几个关键调试技巧从仿真到工程验证5.1 单桥臂试验与调制波连续性检查在仿真里验证故障穿越逻辑时我通常先做单桥臂试验再做三相机组试验。单桥臂试验只保留一个桥臂直流侧用独立电源代替对端站用来单独验证负压注入与电容平衡算法这样能把故障穿越控制方法和子模块排序算法隔离测试避免三相耦合让排错复杂化。这个做法在工程联调时同样适用先用功率模块级测试台验证单个全桥子模块的负压输出能力再上桥臂级测试。另一个容易被忽略的验证点是“故障期间调制波是否持续更新”。有些实现里故障穿越模式直接把调制波冻结成恒定占空比这在小规模仿真里看不出问题但在考虑电容电压波动和IGBT散热时会暴露问题。更好的做法是让调制波保持更新只是参考值由正弦波切换为“故障抑制参考”这样可以保持均压算法的连续性恢复稳态时不会出现相位跳变。5.2 恢复速度指标与参数裕量最后提一个具体的验证技巧在故障穿越期间给子模块电容电压、故障电流和直流母线电压分别加Scope测量点把故障电流归零时刻和直流电压回升起点对齐到一个时间轴。如果故障电流归零到直流电压开始上升之间的时间差超过5ms说明重启判据太保守。把这个时间差写进仿真自动化脚本里每次改动控制参数后自动记录可以快速建立参数与恢复速度之间的对应关系。仿真中稳定的判据到真机上还得再考虑测量延时、开关器件死区和保护死区这些因素会直接改变故障检测的确认时间。所以上面所有仿真参数都建议留出至少20%的裕量再进入功率模块级测试环节。本文还有配套的精品资源点击获取
返回列表