直流潮流法matlab实现不使用工具箱
时间: 2023-12-04 07:04:15 浏览: 131
关于matlab直流最优潮流程序
5星 · 资源好评率100%
如果不想使用Power System Toolbox工具箱,也可以手动编写直流潮流法的Matlab程序。下面是一个简单的示例程序:
```matlab
% 电力系统拓扑结构数据
busdata = [1 1 1.06 0 0 0;
2 2 1.045 0 0 0;
3 2 1.01 0 0 0;
4 3 1 0 0 0;
5 3 1 0 0 0];
linedata = [1 2 0.2 0.4 0;
1 3 0.3 0.6 0;
2 4 0.1 0.2 0;
2 5 0.1 0.3 0;
3 5 0.2 0.4 0];
% 电力系统负荷数据
loaddata = [1 0.4 0.3;
2 0.3 0.2;
3 0.2 0.1];
% 电力系统发电机数据
gendata = [1 1 1 0.3 0.2 0.1;
2 2 1 0.2 0.1 0.05];
% 直流潮流法计算
P = busdata(:,4) - loaddata(:,2); % 节点有功功率(MW)
Q = busdata(:,5) - loaddata(:,3); % 节点无功功率(MVar)
B = linedata(:,3) ./ linedata(:,4); % 线路导纳(S)
G = 1 ./ linedata(:,3); % 线路电纳(S)
From = linedata(:,1); % 线路起点
To = linedata(:,2); % 线路终点
nbus = max(busdata(:,1)); % 节点数
% 构建节点导纳矩阵
Ybus = zeros(nbus, nbus);
for k = 1:size(linedata, 1)
Ybus(From(k), To(k)) = -B(k);
Ybus(To(k), From(k)) = -B(k);
Ybus(From(k), From(k)) = Ybus(From(k), From(k)) + G(k);
Ybus(To(k), To(k)) = Ybus(To(k), To(k)) + G(k);
end
% 构建节点电流注入向量
Ibus = complex(P, Q);
% 计算节点电压
Vbus = inv(Ybus) * Ibus;
% 计算线路功率流
Sline = zeros(size(linedata));
for k = 1:size(linedata, 1)
i = From(k);
j = To(k);
Sline(k,1) = i; % 起点
Sline(k,2) = j; % 终点
Sline(k,3) = abs(Vbus(i))^2 * G(k) - abs(Vbus(i) - Vbus(j))^2 * B(k); % 有功功率流(MW)
Sline(k,4) = abs(Vbus(i))^2 * B(k) + abs(Vbus(i) - Vbus(j))^2 * G(k); % 无功功率流(MVar)
end
% 输出计算结果
disp('直流潮流法计算结果:');
disp('节点电压:');
disp(abs(Vbus));
disp('节点有功功率:');
disp(P);
disp('节点无功功率:');
disp(Q);
disp('线路有功功率流:');
disp(Sline(:,3));
disp('线路无功功率流:');
disp(Sline(:,4));
```
在上面的示例程序中,我们手动计算了节点导纳矩阵、节点电流注入向量和节点电压,并根据节点电压计算了线路功率流。需要注意的是,用于计算线路功率流的节点电压需要取其绝对值的平方。
阅读全文