Identificarea și modelarea [623404]

Identificarea și modelarea
sistemelor
PROIECT
Mihaila Radu -Mihai | Grupa 6301 | IEEIA

PAGE 1 Introducere
In cadrul acestui proiect au fost furnizate un set de date pe care trebuie facuta o
indentificare vizand obtinerea unui model parametric.
Setul de date contine un model gra fic neparametric al unui s istem initial necunoscut .
Pentr u identificarea acestuia vom proceda la aproximarea sistemului printr -o functie de
transf er.
Identificarea sistemului

Clasificare

In functie de tipul semnalului de intrare:
1. Indicial

2. Impuls

PAGE 2 In functie de tipul sistemului :
a) Sisteme de ordin ul 1
Indicial Impuls

b) Sisteme de ordin ul 2
Indicial Impuls

Identificarea tipului de sistem se face pe baza graficului generat din fisierul ” mahaila. mat” ,
care contine trei s eturi de d ate:
• Time – vector de timp
• Data:1 – semnalul de intrare
• Data:2 – semnalul de iesire al sistemului
Graficul generat pe baza acestor date este de forma:

Din gra fic putem observa ca avem un sistem de ordin ul 2 cu raspuns la impuls.

PAGE 3 Estimarea functie i de transfer
Date teoretice a unui sistem de ordin 2
Functia de transfer a unui sistem de ordin 2 are forma:

Factorul de amorti zare determina forma raspunsului, cateva exemple de
raspunsuri cu diferiti factori de amortizare , sunt illustrate mai jos.

PAGE 4

Pentru calcularea factorului de amortizare , trebuie mai intai sa calculam
suprareglajul .

Suprareglajul M este dat de raportul dintre ariile A – si A+. Aceste arii se pot calcu la cu
usurinta daca se cunos c valorile de timp unde y( t) intersecteaza valoarea de regim
stationar yss=y0.
Stiind valoarea suprareglajului, putem afla factorul de amortizare :

Factorul de proportionalitate K se afla determinand iesirea si intrarea stationara
yss, uss ca in imaginea de mai s us.

Pulsatia naturala se calcul eaza cu ajutorul formulei de mai jos .

PAGE 5 Implemen tarea estimarii functiei de transf er in MATLAB

Incarcarea in memor ie a dat elor initiale

Extragere semanl din datele initiale
Pentru a interpreta mai usor datele semnalului , vom extrage din datele initiale,
sirul de date a ferent raspunsului la impulsul nr. 2. Pentru ext ragerea se mnalului, vom crea
un vector de date in care vom gasi timp ul exact al fiecarui impuls. Vom declar a mai apoi
variab ilele corespunzatoare inceputului respectiv sfarsitului primului impuls, si inceputul
urmato arelor doua impulsuri.

Semnalul extras va fi cuprins intre sImp2 -sImp1 si sIm p3-sImp1, acesta continand
semnalul de iesire cor espondent raspunsului sistemului la al doi lea impuls, respectiv
semnalul de intrare ce contine aces t impuls.

PAGE 6

Calcularea perioadei T 0 si a regimului stationar
Pentru calcularea perioadei , trebuie sa aflam momentul de timp al primul ui minim
si maxim si cel de-al doilea maxim din semnalul de ras puns.
Valoarea de regim stationar se calculeaza facand me dia valorii semnalului
incepand cu momentul de timp calculat ca fiind su ma lui T0 cu momentul celei de- a treia
oscilatii, pana la sfarsitul semnaluiui extras.

PAGE 7
Valorile obtinute sunt:

Calcularea perioadei oscilatiilor si a ariilor
Vom folosi perioada oscilatiilor pentru calcularea ariilor acestora. Perioada va fi
identificata pe baza trecerii semnalului prin valoarea de regim stationar .

PAGE 8
Estimarea functiei de transfer
Folosind formulele prezentate la pagina 3 si caracteristicile raspunsului calculate
mai sus , putem estima functia de transfer a sistemului .

PAGE 9 Unde,
• v_rs – valoarea de regim stationar
• min(sp ) – valoarea de minim a semnalului de inta re
• A1, A2 – aria primelor doua oscilatii
• T0 – perioada
• ss – punctul de start al semnalului calculat (folosit la suprapunerea
semnalelor )
• HS – functia de transfer
• gain – factor de amplificare in amplitudine pentru semnalul rezultat din
raspunsul la impuls a functie i de transfer HS
• sc – semnalul rezultat din raspunsul la impuls a functiei d e transfer HS

Initial semnalul calculat va avea valoarea de regim stationar 0 , si amplitudinea
acestuia mult mai mica.

PAGE 10 Pentru a aduce semnalul rezultat la aceeasi forma cu cea a semnalului extras din
datele originale, aces ta se amplifica cu raportul dintre punctele maxime al semnalulu i
extras ( sr) si semnalul calculat ( sc), valoar ile punctelor maxime trebuie sa fie raportate la
valoarea de regim stationar .

Functia de transfer rezultata este:
k = 12.5043
M = 0.2471 FAm = 0.4065 omegan = 0.4965
ss = 2.2167
gain = 9.4506 HS =
3.083
exp( -2.22*s) * –––––––– –––
s^2 + 0.4037 s + 0.2466

Continuous- time transfer function.

PAGE 11 Cod sursa MATLAB
close all; clear;

%Incarcare date initiale
load('mihaila.mat'); % Incarcare date din fisierul mihaila.mat
t=mihaila.Time'; % Extragere timp
data=mihaila.Data';% Extragere date
%Vector impulsuri – semnal proba
b_pulse=data(1,:)>data(1,1);
d_pulse=find(diff(b_pulse)~=0);
v_pulse=t(d_pulse); %sir de date cu inceputul si sfarsitul pulsurilor
sImp1=v_pulse(1); %start impuls 1
eImp1=v_pulse(2); %sfarsit impuls 1
sImp2=v_pulse(3); %start impuls 2
sImp3=v_pulse(5); %start impuls 3
tImp=eImp1- sImp1; %timpul impulsului
%Extragere semnal
d_ex1=find(t>=sImp2- sImp1);
d_ex2=find(t<=sImp3- sImp1);
d_ex=intersect(d_ex1, d_ex2);
t1=t(d_ex); % extragere vector timp
sp=data(1,d_ex);% semnalul de proba (semnal de intrare)
sr=data(2,d_ex);% semnalul de raspuns al sistemului

%Deducere valori maxime si minime
v_t1=max(sr); %maximul primei oscilatii
t_t1=t1(sr==v_t1); %momentul de timp in care se ating valorile
v_t2=min(sr); %minimul celei de- a doua oscilatii
t_t2=t1(sr==v_t2);
v_t3=max(sr(t1>t_t2)); %maximul celei de- a treia oscilatii
t_t3=t1(sr==v_t3);
T0=t_t3- t_t1; %perioada

%Deducerea valorii de regim stationar t_rs=t_t3+T0;
d_rs=find(t1>=t_rs);
v_rs=mean(sr(d_rs));% valoare regim stationar

%Calculul perioadei oscilatiilor
d_per=find(diff(sr>=max(sr(d_rs)))~=0); d_per=d_per(1:3);%primele 3 valori ale trecerii
t_per=t1(d_per); %prin valoarea de regim stationar

%Calculul ariilor

A1=0;% aria primei oscilatii for i=d_per(1)+1:d_per(2)
tmp=(mean([sr(i),sr(i- 1)])-v_rs)*(t1(i)- t1(i-1));
A1=A1+tmp;
end
A2 = 0;% aria celei de- a doua oscilatii
A2tmp=0;

PAGE 12 for i=d_per(2)+1:d_per(3)
tmp=mean([sr(i),sr(i- 1)])*(t1(i)- t1(i-1));
A2tmp=A2tmp+tmp;
end
Ad=(t1(d_per(3))- t1(d_per(2)))*v_rs;
A2=Ad-A2tmp;

%%CALCULE
%Amplificare k=v_rs/min(sp);
%Suprareglare M
M=A2/A1;
%Factor de amortizare
FAm=log(1/M)/sqrt((pi^2)+log(M)^2);
%Omegan
omegan=(2*pi)/(T0*sqrt(1- (FAm^2)));

%%Functia de transfer
ss=t_per(1)- t1(1)+tImp/3;%punctul de start al semnalului
num=[k*omegan^2];
denum=[1 2*FAm*omegan omegan^2];
HS=tf(num,denum,'InputDelay', ss);
[sc,t2]=impulse(HS, 0:0.1:t1(1)); %semnal calculat
gain=(max(sr)- v_rs)/max(sc);
sc=(sc*gain)+v_rs; %semnal calculat final

%Afisare date fprintf('k = %.4f \ nM = %.4f \ nFAm = %.4f \ nomegan = %.4f \ n', k, M,
FAm, omegan)
fprintf('ss = %.4f \ ngain = %.4f \ n%s \n', ss, gain, evalc('HS'))

%%PLOTARE
fig1=figure('color', 'w');
fig1.Position=[0,40,640,640]; fig1.Name='Semnale Originale';
graf1=axes(); graf1.Box='on'; graf1.XGrid='on'; graf1.YGrid='on';
fig1_sp=line(t,data(1,:),'parent',graf1,'color', 'blue');
fig1_sr=line(t,data(2,:),'parent',graf1,'color', 'magenta');
fig2=figure('color', 'w');
fig2.Position=[640,40,640,640];
fig2.Name=['Semnale ',num2str(sImp3- sImp1),' secunde'];
graf2=axes(); graf2.Box='on'; graf2.XGrid='on'; graf2.YGrid='on';
fig2_sp=line(t1,sp,'parent',graf2,'color', 'blue');
fig2_sr=line(t1,sr,'parent',graf2,'color', 'magenta');
M1=viscircles(graf2,[t_t1,v_t1],0.1);
M2=viscircles(graf2,[t_t2,v_t2],0.1);
M3=viscircles(graf2,[t_t3,v_t3],0.1);
viscircles(graf2,[t_per',(ones(size(t_per,2),1)*v_rs)],(ones(size(t_per
,2),1)*0.
1),'EdgeColor', 'k');
lineValRS=line(t1,ones(size(t1))*v_rs,'parent',graf2,'color', 'k','LineS
tyle','–');

PAGE 13 fig3=figure('color', 'w');
fig3.Position=[1280,40,640,640];
fig3.Name=' Comparare raspunsuri';
graf3=axes(); graf3.Box='on'; graf3.XGrid='on'; graf3.YGrid='on';
fig3_sp=line(t1,sp,'parent',graf3,'color', 'blue');
fig3_sf=line(t2+t1(1),sc,'parent',graf3,'color', 'green', 'LineStyle', ':'
,'LineWidth',
2);
fig3_sr=line(t1,sr,'parent',graf3,'color', 'magenta');

Graficele rezultate:

PAGE 14

Va multumesc!

Similar Posts