APPENDICE 3
Dati in ingresso per i modelli Simulink
Si riportano di seguito i file di ingresso:
• I seguenti file servono per effettuare la simulazione del modello Simulink relativo al capitolo 3 (Distributore_a_tre_vie.mdl)
- Input_Valvola_regolatrice_di-pressione.m - Dati_Valvola_regolatrice_di-pressione.m - Kreq_look-up_table.m
• Input_mart_di_carico.m: costituisce il file di ingresso per effettuare la simulazione nel modello Simulink relativo al capitolo 5 (controllo_sul_carico.mdl)
Imput_Valvola_regolatrice_di_pressione.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Input Valvola regolatrice di pressione %
% %
% 20/10/2003 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo del Kreq=f(PAimpostata) in condizioni statiche %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% CALCOLO DELLA MAX APERTURA E DI l_o %%%%%%%%%%%%%%
% L'APERTURA DELL'ORIFIZO PRINCIPALE È COSTITUITA DALLA %
% SUPERFICIE LATERALE DI UN TRONCO DI CONO IL CUI VALORE %
% PUO' ESSERE ESPRESSO TRAMITE UNA FUNZIONE DI X (VALORE %
% DELL'APERTURA DELLO SPOOL) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
poli_lo = [pi*(sin(alfa)^2)*cos(alfa) - 2*(sin(alfa))*pi*R_spool
(QA_lo)*(sqrt(rho_ref/2))./(sqrt(DeltaP_regime_lo)*cd)];
% coefficienti del polinomio rappresentanti l'area in funzione di x
x_max = min(roots(poli_lo));
% [mm] valore massimo di apertura dello spool con la portata di riferimento
l_o = (DeltaP_regime_lo*Aspool/Kspool)-x_max;
% [mm] lunghezza a riposo della molla
%%%%%%%%%CALCOLO DELE CONDIZIONI INIZIALI (a regime)%%%%%%%%%%
K_flow = (QA)/((PB-PAimp).^0.5);
% [mm^3/sec/kPa^0.5] coefficiente di trafilamento
Aluce = ((K_flow*sqrt(rho_ref/2))/cd);
% [mm^2] area della luce di trafilamento B-A
coeff =[pi*(sin(alfa)^2)*cos(alfa) -2*(sin(alfa))*pi*R_spool Aluce];
%% Coefficienti del polinomio rappresentanti
%% l'area in funzione di x
x_ini =min(roots(coeff));
% [mm] spostamento dello spool principale (x=0 quando è a battuta contro la sede)
PW = ((Kspool*(x_ini+l_o))/Aspool)+PAimp;
% [kPa] pressione superficie superiore
% dello spool principale
PZ = PW;
% A regime ho QW=0
QC = K1*(sqrt(PB-PZ));
% [mm^3/sec] portata
QY = QC;
% [mm^3/sec] portata verso lo scarico
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
Aref = QA/(cd*sqrt(2/rho_ref)*sqrt(Delta_P_ref));
% [mm^2] Area di riferimento della
%strozzatura della DDV
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% GRAFICI %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%plot(Kreq,PAimp)
%title('Kreq')
%grid on
%figure
%plot(x,PAimp)
%title('x [mm]')
%grid on
%figure
%plot(QY*60/1000000,PAimp)
%title('QY [l/min]')
%grid on
%figure
%plot(PAimp,K_flow)
%title('K_flow')
%grid on
Dati_Valvola_regolatrice_di_pressione.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Dati Valvola regolatrice di pressione %
% %
% 20/10/2003 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Portata =MENU('Valore della portata[l/min]','2.4','4.5','6.8');
if Portata == 1
QA = 2.4*10^6/60;
elseif Portata == 2 QA = 4.5*10^6/60;
else
QA = 6.8*10^6/60;
end
% [mm^3/sec] portata verso l'utilizzatore % (l'attuatore richiede dai 2.4 ai 6.8 l/min)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if QA == 2.4*10^6/60;
vel_1=1;
vel_2=0;
vel_3=0;
elseif QA == 4.5*10^6/60;
vel_1=0;
vel_2=1;
vel_3=0;
elseif QA == 6.8*10^6/60;
vel_1=0;
vel_2=0;
vel_3=1;
end
% Si riproduce l'andamento della curva
% (rappresenttata nel catalogo della Denison)
% che lega il salto di pressione tra ingresso e uscita
% alla portata che attraversa la valvola.
QA_ = [0 25 50 75 100 125 150 200 250 300]*10^6/60;
DeltaP_ = [3 3.1 3.3 3.65 4.2 5 6 9 15 21]*100;
QA_spline = 0:1:300*10^6/60;
delta = interp1(QA_,DeltaP_,QA,'spline');
% Interpolazione effettuata tramite una spline cubica
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alfa = 25/57.3;
% [rad] valore dell'angolo della parte conica dello spool
gamma = 7.80;
% [Kg/dm^3] peso specifico dell'acciaio
d_spool = 32;
% [mm] diametro dello spool principale
R_spool = d_spool/2;
% [mm] Raggio dello spool,
Aspool = pi*((d_spool/2)^2);
% [mm^2] area delle superfici di base dello spool principale
L_spool = d_spool*1.5;
% [mm] altezza dello spool (con il rapporto 1.5 ricavato
% dal disegno)
fi_int = 12;
% [mm] diametro interno dello spool
fi_ext = 25;
% [mm] diametro esterno dello spool
Volume = (pi/4)*(fi_ext^2-fi_int^2)*L_spool;
% [mm^3]
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
Kspool = 100000;
% [kg/sec^2] rigidezza della molla dello spool
QA_lo = 80*10^6/60;
% [l/min] Portata di riferimento per il calcolo di lo
DeltaP_regime_lo = interp1(QA_,DeltaP_,QA_lo,'spline');
% valore di PB-PA per il calcolo di lo relativo
% alla portata di riferimento
% (valore ricavato dalla curva del manuale
% relativo a QA=1 l/min)
QW = 0;
% [mm^3/sec] portata verso il main spool
% in condizioni stazionarie
PB = 21001;
% [kPa] Pressione fornita dalla pompa
% (ipotizzata costante)
PY = 100;
% [kPa] Pressione di scarico
rho_0 = 8.7556e-7;
% [kg/mm^3] densita' del fluido
cd = 0.611;
% coefficiente di trafilamento (adimensionale)
Aore2 = 0.25*pi*(d_spool/20)^2;
% [mm^2] area dell'orifizio a monte dello spool
% (con il rapporto 1/20 ricavato dal disegno)
K2 = cd*Aore2*sqrt(2/rho_0);
% coefficiente di trafilamento dell'orifizio
% a monte dello spool
K1 = K2*0.5;
% coefficiente di trafilamento dell'orifizio
% a monte dello spillo di regolazione
% il coefficiente 0.5 tiene conto della presenza
% di una serie di trafilamenti a monte dell'orifizio
A_rv = 1.315^2*pi;
% area dell'orifizio di sfogo
KAW = cd*A_rv*sqrt(2/rho_0);
% coefficiente di trafilamento
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
zita_spool = 0.5 ;
Cspool = 2*zita_spool*(Kspool*mspool)^0.5 ; % Coefficiente di smorzamento della dinamica
% dello spool [kg/sec]
E =207e6;
% [GPa] modulo di elasticità del materiale
%dello spool
K_eq =E*Aspool/(L_spool*5);
% Rigidezza della molla equivalente
% rappresentante la sede dello spool
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONDIZIONE INIZIALE PER IL Delta_P_ref %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Pmenu = menu('pressione di
partenza','13000','14000','15000','16000','17000','18000','19000 ','20000','21000');
if Pmenu==1
P_ref = 13000;
elseif Pmenu==2 P_ref = 14000;
elseif Pmenu==3 P_ref = 15000;
elseif Pmenu==4 P_ref = 16000;
elseif Pmenu==5 P_ref = 17000;
elseif Pmenu==6 P_ref = 18000;
elseif Pmenu==7 P_ref = 19000;
elseif Pmenu==8 P_ref = 20000;
elseif Pmenu==9 P_ref = 21000;
% [kPa] pressione di partenza end
P_scarico = PY;
% [kPa] pressione di scarico dell'utilizzatore
PAimp = P_ref;
% [kPa] Pressione impostata iniziale
PA_max = PB-DeltaP;
% [kPa] pressione massima ottenibile in uscita
% dalla valvola al variare di QA
% controllo che impedisce alla P comandata
% di oltrepassare il valore massimo
if PAimp<=PA_max
PAimp=PAimp;
else
PAimp=PA_max;
end
Delta_P_ref = PAimp-P_scarico;
% valore della differenza di pressione
% tra ingresso e scarico nella DDV
% utilizzato per il calcolo dell'area di
% trafilamento in condizioni iniziali
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CARATTERISTICHE DELLA TUBAZIONE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Beta_g = 1.4*P_ref;
% [kPa] rigidezza dell'aria intrappolata nel gas
Beta_h = 1.5*10^6;
% [kPa] rigidezza dell'olio
Beta_tg = 0.324*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)
Beta_ea = 1/((1/Beta_ta)+(1/Beta_h)+(0.01/Beta_g));
% Rigidezza effettiva dell'olio
% (considerando l'aria e la deformabilità del tubo) % nel caso si utilizzi un tubo d'acciaio
% (con rapporto spessore/diametro interno = 1/3.8)
Tipo_tubo = MENU('Tipo di tubo','Gomma','Acciaio');
if Tipo_tubo == 1 Beta_e = Beta_eg;
else
Beta_e = Beta_ea;
end
rho_ref = rho_0;
% [kg/mm^3] densità effettiva dell'olio considerando
% trascurabili gli effetti della comprimibilità
% e della temperatura
Diametro_tubo = 19.1;
% [mm] diametro interno del tubo di collegamento
% tra valvola e DDV
mu = 30.3*10^(-6);
% Viscosità di riferimento per il fluido
%[kPa*s]
ni_0 = 35;
% [mm^2/sec] viscosità cinematica di riferimento
% per il fluido
RE = 4*QA/(pi*ni_0*Diametro_tubo);
% Numero di Reynolds in condizioni iniziali
% Si considera che il valore minimo attendibile di f sia
% quello relativo ad un numero di Reynolds pari a 100
Remin =100;
if RE<100;
RE=REmin;
end
f =64/RE;
% friction factor relativo al moto laminare
% Non si prende in considerazione la possibilità
% di moto turbolento in quanto
% le portate da noi utilizzate sono basse
Lunghezza_tubo = 4500;
% [mm]
Area_sez_tubo = (Diametro_tubo^2)*pi/4;
% [mm^2]
Volume_tubo = Area_sez_tubo*Lunghezza_tubo;
% [mm^3]
delta_p_iniz = (PAimp-
((QA/Area_sez_tubo)^2)*(f*Lunghezza_tubo*rho_ref/(2*Diametro_tub o)))-100;
% condizione iniziale per la FDT relativa
% al moto dello spool della DDV
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Perdite dovute alla curvatura del raccordo%
Diametro_raccordo = 16;
Area_raccordo = (Diametro_raccordo^2)*pi/4;
K_curvatura = 0.18;
% valore ricavato dal grafico di pag 48 del merritt A_1 = (22^2)*pi/4;
% Area riferita alla prima restrizione da 26 mm a 22 mm A_2 = (16^2)*pi/4;
% Area riferita alla seconda restrizione da 22 mm a 16 mm
Area_restrizione_eq = (1/A_1)^2+(1/A_2)^2;
K_restrizione = 0.5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo dei valori di f (friction factor) al variare del %
% numero di Reynolds da utilizzare nella look up table %
% all'interno del modello %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Vettore_Re1 = [];
for re_vett1 = 1:1:2000;
Vettore_Re1 = [Vettore_Re1 re_vett1];
end
Vettore_f1 = 64./Vettore_Re1;
Vettore_Re2 = [2000 4000];
Vettore_f2 = [64./Vettore_Re2(1)
0.3164./(Vettore_Re2(2).^0.25)] ;
Vettore_Re3 = [];
for re_vett3 = 4000:100:1000000;
Vettore_Re3 = [Vettore_Re3 re_vett3];
end
Vettore_f3 = 0.3164./(Vettore_Re3.^0.25);
Vettore_Reynolds = [Vettore_Re1 Vettore_Re2 Vettore_Re3];
Vettore_f = [Vettore_f1 Vettore_f2 Vettore_f3];
loglog(Vettore_Reynolds,Vettore_f) grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo dei valori di cd al variare del numero di Reynolds %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cd_turbolento = 0.611;
delta = 0.2;
RE_transizione = (cd_turbolento/delta)^2;
CD =[];
RE_CD =[];
for RE_cd = 0:1:100;
if RE_cd<RE_transizione;
cd = delta*sqrt(RE_cd);
else
cd = 0.611;
end
CD =[CD cd];
RE_CD =[RE_CD RE_cd];
end
figure axis auto
plot(RE_CD.^0.5,CD,'r'), grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CARATTERISTICHE ACCUMULATORE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 1.3;
% Esponente della politropica che caratterizza
% la trasformazione del gas
P_G0 = 140*100;
% Pressione di precarica del gas (posta uguale alla
% pressione di taglio, minima pressione operativa) [kPa]
V_G0 = 2.5*10^6;
% Volume di precarica del gas [mm^3]
C_G0 = P_G0*(V_G0^N);
%Costante della politropica [kPa*mm^3]
if PAimp>=14000
Vin_acc = (C_G0/PAimp)^(1/N);
% volume iniziale del gas nell'accumulatore else
Vin_acc = (C_G0/14000)^(1/N);
end
Dstr = 6 ;
% Diametro interno della sezione di strozzatura [mm]
% (metà del diametro della filettatura)
A_str = 0.25*pi*(Dstr^2)*6 ;
% Area della sezione anulare di strozzatura [mm^2]
D_0 = Dstr;
% Diametro idraulico della sezione di strozzatura [mm]
de_lam = 0.2 ;
% Coefficiente di flusso laminare
Kreq_look-up_table.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo dei valori di K_req da inserire %
% nella look-up table %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo del Kreq=f(PAimpostata) in condizioni statiche %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Kreq_k =[];
QA_kriga =[];
for QA_k = 0:1000:QA+2000;
% [l/min]*1000000/60 [mm^3/sec] portata versol'utilizzatore
QA_kriga =[QA_kriga QA_k];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLA MAX APERTURA E DI l_o %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
poli_lo = [pi*(sin(alfa)^2)*cos(alfa) - 2*(sin(alfa))*pi*R_spool
(QA_lo)*(sqrt(rho_ref/2))./(sqrt(DeltaP_regime_lo)*cd)];
x_max = min(roots(poli_lo));
l_o = (DeltaP_regime_lo*Aspool/Kspool)-x_max;
% [mm] lunghezza a riposo della molla
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DEL K DI REGOLAZIONE DELL'ELETTROVALVOLA %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DATI =[];
PA_k1 = 1000:100:P_ref;
PA_k2 = P_ref+1000:1000:20700;
PA_k_ = [PA_k1 PA_k2];
for PA_k =PA_k_;
% [kPa] Vettore della pressione impostata
K_flow_k = (QA_k)./((PB-PA_k).^0.5);
% [mm^3/sec/kPa^0.5]
Aluce_k = ((K_flow_k*sqrt(rho_ref/2))/cd);
% [mm^2] area della luce B-A
coeff =[pi*(sin(alfa)^2)*cos(alfa) -2*(sin(alfa))*pi*R_spool Aluce_k];
x_k =min(roots(coeff));
% [mm] spostamento dello spool principale % (x=0 quando è a battuta contro la sede)
PW_k = ((Kspool*(x_k+l_o))/Aspool)+PA_k;
% [kPa] pressione superficie superiore
% dello spool principale
PZ_k = PW_k;
% A regime ho QW=0
QC_k = K1*(sqrt(PB-PZ_k));
% [mm^3/sec] portata
QY_k = QC_k;
% [mm^3/sec] portata
Kreq_ = QY_k./sqrt(PZ_k-PY);
% [mm^3/sec/kPa^0.5]
DATI = [DATI Kreq_];
end
Kreq_k = [Kreq_k pippo];
end
%PA_k = 1000:20700/(207*10):20700;
% valore utilizzato con vettore di QA_k fino a 10 l/min
PA_k = PA_k_;
Input_mart_di_carico.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONTROLLORE MARTINETTO DI CARICO %
% %
% data 20/10/03 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all close all clc
format short e
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI DEL MARTINETTO DI COMANDO DELL'ALETTONE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A_ail = 2000; %[mm^2]
% area pistone alettone
corsa_ail = 32; % [mm]
V_ail = corsa_ail*A_ail; % [mm^3]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI DEL MARTINETTO DI CARICO %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mpist = 50; % [kg] 5 % massa del pistone
Apist = 60000/(210e5-1e5)*10^6; % [mm^2]
% area premente del pistone % CARICO DI STALLO = 60000 N % pressione operativa = 210 bar
corsa = 200; % [mm]
% corsa del pistone
% CORSA AIRBRAKE = 200 mm. Durante la prova del martinetto % dell'aerofreno il Martinetto di carico è in linea
V0 = Apist*corsa; % [mm^3]
% Volume iniziale delle due camere
vel_att = 60; % [mm/sec]
% massima velocità dell'attuatore velivolo
P0 = 210*100; %[KPa]
% pressione massima di mandata
Ps = 1*100; %[KPa]
% pressione di scarico
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI DELLA SERVOVALVOLA da CATALOGO: %
% Star Hydraulics modello 890-0013 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I_max = 200; % [mA]
% massima corrente di alimentazione della valvola
Q_N = 95*10^6/60;
% Portata relativa alle condizioni nominali % di funzionamento [mm^3/sec]
P0_N = 250*100;
% pressione di mandata in condizioni nominali % di funzionamento [KPa]
Delta_P_N = 180*100;
% salto di pressione tra luce di uscita della servovalvola % in condizioni nominali di funzionamento, la prestazione è % fornita in presenza di salti di 35 bar per luce di
% trafilamento, alla max apertura [KPa]
Kq = Q_N/(I_max*(1-Delta_P_N/P0_N)^0.5);
% Flow Gain [mm^3/sec*mA]
Kc = 0.01*I_max*Kq/(0.6*P0_N);
% Flow Pressure Coefficient [mm^3/sec/KPa]
% All'1% della corrente max, in condizioni statiche
% il salto di pressione tra le luci di uscita della % servovalvola è pari al 60% della pressione di mandata
zita_sv = 0.7;
% smorzamento della servovalvola
% Usato solo nel caso che la risposta della SV sia % del 2° ordine
omega_sv = 25*2*pi; % [rad/sec]
% Polo della FdT della servovalvola
% ricavato dalla risposta in frequenza della SV
% riportata sul CATALOGO con riferimento al grafico % relativo a 100% del segnale di input
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI RELATIVI AL FLUIDO IDRAULICO %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Beta = 900000; % [KPa]
% rigidezza olio
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI CELLA DI CARICO da CATALOGO : %
% Sensotec modello 41-0571-04range = 15000 lb %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c_smor = 10^5; %[Kg/sec]
% smorzamento introdotto per togliere parte degli errori numerici
% presenti durante la simulazione, ricordando che si sono trascurati
% i vari trafilamenti nella camera dell'attuatore.
Klc = 15000*0.453*9.8/(0.003*0.0254); % [Kg/sec^2]
% Rigidezza della cella calcolata utilizzando il dato % max deflection = 0.003 in riportato nel catalogo % con un carico di 15000 lb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI DELLA FdT DELL'ATTUATORE DI COMANDO DELL'ALETTONE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LO SPOSTAMENBTO DELL'ATTUATORE X1 DIPENDE SIA DALLO
% SPOSTAMENTO COMANDATO CHE DALLA FORZA DI CONTRASTO.
% X1= fdt_X1i*X1i+fdt_f*f
% poli della fdt_X1i e della fdt_f
p_av = 40;
omega_p = 300; %[rad/sec]
zita_p = 0.4;
% zeri della fdt_X1i
omega_p_num = 350; %[rad/sec]
zita_p_num = 0.2;
% zero e quadagno della fdt_f
zeta_av = 2*Beta*Kc/V_ail;
Kav_asterisco = 4*Beta*A_ail^2/V_ail;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI della FdT del sistema che riproduce la rigidezza %
% della struttura del banco %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
K_star = Klc*10; % [Kg/sec^2]
% rigidezza della parte del banco, considerata un'ordine di % grandezza superiore rispetto a quella della cella di
carico
omega_star = 350; % [rad/sec]
zita_star = 0.15;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DATI della FdT realtiva alla servovalvola: i_i/i %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% G_sv = iI/i
Num_G_sv = [omega_sv^2];
Den_G_sv = [1 2*omega_sv*zita_sv omega_sv^2];
G_sv = tf(Num_G_sv,Den_G_sv);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLE FdT DEL SISTEMA CHE RIPRODUCE %
% L'ELASTICITa' DELLA STRUTTURA DEL BANCO: G_A*, G_B* %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Funzione di trasferimento X1_star/X2 che tiene conto della rigidezza del
% banco nel caso di X1=0
Num_GA_star = [ Klc*omega_star^2/(K_star+Klc)];
% Numeratore della FdT X1_star/X2
Den_GA_star = [1 2*zita_star*omega_star omega_star^2];
% Denominatore della FdT X1_star/X2
GA_star = tf(Num_GA_star,Den_GA_star);
% Funzione di trasferimento X1_star/X2
Num_GB_star = [ 2*zita_star*omega_star K_star*omega_star^2/(K_star+Klc)];
% Numeratore della FdT X1_star/X1
Den_GB_star = Den_GA_star;
% Denominatore della FdT X1_star/X1
GB_star = tf(Num_GB_star,Den_GB_star);
% Funzione di trasferimento X1_star/X1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLE FdT DEL SISTEMA %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Martinetto di carico nello spazio di stato:
%
% x_p = A*x+B*u
% y = C*x+D*u
A = [ -c_smor/mpist 0 2*Apist/mpist 1 0 0
-Apist*Beta/V0 0 -2*Kc*Beta/V0];
B = [ 1/mpist 0 0 0
0 Kq*Beta/V0];
C = [0 1 0];
D = [0 0];
%%%%%%%%%%%%%%%%%%
% FdT G2 = x2/f' %
%%%%%%%%%%%%%%%%%%
disp ('G2 = x2/f_primo')
[Zx2_f_p,Px2_f_p,Kx2_f_p] = SS2ZP(A,B,C,D,1);
% Zeri poli e guadagno della FdT
[Nx2_f_p,Dx2_f_p] = zp2tf(Zx2_f_p,Px2_f_p,Kx2_f_p);
% Coefficienti del numeratore e del denominatore della FdT
G_x2_f_p = tf(Nx2_f_p,Dx2_f_p) % Funzione di Trasferimento
%%%%%%%%%%%%%%%%%
% FdT G1 = x2/i %
%%%%%%%%%%%%%%%%%
disp ('G1 = x2/i')
[Zx2_i,Px2_i,Kx2_i] = SS2ZP(A,B,C,D,2);
% Zeri poli e guadagno della FdT
[Nx2_i,Dx2_i] = zp2tf(Zx2_i,Px2_i,Kx2_i);
% Coefficienti del numeratore e del denominatore della FdT
G_x2_i = tf(Nx2_i,Dx2_i) % Funzione di Trasferimento
%%%%%%%%%%%%%%%%%
% FdT G3 = f'/i %
%%%%%%%%%%%%%%%%%
disp ('G3 = f_primo/i')
G_fp_i = -(Klc*G_x2_i)/(Klc*G_x2_f_p+1) % Funzione di Trasferimento
[numG_fp_i,denG_fp_i] = tfdata(G_fp_i,'v');
% Coefficienti del numeratore e del denominatore della FdT
[Zf_i,Pf_i,Kf_i] = tf2zp(numG_fp_i,denG_fp_i) % Zeri poli e guadagno della FdT
%%%%%%%%%%%%%%%%%%
% FdT G4 = f'/x1 %
%%%%%%%%%%%%%%%%%%
disp ('G4 = f_primo/x1')
G_fp_x1 = Klc/(Klc*G_x2_f_p+1) % Funzione di Trasferimento
[numG_fp_x1,denG_fp_x1] = tfdata(G_fp_x1,'v');
% Coefficienti del numeratore e del denominatore della FdT
[Zf_x1,Pf_x1,Kf_x1] = tf2zp(numG_fp_x1,denG_fp_x1) % Zeri poli e guadagno della FdT
%%%%%%%%%%%%%%%%%%%%%%
% FdT G3_star = f'/i %
%%%%%%%%%%%%%%%%%%%%%%
disp ('G3_star = f_primo/i')
G3_star = (Klc*G_x2_i*(GA_star-1))/(1+Klc*G_x2_f_p*(1- GA_star))
% Funzione di Trasferimento
[numG3_star,denG3_star] = tfdata(G3_star,'v');
% Coefficienti del numeratore e del denominatore della FdT
[ZG3_star,PG3_star,KG3_star] = tf2zp(numG3_star,denG3_star) % Zeri poli e guadagno della FdT
%%%%%%%%%%%%%%%%%%%%%%%
% FdT G4_star = f'/x1 %
%%%%%%%%%%%%%%%%%%%%%%%
disp ('G4_star = f_primo/x1')
G4_star = (Klc*GB_star)/(1+Klc*G_x2_f_p*(1-GA_star)) % Funzione di Trasferimento
[numG4_star,denG4_star] = tfdata(G4_star,'v');
% Coefficienti del numeratore e del denominatore della FdT
[ZG4_star,PG4_star,KG4_star] = tf2zp(numG4_star,denG4_star);
% Zeri poli e guadagno della FdT
[ZG4_star,PG4_star,KG4_star] =
approxZP(ZG4_star,PG4_star,KG4_star,0.001)
% Zeri poli e guadagno della FdT dopo la cancellazione zeri- poli
%%%%%%%%%%%%%%%%%
% FdT G = f/i_i %
%%%%%%%%%%%%%%%%%
disp ('G = f/i_i')
G = -G_sv*G3_star;
% Funzione di Trasferimento
[numG,denG] = tfdata(G,'v');
% Coefficienti del numeratore e del denominatore della FdT
[ZG,PG,KG] = tf2zp(numG,denG) % Zeri poli e guadagno della FdT
[ZG,PG,KG] = approxZP(ZG,PG,KG,0.0001)
% Zeri poli e guadagno della FdT dopo la cancellazione zeri- poli
[numG_,denG_] = zp2tf(ZG,PG,KG);
% Coefficienti del numeratore e del denominatore della FdT % dopo la cancellazione zeri-poli
G = tf(numG_,denG_) % Funzione di Trasferimento
% dopo la cancellazione zeri-poli
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLA FUNZIONE DI TRASFERIMENTO %
% DEI TRE TIPI DI CONTROLLORE ANALIZZATI %
% E DELLA FdT DI CICLO CHIUSO DEL SISTEMA %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONTROLLORE PROPORZIONALE
disp('PROPORZIONALE')
K_P = 7e-7;
% Guadagno del controllore P
GP = G*K_P/(1+K_P*G) % Funzione di Trasferimento di % ciclo chiuso del sistema
[numGP,denGP] = tfdata(GP,'v');
% Coefficienti del numeratore e del denominatore della FdT
[ZGP,PGP,KGP] = tf2zp(numGP,denGP) % Zeri poli e guadagno della FdT
[ZGP,PGP,KGP] = approxZP(ZGP,PGP,KGP,0.001);
% Zeri poli e guadagno della FdT dopo la cancellazione zeri- poli
KGP
damp(ZGP)
damp(PGP)
% CONTROLLORE PROPORZIONALE INTEGRALE
disp('PROPORZIONALE INTEGRALE')
num_K_PI = [0.25*2.5e-6 2.5e-6];
% Numeratore della FdT del controllore PI
den_K_PI = [1 0];
% Denominatore della FdT del controllore PI
K_PI = tf(num_K_PI,den_K_PI)
% Funzione di trasferimento del controllore PI
GPI = G*K_PI/(1+K_PI*G) % Funzione di Trasferimento di % ciclo chiuso del sistema
[numGPI,denGPI] = tfdata(GPI,'v');
% Coefficienti del numeratore e del denominatore % della FdT di ciclo chiuso del sistema
[ZGPI,PGPI,KGPI] = tf2zp(numGPI,denGPI);
% Zeri Poli e Guadagno della FdT di % ciclo chiuso del sistema
[ZGPI,PGPI,KGPI] = approxZP(ZGPI,PGPI,KGPI,0.001);
% Zeri Poli e Guadagno della FdT di % ciclo chiuso del sistema
% dopo la cancellazione zeri-poli
damp(ZGPI)
damp(PGPI)
% CONTROLLORE PROPORZIONALE INTEGRALE DERIVATIVO
disp('PROPORZIONALE INTEGRALE DERIVATIVO')
KI = 3.25e-6;
% Guadagno della parte Integrale del controllore
KP = (0.25+0.025)*KI;
% Guadagno della parte Proporzionale del controllore
KD = 0.25*0.025*KI;
% Guadagno della parte Derivativa del controllore
num_K_PID = [KD/KI KP/KI 1]*KI;
% Numeratore della FdT del controllore PID
den_K_PID = [1 0];
% Denominatore della FdT del controllore PID
K_PID = tf(num_K_PID,den_K_PID) % Funzione di trasferimento del controllore PID
GPID = G*K_PID/(1+K_PID*G) % Funzione di Trasferimento di
% ciclo chiuso del sistema
[numGPID,denGPID] = tfdata(GPID,'v');
% Coefficienti del numeratore e del denominatore % della FdT di ciclo chiuso del sistema
[ZGPID,PGPID,KGPID] = tf2zp(numGPID,denGPID);
% Zeri Poli e Guadagno della FdT di % ciclo chiuso del sistema
[ZGPID,PGPID,KGPID] = approxZP(ZGPID,PGPID,KGPID,0.001);
% Zeri Poli e Guadagno della FdT di % ciclo chiuso del sistema
% dopo la cancellazione zeri-poli
KGPID
damp(ZGPID)
damp(PGPID)
%%%%%%%%%%%%%%
% FdT G_BETA %
%%%%%%%%%%%%%%
disp ('G_BETA = f/x1')
G_BETA = (-G4_star)/(1+K_P*G);
% Funzione di Trasferimento
[numG_BETA,denG_BETA] = tfdata(G_BETA,'v');
% Coefficienti del numeratore e del denominatore della FdT
[ZG_BETA,PG_BETA,KG_BETA] = tf2zp(numG_BETA,denG_BETA);
% Zeri poli e guadagno della FdT
[ZG_BETA,PG_BETA,KG_BETA] = approxZP(ZG_BETA,PG_BETA,KG_BETA,0.001);
% Zeri poli e guadagno della FdT dopo la cancellazione zeri- poli
KG_BETA
damp(ZG_BETA)
damp(PG_BETA)
[numG_BETA,denG_BETA] = zp2tf(ZG_BETA,PG_BETA,KG_BETA);
% Coefficienti del numeratore e del denominatore % della FdT dopo la cancellazione zeri-poli
G_BETA = tf(numG_BETA,denG_BETA) % Funzione di Trasferimento
% dopo la cancellazione zeri-poli