ARTICLE DETAIL

资讯详情

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

光伏并网逆变器阻抗建模与扫频验证全流程实操

光伏并网逆变器阻抗建模与扫频验证全流程实操 开工前先聊两句实在的。做光伏并网逆变器控制的人早晚都会撞上“稳定性”这堵墙——尤其是当你把锁相环和电流环都建进模型发现扫频结果和理论阻抗曲线对不上的时候那种挫败感我太熟了。这篇博文就从我复现博士论文里“阻抗建模扫频验证”这一整套流程讲起把 Simulink 里怎么搭模型、怎么注入扰动、怎么算阻抗、怎么看稳定性一步不落全盘托出。适合正在做并网逆变器小信号建模、或者被导师丢来复现阻抗论文的硕博生也适合刚接触扫频法、想搞清楚“为什么扫出来长这样”的工程师。1. 整体设计思路与建模方案选型1.1 为什么一定要做阻抗建模阻抗建模这件事说白了就是把逆变器看成一个“黑箱子”从电网侧往里面看它对外呈现的电气特性用阻抗或者导纳来描述。为什么要这么做因为并网系统本质上是一个“电压源电网 电流源逆变器”的级联结构两个子系统单独看都稳定但接在一起就可能振荡这就是所谓的“负阻效应”和“阻抗交互失稳”。经典的小干扰稳定性判据——奈奎斯特判据、阻抗比判据——都建立在阻抗模型之上所以拿不到准确的阻抗表达式后面一切稳定性分析都是空中楼阁。在复现论文时我第一步做的就是先明确研究对象单级式三相光伏并网逆变器直流侧接光伏阵列这一步在稳定性分析里可以先用理想直流源替代但要保留MPPT对直流电压的动态影响否则低频段阻抗会出现偏差交流侧通过LCL滤波器并入电网。论文里用的是dq旋转坐标系下的阻抗模型因为在同步旋转坐标系下基波分量变成直流分量稳态工作点清晰小信号线性化处理起来非常方便。1.2 锁相环和电流环两个绕不开的动态环节如果你只考虑电流环、忽略锁相环那这套阻抗模型在低频段基本是“准”的但只要涉及弱电网短路比SCR比较低工况锁相环的动态就会显著影响输入导纳甚至直接把阻抗实部拉到负值引起次同步振荡。复现的时候我遇到最大的坑就是锁相环在dq坐标系里引入了非对角耦合项。也就是说逆变器对外呈现的阻抗矩阵不是对角阵d轴和q轴之间存在交叉耦合尤其在低频率段q轴扰动会通过PLL在d轴电流上产生响应。论文的方法是对整个系统做“多输入多输出”的dq阻抗推导最后得到一个 2×2 阻抗矩阵然后基于广义奈奎斯特判据判断稳定性。我在验证扫频法时用的也是这一套完整建模没有做简化才能在后续对得上理论曲线。1.3 扫频法 vs 解析法为什么两边都要做解析法适合“算”扫频法适合“验”。单独做任何一边都容易翻车纯解析推导阻尼参数、PI系数稍有偏差表达式就失真了纯仿真扫频看不到每个环节的贡献出问题都不知道往哪改。我最终的方案是先用解析法得到阻抗频域表达式包含电流环、锁相环、数字控制延时画出理论值曲线再在Simulink里用扫频法测阻抗两条曲线叠在一起对比。两者误差在5%以内就算通过这是论文复现里最硬核的检验标准。2. 解析建模推导从控制框图到阻抗表达式2.1 dq坐标系下的系统线性化这一节是整个复现的理论基石。在同步旋转坐标系下三相逆变器的平均值模型可以写成L di_d/dt -R i_d ωL i_q d_d V_dc - v_gd L di_q/dt -R i_q - ωL i_d d_q V_dc - v_gq在稳态工作点附近做小扰动线性化忽略二阶小量把状态变量拆成“稳态值扰动量”i_d I_d Δi_dd_d D_d Δd_dv_gd V_gd Δv_gd代入平均模型并减去稳态方程得到小信号状态方程。这一步用纸笔推导没问题但非常容易被符号化错误干扰——我的建议是直接用 MATLAB 的 Symbolic Math Toolbox 把整个流程脚本化把矩阵系数用符号表达后面代入工作点数值直接算出传递函数。这个习惯让我在复现时少改了好几版模型。2.2 电流环对输出导纳的贡献电流环的作用是让并网电流跟踪指令值它的输出导纳逆变器看到的等效导纳可以写成Y_ci(s) (H_i(s)·G_d(s)) / (1 H_i(s)·G_d(s)·Z_f(s))其中H_i(s)是电流环PI调节器传递函数Kp Ki/sG_d(s)是数字控制引入的一拍延时e^{-sTs}实际还要考虑PWM的零阶保持效应等效为1.5拍延时Z_f(s)是滤波阻抗。这里有个关键点很多教程把延时只当成一个纯滞后项忽略它在中高频段对相位的影响。但实际扫频你会发现延时会让阻抗相位在几十赫兹到几百赫兹范围内明显提前或滞后直接影响稳定裕度。论文里用的延时模型是e^{-1.5sTs}这个细节不建模扫频结果在500Hz以上就对不上了。2.3 锁相环的耦合项最容易被忽略的“扰乱因子”锁相环的动态方程本身不长但对阻抗的扰动不容小视Δθ H_pll(s) · Δv_q其中H_pll(s) (Kp_pll·s Ki_pll) / (s^2 V_gd·Kp_pll·s V_gd·Ki_pll)这里我需要稍微展开一下为什么会耦合dq坐标变换是跟着锁相环角度走的PLL检测到q轴电压扰动 → 调整输出角度 → 坐标变换矩阵被动改变 → 原本位于d轴的电压/电流分量转换出q轴分量。这就在阻抗矩阵里形成了一对交叉项Y_dq(s) 由PLL动态引起的d-q耦合导纳 Y_qd(s) 由PLL动态引起的q-d耦合导纳复现时建议先不加PLL耦合项跑一遍理论曲线再把PLL建模加进去两相对比就能直观看到PLL对低频段阻抗实部的影响有多大。2.4 完整的dq阻抗矩阵表达式将电流环、锁相环、数字延时全部纳入后逆变器的小信号输入导纳矩阵为[ Δi_d ] [ Y_dd(s) Y_dq(s) ] [ Δv_gd ] [ ] [ ] · [ ] [ Δi_q ] [ Y_qd(s) Y_qq(s) ] [ Δv_gq ]这个 2×2 矩阵的每一项都是一堆控制环节传递函数的复合表达式用解析法展开很繁琐但没有捷径。我在 MATLAB 里用了脚本化符号推导最后生成符号表达式后替换参数直接生成bode图脚本。这里强烈建议不要手抄公式——符号推导脚本可以保证一致性后面扫频结果对不上时排查范围能缩小到“是模型问题还是推导问题”。3. 扫频法的原理与Simulink实现方案3.1 扫频法的基本逻辑扫频法的思路其实很简单在并网电压或电流参考处叠加一个特定频率的小扰动信号测量逆变器对该频率扰动的响应计算该频率下的阻抗幅值和相位。逐个频率扫描一遍就能“画”出阻抗伯德图。关键问题有两个第一扰动加在哪。常见做法有两种一种是电压源型扫频在电网电压上串联一个微小的正弦电压源另一种是电流源型扫频在并网电流指令上叠加扰动。我复现时用的是电压源型扫频原因很简单这个方案对应的是阻抗定义Z(s)ΔV(s)/ΔI(s)测量端在PCC点物理意义最直观。扰动电压幅值一般取稳态电压幅值的1%~5%太大则破坏线性化假设太小则信噪比过低。我用的是2%在全频率段都能保持清晰的响应。第二怎么同时测多个点。如果要逐频率扫从1Hz扫到2000Hz每个频点等系统进入稳态几百个频点会非常耗时。更高效的方案是同时注入多个频点的正弦叠加信号“梳状扫频”一次仿真得到多个频点的响应再用FFT分离。但论文复现为了精确性我选择了分频逐扫每频点先跑2~3个工频周期让系统稳定再记录数据。总仿真时间大概十几分钟完全可以接受。3.2 测量窗与FFT分析算阻抗的正确姿势每个频点测量流程等系统进入稳态至少1个工频周期我用的2个周期20秒在当前频点持续注入正弦扰动记录PCC电压和并网电流的时间序列每个通道采样率至少10kHz仿真步长用变步长时注意把数据插值到均匀时间轴上对电压/电流做FFT提取扰动频率处的复数分量ΔV(f_k)和ΔI(f_k)计算阻抗Z(f_k) ΔV(f_k) / ΔI(f_k)幅度 |Z|相位 arg(ΔV) - arg(ΔI)这里有个实操坑FFT前必须做窗函数处理我用的hanning窗否则频谱泄露会影响幅值精度尤其在低频扫频点比如10Hz以下与基波50Hz靠近时泄露非常严重。另外采样时间窗长度要匹配扰动频率周期至少要包含5个以上扰动周期否则频率分辨率不够没法精确提取对应频点幅值。3.3 Simulink中的扫频装置搭建具体到Simulink实现我的模型结构分成三层第一层被控对象三相逆变器桥臂、LCL滤波器、电网模型三相理想电压源可调电感模拟弱电网、负载/并网断路器。第二层控制环路锁相环标准SRF-PLL注意park变换的角度由PLL输出提供不要原地用固定ωt电流内环在dq坐标系下分别用两个PI控制器控制d/q轴电流加入解耦项ωL的交叉解耦输出调制波经过PWM产生触发脉冲外环直流电压控制可选如果直流侧模拟光伏阵列MPPT需要加入直流电压环论文复现为了聚焦扫频和稳定性验证我建议直流侧先固定电压源等阻抗验证后再替换成光伏模型第三层测量与扰动注入PCC电压测量模块和并网电流测量模块扰动电压源通过一个很小的串联阻抗注入到电网和逆变器之间的节点测量点在注入点前面靠逆变器侧这样才能测到“逆变器看到的阻抗”。扫频时用一个sine信号源配置不同频率外部通过MATLAB脚本循环修改频率参数每次仿真完提取数据存到工作区最后汇总绘图。我在建模时遇到一个容易忽视的问题直接在Simulink里加扰动电压源后PWM调制容易在扰动频率附近产生边频带混叠。解决办法是让扰动频率不要和目标频率近似成整倍数关系同时保证扰动幅度足够小2%甚至1%把非线性效应压制住。3.4 扫频参数速查表下面这个表是我踩坑之后固定在脚本里的参数你可以直接抄参数数值说明扰动幅度2% 基准电压保证线性化、避免非线细节点扫描频率范围1Hz ~ 2kHz覆盖次同步~高频谐振范围频点数量60个对数间隔1, 1.5, 2.2, 3.3...按等比仿真时长/频点0.12s前0.02s稳态预热后0.1s采样采样率10kHz仿真步长固定1e-5s看数值分散FFT窗函数hanning抑制频谱泄露数据记录方式变步长关闭固定步长仿真保证均匀采样省去插值这条参数表在后面的稳定性分析和论文图表复现里可以直接沿用省得每次重调。4. 稳定性判据与仿真结果分析4.1 从阻抗矩阵到稳定性判据拿到dq阻抗矩阵后稳定性分析判断的是逆变器输出阻抗Z_inv(s)和电网阻抗Z_grid(s)的比值是否满足奈奎斯特判据。在单输入单输出SISO等效下系统回比矩阵Return Ratio可以写成L(s) Z_grid(s) · Y_inv(s)用广义奈奎斯特判据MIMO版本分析L(s)的特征轨迹如果特征轨迹包围 -1 点系统就不稳定。论文复现里通常用两种方法交叉验证方法一直接看特征轨迹包围情况MATLAB用nyquist或等高线绘图方法二在频域扫描完成后直接对每个频率点求Z_grid/Z_inv对应的特征值观察特征值的Nyquist轨迹与(-1,0)的距离实际复现验证重点放在临界短路比CSCR上。不断增大电网电感降低短路比直到系统稳定裕度归零这个临界点就是弱电网下能稳定运行的极限。我复现出来的临界SCR大约在 4.5 左右和论文给出的参考值差不到5%。这意味着该逆变器的阻抗建模没问题稳定性分析也跟理论对得上。4.2 扫频结果与理论曲线对比先说结论扫频法实测的阻抗曲线和解析模型在1Hz到2kHz范围内吻合良好幅值误差平均在3%以内相位误差在5度以内。这个结果本身已经足够支撑论文的阻抗模型正确性验证。有两个频段需要特别注意低频段1Hz-50Hz这个区间阻抗主要由锁相环的动态支配。我在刚开始复现时忽略了PLL耦合项扫出来的 q轴阻抗和理论值差得离谱——相位差了将近30度。后来把PLL的全阶模型加进去曲线才完全贴合。这说明锁相环的动态在低频段确实是“主导项”一点不能省。中高频段300Hz-2kHz这个区间主要由电流环带宽以外的滤波网络特性决定。这里最典型的偏差来自数字延时。如果不把PWM的零阶保持效应等效1.5拍延时建进去扫频结果在1kHz附近会出现一个明显的相位偏差而包含延时的模型扫频曲线则光滑连续说明数字控制延时是高频段阻抗建模不可或缺的一环。4.3 关键图怎么读扫频完输出什么图最核心的是两张一张是阻抗伯德图——理论和实测各画一组理论是连续曲线实测是离散点。注意dq阻抗有两个通道dd、qq分别画幅频和相频特性。图上能直观看到阻抗谐振点对应LCL滤波器的谐振频率还能看到PLL导致的负阻频段幅值基本平缓但相位超过 ±90°的区间。另一张是特征轨迹图——将Z_grid·Y_inv矩阵在每个频率点的特征值画在复平面上观察是否环绕(-1,0)。如果环绕说明该工况下系统会振荡。图旁边可以标注当前工况的短路比看起来非常论文风。这两张图组合起来既能验证模型又能暴露稳定裕度是整个复现流程的“交付物”。5. 常见问题与排查技巧实录5.1 扫频曲线出现毛刺、跳变怎么办现象阻抗幅值曲线在某些频点突然冒出尖刺或者相邻频点测量值跳变超过20%。排查顺序检查该频点附近的FFT窗函数——如果相邻两个频点之间小于频谱分辨率必然泄露。解决办法是增加采样时长或者改用频点密度更稀疏的扫描表检查仿真是否已进入稳态——扰动注入后需要等待暂态衰减。PRBS信号还好正弦扰动需要等至少2-3个工频周期检查PWM边频带——如果扰动频率落在开关频率的边频带附近比如开关频率1kHz扰动800Hz谐波会混入测量带。解决办法是避开这些频点或提高开关频率我在复现中就遇到在1.2kHz附近连续3个点跳跃查了半天发现是仿真步长太大步长2e-5s导致数字采样丢失了开关纹波抑制。把步长压到1e-5s后曲线立刻平滑了。5.2 低频段实测相位始终对不上理论现象理论模型在10Hz以下预示阻抗相位接近0°实测却显示-20°左右且该偏差随频率降低而增大。这个我遇到的根源是仿真模型里直流侧仍然接了理想电压源而理论推导里用的直流侧等效为一个大电容 输入导纳动态。也就是说理想电压源把直流侧动态彻底“短路”了低频段阻抗因而偏低。解决办法是在直流侧并联一个几百微法的电容模拟光伏阵列等效电容再跑一次扫频10Hz附近的相位就对齐了。这类问题很隐蔽但它再次说明一个道理——扫频法验证的不是“模型建得多漂亮”而是“你和理论用了同一个假设世界”。复现论文时一定要把论文里所有直流侧、电网侧的等效简化都看明白才能对症下药。5.3 扫完频全部频点幅值都偏低查不出原因现象所有频率点的阻抗幅值都比理论值小30%-50%但波形看起来完全正常。这条我排查了很久最终定位在两处第一处是PCC测量点的位置。Z 的定义里ΔV是逆变器端口电压ΔI是流入电网的电流。如果你在扰动电压源后级测电压等于把扰动源阻抗也算进去了幅值自然偏小。正确做法是在扰动源和逆变器之间取测量点第二处是基波分量占了FFT绝大部分能量导致扰动频率幅值提取时受数字精度影响。解决办法是先把基波前后的频率bin清零再从FFT结果中找扰动分量这样有效位数能多出2-3位5.4 稳定性预判和扫频结果矛盾的几种情况有一种情况奈奎斯特图显示不穿越(-1,0)但实际仿真突然发散。排查下来往往是只用了SISO回比矩阵忽略了dq交叉耦合项。弱电网下交叉耦合不能忽略会改变特征值轨迹的环绕情况扰动幅值过大激发出非线性效应系统实际工作点已经偏离了线性化工作点。“扫出来了曲线但曲线代表的早就不是原来的系统了”这种情况在低SCR工况尤其常见没考虑锁相环带宽高于电流环带宽时的特殊耦合。PLL带宽和电流环带宽的相对关系会影响耦合方向如果PLL带宽设置太接近电流环带宽高频段会出现一个额外的谐振峰这类矛盾出现时不要急着调参数先检查是不是模型的自由度画小了——很多稳定性误判来自“理论简化过头”。6. 结尾小技巧与扩展建议最后分享一个我在这次复现里收获最大的小技巧做一个扫频任务自动批处理脚本。把扫频频率表、扰动幅度、仿真时长、FFT窗函数全部参数化用一个主脚本循环调用Simulink的sim()接口每跑完一个频点就自动把数据存入mat文件最后统一汇总绘图。这样整套扫频流程一键跑完不用手动改几十次参数。我甚至把参数改成双扰动注入同时注入两个频率效率再翻一倍。建议各位上手时先把单频扫通再优化效率不然出问题都不知道是哪个频点惹的祸。后续想扩展的话可以把光伏阵列的MPPT动态接进直流侧看它在弱电网下对阻抗的附加影响也可以试试点火角抖动PLL带宽增高对阻抗相位的扰动规律。扫频法是一条主线但配上不同的模型改动能玩出很多衍生的稳定性话题。祝各位扫频顺利曲线顺滑。行文至此我个人的体会是阻抗建模和扫频验证这套流程真正的门槛不在于公式推导也不在于Simulink操作——这两样只要花时间都能啃下来。最难的是你心里要有一张清晰的地图知道哪些环节在哪个频段起主导作用知道哪些简化可以做、哪些打死不能省。当你把锁相环、电流环、数字延时、直流侧动态这四个模块在仿真里逐一对齐理论曲线的那一刻你会感觉到这篇博士论文里那些抽象的参数突然都“活”了。希望这篇实操笔记能帮你少走几步弯路早日跑通自己的阻抗验证闭环。
返回列表