基于T-S模糊模型的直流微电网大信号稳定性分析与吸引域估计
2026/9/7 1:21:54 网站建设 项目流程

简介:面向电力电子、自动控制及新能源系统背景的研究生、科研人员和微电网设计工程师,这份论文复现资源包聚焦直流微电网在大扰动下的非线性稳定性问题,系统讲解基于T-S模糊模型的大信号稳定性分析及吸引域估计方法。压缩包内含1个PDF文件,大小仅840KB,PDF中给出了完整可运行的Python代码及逐步解释,覆盖T-S模糊模型构建、Lyapunov稳定性分析、吸引域估计,以及恒功率、恒阻抗、恒电流三类负载影响的时域仿真与特征值对比。资源已吸引61人学习,特别适合希望掌握复杂非线性系统建模、对比小信号与大信号方法差异,并借助代码调整参数观察稳定性变化趋势的研究者与工程师,有助于快速复现论文核心结果并延伸至实际微电网参数优化。 前阵子复现一篇基于T-S模糊模型的直流微电网大信号稳定性分析论文,卡了整整两周。模型本身不算复杂——母线电容、滤波电感、恒功率负载、恒阻抗负载、恒流负载并联在一起,但小信号分析在带恒功率负载的工况下给出的结论和时域仿真经常“打架”:特征值明明都在左半平面,稳定裕度看着也够,母线电压却在负载突变后一路下滑,再也没有回到额定值。这不是仿真参数设错了,而是小信号分析的天生局限——它只关注平衡点附近的微小扰动,当机组启动、负载突加突卸这类大扰动出现时,恒功率负载的负阻抗特性会把系统直接带出收敛域。工程上真正关心的问题是:系统到底能在多大范围的扰动下仍然自己走回平衡点?这就要靠T-S模糊模型做大信号稳定性分析,并用Lyapunov方法估计吸引域。本文从建模、原理、代码到踩坑记录完整拆解一遍我的复现过程,内容适合正在做微电网稳定性方向研究、或者想搞懂大信号稳定性分析怎么落地到代码的同行参考。

1. 为什么直流微电网必须要做大信号稳定性分析——从负阻抗特性说起

1.1 小信号分析为什么不够用

小信号稳定性分析的基本路线是把系统在平衡点处做一阶泰勒展开,然后看雅可比矩阵的特征值。这个方法在电力电子领域用得极广,因为它简单、成熟、判据清晰。但它的前提是“扰动足够小”,小到系统状态量偏离平衡点的部分可以认为只保留线性项就够了。直流微电网恰恰经常满足不了这个前提。

我复现时用的算例里,母线电压额定值是48V,恒功率负载功率150W。当负载功率阶跃、恒流负载切入、或者下级变换器启动时,母线电压瞬间跌落的幅度往往超过5~8V,这个尺度下的非线性已经非常明显了。更关键的是,小信号分析完全无法回答一个问题:如果初始扰动是20V而不是1V,系统还能不能回到48V?这个问题直接影响工程上对最大允许负载阶跃、软启动时间、保护阈值的设定。要回答它,必须从非线性模型出发做大信号稳定性分析。

1.2 恒功率负载的负阻抗效应:一个反直觉的阻尼方向

恒功率负载是直流微电网里最典型的“不稳定制造者”。它的特点是消耗功率恒定,电压升高时电流自动下降,电压降低时电流自动上升。在平衡点附近看它的静态阻抗:

ΔV / ΔI = -P / I² < 0

这就是负阻抗特性。直观理解就是:当母线电压因为有扰动而下降时,恒功率负载反而会吸入更大的电流,进一步拉低电压;电压升高时它则减少电流,进一步推高电压。这个行为在小信号模型里等效于在母线电容上并联了一个负电阻,它会持续往系统里注入“伪能量”,把正常负载和线路电阻带来的阻尼抵消掉。

我在复现过程中对比过只带恒阻抗负载和同时带恒功率负载两种情况:前者即使初始电压偏移到±15V,系统也能自己回调;后者功率稍大一点,初始偏移超过某个阈值后,电压就直接“塌”下去,电流冲向极限,再也没有回调的可能。这个阈值就是后面要用吸引域估计来解释的量。

1.3 多类型负载并存时问题被放大

直流微电网里的负载从来不会是单一类型。恒功率负载来自各种带闭环控制的变换器,恒阻抗负载对应电阻加热、照明设备,恒流负载像LED驱动、某些充电装置,还有电动机类的感性负载。不同类型负载在扰动中的响应方向不一样,组合起来会让系统的稳态平衡点发生偏移,同时非线性程度也各不相同。

从大信号稳定性的角度看,恒功率负载是系统里最主要的非线性源和负阻尼源,恒阻抗负载虽然在扰动中消耗更多能量但方向是稳定的,恒流负载则更像一个固定的扰动输入源。它们并存时,平衡点的位置和局部阻尼特性都会改变,吸引域的形状也不再是一个对称的简单椭圆。这正是需要建一个足够精确的非线性模型、再系统性分析的根本原因。

2. 从非线性模型到T-S模糊模型:多类型负载的数学化过程

2.1 两阶直流微电网基准模型

复现时我用的基准拓扑是:前级DC/DC变换器等效成一个电压源带一个滤波电感,经过线路电阻接到母线电容上,三类型负载并联在母线上。这个结构虽然简化了开关过程,但保留了直流微电网大信号稳定性的核心动力学。

系统的微分方程如下:

L · di/dt = Vg - i · R_line - V
C · dV/dt = i - P/V - V/R_cil - I_ccl

其中 V 是母线电压,i 是电感电流,Vg 是输入侧等效电压,R_line 是线路电阻,P 是恒功率负载功率,R_cil 是恒阻抗负载电阻,I_ccl 是恒流负载电流。注意这里的 P/V 项,是母线电压的函数,也是整个系统里唯一的非线性项。

假设系统有稳定平衡点 (Ve, ie),令 x1 = V - Ve,x2 = i - ie,把状态方程在平衡点附近改写成扰动形式:

dx1/dt = x2/C - x1/(R_cil · C) - (1/C) · (P/(Ve + x1) - P/Ve)

利用 (P/(Ve + x1) - P/Ve) = -P · x1 / [Ve · (Ve + x1)],可以整理成:

dx1/dt = [ P / (C · Ve · (Ve + x1)) - 1/(R_cil · C) ] · x1 + (1/C) · x2
dx2/dt = -x1/L - (R_line/L) · x2

这里有一个很关键的观察:恒流负载量 I_ccl 在扰动方程里直接消掉了,它只影响平衡点 (Ve, ie) 的位置,不进入状态矩阵。后面会看到,这意味着恒流负载对吸引域的影响主要是“平移”而非“变形”。

2.2 非线性项的扇形区间构造

状态矩阵里唯一的非线性来自:

n(x1) = P / (C · Ve · (Ve + x1))

它随 x1 单调变化。T-S模糊模型的传统做法是取扇形非线性(sector nonlinearity):把 n(x1) 在 x1 允许的区间 [x1_min, x1_max] 内用两条直线包住,然后写成两条模糊规则的加权组合。

定义:

n_min = P / (C · Ve · (Ve + x1_max))
n_max = P / (C · Ve · (Ve + x1_min))

那么在 [x1_min, x1_max] 上,n(x1) 可以精确写成:

n(x1) = w1 · n_min + w2 · n_max
w1 = (n_max - n(x1)) / (n_max - n_min)
w2 = (n(x1) - n_min) / (n_max - n_min)

w1、w2 就是两条模糊规则的隶属度函数,满足 w1 + w2 = 1 且在区间内非负。这里值得强调,扇形非线性不是对模型的近似,在选定的区间内它是数学上等价的改写,只是把非线性信息从状态矩阵里“挤”到了隶属度函数里。

T-S模糊规则写成:

Rule 1: 如果 x1 偏“小”,则 dx = A1 · x
Rule 2: 如果 x1 偏“大”,则 dx = A2 · x

其中:

A1 = [ n_min - 1/(R_cil·C), 1/C; -1/L, -R_line/L ]
A2 = [ n_max - 1/(R_cil·C), 1/C; -1/L, -R_line/L ]

整个模糊系统的输出就是 dx = Σ wk · Ak · x。

2.3 从模型看负载的内在威胁

把 A1、A2 的第一行第一列元素拿出来看,n_min 和 n_max 的差异越大,两组顶点矩阵的动态行为差异就越大。这个差异直接由恒功率负载功率 P 决定:P 越大,相同电压偏移区间内 n(x1) 变化率越陡,对应地,两个顶点矩阵的稳定裕度差异也越大。如果 P 大到某一临界值,A2 甚至可能出现正实部特征值,这意味着系统虽然在平衡点附近局部稳定,但在大偏移区域根本没有稳定趋势,吸引域会急剧收缩甚至退化。这就是 T-S 模型能让“大信号稳定性”这个问题变成一个数学上可解问题的原因——它把一个非线性系统拆成了一组线性系统的加权组合,却仍然保留了非线性特征的完整信息。

3. 吸引域估计的数学内核:Lyapunov函数与LMI的配合方式

3.1 Lyapunov稳定性如何从“一个点”变成“一个区域”

Lyapunov 第二方法的思路是找一个能量函数 V(x),它正定、在零点取零、沿系统轨迹随时间递减。如果这样的 V(x) 存在,系统就是稳定的。对线性时不变系统,这个 V(x) 可以取成二次型 V(x) = xᵀPx,稳定性条件等价于求解矩阵不等式 AᵀP + PA < 0。

对 T-S 模糊系统,系统的动态矩阵是 A(x) = Σ wk · Ak,隶属度函数随状态变化。如果把 V(x) = xᵀPx 代入,沿轨迹的导数:

dV/dt = Σ wk · xᵀ(AkᵀP + PAk)x

因为隶属度 wk ≥ 0 且 Σ wk = 1,只要每一项 AkᵀP + PAk 都负定,那么加权和一定负定。这样一个看似平凡的数学操作,恰好是把模糊系统稳定性问题转成有限个 LMI 的关键。

3.2 公共二次Lyapunov函数的LMI条件

于是问题变成:找到对称正定矩阵 P,使得对每一个顶点矩阵 Ak 都满足:

AkᵀP + PAk < 0

这就是一个标准的线性矩阵不等式问题。之所以叫“公共二次Lyapunov函数”,是因为所有顶点共用同一个 P,好处是求解简单、结论稳健,代价是偏保守——真实系统可能有一个更大的吸引域,但公共 P 只能给出它的一个内估计。

为了让解不至于落在边界上,我在约束里通常加一个小的负定裕度:

AkᵀP + PAk ≤ -I

这里的 -I 不是硬性要求,但能防止数值求解器返回退化解,同时给模型误差和离散误差留一点余量。

3.3 吸引域椭球与体积最大化

拿到 P 之后,集合 E = { x | xᵀPx ≤ 1 } 就是吸引域的一个内估计。它的物理含义是:只要系统初始状态落在以原点为中心的这个椭圆内,状态轨迹就会收敛到原点。注意,这里的“原点”指扰动坐标下的平衡点,实际母线电压还要加回 Ve。

一个 P 给出的椭球往往不是最大的,所以吸引域估计的核心优化目标是在 LMI 约束下最大化这个椭球的体积。椭球体积和 det(P⁻¹) 正相关,等价于最大化 det(P),在数值上一般处理成最大化 log det(P)。这是个凸优化问题,YALMIP 可以直接求解。

这里有一个容易被忽略的点:扇形区间 [x1_min, x1_max] 的选取决定了 LMI 能否可行。区间过大会让 n_min 和 n_max 离得太远,顶点矩阵之间的动态差异过大,公共 P 可能根本不存在;区间过小,虽然 P 好求,但它的适用范围仅限于小区间,椭球可能超出区间边界,导致那条“在区间内等效成立”的前提被破坏。标准的处理办法是迭代:先给一个物理上合理的区间,求出 P 和椭球,再检查椭球是否完全落在该区间内,如果不满足就缩小区间重试。

4. 复现代码逐段拆解:从T-S模糊系统到吸引域求解

我复现时用的是 Matlab + YALMIP + SDPT3。YALMIP 负责把 LMI 描述成约束交给 SDPT3 求解,整个过程只需要几十行代码。下面这段是核心代码,我把它拆成四个部分分别解释。

4.1 平衡点求解与顶点矩阵生成

%% 直流微电网参数 C = 2e-3; % 母线电容 F L = 1e-3; % 滤波电感 H R_line = 0.05; % 线路电阻 Ohm Vg = 60; % 输入等效电压 V Vref = 48; % 额定母线电压 V P = 150; % 恒功率负载功率 W R = 4; % 恒阻抗负载 Ohm Icc = 3; % 恒流负载 A %% 数值求平衡点 (Ve, ie) fun = @(x) [Vg - x(2)*R_line - x(1); x(2) - P/x(1) - x(1)/R - Icc]; x0 = [Vref, P/Vref]; xe = fsolve(fun, x0); Ve = xe(1); ie = xe(2); %% 扇形区间,母线电压偏移范围 x1_min = -Ve + 5; % 保证 Ve + x1 >= 5V,分母不会过小 x1_max = 15; %% 非线性项 n(x1) 的上下界 n_min = P / (C * Ve * (Ve + x1_max)); n_max = P / (C * Ve * (Ve + x1_min)); %% 两组顶点矩阵 a0 = -1/(R*C); A1 = [n_min + a0, 1/C; -1/L, -R_line/L]; A2 = [n_max + a0, 1/C; -1/L, -R_line/L];

平衡点求解是整个流程的地基。我一开始直接取 Ve = Vref 当平衡点,结果 LMI 一直无解,后来检查才发现实际上由于线路电阻压降,Ve 并不是 48V,而是 47.3V 左右。这个细节看起来很小,但平衡点位置直接决定扇形区间的中心,也决定非线性项的上下界,差一点点,LMI 的解就会完全变样。fsolve 解完之后习惯性代回原方程验证残差,确保没问题再往下走。

x1_min 的选择也要注意。因为 n(x1) 的分母里有 Ve + x1,物理上这个值必须大于零。我选 -Ve + 5 是为了给系统保留一个合理的电压下限,不至于在分母接近零的区域做数学分析,那里本身就不具备工程意义。

4.2 LMI求解与吸引域椭圆绘制

%% YALMIP 求解公共二次 Lyapunov 函数的 P As = {A1, A2}; n = 2; P = sdpvar(n); cons = [P >= 1e-6*eye(n)]; for k = 1:2 Ak = As{k}; cons = [cons, Ak'*P + P*Ak <= -eye(n)]; end ops = sdpsettings('solver','sdpt3','verbose',0); optimize(cons, -logdet(P), ops); Pv = value(P); %% 画吸引域椭圆 figure; hold on; axis equal; th = linspace(0, 2*pi, 200); [Vd, Dd] = eig(Pv); r = 1 ./ sqrt(diag(Dd)).'; % 椭球三个半轴长度 ell = Vd * diag(r) * [cos(th); sin(th)]; plot(ell(1,:) + Ve, ell(2,:) + ie, 'b-', 'LineWidth', 1.5); xlabel('母线电压 V (V)'); ylabel('电感电流 i (A)');

注意优化目标用的是-logdet(P),因为 YALMIP 默认最小化目标函数,而我们要最大化 log det(P) 来得到体积最大的椭球。logdet需要求解器支持锥规划,SDPT3 和 Mosek 都可以。如果你手上只有 Sedumi,需要换一种方式:固定 P 的迹约束,或者用迭代线性搜索。

画椭圆那里我把坐标加了 Ve 和 ie,是希望直接画在原始物理坐标下,一眼就能看出这个吸引域相对于 48V 额定母线电压的位置。

4.3 用原始非线性模型验证吸引域

LMI 给出的是 T-S 模糊系统的稳定性保证,但实际系统的非线性项只是被扇形条件“包住”,并没有被完全替代。所以我习惯在最后的图里叠加几条从椭圆边界出发的时域仿真轨迹,用原始非线性模型验证估计结果。

%% 验证:从椭圆边界出发积分原始非线性模型 function dx = dc_model(x, P, R, Icc, Vg, R_line, L, C) V = x(1); i = x(2); dx = [(i - P/V - V/R - Icc)/C; (Vg - V - i*R_line)/L]; end
tspan = [0 0.08]; for ratio = [0.4 0.8 1.0 1.3] x0p = Vd * diag(ratio*r) * [1; 0] + [Ve; ie]; [~, Xs] = ode45(@(t,x) dc_model(x, P, R, Icc, Vg, R_line, L, C), tspan, x0p); plot(Xs(:,1), Xs(:,2), 'r--'); end

ratio = 1.0 表示从椭圆边界出发,此时轨迹应当收敛到平衡点;ratio = 1.3 表示从椭圆外出发,轨迹可能出现大偏移甚至发散。如果边界内轨迹发散,说明扇形区间选得不合理,或者 LMI 有解但这个 P 对应的椭球越出了扇形有效区间,需要回去调整 x1_min/x1_max 重新求解。这一步不是可选项,是判断估计是否可信的最后一道防线。

5. 四类负载对系统稳定域的影响规律:仿真结果与直观解释

5.1 恒功率负载功率:吸引域收缩的主因

把恒功率负载功率 P 分别取 100W、150W、200W、250W 跑一轮,吸引域的变化非常直观:P 越大,椭圆在电压轴方向上的半轴越短。100W 时椭圆很“胖”,电压偏移可以承受接近 20V;150W 时明显收紧;到 200W 时电压方向半轴只剩大约 8V;250W 时 LMI 已经很难求出一组同时满足两个顶点矩阵的 P。

这个结果和物理直觉吻合。P 越大,恒功率负载的负阻抗特性越强,相当于在母线电容上并联了一个更“负”的等效电阻,系统的净阻尼下降。吸引域收缩的信号在工程上非常有用——它告诉你当前功率配置下,系统最多能承受多大的电压跌落还能自己恢复,超出就需要保护或附加控制介入。

5.2 恒阻抗负载:稳定域收缩温和但有边界效应

恒阻抗负载的电阻 R 从 4Ω 改到 2Ω(负载变重),吸引域在电压轴方向也有收缩,但收缩速度明显比恒功率负载慢。原因在于恒阻抗负载在扰动中的电流变化始终和电压方向一致,它的等效阻抗是正电阻,始终提供阻尼,只是改变系统工作点和局部增益。不过要注意,R 变小会导致平衡点电流 ie 变大,线路压降增加,整体工作状态离输入源极限更近,当 R 小到一定程度,平衡点求解本身就开始受到输入电压上限的制约。

5.3 恒流负载:吸引域整体平移

恒流负载 Icc 的变化在扰动方程里完全不出现,它的效果只是改变平衡点 (Ve, ie)。实际仿真中,Icc 从 1A 加到 5A,平衡点母线电压从 47.8V 移到 46.5V,吸引域椭圆的形状几乎不变,但整体位置跟着平衡点平移。

这个结论对系统设计有一个启示:恒流负载本身不会恶化大信号稳定性,但如果它的加入让平衡点电压显著偏移,就相当于把系统工作点往非线性更强的区域推,间接压缩了可用的稳定裕度。分析时不能只看“有没有稳定性问题”,要看平衡点相对于非线性区间的位置。

5.4 负载组合的工程含义

负载类型数学模型非线性程度对吸引域的主要影响工程含义
恒功率负载P/V强,负阻尼明显收缩,功率越大多个限制单级CPL功率,或增加阻尼控制
恒阻抗负载V/R_cil弱,正阻尼温和收缩可大量使用,是系统天然的稳定“压舱石”
恒流负载I_ccl无显式状态项平衡点平移,吸引域整体位移影响工作点,不直接改变稳定域形状
混合负载上述叠加取决于CPL占比整体不规则收缩设计时按最恶劣CPL工况校核

这张表是我在整个复现过程中逐步整理出来的。刚开始只觉得“恒功率负载危害大”,具体大到什么程度、其他负载怎么参与,一直是糊涂账。当把这些影响用统一模型跑出来之后,很多设计决策就清晰了:比如给恒功率负载前级加一点阻性负载,可能比盲目加电容更有效。

6. 复现论文时最容易踩的坑:从我的排错记录说起

6.1 平衡点算错,后面全是空中楼阁

这个坑我踩得最深,也最不值得踩。因为模型里只要有线路电阻,额定电压和实际平衡电压就必然有偏差。为了省事直接用 Vref 当 Ve,结果 LMI 无解,我花了一整天排查代码,最后才发现是平衡点的问题。

平衡点求出来之后,务必代回原方程验证残差。我现在的习惯是 fsolve 之后立刻打印fun(xe),看到残差是 1e-12 级别才继续。另外,扇形区间的中心是 Ve 不是 Vref,所有的非线性项和顶点矩阵都要围绕 Ve 构造,这个坐标系的统一非常重要,否则即使 LMI 有解,画出来的椭圆也是错位的。

6.2 扇形区间大小与LMI可行性之间的博弈

扇形区间越宽,覆盖的电压扰动范围越大,但两个顶点矩阵 A1、A2 的动态差异也越大,公共 P 越难存在。反过来,区间太窄,椭球很容易超出区间边界,导致分析结论在工程上不可用。

我的推荐操作是二分试探:先取一个比较宽的物理合理区间,求解 LMI;如果无解,就逐步缩小;如果解出来了,画图和轨迹验证时重点检查椭球边界上的状态是否都落在 [x1_min, x1_max] 内。这个过程最好写成一个脚本自动跑,手工调参很浪费时间。

6.3 YALMIP与logdet的求解器选择

YALMIP 有一个坑:目标函数里带logdet时,它要求后端求解器支持锥规划。SDPT3、Mosek、SDPNAL 都可以,但 Sedumi 不行。如果你电脑上装的是默认配置,很可能报一个含糊的错误说“无法处理目标函数”,这时候去下载安装 SDPT3 并将路径加进 Matlab,问题就解决了。

另外,verbose建议设为 0 或 1,求解器的调试信息不仅刷屏,还会让脚本运行变慢。真正出错时再用verbose=2看细节。

6.4 特征值稳定不等于大信号稳定

复现到一半时我差点走入误区:手算某工况下两个顶点矩阵的特征值,全是负实部,就以为系统没问题。后来用非线性模型仿真,发现初值电压偏移超过 10V 就回不到平衡点。这个例子非常典型——局部线性稳定只说明小扰动下系统能恢复,大扰动下非线性项可能主导动态过程,把系统推向另一个平衡点或直接发散。

所以验证吸引域估计的唯一可靠方式是时域仿真原始非线性模型。LMI 解出的 P 只是一个数学保证,P 和真实吸引域之间还有保守性差距。工程应用时建议在估计值基础上再打个折扣,留足安全余量。

6.5 高阶模型的降维思路

两阶模型可以跑通整套流程,但实际微电网往往还要考虑变换器内环、恒功率负载的LC输入滤波器、多母线互联等,状态维度会涨到五阶、七阶。LMI 本身处理高维没有理论障碍,但公共二次 Lyapunov 函数的保守性会变大,求出来的吸引域可能小到没有工程意义。

我在论文里看到比较实用的做法是先用奇异摄动理论把快动态(如变换器内环)约掉,保留慢动态(母线电压、主导电流)做主分析,再用时域仿真验证约简的合理性。这个方法能显著改善保守性,代码实现也更快。先把二阶层级跑通,再逐步往上加状态,是我复现完整个流程后最想给同行的建议。

最后再分享一点体会:T-S 模糊模型乍看就是把非线性系统拆成几个线性系统加权,真正自己动手把负载非线性写成扇形区间、让 LMI 跑出 P 之后,你对整个系统稳定边界的理解才会变扎实。拿到一个微电网模型,先别急着写代码,手动从能量角度想清楚哪些负载在向系统注入能量,哪些在消耗能量,再决定分区间的边界怎么选。这样求出来的吸引域才有物理意义,否则很容易把 LMI 当成一个黑盒数值工具,算出一堆“数学正确、工程可疑”的结果。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询