用matlab写一个同步发电机机端纵向故障的程序
时间: 2023-08-04 11:30:14 浏览: 38
同步发电机机端纵向故障也是电力系统中比较常见的一种故障,通常会导致发电机转子振荡,进而影响电网稳定。下面是一个简单的 Matlab 程序,用于模拟同步发电机机端纵向故障。
首先,我们需要定义发电机的基本参数,如额定功率、额定电压、发电机内部电阻等。这里我们假设一个 100 MW、13.8 kV 的同步发电机,其内部电阻为 0.01 pu。
```matlab
% 定义同步发电机参数
Pn = 100; % 额定功率,MW
Vn = 13.8; % 额定电压,kV
R = 0.01; % 发电机内部电阻,pu
```
接下来,我们需要定义发电机的状态空间模型。这里我们采用经典的二阶模型,假设发电机转速、励磁电流和转子振荡角度是发电机的状态变量。同时,我们假设发电机的励磁系统是无限大的,即励磁电流瞬间达到稳态值。最后,我们将状态空间模型转换为微分方程组的形式。
```matlab
% 定义状态空间模型
H = 3.5;
D = 0.01;
E = 1.0;
Td = 0.1;
Km = 0.1;
A = [0 1 0; -1/(2*H) -D/(2*H) E/(2*H); 0 0 -1/Td];
B = [0; 0; Km/Td];
C = [1 0 0; 0 0 1];
D = [0; 0];
% 转换为微分方程组
sys = ss(A, B, C, D);
```
由于是机端纵向故障,因此我们需要添加一个电压源,来模拟电网侧的电压变化。这里我们假设在 5 s 时电压源突然从额定电压降到了 0.9 倍的额定电压。
```matlab
% 定义输入信号
t = 0:0.01:20; % 时间范围,s
u = ones(size(t)) * Vn; % 额定电压,kV
u(t>=5) = 0.9 * Vn; % 5 s 后电压突然降到 0.9 倍的额定电压
```
接下来,我们使用 `lsim` 函数模拟系统的响应。
```matlab
% 模拟系统响应
x0 = [1; 0; 0]; % 初始状态
y = lsim(sys, u, t, x0);
```
最后,我们可以将模拟结果可视化,以便更好地观察发电机的振荡情况。
```matlab
% 绘制振荡角度随时间的变化曲线
figure;
subplot(2, 1, 1);
plot(t, y(:, 1));
xlabel('Time (s)');
ylabel('Rotor angle (rad)');
% 绘制转速随时间的变化曲线
subplot(2, 1, 2);
plot(t, y(:, 2));
xlabel('Time (s)');
ylabel('Rotor speed (pu)');
```
完整的程序如下所示:
```matlab
% 定义同步发电机参数
Pn = 100; % 额定功率,MW
Vn = 13.8; % 额定电压,kV
R = 0.01; % 发电机内部电阻,pu
% 定义状态空间模型
H = 3.5;
D = 0.01;
E = 1.0;
Td = 0.1;
Km = 0.1;
A = [0 1 0; -1/(2*H) -D/(2*H) E/(2*H); 0 0 -1/Td];
B = [0; 0; Km/Td];
C = [1 0 0; 0 0 1];
D = [0; 0];
% 转换为微分方程组
sys = ss(A, B, C, D);
% 定义输入信号
t = 0:0.01:20; % 时间范围,s
u = ones(size(t)) * Vn; % 额定电压,kV
u(t>=5) = 0.9 * Vn; % 5 s 后电压突然降到 0.9 倍的额定电压
% 模拟系统响应
x0 = [1; 0; 0]; % 初始状态
y = lsim(sys, u, t, x0);
% 绘制振荡角度随时间的变化曲线
figure;
subplot(2, 1, 1);
plot(t, y(:, 1));
xlabel('Time (s)');
ylabel('Rotor angle (rad)');
% 绘制转速随时间的变化曲线
subplot(2, 1, 2);
plot(t, y(:, 2));
xlabel('Time (s)');
ylabel('Rotor speed (pu)');
```
需要注意的是,这只是一个简单的程序,实际的发电机模型可能更加复杂。