ARTICLE DETAIL

资讯详情

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

直流微电网并联变换器均流与电压补偿:一致性算法分层控制解析

直流微电网并联变换器均流与电压补偿:一致性算法分层控制解析 直流微电网里并联变换器的均流入门时大家都会用下垂控制。真正让人头疼的是均流精度上去了母线电压就掉下来想把电压拉回来二级控制一加上去又容易和原来的主电压控制环打架。这个问题的核心在于二级控制基于一致性算法产生的补偿量必须压在“主电压控制层之上”去起作用。这篇文章我就围绕这个分层结构把一致性算法怎么做均流和电压补偿、补偿量在哪个环节叠加、以及我在仿真和实验里踩过的坑一次讲清楚适合刚接触微电网分层控制的同学对照着搭系统。1. 先看清一级下垂的“两难”均流精度和电压质量为什么天生冲突1.1 从两个并联变换器推导均流偏差很多人以为并联DC-DC变换器的均流问题只要把下垂系数调大一点就行。表面看确实如此但代价往往藏在电压里。先看最基础的模型两台变换器并联向同一个直流母线供电每台变换器输出端都有一段线路电阻分别记为 R_line1 和 R_line2。一级下垂控制的表达式很简单V_out_i V_nom - k_d * I_iV_nom是空载参考电压k_d是下垂系数I_i是第i台变换器的输出电流。考虑到线路电阻后母线公共点电压 V_bus 满足V_bus V_nom - (k_d R_line_i) * I_i并联运行时各支路在母线公共点的电压必然相等所以可以写出等式V_nom - (k_d R_line1) * I_1 V_nom - (k_d R_line2) * I_2化简后就是I_1 / I_2 (k_d R_line2) / (k_d R_line1)从这个式子能看出线路电阻差异是均流误差的根本来源。假设额定电压48VR_line1等于0.02ΩR_line2等于0.08Ω下垂系数k_d取0.2Ω。代入后 I_1/I_2 (0.20.08)/(0.20.02) ≈ 1.27这就意味着线路电阻较小的那台变换器要多带约27%的电流电流分配偏差接近12%。如果把k_d减小到0.05ΩI_1/I_2会变成 (0.050.08)/(0.050.02) ≈ 1.857电流偏差直接拉到46%。这说明下垂系数越大由线路阻抗差异引起的均流误差越小。但注意k_d出现在V_bus表达式的压降项里k_d越大负载变化时母线电压跌落越严重。这就构成了第一对矛盾均流精度和电压质量无法同时靠一级控制解决。1.2 电压偏差是被“压低”的代价继续用上面的数值算一笔账。假设整个系统输出总电流20Ak_d取0.2Ω忽略线路电阻差异的影响母线电压相对空载参考电压的跌落大约是 (0.2 0.02) * 11.2 ≈ 2.46V如果V_nom取48.5V母线电压已经掉到46V左右。在工程上直流母线电压通常要求维持在额定值的±5%以内也就是48V母线的下限约45.6V。单看上限一级控制可能勉强够用但一旦负荷继续增加、或者某条支路线路老化导致电阻增大电压就会明显低于允许范围。一级控制本质上是一种无差别的“静态特性”——它用输出电压的跌落换取电流的分配。这种策略的好处是不需要任何通信插上就能用天然具备即插即用特性。坏处也很直接它把电压质量当成了均流的“燃料”。为了让电压不跌太多通常会限制k_d不能取太大但k_d太小均流又不行。实际工程里很多人会取一个妥协值比如让满载压降控制在5%到8%均流误差控制在10%到20%以内。这种妥协在低压小功率场合还能忍但在对供电质量要求比较高的场景下基本过不了验收。2. 二级控制压在电压主控环之上不是架构摆设2.1 分层控制的带宽分配与信号流为了解决一级控制的矛盾业内通用的做法是加二级控制。所谓“二级控制位于主电压控制层之上”指的是它在控制链路上的位置它不直接改变底层电压环、电流环的PI参数也不直接碰PWM调制而是生成一个修正量叠加到一级下垂控制的参考电压上。换句话说一级控制决定“基础电压曲线”二级控制在上面做平移修正。为什么要强调“位于主电压控制层之上”因为底层电压电流环的带宽很高电流内环通常在1kHz以上电压外环也有100Hz到200Hz左右。二级控制基于通信网络通信周期一般只有几十毫秒如果让它直接参与底层斩波控制采样和传输延时都可能破坏系统稳定。把它放在电压参考修正的位置相当于在慢速时间尺度上做“趋势纠偏”不影响底层快速环节的动态响应。控制信号流从上到下可以画成测量层 V_meas_i, I_meas_i ↓ 低通滤波 二级控制一致性交换与邻居通信 → I_avg_i, V_avg_i → ΔV_i PI(V_nom - V_avg_i) kI*(I_avg_i - I_i) ↓ 限幅 一级控制V_ref_i V_nom - k_d*I_i ΔV_i ↓ 底层控制电压外环 → 电流内环 → PWM这个框图我建议做仿真前先自己在纸上画一遍。很多人做分层控制容易犯的错就是一上来就在Simulink里搭模块结果二级控制的输出到底应该加在哪个求和点都不清楚。只要想明白二级控制只是在上层“挪动”电压参考线剩下的结构就顺了。2.2 补偿量在哪个环节叠加决定了系统稳不稳叠加位置的问题可以类比成“有人在楼下调空调面板有人在机房改空调设定值”。如果你在底层电流内环里直接改目标值相当于把整条反馈回路的目标在毫秒级时间尺度上反复移动很容易激起振荡。而在电压参考端补偿相当于每几十毫秒做一次小幅修正底层环路有足够时间去跟随。具体到公式上一级下垂控制原本的输出是V_ref_i0 V_nom - k_d * I_i加入二级补偿后变成V_ref_i V_ref_i0 ΔV_i这里的ΔV_i就是二级控制器的输出它由两部分构成一部分来自均流误差一部分来自电压偏差。关键点是这两部分都以电压参考修正的形式输出而不是直接等于“某台变换器要多出多少电流”。比如某台变换器检测到自己的电流高于平均值一致性算法会计算出一个负的电压偏置让它的参考电压稍微降一点从而减小输出电流相反电流偏低的变换器会得到正的偏置。这样一来所有变换器经过有限次调节电流逐渐趋于一致母线电压也被整体抬回额定值。3. 一致性算法怎么“谈”出一致的电流和平均电压3.1 邻居协商的迭代公式与收敛条件一致性算法最简单的形式是离散一阶迭代每个节点只和通信拓扑中的邻居交换信息不依赖中央控制器。第i个节点在第k个控制周期的状态更新公式是x_i(k1) x_i(k) ε * Σ_{j∈N_i} a_ij * ( x_j(k) - x_i(k) )N_i表示与节点i相邻的节点集合a_ij是通信权重ε是收敛步长。用一个生活化的类比一群人在一个房间里互相喊自己当前手里的数值每次迭代每个人都朝邻居的平均值靠近一步经过若干轮所有人的数值会收敛到同一个值。如果初始状态是各节点测量的电流收敛后的公共值就是全局平均电流如果状态量换成电压估计收敛后的公共值就是全局平均母线电压。从矩阵角度看把所有节点状态写成向量x(k)公式可以写成x(k1) (I - εL) x(k)L是通信图的拉普拉斯矩阵。只要通信图是连通的并且步长满足0 ε 2/λ_max(L)系统就会收敛。λ_max(L)是拉普拉斯矩阵的最大特征值物理意义可以理解为通信拓扑对状态差异的“放大极限”。这个条件极其重要因为它直接给出了步长的上限。实际应用中通常留出50%以上的裕量因为理论值是在理想线性条件下推出来的真实系统还有测量噪声和延时。3.2 通信图连通性与权重设计通信拓扑对一致性收敛速度影响很大。最简单的拓扑是环网每个节点只跟左右邻居通信复杂一点用全互联每个节点知道全局信息。全互联收敛快但通信成本高、单点故障影响面大环网成本低但收敛速度相对慢。直流微电网里的变换器台数通常不超过几十台我自己的经验是环网或者相邻连接就够了没必要搞全互联。权重矩阵的选取也有讲究。如果要保证所有节点状态收敛到初始值的算术平均那么权重矩阵必须满足随机性和双随机性每一行和为1每一列和也为1。常见的做法是Metropolis权重公式如下a_ij 1 / ( max(d_i, d_j) 1 ) i和j相邻 a_ii 1 - Σ_{j∈N_i} a_ij其中d_i表示节点i的度数。这个权重的好处是只需要知道自己和邻居的度数不需要全局信息天然适合分布式实现。我在仿真里验证过同样是4节点环网用Metropolis权重比简单等权权重收敛快大约20%到30%而且超调更小。4. 均流项和电压补偿项如何在一个控制器里共存4.1 电流一致性变量目标电流由邻居共同决策均流的目标是让各台变换器的输出电流按比例分配。如果各台容量相同目标就是输出电流相等如果容量不同需要按容量比例折算比如把状态量定义成I_i / I_rated_i。为了叙述方便下面以容量相同为例。每个控制周期内节点i向邻居发送自己的电流测量值同时接收邻居的电流测量值然后通过一致性迭代计算全局平均电流I_avg_i。这里有个工程细节一致性算法需要一定轮次才能收敛但二级控制的每个周期不可能等它迭代几千次。实际做法是在每个控制周期内只迭代固定次数比如5到10次或者直接采用动态一致性算法让估计值在相邻周期之间连续跟踪真实平均值。无论哪种实现最终目的都是让每个节点拿到一个“全局平均电流”的本地估计然后计算偏差e_I_i I_avg_i - I_i这个偏差乘上增益后叠加到电压参考修正量中。正增益意味着电流偏大的节点会收到负向电压修正从而降低输出电流最终所有节点电流向平均值靠拢。4.2 平均电压观测不需要中央控制器也知道电压偏低电压补偿的核心是恢复母线电压到额定值。但要直接以“母线电压”为控制目标每个节点只知道自己端口附近的局部电压并不知道全系统平均水平。这里可以用一致性算法的另一面平均电压观测。每个节点把本地测量电压作为状态量初始值与邻居交换并迭代收敛后得到全局平均电压的估计V_avg_i。有了V_avg_i电压补偿项可以设计成PI结构ΔV_v_i kp_v * (V_nom - V_avg_i) ki_v * ∫(V_nom - V_avg_i) dt积分项的意义在于消除稳态电压偏差。如果只用比例项母线电压总能被抬高一部分但无法严格回到48V加上积分项后只要平均电压低于额定值积分器就会持续增加补偿量直到偏差归零。这是二级控制与一级控制最大的区别一级下垂是有差调节二级电压补偿是准无差调节。4.3 两个补偿量的叠加顺序和解耦考虑现在有两个补偿来源一个来自电流偏差一个来自电压偏差。它们最终都要变成电压参考的修正量。常用的合成方式是直接相加ΔV_i ΔV_v_i kI * (I_avg_i - I_i)注意电流补偿项的正负号千万别搞反。I_avg_i - I_i为正说明本地电流小于平均值应该让这台变换器多输出一点电因此给正的电压参考修正反之给负。很多新手在这里容易犯迷糊结果越补偿均流越差。均流项和电压项之间其实存在耦合。电压补偿把整体参考线抬高后各节点电压都变高输出电流也会跟着变反过来均流项改变某节点参考电压又会扰动局部电压估计。理论上这两个回路是交织的但在实际参数设计时可以让电压补偿环路的动作速度比均流环路慢一点或者反过来只要带宽拉开一个量级耦合影响就会显著减小。我在调试时习惯把电压补偿的PI带宽定在5Hz左右均流补偿的增益取得更保守一些让它们各管各的频段系统要干净很多。5. 从仿真到实验参数整定与我在调试中踩过的坑5.1 仿真初始化和二级控制投入的时序仿真环境我通常用Simulink搭建整套直流微电网模型。底层用Buck变换器模型开关频率设20kHz电压外环带宽约100Hz电流内环带宽约2kHz。一级下垂的参考电压设成48.5V满载允许压降控制在5%左右。通信模块用零阶保持器实现离散一致性通信周期取20ms。第一次跑仿真时最容易犯的错误不是参数不对而是二级控制投入时序不对。如果系统一上电就让二级控制全量输出一致性迭代还没收敛补偿量可能很大母线电压会冲出保护限值。我一般分三步走先单独跑一级下垂控制让系统在某个固定负载下稳定。给一致性算法一个“预收敛”阶段比如持续100到200ms让各节点的I_avg和V_avg估计值先接近真实平均值但此时不把ΔV_i加到电压参考上。第二阶段投入补偿同时给ΔV_i加一个斜坡限幅斜坡时间300到500ms让补偿量从0逐渐升到目标值。这样处理以后母线电压不会出现阶跃性冲击电流波形也更平缓。5.2 一致性步长、PI参数和限幅怎么定参数设计是有套路的。先定一致性步长ε。以4节点环状通信拓扑为例拉普拉斯矩阵的最大特征值是4理论上0 ε 0.5但实际为避免发散我会取0.05到0.15之间。收敛慢一点没关系反正二级控制的采样周期是20ms多迭代几轮也就几百毫秒系统完全等得起。然后是电压补偿PI参数。kp_v的初始值可以从0.1开始ki_v从1开始基于离散积分时间20ms折算。调的时候先只给比例项观察母线电压的静差再逐渐增加积分系数。但要记住二级控制带宽不能越过底层电压环带宽的1/10否则容易被底层环路的相位滞后拖入振荡。一个比较安全的带宽参考值是5到10Hz。均流增益kI需要结合下垂系数来设。如果k_d是0.2ΩkI的数值过大会导致电流偏差项完全抵消了下垂特性的“软”作用极端情况下等效于把某台变换器的下垂曲线拍平了。我自己常用的范围是0.05到0.2调试时从小到大加同时观察母线电压的波动范围。补偿量还必须加限幅我一般限制在±5%的额定电压以内也就是48V母线限到±2.4V。没有限幅负载瞬态期间补偿量可能飙到十几伏造成严重的过压或欠压。下面的表格是我常用的一组初始参数实际使用时需要根据系统容量和线路参数调整参数符号初始范围注意事项通信周期T210ms~50ms至少低于底层电压环带宽的1/10一致性步长ε0.05~0.154节点环网上限约0.5实取半裕量以下电压比例增益kp_v0.1~0.5从0.1开始加观察静差电压积分增益ki_v1~10积分时间不能太短避免引入低频振荡均流增益kI0.05~0.2与下垂系数匹配过大会削弱下垂均流稳定性补偿量限幅ΔV_max±5% V_nom必须加否则负载瞬态会冲击5.3 通信延时、节点掉线和投切冲击的实测问题实验平台和仿真最大的差异就是通信网络非理想。我用过CAN总线做节点通信也试过EtherCAT两者的典型周期延时在1ms到5ms左右。通信延时对一致性算法的影响要分情况看如果每个节点的采样和发送严格同步固定延时只是把信息交换时间整体往后推相当于离散系统多了一个纯延时环节在收敛步长留足裕量的前提下问题不大。最怕的是随机延时和丢包节点收到邻居的数据时间早晚不一迭代公式里的x_j(k)会混入不同周期的旧值轻则收敛变慢重则持续振荡。处理办法有两个思路。一个是在接收端打时间戳把同一时刻的邻居数据对齐后再参与迭代另一个是缩小一致性步长用收敛速度换鲁棒性。我实际测试下来步长从0.1降到0.05收敛时间从大约0.2秒增加到0.4秒但系统在10%丢包率下依然稳定这个代价完全值得。节点掉线也是个常见工况。某台变换器因为保护动作退出运行后一致性通信图中少了一个节点剩余节点组成的子图可能仍然连通那么均流和电压补偿会继续工作只是目标值会变成剩余节点的平均值。这里要注意的是掉线节点的邻居会把它的状态信息从本地表中删掉而不是一直存着旧值否则旧数据会把平均值拉到错误方向。重新并网时节点应该先把本地估计值重置为最新的电流电压测量值再重新加入通信迭代避免用旧初值把整个网络带偏。还有一次实验经历让我印象很深。当时我在做负荷投切测试20A的负载突然切到60A二级控制补偿量瞬间加大因为限幅设得比较宽母线电压在300ms内冲到了53V保护装置直接动作。后来我把补偿量限幅收紧到±2V同时加了一阶惯性滤波才把电压包络压住。这个教训说明二级控制虽然慢但它的补偿量直接坐在电压参考上一旦在瞬态过程中输出饱和对系统的影响甚至比一级控制更剧烈。另外底层电流测量噪声也会被一致性算法“平均”掉一部分但如果均流增益kI和电压补偿积分增益取得很大噪声反而会被放大体现在输出电压毛刺上。所以在实验调试时我会先确认电流传感器的滤波截止频率通常取100到500Hz的低通滤波避免高频噪声进入一致性迭代。最后说一个我自己的习惯。每次在新平台上调这套控制我都会先在纯仿真里把通信理想、采样同步的情况跑通然后刻意加一个50ms的延时和随机丢包看看一致性算法还稳不稳。没有这一关我是不敢直接上实验台的。因为二级控制慢但慢不代表它不会闯祸——一旦补偿量和底层环路的相位不对母线电压包络晃起来比一级控制参数没调好更难看。
返回列表