Calcolo Tempo di Salita [Sistemi Dinamici]

NIcholasGiovs
Salve, nel seguente esercizio, dopo aver calcolato tutti i parametri della risposta indiciale, mi sono bloccato nel calcolo del tempo di salita poiché il tempo di salita che so fare io è quello al 90% (cioè quello che mi dà Matlab di default premendo "Charateristics->Rise Time"), ma il professore lo dà come errore poiché lui vuole il tempo di salita costituito dell'intervallo di tempo definito dalla tangente alla funzione step fino alla raggiungimento di yreg.

$ (d^3 y(t))/(d t^3) + 108*(d^2 y(t))/(d t^2) +900*(d y(t))/(dt) +10000 y(t) = 1000000 u(t) $

Sfortunatamente non ho potuto seguire le lezioni e sulle trasparenze non è presente una spiegazione a riguardo, né come calcolarlo senza fare la tangente su Matlab né come calcolarlo facendo la tangente su Matlab.

Grazie mille in anticipo!

Risposte
ingres
Se parliamo della tangente alla risposta, bisogna stare attenti perchè in questo caso la tangente iniziale della risposta è nulla. Bisogna quindi approssimare vedendo la risposta nella sua completezza.
Se fai riferimento alla risposta che ho dato al tuo precedente post
https://www.matematicamente.it/forum/vi ... 8&t=231711

si vede che prendendo il grafico normalizzato (quello della G(s) approssimata e normalizzata) e tracciando una sorta di tangente nel primo tratto della salita fino al punto y=1, si ricava approssimativamente

$omega_n*bar t = 2$

da cui essendo $omega_n=10$

$bar t = 0.2$

Quindi, se ho interpretato correttamente la richiesta, il tempo di salita è circa 0.2 s.

Wuming9472
Slave Ingres, grazie per l'aiuto offerto per questo esercizio. Anch'io come Nicholas mi trovo a risolvere la stessa problematica. Volevo chiedere come fosse stato ricavato il 2 nell'edizione omega*t=2. Perdona la sintassi ma ancora non sono avvezzo al codice matematico.

ingres
Ciao Wuming9472, benvenuto nel Forum

Graficamente si ha, prendendo la curva a $zeta=0.4$,



il valore di $omega_n t=2$ e quindi tenendo conto che $omega_n=10$ si ha $text(tempo di salita) =0.2 s$.
Comunque se usi Matlab e tracci una retta come quella sopra otterrai direttamente un valore simile.

Wuming9472
Ingres devi perdonarmi ma purtroppo sono ancora un novizio di MATLAB e non conosco bene tutti i comandi.
Il codice che utilizzo ottenere il grafico della risposta indiciale è step(p), dove p è la funzione di trasferimento che mi sono calcolato in precedenza.
Con tale metodo riesco però a ricavarmi un solo grafico e non molteplici come invece nel tuo caso; inoltre sull'asse x ho solo t e non wn*t e sull'asse y ho "Amplitude", non y(t). Porta pazienza ma MATLAB l'ho installato per la prima volta 2 giorni fa.

ingres
@Wuming9472
Va benissimo un solo grafico che è quello della risposta effettiva del sistema in funzione del tempo t (vedi anche il post https://www.matematicamente.it/forum/vi ... 8&t=231711 dove Renzo ha messo proprio quello che esce da Matlab) e che ha una forma del tipo:

e in cui basta poi tracciare la tangente approssimata per riscontrare che il tempo di salita sia circa 0.2 s.

Quello da me riportato è il grafico normalizzato della risposta di un sistema del secondo ordine al variare del coefficiente di smorzamento e che si trova spesso nei libri di testo o nelle slide del corso (vedi ad es. http://faculty.mercer.edu/jenkins_he/do ... nseMSD.pdf) e che permette di studiare la risposta senza necessariamente simulare la stessa.

RenzoD
"NIcholasGiovs":
... Sfortunatamente non ho potuto seguire le lezioni e sulle trasparenze non è presente una spiegazione a riguardo, né come calcolarlo senza fare la tangente su Matlab...

Direi che un codice di base potrebbe essere il seguente

close all
clc
g1=tf(1e6,[1,108,900,1e4]);
[y,time] = step(g1);
k = y(end);
der = diff(y)./diff(time);
flesso = find(diff(der)./diff(time(1:end-1))<0,1);
y0 = der(flesso)*time(flesso)-y(flesso);
tang = der(flesso)*time - y0;
ni = find(tang>=0*k,1);
tinf = time(ni)
ns = find(tang>=1*k,1);
tsup = time(ns)

step(g1), hold on
plot(time,tang)
tsal=tsup-tinf


in sostanza il punto di flesso si va a trovare cercando il cambiamento di segno della derivata seconda e da questo valore, si può poi ottenere il coefficiente angolare della tangente e l'intercetta con l'asse delle ordinate y0, al fine di ottenere la retta tangente e le sue due intersezioni con l'asse dei tempi e della retta del valore finale; la schermata ottenuta (su Matlab online) sarà la seguente


ingres
ciao Renzo

Ottimo :smt023

RenzoD
Giusto per migliorare un po' la determinazione del tempo di salita

% Tempo salita  (tsal)
clear
close all
clc
sys=tf(1e6,[1,108,900,1e4]);
t=0:0.0001:0.7;
[y,t]=step(sys,t);
der = diff(y)./diff(t);
flesso = find(diff(der)./diff(t(1:end-1))<0,1);
y0 = der(flesso)*t(flesso)-y(flesso);
tang = der(flesso)*t - y0;
ni = find(tang>=0,1);
tinf = t(ni);
ns = find(tang>=100,1);
tsup = t(ns);
dT = (t>0 & t <=0.3) ;
plot(t,y), hold on
grid 
yline(0),yline(100),
plot(t(dT),tang(dT))
plot(tinf,tang(ni),'b-s')
plot(tsup,tang(ns),'b-s')
tsal=tsup-tinf;





Rispondi
Per rispondere a questa discussione devi prima effettuare il login.