Script e Function “Script” (MAIN file) y A Bx...
Transcript of Script e Function “Script” (MAIN file) y A Bx...
“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)
“Function” 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.0123
−===−=
DCBA
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 =!
q Secondo ordine: possono essere ricondotte ad un sistema di due equazioni del primo ordine:
2
1
yxyx
==! xy
yxy!!!
!!
===
2
21
mfymkymcyyy
/)/()/( 122
21
+−−==!
!2yCyBAy ++=!
)(tfkxxcxm =++ !!!
mk
n =ω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);
!y(t) = A+ By+Cy2
function yp=fun03(t,y,flag,A,B,C); yp=A+B*y+C*y^2;
return
MAIN file
FUNCTION file
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 default plot durante l’integrazione grafica piano delle fasi imposta toll. relativa imposta toll. assoluta indica 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
FUNCTION file
⎪⎪⎭
⎪⎪⎬
⎫
⎪⎪⎩
⎪⎪⎨
⎧
+
++
=
⎪⎪⎭
⎪⎪⎬
⎫
⎪⎪⎩
⎪⎪⎨
⎧
)(...
)()(
)(...
)()(
222
111
2
1
tyBA
tyBAtyBA
ty
tyty
nnnn!
!!
Sistema SDOF libero
§ Sistema sotto-smorzato
02 2 =++ xxx nn ωζω !!!
1<ζ 1>ζq Sistema sovra-smorzato
!y1 = y2
!y2 = −2ζωn y2 −ωn2 y1
2
1
yxyx
==!
),( ytFy =!
Sistema SDOF libero à MATLAB
% Condizioni iniziali x0=-1; v0=0; % Intervallo di
integrazione t0=0; tf=1;
function dydt = eq_lib01(t,y,flag,omn,zeta); dydt = [y(2); -2*zeta*omn^2*y(1)]; return
% Parametri del sistema omn=10*pi; % rad/s zeta= 1.1; % OPTIONS = odeset('OutputFcn','odeplot'); % OPTIONS = odeset('OutputFcn','odephas2'); OPTIONS = [ ]; [t,y]=ode45('eq_lib01',[t0 tf],[x0; v0],OPTIONS,omn,zeta);
!y1 = y2
!y2 = −2ζωn y2 −ωn2 y1
Sistema SDOF con attrito Coulombiano
§ Equazione differenziale non lineare
mgkxxm µ−=+!!
mgkxxm µ=+!!
0>x!
0<x!
m!!x+ kx+ sign( !x)µ mg = 0
)( 212
2
21
ysigngyy
yy
n µω −−=
=
!
!0)(2 =++ gxsignxx n µω !!!
Sistema SDOF con attrito Coulombiano à MATLAB
% Condizioni iniziali x0=1; v0=0; % Intervallo di
integrazione t0=0; tf=8;
function dydt = eq_attrito(t,y,flag,omn,Fatt); dydt = [y(2); -omn^2*y(1)-Fatt*sign(y(2))]; return
)( 212
2
21
ysigngyy
yy
n µω −−=
=
!
!
% Parametri del sistema omn=3*pi; % rad/s % Parametri dell'attrito mu=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=-3 A2=5 B2=-2 A=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=-3 A2=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 flag case '' varargout{1} = f(t,y,A1,B1,A2,B2); case 'events' [varargout{1: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); % event isterminal = 0; % don't stop at the event direction = 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 flag case '' varargout{1} = f(t,y,A,B); case 'events' [varargout{1: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; % event isterminal = 0; % don't stop at the event direction = 0; % don't care if increasing/decreasing
Evento:
( )y t C=
Ricerca di EVENTI: risultati
te = 0.54 ye = 1.66
tR = 1.77 yR = 1.9
C=(-A/B)*0.95
( )y t C=)()( 21 tyty =
Eventi:
A1=4 B1=-3 A2=5 B2=-2 A=2 B=-1
Sistema SDOF forzato
tmFxxx nn Ω=++ cos2 02ωζω !!!
0X
2
⎟⎟⎠
⎞⎜⎜⎝
⎛ Ω
nω
1.0=ζ
)(tx
πω 10=n Hzfn 5=
Sistema SDOF forzato in RISONANZA
0X
1.0=ζ
)(tx
πω 10=n Hzfn 5=
0=ζ
)(tx
tmFxxx nn Ω=++ cos2 02ωζω !!!
2
⎟⎟⎠
⎞⎜⎜⎝
⎛ Ω
nω
Sistema SDOF forzato: BATTIMENTO
πω 2=n Hzfn 1=
0=ζ )(tx
tmFxx n Ω=+ cos02ω!!
nω109=Ω
επωω 2102
101 ===Ω− 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 § Prima componente = 1 p = V(1,:).’ P = (p*ones(1,length(V))).’ V = V./P
iTi
iXMX
p}]{[}{
1=
{ } [ ] { } 1Ti i i i iM p X M p X= =
q 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
210022
π××==
km Hz
mk
Hzmk
531033
510
2
1
×=×==
===
πω
πω
{ }
{ }⎭⎬⎫
⎩⎨⎧−+
=
⎭⎬⎫
⎩⎨⎧++
=
11
11
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 2 21002
2π××=
=km
6.2586
1.384
0
23
22
21
=
=
=
ωωω
A*m
{ }
{ }
{ }⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
−
−=
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧+−
=
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
=
617.01004.0
1611.0016.0
111
3
2
1
X
X
X 9.2583
0.37722
21
=
=
ωω
A*m
A=100
2.2584
7.377
0
23
22
21
=
=
=
ωωω
{ }
{ }
{ }⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
−
−=
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧+−
=
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
=
618.01000.0
1617.0002.0
111
3
2
1
X
X
X
{ }
{ }⎭⎬⎫
⎩⎨⎧−
=
⎭⎬⎫
⎩⎨⎧+
=
618.01
1618.0
2
1
X
X
A=1000
2 dofs
SIMULINK – Esempio 1
)()( tutx =!
SIMULINK – Esempio 2
)()(2)( tutxtx +−=!
SIMULINK – Es. 3
mc
kF
x(t)
)()()()( tFtxktxctxm =++ !!!
)()()()( tFtxktxctxm +−−= !!!
SIMULINK – Es. 4
K
CM
g
X0 X1
F K X X g X gF K X X g X g
F X g
EL
EL
EL
= − − − − >= − − + − < −
= − ≤
( / ) /( / ) /
/
1 0 1 0
1 0 1 0
1 0
2 22 2
0 2
XX
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 X1 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/m m2 = 1 kg k2 = 1.8 106 N/m q = c/k = 10-4 s f1 = 114 Hz f2 = 297 Hz Legge di moto cicloidale Corsa 120 mm Velocità = 240 rpm Due condizioni: g1 = g2 = 0 g1 = 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 cicloidale file «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 X1 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
File: «LeggeEsempio09.mat»
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 m2
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à
( ) ( ) ( ) ( ) d
d tv
tti
LtiRte qq
qq +⋅+⋅=
( ) ( )tKtv mbq ϑ!⋅=
( ) ( )tiKtC qcm ⋅=
( ) ( )sLR
ssKsEKsC mbqcm ⋅+
Θ⋅⋅−=)(
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 elettrico L = 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 posizione Kpc = 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 meccanico J2 = 0.085 kgm2 J3 = 0.085 kgm2
k1 = 1.15 106 Nm/rad k2 = 1.15 105 Nm/rad Velocita‘ di rotazione = 20 rpm q = 10–5 s c1 = q k1 c2 = q k2
⎟⎟⎠
⎞⎜⎜⎝
⎛+=
sTKsG
ip
11)(
Esempio 11/6 § Modello dell’intero azionamento
§ Dati numerici
Dati del motore elettrico L = 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 posizione Kpc = 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 meccanico J2 = 0.085 kgm2 J3 = 0.085 kgm2 k1 = 1.15 106 Nm/rad k2 = 1.15 105 Nm/rad q = 10–5 s c1 = 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]
Ω=== )(')()()( ϑϑϑϑ sdtd
dsd
dttsdts!
)(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
4 x 10-5 Errore meccanico X2-X1 [deg]
[deg]0 100 200 300
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2 x 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]