¿Cómo puedo modelar este sistema de potencia lineal en MATLAB?

2

Para mi sistema de energía, supongamos que tiene el siguiente modelo dinámico: \ $ \ x '= f (x, u) \ $.

Este modelo dinámico consta de cuatro ecuaciones diferenciales de primer orden (ver más abajo).

Luego, linealicé mi sistema usando el método de Newton-Raphson. Mi nuevo sistema lineal será:

\ $ \ \ Delta x '= A \ Delta x + B u + \ $ disturbance

Donde:

  • \ $ \ x \ $ es el vector de estado que contiene 4 ecuaciones diferenciales de primer orden: (el ángulo de potencia, la velocidad angular del rotor ω, la tensión generada en el eje de cuadratura del generador eq ', y la tensión de campo del generador en el eje directo \ $ \ E_d \ $). a.k.a .: \ $ \ \ Delta x = [\ Delta \ delta, \ Delta \ omega. \ Delta e_q ', \ Delta E_d] ^ T \ $

  • \ $ \ u \ $ es la parte de control. Hagamos que sea cero por ahora

  • Supongamos que la perturbación en la entrada de potencia del generador es solo del 30% (0,3 pu) durante solo 1 segundo.

  • "A" es una matriz de 4 x 4. Digamos:

$$ A = \ begin {bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 1 & 2 & 3 \\ 4 & 5 & 6 & 7 \ end {bmatrix} $$

La pregunta es:

¿Cómo puedo modelar el sistema que se muestra arriba usando MATLAB? Quiero trazar las cuatro variables de estado, pero no sé por dónde empezar

¿Hay algún código específico que me ayude a simular este sistema?

    
pregunta James Mitch

1 respuesta

2

Para resolver este problema, debe consultar los solucionadores ODE en MATLAB.

Tenga en cuenta que su función no describe cuál es la respuesta del sistema a una variación en la potencia de entrada Pm.

A continuación he escrito una implementación, basada en el ejemplo en enlace . En mi ejemplo, he agregado un término Pm a las ecuaciones diferenciales, para que pueda ver cómo una perturbación podría afectar la dinámica.

Lamentablemente, no tengo MATLAB instalado, por lo que no puedo comprobar si hay algún error en esto, pero la idea debería ser clara.

function main 
% a simple example to solve ODE's
% Uses ODE45 to solve 
%    dx_dt(1) = 1*x(1)+2*x(2)+3*x(3)+4*x(4)
%    dx_dt(2) = 5*x(1)+6*x(2)+7*x(3)+8*x(4)+Pm
%    dx_dt(3) = 9*x(1)+1*x(2)+2*x(3)+3*x(4)
%    dx_dt(4) = 4*x(1)+5*x(2)+6*x(3)+7*x(4)
%set an error
options=odeset('RelTol',1e-6);

%initial conditions
X0 = [0;0;0;0]; 
Pm0=1;

%before disturbance
tspan1 = [-1,0]; 
[t1,X1] = ode45('system',tspan1,X0,options,Pm0);

%during disturbance
tspan2 = [0,1];
[t2,X2] = ode45('system',tspan2,X1(end),options,1.3*Pm0);

%after disturbance
tspan3 = [1,3];
[t3,X3] = ode45('system',tspan3,X2(end),options,Pm0);

time=[t1,t2,t3];
X=[X1,X2,X3];

%plot the results
figure 
hold on
plot(time,X)
legend('x1','x2','x3','x4');ylabel('x');xlabel('t') 
return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [dx_dt]= system(t,x,Pm) 
%a function which returns a rate of change vector
A = [1,2,3,4;
     5,6,7,8;... 
     9,1,2,3;
     4,5,6,7]
P=[0;Pm;0;0]
dx_dt = A*x+P; 
return
    
respondido por el Katt

Lea otras preguntas en las etiquetas