Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
““““Script ”””” e ““““Function ””””
A=3;B=2;C=1;D=-0.2;x=[0:0.1:10];y=A+B*x+C*x.^2+D*x.^3;figure,plot(x,y)y=fun01(x,A,B,C,D);figure,plot(x,y)
function y=fun01(x,A,B,C,D);
y=A+B*x+C*x.^2+D*x.^3;return
“Script” (MAIN file)
“F unction” file
32 DxCxBxAy +++=
Zero di funzione con MATLAB: fzero
OPTIONS = optimset('Display','iter','tolX',1.e-9);
[xz,yz]=fzero('fun02',X0,OPTIONS,A,B,C,D);
function y=fun02(x,A,B,C,D);y=A+B*x+C*x.^2+D*x.^3;
return
32 DxCxBxAy +++=
15.0
1
2
3
−===
−=
D
C
B
A
4 – Esercizi su ruote dentate
Esercizio B: traccia
Integrazione Equazioni Differenziali – ““““ode…””””
Il generico solutore ODExx di MATLAB risolve problemi nella forma:
Primo ordine :
),( ytFy =ɺ
Secondo ordine :possono essere ricondotte ad un sistema di due equazioni del primo ordine:
2
1
yx
yx
==ɺ xy
yxy
ɺɺɺ
ɺɺ
===
2
21
mfymkymcy
yy
/)/()/( 122
21
+−−==ɺ
ɺ2yCyBAy ++=ɺ
)(tfkxxcxm =++ ɺɺɺ
m
kn =ω
nm
c
ωζ
2= mfyyy
yy
nn /2 12
22
21
+−−=
=
ωζωɺ
ɺ
Integrazione Equazioni Differenziali – ““““ode…””””
A=5;B=-2;C=-3.5;
t0=0;tF=2;y0=0;OPTIONS=[ ];[t,y]=ode45('fun03',[t0 tF],y0,OPTIONS,A,B,C);
function yp=fun03(t,y,flag,A,B,C);
yp=A+B*y+C*y^2;return
MAIN file
FUNCTIONfile
MATLAB – ODE: Options
OPTIONS=[ ]; OPTIONS = odeset(‘OutputFcn’,’odeplot’);OPTIONS = odeset('OutputFcn','odephas2');OPTIONS = odeset('RelTol',1.e-6); OPTIONS = odeset(‘AbsTol',1.e-9);OPTIONS = odeset(‘Stats',’on’);OPTIONS = odeset('Events','on');
[t,y]=ode45('function_name',t0,y0,OPTIONS,A,B,C,…);
OPTIONS odeset
opzioni di defaultplot durante l’integrazionegrafica piano delle fasiimposta toll. relativaimposta toll. assolutaindica il costo computaz.abilita ricerca eventi
Sistema di Equazioni Differenziali
A1=…; B1=…;A2=…; B2=…;An=…; Bn=…;t0=0; tF=2;y0=[y01; y02; …; y0n];OPTIONS=[ ];[t,y]=ode45('fun04',[t0 tF],y0,OPTIONS,A1,B1,A2,B2,…,An,Bn);
function yp=fun04(t,y,flag,A1,B1,A2,B2, ,…,An,Bn);yp=[A1+B1*y(1); A2+B2*y(2); …; An+Bn*y(n)];
return
MAIN file
FUNCTIONfile
+
++
=
)(
...
)()(
)(
...
)()(
222
111
2
1
tyBA
tyBAtyBA
ty
tyty
nnnnɺ
ɺ
ɺ
Sistema SDOF libero
Sistema sotto-smorzato
02 2 =++ xxx nn ωζω ɺɺɺ
1<ζ 1>ζ Sistema sovra-smorzato
2
1
yx
yx
==ɺ
),( ytFy =ɺ
Sistema SDOF libero MATLAB
% Condizioni inizialix0=-1;v0=0;% Intervallo di
integrazionet0=0;tf=1;
function dydt = eq_lib01 (t,y,flag,omn,zeta);
dydt = [y(2); -2*zeta*omn^2*y(1)];
return
% Parametri del sistemaomn=10*pi; % rad/szeta= 1.1;
% OPTIONS = odeset('OutputFcn','odeplot');% OPTIONS = odeset('OutputFcn','odephas2');OPTIONS = [ ];[t,y]=ode45('eq_lib01 ',[t0 tf],[x0; v0],OPTIONS,omn,zeta);
Sistema SDOF con attrito Coulombiano
Equazione differenziale non lineare
mgkxxm µ−=+ɺɺ
mgkxxm µ=+ɺɺ
0>xɺ
0<xɺ
)( 212
2
21
ysigngyy
yy
n µω −−=
=
ɺ
ɺ
0)(2 =++ gxsignxx n µω ɺɺɺ
Sistema SDOF con attrito Coulombiano MATLAB
% Condizioni inizialix0=1;v0=0;% Intervallo di
integrazionet0=0;tf=8;
function dydt = eq_attrito (t,y,flag,omn,Fatt);
dydt = [y(2); -omn^2*y(1)-Fatt*sign(y(2))];
return)( 21
22
21
ysigngyy
yy
n µω −−=
=
ɺ
ɺ
% Parametri del sistemaomn=3*pi; % rad/s% Parametri dell'attritomu=0.2;g=9.81;Fatt=mu*g;
% OPTIONS = odeset('OutputFcn','odeplot');% OPTIONS = odeset('OutputFcn','odephas2');OPTIONS = [ ];[t,y]=ode45('eq_attrito ',[t0 tf],[x0; v0],OPTIONS,omn,Fatt);
Ricerca di EVENTI
A1=4 B1=-3A2=5 B2=-2A=2 B=-1
Fase di strisciamento
OPTIONS=[ ];[t,y]=ode45('fun04a ',[t0 tF],y0,OPTIONS,A1,B1,A2,B2);
function yp=fun04a (t,y,flag,A1,B1,A2,B2);
yp=[A1+B1*y(1); A2+B2*y(2)];
return
A1=4 B1=-3A2=5 B2=-2
Fase di strisciamento
OPTIONS=odeset('Events','on');
[t,y,te,ye]=ode45('fun04b ',[t0 tF],y0,OPTIONS,A1,B1,A2,B2);
function varargout=fun04b (t,y,flag,A1,B1,A2,B2);switch flagcase ''
varargout1 = f(t,y,A1,B1,A2,B2);case 'events'
[varargout1:3] = events(t,y);otherwise
error(['Error message'])end
function yp = f(t,y,A1,B1,A2,B2);yp=[A1+B1*y(1); A2+B2*y(2)];
function [value,isterminal,direction] = events(t,y)% Locate the time when y passes through the "event"value = y(1)-y(2); % eventisterminal = 0; % don't stop at the eventdirection = 0; % don't care if increasing/decreasing
)()( 21 tyty =Evento:
Raggiungimento del REGIME
OPTIONS=odeset('Events','on');
[t,y,tR,yR]=ode45('fun04c ',[te tF],ye,OPTIONS,A,B,C);
function varargout=fun04c (t,y,flag,A,B,C);switch flagcase ''
varargout1 = f(t,y,A,B);case 'events'
[varargout1:3] = events(t,y,C);otherwise
error(['Error message'])end
function yp = f(t,y,A,B);yp=A+B*y;
function [value,isterminal,direction] = events(t,y,C)% Locate the time when y passes through the "event"value = y(1)-C; % eventisterminal = 0; % don't stop at the eventdirection = 0; % don't care if increasing/decreasing
Evento:
( )y t C=
Ricerca di EVENTI: risultati
te = 0.54ye = 1.66
tR = 1.77yR = 1.9
C=(-A/B)*0.95
( )y t C=)()( 21 tyty =
Eventi:
A1=4 B1=-3A2=5 B2=-2A=2 B=-1
Sistema SDOF forzato
tm
Fxxx nn Ω=++ cos2 02ωζω ɺɺɺ
0X
2
Ω
nω
1.0=ζ
)(tx
πω 10=n Hzfn 5=
Sistema SDOF forzatoin RISONANZA
0X
1.0=ζ
)(tx
πω 10=n Hzfn 5=
0=ζ
)(tx
tm
Fxxx nn Ω=++ cos2 02ωζω ɺɺɺ
2
Ω
nω
Sistema SDOF forzato: BATTIMENTO
πω 2=n Hzfn 1=
0=ζ )(tx
tm
Fxx n Ω=+ cos02ωɺɺ
nω10
9=Ω
επωω 210
2
10
1 ===Ω− nn
202 =επ
t
MATLAB: Autovalori e Autovettori
>> help eig
EIG Eigenvalues and eigenvectors.
E = EIG(A) is a vector containing the eigenvalues of a square matrix A.
[V,D] = EIG(A) produces a diagonal matrix D of eigenvalues and a full matrix V whose columns are the corresponding eigenvectors so that A*V = V*D.
[V,D] = EIG(K,M) produces a diagonal matrix D of generalized eigenvalues and a full matrix V whose columns are the corresponding eigenvectors so that K*V = M*V*D.
Autovalori e Autovettori
[V,D] = EIG(A) A*V = V*D
[ V,D] = EIG(K,M) K*V = M*V*D M -1 *K*V = V*D
tieXtx ω=)(0] [][ =+ xKxM ɺɺ
( ) 0][][][ 12 =+− − XKMIω
0][][2 =+− XKXMω
( ) 0][][ =+− XAIλ λ autovalori di [A]
X autovettori di [A]
][][][ 1 KMA −=
Autovalori e Autovettori
[V,D] = eig(inv(M)*K); autovettori con norma = 1
[V,D] = eig(M\K); autovettori con norma = 1
[V,D] = eig(K,M); autovettori normalizzati rispetto alla matrice [M]
[V] T[M][V] = [I]
Come ordinarli e calcolare le frequenze [Hz]
[om2,ind] = sort(diag(D));
freq = sqrt(om2)/(2*pi);
V = V(:,ind);
][][][ 1 KMA −=
Normalizzazione Autovettori
Normalizzazione rispetto alla [M]
p = 1./sqrt(diag(V.'*M*V))
P = (p*ones(1,length(V))). ’’’’
V = V.*P
Prim a componente = 1
p = V(1,:). ’’’’
P = (p*ones(1,length(V))). ’’’’
V = V./P
iT
i
iXMX
p][
1=
[ ] 1Ti i i i iM p X M p X= =
Massima componente = 1
[p,ind] = max(abs(V))
ind = sub2ind(size(V),ind,[1:length(V)])
p = (sign(V(ind)).*p). ’’’’
P = (p*ones(1,length(V))). ’’’’
V = V./P
12 – Vibrazioni torsionali di un motore marino
13 – Modifiche strutturali
m
k
m
m
k
k
1
2
3
3
2
1
Autovalori e Autovettori: esercizio 1
21002
2
π××==
k
mHz
m
k
Hzm
k
531033
510
2
1
×=×==
===
πω
πω
−+
=
++
=
1
1
1
1
2
1
X
X
[V,D] = eig(M\K);
autovettori con norma = 1
[V,D] = eig(K,M);
autovettori normalizzati rispetto a [M]
[V] T[M][V] = [I]
Autovalori e Autovettori: esercizio 221002
2
π××==
k
m
6.2586
1.384
0
23
22
21
=
=
=
ωωω
A*m
−
−=
+−
=
=
617.0
1
004.0
1
611.0
016.0
1
1
1
3
2
1
X
X
X9.2583
0.3772
2
21
=
=
ωω
A*m
A=100
2.2584
7.377
0
23
22
21
=
=
=
ωωω
−
−=
+−
=
=
618.0
1
000.0
1
617.0
002.0
1
1
1
3
2
1
X
X
X
−=
+
=
618.0
1
1
618.0
2
1
X
X
A=1000
2 dofs
SIMULINK – Esempio 1
)()( tutx =ɺ
SIMULINK – Esempio 2
)()(2)( tutxtx +−=ɺ
SIMULINK – Es. 3
m
c
kF
x(t)
)()()()( tFtxktxctxm =++ ɺɺɺ
)()()()( tFtxktxctxm +−−= ɺɺɺ
SIMULINK – Es. 4
K
CM
g
X0 X1
F K X X g X g
F K X X g X g
F X g
EL
EL
EL
= − − − − >= − − + − < −
= − ≤
( / ) /
( / ) /
/
1 0 1 0
1 0 1 0
1 0
2 2
2 2
0 2
X
X
X
)()( 01101111 XXCXXKXM ɺɺɺɺ −−−−=
SIMULINK – Es. 5
dt = 1/100;time = [0:dt:1];x = sin(2*pi*time);A = [time; x].';
SIMULINK – Esempio 6
SIMULINK – Esempio 7
SIMULINK – Es. 8
SIMULINK – Es. 9
M X K X X C X X K X X C X X
M X K X X C X X
1 1 1 1 0 1 1 0 2 2 1 2 2 1
2 2 2 2 1 2 2 1
ɺɺ ( ) ( ɺ ɺ ) ( ) ( ɺ ɺ )
ɺɺ ( ) ( ɺ ɺ )
= − − − − + − + −
= − − − −
PARAMETRI
m1 = 1.5 kg k1 = 1.5 106 N/mm2 = 1 kg k2 = 1.8 106 N/mq = c/k = 10-4 s
f1 = 114 Hz f2 = 297 Hz
Legge di moto cicloidale(file «LeggeEsempio09.mat»)
Corsa 120 mmVelocità = 240 rpm
Due condizioni:g1 = g2 = 0g1 = g2 = 0.02 mm
0 0.05 0.1 0.15 0.2 0.250
20
40
60
80
100
120
Legge di Moto X0 [mm]
Tempo [s]
Legge di moto
0 0.05 0.1 0.15 0.2 0.250
20
40
60
80
100
120
Legge di Moto X0 [mm]
Tempo [s]0 0.05 0.1 0.15 0.2 0.25
-150
-100
-50
0
50
100
150Accelerazione Teorica [m/s^2]
Tempo [s]
SPOSTAMENTO ACCELERAZIONE
Legge di moto cicloidalefile «LeggeEsempio09.mat»
Equazioni del moto
M X K X X C X X K X X C X X
M X K X X C X X
1 1 1 1 0 1 1 0 2 2 1 2 2 1
2 2 2 2 1 2 2 1
ɺɺ ( ) ( ɺ ɺ ) ( ) ( ɺ ɺ )
ɺɺ ( ) ( ɺ ɺ )
= − − − − + − + −
= − − − −
Modello SIMULINK
Blocco LEGGE di MOTO
Blocco «Fev»
Blocco «Massa»
0 0.05 0.1 0.15 0.2 0.25-150
-100
-50
0
50
100
150Accelerazione Massa M2 [m/s^2]
Tempo [s]0 0.05 0.1 0.15 0.2 0.25
-150
-100
-50
0
50
100
150Accelerazione Massa M2 [m/s^2]
Tempo [s]
Simulazione: Accelerazione massa m 2
g1 = g2 = 0 g1 = g2 = 0.02 mm
Esempio 11/1 Modello di un azionamento con
controllo di posizione e velocità
Esempio di modello di una trasmissione meccanica e del relativo azionamento.
L’azionamento è costituito da un motore elettrico a corrente continua con controllo in loop di corrente.
Il motore applica una coppia motrice ad un mandrino che, a sua volta, trasmette il moto ad una pinza terminale attraverso un albero intermedio.
Esempio 11/2 Il moto viene controllato in posizione
ed in velocità confrontando le letture di posizione e velocità fornite da due encoder montati in prossimità del mandrino.
Esempio 11/3
Legge di moto Regolatore di
posizione Regolatore di
velocità.
Esempio 11/4 Modello motore elettrico a corrente continua
Forza contro-elettromotrice
Equazione circuito di armatura (tensione di armatura)
Coppia motrice
Kc costante di coppia, Kb costante di velocità
Esempio 11/5 Modello meccanico
– Il modello meccanico ha tre gradi di libertà– La prima coordinata è associata all’inerzia del motore elettrico– La seconda è associata al mandrino (e quindi agli encoder)– La terza è associata alla pinza
( ) ( )23223233 ϑϑϑϑϑ ɺɺɺɺ −−−−= ckJ
( ) ( )mmmmm ckCJ ϑϑϑϑϑ ɺɺɺɺ −+−+= 2121
( ) ( ) ( ) ( )232232212122 ϑϑϑϑϑϑϑϑϑ ɺɺɺɺɺɺ −+−+−−−−= ckckJ mm
( ) ( )mmmmm ckCJ ϑϑϑϑϑ ɺɺɺɺ −+−+= 2121
( ) ( ) ( ) ( )232232212122 ϑϑϑϑϑϑϑϑϑ ɺɺɺɺɺɺ −+−+−−−−= ckckJ mm
( ) ( )23223233 ϑϑϑϑϑ ɺɺɺɺ −−−−= ckJ
Dati del motore elettricoL = 0.003 [Vs/A] R = 0.4 [Ohm]Kc = 5 [Nm/A] Kb = 5 [Vs/rad] Jm = 0.6 [kgm2 ]
Parametri dei controllori ad azione Proporzionale – Integrale Anello di corrente Anello di velocità Anello di posizioneKpc = 8 [V/A] Kpv = 95 [Nm/(rad/s)] Kpp = 72 [1/s]Tic = 0.002 [s] Tiv = 0.1 [s] Tip = 1000 [s]
(di fatto è ad azione Proporzionale)Parametri del modello meccanicoJ2 = 0.085 kgm2 J3 = 0.085 kgm2
k1 = 1.15 106 Nm/rad k2 = 1.15 105 Nm/rad Velocita‘ di rotazione = 20 rpmq = 10–5 sc1 = q k1 c2 = q k2
+=
sTKsG
ip
11)(
Esempio 11/6 Modello dell’intero azionamento
Dati numerici
Dati del motore elettricoL = 0.003 [Vs/A] R = 0.4 [Ohm] Jm = 0.6 [kgm2 ]Kc = 5 [Nm/A] Kb = 5 [Vs/rad]
Parametri dei controllori ad azione Proporzionale – Integrale Anello di corrente Anello di velocità Anello di posizioneKpc = 8 [V/A] Kpv = 95 [Nm/(rad/s)] Kpp = 72 [1/s]Tic = 0.002 [s] Tiv = 0.1 [s] Tip = 1000 [s]
(di fatto è ad azione Proporzionale)Parametri del modello meccanicoJ2 = 0.085 kgm2 J3 = 0.085 kgm2
k1 = 1.15 106 Nm/rad k2 = 1.15 105 Nm/radq = 10–5 sc1 = q k1 c2 = q k2
Velocità di rotazione = 20 rpm
Esempio 11/7
+=
sTKsG
ip
11)(
Esempio 11/8
0 100 200 3000
10
20
30
40
50Legge teorica - spostamento [deg]
[deg]
0 100 200 300-50
0
50Legge teorica - velocita' [deg/s]
[deg]
0 100 200 300-0.5
0
0.5Legge teorica - velocita' [rad/rad]
[deg]
Ω=== )(')()(
)( ϑϑϑϑ
sdt
d
d
sd
dt
tsdtsɺ
)(tsɺ
)(' ϑs
Velocità di rotazione = 20 rpm
Es. 11/9
0 100 200 3000
10
20
30
40
50Legge teorica - spostamento [deg]
[deg]0 100 200 300
-50
0
50Legge teorica - velocita' [deg/s]
[deg]
0 100 200 300-4
-3
-2
-1
0
1
2
3
4x 10
-5 Errore meccanico X2-X1 [deg]
[deg]0 100 200 300
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2x 10
-4 Errore meccanico X3-X2 [deg]
[deg]
Es. 11/10 Il regolatore di posizione è ad azione proporzionale. Ne consegue un moto effettivo ritardato rispetto a quello
imposto. Sarebbe improprio considerare come errore la semplice
differenza tra la coordinata 2 e il moto imposto.
E’ più opportuno considerare l’errore a meno del ritardo .
0 100 200 300
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
Errore del controllo X2-Xrif [deg]
[deg]0 100 200 300
-0.02
-0.015
-0.01
-0.005
0
0.005
0.01
0.015
0.02Errore del controllo X2-Xrif senza ritardo [deg]
[deg]