基于matpower39节点系统当发生故障导致频率变化时考虑惯量来计算虚拟惯性控制、有功-频率下垂特性控制、减载控制的matlab代码

以下是基于MATPOWER 39节点系统的虚拟惯性控制、有功-频率下垂特性控制和减载控制的MATLAB代码示例:

% 加载matpower39节点系统数据
mpc = loadcase('case39');

% 设置故障发生时间和故障类型
fault_time = 2;  % 故障发生时间(秒)
fault_type = '3ph';  % 故障类型(三相短路)

% 运行潮流计算以获取基准频率和初始功率
results = runpf(mpc);
f_base = results.f;  % 基准频率
p_base = results.gen(:, 2);  % 初始有功功率

% 虚拟惯性控制
H = 6;  % 惯性常数
t = 0:0.01:10;  % 时间范围
f = f_base * ones(size(t));  % 初始化频率为基准频率
for i = 2:length(t)
    if t(i) >= fault_time
        % 根据故障类型计算故障后的频率变化
        switch fault_type
            case '3ph'
                f(i) = f(i-1) - (1/H) * (1 - f(i-1));
            case '1ph'
                f(i) = f(i-1) - (1/H) * (3 - f(i-1));
        end
    else
        f(i) = f(i-1) - (1/H) * (f(i-1) - f_base);
    end
end

% 有功-频率下垂特性控制
Kp = 0.05;  % 比例增益
t_pfr = 0:0.01:10;  % 时间范围
pfr = p_base * ones(size(t_pfr));  % 初始化有功-频率下垂特性
for i = 2:length(t_pfr)
    if t_pfr(i) >= fault_time
        % 根据故障类型计算故障后的有功-频率下垂特性
        switch fault_type
            case '3ph'
                pfr(i) = pfr(i-1) + Kp * (f_base - f(i-1));
            case '1ph'
                pfr(i) = pfr(i-1) + Kp * (f_base - f(i-1)) / 3;
        end
    else
        pfr(i) = pfr(i-1) + Kp * (f_base - f(i-1));
    end
end

% 减载控制
Kd = 0.1;  % 减载增益
t_unl = 0:0.01:10;  % 时间范围
unl = ones(size(t_unl));  % 初始化减载控制信号
for i = 2:length(t_unl)
    if t_unl(i) >= fault_time
        unl(i) = 1 - Kd * (f_base - f(i-1));
    else
        unl(i) = 1;
    end
end

% 绘制结果
figure;
subplot(3,1,1);
plot(t, f);
xlabel('时间(秒)');
ylabel('频率(标幺)');
title('虚拟惯性控制');

subplot(3,1,2);
plot(t_pfr, pfr);
xlabel('时间(秒)');
ylabel('有功功率(MW)');
title('有功-频率下垂特性控制');

subplot(3,1,3);
plot(t_unl, unl);
xlabel('时间(秒)');
ylabel('减载控制信号');
title('减载控制');

请注意,这只是一个简单的示例,仅包含了基本的控制逻辑。实际的控制算法可能会更加复杂,并且需要根据具体的场景进行调整和优化

标签: 财经


原文地址: https://cveoy.top/t/topic/hCp0 著作权归作者所有。请勿转载和采集!