Matlab/Simulink仿真的PQ控制的跟网型储能系统有控制环路未考虑锁相环dq阻抗扫频代码加仿真一键运行这是一组典型的 控制系统频域分析图Bode 图。DC-DC 变换器如 Buck 电路 或 滤波器 的开环传递函数波特图。红色的圆圈代表实测数据点通常来自网络分析仪或 MATLAB 的 frestimate 频域估算蓝色的实线代表拟合的数学模型。MATLAB 复现代码function plot_bode_analysis_demo()%% 1. 定义拉普拉斯变量s tf(‘s’);%% 2. 模拟 Figure 1: 原始开环系统 (LC 谐振) % 特征在谐振频率处有尖峰相位从 0 跌落到 -180 % 模拟一个二阶 LC 滤波器 L 100e-6; % 电感 100uH C 100e-6; % 电容 100uH R 0.5; % 负载电阻 % 传递函数 G(s) 1 / (LCs^2 (L/R)s 1) G1 1 / (Cs^2 (L/R)*s 1); %% 3. 模拟 Figure 3: 含有右半平面零点 (RHPZ) 的系统 % 特征幅值在高频上升(或跌得慢)相位在高频处急剧上升(从-180回到-90甚至0) % 常见于 Boost 或 Buck-Boost 变换器 % RHPZ 形式为 (1 - s/wz) wz pi4000; % 零点频率 4kHz G3 G1 * (1 - s/wz); %% 4. 模拟 Figure 2 和 4 (加入补偿或不同参数) % Figure 2: 加入 PI 控制器低频增益提高相位提升 kp 0.1; ki 1000; C_pi kp ki/s; G2 G1 * C_pi; % Figure 4: 加入 Type II 或 Type III 补偿系统变得平滑 % 这里简单模拟一个经过良好补偿的系统 G4 G1 * (1 s/(pi500)) / (s * (1 s/(pi10000))); %% 5. 绘图 (复现图片布局) figure(Name, Bode Plot Analysis, Position, [100, 100, 1000, 800]); % --- 绘制 Figure 1 --- subplot(2,2,1); h1 bodeplot(G1, {10, 10000}); % 范围 10Hz - 10kHz title(Figure 1: Plant (LC Filter)); grid on; % 模拟实测点 (在图上叠加红色圆圈) hold on; [mag1, phase1, w1] bode(G1, logspace(1, 4, 20)); plot(w1, 20*log10(squeeze(mag1)), ro, MarkerSize, 6, LineWidth, 1.5); plot(w1, squeeze(phase1), ro, MarkerSize, 6, LineWidth, 1.5); % --- 绘制 Figure 2 --- subplot(2,2,2); h2 bodeplot(G2, {10, 10000}); title(Figure 2: With PI Compensation); grid on; hold on; [mag2, phase2, w2] bode(G2, logspace(1, 4, 20)); plot(w2, 20*log10(squeeze(mag2)), ro, MarkerSize, 6, LineWidth, 1.5); plot(w2, squeeze(phase2), ro, MarkerSize, 6, LineWidth, 1.5); % --- 绘制 Figure 3 --- subplot(2,2,3); h3 bodeplot(G3, {10, 10000}); title(Figure 3: Boost Converter (With RHPZ)); grid on; hold on; [mag3, phase3, w3] bode(G3, logspace(1, 4, 20)); plot(w3, 20*log10(squeeze(mag3)), ro, MarkerSize, 6, LineWidth, 1.5); plot(w3, squeeze(phase3), ro, MarkerSize, 6, LineWidth, 1.5); % --- 绘制 Figure 4 --- subplot(2,2,4); h4 bodeplot(G4, {10, 10000}); title(Figure 4: Optimized Compensation); grid on; hold on; [mag4, phase4, w4] bode(G4, logspace(1, 4, 20)); plot(w4, 20*log10(squeeze(mag4)), ro, MarkerSize, 6, LineWidth, 1.5); plot(w4, squeeze(phase4), ro, MarkerSize, 6, LineWidth, 1.5); % 调整格式 set(findall(gcf, Type, axes), FontSize, 10);end代码解析Figure 1 (左上)模拟了一个典型的 LC 滤波器。你可以看到在 10^3 Hz 附近有一个明显的谐振尖峰相位从 0° 跌落到 -180°这是二阶系统的特征。Figure 3 (左下)模拟了 Boost 变换器的特性。注意在 4kHz 附近相位突然向上翘起从 -180° 回到 -90° 左右这是右半平面零点的典型特征也是控制设计中需要避免带宽过大的原因。红色圆圈代码中使用了 plot(…, ‘ro’) 来模拟图片中叠加在理论曲线上的实测数据点这在系统辨识中非常常见。频率范围设置为 10^1 到 10^4 Hz与你图片中的横坐标一致。左上角紫色框包含 三相可编程电压源Three-Phase Programmable Voltage Source、三相串联 RLC 支路 以及 三相 V-I 测量模块这通常是电网或负载的模拟部分。右侧包含 三相断路器 和 三相并联 RLC 负载用于模拟电网故障或负载投切。右下角包含 锁相环 和 PWM 发生器这是典型的 逆变器控制 部分用于同步电网相位并生成开关信号。Simulink 模型并添加图中可见的关键模块如三相电源、锁相环、PWM 等function create_microgrid_model()% 1. 创建新的 Simulink 模型modelName ‘Microgrid_Simulation’;new_system(modelName, ‘Model’);open_system(modelName);% 2. 定义添加模块的辅助函数 % 参数模块路径模块在画布上的位置 [左, 下, 右, 上] add_block_func (src, dst, pos, name) add_block(src, [modelName / name], Position, pos); %% 3. 添加主电路组件 (对应图中左侧和右侧) % 添加三相可编程电压源 (Three-Phase Programmable Voltage Source) add_block_func(powerlib/Sources/Three-Phase Programmable Voltage Source, ... Vsource, [100 100 140 140]); % 添加三相串联 RLC 支路 (对应图中的 RF_LF 滤波器或线路阻抗) add_block_func(powerlib/Elements/Three-Phase Series RLC Branch, ... RF_LF, [200 100 240 140]); % 添加三相 V-I 测量模块 add_block_func(powerlib/Measurements/Three-Phase V-I Measurement, ... VI_Meas, [280 100 320 140]); % 添加三相并联 RLC 负载 (对应图中的 Load) add_block_func(powerlib/Elements/Three-Phase Parallel RLC Load, ... Load, [500 100 540 140]); % 添加三相断路器 (对应图中的 Breaker) add_block_func(powerlib/Elements/Three-Phase Breaker, ... Breaker, [400 100 440 140]); % 添加接地 add_block_func(powerlib/Elements/Ground, ... Ground, [200 200 230 230]); %% 4. 添加控制组件 (对应图中右下角) % 添加锁相环 add_block_func(powerlib/Control Measurements/PLL (3ph), ... PLL, [400 300 460 360]); % 添加 PWM 发生器 (这里使用通用的 PWM Generator) add_block_func(powerlib/Control Measurements/PWM Generator, ... PWM_Gen, [500 300 580 380]); % 添加示波器 (Scope) 用于观察波形 add_block_func(simulink/Sinks/Scope, ... Scope, [650 100 680 130]); %% 5. 连接模块 (简化连接示例) % 连接电压源到 RLC 支路 add_line(modelName, Vsource/ABC, RF_LF/ABC); % 连接 RLC 支路到 V-I 测量 add_line(modelName, RF_LF/ABC, VI_Meas/ABC); % 连接 V-I 测量到断路器 add_line(modelName, VI_Meas/ABC, Breaker/ABC); % 连接断路器到负载 add_line(modelName, Breaker/ABC, Load/ABC); % 自动整理布局 Simulink.BlockDiagram.arrangeSystem(modelName); save_system(modelName); disp(模型已生成Microgrid_Simulation.slx);end打开 MATLAB。新建一个脚本将上述代码粘贴进去。运行脚本。MATLAB 会自动弹出一个名为 Microgrid_Simulation 的 Simulink 模型里面已经摆放好了图中的核心电力电子模块。图中各模块的具体功能解释Three-Phase V-I Measurement用于测量三相电压和电流通常输出信号给示波器或控制回路。PLL (3ph)锁相环用于检测电网电压的相位角这是逆变器并网控制的核心确保逆变器输出与电网同步。PWM Generator脉宽调制发生器根据控制算法如 PI 控制或下垂控制