55
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 3 2 Dx Cx Bx A y

Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

“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

Page 2: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 3: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

4 – Esercizi su ruote dentate

Page 4: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Esercizio B: traccia

Page 5: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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 1

2

22

21

Page 6: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

FUNCTION

file

Page 7: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 8: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

tyBA

tyBA

ty

ty

ty

nnnn

Page 9: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Ricerca di EVENTI

A1=4 B1=-3

A2=5 B2=-2

A=2 B=-1

Page 10: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 11: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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:

Page 12: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 13: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Ricerca di EVENTI: risultati

te = 0.54

ye = 1.66

tR = 1.77

yR = 1.9C=(-A/B)*0.95

( )y t C)()( 21 tyty

Eventi:

A1=4 B1=-3

A2=5 B2=-2

A=2 B=-1

Page 14: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Sistema SDOF libero

Sistema sotto-smorzato

022

xxx nn

1 1 Sistema sovra-smorzato

2

1

yx

yx

),( ytFy

Page 15: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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);

Page 16: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Sistema SDOF con attrito Coulombiano

Equazione

differenziale non

lineare

mgkxxm

mgkxxm

0x

0x

)( 21

2

2

21

ysigngyy

yy

n

0)(2

gxsignxx n

Page 17: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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)( 21

2

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);

Page 18: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Sistema SDOF forzato

tm

Fxxx nn cos2 02

0X

2

n

1.0

)(tx

10n Hzfn 5

Page 19: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Sistema SDOF forzato

in RISONANZA0X

1.0

)(tx

10n Hzfn 5

0

)(tx

tm

Fxxx nn cos2 02

2

n

Page 20: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Sistema SDOF forzato:

BATTIMENTO

2n Hzfn 1

0 )(tx

tm

Fxx n cos02

n10

9

210

2

10

1 nn

202

t

Page 21: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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.

Page 22: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 23: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 24: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

i

T

i

i

XMXp

}]{[}{

1

{ } [ ] { } 1T

i 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

Page 25: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

12 – Vibrazioni torsionali di un motore marino

Page 26: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

13 – Modifiche strutturali

m

k

m

m

k

k

1

2

3

3

2

1

Page 27: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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]

Page 28: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Autovalori e Autovettori: esercizio 2

21002

2

k

m

6.2586

1.384

0

2

3

2

2

2

1

A*m

617.0

1

004.0

1

611.0

016.0

1

1

1

3

2

1

X

X

X9.2583

0.377

2

2

2

1

A*m

A=100

2.2584

7.377

0

2

3

2

2

2

1

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

Page 29: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Esempio 1

)()( tutx

Page 30: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Esempio 2

)()(2)( tutxtx

Page 31: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Es. 3

m

c

kF

x(t)

)()()()( tFtxktxctxm

)()()()( tFtxktxctxm

Page 32: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 33: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

PARAMETRI

m1 = 1.5 kg k1 = 1.5 106 N/m

b = c/k = 10-4 s

Legge di moto cicloidale

Corsa 120 mm

Velocità = 240 rpm

Due condizioni:

g1 = 0

g1 = 0.02 mm

K

CM

g

X0 X1

File:

«LeggeEsempio09.mat» 0 100 200 300

[deg]

0

20

40

60

80

100

120

Legge di Moto X0 [mm]

Page 34: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Es. 5

dt = 1/100;

time = [0:dt:1];

x = sin(2*pi*time);

A = [time; x].';

Page 35: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Esempio 6

Page 36: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Esempio 7

Page 37: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

SIMULINK – Es. 8

Page 38: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

( ) ( ) ( ) ( )

( ) ( )

Page 39: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

(file «LeggeEsempio09.mat»)

Corsa 120 mm

Velocità = 240 rpm

Due condizioni:

g1 = g2 = 0

g1 = g2 = 0.02 mm

0 100 200 300

[deg]

0

20

40

60

80

100

120

Legge di Moto X0 [mm]

Page 40: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Legge di moto

SPOSTAMENTO ACCELERAZIONE

0 100 200 300

[deg]

-0.06

-0.04

-0.02

0

0.02

0.04

0.06Accelerazione Teorica [mm/deg

2]

0 100 200 300

[deg]

0

20

40

60

80

100

120

Legge di Moto X0 [mm]

Legge di moto cicloidale

file «LeggeEsempio09.mat»

Page 41: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 42: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Blocco LEGGE di MOTO

File:

«LeggeEsempio09.mat»

Page 43: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Blocco «Fev»

Blocco «Massa»

Page 44: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Simulazione: Accelerazione massa m2

g1 = g2 = 0 g1 = g2 = 0.02 mm

Page 45: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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.

Page 46: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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.

Page 47: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Esempio 11/3

Legge di moto

Regolatore di

posizione

Regolatore di

velocità.

Page 48: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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à

Page 49: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

Page 50: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

i

p

11)(

Page 51: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

Esempio 11/6 Modello dell’intero azionamento

Page 52: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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

i

p

11)(

Page 53: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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]

)(')()(

)(

s

dt

d

d

sd

dt

tsdts

)(ts

)(' s

Velocità di rotazione = 20 rpm

Page 54: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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]

Page 55: Script e Function - unibo.itdiem1.ing.unibo.it/mechmach/rivola/forli/mdm/Ex_Aula_Info_1718.pdfIntegrazione Equazioni Differenziali –“ode…” Il generico solutore ODExx di MATLAB

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]