1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
Function Acc(PNEU, DONNEES, RAYON, ALPHA, BETA) As Double
'Récupération données véhicule
MasseMs = DONNEES(1) %Apparition de l'erreur 13
CentrageM = DONNEES(2)
MasseMnSAV = DONNEES(3)
MasseMnSAR = DONNEES(4)
Massepilote = DONNEES(5)
HcdGMnS = DONNEES(6)
ZHcdGMS = DONNEES(7)
Voieavant = DONNEES(8)
Voiearriere = DONNEES(9)
empattement = DONNEES(10)
RaideurressortAV = DONNEES(11)
RaideurressortAR = DONNEES(12)
RaideurBARAV = DONNEES(13)
RaideurBARAR = DONNEES(14)
RaideurPNEU = DONNEES(15)
InertieTanguage = DONNEES(16)
ButeedetenteOhlins = DONNEES(17)
ButeecompressionOhlins = DONNEES(18)
PackersAV = DONNEES(19)
CdRAV = DONNEES(20)
CdRAR = DONNEES(21)
OuvertureD = DONNEES(22)
OuvertureG = DONNEES(23)
CarossageD = DONNEES(24)
CarossageG = DONNEES(25)
HdCD = DONNEES(26)
HdCG = DONNEES(27)
MRRAV = DONNEES(28)
MRRAR = DONNEES(29)
MRARBAV = DONNEES(30)
'Initialisation Accélération LAT
Ayinit = 1
'Calcul du poids au roue inital
MasseTot = Massepilote + MasseMs + MasseMnSAV + MasseMnSAR
FZAvd = MasseTot * (1 - CentrageM) / 4
FZAvg = MasseTot * (1 - CentrageM) / 4
FZArd = MasseTot * CentrageM / 4
FZArg = MasseTot * CentrageM / 4
'Calcul Vitesse liénaire/lacet initiale
V = Sqr(RAYON * Ayinit)
Vlacet = Ayinit / V
For i = 1 To 3
'Calcul des angles de dérives
'FRONT
'Geometric
VRF = RAYON * Vlacet
VYRFGeom = VRF * Sin(Atn(ALPHA - RAYON * Sin(BETA) / (Vlacet * Cos(BETA) - Voieavant / 2)))
VXRFGeom = VRF * Cos(Atn(ALPHA - RAYON * Sin(BETA) / (Vlacet * Cos(BETA) - Voieavant / 2)))
Debug.Print VXRFGeom
'From Yaw Speed
VXRFYawSpeed = (Sqr(Voieavant / 2 + (CentrageM) * empattement) * Vlacet * Cos(Atn(Voieavant / 2 / ((CentrageM) * empattement))))
VYRFYawSpeed = (Sqr(Voieavant / 2 + (CentrageM) * empattement) * Vlacet * Sin(Atn(Voieavant / 2 / ((CentrageM) * empattement))))
VYRF = VYRFGeom + VYRFYawSpeed
VXRF = VXRFGeom + VXRFYawSpeed
'Final value for front (Approximation Slipangle avant droite = slip angle avant gauche)
SlipAngleRF = Atn(VYRF / VXRF)
SlipAngleLF = SlipAngleRF
'REAR
'Geometric
VRR = RAYON * Vlacet
VYRRGeom = VRR * Sin(Atn(RAYON * Sin(BETA) / (Vlacet * Cos(BETA) - Voiearriere / 2)))
VXRRGeom = VRR * Cos(Atn(RAYON * Sin(BETA) / (Vlacet * Cos(BETA) - Voiearriere / 2)))
'From Yaw Speed
VXRRYawSpeed = (Sqr(Voiearriere / 2 + (1 - CentrageM) * empattement) * Vlacet * Cos(Atn(Voiearriere / 2 / ((1 - CentrageM) * empattement))))
VYRRYawSpeed = (Sqr(Voiearriere / 2 + (1 - CentrageM) * empattement) * Vlacet * Sin(Atn(Voiearriere / 2 / ((1 - CentrageM) * empattement))))
VYRR = VYRRGeom + VYRRYawSpeed
VXRR = VXRRGeom + VXRRYawSpeed
'Final value for front (Approximation Slipangle avant droite = slip angle avant gauche)
SlipAngleRR = Atn(VYRR / VXRR)
SlipAngleLR = SlipAngleRR
FYAvd = 2 * FZAvd + SlipAngleRF + CarossageD
FYAvg = FZAvg + SlipAngleLF + CarossageG
FYArd = FZArd * SlipAngleRR * CarossageD
FYArg = FZArg + SlipAngleLR + CarossageG + 0.1
'Calcul de l'Ay correspondant
Acc = (FYAvd + FYAvg + FYArd + FYArg) / MasseTot
'Calcul de l'angle de roulis
RaideurRoulisPneuAV = RaideurPNEU * Voieavant * Voieavant / 2
RaideurRoulisPneuAR = RaideurPNEU * Voiearriere * Voiearriere / 2
RaideurRoulisPneu = RaideurRoulisPneuAV + RaideurRoulisPneuAR
RaideurRoulisBARAV = RaideurBARAV * MRARBAV * MRARBAV
RaideurRoulisBARAR = RaideurBARAR * MRARBAR * MRARBAR
RaideurRoulisBAR = RaideurRoulisBARAV + RaideurRoulisBARAR
RaideurRoulisRessortAV = RaideurressortAV * (3.14 / 180) * 0.5 / (MRRAV * MRRAV) * Voieavant * Voieavant
RaideurRoulisRessortAR = RaideurressortAR * (3.14 / 180) * 0.5 / (MRRAR * MRRAR) * Voiearriere * Voiearriere
RaideurRoulisRessort = RaideurRoulisRessortAV + RaideurRoulisRessortAR
AntiRollTorqueFront = (RaideurRoulisRessortAV + RaideurRoulisBARAV) * RaideurRoulisPneuAV / (RaideurRoulisRessortAV + RaideurRoulisBARAV + RaideurRoulisPneuAV)
AntiRollTorqueRear = (RaideurRoulisRessortAR + RaideurRoulisBARAR) * RaideurRoulisPneuAR / (RaideurRoulisRessortAR + RaideurRoulisBARAR + RaideurRoulisPneuAR)
RollAngle = (MasseMs * Acc * (CdG - ((CdRAV + CdRAR) / 2))) / (RaideurRoulisPneu + RaideurRoulisBAR + RaideurRoulisRessort)
'Calcul des nouveaux transferts de charge
SElasticWTfront = MasseMs * (1 - CentrageM) * Acc * (CdG - CdRAV) / Voieavant * (AntiRollTorqueFront / (AntiRollTorqueFront + AntiRollTorqueRear))
SElasticWTrear = MasseMs * CentrageM * Acc * (CdG - CdRAR) / Voiearriere * (AntiRollTorqueRear / (AntiRollTorqueFront + AntiRollTorqueRear))
LatGeoWT = MasseMs * Acc * CdRAV / ((Voieavant + Voiearriere) / 2)
LatNsWT = ((MasseMnSAV + MasseMnSAR) / 2 * Acc * HcdGMnS) / ((Voieavant + Voiearriere) / 2)
'Calcul du poids au roues
FZAvd = MasseTot * (1 - CentrageM) / 4 + SElasticWTfront + LatGeoWT + LatNsWT
FZAvg = MasseTot * (1 - CentrageM) / 4 - SElasticWTfront - LatGeoWT - LatNsWT
FZArd = MasseTot * CentrageM / 4 + SElasticWTrear + LatGeoWT + LatNsWT
FZArg = MasseTot * CentrageM / 4 - SElasticWTrear - LatGeoWT - LatNsWT
'Calcul de la nouvelle vitesse
V = Sqr(RAYON * Acc)
Vlacet = Acc / V
Next
End Function |
Partager