三种高压直流输电MATLAB/simulink模型(两种详细模型和一种平均值模型)+模型所有信号的含义、流向、推导(原来是本人的课题,总结的很详细)+换相失败原理、分类、抑制、改进措施梳理
在这里插入图片描述
这是一个非常专业且庞大的课题,涵盖了高压直流输电(HVDC)的核心建模、信号流分析以及换相失败(Commutation Failure, CF)的机理与抑制。

由于“原来是本人的课题”意味着你拥有特定的私有代码或独特的推导细节,我无法直接获取你私人的文件。但是,我可以基于通用的CIGRE基准模型和学术界标准方法,为你构建一套完整的框架。这包括:
三种模型的Simulink搭建思路与区别(2种详细电磁暂态模型 + 1种平均值模型)。
关键信号的物理含义、流向及核心公式推导。
换相失败的深度梳理(原理、分类、抑制策略)。
MATLAB代码示例(用于生成基础模型结构、计算换相角及实现简单的预测型抑制逻辑)。

第一部分:三种HVDC MATLAB/Simulink模型架构

在Simulink中,通常使用 Simscape Electrical (原SimPowerSystems) 库。

详细电磁暂态模型 A:基于理想开关的详细模型 (Detailed Switching Model)
特点:使用晶闸管(Thyristor)模块,考虑具体的触发脉冲、导通/关断过程。
适用场景:研究谐波、详细的换相过程、控制系统的微秒级响应。
Simulink实现:
使用 Universal Bridge (设置为6-pulse Thyristor) 或离散晶闸管模块。
需要极小的步长(如 1mu s 或 2mu s)。
包含细节:阀电压、阀电流、具体的换相重叠角 mu 的动态变化。

详细电磁暂态模型 B:基于CIGRE基准的详细模型 (CIGRE Benchmark Detailed)
特点:这是国际通用的测试模型(CIGRE HVDC Benchmark),包含了更真实的变压器漏抗、滤波器组、平波电抗器参数以及标准的分层控制(VDCOL, Gamma Control等)。
区别:相比模型A,它更强调系统级的交互,参数完全标准化,常用于验证新控制策略的有效性。
Simulink实现:
通常直接加载MathWorks官方提供的 power_hvdc 示例并进行修改。
重点在于交流侧滤波器和直流侧线路的pi型等效电路精度。

平均值模型 (Average Value Model, AVM)
特点:不模拟单个晶闸管的开关动作,而是用受控电压源/电流源代替换流桥,输出基波分量。
适用场景:大规模系统仿真、机电暂态分析、长时间动态过程(秒级/分钟级),仿真速度快(步长可达 50mu s 甚至更大)。
Simulink实现:
使用 Average-Value VSC (如果是VSC-HVDC) 或自定义受控源模块(对于LCC-HVDC)。
核心逻辑:根据触发角 alpha 和熄弧角 gamma 直接计算直流电压 V_d 和交流基波电流 I_{ac}。
公式:V_d = frac{3sqrt{2}}{pi} N V_{LL} cosalpha - frac{3}{pi} N X_c I_d (忽略电阻)。

第二部分:模型信号含义、流向与推导

信号流向图 (Signal Flow)

graph LR
AC_Grid --> Transformer --> Converter_Bridge
Converter_Bridge --> DC_Line --> Inverter_Converter --> AC_Grid_Inv

subgraph Control_System
    PLL --> Sync_Signal
    V_meas --> VDCOL --> Order_Current
    I_meas --> Current_Controller --> Alpha_Order
    Gamma_Meas --> Gamma_Controller --> Alpha_Order_Min
    Alpha_Order --> Firing_Pulse_Gen --> Converter_Bridge
end

关键信号含义与推导
信号名称 符号 物理含义 推导/计算公式 流向
触发角 alpha 晶闸管从自然换相点延迟触发的角度 由电流控制器输出,经最小alpha限制后生成 控制器 to 脉冲发生器

熄弧角 gamma 晶闸管关断时刻到反向电压过零点的角度 gamma = beta - mu = 180^circ - alpha - mu 测量环节 to gamma控制器

换相重叠角 mu 两相同时导通进行电流交换的时间角度 cos(alpha+mu) = cosalpha - frac{2 X_c I_d}{sqrt{2} V_{LL}} 隐含在桥臂电压电流中

直流电压 V_d 换流器输出的平均直流电压 V_d = V_{d0}cosalpha - R_c I_d 其中 V_{d0} = frac{3sqrt{2}}{pi}N V_{LL} 换流桥 to 直流线路

VDCOL输出 I_{ord} 低压限流环节输出的电流指令 分段函数:当 V_d 1
gamma_natural(i) = 180; % 数学上无解,物理上已完全失败
elseif cos_gamma_val 1
% 即使alpha=0也无法避免失败
gamma_predicted(i) = 0;
elseif cos_alpha_req 90, 😃 = [];
disp(‘预测控制查找表前5行 (Voltage_pu, Alpha_req):’);
disp(head(predictive_table, 5));

代码 2: Simulink 平均值模型 (AVM) 核心逻辑函数

你可以将此函数保存为 hvdc_avm_block.m,然后在 Simulink 中使用 MATLAB Function 模块调用,从而快速搭建平均值模型。

function [V_dc, I_ac_mag, Phase_shift] = hvdc_avm_core(V_ac_ll, I_dc_ref, Alpha_cmd, System_Params)
%#codegen
% HVDC Average Value Model Core Logic
% 输入:
% V_ac_ll: 交流线电压幅值 (V)
% I_dc_ref: 直流电流指令 (A)
% Alpha_cmd: 触发角指令 (rad)
% System_Params: 结构体,包含 N (脉波数), Xc (换相电抗), R_eq (等效电阻)
%
% 输出:
% V_dc: 计算出的直流电压 (V)
% I_ac_mag: 交流侧基波电流幅值 (A)
% Phase_shift: 电流相对于电压的相位滞后 (rad)

N = System_Params.N;
Xc = System_Params.Xc;
Req = System_Params.Req;

% 1. 理想空载直流电压
V_d0 = (3 * sqrt(2) / pi) * N * V_ac_ll;

% 2. 考虑换相重叠的直流电压降
% V_dc = V_d0 * cos(alpha) - (3/piNXI_dc - I_dcReq
% 注意:这里假设电流跟随指令迅速,实际模型中I_dc是状态变量
V_dc = V_d0 * cos(Alpha_cmd) - (3/pi) * N * Xc * I_dc_ref - I_dc_ref * Req;

% 限制直流电压不为负 (阻塞状态)
if V_dc  1, cos_alpha_mu = 1; end
if cos_alpha_mu < -1, cos_alpha_mu = -1; end

mu = acos(cos_alpha_mu) - Alpha_cmd;
if mu < 0, mu = 0; end

Phase_shift = Alpha_cmd + mu / 2;

end

如何使用这些资源完成你的课题总结

模型搭建:
打开Simulink,新建模型。
详细模型:搜索 power_hvdc (如果安装了Simscape Electrical),复制并根据你的课题参数修改变压器变比和线路长度。
平均值模型:放置两个 MATLAB Function 模块(整流侧和逆变侧),将上面的 hvdc_avm_core 代码粘贴进去,用受控电压源连接直流线路。
信号梳理:
在Simulink中,使用 Bus Creator 将 V_d, I_d, alpha, gamma, mu 打包。
利用 To Workspace 模块将数据导出到MATLAB工作区。
使用MATLAB脚本绘制上述信号在故障前后的波形,并在论文/报告中标注出“换相失败发生时刻”和“恢复时刻”。
换相失败抑制验证:
在逆变侧控制系统中,加入一段逻辑:检测 V_{ac} 的 dV/dt 或幅值。
一旦检测到跌落,强制将 gamma_{ref} 从 15^circ 提升到 20^circ(即减小 beta),观察是否避免了连续换相失败。
对比“加抑制”和“不加抑制”的直流功率恢复曲线。

在这里插入图片描述

第一部分:模型图解与信号分析

首先,我们来解析一下您图片中的模型构成:

左侧 (整流侧 Rectifier Side):
500kV, 60 Hz, 5000 MVA equivalent: 等效的交流电网,为整流站提供电源。
Transformer: 换流变压器,用于电压匹配和提供换相电抗。
Rectifier: 6脉波晶闸管换流桥,将交流电转换为直流电。
AC Filter A/B: 交流滤波器,用于滤除换流器产生的特征谐波(如5、7、11、13次等)。
Reactive Power Control: 无功功率控制器,可能通过投切滤波器或电容器组来维持母线电压稳定。

中间 (直流线路 DC Line):
DC line 300 km: 直流输电线路,通常用π型等效电路表示。
DC Fault: 一个可控的开关,用于模拟直流线路上的短路故障,以测试系统的故障穿越能力。

右侧 (逆变侧 Inverter Side):
Inverter: 6脉波晶闸管换流桥,将直流电转换回交流电。
Transformer, AC Filter A/B, Reactive Power Control: 功能与整流侧类似。
345kV, 60 Hz, 10,000 MVA equivalent: 受端的等效交流电网。
A-G Fault: 一个可控的开关,用于模拟受端交流电网的单相接地故障。这是诱发换相失败最典型的故障类型。

底部 (控制系统 Control Systems):
Rectifier Control: 整流侧控制器,通常采用定电流控制 (Constant Current Control)。
Inverter Control: 逆变侧控制器,通常采用定熄弧角控制 (Constant Extinction Angle Control) 以防止换相失败,并配有低压限流环节 (VDCOL)。
Master Control: 主控制器,负责功率/电流指令的下发和运行模式的切换。

第二部分:MATLAB 代码 - 从零搭建 Simulink 模型

这段代码将在您的当前工作目录下创建一个名为 my_hvdc_model.slx 的 Simulink 模型文件,其结构与您的图片基本一致。

%% 创建 HVDC Simulink 模型
% 此脚本将根据提供的图片, programmatically 创建一个 Simulink 模型。

model_name = ‘my_hvdc_model’;
new_system(model_name); open_system(model_name);

% — 1. 添加主要电力组件 —
% 注意:路径 ‘Simscape/Electrical/…’ 可能因MATLAB版本不同而略有差异
add_block(‘powergui/Powergui’, [model_name ‘/powergui’], ‘Position’, [20 20 80 60]);

% — 交流系统 —
add_block(‘powerlib/Electrical Sources/Three-Phase Source’, …
[model_name ‘/AC Source (Rect)’], …
‘VoltageAmplitude’, ‘500e3/sqrt(3)’, …
‘Frequency’, ‘60’, …
‘Position’, [50 200 100 240]);

add_block(‘powerlib/Electrical Sources/Three-Phase Source’, …
[model_name ‘/AC Source (Inv)’], …
‘VoltageAmplitude’, ‘345e3/sqrt(3)’, …
‘Frequency’, ‘60’, …
‘Position’, [850 200 900 240]);

% — 变压器 —
add_block(‘powerlib/Elements/Three-Phase Transformer (Two Windings)’, …
[model_name ‘/Transformer (Rect)’], …
‘Nominal power and frequency [Pn(VA) fn(Hz)]’, ‘[5000e6 60]’, …
‘Winding 1 parameters [V1(P-P Phasor) R1(pu) L1(pu)]’, ‘[500e3 0.002 0.08]’, …
‘Winding 2 parameters [V2(P-P Phasor) R2(pu) L2(pu)]’, ‘[230e3 0.002 0.08]’, …
‘Position’, [150 200 200 280]);

add_block(‘powerlib/Elements/Three-Phase Transformer (Two Windings)’, …
[model_name ‘/Transformer (Inv)’], …
‘Nominal power and frequency [Pn(VA) fn(Hz)]’, ‘[5000e6 60]’, …
‘Winding 1 parameters [V1(P-P Phasor) R1(pu) L1(pu)]’, ‘[230e3 0.002 0.08]’, …
‘Winding 2 parameters [V2(P-P Phasor) R2(pu) L2(pu)]’, ‘[345e3 0.002 0.08]’, …
‘Position’, [750 200 800 280]);

% — 换流器 (使用通用桥臂简化表示) —
add_block(‘powerlib/Power Electronics/Universal Bridge’, …
[model_name ‘/Rectifier’], …
‘Number of bridge arms’, ‘6’, …
‘Snubber resistance Rs (Ohms)’, ‘100000’, …
‘Forward voltage [Von(V) Rd(Ohm)]’, ‘[1.5 0.001]’, …
‘Position’, [250 200 300 300]);

add_block(‘powerlib/Power Electronics/Universal Bridge’, …
[model_name ‘/Inverter’], …
‘Number of bridge arms’, ‘6’, …
‘Snubber resistance Rs (Ohms)’, ‘100000’, …
‘Forward voltage [Von(V) Rd(Ohm)]’, ‘[1.5 0.001]’, …
‘Position’, [650 200 700 300]);

% — 直流线路 (简化为电阻电感) —
add_block(‘powerlib/Elements/Series RLC Branch’, …
[model_name ‘/DC Line R’], …
‘Branch type’, ‘R’, …
‘Resistance R (Ohms)’, ‘5’, … % 300km线路的近似电阻
‘Position’, [450 240 500 260]);

add_block(‘powerlib/Elements/Series RLC Branch’, …
[model_name ‘/DC Line L’], …
‘Branch type’, ‘L’, …
‘Inductance L (H)’, ‘0.5’, … % 300km线路的近似电感
‘Position’, [510 240 560 260]);

% — 故障模块 —
add_block(‘powerlib/Extras/Discontinuities/Breaker’, …
[model_name ‘/DC Fault’], …
‘Initial status’, ‘closed’, …
‘Position’, [480 300 530 340]);

add_block(‘powerlib/Extras/Discontinuities/Breaker’, …
[model_name ‘/A-G Fault’], …
‘Initial status’, ‘closed’, …
‘Position’, [820 300 870 340]);

% — 滤波器 (简化为一个并联RLC支路) —
add_block(‘powerlib/Elements/Three-Phase Series RLC Load’, …
[model_name ‘/AC Filter A (Rect)’], …
‘Nominal voltage Vln (Vrms)’, ‘230e3/sqrt(3)’, …
‘Nominal frequency fn (Hz)’, ‘60’, …
‘Active power P (W)’, ‘0’, …
‘Inductive reactive power QL (var)’, ‘-300e6’, … % 容性无功
‘Position’, [200 350 250 400]);

% … (其他滤波器和无功补偿模块可以类似方式添加)

% — 2. 连接模块 (简化连接示例) —
% 连接整流侧
add_line(model_name, ‘AC Source (Rect)/1’, ‘Transformer (Rect)/1’);
add_line(model_name, ‘Transformer (Rect)/2’, ‘Rectifier/1’);
add_line(model_name, ‘Rectifier/2’, ‘DC Line R/1’);
add_line(model_name, ‘DC Line R/1’, ‘DC Line L/1’);
add_line(model_name, ‘DC Line L/1’, ‘Inverter/2’);
add_line(model_name, ‘Inverter/1’, ‘Transformer (Inv)/2’);
add_line(model_name, ‘Transformer (Inv)/1’, ‘AC Source (Inv)/1’);

% 连接故障
add_line(model_name, ‘DC Fault/1’, ‘DC Line R/1’); % 一端接在直流线路上
add_line(model_name, ‘DC Fault/2’, ‘DC Line R/1’); % 另一端也接在同一点,通过闭合实现短路

% — 3. 保存模型 —
save_system(model_name);
disp(['模型已创建并保存为: ', model_name, ‘.slx’]);
disp(‘请注意:此脚本创建了基本拓扑,详细的参数、测量模块和控制回路需要您手动或在后续脚本中完善。’);

第三部分:核心控制与换相失败抑制代码

这部分是课题的灵魂。我们将创建一个 MATLAB Function 模块的核心代码,它实现了带预测功能的熄弧角控制器。您可以将此代码放入 Simulink 的 MATLAB Function 模块中。

代码功能:
实时计算熄弧角 gamma。
检测交流电压跌落,判断是否有换相失败风险。
启动预测控制:一旦检测到风险,立即增大触发超前角 beta (即减小 alpha),为换相过程预留更多时间,从而保证 gamma > gamma_{min}。

function alpha_out = predictive_gamma_controller(V_ac_meas, I_dc_meas, gamma_ref, sys_params)
%#codegen
% 预测型熄弧角控制器
% 输入:
% V_ac_meas: 测量的交流线电压幅值 (V)
% I_dc_meas: 测量的直流电流 (A)
% gamma_ref: 参考熄弧角 (rad), 例如 18 度
% sys_params: 包含系统参数的结构体 (N, Xc, etc.)
% 输出:
% alpha_out: 计算出的触发角指令 (rad)

% --- 1. 参数提取 ---
N = sys_params.N;          % 脉波数
Xc = sys_params.Xc;        % 换相电抗 (Ohm)
gamma_min = 10 * pi / 180; % 最小允许熄弧角 (rad)
Kp = 5.0;                  % 比例增益
Ki = 100.0;                % 积分增益

% --- 2. 状态变量 (需要使用持久变量 persistent 来保持) ---
persistent gamma_integrator alpha_prev;
if isempty(gamma_integrator)
    gamma_integrator = 0;
end
if isempty(alpha_prev)
    alpha_prev = 15 * pi / 180; % 初始触发角
end

% --- 3. 计算当前实际熄弧角 gamma_actual ---
% 公式: cos(gamma) = cos(alpha) - (2 * Xc * Id) / (sqrt(2) * Vll)
% 我们用上一拍的 alpha_prev 来估算当前的 gamma
cos_alpha_prev = cos(alpha_prev);
term = (2 * Xc * I_dc_meas) / (sqrt(2) * V_ac_meas);
cos_gamma_est = cos_alpha_prev - term;

% 边界处理
if cos_gamma_est > 1
    gamma_actual = 0;
elseif cos_gamma_est  1
        alpha_out = 0; % alpha 最小为0
    elseif cos_alpha_req  max_delta_alpha
        alpha_out = alpha_prev + sign(delta_alpha) * max_delta_alpha;
    end
    
else
    % --- 正常运行模式 (定 gamma 控制) ---
    error = gamma_ref - gamma_actual;
    
    % 简单的PI控制律
    d_gamma_integrator = Ki * error;
    gamma_integrator = gamma_integrator + d_gamma_integrator;
    alpha_out = alpha_prev + Kp * error + gamma_integrator;
    
    % 限制 alpha 的输出范围
    alpha_min = 5 * pi / 180;
    alpha_max = 160 * pi / 180;
    if alpha_out  alpha_max
        alpha_out = alpha_max;
        gamma_integrator = 0; % 抗积分饱和
    end
end

% --- 5. 更新状态 ---
alpha_prev = alpha_out;

end

您需要手动添加测量模块(如 Three-Phase V-I Measurement)来获取 V_{ac} 和 I_{dc}。
添加脉冲发生器(如 Six-Pulse Generator),并将上述 predictive_gamma_controller 的计算结果 alpha_out 连接到它的触发角输入端。
配置好所有模块的参数,使其与您的课题数据匹配。

集成控制代码:
在 Simulink 库中找到 User-Defined Functions -> MATLAB Function。
将其拖入您的模型,双击打开,将 predictive_gamma_controller 的代码粘贴进去。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐