Appendice C: Files Matlab relativi al modello QSTM_07
Appendice C Files Matlab relativi al modello
QSTM_07
Nel primo paragrafo di questa appendice viene riportato, come esempio, lo Script Matlab
relativo al file di inizializzazione del sistema Simulink QSTM_07 per il test 1. Questo file
permette di settare i valori dei momenti applicati alla ruota e al tamburo al fine di definire
la condizione di moto.
Nel secondo paragrafo è riportato la function tyre_07 con la quale vengono calcolati, in
ogni istante, tutti i parametri caratteristici delle equazioni del moto.
C.1 Script QSTM_in_bug1 del modello QSTM_07
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % I/O Control Parameters % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initialization file for QSTM_07.mdl .
% The first part loads all needed costants and experimental data depending
% on the number of considered test, and the second allows to choose initial
% conditions for the simulation: % 1) Quasi steady free-rolling; % 2) Steady free-rolling;
% 3) Steady braked condition. %
%---%
N_max = inf; %Maximum number of data rows
% The Maximum number of rows parameter indicates how many data rows to % save.
% If the simulation generates more rows than the specified maximum, % the simulation saves only the most recently generated rows. To capture % all the data, set this value to inf.
Appendice C: Files Matlab relativi al modello QSTM_07
% The Decimation parameter allows you to write data at every nth sample, % where n is the decimation factor. The default decimation, 1, writes data
% at every time step.
t_sam = 0; %Sampling time of data for var. step sim.
% The Sample time parameter allows you to specify a sampling interval at % which to collect points. This parameter is useful when using a
% variable-step solver where the interval between time steps may not be % the same. The default value of -1 causes the block to inherit the sample
% time from the driving block when determining which points to write. t_end = 10;
global RD ID IW Ro N_nom V_max Omega_max CNa CNb Crv Cre0 Cre1 Crd0
Crd1...
Crd2 Crv1 Crv2 n Crsx testnum
%========================================% % INPUT DATA OF THE DRUM MODEL % %========================================% RD = 1.432; %[m] Radius of the drum
ID = 25050; %[kg*m²] Inertia moment of the drum m = ID/RD^2; %[kg] Mass of the drum
%======================================================% % INPUT DATA OF THE WHEEL LONGITUDINAL MODEL % %======================================================% p_r = 15.3; %[bar] Rated pressure
W = 0.4369; %[m] Width
D_W = 1.1925; %[m] Diameter of the wheel
Ro = D_W/2; %[m] Undeformed radius (val MB 0.593 at 13.8 bar) N_nom = 204500; %[N] Nominal load
V_max = 114; %[m/s] Max velocity
Omega_max = V_max/Ro; %[rad/s] Max angular velocity p_i = 13.8; %[bar] Test Pressure
N_0 = 161424; %[N] Medium vertical load %--- Spin dynamics ---%
IW = 20.06; %[kg*m²] Inertia moment of the wheel %--- Vertical load ---%
% N = CNA*(1+CN2*p_i/p_r)*(delta/Ro + CNB*(delta/Ro)^2) % N/N_nom = CNa*delta/Ro + CNb*(delta/Ro)^2
CN1 = 1.5831e+005; CN2 = 15.933; CN3 = 0.29872; CN4 = 2.2135; CNA = 58120; CNB = 1.331;
Appendice C: Files Matlab relativi al modello QSTM_07
Drum_cor = exp(1.64*(-1/RD)); CNa = CNA*(1+CN2*p_i/p_r)/N_nom;
CNb = CNA*(1+CN2*p_i/p_r)*CNB*Drum_cor/N_nom; %--- Unloaded rolling radius ---%
% R/Ro=1+Crv*(V/v_max)^2 Crv = 3.6466e-002;
%--- Effective rolling radius ---% % 1+Cre0*sqrt(delta/Ro)+Cre1*(delta/Ro) Cre0 = -0.20912; Cre1 = 0.16954; %--- Rolling friction ---% Crd0 = 0.0056209557; Crd1 = 0.0054807014; Crd2 = 0.0; Crv1 = 3.04; Crv2 = 2.148; n = 2.2; Crsx = 0; % Crsx = 187; %======================================% % TEST DATA & DYNAMIC INPUTS % %======================================% load tests/test_bug1.mat testnum = 1; testid = num2str(testnum); Rr = 0.55843; %[m] Reference radius samp_t = Temps; samp_Fhz = 10*VerticalLoad; samp_V_D = Vitesse_piste; samp_V_W = Vitesse_roue; samp_T = 10*Couple; samp_Energy_B = Energie_frein; samp_Omega_W = samp_V_W/Rr; samp_Omega_D = samp_V_D/RD;
clear Temps VerticalLoad Vitesse_piste Vitesse_roue Couple Energie_frein
%==========================% % INITIALIZATION % %==========================%
%Per far sì che in assenza di Torque il sistema si trovi sin dall'inizio %della simulazione in condizioni di free-rolling si pone sx=0.
%Rigorosamente ciò non è vero, ma numericamente tale condizione è %accettabile.
% Initial angular velocity of the drum V_0 = samp_V_D(1);
Appendice C: Files Matlab relativi al modello QSTM_07
%--- Starting effective rolling radius value ---% V_a_0 = V_0/V_max;
N_a_0 = N_0/N_nom;%ricorda che N_0 è il valore medio del carico applicato delta_a = (-CNa+sqrt(CNa^2+4*CNb*N_a_0))/(2*CNb);
delta = delta_a*Ro;
R_0 = Ro*(1+Crv*V_a_0^2);%raggio nella cond.iniziale h_0 = R_0 - delta;
Res = 1 + Cre0*sqrt(delta_a) + Cre1*delta_a;
Re_0 = Res*R_0;%valore iniziale del raggio di rotolamento clear N_a_0 delta Res
%---%
%======================================================================== %
% Initial value of slip coefficient and driving torque on the drum ---%
%======================================================================== %
%--- Quasi steady free-rolling ---%
% Free-rolling without torques on wheel or drum (T_W_0 = T_D_0 = 0 )
if 1==0
sx_0 = 0;
Omega_W_0 = (1-sx_0)*V_0/Re_0; T_W_0 = 0;
T_D_0 = 0;
clear V_a_0 delta_a h_0 Re_0
%--- Steady free-rolling ---%
% Free-rolling without torque on wheel (T_W_0 = 0) but with a driving % torque on drum (T_D_0 ~= 0 ) depending on a given sx_0
elseif 1==1 %(Per QSTM07_tree)
sx_0 = 0; Omega_W_0 = (1-sx_0)*V_0/Re_0; T_W_0 = 0; miroll_0 = (Crd0 + Crd1*delta_a + Crd2*delta_a^2)*(1+Crv1*V_a_0^2)/... (1+Crv2*(V_a_0)^n);%miroll_0 al t=0
T_D_0 = -miroll_0*N_0*(RD+h_0);%valore che garantisce la stazionarietà nella cond. iniziale
clear delta_a V_a_0 Re_0
%--- Steady braked condition ---%
% Condition with a braking torque on wheel (T_W_0 ~= 0 ) and a driving % torque on drum (T_D_0 ~= 0 ) such they give a costant sx_0
elseif 1==0 sx_0 = 0.01; Omega_W_0 = (1-sx_0)*V_0/Re_0; out = tyre_07(N_0,V_0,Omega_W_0,0); Fb_0 = out(15); Froll_0 = out(16); epsilon_0 = V_a_0*(2*Crv*(V_a_0))/(1+Crv*(V_a_0)^2); Reb_0 = V_0/Omega_W_0; eta_0 = (1-epsilon_0)*(IW/ID)*(RD/Reb_0); T_sign = Froll_0*h_0*(1+eta_0*RD/h_0)/(1-eta_0) +... Fb_0*h_0*(1-Reb_0/h_0)/(1+Reb_0/RD);
Appendice C: Files Matlab relativi al modello QSTM_07
F_0 = out(17);
T_D_0 = -(F_0*RD+T_sign)*(1-eta_0);
T_W_0 = (h_0+eta_0*RD)*F_0 - (1-eta_0)*T_sign; clear V_a_0 delta_a h_0 Re_0
clear sx_0 out Fb_0 Froll_0 epsilon_0 Reb_0 eta_0 T_sign F_0
end
% Next values are used by QSTM_sel_plot.m to calculate sx from experimental % data. Re_in = mean(samp_V_D(1:10)./samp_Omega_W(1:10)); R_in = Ro*(1+Crv*(mean(samp_V_D(1:10))/V_max)^2); Res = Re_in/R_in; samp_Re = Res*Ro*(1+Crv*(samp_V_D/V_max).^2); samp_sx = 1-samp_Re.*samp_Omega_W./samp_V_D;
C.2 Function Tyre_07 del modello QSTM_07
% Questa function rappresenta il cuore del modello Simulink per la % modellizzazione della dinamica del pneumatico, infatti con questa si % calcolano ad ogni passo di iterazione tutti i parametri quali delta, Re,
% sx, etc, necessari per esprimere l'interazione tra i due corpi, Wheel e % Drum.
% In questo file sono presenti le modifiche, rispetto al file tyre04, che % permettono di inglobare anche l'azione del torque applicato al drum. % In questa versione si usano le formule che inglobano l'azione del torque
% sul drum (T_D) solo nella x (xD):
% si considerano: F=Froll+Fb e x=xD+xroll+xb.
%- %---%
function out = tyre_07(N,V,Omega,T_D)
global RD ID IW Ro N_nom V_max Omega_max CNa CNb Crv Cre0 Cre1 Crd0
Crd1... Crd2 Crv1 Crv2 n Crsx testnum V_a = V/V_max; Omega_a = Omega/Omega_max; N_a = N/N_nom; %======================================================================== =% % CARCASS MODEL % % input: N V % % output: delta R h Re %======================================================================== =% delta_a = (-CNa+sqrt(CNa^2+4*CNb*N_a))/(2*CNb);
Appendice C: Files Matlab relativi al modello QSTM_07
R = Ro*(1+Crv*(V/V_max)^2); %Variazione del raggio della ruota con la %velocità angolare della stessa
%Oss: Perchè non è stato preso omega/omega_max?
% In generale il drum può anche essere % fermo e la ruota girare!!!
h = R - delta; %Distanza tra l'hub della ruota e la superficie del drum %considerando sia il contributo del carico N che quello %della velocità angolare della ruota
Res = 1 + Cre0*sqrt(delta_a) + Cre1*delta_a;
Re = Res*R; %Variazione del raggio effettivo di rotolamento con la velocità %e il carico %======================================================================== =% % CONTACT PARAMETERS % % input: V Omega Re % % output: Reb Vr Vs sx %======================================================================== =%
Reb = V/Omega; %Raggio di rotolamento frenato
Vr = Re*Omega; %Velocità periferica del pneumatico nella zona di contatto Vs = V-Vr; %Velocità di slip sx = Vs/V; %Slip coefficient %======================================================================== =% % BRAKING FORCE % % input: V sx N h Reb % % output: mib Fb xb %======================================================================== =%
%Parametri per il calcolo di Fb, Froll, xb, xroll: Kmisx = [ 8.43 7.00 6.00 ]; C1 = [ 0.1660 0.1660 0.1660 ]; C0 = [-44.5228 -31.7451 -26.0834 ]; K2 = C0(testnum) + C1(testnum)*V; mib = (K2*sx^2 + Kmisx(testnum)*abs(sx))*sign(sx); Fb = mib*N; xb = mib*h*(1-Reb/h)/(1+Reb/RD); %======================================================================== =% % ROLLING FRICTION %
% input: V_a delta_a sx N h Reb %
Appendice C: Files Matlab relativi al modello QSTM_07
%======================================================================== =% miroll_0 = (Crd0 + Crd1*delta_a + Crd2*delta_a^2)*(1+Crv1*V_a^2)/(1+Crv2*(V_a)^n); Kroll = 196.5000;miroll = miroll_0 * (1 + Kroll * sx^2); Froll = miroll*N; epsilon = (V/V_max)*(2*Crv*((V/V_max)))/(1+Crv*((V/V_max))^2); eta = (1-epsilon)*(IW/ID)*(RD/Reb); xroll = miroll*h*(1+eta*RD/h)/(1-eta); %======================================================================== =% % xD % % input: T_D N eta % % output: xD %======================================================================== =% xD=(T_D/N)*(eta/(1-eta)); %======================================================================== =%
% LONGITUDINAL FORCE & LEVER ARM % % input: Fb Froll % xb xroll xD % output: F x %======================================================================== =% F = Fb + Froll; x = xb + xroll + xD; %======================================================================== =%
% INDICIZZAZIONE DELLE USCITE
%======================================================================== =% out(1) = delta; out(2) = R; out(3) = h; out(4) = Re; out(5) = Reb; out(6) = Vr; out(7) = Vs; out(8) = sx; out(9) = 0; out(10) = 0; out(11) = 0; out(12) = mib; out(13) = miroll_0; out(14) = miroll; out(15) = Fb;