MATLAB-SIMULINK Simulink Uso di Malab Funcions all inerno di modelli Simulink Ing. Alessandro Pisano pisano@diee.unica.i
Inerpreed Malab funcions Malab funcions
. 3
4 X0=0.; Y0=0.; A=; B=; C=5; D=;
5 Modello in forma mariciale x y Ax Bxy Cy Dxy M M
6 Funcion file M_LV.m da creare nella Curren Direcory funcion [ ou ] = M_LV( in ) global A B C D X=in(); Y=in(); ou()=a*x-b*x*y; ou()=-c*y+d*x*y; end Scrip di paramerizzazione clear all global A B C D _zero=[0. 0.]; A=; B=; C=4; D=;
7 Malab Funcion block Malab Funcion block in Malab R03
8 Consene di eseguire un funcion file Malab direamene all inerno di un modello Simulink Defaul Se si fa doppio click sul blocco lo si apre nell edior
9 Modifichiamo il file funcion [y,y] = fcn(u, u, u3) %#codegen y = sin(u)+u; y= u*u+u3 Tre ingressi e due uscie L aspeo del blocco cambia e compaiono i nuovi erminali di inpu ed oupu L aspeo del blocco cambia e compaiono i nuovi erminali di inpu ed oupu
0 funcion [y,y] = fcn(u, u, u3) %#codegen y = sin(u)+u; y= u*u+u3 All inerno di un Malab funcion non sono visibili le variabili del workspace, neanche se uese vengono definie come globali
Modello preda predaore con il blocco Malab funcion
funcion do = fcn() %#codegen A=; B=; C=5; D=; x=(); y=(); do=[a*x-b*x*y; -C*y+D*x*y];
3
4 SIMULAZIONE DI MANIPOLATORI ROBOTICI Piano orizzonale m, m masse dei link l, l lunghezze dei link J, J momeni di inerzia dei link r, r coeff. di ario viscoso C(), C() coppie applicae ai giuni
5 Lo SCARA, acronimo di Selecive Compliance Assembly Robo Arm, è un ipo di robo indusriale, che muove un "braccio" sul piano orizzonale e una presa che può salire e scendere in uello vericale.
6 Modello maemaico Termini inerziali Ario viscoso Coppie applicae Coriolis e cenripee * 4 m l J m l m * 4 m l J m,,,, F innl C C R M * * * * * cos cos cos, m l m l m l m l m l m l m m M
7 Coppie applicae Siano le coordinae cosani di un puno di lavoro desiderao d d K K C d p d Si applichino le segueni coppie ai giuni (conrollore PD) K K C d p d d K p K, guadagni cosani K K C d d p d 0 0 r r R sin sin,,, l m l l m l F innl
8 M, R C C F innl,,, Veore delle variabili di giuno Veore delle coppie applicae ai giuni C C C F, C R M innl Modello veoriale in forma esplicia M F, C R innl
9 Scrip di paramerizzazione m=5; m=5; l=; l=; J=; J=; r=5; r=5; msar=0.5*m*l^+j+m*l^; msar=j+0.5*m*l^; 0=[pi/;0]; 0do=[0;0]; R=[r 0;0 r]; Kp=00; Kd=0;
0 M F, C R innl
funcion [ ou ] = generaa( in ) m=5; m=5; l=; l=; J=; J=; msar=0.5*m*l^+j+m*l^; msar=j+0.5*m*l^; alfa=in(); bea=in(); Funcion files funcion [ ou ] = generafinnl( in ) ou(,)= msar+msar+m*l*l*cos(bea); ou(,)= msar+0.5*m*l*l*cos(bea) ; ou(,)=msar+0.5*m*l*l*cos(bea); ou(,)=msar; end m=5; m=5; l=; l=; J=; J=; msar=0.5*m*l^+j+m*l^; msar=j+0.5*m*l^; alfa=in(); bea=in(); alfado=in(3); beado=in(4); ou(,)=m*l*l*(alfado*beado+0.5*beado^)*sin(bea); ou(,)=-m*l*l*0.5*alfado^*sin(bea); end
empo=.ime; =.daa(,:); =.daa(,:); plo(empo,,empo,),grid legend('_','_').5.5 0.5 0 0 4 6 8 0 4 6 8 0
Modello compao con Embedded Malab Funcion 3
4 Embedded Malab Funcion funcion ddo = fcn(,do,c) %#eml m=5; m=5; l=; l=; J=; J=; msar=0.5*m*l^+j+m*l^; msar=j+0.5*m*l^; r=5; r=5; alfa=(); bea=(); alfado=do(); beado=do(); A=[msar+msar+m*l*l*cos(bea) msar+0.5*m*l*l*cos(bea); msar+0.5*m*l*l*cos(bea) msar]; FinNL=[m*l*l*(alfado*beado+0.5*beado^)*sin( bea); -m*l*l*0.5*alfado^*sin(bea)]; R=[r 0;0 r]; ddo = inv(a)*(finnl+c-r*do);
Manipolaore planare a gdl 5
6 g B M cos cos cos, I m l I m l l m l I m l l m l I l l l l m I m l M c c c c c c c c 0, h h h h B sin l m l h c cos cos cos, l l m g g m l g c c cos, g m l g c g g B M,,,,
7 g g B M,,,, g B M g g g g B F, F M,
8 M F, Modello veoriale in forma esplicia M F, Coppie applicae Siano d d le coordinae cosani di un puno di lavoro desiderao Si applichino le segueni coppie ai giuni (conrollore PD con graviy compensaion) d g K K d p K, K d p d guadagni cosani d d
9
30
3
3 funcion [ ou ] = cream( in ) m=5; m=5; l=; lc=; l=; lc=; I=; I=; =in(); =in(); ou(,)= m*lc^+i+m*(l^+lc^+*l*lc*cos())+i; ou(,)= m*l*lc*cos()+m*lc^+i; ou(,)=ou(,); ou(,)=m*lc^+i; end
33 funcion [ ou ] = creaf( in ) m=5; m=5; l=; lc=; l=; lc=; J=; J=; g=9.8; =in(); =in(); do=in(3); do=in(4); do=[do;do]; h=m*l*lc*sin() B=[-h*do -h*(do+do); h*do 0]; grav=[m*lc*g*cos()+m*g*(lc*cos(+)+l*cos()); m*lc*g*cos(+)]; ou=b*do+grav; end
34 funcion [ ou ] = creag( in ) m=5; m=5; l=; lc=; l=; lc=; g=9.8; =in(); =in(); g=[m*lc*g*cos()+m*g*(lc*cos(+)+l*cos()); m*lc*g*cos(+)]; ou=g; end
35
36
37
38
39 K p x l d d x l
40
4