• Non ci sono risultati.

Vengono di seguito riportati i file utilizzati per il calcolo delle funzioni di trasferimento in ciclo aperto della dinamica linearizzata del distributore, relativamente a quanto descritto nella prima parte della tesi.

− Totale_valvola.m − Totale_valvola_linea1 − Totale_valvola_linea2 − Linearizzazione_linea1 − Linearizzazione_linea2 − Valori_iniziali_valvola − Equazioni_algebriche_con_tubazione − Spazio_stati_con_tubazione − Dati_sperimentali_linea1 − Dati_sperimentali_linea2 − Attuatore_60 − Attuatore_40 − Attuatore_20 − Dati_per_simulink_linea1 − Dati_per_simulink_linea2 Totale_valvola.m %*********************************** % File: totale_valvola.m * %***********************************

% Mediante questo file vengono caricati i dati della dinamica linearizzata % delle due valvole regolatrici di pressione che si trovano sulle due linee % del banco prova idraulico. Per ognuna delle due valvole le condizioni % operative sono valutate in termini di portata e di salto di pressione. clear allclose all

% Scelta della linea che si vuole analizzare.

LINEAmenu=menu('Linea di tubazione','LINEA 1','LINEA 2');

% Mediante il seguente ciclo if si caricano i dati di una delle due valvole % a seconda della linea selezionata.

if LINEAmenu==1

Appendice B File Matlab® totale_valvola_linea_1; elseif LINEAmenu==2 totale_valvola_linea_2; end Totale_valvola_linea1 %**************************************** % File: totale_valvola_linea_1.m * %****************************************

% Questo file racchiude i vari files utilizzati per effettuare la

% linearizzazione della dinamica della valvola comprensiva dello spillo di % regolazione e della tubazione.

clear all;close all;clc;

linearizzazione_linea_1;% Vengono definite le condizioni operative in cui effettuare la% linearizzazione.

valori_iniziali_valvola;

% Vengono calcolati i valori iniziali all'equilibrio. equazioni_algebriche_con_tubazione;

% Vengono calcolate le equazioni della dinamica in forma linearizzata.

spazio_stati_con_tubazione;% Vengono calcolate le matrici del sistema nella forma canonica dello% spazio degli stati e vengono calcolate le relative funzioni di % trasferimento.

dati_sperimentali_linea1;% Vengono caricati i vettori contenenti i valori dei tempi e delle% pressioni, campionati durante le prove sul banco prova idraulico. % Creazione del grafico del movimento dell'attuatore alle varie velocità. if Qa==2000*60

attuatore_60;

% Viene graficato l'andamento dell'attuatore con una velocità di 60 mm/sec. elseif Qa==2000*40

attuatore_40;

% Viene graficato l'andamento dell'attuatore con una velocità di 40 mm/sec. elseif Qa==2000*20

attuatore_20;

% Viene graficato l'andamento dell'attuatore con una velocità di 20 mm/sec. end

dati_per_simulink_linea1;% Creazione dei dati da immettere nel modello simulink

Totale_valvola_linea2

%*************************************** % File: totale_valvola_linea_2.m * %***************************************

% Questo file racchiude i vari files utilizzati per effettuare la

% linearizzazione della dinamica della valvola comprensiva dello spillo di % regolazione e della tubazione.

clear all;close all;clc; linearizzazione_linea_2;

% Vengono definite le condizioni operative in cui effettuare la%linearizzazione. valori_iniziali_valvola;% Vengono calcolati i valori iniziali all'equilibrio. equazioni_algebriche_con_tubazione;

% Vengono calcolate le equazioni della dinamica in forma linearizzata. spazio_stati_con_tubazione;

% Vengono calcolate le matrici del sistema nella forma canonica dello

% spazio degli stati e vengono calcolate le relative funzioni di% trasferimento. dati_sperimentali_linea2;

% Vengono caricati i vettori contenenti i valori dei tempi e delle % pressioni, campionati durante le prove sul banco prova idraulico. % Creazione del grafico del movimento dell'attuatore alle varie velocità. if Qa==2000*60

attuatore_60;

% Viene graficato l'andamento dell'attuatore con una velocità di 60 mm/sec. elseif Qa==2000*40

attuatore_40;

% Viene graficato l'andamento dell'attuatore con una velocità di 40 mm/sec. elseif Qa==2000*20

attuatore_20;

% Viene graficato l'andamento dell'attuatore con una velocità di 20 mm/sec. end

dati_per_simulink_linea2; % Creazione dei dati da immettere nel modello simulink

%************************************************** % File: linearizzazione _linea_1.m * %**************************************************

% Mediante questo file si caricano le condizioni iniziali per effettuare la % linearizzazione della dinamica della valvola relativamente alla linea 1. % Scelta della portata richiesta all'utilizzatore [mm^3/sec].

Qmenu=menu('Velocità attuatore [mm/sec]','20','40','60'); if Qmenu==1

Qa=20*2000; % Valore della portata [mm^3/sec]. elseif Qmenu==2

Qa=40*2000; elseif Qmenu==3 Qa=60*2000; end

% Scelta del range di pressione in cui operare [KPa].

Pmenu=menu('Valore della pressione [KPa]','120','180','188','193');

%scelta della pressione di equilibrio nell'intorno della quale effettuare la %linearizzazione (valori in KPa presi dai dati sperimentali).

if Qa==60*2000 if Pmenu==1

Pa=11900;% [KPa] valore della pressione d'equilibrio.

Com_V=110/210;% Valore del comando di pressione adimensionalizzato. secondo_iniziale=2876;% Secondo iniziale della finestra grafica in esame. campionamento_in=39704;% Valore del campionamento relativo al primo secondo esaminato.

campionamento_fin=40704;% Valore del campionamento relativo all'ultimo secondo esaminato. elseif Pmenu==2 Pa=17300;Com_V=150/210;secondo_iniziale=2886;campionamento_in=40704; campionamento_fin=41704; elseif Pmenu==3 Pa=18300;Com_V=160/210;secondo_iniziale=2896;campionamento_in=41704; campionamento_fin=42704; elseif Pmenu==4 Pa=18700;Com_V=170/210;secondo_iniziale=2906;campionamento_in=42704; campionamento_fin=43704; end elseif Qa==40*2000 if Pmenu==1 Pa=11900;Com_V=110/210;secondo_iniziale=2276;campionamento_in=41679; campionamento_fin=42679; elseif Pmenu==2 Pa=18000;Com_V=150/210;secondo_iniziale=2286;campionamento_in=42679; campionamento_fin=43679; elseif Pmenu==3 Pa=18300;Com_V=160/210;secondo_iniziale=2296;campionamento_in=43679; campionamento_fin=44679; elseif Pmenu==4 Pa=18900;Com_V=170/210;secondo_iniziale=2306;campionamento_in=44679; campionamento_fin=45679; end elseif Qa==20*2000 if Pmenu==1 Pa=11550;Com_V=110/210;secondo_iniziale=1075.995;campionamento_in=47391; campionamento_fin=48391; elseif Pmenu==2 Pa=17450;Com_V=150/210;secondo_iniziale=1085.995;campionamento_in=48391; campionamento_fin=49391; elseif Pmenu==3 Pa=17900;Com_V=160/210;secondo_iniziale=1095.995;campionamento_in=49391; campionamento_fin=50391; elseif Pmenu==4 Pa=18850;Com_V=170/210;secondo_iniziale=1105.995;campionamento_in=50391; campionamento_fin=51391; end end Linearizzazione_linea2 %************************************************** 168

Appendice B File Matlab®

% File: linearizzazione _linea_2.m * %**************************************************

% Mediante questo file si caricano le condizioni iniziali per effettuare la % linearizzazione della dinamica della valvola relativamente alla linea 2. % Scelta della portata richiesta all'utilizzatore [mm^3/sec].

Qmenu=menu('Velocità attuatore [mm/sec]','20','40','60'); if Qmenu==1

Qa=20*2000; % Valore della portata [mm^3/sec]. elseif Qmenu==2

Qa=40*2000; elseif Qmenu==3 Qa=60*2000; end

% Scelta del range di pressine in cui operare [KPa].

Pmenu=menu('Valore della pressione [KPa]','120','175','186');

%scelta della pressione di equilibrio nell'intorno della quale effettuare la %linearizzazione (valori in KPa presi dai dati sperimentali).

if Qa==60*2000 if Pmenu==1

Pa=12200;% [KPa] valore della pressione d'equilibrio.

Com_V=110/210;% Valore del comando di pressione adimensionalizzato. secondo_iniziale=2726;% Secondo iniziale della finestra grafica in esame. campionamento_in=24704;

% Valore del campionamento relativo al primo secondo esaminato. campionamento_fin=25704;

% Valore del campionamento relativo all'ultimo secondo esaminato. elseif Pmenu==2 Pa=16900;Com_V=160/210;secondo_iniziale=2746;campionamento_in=26704; campionamento_fin=27704; elseif Pmenu==3 Pa=17700;Com_V=170/210;secondo_iniziale=2756;campionamento_in=27704; campionamento_fin=28704; end elseif Qa==40*2000 if Pmenu==1 Pa=12200;Com_V=110/210;secondo_iniziale=2126;campionamento_in=26679; campionamento_fin=27679; elseif Pmenu==2 Pa=17100;Com_V=160/210;secondo_iniziale=2146;campionamento_in=28679; campionamento_fin=29679; elseif Pmenu==3 Pa=18000;Com_V=170/210;secondo_iniziale=2156;campionamento_in=29679; campionamento_fin=30679; end elseif Qa==20*2000 if Pmenu==1 Pa=12600;Com_V=110/210;secondo_iniziale=775.995;campionamento_in=17391; campionamento_fin=18391; elseif Pmenu==2 Pa=17700;Com_V=160/210;secondo_iniziale=795.995;campionamento_in=19391; campionamento_fin=20391; elseif Pmenu==3 Pa=18600;Com_V=170/210;secondo_iniziale=805.995;campionamento_in=20391; campionamento_fin=21391; end end Valori_iniziali_valvola %************************************************** % File: valori_iniziali_valvola.m * %**************************************************

% Mediante questo file vengono calcolati i valori di equilibrio delle % grandezze caratteristiche della servovalvola regolatrice di pressione. % I valori di equilibrio vengono utilizzati per la linearizzazione della % dinamica.

% In questo file è stato introdotto un fattore di scala pari a 0.5 % per tenere conto del taglio delle nuove valvole.

%*************************************************************** % VALORI INIZIALI: * % (Vengono inizializzati nel file linearizzazione_linea_1) * % Qa Portata all'utilizzatore *

% Py = 1 bar Pressione di scarico * %*************************************************************** % clear all;close all;clc

% Qa; % [mm^3/sec] Portata richiesta dall'utilizzatore % Pa ; % [kPa] Pressione richiesta all'utilizzatore Pb=19000; % [kPa] Pressione di mandata

Py=100; % [kPa] Pressione di scarico

% Com_V=110/210;% Comando valvola adimensionale. Per tenere conto del fatto che il comando nell'hardware% viene impartito in termini di corrente (o volt) e non in termini di pressione.% Il valore evidenziato è dunque la pressione del% comando adimensionalizzata con quella massima% operativa della linea.

alfa=20/57.3; % [rad] Angolo della strozzatura dello spool (era 25) rho_0=8.7556e-7; % [kg/mm^3] Densità del fluido

cd=0.631; % Coefficiente di trafilamento (adimensionale) (era 0.611) d_spool=39.5*0.5; % [mm] Diametro dello spool (era 32)

A_spool=pi*(d_spool/2)^2; % [mm^2] Area dello spool R_spool=d_spool/2; % [mm] Raggio dello spool

L_spool=d_spool*1.5; % [mm] Altezza dello spool (ricavata dal disegno) Kspool=100000*4; % [kg/sec^2] rigidezza della molla dello spool lo=1.2139*0.5; % [mm] Lunghezza di riposo della molla

A_ore2=0.25*pi*(d_spool/16)^2;

% [mm^2] Area dell'orifizio a monte dello spool (con il rapporto 1/20 ricavato dal disegno)

K2=cd*A_ore2*sqrt(2/rho_0);

% Coefficiente di trafilamento dell'orifizio a monte dello spool K1=K2*0.52;

% Coefficiente di trafilamento dell'orifizio a monte dello spillo di regolazione (era *0.5)

%************************ % CONDIZIONI DI REGIME * %************************

Qw=0; % [mm^3/sec] Il flusso verso lo spool è nullo Qaw=0; % Il trafilamento verso la camera Z è nullo Qw_star=0;Qa_star=Qa;Qaw+Qw*=Qw => Qw*=0 Qw*=Qc-Qy => Qc=Qy % Qa=Qa*-Qaw => Qa=Qa*

Kf=Qa/sqrt(Pb-Pa);% Coefficiente di perdita nella strozzatura spool Aluce1=Kf*sqrt(rho_0*0.5)/cd;

% [mm^2] Area della strozzatura 1 dello spool (trafilamento B-A) (era *0.5) coeff=[pi*(sin(alfa)^2)*cos(alfa) -2*(sin(alfa))*pi*R_spool Aluce1];

% Coefficienti del polinomio che lega l'area della strozzatura allo spostamento dello spool

x_ini=min(roots(coeff));

% [mm] spostamento dello spool principale (x=0 quando è a battuta contro la sede) PW=((Kspool*(x_ini+lo))/A_spool)+Pa;

% [kPa] pressione superficie superiore dello spool principale

PZ=PW; % [kPa] Pressione agenta nella camera Z uguale a quella agente % sulla superficie dello spool (a regime ho QW=0)

Qc=K1*(sqrt(Pb-PZ));% [mm^3/sec] Portata del flusso di controllo

Qy=Qc;% [mm^3/sec] Portata del flusso di controllo uguale alla portata allo scarico

Qb=Qa+Qc; % [mm^3/sec] Portata della mandata

Kreq=Qy/(sqrt(PZ-Py));% [mm^3/sec/kPa^0.5] coefficiente di trafilamento dello spillo di regolazione

% necessario per ottenere in uscita la pressione PA A_rv=(1.315*0.5)^2*pi;% [mm^2] area dell'orifizio di sfogo

KAW=cd*A_rv*sqrt(2/rho_0); % coefficiente di trafilamento attraverso l'orifizio di sfogo

gamma=7.80;% [Kg/dm^3] peso specifico dell'acciaio fi_int=12*0.5; % [mm] diametro interno dello spool fi_ext=25*0.5; % [mm] diametro esterno dello spool

Volume=(pi/4)*(fi_ext^2-fi_int^2)*L_spool; % [mm^3] Volume dello spool mspool=Volume*gamma*2/1000000;% [kg] Massa del cinematismo di bypass (>> massa pistone bypass),il 2 a moltiplicare % per tener conto delle sporgenze e del peso della molla e della sferetta

zita_spool=0.5 ;Cspool=2*zita_spool*(Kspool*mspool)^0.5 ;

% Coefficiente di smorzamento della dinamica dello spool [kg/sec] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% CARATTERISTICHE DELLA TUBAZIONE % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Appendice B File Matlab®

Beta_g=1.4*Pa;% [kPa] rigidezza dell'aria intrappolata nel gas Beta_h=1.5*10^6;% [kPa] rigidezza dell'olio

Beta_tg=0.3*10^6;% [kPa] rigidezza del tubo di gomma Beta_ta=55*10^6;% [kPa] rigidezza del tubo di acciaio Beta_eg=1/((1/Beta_tg)+(1/Beta_h)+(0.01/Beta_g));

% Rigidezza effettiva dell'olio (considerando l'aria e la deformabilità % del tubo in gomma)

Diametro_tubo=19.1;%[mm] diametro interno del tubo di collegamento tra valvola e DDV

Lunghezza_tubo=4500;% [mm]

Area_sez_tubo=(Diametro_tubo^2)*pi/4;% [mm^2] Volume_tubo=Area_sez_tubo*Lunghezza_tubo*.9;

% [mm^3]% Moltiplico per 0.9. Riducendo il volume si ha un aumento% della banda passante.

%*********************************************** % STAMPA DEI RISULTATI ALL'EQUILIBRIO * %*********************************************** disp(' ');

disp('---'); disp(' VALORI DI REGIME '); disp('---'); disp(sprintf('Pressione all''utilizzatore [kPa] = %d',Pa));

disp(sprintf('Pressione della mandata [kPa] = %d',Pb));

disp(sprintf('Portata all''utilizzatore [mm^3/sec] = %d',Qa)); disp(sprintf('Pressione allo scarico [kPa] = %d',Py));

disp(sprintf('Spostamento iniziale Xo [mm] = %d',x_ini)); disp(sprintf('Pressione agente sullo spool Pw [mm] = %d',PW)); disp(sprintf('Pressione agente sulla camera Z Pz [mm] = %d',PZ));

disp(sprintf('Coefficiente di perdita nella strozzatura spool [mm^3/sec/kPa^0.5] = %d',Kf));

disp(sprintf('Area della strozzatura spool [mm^2] = %d',Aluce1)); disp(sprintf('Portata del flusso di controllo [mm^3/sec] = %d',Qc)); disp(sprintf('Portata del flusso di scarico [mm^3/sec] = %d',Qy)); disp(sprintf('Portata del flusso verso lo spool [mm^3/sec] = %d',Qw));

disp(sprintf('Portata del flusso verso la camera Z [mm^3/sec] = %d',Qw_star)); disp(sprintf('Portata attraverso il trafilamento della valvola di sicurezza [mm^3/sec] = %d',Qaw));

disp(sprintf('Portata attraverso la strozzatura dello spool [mm^3/sec] = %d',Qa_star)); disp(' '); Equazioni_algebriche_con_tubazione %************************************************** % File: equazioni_algebriche_con_tubazione.m * %**************************************************

% Mediante questo file si ricavano le relazioni che legano le equazioni % dello stato con gli ingressi nel caso in cui sia presente la tubazione. % N.B. Fare girare dopo valori_iniziali_valvola2.m

coef=[1.5e-13*21000^4 7.3e-9*21000^3 0.00013*21000^2 1.1*21000 4.6e+03]; % Valori dei coefficienti del polinomio che descrive l'andamento di Kreq alfa_c=(coef(1)*Com_V^4-coef(2)*Com_V^3+coef(3)*Com_V^2-

coef(4)*Com_V+coef(5))/(2*sqrt(PZ-Py));

beta_c=(2*pi*R_spool*sin(alfa)-2*x_ini*pi*(sin(alfa)^2)*cos(alfa));

gamma_c=(4*coef(1)*Com_V^3-3*coef(2)*Com_V^2+2*coef(3)*Com_V-coef(4))*sqrt(PZ-Py); delta_P=100; %[kPa]

% Viene impostata una differenza tra PZ e PW di 1 bar per non avere un % valore infinito a denominatore

% Matrice che lega i coefficienti alle variabili di stato. A_t=[1 -1 1 zeros(1,5);

0 0 1 -1 -1 zeros(1,3); zeros(1,4) 1 zeros(1,3);

0 0 1 0 0 K1/(2*sqrt(abs(Pb-PZ))) 0 0 ;

zeros(1,4) 1 -K2/(2*sqrt(delta_P)) K2/(2*sqrt(delta_P)) 0 ; 0 0 0 1 0 -alfa_c 0 0 ;

1 zeros(1,6) -cd*sqrt(Pb-Pa)/sqrt(rho_0/2); zeros(1,7) 1];

% Matrice che lega i coefficienti agli ingressi del sistema B_t=[zeros(1,6);

zeros(1,6);

zeros(1,4) A_spool 0;

gamma_c zeros(1,5);

0 (cd/sqrt(rho_0/2))*(Aluce1/(2*sqrt(abs(Pb-Pa)))) 0 0 0 - (cd/sqrt(rho_0/2))*(Aluce1/(2*sqrt(abs(Pb-Pa))));

0 0 0 beta_c 0 0];

% Esplicitazione nella forma x=M*u con x=stato, u=ingressi. M=(inv(A_t)*B_t);

% Ciò che interessa sono le righe relative a qa_in e Pw che sono % rispettivamente la 1 e la 7.

% Esplicitazione dei coefficienti relativi a qa_in vett_1=[M(1,1) M(1,2) M(1,3) M(1,4) M(1,5) M(1,6)]; % Esplicitazione dei coefficienti relativi a Pw vett_2=[M(7,1) M(7,2) M(7,3) M(7,4) M(7,5) M(7,6)];

Spazio_stati_con_tubazione

%****************************************** % File: spazio_stati_con_tubazione.m * %******************************************

% Mediante questo file si definiscono le matrici che caratterizzano lo % spazio degli stati e vengono ricavate le relative funzioni di % trasferimento per il sistema comprensivo della tubazione. % N.B. fare girere questo file dopo valori_iniziali_valvola_2.m e % equazioni_algebriche_tubazione.m.

%******************************************* % Forma canonica dello spazio degli stati * % * % x_punto=A*x+B*u * % y=C*x+D*u * %******************************************* % Matrice di stato A_tub=[0 1 0; (A_spool/mspool)*M(7,4)-(Kspool/mspool) (A_spool/mspool)*M(7,5)- (Cspool/mspool) (A_spool/mspool)*M(7,6)-(A_spool/mspool); (Beta_eg/Volume_tubo)*M(1,4) (Beta_eg/Volume_tubo)*M(1,5) (Beta_eg/Volume_tubo)*M(1,6)];

% Matrice degli ingressi B_tub=[0 0 0;

(A_spool/mspool)*M(7,1) (A_spool/mspool)*M(7,2) (A_spool/mspool)*M(7,3); (Beta_eg/Volume_tubo)*M(1,1) (Beta_eg/Volume_tubo)*M(1,2)

(Beta_eg/Volume_tubo)*(M(1,3)-1)]; % Matrice delle uscite

C_tub=[0 0 1];

% Matrice di feed-forward D_tub=[0 0 0];

valvola_con_tubazione=ss(A_tub,B_tub,C_tub,D_tub)

% determinazione di zeri-poli-guadagni per le varie funzioni di % trasferimento del sistema.

[Zeri_Com,Poli_Com,Gain_Com]=ss2zp(A_tub,B_tub,C_tub,D_tub,1); [Zeri_Pb,Poli_Pb,Gain_Pb]=ss2zp(A_tub,B_tub,C_tub,D_tub,2);

[Zeri_qa_out,Poli_qa_out,Gain_qa_out]=ss2zp(A_tub,B_tub,C_tub,D_tub,3); % Esplicitazione della dinamica dello spillo di regolazione

poli_spillo=roots([1 2*0.7*70 70^2]);

Z_spillo=[ ]; % Zeri della dinamica dello spillo di regolazione

P_spillo=[poli_spillo(1) poli_spillo(2)]; % Poli della dinamica dello spillo di regolazione

K_spillo=[prod(P_spillo)];% Guadagno della dinamica dello spillo di regolazione (Definito come la produttoria dei poli % per avere un valore unitario a regime). [A_spillo B_spillo C_spillo D_spillo]=zp2ss(Z_spillo,P_spillo,K_spillo); % Forma nello spazio degli stati della dinamica dello spillo di% regolazione spillo=ss(A_spillo,B_spillo,C_spillo,D_spillo);

valvola_spillo_tubazione=series(spillo,valvola_con_tubazione);

% Modello dinamico della valvola comprendente la dinamica dello spillo. % ESPLICITAZIONE DI ZERI-POLI-GUADAGNI DELLA DINAMICA DELLO SPILLO

disp(' ');

disp(' DINAMICA DELLO SPILLO '); disp(' ');

disp(' Poli della dinamica dello spillo '); damp(P_spillo') disp(' ');

disp(' Guadagno della dinamica dello spillo '); K_spillo

Appendice B File Matlab®

disp(' ');

disp(' Zeri della dinamica dello spillo '); Z_spillo

% ESPLICITAZIONE DI ZERI-POLI-GUADAGNI PER LE FUNZIONI DI TRASFERIMENTO % PER IL SISTEMA VALVOLA PIU' TUBAZIONE

% I poli sono uguali per tutte le funzioni di trasferimento disp(' ');

disp(' DINAMICA DELLA VALVOLA PIU'' LA TUBAZIONE '); disp(' ');

disp(' Poli del sistema valvola più tubazione '); damp(Poli_Com)

% Zeri e guadagni delle varie funzioni di trasferimento del sistema valvola % più tubazione.

disp(' ');

disp(' FUNZIONE DI TRASFERIMENTO Pa/Com '); disp(' ');

disp(' Guadagno della Pa/Pa_i '); Gain_Com disp(' Zeri della Pa/Pa_i ');(Zeri_Com) disp(' ');disp(' ');

disp(' FUNZIONE DI TRASFERIMENTO Pa/Pb '); disp(' ');

disp(' Guadagno dalla Pa/Pb '); Gain_Pb disp(' Zeri della Pa/Pb '); damp(Zeri_Pb) disp(' ');disp(' ');

disp(' FUNZIONE DI TRASFERIMENTO Pa/qa_out '); disp(' ');

disp(' Guadagno dalla Pa/qa_out '); Gain_qa_out disp(' Zeri della Pa/qa_out '); damp(Zeri_qa_out)

Dati_sperimentali_linea1

%************************************ % File: Dati_sperimentali_linea1.m * %************************************

% Mediante questo file vengono creati i grafici delle prove sperimentali % effettuate sul banco prova.

load dati_test.mat;

% Vengono caricate le stringe dei valori del tempo e delle pressioni % campionate durante la prova.

% Scelta dei vettori contenenti i tempi e le prssioni ricavate dalle prove % sperimentali, in base alla portata cui si vuole operare.

if Qa==60*2000 campionamento_tempi=test12_60_time;campionamento_pressioni=test12_60_data; elseif Qa==40*2000; campionamento_tempi=test12_40_time;campionamento_pressioni=test12_40_data; elseif Qa==20*2000; campionamento_tempi=test12_20_time;campionamento_pressioni=test12_20_data; end tempi=campionamento_tempi(campionamento_in:campionamento_fin); % Vettore contenente i secondi della finestra grafica in esame. tempi_s=tempi-secondo_iniziale;

% Creazione di un vettore dei tempi ausiliario che contiene i secondi % numerati da 0-10 per caricare i dati nello scope del simulink. press=campionamento_pressioni(campionamento_in:campionamento_fin,1); % Vettore contenente i valori della pressione nella finestra grafica in % esame.

% Creazione del grafico

figure;plot(tempi,press);xlabel('tempo [sec]'); ylabel('pressione [bar]'); title('Andamento della pressione nel tempo');grid;hold on;

plot(tempi,campionamento_pressioni(campionamento_in:campionamento_fin,2),'r'); legend('pressione','comando'); Dati_sperimentali_linea2 %************************************ % File: Dati_sperimentali_linea2.m * %************************************

% Mediante questo file vengono creati i grafici delle prove sperimentali % effettuate sul banco prova.

load dati_test.mat;

% Vengono caricate le stringe dei valori del tempo e delle pressioni % campionate durante la prova.

% Scelta dei vettori contenenti i tempi e le prssioni ricavate dalle

campionamento_tempi=test12_60_time;campionamento_pressioni=test12_60_data; elseif Qa==40*2000; campionamento_tempi=test12_40_time;campionamento_pressioni=test12_40_data; elseif Qa==20*2000; campionamento_tempi=test12_20_time;campionamento_pressioni=test12_20_data; end tempi=campionamento_tempi(campionamento_in:campionamento_fin); % Vettore contenente i secondi della finestra grafica in esame. tempi_s=tempi-secondo_iniziale;

% Creazione di un vettore dei tempi ausiliario che contiene i secondi % numerati da 0-10 per caricare i dati nello scope del simulink. press=campionamento_pressioni(campionamento_in:campionamento_fin,3);

% Vettore contenente i valori della pressione nella finestra grafica in% esame. % Creazione del grafico

figure;plot(tempi,press);xlabel('tempo [sec]'); ylabel('pressione [bar]'); title('Andamento della pressione nel tempo');grid;hold on;

plot(tempi,campionamento_pressioni(campionamento_in:campionamento_fin,4),'r'); legend('pressione','comando'); Attuatore_60 %******************************* % File: attuatore_60.m * %*******************************

% Mediante questo file si traccia il grafico del movimento dell'attuatore % per una velocità di 60 mm/sec.

load AR_LFT_P1_60.mat;

% Vengono caricate le stringhe dei valori del tempo e % della posizione dell'attuatore campionati durante i test.

figure;plot(AR_LoadFollowingTest_60_time,AR_LoadFollowingTest_60_data(:,1)); xlabel('tempo [sec]');ylabel('x [mm]');

title('Andamento nel tempo dell''attuatore a 60 mm/sec');grid;hold on; plot(AR_LoadFollowingTest_60_time,AR_LoadFollowingTest_60_data(:,3),'r'); legend('andamento ideale','andamento reale');

Attuatore_40

%******************************* % File: attuatore_40.m * %*******************************

% Mediante questo file si traccia il grafico del movimento dell'attuatore % per una velocità di 40 mm/sec.

load AR_LFT_P1_40.mat;

% Vengono caricate le stringhe dei valori del tempo e % della posizione dell'attuatore campionati durante i test.

figure;plot(AR_LoadFollowingTest_40_time,AR_LoadFollowingTest_40_data(:,1)); xlabel('tempo [sec]');ylabel('x [mm]');

title('Andamento nel tempo dell''attuatore a 40 mm/sec');grid;hold on; plot(AR_LoadFollowingTest_40_time,AR_LoadFollowingTest_40_data(:,3),'r'); legend('andamento ideale','andamento reale');

Attuatore_20

%******************************* % File: attuatore_20.m * %*******************************

% Mediante questo file si traccia il grafico del movimento dell'attuatore % per una velocità di 20 mm/sec.

load AR_LFT_P1_20.mat;

% Vengono caricate le stringhe dei valori del tempo e % della posizione dell'attuatore campionati durante i test.

figure;plot(AR_LoadFollowingTest_20_time,AR_LoadFollowingTest_20_data(:,1)); xlabel('tempo [sec]');ylabel('x [mm]');

title('Andamento nel tempo dell''attuatore a 20 mm/sec');grid;hold on; plot(AR_LoadFollowingTest_20_time,AR_LoadFollowingTest_20_data(:,3),'r'); legend('andamento ideale','andamento reale');

Dati_per_simulink_linea1

%**************************************

Appendice B File Matlab®

% File: dati_per_simulink_linea1.m * %**************************************

% Mediante questo file vengono creati i dati da inserire nel modello

% simulink, per i vari punti operativi definiti dai valori di portata e pressione. if Qa==60*2000

if Pmenu==1

gradino=4000/21000;% Comando adimensionalizzato impartito alle valvole. Pa_equilibrio=Pa; % [KPa] valore della pressione d'equilibrio.

tempo_step=3.79;% [sec] Tempo al quale viene dato il comando a gradino. amp=100; % Ampiezza del disturbo sulla Pb.

freq=0.15*pi*2; % [rad/sec] frequenza del disturbo Pb. pha=pi; % [rad] fase del disturbo Pb.

rit=0; % [sec] ritardo del disturbo Pb.

rit_inversione=0.11;% [sec] ritardo del comando dell'inversione. vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667];

% [sec] tempi in ingresso alla repeating sequence. vettore_press=[0 -120000 0 80000 0 0]; % [KPa] pressioni in ingresso alla repeating sequence. elseif Pmenu==2 Pa_equilibrio=Pa;gradino=1000/21000;tempo_step=3.83;amp=200;freq=0.07*pi*2; pha=2*pi;rit=0;rit_inversione=0.05; vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667]; vettore_press=[0 -120000 0 80000 0 0]; elseif Pmenu==3 Pa_equilibrio=Pa;gradino=1000/21000;tempo_step=3.80; amp=150;freq=0.1*pi*2;pha=pi*1.35;rit=0;rit_inversione=0.65; vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667]; vettore_press=[0 -120000 0 80000 0 0]; elseif Pmenu==4 Pa_equilibrio=Pa;gradino=1000/21000;tempo_step=3.8; amp=400;freq=0.05*pi*2;pha=0;rit=3.80;rit_inversione=0.575; vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667]; vettore_press=[0 -120000 0 80000 0 0]; end elseif Qa==40*2000 if Pmenu==1 gradino=4000/21000;Pa_equilibrio=Pa;tempo_step=3.83; amp=150;freq=0.1*pi*2;pha=0.35*pi;rit=3.83;rit_inversione=0.54; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; elseif Pmenu==2 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.83;amp=90; freq=0.1*pi*2;pha=pi*1.18;rit=0;rit_inversione=0.5; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; elseif Pmenu==3 gradino=1000/21000; Pa_equilibrio=Pa;tempo_step=3.83;amp=80; freq=0.11*pi*2;pha=0.4*pi;rit=0;rit_inversione=0.45; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; elseif Pmenu==4 gradino=1000/21000;Pa_equilibrio=Pa+180;tempo_step=3.83;amp=30; freq=0.12*pi*2;pha=0.4*pi;rit=3.83;rit_inversione=0.37; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; end elseif Qa==20*2000 if Pmenu==1 gradino=4000/21000;Pa_equilibrio=Pa;tempo_step=3.92;amp=150; freq=0.1*pi*2;pha=-0.25*pi;rit=0;rit_inversione=1.72; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; elseif Pmenu==2 gradino=1000/21000; Pa_equilibrio=Pa;tempo_step=3.92;amp=150; freq=0.1*pi*2;pha=-0.25*pi;rit=0;rit_inversione=1.65; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; elseif Pmenu==3 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.925;amp=150; freq=0.1*pi*2;pha=1.3*pi;rit=0;rit_inversione=1.56; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; 175

gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.925;amp=150; freq=0.1*pi*2;pha=0.75*pi;rit=0;rit_inversione=1.56; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; end end Dati_per_simulink_linea2 %************************************** % File: dati_per_simulink_linea2.m * %**************************************

% Mediante questo file vengono creati i dati da inserire nel modello

% simulink, per i vari punti operativi definiti dai valori di portata e pressione.

if Qa==60*2000 if Pmenu==1

gradino=4000/21000;% Comando adimensionalizzato impartito alle valvole. Pa_equilibrio=Pa;% [KPa] valore della pressione d'equilibrio.

tempo_step=3.83;% [sec] Tempo al quale viene dato il comando a gradino. amp=100;% Ampiezza della portante.

freq=0.15*pi*2; % [rad/sec] frequenza della portante. pha=pi; % [rad] fase della portante.

rit=0;% [sec] ritardo della portante.

rit_inversione=0.155;% [sec] ritardo del comando dell'inversione. vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667];

% [sec] tempi in ingresso alla repeating sequence. vettore_press=[0 -120000 0 80000 0 0]; % [KPa] pressioni in ingresso alla repeating sequence. elseif Pmenu==2 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.83;amp=200; freq=0.07*pi*2; pha=pi*0.08;rit=0;rit_inversione=0.2; vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667]; vettore_press=[0 -120000 0 80000 0 0]; elseif Pmenu==3 Pa_equilibrio=Pa;gradino=1000/21000;tempo_step=3.83;amp=100; freq=0.09*pi*2;pha=1.6*pi;rit=3.83;rit_inversione=0.15; vettore_tempi=[0 0.03 0.06 0.08 0.1 0.6667]; vettore_press=[0 -120000 0 80000 0 0]; end elseif Qa==40*2000 if Pmenu==1 gradino=4000/21000;Pa_equilibrio=Pa;tempo_step=3.83;amp=100; freq=0.15*pi*2; pha=pi; rit=0;rit_inversione=0.155;

vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; elseif Pmenu==2 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.83;amp=200; freq=0.07*pi*2;pha=0.08*pi;rit=3.83;rit_inversione=0.3; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; elseif Pmenu==3 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.83;amp=200; freq=0.07*pi*2;pha=pi;rit=0;rit_inversione=0.27; vettore_tempi=[0 0.01 0.02 0.04 0.06 1]; vettore_press=[ 0 -80000 0 20000 0 0]; end elseif Qa==20*2000 if Pmenu==1 gradino=4000/21000; Pa_equilibrio=Pa;tempo_step=3.95;amp=100; freq=0.15*pi*2;pha=pi;rit=0;rit_inversione=0.155; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; elseif Pmenu==2 gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.925;amp=150; freq=0.1*pi*2;pha=0.2*pi;rit=3.925;rit_inversione=1.37; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; elseif Pmenu==3 176

Appendice B File Matlab® gradino=1000/21000;Pa_equilibrio=Pa;tempo_step=3.925;amp=200; freq=0.1*pi*2;pha=0.9*pi;rit=0;rit_inversione=1.3; vettore_tempi=[0 0.01 0.02 0.04 0.06 2]; vettore_press=[ 0 -40000 0 10000 0 0]; end end

Documenti correlati