261
A. Appendice
1. Appendice al capitolo 5
Qui di seguito vengono riportati esempi di programmi in linguaggio Matlab usati per la riduzione
dei dati delle prestazioni non cavitanti e cavitanti dell’induttore DAPROT3. Il primo rappresenta
le prestazioni non cavitanti a 1500 rpm:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% % % % Daprot 3 performance 1500 % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% clear all close all clc
% definizione di cartella principale main_folder=pwd; % nome pompa nome='Daprot3'; % dati geometria r_2=0.081; % in [m]
% area frontale di passaggio dell'acqua Area=pi*(r_2)^2; % in [m^2]
% velocità angolare della pompa Om=1500; % in rpm
% velocità angolare della pompa in rad/s Omega=Om*2*pi/60; % in [rad/s]
% numero di scan rate
262
% durata della prova t=2; % in [s]
% samples per prova Samples=num*t;
% Caricamento dei dati di pressione e di portata del flusso (esegui un % controllo delle
% funzioni di matlab)
% prendo il file offset presente nella cartella offset 1500
dati=load('C:\\Users\\andrea\\Documents\\tesi\\Sperimentazione\\Daprot3\\NC\\FREDDE\\NC_1500\\D APROT3_1500_COLD_prova_offset.txt');
P_ingresso=[]; % pressione in ingresso (1)
P_ingresso_off=[]; % pressione in ingresso offset(1)
dP_1bar=[]; % differenziale tra il diffusore della voluta mediato e lo scarico della voluta (2)
dP_1bar_off=[]; % differenziale tra il diffusore della voluta mediato e lo scarico della voluta all'offset(2) dP_7bar=[]; % differenziale tra l'ingresso e il diffusore della voluta mediato (3)
dP_7bar_off=[]; % differenziale tra l'ingresso e il diffusore della voluta mediato all'offset (3) P_in_Recesso=[]; % pressione in ingresso RECESSO (4)
P_in_Recesso_off=[]; % pressione in ingresso RECESSO offset (4)
dP_5bar=[]; % differenziale tra l'ingresso e l'uscita della camera di prova (27)
dP_5bar_off=[]; % differenziale tra l'ingresso e l'uscita della camera di prova all'offset(27) P_diffusore=[]; % pressione media sul diffusore della voluta (28)
P_diffusore_off=[]; % pressione media sul diffusore della voluta all'offset(28)
% VALORI MEDI OFFSET
% media offset canale (1)
P_ingresso_off=dati(:,1);
media1_off=mean(P_ingresso_off);
% media offset canale (2)
dP_1bar_off=dati(:,2);
media2_off=mean(dP_1bar_off);
% media offset canale (3)
dP_7bar_off=dati(:,3);
media3_off=mean(dP_7bar_off);
% media offset canale (4)
P_in_Recesso_off=dati(:,4);
263
% media offset canale (27)
% dP_5bar_off=dati(:,27);
% media27_off=mean(dP_5bar_off); %
% media offset canale (28)
% P_diffusore_off=dati(:,28);
% media28_off=mean(P_diffusore_off);
% Valori medi di pressione Pressione=[]; for i=1:9; dati_i=load(sprintf('C:\\Users\\andrea\\Documents\\tesi\\Sperimentazione\\Daprot3\\NC\\FREDDE\\NC_ 1500\\DAPROT3_1500_COLD_prova_0%i.txt',i)); % medie P_ingresso=dati_i(:,1); media_ingresso_i=mean(P_ingresso); dP_1bar=dati_i(:,2); media_differenziale_1bar_i=mean(dP_1bar); dP_7bar=dati_i(:,3); media_differenziale_7bar_i=mean(dP_7bar); P_in_Recesso=dati_i(:,4); media_in_Recesso_i=mean(P_in_Recesso); % dP_5bar=dati_i(:,27); % media_differenziale_5bar_i=mean(dP_5bar); % P_diffusore=dati_i(:,28); % media_P_diffusore_i=mean(P_diffusore);
%costruzione matrice di pressione Pressione(i,1)=media_ingresso_i; Pressione(i,2)=media_differenziale_1bar_i; Pressione(i,3)=media_differenziale_7bar_i; Pressione(i,4)=media_in_Recesso_i; % Pressione(i,5)=media_differenziale_5bar_i; % Pressione(i,6)=media_P_diffusore_i; end for i=10:1:44; dati_i=load(sprintf('C:\\Users\\andrea\\Documents\\tesi\\Sperimentazione\\Daprot3\\NC\\FREDDE\\NC_ 1500\\DAPROT3_1500_COLD_prova_%i.txt',i)); % medie P_ingresso=dati_i(:,1); media_ingresso_i=mean(P_ingresso); dP_1bar=dati_i(:,2); media_differenziale_1bar_i=mean(dP_1bar);
264
dP_7bar=dati_i(:,3); media_differenziale_7bar_i=mean(dP_7bar); P_in_Recesso=dati_i(:,4); media_in_Recesso_i=mean(P_in_Recesso); % dP_5bar=dati_i(:,27); % media_differenziale_5bar_i=mean(dP_5bar); % P_diffusore=dati_i(:,28); % media_P_diffusore_i=mean(P_diffusore);%costruzione matrice di pressione Pressione(i,1)=media_ingresso_i; Pressione(i,2)=media_differenziale_1bar_i; Pressione(i,3)=media_differenziale_7bar_i; Pressione(i,4)=media_in_Recesso_i; % Pressione(i,5)=media_differenziale_5bar_i; % Pressione(i,6)=media_P_diffusore_i; end
% MATRICE DELLE PRESSIONI COSTRUITA
% Caricamento delle condizioni
condizioni=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\NC\FREDDE\NC_1500.txt');
% Calcolo dei coefficienti di flusso per ciascuna prova phi= % (Q/(A*Omega*r)) phi=[]; for i=1:44 phi(i,1)=condizioni(i,1)*(10^(-3))/(pi*Omega*(r_2^3)); end T_1=[];
% Temperatura media della prova for i=1:44
T_1(i,1)=condizioni(i,2); end;
% Temperatura dell'acqua nel SI T=T_1+273.15 ; % in K
% Ritorno ad operare nella cartella madre cd (main_folder);
% Densità dell'acqua alla temperatura media della prova rho=waterdensity(T_1); % in kg/m^3
% Pressione di vapore dell'acqua alla temperatura media della prova p_v=watervapourpressure(T_1) ; % in Pascal
265
% calcolo della prevalenza TOTALE (POMPA+DIFFUSORE) psi=[]; for i=1:44 psi(i,1)=(Pressione(i,2)*10^(5))/((rho(i)*(Omega*r_2)^2)); end
% calcolo della prevalenza della pompa psi_7bar=[]; for i=1:44 psi_7bar(i,1)=(Pressione(i,3)*10^(5))/((rho(i)*(Omega*r_2)^2)); end
% Plottaggio dati psi phi figure ('Name','\psi-\phi')
plot(phi,psi,'<k','MarkerFaceColor','b','MarkerSize',6) hold on
plot(phi,psi_7bar,'ok','MarkerFaceColor','g','MarkerSize',6) title('Daprot3 Prove NON cavitanti')
xlabel('\phi') ylabel('\Psi')
legend('\omega = 1500 rpm , \Deltap 1 bar','\omega = 1500 rpm , \Deltap 7 bar') grid on box on axis([0 0.1 0 0.3]) filesave='C:\Users\andrea\Documents\tesi\Sperimentazione\Vampire prestazioni\Daprot3_prove_NC\prestazioni_1500_1_mm.mat'; save(filesave,'phi','psi','psi_7bar');
a seguire vengono mostrati i programmi utilizzati per le prestazioni cavitanti nelle prove
continue:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%
%
% DAPROT3 cavitanti 2500 rpm Fredde PORTATA 28.41 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% close all clear all clc main_folder=pwd;
266
% nome pompa nome='DAPROT3'; % velocità angolare in rpm Om=2500;% velocità angolare in rad/s Omega=Om*2*pi/60; % raggio di riferimento r_2=0.081; % in [m] % Area di passaggio Area=pi*r_2^2; % in [m^2]
% numero di samples al secondo num=1000; % [1/s]
% durata della prova in secondi t=240; % [s]
% numero totale di campioni N=num*t;
% Battente Idrostatico Batt_idro=0.06; % in [bar]
% creazione della matrice di pressione
P_ingresso=[]; % pressione in ingresso (1)
P_ingresso_off=[]; % pressione in ingresso offset(1)
Pressione=[]; % differenziale tra l'ingresso e l'uscita della camera di prova (27)
dP_5bar_off=[]; % differenziale tra l'ingresso e l'uscita della camera di prova all'offset(27)
OFF=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\Cavitating\FREDDE\CAV_2500_co ntinue_COLD\DAPROT3_2500_CAV_COLD_Q_28_41_offset.txt');
dP_5bar_off=mean(OFF(:,2)); % valore medio della pressione all'offset
P_ingresso_off=mean(OFF(:,1)); % valore medio di pressione in ingresso all'offset
Prova=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\Cavitating\FREDDE\CAV_2500_c ontinue_COLD\DAPROT3_2500_CAV_COLD_Q_28_41_continua.txt');
Pressione=Prova(:,2);
P_ingresso=Prova(:,1)-Batt_idro;
% caricamento delle condizioni della prova
condizioni=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\Cavitating\FREDDE\CAV_25 00_continue_COLD\Condizioni_prove.txt');
% Phi è definito come Q/(Omega*r_2^3)
% i valori del flussimetro per controllare se ci sono fluttuazioni nella % portata sono alla colonna 25 del file di prova
267
Q=[]; % la portata letta dal flussimetro Q=Prova(:,25);
% correzione della portata che dipende dal valore letto sul flussimetro Portata=[]; % in [l/s] for i=1:240000 Portata(i,1)=condizioni(1,4)*(Q(i)-2)/8; end; phi_misurato=[]; for i=1:240000 phi_misurato(i)=Portata(i)/(Omega*r_2^3); end; tempo=linspace(0,240,240000);
% il coefficiente di prevalenza Psi è definito come % Psi=pressione*10^5/(rho*(Omega*r_2)^2)
% Temperatura media della prova
T_1=condizioni(1,2);
% Temperatura dell'acqua nel SI T=T_1+273.15 ; % in K
% Densità dell'acqua alla temperatura media della prova rho=waterdensity(T_1); % in kg/m^3
% Pressione di vapore dell'acqua alla temperatura media della prova p_v=watervapourpressure(T_1) ; % in Pascal Psi=[]; for i=1:240000; Psi(i,1)=Pressione(i,1)*10^5/(rho*(Omega*r_2)^2); end; % calcolo di sigma sigma=[]; for i=1:240000; sigma(i,1)=(P_ingresso(i,1)*10^5-p_v)/(0.5*rho*(Omega*r_2)^2); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%ZONA CON SOVRAPPOSIZIONE%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRO DI CAMPIONAMENTO c dove c*(n°dei secondi a cui vogliamo % campionare)=4 costante
268
c=1;
% PARAMETRO DI RICOPRIMENTO r definito da 0 a 1 dove 1 sta per il 100% % funziona con [r,z]= [0.5 1] [0.75 3] [0.25 1] r=0.75;z=3; Psi_mediato=[]; P_ingresso_mediato=[]; phi_mediato=[]; for K=1:(60*c/(1-r))-z; % index_in=(1+(K-1)*(4000/c)*(1-r)); % index_fin=(4000/c+(K-1)*(4000/c)*(1-r)); % P_ingresso_mediato(K,1)=mean(P_ingresso(index_in:index_fin)); index=0; for i=(1+(K-1)*(4000/c)*(1-r)):(4000/c+(K-1)*(4000/c)*(1-r)); index=index+1; S(index,1)=P_ingresso(i,1); P(index,1)=Psi(i,1); q(index,1)=Portata(i,1); end; P_ingresso_mediato(K,1)=mean(S); Psi_mediato(K,1)=mean(P); phi_mediato(K,1)=mean(q); clear S P q end sigma_mediato=[]; for i=1:(60*c/(1-r))-z; sigma_mediato(i,1)=(P_ingresso_mediato(i,1)*10^5-p_v)/(0.5*rho*(Omega*r_2)^2); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%
% plottaggio Pressione nel tempo figure ('Name','Pressione-tempo')
plot(tempo,P_ingresso,'sm','MarkerFaceColor','m') title('DAPROT3 Prove CAVITANTI 2500 rpm') xlabel('Tempo (s)')
ylabel('Pressione in ingresso (bar)') legend('\phi = 0.065') hold on grid on box on axis([0 250 0.1 1.6])
% plottaggio Phi nel tempo
269
plot(tempo,phi_misurato,'sm','MarkerFaceColor','m') title('DAPROT3 Prove CAVITANTI 2500 Q 28.41') xlabel('Tempo') ylabel('\phi') legend('\phi = 0.065') hold on grid on box on axis([0 240 0 100])
% plottaggio Phi/Phi_nominale nel tempo
figure ('Name','Phi_misurato/Phi_nominale-tempo') plot(tempo,phi_misurato/Phi,'sm','MarkerFaceColor','m') title('DAPROT3 Prove CAVITANTI 2500 Q 28.41')
xlabel('Tempo') ylabel('\phi') legend('\phi = 0.065') hold on grid on box on axis([0 240 0 3])
% plottaggio Psi sigma % figure ('Name','psi_sigma')
% plot(sigma,Psi,'sk','MarkerFaceColor','y') % title('DAPROT3 Prove CAVITANTI 2500 Q 19.89') % xlabel('\sigma') % ylabel('\psi') % legend('\psi-\sigma') % hold on % grid on % box on % axis([0 0.55 0 0.55])
% plottaggio Psi sigma_mediato figure ('Name','psi_sigma_mediato')
plot(sigma_mediato,Psi_mediato,'sk','MarkerFaceColor','m') title('DAPROT3 Prove CAVITANTI 2500 Q 28.41')
xlabel('\sigma') ylabel('\psi') legend('\phi = 0.065') hold on grid on box on axis([0 0.5 0 0.4])
% plottaggio Psi/Psi_nominale sigma_mediato figure ('Name','psi_sigma_mediato')
plot(sigma_mediato,Psi_mediato/Psi(1,1),'sk','MarkerFaceColor','m') title('DAPROT3 Prove CAVITANTI 2500 Q 28.41')
270
xlabel('\sigma') ylabel('\psi/\psi_0') legend('\phi = 0.065') hold on grid on box on axis([0 0.55 0 1.3]) filesave='C:\Users\andrea\Documents\tesi\Sperimentazione\VAMPIRE\CAVITANTI\DAPROT3_CAV_COLD\c av_cold_28_41.mat'; save(filesave,'sigma_mediato','Psi_mediato','phi_mediato');mentre il seguente viene utilizzato per le prove discrete:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
% %
% Daprot3 cavitanti discrete 2500 phi 0.065 % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% clear all close all clc
% definizione di cartella principale main_folder=pwd; % nome pompa nome='DAPROT3'; % dati geometria r_2=0.081; % in [m]
% area frontale di passaggio dell'acqua Area=pi*(r_2)^2; % in [m^2]
% velocità angolare della pompa Om=2500; % in rpm
% velocità angolare della pompa in rad/s Omega=Om*2*pi/60; % in [rad/s]
% numero di scan rate
271
% durata della prova t=2; % in [s]
% samples per prova Samples=num*t; % battente idrostatico Bat_idro=0.06;
% Caricamento dei dati di pressione e di portata del flusso (esegui un % controllo delle
% funzioni di matlab)
% prendo il file offset presente nella cartella VAMPIRE
dati=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\Cavitating\FREDDE\CAV_2500_dis crete_COLD\dati_off_phi_0_065\DAPROT3_2500_CAV_COLD_Q_28_41_discreta_offset.txt');
P_ingresso=[]; % pressione in ingresso (1)
P_ingresso_off=[]; % pressione in ingresso offset(1)
dP_5bar=[]; % differenziale tra l'ingresso e l'uscita della camera di prova (27)
dP_5bar_off=[]; % differenziale tra l'ingresso e l'uscita della camera di prova all'offset(27)
% VALORI MEDI OFFSET
% media offset canale (1)
P_ingresso_off=dati(:,1);
media1_off=mean(P_ingresso_off);
% media offset canale (27)
dP_5bar_off=dati(:,2);
media27_off=mean(dP_5bar_off);
% portata sono alla colonna 25 del file di prova Q=[]; % la portata letta dal flussimetro
% Valori medi di pressione Pressione=[]; for i=1:9; dati_i=load(sprintf('C:\\Users\\andrea\\Documents\\tesi\\Sperimentazione\\Daprot3\\Cavitating\\FREDD E\\CAV_2500_discrete_COLD\\dati_phi_0_065\\DAPROT3_2500_CAV_COLD_Q_28_41_discreta_0%i.txt',i) ); % medie P_ingresso=dati_i(:,1)-Bat_idro; media_ingresso_i=mean(P_ingresso); dP_5bar=dati_i(:,2);
272
media_differenziale_5bar_i=mean(dP_5bar);
%costruzione matrice di pressione Pressione(i,1)=media_ingresso_i;
Pressione(i,2)=media_differenziale_5bar_i; end
% Caricamento delle condizioni
condizioni=load('C:\Users\andrea\Documents\tesi\Sperimentazione\Daprot3\Cavitating\FREDDE\CAV_25 00_discrete_COLD\Condizioni_prove_discrete.txt');
% Calcolo dei coefficienti di flusso per ciascuna prova phi= % (Q/(A*Omega*r))
phi=(condizioni(1,1)*10^(-3)/(Omega*r_2^3)); T_1=[];
% Temperatura media della prova T_1(i,1)=condizioni(1,2);
% Temperatura dell'acqua nel SI T=T_1+273.15 ; % in K
% Ritorno ad operare nella cartella madre cd (main_folder);
% Densità dell'acqua alla temperatura media della prova rho=waterdensity(T_1); % in kg/m^3
% Pressione di vapore dell'acqua alla temperatura media della prova p_v=watervapourpressure(T_1) ; % in Pascal
% correzione della portata che dipende dal valore letto sul flussimetro % calcolo della prevalenza TOTALE (POMPA+DIFFUSORE)% calcolo di sigma RHO=mean(rho(:)); sigma=[]; for i=1:9; sigma(i,1)=(Pressione(i,1)*10^5-p_v(i))/(0.5*(RHO)*(Omega*r_2)^2); end psi=[]; for i=1:9 psi(i,1)=(Pressione(i,2)*10^(5))/(RHO*(Omega*r_2)^2); end
% Plottaggio dati psi phi figure ('Name','\psi-\phi')
273
plot(sigma,psi,'ok','MarkerfaceColor','r')
title('DAPROT3 Prove cavitanti 2500 Q28.41 DISCRETE') xlabel('\sigma') ylabel('\Psi') legend('\phi = 0.065') hold on grid on box on axis([0 0.5 0 0.4]) % filesave='C:\Users\andrea\Documents\tesi\Sperimentazione\VAMPIRE\CAVITANTI\DAPROT3_CAV_COLD\ DAPROT3_cav_cold_28_41_discrete.mat'; save(filesave,'sigma','psi','phi');
274
2. Appendice al capitolo 6
In questa appendice vengono mostrati i programmi matlab usati per la riduzione delle forze
rotodinamiche. Verranno mostrati a titolo di esempio il programma offset ed il programma
eccentricità.
Il programa OFFSET:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%
%%%%%%%%
%%%%%%%% ROTODINAMICA PASSO 1 offset forze %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% clear all close all clc
%% IMPOSTAZIONE DEL CAMPIONAMENTO
numero_samples_secondo=5000; % numero di campioni al secondo [1/s] durata_prova=120; % durata della prova in secondi
numero_samples_tot=numero_samples_secondo*durata_prova; % numero totale di campioni durante la prova
t=linspace(0,durata_prova,numero_samples_tot); % vettore tempo
%% MOTORE PRIMARIO
Omega=2; % velocità di rotazione in giri al minuto [rpm]
Om=Omega*2*pi/60; % velocità di rotazione del motore primario in radianti al secondo [rad/s] angolo_tetha=203; % angolo del lettore di tacca rispetto all'asse x in gradi sesagesimali TETHA=angolo_tetha*2*pi/360; % angolo del lettore di tacca rispetto all'asse x in radianti [rad]
%% MATRICE DI CALIBRAZIONE DEL DINAMOMETRO
MATRICE_CALIBRAZIONE=load('MATRICE_AA_DEFINITIVA_ESA.txt');
% MATRICE_CALIBRAZIONE=[2.7429E-04, -1.0517E-05, -7.2015E-06, 7.8241E-06, 4.0478E-03, -5.1829E-7;... % -2.8061E-04, -3.4021E-06, -7.9686E-07, 2.6293E-05, 4.0591E-03, 1.1799E-06;...
% 4.1636E-06, 2.8225E-04, 2.7571E-05, -2.6228E-06, -4.1216E-06, 2.1390E-06;... % 6.4291E-06, -2.7220E-04, -1.8388E-05, -3.9311E-05, -3.9870E-03, -1.5632E-06;... % 1.0562E-05 -2.5799E-04 7.8579E-04 1.2745E-05 -6.2591E-05 -1.6850E-06;... % 2.4439E-05 -2.9256E-04 -8.7972E-04 -2.2237E-05 -2.5213E-04 -1.3499E-06;... % -2.9847E-04 -1.6727E-05 1.6219E-06 8.7360E-04 -8.5660E-05 -1.3996E-07;... % -2.5336E-04 -2.5515E-06 3.0442E-06 -8.0403E-04 -4.5430E-05 5.8678E-07;... % 4.4244E-07 1.4181E-06 9.3911E-06 -4.1965E-06 -2.6343E-05 -1.9800E-05;...
275
% 1.8372E-06 1.4691E-06 -7.3762E-06 -4.2189E-07 -3.7879E-05 -1.9226E-05 ]; % le colonne rappresentano FX,FY,MX,MY,MZ,FZ, mentre le righe sono i ponti %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ACQUISIZIONE DATI %%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%
%% VALORI CARICATI DAL FILE.TXT [filename,pathname]=uigetfile('.txt'); PONTI_TOT=load(sprintf('%s%s',pathname,filename)); %'C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\DAPROT3_offset_a_2rp m_11_04_2013.txt'); PONTE=(10^-3)*PONTI_TOT(:,5:14)';
%% FORZE CALCOLATE DAL DINAMOMETRO NEL RIFERIMENTO ROTANTE
FORZE_SYS_ROT=MATRICE_CALIBRAZIONE\PONTE;
%% calcolo della frequenza di rotazione
lettore_tacca_princ_pulito1=max(PONTI_TOT(:,1)-1,0); % il segnale del lettore di tacca viene tagliato a quota 0 e quota 1
lettore_tacca_princ=min(lettore_tacca_princ_pulito1,1);
figure('Name','LETTORE TACCA PRINCIPALE') plot(lettore_tacca_princ) grid on xlabel('samples') ylabel('Principal Counter') indici_tacca_princ=find(lettore_tacca_princ); k=0; for j=1:(length(indici_tacca_princ)-1) if indici_tacca_princ(j)==indici_tacca_princ(j+1)-1 else k=k+1; estremi_princ(k)=indici_tacca_princ(j); end end if k==1 estremi_princ(2)=indici_tacca_princ(end); end
frequenza_tacche_princ=estremi_princ(2)-estremi_princ(1); % numero di samples periodo fondam
276
periodo_tacche_princ=frequenza_tacche_princ/numero_samples_secondo; velocita_di_rot=2*pi*(1/periodo_tacche_princ(1)); %% correzione di Fx C11=[0]; C12=[0]; C13=[0]; C21=[0]; C22=[0]; C23=[0]; C31=[0]; C32=[0]; C33=[0]; F1=[0]; F2=[0]; F3=[0]; for i=1:numero_samples_tot C11=C11+(sin(velocita_di_rot*t(i)))^2; C12=C12+sin(velocita_di_rot*t(i))*cos(velocita_di_rot*t(i)); C13=C13+sin(velocita_di_rot*t(i)); C21=C21+sin(velocita_di_rot*t(i))*cos(velocita_di_rot*t(i)); C22=C22+(cos(velocita_di_rot*t(i)))^2; C23=C23+cos(velocita_di_rot*t(i)); C31=C31+sin(velocita_di_rot*t(i)); C32=C32+cos(velocita_di_rot*t(i)); C33=C33+1; F1=F1+FORZE_SYS_ROT(1,i)*sin(velocita_di_rot*t(i)); F2=F2+FORZE_SYS_ROT(1,i)*cos(velocita_di_rot*t(i)); F3=F3+FORZE_SYS_ROT(1,i); end CC=[C11 C12 C13; C21 C22 C23; C31 C32 C33]; FF=[F1; F2; F3]; M_Fx=CC\FF; F_mx=sqrt((M_Fx(1))^2+(M_Fx(2))^2); PHI_x=atan2(M_Fx(2),M_Fx(1)); offset_Fx=M_Fx(3); F_x=F_mx*sin(velocita_di_rot*t+PHI_x)+offset_Fx; %% Calcolo della Varianza e della Deviazione Standard Fx Varianza_Fx=0;277
Varianza_Fx=Varianza_Fx+(F_x(r)-FORZE_SYS_ROT(1,r)).^2; end Varianza_Fx=Varianza_Fx/numero_samples_tot; deviazione_standard_Fx=sqrt(Varianza_Fx); %% correzione di Fy F1=0; F2=0; F3=0; for i=1:numero_samples_tot F1=F1+FORZE_SYS_ROT(2,i)*sin(velocita_di_rot*t(i)); F2=F2+FORZE_SYS_ROT(2,i)*cos(velocita_di_rot*t(i)); F3=F3+FORZE_SYS_ROT(2,i); end FF=[F1; F2; F3]; M_Fy=CC\FF; F_my=sqrt((M_Fy(1))^2+(M_Fy(2))^2); PHI_y=atan2(M_Fy(2),M_Fy(1)); offset_Fy=M_Fy(3); F_y=F_my*sin(velocita_di_rot*t+PHI_y)+offset_Fy; %% Calcolo della Varianza e della Deviazione Standard Fy Varianza_Fy=0; for r=1:numero_samples_tot Varianza_Fy=Varianza_Fy+(F_y(r)-FORZE_SYS_ROT(2,r)).^2; end Varianza_Fy=Varianza_Fy/numero_samples_tot; deviazione_standard_Fy=sqrt(Varianza_Fy); %% correzione di Fz F1=0; F2=0; F3=0; for i=1:numero_samples_tot F1=F1+FORZE_SYS_ROT(6,i)*sin(velocita_di_rot*t(i)); F2=F2+FORZE_SYS_ROT(6,i)*cos(velocita_di_rot*t(i)); F3=F3+FORZE_SYS_ROT(6,i); end FF=[F1; F2; F3]; M_Fz=CC\FF; F_mz=sqrt((M_Fz(1))^2+(M_Fz(2))^2); PHI_z=atan2(M_Fz(2),M_Fz(1));278
offset_Fz=M_Fz(3);
F_z=F_mz*sin(velocita_di_rot*t+PHI_z)+offset_Fz; %% Calcolo della Varianza e della Deviazione Standard Fz Varianza_Fz=0; for r=1:numero_samples_tot Varianza_Fz=Varianza_Fz+(F_z(r)-FORZE_SYS_ROT(6,r)).^2; end Varianza_Fz=Varianza_Fz/numero_samples_tot; deviazione_standard_Fz=sqrt(Varianza_Fz); %% Correzione di Mx M1=0; M2=0; M3=0; for i=1:numero_samples_tot M1=M1+FORZE_SYS_ROT(3,i)*sin(velocita_di_rot*t(i)); M2=M2+FORZE_SYS_ROT(3,i)*cos(velocita_di_rot*t(i)); M3=M3+FORZE_SYS_ROT(3,i); end MM=[M1; M2; M3]; M_Mx=CC\MM; M_mx=sqrt((M_Mx(1))^2+(M_Mx(2))^2); PHI_X=atan2(M_Mx(2),M_Mx(1)); offset_Mx=M_Mx(3); M_x=M_mx*sin(velocita_di_rot*t+PHI_X)+offset_Mx; %% Calcolo della Varianza e della Deviazione Standard Mx Varianza_Mx=0; for r=1:numero_samples_tot Varianza_Mx=Varianza_Mx+(M_x(r)-FORZE_SYS_ROT(3,r)).^2; end Varianza_Mx=Varianza_Mx/numero_samples_tot; deviazione_standard_Mx=sqrt(Varianza_Mx); %% Correzione di My M1=0; M2=0; M3=0; for i=1:numero_samples_tot M1=M1+FORZE_SYS_ROT(4,i)*sin(velocita_di_rot*t(i));
279
M2=M2+FORZE_SYS_ROT(4,i)*cos(velocita_di_rot*t(i)); M3=M3+FORZE_SYS_ROT(4,i); end MM=[M1; M2; M3]; M_My=CC\MM; M_my=sqrt((M_My(1))^2+(M_My(2))^2); PHI_Y=atan2(M_My(2),M_My(1)); offset_My=M_My(3); M_y=M_my*sin(velocita_di_rot*t+PHI_Y)+offset_My; %% Calcolo della Varianza e della Deviazione Standard My Varianza_My=0; for r=1:numero_samples_tot Varianza_My=Varianza_My+(M_y(r)-FORZE_SYS_ROT(4,r)).^2; end Varianza_My=Varianza_My/numero_samples_tot; deviazione_standard_My=sqrt(Varianza_My); %% Correzione di Mz M1=0; M2=0; M3=0; for i=1:numero_samples_tot M1=M1+FORZE_SYS_ROT(5,i)*sin(velocita_di_rot*t(i)); M2=M2+FORZE_SYS_ROT(5,i)*cos(velocita_di_rot*t(i)); M3=M3+FORZE_SYS_ROT(5,i); end MM=[M1; M2; M3]; M_Mz=CC\MM; M_mz=sqrt((M_Mz(1))^2+(M_Mz(2))^2); PHI_Z=atan2(M_Mz(2),M_Mz(1)); offset_Mz=M_Mz(3); M_z=M_mz*sin(velocita_di_rot*t+PHI_Z)+offset_Mz; %% Calcolo della Varianza e della Deviazione Standard Mz Varianza_Mz=0; for r=1:numero_samples_tot Varianza_Mz=Varianza_Mz+(M_z(r)-FORZE_SYS_ROT(5,r)).^2; end Varianza_Mz=Varianza_Mz/numero_samples_tot; deviazione_standard_Mz=sqrt(Varianza_Mz);280
%% plottaggio dati FX,FY,MX,MY,MZ,FZ figure ('Name','F sistema rotante corretto')
plot(t,FORZE_SYS_ROT(1,:)-offset_Fx,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_x-offset_Fx,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_x in N')
legend('F_x corretto','F_x ricostruito') grid on
box on
figure ('Name','F sistema rotante corretto')
plot(t,FORZE_SYS_ROT(2,:)-offset_Fy,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_y-offset_Fy,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_y in N')
legend('F_y corretto','F_y ricostruito') grid on
box on
figure ('Name','F sistema rotante corretto')
plot(t,FORZE_SYS_ROT(6,:)-offset_Fz,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_z-offset_Fz,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_z in N')
legend('F_z corretto','F_z ricostruito') grid on
box on
figure ('Name','M sistema rotante corretto')
plot(t,FORZE_SYS_ROT(3,:)-offset_Mx,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_x-offset_Mx,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_x in N*m')
legend('M_x corretto','M_x ricostruito') grid on
box on
281
figure ('Name','M sistema rotante corretto')
plot(t,FORZE_SYS_ROT(4,:)-offset_My,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_y-offset_My,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_y in N*m')
legend('M_y corretto','M_y ricostruito') grid on
box on
figure ('Name','M sistema rotante corretto')
plot(t,FORZE_SYS_ROT(5,:)-offset_Mz,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_z-offset_Mz,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_z in N*m')
legend('M_z corretto','M_z ricostruito') grid on box on %% scrittura risultati disp('--- Fx ---') disp(sprintf('Ampiezza(N): %f',F_mx)) disp(sprintf('Offset (N): %f',offset_Fx)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fx))
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fx)) disp('--- Fy ---')
disp(sprintf('Ampiezza(N): %f',F_my)) disp(sprintf('Offset (N): %f',offset_Fy)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fy))
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fy)) disp('--- Mx ---')
disp(sprintf('Ampiezza(Nm): %f',M_mx)) disp(sprintf('Offset (Nm): %f',offset_Mx)) disp(sprintf('sigma^2 (Nm^2): %f',Varianza_Mx))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_Mx)) disp('--- My ---')
disp(sprintf('Ampiezza(Nm): %f',M_my)) disp(sprintf('Offset (Nm): %f',offset_My)) disp(sprintf('sigma^2 (Nm^2): %f',Varianza_My))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_My)) disp('--- Mz ---')
disp(sprintf('Ampiezza(Nm): %f',M_mz)) disp(sprintf('Offset (Nm): %f',offset_Mz))
282
disp(sprintf('sigma^2 (Nm^2): %f',Varianza_Mz))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_Mz)) disp('--- Fz ---')
disp(sprintf('Ampiezza(N): %f',F_mz)) disp(sprintf('Offset (N): %f',offset_Fz)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fz))
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fz)) disp('---')
%% correzione angolo tacca primario Index=0; Index2=0; Index=find(F_y==max(F_y(1:(numero_samples_tot/(Omega*2))))); for i=1:(numero_samples_tot/(Omega*2)); Q(i)=PONTI_TOT(i+150000+1,1)-PONTI_TOT(i+150000,1); if Q(i)>=3.5 Index2=150000+find(Q==Q(i)); end end dif_indici=Index2-Index; theta_rad=dif_indici*2*pi/(numero_samples_tot/(Omega*2))-pi/2; theta_deg=dif_indici*360/(numero_samples_tot/(Omega*2))-90;
disp(sprintf('theta (rad): %f',theta_rad)); disp(sprintf('theta (deg): %f',theta_deg));
% figure ('Name','F sistema rotante corretto')
% plot(t,F_y-offset_Fy,'s-r','MarkerfaceColor','r','MarkerSize',1) % hold on
% plot(t,lettore_tacca_princ,'b','markersize',1) % title('DAPROT3 OFFSET - F SISTEMA ROTANTE') % xlabel('tempo') % ylabel('F_y in N') % legend('F_y','lettore di tacca') % grid on % box on %% salvataggio offset FY_air=min(F_y); cd('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3_30_05_2013'); filesave=sprintf('%s.mat',filename(1:end-4)); %'C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\offset_F_11_04_2013.m at'; save(filesave,'FY_air','offset_Fx','offset_Fy','offset_Fz','offset_Mx','offset_My','offset_Mz','theta_deg','thet a_rad','F_my','M_mx');
il programma ECCENTRICITA’:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %283
% Calcolo del vettore eccentricità % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% clear all close all clc
%% Parametri iniziali della prova (motore secondario) sps=5000; % campioni per secondo
durata=5; % durata della prova in secondi nts=sps*durata; % numero totale di campioni omega=1000; % velocità di rotazione in rpm
OMEGA=omega*2*pi/60; % velocità in radianti al secondo %eccentricita=1.13; % valore nominale in mm
rotazione_antioraria=1; % 1 se antioraria e 0 se oraria t=linspace(0,durata,nts); %% Caricamento dati [filename,pathname]=uigetfile('.mat'); load(sprintf('%s%s',pathname,filename)); % offset offset=[offset_Fx;offset_Fy;offset_Mx;offset_My;offset_Mz;offset_Fz]; MATRICE_CALIBRAZIONE=load('MATRICE_AA_DEFINITIVA_ESA.txt'); %dati_prova=load('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\Roto\D APROT3_ecc_a_6_0_m_1000rpm_08_05_2013_new.txt'); % dati_prova=load('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\Roto\Ari a\DAPROT3_ecc_a_6_0_m_1000rpm_23_04_2013.txt'); [filename,pathname]=uigetfile('.txt'); dati_prova=load(sprintf('%s%s',pathname,filename)); %AA='C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\matrice_calibrazion e.mat'; ...
% matrice di calibrazione del dinamometro %load(AA);
%% CALCOLO DELLE FORZE SUL DINAMOMETRO
PONTI_TOT=(10^-3)*dati_prova(:,5:14)'; % matrice delle tensioni in V uni=ones(1,nts);
FORZE_GREZZE=MATRICE_CALIBRAZIONE\PONTI_TOT; MATRICE_OFFSET=offset*uni;
FORZE=FORZE_GREZZE-MATRICE_OFFSET;
%% calcolo della frequenza effettiva
lettore_tacca_secon_pulito1=max(dati_prova(:,2)-1,0); lettore_tacca_secon=min(lettore_tacca_secon_pulito1,1); figure() plot(lettore_tacca_secon) grid on figure() plot(t,lettore_tacca_secon)
284
grid on indici_tacca_secon=find(lettore_tacca_secon); k=0; for j=1:(length(indici_tacca_secon)-1) if indici_tacca_secon(j)==indici_tacca_secon(j+1)-1 else k=k+1; estremi_secon(k)=indici_tacca_secon(j); estremi_iniziale_secon(k)=indici_tacca_secon(j+1); end end if k==1 estremi_secon(2)=indici_tacca_secon(end); end frequenza_tacche_secon=estremi_secon(2)-estremi_secon(1); periodo_tacche_secon=frequenza_tacche_secon/sps; OMEGA_EFFETTIVO=2*pi*(1/periodo_tacche_secon(1)); %% CALCOLO DELLE FORZE%% correzione di Fx C11=[0]; C12=[0]; C13=[0]; C21=[0]; C22=[0]; C23=[0]; C31=[0]; C32=[0]; C33=[0]; F1=[0]; F2=[0]; F3=[0]; for i=1:nts C11=C11+(sin(OMEGA_EFFETTIVO*t(i))).^2; C12=C12+sin(OMEGA_EFFETTIVO*t(i))*cos(OMEGA_EFFETTIVO*t(i)); C13=C13+sin(OMEGA_EFFETTIVO*t(i)); C21=C21+sin(OMEGA_EFFETTIVO*t(i))*cos(OMEGA_EFFETTIVO*t(i)); C22=C22+(cos(OMEGA_EFFETTIVO*t(i))).^2; C23=C23+cos(OMEGA_EFFETTIVO*t(i)); C31=C31+sin(OMEGA_EFFETTIVO*t(i)); C32=C32+cos(OMEGA_EFFETTIVO*t(i)); C33=C33+1; F1=F1+FORZE(1,i)*sin(OMEGA_EFFETTIVO*t(i));
285
F2=F2+FORZE(1,i)*cos(OMEGA_EFFETTIVO*t(i)); F3=F3+FORZE(1,i); end CC=[C11 C12 C13; C21 C22 C23; C31 C32 C33]; FF=[F1; F2; F3]; M_Fx=CC\FF; F_mx=sqrt((M_Fx(1))^2+(M_Fx(2))^2); PHI_x=atan2(M_Fx(2),M_Fx(1)); offset_Fx=M_Fx(3); F_x=F_mx*sin(OMEGA_EFFETTIVO*t+PHI_x)+offset_Fx; %% Calcolo della Varianza e della Deviazione Standard Fx Varianza_Fx=0; for r=1:nts Varianza_Fx=Varianza_Fx+(F_x(r)-FORZE(1,r)).^2; end Varianza_Fx=Varianza_Fx/nts; deviazione_standard_Fx=sqrt(Varianza_Fx); %% correzione di Fy F1=0; F2=0; F3=0; for i=1:nts F1=F1+FORZE(2,i)*sin(OMEGA_EFFETTIVO*t(i)); F2=F2+FORZE(2,i)*cos(OMEGA_EFFETTIVO*t(i)); F3=F3+FORZE(2,i); end FF=[F1; F2; F3]; M_Fy=CC\FF; F_my=sqrt((M_Fy(1))^2+(M_Fy(2))^2); PHI_y=atan2(M_Fy(2),M_Fy(1)); offset_Fy=M_Fy(3); F_y=F_my*sin(OMEGA_EFFETTIVO*t+PHI_y)+offset_Fy; %% Calcolo della Varianza e della Deviazione Standard Fy Varianza_Fy=0;for r=1:nts
Varianza_Fy=Varianza_Fy+(F_y(r)-FORZE(2,r)).^2; end
286
Varianza_Fy=Varianza_Fy/nts; deviazione_standard_Fy=sqrt(Varianza_Fy); %% correzione di Fz F1=0; F2=0; F3=0; for i=1:nts F1=F1+FORZE(6,i)*sin(OMEGA_EFFETTIVO*t(i)); F2=F2+FORZE(6,i)*cos(OMEGA_EFFETTIVO*t(i)); F3=F3+FORZE(6,i); end FF=[F1; F2; F3]; M_Fz=CC\FF; F_mz=sqrt((M_Fz(1))^2+(M_Fz(2))^2); PHI_z=atan2(M_Fz(2),M_Fz(1)); offset_Fz=M_Fz(3); F_z=F_mz*sin(OMEGA_EFFETTIVO*t+PHI_z)+offset_Fz; %% Calcolo della Varianza e della Deviazione Standard Fz Varianza_Fz=0; for r=1:nts Varianza_Fz=Varianza_Fz+(F_z(r)-FORZE(6,r)).^2; end Varianza_Fz=Varianza_Fz/nts; deviazione_standard_Fz=sqrt(Varianza_Fz); %% Correzione di Mx M1=0; M2=0; M3=0; for i=1:nts M1=M1+FORZE(3,i)*sin(OMEGA_EFFETTIVO*t(i)); M2=M2+FORZE(3,i)*cos(OMEGA_EFFETTIVO*t(i)); M3=M3+FORZE(3,i); end MM=[M1; M2; M3]; M_Mx=CC\MM; M_mx=sqrt((M_Mx(1))^2+(M_Mx(2))^2); PHI_X=atan2(M_Mx(2),M_Mx(1)); offset_Mx=M_Mx(3);287
M_x=M_mx*sin(OMEGA_EFFETTIVO*t+PHI_X)+offset_Mx; %% Calcolo della Varianza e della Deviazione Standard Mx Varianza_Mx=0; for r=1:nts Varianza_Mx=Varianza_Mx+(M_x(r)-FORZE(3,r)).^2; end Varianza_Mx=Varianza_Mx/nts; deviazione_standard_Mx=sqrt(Varianza_Mx); %% Correzione di My M1=0; M2=0; M3=0; for i=1:nts M1=M1+FORZE(4,i)*sin(OMEGA_EFFETTIVO*t(i)); M2=M2+FORZE(4,i)*cos(OMEGA_EFFETTIVO*t(i)); M3=M3+FORZE(4,i); end MM=[M1; M2; M3]; M_My=CC\MM; M_my=sqrt((M_My(1))^2+(M_My(2))^2); PHI_Y=atan2(M_My(2),M_My(1)); offset_My=M_My(3); M_y=M_my*sin(OMEGA_EFFETTIVO*t+PHI_Y)+offset_My; %% Calcolo della Varianza e della Deviazione Standard My Varianza_My=0; for r=1:nts Varianza_My=Varianza_My+(M_y(r)-FORZE(4,r)).^2; end Varianza_My=Varianza_My/nts; deviazione_standard_My=sqrt(Varianza_My); %% Correzione di Mz M1=0; M2=0; M3=0; for i=1:nts M1=M1+FORZE(5,i)*sin(OMEGA_EFFETTIVO*t(i)); M2=M2+FORZE(5,i)*cos(OMEGA_EFFETTIVO*t(i)); M3=M3+FORZE(5,i);
288
end MM=[M1; M2; M3]; M_Mz=CC\MM; M_mz=sqrt((M_Mz(1))^2+(M_Mz(2))^2); PHI_Z=atan(M_Mz(2)/M_Mz(1)); offset_Mz=M_Mz(3); M_z=M_mz*sin(OMEGA_EFFETTIVO*t+PHI_Z)+offset_Mz; %% Calcolo della Varianza e della Deviazione Standard Mz Varianza_Mz=0; for r=1:nts Varianza_Mz=Varianza_Mz+(M_z(r)-FORZE(5,r)).^2; end Varianza_Mz=Varianza_Mz/nts; deviazione_standard_Mz=sqrt(Varianza_Mz);%% calcolo dell'angolo tra il vettore eccentricità e la tacca F=sqrt((F_x).^2+(F_y).^2); Index=[0]; Index2=0; Intervallo=(nts/(omega*durata/60)); Index=find(F==max(F)); Q=[]; passaggio_tacca_pulito=max(dati_prova(:,2)-1,0); pass_tacca=min(passaggio_tacca_pulito,1); pass_tacca(pass_tacca~=0)=1; Z=0; for i=Index:(Index+Intervallo) Q(i)=pass_tacca(i+1)-pass_tacca(i); if Q(i)==1 Z=Z+1; Index2=i; end end xxx=linspace(Index,Index+Intervallo,Intervallo); figure plot(xxx,F(Index:(Index+Intervallo-1)),'r'); hold on plot(xxx,F_x(Index:(Index+Intervallo-1)),'g'); hold on plot(xxx,F_y(Index:(Index+Intervallo-1)),'c'); hold on plot(xxx,200*pass_tacca((Index):(Index+Intervallo-1)),'b'); dif_indici=Index2-Index;
289
angolo_lettore_tacca2_corretto_deg=dif_indici*360/(Intervallo); if angolo_lettore_tacca2_corretto_deg<260 Delta=100+angolo_lettore_tacca2_corretto_deg; else Delta=360-(100+angolo_lettore_tacca2_corretto_deg); end disp(sprintf('delta_deg(deg): %f',Delta)); % F=sqrt((F_x).^2+(F_y).^2); % % Index=[0]; % Index2=0; % Num_ciclo=2; % Intervallo=(nts/(omega*durata/60)); % Index=find(F==max(F((Num_ciclo*Intervallo+1):((Num_ciclo+1)*Intervallo)))); % % Q=[]; % passaggio_tacca_pulito=max(dati_prova(:,2)-1,0); % pass_tacca=min(passaggio_tacca_pulito,1); % pass_tacca(pass_tacca~=0)=1; % Z=0; % for i=(Num_ciclo*Intervallo+1):((Num_ciclo+1)*Intervallo) % Q(i)=pass_tacca(i+1)-pass_tacca(i); % if Q(i)==1 % Z=Z+1; % Index2=i; % end % end % xxx=linspace(1,300,300); % figure % plot(xxx,F((Num_ciclo*Intervallo+1):((Num_ciclo+1)*Intervallo)),'r'); % hold on % plot(xxx,200*pass_tacca((Num_ciclo*Intervallo+1):((Num_ciclo+1)*Intervallo)),'b'); % if Index2>Index % dif_indici=Index2-Index; % angolo_lettore_tacca2_corretto_deg=dif_indici*360/(Intervallo); % delta=100+angolo_lettore_tacca2_corretto_deg; % else % dif_indici=Index-Index2; % angolo_lettore_tacca2_corretto_deg=dif_indici*360/(Intervallo); % delta=100-angolo_lettore_tacca2_corretto_deg; % end % % Delta=delta; % disp(sprintf('delta_deg(deg): %f',Delta)); %% scrittura risultati disp('--- Fx ---') disp(sprintf('Ampiezza(N): %f',F_mx)) disp(sprintf('Offset (N): %f',offset_Fx)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fx))290
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fx)) disp('--- Fy ---')
disp(sprintf('Ampiezza(N): %f',F_my)) disp(sprintf('Offset (N): %f',offset_Fy)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fy))
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fy)) disp('--- Mx ---')
disp(sprintf('Ampiezza(Nm): %f',M_mx)) disp(sprintf('Offset (Nm): %f',offset_Mx)) disp(sprintf('sigma^2 (Nm^2): %f',Varianza_Mx))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_Mx)) disp('--- My ---')
disp(sprintf('Ampiezza(Nm): %f',M_my)) disp(sprintf('Offset (Nm): %f',offset_My)) disp(sprintf('sigma^2 (Nm^2): %f',Varianza_My))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_My)) disp('--- Mz ---')
disp(sprintf('Ampiezza(Nm): %f',M_mz)) disp(sprintf('Offset (Nm): %f',offset_Mz)) disp(sprintf('sigma^2 (Nm^2): %f',Varianza_Mz))
disp(sprintf('deviazione standard (Nm) : %f',deviazione_standard_Mz)) disp('--- Fz ---')
disp(sprintf('Ampiezza(N): %f',F_mz)) disp(sprintf('Offset (N): %f',offset_Fz)) disp(sprintf('sigma^2 (N^2): %f',Varianza_Fz))
disp(sprintf('deviazione standard (N) : %f',deviazione_standard_Fz)) disp('---')
%% plottaggio dati FX,FY,MX,MY,MZ,FZ figure ('Name','F sistema rotante corretto')
plot(t,FORZE(1,:)-offset_Fx,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_x-offset_Fx,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_x in N')
legend('F_x corretto','F_x ricostruito') grid on
box on
figure ('Name','F sistema rotante corretto')
plot(t,FORZE(2,:)-offset_Fy,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_y-offset_Fy,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_y in N')
291
grid on box on
figure ('Name','F sistema rotante corretto')
plot(t,FORZE(6,:)-offset_Fz,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,F_z-offset_Fz,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - F SISTEMA ROTANTE') xlabel('tempo')
ylabel('F_z in N')
legend('F_z corretto','F_z ricostruito') grid on
box on
figure ('Name','M sistema rotante corretto')
plot(t,FORZE(3,:)-offset_Mx,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_x-offset_Mx,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_x in N*m')
legend('M_x corretto','M_x ricostruito') grid on
box on
figure ('Name','M sistema rotante corretto')
plot(t,FORZE(4,:)-offset_My,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_y-offset_My,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_y in N*m')
legend('M_y corretto','M_y ricostruito') grid on
box on
figure ('Name','M sistema rotante corretto')
plot(t,FORZE(5,:)-offset_Mz,'s-c','MarkerfaceColor','c','MarkerSize',1) hold on
plot(t,M_z-offset_Mz,'s-r','MarkerfaceColor','r','MarkerSize',1) hold on
title('DAPROT3 OFFSET - M SISTEMA ROTANTE') xlabel('tempo')
ylabel('M_z in N*m')
legend('M_z corretto','M_z ricostruito') grid on
292
box on % %% salvataggio file % cd('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\VACUUM\'); % filesave=sprintf('%s.mat',filename(1:end-4)); % save(filesave,'Delta');infine si mostra il codice della prova rotodinamica discreta in aria , mentre quella in acqua non è
necessaria dal momento che segue lo stesso principio.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
% Calcolo delle forze di Tara in aria con whirl negativo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
close all clear all clc
g=9.81; % [m/s^2] accelerazione gravitazionale terrestre alla latitudine di ALTA
%% --- PARAMETRI INIZIALI DA IMPOSTARE --- [filename,pathname]=uigetfile('.mat'); load(sprintf('%s%s',pathname,filename)); % load('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3\offset_F_23_04_201 3.mat'); offset=[offset_Fx;offset_Fy;offset_Mx;offset_My;offset_Mz;offset_Fz]; %[18.20;-8.15;0.71;1.67;-0.24;88.04].*0;% vettore contenente gli offset [Fx; Fy; Mx; My; Mz; Fz] nel riferimento rotante
[fileecc,pathecc]=uigetfile('.mat'); load(sprintf('%s%s',pathecc,fileecc));
Ncyc=250; % numero di ripetizioni del ciclo fondamentale fattore_di_correzione=input('correzione angolare = ')
epsilon=0.00113; % [m] eccentricità dell'orbita di whirl imposta
delta_deg=Delta+fattore_di_correzione;%(114.4+ fattore di correzione =13.9) % [deg] angolo tra la tacca secondario ed il vettore eccentricità
J=10; % numero intero risultante da (omega/OMEGA)=(I/J) r=input('Rapporto di whirl negativo = (inserire anche il meno)')
% r=-0.1;% rapporto omega/Omega; % rapporto omega/Omega ntot=600000; % n°tot campionamenti per prova
cas=5000; % campionamenti al secondo
teta_deg=theta_deg; % [deg] angolo tra il lettore di tacca prin cipale e l'asse X del sistema assoluto
293
phi_deg=170; % [deg] angolo tra il lettore di tacca secondario e l'asse X del sistema assoluto
% ---
dt=1/cas; % [s] intervallo di campionamento
I=J*r; % numero intero risultante da (omega/OMEGA)=(I/J) T_acquisizione=ntot/cas; % [s] tempo totale di acquisizione
t=linspace(0,T_acquisizione,ntot); % [s] vettore tempo
teta=((teta_deg*2*pi)/360); % [rad] angolo tra il lettore di tacca principale e l'asse X del sistema assoluto
phi=((phi_deg*2*pi)/360); % [rad] angolo tra il lettore di tacca secondario e l'asse X del sistema assoluto
delta=((delta_deg*2*pi)/360); % [rad] angolo tra la tacca secondario ed il vettore eccentricità
%% --- CARICAMENT0 DATI --- [fileprova,pathprova]=uigetfile('.txt');
dati_prova_a=load(sprintf('%s%s',pathprova,fileprova)); % dati in aria
AA=load('MATRICE_AA_DEFINITIVA_ESA.txt'); % matrice A di calibrazione del dinamometro [V=AF] nel SI
%% --- CALCOLO VELOCITA' DI ROTAZIONE MOTORI --- % Motore principale
lettore_tacca_princ_pulito1=max(dati_prova_a(:,1)-1,0); % trasformazione onda quadra parte inferiore
lettore_tacca_princ=min(lettore_tacca_princ_pulito1,1); % trasformazione onda quadra parte superiore
figure('Name','LETTORE DI TACCA PRINCIPALE') plot(lettore_tacca_princ)
grid on
xlabel('Samples')
ylabel('Principal Counter')
indici_tacca_princ=find(lettore_tacca_princ); % vettore contenente gli indici degli elementi diversi da zero
k=0;
for j=1:(length(indici_tacca_princ)-1)
if indici_tacca_princ(j)==indici_tacca_princ(j+1)-1 else
k=k+1;
estremi_princ(k)=indici_tacca_princ(j); % vettore contenente gli indici di fine tacca (esclusa l'ultima)
294
estremi_iniziale_princ(k)=indici_tacca_princ(j+1); % vettore contenente gli indici di inizio tacca (esclusa la prima)
end end if k==1
estremi_princ(2)=indici_tacca_princ(end); end
Ntot=estremi_princ(Ncyc*J+1)-estremi_princ(1); % numero di campioni corrispondenti a Ncyc volte il periodo fondamentale
N_sample_periodo_fondamentale=Ntot/Ncyc; % numero di campioni corrispondente al periodo fondamentale
frequenza_principale=cas/N_sample_periodo_fondamentale*J; % frequenza motore principale [1/s]
W=2*pi*frequenza_principale; % [rad/s] velocità di rotazione del motore principale
OMEGA=W*60/(2*pi); % [rpm] velocità di rotazione del motore principale alfa_deg=-(((estremi_iniziale_princ(1)/...
(N_sample_periodo_fondamentale/J))*360)-360); % [deg] angolo tra la tacca principale e il lettore di tacca principale all'istante iniziale
alfa=alfa_deg*pi/180; % [rad] angolo tra la tacca principale e il lettore di tacca principale all'istante iniziale
W_0=teta+alfa-(pi/2); % [rad] angolo tra asse x dinamometro e asse X assoluto all'istante 0 (inizio acquisizione)
W_0_deg=W_0*180/pi; % [deg] angolo tra asse x dinamometro e asse X assoluto all'istante 0 (inizio acquisizione)
%% Motore secondario
lettore_tacca_secon_pulito1=max(dati_prova_a(:,2)-1,0); % trasformazione onda quadra parte inferiore
lettore_tacca_secon=min(lettore_tacca_secon_pulito1,1); % trasformazione onda quadra parte superiore
figure('Name','LETTORE DI TACCA SECONDARIO') plot(lettore_tacca_secon)
grid on
xlabel('Samples')
ylabel('Secondary Counter')
indici_tacca_secon=find(lettore_tacca_secon); % vettore contenente gli indici degli elementi diversi da zero
k=0;
for j=1:(length(indici_tacca_secon)-1)
295
else k=k+1;
estremi_secon(k)=indici_tacca_secon(j); % vettore contenente gli indici di fine tacca (esclusa l'ultima)
estremi_iniziale_secon(k)=indici_tacca_secon(j+1); % vettore contenente gli indici di inizio tacca (esclusa la prima)
end end if k==1
estremi_secon(2)=indici_tacca_secon(end); end
Ntot_bis=estremi_secon(Ncyc*abs(I)+1)-estremi_secon(1); % numero di campioni corrispondenti a Ncyc volte il periodo fondamentale
N_sample_periodo_fondamentale_bis=Ntot_bis/Ncyc; % numero di campioni corrispondente al periodo fondamentale
if abs(Ntot-Ntot_bis)/Ntot>10^-5 disp('ATTENTION')
Ntot Ntot_bis end
frequenza_secon=cas/N_sample_periodo_fondamentale*I; % frequenza motore secondario [1/s]
w=2*pi*frequenza_secon; % [rad/s] velocità di rotazione del motore secondario
%
% w=0;%% %
omega=w*60/(2*pi); % [rpm] velocità di rotazione del motore secondario %
if r>0 % caso rotazione antioraria beta_deg_antiorario=-(((estremi_iniziale_secon(1)/...
(N_sample_periodo_fondamentale/I))*360)-360); % [deg] angolo tra la tacca secondario e il lettore di tacca secondario all'istante iniziale
beta_antiorario=beta_deg_antiorario*pi/180; % [rad] angolo tra la tacca secondario e il lettore di tacca secondario all'istante iniziale
w_0=phi+beta_antiorario+delta; % [rad] angolo tra l'eccentricità e asse X assoluto all'istante 0 (inizio acquisizione)
else % caso rotazione oraria beta_deg_orario=-(((estremi_secon(1)/...
(N_sample_periodo_fondamentale/I))*360)); % [deg] angolo tra la tacca secondario e il lettore di tacca secondario all'istante iniziale
beta_orario=beta_deg_orario*pi/180; % [rad] angolo tra la tacca secondario e il lettore di tacca secondario all'istante iniziale
296
w_0=phi+beta_orario+delta; % [rad] angolo tra l'eccentricità e asse X assoluto all'istante 0 (inizio acquisizione)
end
%w_0=phi+delta; %%
w_0_deg=w_0*180/pi; % [deg] angolo tra l'eccentricità e asse X assoluto all'istante 0 (inizio acquisizione)
Tc=J/(OMEGA/60); % [s] periodo del ciclo fondamentale (cioè tempo che impiega la girante per tornare nelle condizioni iniziali)
T=Ntot/cas; % [s] tempo su cui si calcolano le forze figure('Name','LETTORI DI TACCA') % plot(t,lettore_tacca_secon,'r') % hold on plot(t,lettore_tacca_princ,'g') grid on xlabel('Samples') ylabel('Counter')
%legend('Secondary Counter','Principal Counter')
%% --- CALCOLO VETTORE DELLE FORZE ---
matrice_tensioni_a=(10^-3)*dati_prova_a(:,5:14)'; % matrice le cui righe sono le tensioni (V) misurate dai ponti estensimetrici (cioè riga1=ponte1 etc)
% e le cui colonne sono gli ntot campioni presi
forze_a_grezze=AA\matrice_tensioni_a; % matrice le cui righe sono le forze (Fx,Fy,Mx,My,Mz,Fz) e le cui colonne sono ntot (senza aver tolto l'offset)
uni=ones(1,ntot);
matrice_offset=offset*uni;
forze_a=forze_a_grezze-matrice_offset; % matrice le cui righe sono le forze (Fx,Fy,Mx,My,Mz,Fz) e le cui colonne sono ntot (dopo aver tolto l'offset)
%% --- CALCOLO F0X,F0Y,AXX,AXY,AYX,AYY ---
F1_a=forze_a(1,:); %[N] vettore riga corrispondente alla Fx nel sist ema rotante
F2_a=forze_a(2,:); %[N] vettore riga corrispondente alla Fy nel sistema rotante F1c_J_a=0; % Inizializzazione F1s_J_a=0; F2c_J_a=0; F2s_J_a=0; F1c_JmenoI_a=0; F1s_JmenoI_a=0; F2c_JmenoI_a=0;
297
F2s_JmenoI_a=0; F1c_JpiuI_a=0; F1s_JpiuI_a=0; F2c_JpiuI_a=0; F2s_JpiuI_a=0; for n=1:Ntot F1c_J_a=F1c_J_a+((F1_a(n)*cos(W_0)-F2_a(n)*sin(W_0))*cos((J*(W/J)*n*dt))); F1s_J_a=F1s_J_a+((F1_a(n)*cos(W_0)-F2_a(n)*sin(W_0))*sin((J*(W/J)*n*dt))); F2c_J_a=F2c_J_a+((F1_a(n)*sin(W_0)+F2_a(n)*cos(W_0))*cos((J*(W/J)*n*dt))); F2s_J_a=F2s_J_a+((F1_a(n)*sin(W_0)+F2_a(n)*cos(W_0))*sin((J*(W/J)*n*dt))); F1c_JmenoI_a=F1c_JmenoI_a+((F1_a(n)*cos(W_0-w_0)-F2_a(n)*sin(W_0-w_0))*cos(((J-I)*(W/J)*n*dt))); F1s_JmenoI_a=F1s_JmenoI_a+((F1_a(n)*cos(W_0-w_0)-F2_a(n)*sin(W_0-w_0))*sin(((J-I)*(W/J)*n*dt))); F2c_JmenoI_a=F2c_JmenoI_a+((F1_a(n)*sin(W_0-w_0)+F2_a(n)*cos(W_0-w_0))*cos(((J-I)*(W/J)*n*dt))); F2s_JmenoI_a=F2s_JmenoI_a+((F1_a(n)*sin(W_0-w_0)+F2_a(n)*cos(W_0-w_0))*sin(((J-I)*(W/J)*n*dt))); F1c_JpiuI_a=F1c_JpiuI_a+((F1_a(n)*cos(W_0+w_0)-F2_a(n)*sin(W_0+w_0))*cos(((J+I)*(W/J)*n*dt))); F1s_JpiuI_a=F1s_JpiuI_a+((F1_a(n)*cos(W_0+w_0)-F2_a(n)*sin(W_0+w_0))*sin(((J+I)*(W/J)*n*dt))); F2c_JpiuI_a=F2c_JpiuI_a+((F1_a(n)*sin(W_0+w_0)+F2_a(n)*cos(W_0+w_0))*cos(((J+I)*(W/J)*n*dt))); F2s_JpiuI_a=F2s_JpiuI_a+((F1_a(n)*sin(W_0+w_0)+F2_a(n)*cos(W_0+w_0))*sin(((J+I)*(W/J)*n*dt))); end F1c_J_a=(2/Ntot)*F1c_J_a; F1s_J_a=(2/Ntot)*F1s_J_a; F2c_J_a=(2/Ntot)*F2c_J_a; F2s_J_a=(2/Ntot)*F2s_J_a; F1c_JmenoI_a=(2/Ntot)*F1c_JmenoI_a; F1s_JmenoI_a=(2/Ntot)*F1s_JmenoI_a; F2c_JmenoI_a=(2/Ntot)*F2c_JmenoI_a; F2s_JmenoI_a=(2/Ntot)*F2s_JmenoI_a; F1c_JpiuI_a=(2/Ntot)*F1c_JpiuI_a; F1s_JpiuI_a=(2/Ntot)*F1s_JpiuI_a; F2c_JpiuI_a=(2/Ntot)*F2c_JpiuI_a; F2s_JpiuI_a=(2/Ntot)*F2s_JpiuI_a;F0X_a=(1/2)*(F1c_J_a-F2s_J_a); % Forza radiale lungo X (fisso col laboratorio) F0Y_a=(1/2)*(F1s_J_a+F2c_J_a); % Forza radiale lungo Y (fisso col laboratorio) AXX_a=(1/(2*epsilon))*(F1c_JmenoI_a-F2s_JmenoI_a+F1c_JpiuI_a-F2s_JpiuI_a); % Componenti matrice rotodinamica Frot=[A] epsilon
AXY_a=(1/(2*epsilon))*(-F1s_JmenoI_a-F2c_JmenoI_a+F1s_JpiuI_a+F2c_JpiuI_a); AYX_a=(1/(2*epsilon))*(F1s_JmenoI_a+F2c_JmenoI_a+F1s_JpiuI_a+F2c_JpiuI_a); AYY_a=(1/(2*epsilon))*(F1c_JmenoI_a-F2s_JmenoI_a-F1c_JpiuI_a+F2s_JpiuI_a);
FN_a=(1/2)*(AXX_a+AYY_a)*epsilon; % Forza normale all'orbita di whirl FT_a=(1/2)*(-AXY_a+AYX_a)*epsilon; % Forza tangenziale all'orbita di whirl
298
massa_sospesa=-F0Y_a/g; % [kg] massa sospesa F1_ideale = -(massa_sospesa*g)*sin((W*t)+W_0)+...
(massa_sospesa*(w^2)*epsilon*cos(((W-w)*t)+(W_0-w_0))); % Vettori rappresentanti le forze attese nel sistema rotante dovute ad una massa appesa in moto rotante eccentrico
F2_ideale = -(massa_sospesa*g)*cos((W*t)+W_0)-...
(massa_sospesa*(w^2)*epsilon*sin(((W-w)*t)+(W_0-w_0))); figure('Name','Confronto tra F1 reale e F1 simulata')
plot(forze_a(1,:),'r') hold on
plot(F1_ideale,'g') grid on
legend('F1 real','F1 simulated') xlabel('Samples')
ylabel('F1 (N)')
figure('Name','Confronto tra F2 reale e F2 simulata') plot(forze_a(2,:),'r')
hold on
plot(F2_ideale,'g') grid on
legend('F2 real','F2 simulated') xlabel('Samples')
ylabel('F2 (N)')
%% --- SCRITTURA RISULTATI --- disp('---') disp(sprintf('T acquisizione (s): %f',T_acquisizione))
disp(sprintf('T su cui si effettua il processamento [Ncyc*Tc](s): %f',T)) disp(sprintf('Tc ciclo fondamentale (s): %f',Tc))
disp(sprintf('Ncyc numero di cicli considerati : %f',Ncyc)) disp(sprintf('OMEGA (rpm) : %f',OMEGA))
disp(sprintf('omega (rpm) : %f',omega)) disp(sprintf('OMEGA_0 (deg) : %f',W_0_deg)) disp(sprintf('omega_0 (deg) : %f',w_0_deg)) disp('')
disp('--- FORZE ROTODINAMICHE ---') disp(sprintf('omega/OMEGA: %f',r)) disp(sprintf('F0X (N): %f',F0X_a)) disp(sprintf('F0Y (N): %f',F0Y_a)) disp(sprintf('AXX (N/m): %f',AXX_a)) disp(sprintf('AXY (N/m): %f',AXY_a)) disp(sprintf('AYX (N/m): %f',AYX_a)) disp(sprintf('AYY (N/m): %f',AYY_a)) disp(sprintf('FN (N): %f',FN_a))
299
disp(sprintf('FT (N): %f',FT_a))
disp('---')
%% --- CALCOLO M0X,M0Y,BXX,BXY,BYX,BYY ---
M1_a=forze_a(3,:); % [Nm] vettore riga corrispondente alla Mx nel sistema rotante
M2_a=forze_a(4,:); % [Nm] vettore riga corrispondente alla My nel sistema rotante M1c_J_a=0; % inizializzazione M1s_J_a=0; M2c_J_a=0; M2s_J_a=0; M1c_JmenoI_a=0; M1s_JmenoI_a=0; M2c_JmenoI_a=0; M2s_JmenoI_a=0; M1c_JpiuI_a=0; M1s_JpiuI_a=0; M2c_JpiuI_a=0; M2s_JpiuI_a=0; for m=1:Ntot M1c_J_a=M1c_J_a+((M1_a(m)*cos(W_0)-M2_a(m)*sin(W_0))*cos((J*(W/J)*m*dt))); M1s_J_a=M1s_J_a+((M1_a(m)*cos(W_0)-M2_a(m)*sin(W_0))*sin((J*(W/J)*m*dt))); M2c_J_a=M2c_J_a+((M1_a(m)*sin(W_0)+M2_a(m)*cos(W_0))*cos((J*(W/J)*m*dt))); M2s_J_a=M2s_J_a+((M1_a(m)*sin(W_0)+M2_a(m)*cos(W_0))*sin((J*(W/J)*m*dt))); M1c_JmenoI_a=M1c_JmenoI_a+((M1_a(m)*cos(W_0-w_0)-M2_a(m)*sin(W_0-w_0))*cos(((J-I)*(W/J)*m*dt))); M1s_JmenoI_a=M1s_JmenoI_a+((M1_a(m)*cos(W_0-w_0)-M2_a(m)*sin(W_0-w_0))*sin(((J-I)*(W/J)*m*dt))); M2c_JmenoI_a=M2c_JmenoI_a+((M1_a(m)*sin(W_0-w_0)+M2_a(m)*cos(W_0-w_0))*cos(((J-I)*(W/J)*m*dt))); M2s_JmenoI_a=M2s_JmenoI_a+((M1_a(m)*sin(W_0-w_0)+M2_a(m)*cos(W_0-w_0))*sin(((J-I)*(W/J)*m*dt))); M1c_JpiuI_a=M1c_JpiuI_a+((M1_a(m)*cos(W_0+w_0)-M2_a(m)*sin(W_0+w_0))*cos(((J+I)*(W/J)*m*dt))); M1s_JpiuI_a=M1s_JpiuI_a+((M1_a(m)*cos(W_0+w_0)-M2_a(m)*sin(W_0+w_0))*sin(((J+I)*(W/J)*m*dt))); M2c_JpiuI_a=M2c_JpiuI_a+((M1_a(m)*sin(W_0+w_0)+M2_a(m)*cos(W_0+w_0))*cos(((J+I)*(W/J)*m*dt)) ); M2s_JpiuI_a=M2s_JpiuI_a+((M1_a(m)*sin(W_0+w_0)+M2_a(m)*cos(W_0+w_0))*sin(((J+I)*(W/J)*m*dt))) ; end
300
M1c_J_a=(2/Ntot)*M1c_J_a; M1s_J_a=(2/Ntot)*M1s_J_a; M2c_J_a=(2/Ntot)*M2c_J_a; M2s_J_a=(2/Ntot)*M2s_J_a; M1c_JmenoI_a=(2/Ntot)*M1c_JmenoI_a; M1s_JmenoI_a=(2/Ntot)*M1s_JmenoI_a; M2c_JmenoI_a=(2/Ntot)*M2c_JmenoI_a; M2s_JmenoI_a=(2/Ntot)*M2s_JmenoI_a; M1c_JpiuI_a=(2/Ntot)*M1c_JpiuI_a; M1s_JpiuI_a=(2/Ntot)*M1s_JpiuI_a; M2c_JpiuI_a=(2/Ntot)*M2c_JpiuI_a; M2s_JpiuI_a=(2/Ntot)*M2s_JpiuI_a;M0X_a=(1/2)*(M1c_J_a-M2s_J_a); % Momento radiale lungo X (fisso col laboratorio)
M0Y_a=(1/2)*(M1s_J_a+M2c_J_a); % Momento radiale lungo Y (fisso col laboratorio)
BXX_a=(1/(2*epsilon))*(M1c_JmenoI_a-M2s_JmenoI_a+M1c_JpiuI_a-M2s_JpiuI_a); % Componenti matrice rotodinamica Mrot=[B] epsilon
BXY_a=(1/(2*epsilon))*(-M1s_JmenoI_a-M2c_JmenoI_a+M1s_JpiuI_a+M2c_JpiuI_a); BYX_a=(1/(2*epsilon))*(M1s_JmenoI_a+M2c_JmenoI_a+M1s_JpiuI_a+M2c_JpiuI_a); BYY_a=(1/(2*epsilon))*(M1c_JmenoI_a-M2s_JmenoI_a-M1c_JpiuI_a+M2s_JpiuI_a);
% --- SCRITTURA RISULTATI --- disp('')
disp('--- MOMENTI ROTODINAMICI ---') disp(sprintf('M0X (Nm): %f',M0X_a)) disp(sprintf('M0Y (Nm): %f',M0Y_a)) disp(sprintf('BXX (N): %f',BXX_a)) disp(sprintf('BXY (N): %f',BXY_a)) disp(sprintf('BYX (N): %f',BYX_a)) disp(sprintf('BYY (N): %f',BYY_a)) disp('---') %% salvataggio cd('C:\Users\andrea\Documents\tesi\Sperimentazione\ROTODINAMICA\DAPROT3_30_05_2013\'); eval(sprintf('F0X_a_%s=F0X_a;',fileprova(17:end-4)));% F0X_a_6_0_2000rpm_m_0_1=F0X_a; eval(sprintf('F0Y_a_%s=F0Y_a;',fileprova(17:end-4)));% F0Y_a_6_0_2000rpm_m_0_1=F0Y_a; eval(sprintf('AXX_a_%s=AXX_a;',fileprova(17:end-4)));% AXX_a_6_0_2000rpm_m_0_1=AXX_a; eval(sprintf('AXY_a_%s=AXY_a;',fileprova(17:end-4)));% AXY_a_6_0_2000rpm_m_0_1=AXY_a; eval(sprintf('AYX_a_%s=AYX_a;',fileprova(17:end-4)));% AYX_a_6_0_2000rpm_m_0_1=AYX_a; eval(sprintf('AYY_a_%s=AYY_a;',fileprova(17:end-4)));% AYY_a_6_0_2000rpm_m_0_1=AYY_a; eval(sprintf('FN_a_%s=FN_a;',fileprova(17:end-4)));% FN_a_6_0_2000rpm_m_0_1=FN_a; eval(sprintf('FT_a_%s=FT_a;',fileprova(17:end-4)));% FT_a_6_0_2000rpm_m_0_1=FT_a; eval(sprintf('M0X_a_%s=M0X_a;',fileprova(17:end-4)));% M0X_a_6_0_2000rpm_m_0_1=M0X_a; eval(sprintf('M0Y_a_%s=M0Y_a;',fileprova(17:end-4)));% M0Y_a_6_0_2000rpm_m_0_1=M0Y_a;