逆变器时域阻抗辨识:从PRBS注入到特征值稳定性分析
1. 从频域扫频转向时域辨识一次实验解决三个问题1.1 一小时扫完的Bode图为什么还是不敢信做并网逆变器稳定性的工程师几乎都经历过这种场面仪器架好阻抗分析仪或者自写的扫频脚本开始跑一个频率点一个频率点地注入正序扰动、测响应、算幅值相位从 1 Hz 扫到 2 kHz等曲线画完天都黑了。好不容易拿到一条完整的 Zdd(Zqq) Bode 图心里却直打鼓——低频段数据抖得像心电监护仪高频段又被 PWM 边带和采样噪声弄得毛毛糙糙你敢拿这个去算相位裕度吗频域扫频慢不是最大的问题真正麻烦的是工况漂移。扫低频时一个 5 Hz 的正弦扰动需要在信号周期里来回叠加十几次才能把信噪比做上去一次测量就要好几百毫秒。几十个频率点下来逆变器模块的温度在涨母线电压在小幅波动甚至电网的频率相位也在慢慢不对齐测出来的幅值相位其实是好几个运行点拼出来的“缝合怪”。阻抗模型这种对工作点极其敏感的物理量被这种测量误差一污染后面做的 Nyquist 判据、阻抗比分析全都会跟着偏。1.2 时域辨识能换来的东西状态空间、模态和裕度我后来在弱电网项目里彻底换了个思路不再逐点扫频而是给逆变器注入一段精心设计的时域信号比如 PRBS 或低峰均比多正弦然后一次性记录几百毫秒的电压电流波形用系统辨识的方法直接拟合出阻抗模型的状态空间表达式[ \begin{cases} \dot{x} A x B u \ y C x D u \end{cases} ]这里的输入 u 是端口电流扰动输出 y 是端口电压响应传递函数 (Z(s) C (sI - A)^{-1} B D) 就是逆变器的等效输出阻抗。这样做的好处非常直接扫频法给的是离散频率点上的无助数据而时域辨识直接交出 A、B、C、D 矩阵特征值一口气全在 det(sI-A)0 里。哪些模态是 LCL 谐振哪些是控制器积分环节哪些是数字延迟带来的高频极点一眼就能看出来不用再抱着一堆幅相数据去做拟合猜阶次。更实际的好处是省时间、省设备。一次 PRBS 扰动实验数据采集时间通常不超过 0.5 秒做一次 FFT 和子空间辨识只需要几秒钟算力。同样的信息量比频率扫描快一到两个数量级。而且这个流程天然适配在线辨识场景逆变器已经在并网运行控制器里加一个小幅扰动序列不用停机、不用外加功率放大器就能把系统特征值抓出来。1.3 什么时候不该用时域辨识三个反面场景我也得泼点冷水。时域辨识不是万能钥匙下面这三种场景我踩过坑建议你谨慎强非线性激励下如果扰动幅值超过额定电流的 10%逆变器可能进入过调制、限幅或保护动作系统不再满足线性时不变假设辨识出来的“特征值”毫无意义。时域辨识的前提是工作点附近的小信号线性化只能在小扰动下用。频率分辨率要求极高如果你只关心 0.1 Hz 到 1 Hz 的超低频段PRBS 的低频谱密度往往不够反而不如传统扫频法在超低频段花时间慢慢测。传感器通道明显不平衡如果电压霍尔和电流探头之间相位延迟差异大于 10 微秒辨识出来的高频段模态会发生明显偏移。硬件条件太差时再好的算法也救不回来。有一次我在一台碳化硅逆变器上做实验电流探头用的是一对差异很大的传感器一个带宽大概 1 MHz另一个只有 100 kHz。结果辨识出来的 5 kHz 附近多了一个“假模态”振荡频率还特别干净差点让我改了一版控制参数。后来把探头换成同一型号、校准完相位差假模态自己就消失了。所以实验设计是这套方法的命门这一点我会在第三节详细展开。2. 特征值识别的物理意义阻抗模型里到底藏着什么2.1 dq坐标下的2x2阻抗矩阵对于三相并网逆变器阻抗模型通常不在 abc 坐标下直接用三个标量阻抗表示那样太啰嗦而且三相耦合在静止坐标下会随着工频旋转。工程上更常用的做法是把它变换到 dq 同步旋转坐标系下得到一个小信号的 2x2 传递矩阵[ \begin{bmatrix} \hat{v}_d \ \hat{v}_q \end{bmatrix}\begin{bmatrix} Z_{dd}(s) Z_{dq}(s) \ Z_{qd}(s) Z_{qq}(s) \end{bmatrix} \begin{bmatrix} \hat{i}_d \ \hat{i}_q \end{bmatrix} ]非对角线元素 Z_dq 和 Z_qd 不是可有可无的细节它们描述了 d 轴和 q 轴之间的动态耦合。实测中发现单相不平衡、电网背景谐波、甚至直流母线动态都会在 dq 矩阵里留下明显的交叉项。如果你只测对角项就去做稳定性分析相当于把一个 MIMO 系统当成两个独立的 SISO 系统看误判是大概率事件。时域辨识的输入输出也相应变成二维向量u[i_d, i_q]^Ty[v_d, v_q]^T。好在现代子空间辨识方法天生就是为 MIMO 系统设计的2x2 的传输矩阵并不会让算法复杂度翻倍反而比分别做两次 SISO 拟合更自洽。2.2 特征值就是阻抗模型的固有模态所谓特征值识别不是玄学也不是“给矩阵找个数”。它的物理意义是辨识出状态矩阵 A 之后解 det(sI - A)0得到的根就是系统在没有外部扰动时的自然模态。举个例子一台三相两电平逆变器带 L 滤波器和 PI 电流双闭环模型阶数通常包含滤波电感电流两个状态、控制器积分器两个状态、数字延迟一个状态。此时 A 矩阵的特征值里会出现一对共轭复数极点对应 L 滤波器和电流环形成的谐振模态它的实部决定阻尼虚部决定谐振频率。如果实部是负的且足够大系统稳定如果实部变成正的就说明这个模态在自行生长对应时域上你会看到振荡幅度越来越大直到非线性环节把它压成等幅振荡。做实验时辨识算法并不关心你心里想象的是“LCL 滤波器加 PI 控制器”它只负责根据测到的输入输出时间序列找到一组 A 矩阵让模型输出最贴合实测数据。因此辨识出来的特征值实际上是系统真实动态的综合体现包含了滤波器、控制器、采样保持、PWM 延迟等所有环节这比纯数学推导建模更贴近硬件实况。2.3 对信号时域取共轭频域为何会发生镜像翻转之前有个学弟问我“对信号时域取共轭那频域上是什么”这个问题看起来是信号处理基础但在逆变器阻抗辨识里非常关键因为它直接关系到正负序阻抗的提取。先给结论对于连续时间信号 x(t)如果对其取共轭得到 y(t)x*(t)那么 y(t) 的傅里叶变换为[ Y(f) X^*(-f) ]也就是说时域取共轭等价于频域上先做频率镜像翻转再做共轭。很多人只记住了 FFT 正频率谱和负频率谱互相对称这件事却忽略了这是针对实数信号才成立的特例。空间矢量信号比如 dq 电流 i_d j i_q 是复数信号它的频谱不再满足正负频率共轭对称取共轭这个操作就变得很有用。具体到阻抗辨识场景你在 abc 三相里注入一个频率 f_p 的扰动经过坐标变换后在 dq 坐标系里会同时出现 f_p - f_g 和 -f_p - f_g 两个偏移分量分属正序和负序响应。为了把正序和负序阻抗都测出来传统方法是做两遍不同序列的扫频。但如果利用“时域取共轭频域翻转”这个性质你完全可以在一次实验中同时提取两类信息把采集到的空间矢量信号直接取共轭再 FFT频谱上原来在负频段的信息就被翻到正频段了配合适当的辨识框架一套数据能同时得到正序、负序阻抗矩阵。这个操作我相信很多人都在论文里见过但真正在实验代码里把它用通的并不多。3. 激励信号与数据采集实验设计决定了特征值识别的上限3.1 PRBS和多正弦怎么选激励信号选错后面算法再漂亮也是白搭。我在时域辨识里最常用的两类信号是 PRBS伪随机二进制序列和多正弦叠加各有适用场景这里直接给对比维度PRBS多正弦频谱覆盖宽频带连续谱低频成分相对弱离散谱线可以挑着频点注入峰均比固定 1对系统冲击均匀用 Schroeder 相位优化后最低约 1.3实现难度移位寄存器几行代码即可生成需要预先计算谐波相位稍麻烦非线性敏感度宽频互调干扰较多避开 PWM 开关边带后互调很少适用场景扫盲式初始辨识、带宽不知道关注特定谐振频段、定量校核实际项目里如果我对这台逆变器的谐振频段完全没底先上 PRBS 做一轮粗辨识把模态大概摸清确定谐振点大概在 200-500 Hz 之后再用多正弦在 20 Hz 到 1.5 kHz 之间铺上十几根谱线做精细拟合。这个两步走的方案能避免两个极端PRBS 低频段能量不足导致低频模态辨识不准多正弦盲目选频导致漏掉真正危险的模态。PRBS 的实现细节也别忽略。如果采样频率是 10 kHz推荐使用与你关心频段匹配的移位寄存器时钟频率。我常用的是 (2^{15}-1) 周期的 PRBS数据长度取 50000 点左右既保证夜间谐波平均又不至于让整体实验超过 5 秒导致工况漂移。3.2 扰动幅值、注入点和闭环控制器的配合前面提过扰动信号最好加在小信号参考值上比如 d 轴电流指令 i_d_ref。这是最实用的注入点因为不需要外加功率设备只要在控制器代码里把一段零均值的 PRBS 叠加到电流指令上就行。但要注意两个约束零均值扰动序列必须严格零均值否则会把直流工作点拉走产生的功率偏移会让阻抗模型混入大信号非线性。幅值我一般把扰动幅值设在额定电流的 3%-5%。太小了信噪比不够太大了会踩到调制器限幅。如果你用的是 LCL 滤波器还要留心扰动频率接近谐振点时很小的激励也会导致很大的端口电压响应这时要实时监测峰值不能机械地设死在一个幅值上。另一个常被忽视的问题是闭环控制器本身的工作状态。你测到的阻抗其实是“闭环逆变器等效阻抗”它天然包含电流内环、电压外环、锁相环的动态。做辨识前必须确认这些环路的参考值在这几百毫秒内保持恒定特别是锁相环如果扰动期间 PLL 带宽内出现明显振荡测得的 dq 角度本身就会抖动最终阻抗矩阵的低频段会被扭曲。我在实验里一般把 PLL 带宽降到 10 Hz 以下再测实测效果很稳定。3.3 采样同步、PWM延迟与碳化硅振铃被误识别的“假模态”这是整个流程里最容易翻车的地方也是我花时间最多的地方。采样同步ADC 采样的时间戳和扰动注入的时刻必须严格对齐。数字控制器里通常有几百微秒到几个采样周期的延迟电流采样在第 k 拍完成计算完调制波后第 k1 拍才更新 PWM这期间还带有半拍等效延迟。这个延迟如果不进入辨识模型高频段会出现系统性相位偏差辨识出来的极点会被硬生生推向右半平面。做法是在模型里显式加入一个 (e^{-sT_d}) 的延迟环节T_d 取 1.5 倍的 PWM 周期再用二三阶 Pade 近似代替纯延迟去参与辨识这样高频模态才不会被误判。碳化硅振铃现在不少逆变器已经换成 SiC MOSFET开关沿极快母线杂散电感会在开关瞬间激起几百伏、几兆赫兹的振铃。这个振铃如果被电压探头和电流探头采集到在辨识模型里就会表现为一对额外的高频复极点——假模态。而且因为振铃频率与死区时间、温度有关它还不是稳定的系统特性会把你整个辨识结果搞疯。解决思路有两个层面硬件上给功率模块加 RC 吸收电路或者优化母排叠层结构把振铃能量控制住测理上则在 ADC 前加入合适带宽的抗混叠滤波器比如把测量带宽限制在关心频段的 3-5 倍。我在一台 SiC 逆变器上做过对照实验不加吸收电路时辨识结果里总有一个 2.1 MHz 左右的极点和 0.35 的阻尼比看起来很像滤波器谐振加上设计得当的 RC 吸收电路后这个极点彻底消失。所以看到高频段出现“可疑优质模态”先查硬件再怀疑辨识算法。4. 从时域数据到特征值辨识算法与代码实现路径4.1 先定框架ARX简单但偏差子空间适合2x2矩阵时域辨识的算法选择上我一般分两条路ARX / 最小二乘思路上最直接把输入输出的历史样本组成回归矩阵用最小二乘拟合差分方程系数再转化为状态空间。优势是代码短、好调试适合你看每一步中间结果。缺点是它对输出噪声很敏感存在偏差而且 MIMO 交叉耦合项处理起来很笨。子空间辨识MOESP / N4SID直接处理多输入多输出系统的输入序列和输出序列通过斜向投影、SVD 分解得到状态空间矩阵的等价实现。它对噪声的统计假设更宽松辨识出的 A 矩阵直接可用不用做繁琐的传递函数到状态空间的转换。对 dq 阻抗这种 2x2 矩阵这是最顺手的工具。我的实际经验是先用子空间方法确定系统阶次和初始值再用 ARX 带通滤波后的数据做精细校正。子空间方法像广角镜头能把整片动态捕捉全ARX 像定焦镜头在已知频段里抠细节。两个互相验证比单用一个保险得多。4.2 具体步骤和最小可跑代码整体流程可以拆成五步对原始电压电流数据做去均值、去线性趋势处理减去工作点得到小信号分量。按固定采样周期 Ts 重新采样必要时做 50 Hz 及其倍频的陷波滤波注意陷波器不能伤到关心的频段。根据已知的先验知识选择阶次范围一般在 4-10过高的阶次会把噪声也拟合成“模态”。用子空间辨识或 ARX 最小二乘估计出状态空间模型。用零阶保持离散化反推连续时间模型计算 A 矩阵特征值。下面给一个最小的 ARX 代码骨架适合你先跑通流程实际产品中建议换成成熟工具箱里的n4sidimport numpy as np def arx_ls(u, y, na4, nb4): 输入 u、输出 y按 ARX(na,nb) 结构做最小二乘 N len(u) Phi, rhs [], [] for k in range(max(na, nb), N): row [] for j in range(1, nb 1): row.append(u[k - j]) for j in range(1, na 1): row.append(y[k - j]) Phi.append(row) rhs.append(y[k]) Phi np.array(Phi) rhs np.array(rhs) theta, _, _, _ np.linalg.lstsq(Phi, rhs, rcondNone) return theta这段代码虽然简单但已经能帮你完成 SISO 阻抗通道的快速拟合。需要说明的是它对噪声的容错不高一旦传感器干扰稍大会出现置信的伪特征值。此时就该切到子空间辨识或者至少用带遗忘因子的递推最小二乘。拿到离散模型之后连续性转换建议用双线性变换同时注意差分方程映射到连续域时极点的映射关系是[ z e^{sT_s} ]离散域单位圆上靠近 1 的极点对应连续域低频段靠近 -1 的极点对应采样频率一半附近的模态。很多初学者在 z 平面看极点全在单位圆内就断言系统稳定却忽略了这个极点的连续域实部其实可能已经越过虚轴。务必在 s 平面做最终判断。4.3 残差分析和频域校核别让过拟合骗了特征值辨识做完先别急着看特征值残差分析这关必须过。把同一段输入信号送入辨识出的模型得到模型输出 y_model与实测输出 y_meas 做差得到残差序列 e(t)。两个指标要盯住残差的中位数和均方根应该接近传感器本身的噪声水平一般我会要求残差能量低于实测信号能量的 2%。残差的频谱应该是平坦的如果残差谱在某些频率上出现尖峰说明模型没有把那个模态吸收进去阶次不够或者结构不对这时候辨识出来的其他特征值都会被污染。为了更直观我会把实测时域波形和模型重仿真波形叠在一起看同时在频域把两者的 FFT 画在同一张图上。模拟时域信号和模拟频域信号对比是识别过拟合最有效的体检表时域对得上但频域对不上多半是噪声被拟合进去了频域对得上但时域对不上多半是相位/延迟有问题。最后还要在原位做一次交叉验证随机切两段不同实验数据一段用来辨识一段用来验证。如果拿验证数据反推的阻抗 Bode 图和辨识数据偏差超过 0.5 dB 或 3 度这个模型就不能用来做稳定性判断。5. 稳定性分析特征值落位和阻抗比判据缺一不可5.1 单个阻抗模型的极点辨识先分清自身稳定与交互稳定很多文章讲到这里就直接上“特征值在右半平面就失稳”但工程上的第一层问题没那么简单你要先问清楚这个特征值是逆变器自身阻抗的极点还是逆变器和电网阻抗交互后的闭环极点。逆变器输出阻抗 Z_inv(s) 的 A 矩阵特征值是它自身在电流源开路/端口自由情况下的自然模态。如果这些特征值全在左半平面说明逆变器自身稳定。但并网系统是否稳定取决于逆变器和电网阻抗“碰到一起”之后的行为必须看闭环传递函数的极点也就是特征方程 det(I Z_g(s) Y_inv(s))0 的根其中 Y_inv(s) 是逆变器导纳。这个区别非常重要我在现场见过一台逆变器自身 Z_inv 的特征值非常健康一接上长线电缆就振荡原因就是交互极点出了右半平面。5.2 MIMO下的阻抗比与特征值轨迹绕开-1点才算稳定在 dq 坐标系下交互稳定性的经典判据是如果逆变器导纳 Y_inv(s) 和电网阻抗 Z_g(s) 各自都是最小相位稳定系统那么并网系统稳定的充要条件是矩阵 (L(s) Z_g(s) Y_inv(s)) 的特征值轨迹不包围 (-1j0) 点并且所有特征值轨迹都在某个特定轮廓内。这和 SISO 的 Nyquist 判据形式很像区别在于这里要同时看两条特征值轨迹2x2 矩阵有两个特征值谱线。我的实操建议是不用死记严格判据形式而是做两件事画出 det(I Z_g(s) Y_inv(s)) 的 Nyquist 轨迹数一数围绕原点的圈数画出这两条特征值轨迹随频率变化的曲线直接观察它们是否穿过 -1 点。工程调试时比判据本身更有用的是这个特征值轨迹的趋势你调哪个参数轨迹朝哪个方向移动一眼能看出来。举个例子一台 30 kW 三相逆变器在电网阻抗从 0.3 mH 升到 1.5 mH 的过程中特征值轨迹在 430 Hz 附近逐渐逼近 -1 点同时在时域波形里出现 430 Hz 附近的拍频振荡。两者对上之后问题定位非常确定这就叫“交互动模态”。5.3 裕度评估阻尼比、频段特性和正负序耦合判断系统是否稳定只是及格分工程上更要看稳定裕度。在阻抗分析里通常用交互极点与虚轴的距离来量化(\alpha \Re(\lambda))(\omega \Im(\lambda))阻尼比 (\zeta -\alpha / \sqrt{\alpha^2 \omega^2})。我自己的习惯是要求关键模态的阻尼比不低于 0.05低于 0.03 就必须处理哪怕此时系统理论上还是稳定的。为什么因为弱电网阻抗是变化的早上和晚上的电网等效电感差一倍很正常一个阻尼比只有 0.02 的极点电网阻抗稍微变一点就可能翻到右半平面。在并网现场你不可能天天做辨识去追踪必须留足裕量。另一点容易被忽略的是正负序耦合。dq 阻抗矩阵的交叉项 Z_dq 和 Z_qd 不为零时即使两个对角项的 Nyquist 轨迹都安全合并后的 2x2 特征值轨迹也可能出问题。所以稳定性判断一定要用完整的 2x2 矩阵不能用“把 Zdd 和 Zqq 分头看”的简化方式收工。6. 弱电网案例两电平逆变器从辨识到调参全流程6.1 实验平台、注入信号与数据采集条件先交代清楚我在这个案例里用的平台方便你对照主拓扑三相两电平逆变器30 kW开关频率 10 kHz输出滤波器L0.35 mH阻尼电阻 0.05 Ω控制策略dq 旋转坐标系下的电压外环、电流内环电流内环 PI 参数按带宽 800 Hz 设计扰动注入d 轴电流指令上叠加 PRBS幅值 1.5 A约额定电流的 4%序列长度 (2^{15}-1)比特周期 200 μs采样ADC 采样频率 20 kHz与控制器中断同步先做 2 kHz 抗混叠滤波硬件平台先在 Plecs/Simulink 里把整个流程仿真跑过一遍确认数据特征后再上真机。不少朋友问我为什么推荐先在仿真里预演一遍。因为辨识流程里的坑比如采样时钟偏差、控制器饱和保护、传感器相位差在仿真里都能提前暴露而且仿真里你已知真值可以量化辨识误差。我通常要求仿真辨识误差低于 0.2%才允许上真机。6.2 数据辨识结果与阻抗模型验证这段具体辨识结果很有代表性。对采集到的时域数据做完预处理后用子空间方法辨识阶次取 6得到的主要特征值如表所示模态编号特征值近似物理解释1(-12 \pm j0)直流积分/工作点恢复模态轻微过阻尼2(-160 \pm j2\pi\times 428)L 滤波器和电流内环的谐振模态阻尼良好3(-310 \pm j2\pi\times 96)锁相环与电压外环的交互模态阻尼偏低4(-2300 \pm j2\pi\times 4100)数字延迟与 PWM 等效综合模态接近采样边界把辨识模型重放回同一段 PRBS 激励模型输出电压与实测电压的残差能量只占到信号能量的 1.7%残差频谱平坦说明没有明显漏掉的模态。作为第二道校核我挑 50、200、800 Hz 三个频率点用传统扫频方式复核 Zdd 和 Zqq 的幅值相位误差都在 0.4 dB / 2 度以内。这一步做完我才认为这个阻抗模型“可被信任”。6.3 极点移向不稳定侧之后定位模态、调整控制器接下来就是重头戏模拟弱电网场景把电网等效电感从 0.3 mH 逐步增加到 3.5 mH每次改变阻抗条件都重新用时域辨识提取并网闭环系统的交互极点。结果非常清晰电网电感到 2.2 mH 时主交互模态的特征值实部还在 -35 附近阻尼比约 0.07到 2.8 mH 时实部变成 8阻尼比变为负值系统理论失稳。实际时域波形和特征值预测高度一致失稳模态频率约 395 Hz示波器里的并网电流振荡波形主频 396 Hz误差不到 1%。这就是特征值识别在工程里的真正价值——它不仅告诉你“有振荡”还告诉你振荡频点、参与环节和阻尼趋势。调参时我没有简单拉低电流环增益而是把电流环带宽从 800 Hz 调到 600 Hz同时给电流指令增加一个频率在 350-450 Hz 的陷波前馈补偿等效提高该频段的阻尼。重新辨识后交互动极点实部回到 -52阻尼比 0.11。再观察时域波形原本的 396 Hz 拍频振荡幅度下降了一个数量级以上。最后分享一个实战经验整个调试过程中我每调一次参数就在同一个电网阻抗条件下重新做一次时域辨识而不是只靠最终验证。这看起来多花了时间但每一次辨识都是一张“系统内部 CT 片”能让你看清调参到底改动了哪个模态是往好了改还是把另一个模态推向了危险区。这个习惯帮我排掉了很多“A 指标好了但 B 指标坏了”的隐形问题。如果你要复现这套流程我的建议很简单先把激励信号设计和数据预处理做扎实再去折腾算法和判据特征值永远不要单独看永远配合时域波形和频域残差一起判断。能做到这三点时域阻抗辨识这套方法在你手上就会比传统扫频好用很多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →