New script

This commit is contained in:
Brage-Flonaes Johnsen 2026-04-16 13:09:40 +02:00
parent 3a4ff4d359
commit 6192cbdd3b

41
identificationScript.m Executable file → Normal file
View file

@ -55,6 +55,11 @@ data = iddata(Y0,U0,Te,'Frequency',w0); %Ici peut-etre changer avec f
Hn4sid_fd = n4sid(data,ordre);
y2 = lsim(ss(Hn4sid_fd), un, tn);
%% Fonction de transfert
[num, den] = ss2tf(Hn4sid_fd.a, Hn4sid_fd.b, Hn4sid_fd.c, Hn4sid_fd.d)
system_tf = tf(num, den)
%%% Identification via Loewner
wid = 2*pi*f0(f0<BP(end)/2);
wRange = 1:floor(length(wid)/2)*2;
@ -117,6 +122,7 @@ Gb = tf([Kb], [1 0 0])
figure()
bode(Gb)
%margin(Gb)
title('Bode système rail')
Cb = tf([a*T 1], [T, 1])*Kp; %Correcteur d'avance de phase
@ -132,9 +138,38 @@ Hc = d2c(H);
Lbo = Cb*Hc*Gb;
Lbf = Lbo / (1+Lbo);
Margin = allmargin(Lbf);
h=bodeplot(Lbf);
margin(Lbf);
title({'Marge de phase et gain pour le système complet','Gm= Inf Pm =-40.6 deg (at 5.97rad/s)'});
SysO=bodeplot(Lbo);
margin(Lbo);
title({'Marge de phase et gain pour le système complet BO','Gm= Inf Pm =-40.6 deg (at 5.97rad/s)'});
%% Reponse du système entier
var3.time = [0:Te:1000*Te]';
var3.signals.values = zeros(1, 1001)'
var3.signals.dimensions= 1 ;
var3.signals.values(1:150) = 0;
var3.signals.values(151:350) = -20;
var3.signals.values(351:550) = 10;
var3.signals.values(551:700) = -30;
var3.signals.values(701:1000) = 0;
Tf = var3.time(end);
load simout4_vals.mat;
load simout3_vals.mat;
pos_sortie2 = simout4.signals.values;
pos_entre = var3.signals.values(1:928,:);
commande4 = simout3.signals.values + 5; % Ajout de offset, car à plat la tension vaut +5V
Tf3 = var3.time(1:length(simout3.signals.values),:);
figure()
hold on;
Tf2 = var3.time(1:length(simout4.signals.values),:);
plot(Tf2,pos_entre);
plot(Tf2,pos_sortie2);
plot(Tf3,commande4);
legend('Position d entrée','Position de sortie','Commande en tension')
title("Reponse du système entièr");