lunedì 18 novembre 2013

MatLab - Esercitazione #2 - Da POG a Simulink, salvataggio variabili di stato



%%Punto 1
Dato il diagramma POG, viene richiesto di creare lo schema di Simulink corrispondente.
Gli elementi necessari sono: sommatore algebrico, integratore, guadagno (per i quadrati in cui sono riportate le formule e per b1 e b2). Per quanto riguarda gli ingressi, -Mag e -Mrg sono costanti, mentre gli altri, come si legge dal testo, sono nulli o pari a una particolare funzione a scalino, creata con 2 step e un sommatore (fatto anche in altri esercizi).


%%Punto 2
Ricopio i dati dal testo
Ma = 290;
Mr = 60;
K = 20000;
Kp = 1900000;
b1 = 1000;
b2 = 10000;

F = 0;
ts1 = 5;
ts2 = 5.2;
As1 = 1;
As2 = 1;

g = 9.81; %il segno è già stato incluso prima

Condizioni iniziali definite, inserite negli integratori (!).
x10 = 0;
x20 = -Ma*g/K;
x30 = 0;
x40 = -(Ma+Mr)*g/Kp;

Simulazione dello schema di Simulink
sim('Untitled', 10)

Creazione di una nuova figura in cui viene riportato il plot
figure
plot(time, dXs)
hold on
plot(time, dXMa, 'r--')
grid
set(h, 'name', 'Oscillazione del veicolo')
xlabel('time [s]')
ylabel('Velocità  oscillazione veicolo [m/s]')
legend('dX_s', 'dX_Ma')

%% Punto 3
Ora si parte con condizioni iniziali nulle e diversi valori delle variabili (K).
Ma = 290;
Mr = 60;
K = 20000;
Kp = 1900000;
b1 = 1000;
b2 = 10000;

F = 0;
ts1 = 5;
ts2 = 5.2;
As1 = 1;
As2 = 1;

g = 9.81;

Condizioni iniziali nulle
x10 = 0;
x20 = 0;
x30 = 0;
x40 = 0;

Simulazione
sim('Untitled', 10)

h = figure;
subplot(2, 2, 1) %righe, colonne, in quale vado a fare
plot(time, Pa)
grid on
xlabel('time [s]')
ylabel ('...')

subplot(2, 2, 2) %righe, colonne, in quale vado a fare
plot(time, Xr)
grid on
xlabel('time [s]')
ylabel ('...')

subplot(2, 2, 3) %righe, colonne, in quale vado a fare
plot(time, Pr)
grid on
xlabel('time [s]')
ylabel ('...')

subplot(2, 2, 4) %righe, colonne, in quale vado a fare
plot(time, Xrp)
grid on
xlabel('time [s]')
ylabel ('...')

%% Punto 4
figure(3)
hold on
MaxdXMa = [];

Salvare in un vettore il massimo valore assoluto della variabile ˙XMa
for K=15000:5000:40000
    sim('Untitled', 10)
    plot(time, dXMa)
    MaxdXMa = [MaxdXMa max(abs(dXMa)) ];
end
grid

h = figure;
plot(K, MaxdXMa)

Nessun commento:

Posta un commento