From a262377257efc84b65b75ab448e2cb4e68919e59 Mon Sep 17 00:00:00 2001 From: Tacocat0254 Date: Thu, 24 Sep 2026 00:37:42 -0500 Subject: [PATCH] Add preliminary torque-curve and speed-scheduled powertrain model --- BobLib/Controllers/VCU.mo | 21 +- .../Internal/PowerLimitedMotor.mo | 12 +- BobLib/ElectricDrives/Motor.mo | 6 + BobLib/Experiments/Standards/FourPostSim.mo | 11 +- .../Standards/Templates/FMI/BaseVehicleFMI.mo | 11 +- ...m_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo | 32 + .../Templates/FourPost/package.order | 1 + .../Templates/Vehicle/BaseVehicleSim.mo | 10 +- ...m_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo | 10 +- .../EVBatInvMotDiff_DWBCStabar_DWBCRecord.mo | 695 ++++++++-------- ...tInvMotDiff_DWBCStabar_DWBCStabarRecord.mo | 746 ++++++++++-------- ...BatInvMotDiff_DWBCStabar_DWDirectRecord.mo | 683 ++++++++-------- .../EVBatInvMotDiff_DWBC_DWBCRecord.mo | 684 ++++++++-------- .../EVBatInvMotDiff_DWBC_DWBCStabarRecord.mo | 695 ++++++++-------- .../EVBatInvMotDiff_DWBC_DWDirectRecord.mo | 672 ++++++++-------- .../EVBatInvMotDiff_DWDirect_DWBCRecord.mo | 672 ++++++++-------- ...BatInvMotDiff_DWDirect_DWBCStabarRecord.mo | 683 ++++++++-------- ...EVBatInvMotDiff_DWDirect_DWDirectRecord.mo | 660 ++++++++-------- .../ElectricDrives/MotorRecord.mo | 4 + .../SpeedScheduledTransmissionRecord.mo | 36 + .../VehicleRecord/Transmissions/package.mo | 17 + .../VehicleRecord/Transmissions/package.order | 1 + BobLib/Records/VehicleRecord/package.order | 1 + .../Transmissions/FixedRatioTransmission.mo | 8 + .../Internal/SpeedGearScheduler.mo | 57 ++ .../Internal/VariableRatioGear.mo | 39 + BobLib/Transmissions/Internal/package.order | 2 + .../SpeedScheduledTransmission.mo | 105 +++ BobLib/Transmissions/package.order | 1 + 29 files changed, 3601 insertions(+), 2974 deletions(-) create mode 100644 BobLib/Experiments/Standards/Templates/FourPost/FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo create mode 100644 BobLib/Records/VehicleRecord/Transmissions/SpeedScheduledTransmissionRecord.mo create mode 100644 BobLib/Records/VehicleRecord/Transmissions/package.mo create mode 100644 BobLib/Records/VehicleRecord/Transmissions/package.order create mode 100644 BobLib/Transmissions/Internal/SpeedGearScheduler.mo create mode 100644 BobLib/Transmissions/Internal/VariableRatioGear.mo create mode 100644 BobLib/Transmissions/SpeedScheduledTransmission.mo diff --git a/BobLib/Controllers/VCU.mo b/BobLib/Controllers/VCU.mo index 1a85113..56e5057 100644 --- a/BobLib/Controllers/VCU.mo +++ b/BobLib/Controllers/VCU.mo @@ -20,7 +20,7 @@ model VCU "Multiplier mapping sensed motor speed to drive-positive speed" annotation( Dialog(tab = "Controllers", group = "Electric Drive Mapping")); parameter Real finalDriveRatio = 1 - "Final-drive ratio used to convert rear-axle torque command to motor torque" annotation( + "Fallback ratio used before the transmission publishes an engaged ratio" annotation( Dialog(tab = "Controllers", group = "Electric Drive Mapping")); // Longitudinal speed controller @@ -90,6 +90,8 @@ protected SI.Voltage sens_hv_bus_voltage; SI.Current sens_hv_bus_current; SI.Velocity sens_vehicle_speed; + Real sens_gear_ratio "Engaged transmission ratio sensed from the transmission bus"; + Real effectiveDriveRatio "Ratio used for axle/motor torque conversion"; Modelica.Blocks.Interfaces.RealInput steeringAngleBusTap( quantity = "Angle", @@ -132,6 +134,10 @@ protected "Vehicle speed from chassisBus" annotation( Placement(transformation(origin = {-100, 54}, extent = {{-6, -6}, {6, 6}}))); + Modelica.Blocks.Interfaces.RealInput gearRatioBusTap + "Engaged transmission ratio from transmissionBus" annotation( + Placement(transformation(origin = {-100, 46}, extent = {{-6, -6}, {6, 6}}))); + Modelica.Blocks.Sources.RealExpression powerRequestBusSignal( y = P_req) "Power request published to electricMotorControlBus" annotation( Placement(transformation(origin = {54, 42}, extent = {{-8, -4}, {8, 4}}))); @@ -176,7 +182,7 @@ protected Placement(transformation(origin = {-70, -90}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Sources.RealExpression motorTorqueRequest( - y = driveTorqueCmd / max(finalDriveRatio, 1e-6)) annotation( + y = driveTorqueCmd / effectiveDriveRatio) annotation( Placement(transformation(origin = {-44, 16}, extent = {{-5, -2}, {5, 2}}))); Modelica.Blocks.Sources.RealExpression regenLimitRequest( @@ -200,10 +206,10 @@ protected equation rearAxleTorqueCapacity = - tau_max * max(finalDriveRatio, 1e-6); + tau_max * effectiveDriveRatio; rearAxleRegenTorqueCapacity = - regenTorqueLimit * max(finalDriveRatio, 1e-6); + regenTorqueLimit * effectiveDriveRatio; cmd_steering_angle = steeringAngleBusTap; cmd_accelerator_pedal = acceleratorPedalBusTap; @@ -213,6 +219,11 @@ equation sens_hv_bus_voltage = hvBusVoltageBusTap; sens_hv_bus_current = hvBusCurrentBusTap; sens_vehicle_speed = vehicleSpeedBusTap; + sens_gear_ratio = gearRatioBusTap; + // Prefer the live engaged ratio published by the transmission; fall back to + // the fixed parameter only if the bus signal is not yet meaningful. + effectiveDriveRatio = + noEvent(if abs(sens_gear_ratio) > 1e-6 then sens_gear_ratio else max(finalDriveRatio, 1e-6)); speedControlTorqueCmd = if enablePTNDriveSpeedControl or @@ -306,6 +317,8 @@ equation Line(points = {{0, -100}, {-96, -100}, {-96, 20}}, color = {0, 0, 127})); connect(controlBus.chassisBus.vehicleSpeed, vehicleSpeedBusTap) annotation( Line(points = {{0, -100}, {-100, -100}, {-100, 54}}, color = {0, 0, 127})); + connect(controlBus.transmissionBus.gearRatio, gearRatioBusTap) annotation( + Line(points = {{0, -100}, {-100, -100}, {-100, 46}}, color = {0, 0, 127})); connect(powerRequestBusSignal.y, controlBus.electricMotorControlBus.powerRequest) annotation( Line(points = {{62.8, 42}, {94, 42}, {94, -100}, {0, -100}}, color = {0, 0, 127})); diff --git a/BobLib/ElectricDrives/Internal/PowerLimitedMotor.mo b/BobLib/ElectricDrives/Internal/PowerLimitedMotor.mo index 00a92c1..bfb2255 100644 --- a/BobLib/ElectricDrives/Internal/PowerLimitedMotor.mo +++ b/BobLib/ElectricDrives/Internal/PowerLimitedMotor.mo @@ -33,6 +33,10 @@ model PowerLimitedMotor parameter SI.Power P_cont_high = 75e3 "High end continuous power band [W]"; parameter Real eta_mot = 0.96 "Constant motoring efficiency approximation"; parameter Real eta_reg = 0.95 "Constant regen efficiency approximation"; + parameter Boolean useTorqueTable = false + "Use a torque-vs-rpm curve as an additional peak-torque cap"; + parameter Real torqueTable[:, 2] = [0.0, 1e9; 1.0, 1e9] + "Peak torque vs speed (rpm, Nm); applied as an extra cap when useTorqueTable"; parameter Real lossTable[:, 2] = [ 0, 0; 1000, 200; @@ -77,6 +81,7 @@ protected Real peakFactor "1 -> allow peak, 0 -> only continuous"; SI.Torque T_allow; + SI.Torque T_table_cap "Torque-vs-rpm curve cap (large when table disabled)"; SI.Current I_allow; Real P_allow; @@ -109,6 +114,11 @@ equation T_allow = peakFactor*T_peak + (1 - peakFactor)*T_cont; I_allow = peakFactor*I_peak_2min + (1 - peakFactor)*I_cont; + // Optional torque-vs-rpm curve, applied as an additional cap. Disabled by + // default (returns a large value) so scalar-only motors are unchanged. + T_table_cap = + if useTorqueTable then interp1(torqueTable, rpm) else Modelica.Constants.inf; + // Continuous power envelope vs speed P_cont_env = @@ -144,7 +154,7 @@ equation // Combined torque limit tau_lim = - noEvent(min(T_allow, + noEvent(min(min(T_allow, T_table_cap), min(tau_lim_from_power, tau_lim_from_current))); diff --git a/BobLib/ElectricDrives/Motor.mo b/BobLib/ElectricDrives/Motor.mo index f6eb8cf..194dd70 100644 --- a/BobLib/ElectricDrives/Motor.mo +++ b/BobLib/ElectricDrives/Motor.mo @@ -39,6 +39,10 @@ model Motor "Select reverse torque direction when starting exactly from standstill"; parameter SI.Inertia rotorJ = 0.02521 "Motor rotor inertia"; + parameter Boolean useTorqueTable = false + "Use a torque-vs-rpm curve as an additional peak-torque cap"; + parameter Real torqueTable[:, 2] = [0.0, 1e9; 1.0, 1e9] + "Peak torque vs speed (rpm, Nm); applied as an extra cap when useTorqueTable"; Modelica.Electrical.Analog.Interfaces.PositivePin pin_p "Motor-side DC positive pin" annotation( @@ -64,6 +68,8 @@ model Motor P_cont_high = P_cont_high, eta_mot = eta_mot, eta_reg = eta_reg, + useTorqueTable = useTorqueTable, + torqueTable = torqueTable, w_eps = w_eps, reverseLaunch = reverseLaunch) annotation( Placement(transformation(origin = {-20, 0}, extent = {{-30, -30}, {30, 30}}))); diff --git a/BobLib/Experiments/Standards/FourPostSim.mo b/BobLib/Experiments/Standards/FourPostSim.mo index 69b6d37..fe44880 100644 --- a/BobLib/Experiments/Standards/FourPostSim.mo +++ b/BobLib/Experiments/Standards/FourPostSim.mo @@ -2,7 +2,7 @@ within BobLib.Experiments.Standards; model FourPostSim - extends Templates.FourPost.FourPostSim_DWBCStabar_DWBCStabar; + extends Templates.FourPost.FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar; extends BobLib.Icons.SimulationIcon; annotation( @@ -13,12 +13,5 @@ model FourPostSim lv = "LOG_STDOUT,LOG_ASSERT,LOG_STATS", s = "dassl", variableFilter = ".*"), - Documentation(info = " -

-Model FourPostSim is the front-facing standard four-post simulation entry point. -

-

-It extends the selected four-post architecture template, applies the standard experiment setup, and is intended for suspension and chassis response studies. -

-")); + Documentation(info = "

Generated standard four-post simulation entry point.

")); end FourPostSim; diff --git a/BobLib/Experiments/Standards/Templates/FMI/BaseVehicleFMI.mo b/BobLib/Experiments/Standards/Templates/FMI/BaseVehicleFMI.mo index 223ebdf..4781622 100644 --- a/BobLib/Experiments/Standards/Templates/FMI/BaseVehicleFMI.mo +++ b/BobLib/Experiments/Standards/Templates/FMI/BaseVehicleFMI.mo @@ -115,13 +115,20 @@ partial model BaseVehicleFMI eta_reg = pVehicle.pMotor.eta_reg, w_eps = pVehicle.pMotor.w_eps, reverseLaunch = pVehicle.pMotor.reverseLaunch, + useTorqueTable = pVehicle.pMotor.useTorqueTable, + torqueTable = pVehicle.pMotor.torqueTable, rotorJ = pVehicle.pMotor.rotorJ) annotation( choicesAllMatching = true, Dialog(group = "Plant Models"), Placement(transformation(origin = {-79, -10.3334}, extent = {{-10, -10}, {10, 10}}, rotation = -180))) constrainedby VehicleInterfaces.ElectricDrives.Interfaces.Base "Traction motor subsystem"; - replaceable BobLib.Transmissions.FixedRatioTransmission transmission( - gearRatio = pVehicle.pDriveline.finalDriveRatio) annotation( + replaceable BobLib.Transmissions.SpeedScheduledTransmission transmission( + nGears = pVehicle.pTransmission.nGears, + gearRatios = pVehicle.pTransmission.gearRatios, + upshiftSpeeds = pVehicle.pTransmission.upshiftSpeeds, + downshiftSpeeds = pVehicle.pTransmission.downshiftSpeeds, + initialGear = pVehicle.pTransmission.initialGear, + wheelRadius = pVehicle.pRrPartialWheel.R0) annotation( choicesAllMatching = true, Dialog(group = "Plant Models"), Placement(transformation(origin = {-40, -10}, extent = {{-10, -10}, {10, 10}}))) constrainedby VehicleInterfaces.Transmissions.Interfaces.Base "Transmission subsystem"; diff --git a/BobLib/Experiments/Standards/Templates/FourPost/FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo b/BobLib/Experiments/Standards/Templates/FourPost/FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo new file mode 100644 index 0000000..2123669 --- /dev/null +++ b/BobLib/Experiments/Standards/Templates/FourPost/FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo @@ -0,0 +1,32 @@ +within BobLib.Experiments.Standards.Templates.FourPost; + +model FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar + + extends BaseFourPostSim( + redeclare record VehicleRecord = BobLib.Records.VehicleDefn.EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord, + redeclare model FrAxleModel = BobLib.Chassis.Suspension.FrAxleDW_BC_Stabar, + redeclare model RrAxleModel = BobLib.Chassis.Suspension.RrAxleDW_BC_Stabar, + frAxleDW( + pStabar = pFrStabar + ), + pFrStabar( + leftArmEnd = pVehicle.pFrStabar.leftArmEnd, + leftBarEnd = pVehicle.pFrStabar.leftBarEnd, + barRate = 0 + ), + rrAxleDW( + pStabar = pRrStabar + ), + pRrStabar( + leftArmEnd = pVehicle.pRrStabar.leftArmEnd, + leftBarEnd = pVehicle.pRrStabar.leftBarEnd, + barRate = 0 + ) + ); + annotation( + Documentation(info = " +

+Generated four-post template FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar binds the selected vehicle record and axle architecture. +

+")); +end FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar; diff --git a/BobLib/Experiments/Standards/Templates/FourPost/package.order b/BobLib/Experiments/Standards/Templates/FourPost/package.order index a378693..96969ad 100644 --- a/BobLib/Experiments/Standards/Templates/FourPost/package.order +++ b/BobLib/Experiments/Standards/Templates/FourPost/package.order @@ -8,3 +8,4 @@ FourPostSim_DWBC_DWBCStabar FourPostSim_DWBCStabar_DWDirect FourPostSim_DWBCStabar_DWBC FourPostSim_DWBCStabar_DWBCStabar +FourPostSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar diff --git a/BobLib/Experiments/Standards/Templates/Vehicle/BaseVehicleSim.mo b/BobLib/Experiments/Standards/Templates/Vehicle/BaseVehicleSim.mo index 728a4ee..a62d61a 100644 --- a/BobLib/Experiments/Standards/Templates/Vehicle/BaseVehicleSim.mo +++ b/BobLib/Experiments/Standards/Templates/Vehicle/BaseVehicleSim.mo @@ -199,12 +199,20 @@ partial model BaseVehicleSim eta_reg = pVehicle.pMotor.eta_reg, w_eps = pVehicle.pMotor.w_eps, reverseLaunch = pVehicle.pMotor.reverseLaunch, + useTorqueTable = pVehicle.pMotor.useTorqueTable, + torqueTable = pVehicle.pMotor.torqueTable, rotorJ = pVehicle.pMotor.rotorJ) annotation( choicesAllMatching = true, Dialog(tab = "Subsystems", group = "Plant Models"), Placement(transformation(origin = {-79, -10.3334}, extent = {{-10, -10}, {10, 10}}, rotation = -180))) constrainedby VehicleInterfaces.ElectricDrives.Interfaces.Base "Traction motor subsystem"; - replaceable BobLib.Transmissions.FixedRatioTransmission transmission(gearRatio = pVehicle.pDriveline.finalDriveRatio) annotation( + replaceable BobLib.Transmissions.SpeedScheduledTransmission transmission( + nGears = pVehicle.pTransmission.nGears, + gearRatios = pVehicle.pTransmission.gearRatios, + upshiftSpeeds = pVehicle.pTransmission.upshiftSpeeds, + downshiftSpeeds = pVehicle.pTransmission.downshiftSpeeds, + initialGear = pVehicle.pTransmission.initialGear, + wheelRadius = pVehicle.pRrPartialWheel.R0) annotation( choicesAllMatching = true, Dialog(tab = "Subsystems", group = "Plant Models"), Placement(transformation(origin = {-40, -10}, extent = {{-10, -10}, {10, 10}}))) constrainedby VehicleInterfaces.Transmissions.Interfaces.Base "Transmission subsystem"; diff --git a/BobLib/Experiments/Standards/Templates/Vehicle/VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo b/BobLib/Experiments/Standards/Templates/Vehicle/VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo index 4c2c765..73a80ba 100644 --- a/BobLib/Experiments/Standards/Templates/Vehicle/VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo +++ b/BobLib/Experiments/Standards/Templates/Vehicle/VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar.mo @@ -11,12 +11,16 @@ model VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar pFrStabar( leftArmEnd = pVehicle.pFrStabar.leftArmEnd, leftBarEnd = pVehicle.pFrStabar.leftBarEnd, - barRate = pVehicle.pFrStabar.barRate), + barRate = pVehicle.pFrStabar.barRate + ), pRrStabar( leftArmEnd = pVehicle.pRrStabar.leftArmEnd, leftBarEnd = pVehicle.pRrStabar.leftBarEnd, - barRate = pVehicle.pRrStabar.barRate), + barRate = pVehicle.pRrStabar.barRate + ), headless = headless, initialLongitudinalVelocity = initialVel, - pVehicle = pVehicle)); + pVehicle = pVehicle + ) + ); end VehicleSim_EVBatInvMotDiff_DWBCStabar_DWBCStabar; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCRecord.mo index 2cefd51..bd6034e 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,83 +19,96 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BC_StabarRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, - rodPickup = 2, - shockPickup = 3, - stabarPickup = 1, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, + rodPickup = 2, + shockPickup = 3, + stabarPickup = 1, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.2, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Stabar.StabarRecord pFrStabar( - leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, - leftBarEnd = {-0.10664664, 0.2667, 0.11811}, - barRate = 257.62483055); + leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, + leftBarEnd = {-0.10664664, 0.2667, 0.11811}, + barRate = 1 + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -102,39 +116,41 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -142,43 +158,58 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -192,112 +223,128 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BCRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - rodPickup = 1, - shockPickup = 2, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + rodPickup = 1, + shockPickup = 2, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.265, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -305,39 +352,41 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -345,43 +394,58 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -395,128 +459,89 @@ record EVBatInvMotDiff_DWBCStabar_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBCStabar_DWBCRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension with a stabilizer bar and rear bellcrank-actuated double wishbone suspension. +Record EVBatInvMotDiff_DWBCStabar_DWBCRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBCStabar_DWBC.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBCStabar_DWBCRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord.mo index e4ee1e3..8b77f41 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,83 +19,96 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BC_StabarRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, - rodPickup = 2, - shockPickup = 3, - stabarPickup = 1, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, + rodPickup = 1, + shockPickup = 2, + stabarPickup = 3, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.1997, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Stabar.StabarRecord pFrStabar( - leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, - leftBarEnd = {-0.10664664, 0.2667, 0.11811}, - barRate = 257.62483055); + leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, + leftBarEnd = {-0.10664664, 0.2667, 0.11811}, + barRate = 257.62483055 + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -102,39 +116,41 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -142,43 +158,58 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -192,119 +223,136 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BC_StabarRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, - rodPickup = 1, - shockPickup = 2, - stabarPickup = 3, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, + rodPickup = 1, + shockPickup = 2, + stabarPickup = 3, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.2634, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Stabar.StabarRecord pRrStabar( - leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, - leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, - barRate = 535.473018735); + leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, + leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, + barRate = 535.473018735 + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -312,39 +360,41 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -352,43 +402,58 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -402,103 +467,123 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); + Ns = 140, + Np = 4, + SOC_start = 1 + ); parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); + tau_max = 230, + regenTorqueLimit = 220, + w_eps = 1, + motorSpeedSign = 1 + ); parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); + P_max_mot = 124000, + P_max_reg = 124000, + V_dc_max = 588 + ); parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); + Vdc_max = 630, + rpm_max_peak = 6500, + T_peak = 220, + T_cont = 130, + I_peak_2min = 360, + I_cont = 180, + Kt_Nm_per_A = 0.61, + peakTime = 120, + P_mech_peak = 124000, + P_cont_low = 75000, + P_cont_high = 75000, + eta_mot = 0.96, + eta_reg = 0.95, + w_eps = 1, + rotorJ = 0.02521 + ); parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + finalDriveRatio = 3.33, + diffInputRotorJ = 0.04, + diff_use_lsd = true, + diff_driveSideTorqueSign = 1, + diff_T_preload = 20, + diff_lockFractionAccel = 0.35, + diff_lockFractionDecel = 0.15, + diff_T_capacity_max = 1000, + diff_clutchEffectiveRadius = 1, + diff_kineticFrictionRatio = 0.85, + diff_w_transition = 1, + diff_c_viscous = 0.05, + halfshaftLeftC = 15000, + halfshaftLeftJEquivalent = 0.02, + halfshaftLeftD = 34.6410161513775, + halfshaftRightC = 15000, + halfshaftRightJEquivalent = 0.02, + halfshaftRightD = 34.6410161513775 + ); + + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission( + nGears = 6, + gearRatios = {19.25, 14, 11.67, 10.11, 9.13, 8.46}, + upshiftSpeeds = {11.846, 16.227, 19.446, 22.441, 24.855}, + downshiftSpeeds = {8.615, 13.526, 16.847, 20.266, 23.031}, + initialGear = 1, + wheelRadius = 0.2045 + ); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; @@ -518,25 +603,26 @@ record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord rearNormalLoad = 721.422043064354); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension with a stabilizer bar and rear bellcrank-actuated double wishbone suspension with a stabilizer bar. +Record EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBCStabar_DWBCStabar.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBCStabar_DWBCStabarRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWDirectRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWDirectRecord.mo index d01f170..5752bdb 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWDirectRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBCStabar_DWDirectRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,83 +19,96 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BC_StabarRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, - rodPickup = 2, - shockPickup = 3, - stabarPickup = 1, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + bellcrankStabarPickup = {-0.029010173628, 0.2971411507, 0.37219698865}, + rodPickup = 2, + shockPickup = 3, + stabarPickup = 1, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.2, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Stabar.StabarRecord pFrStabar( - leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, - leftBarEnd = {-0.10664664, 0.2667, 0.11811}, - barRate = 257.62483055); + leftArmEnd = {-0.03682914, 0.2667, 0.11597939}, + leftBarEnd = {-0.10664664, 0.2667, 0.11811}, + barRate = 1 + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -102,39 +116,41 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -142,43 +158,58 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -192,106 +223,122 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_DirectRecord pRrAxleDW( - rodToLower = true, - rodMount = {-1.55448, 0.57658, 0.116078}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.4, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + rodToLower = true, + rodMount = {-1.55448, 0.57658, 0.116078}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.4, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -299,39 +346,41 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -339,43 +388,58 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -389,128 +453,89 @@ record EVBatInvMotDiff_DWBCStabar_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBCStabar_DWDirectRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension with a stabilizer bar and rear direct-acting double wishbone suspension. +Record EVBatInvMotDiff_DWBCStabar_DWDirectRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBCStabar_DWDirect.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBCStabar_DWDirectRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCRecord.mo index 97d4d7d..6d1647b 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBC_DWBCRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,76 +19,88 @@ record EVBatInvMotDiff_DWBC_DWBCRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BCRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - rodPickup = 1, - shockPickup = 2, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + rodPickup = 1, + shockPickup = 2, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.2, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -95,39 +108,41 @@ record EVBatInvMotDiff_DWBC_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -135,43 +150,58 @@ record EVBatInvMotDiff_DWBC_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -185,112 +215,128 @@ record EVBatInvMotDiff_DWBC_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BCRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - rodPickup = 1, - shockPickup = 2, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + rodPickup = 1, + shockPickup = 2, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.265, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -298,39 +344,41 @@ record EVBatInvMotDiff_DWBC_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -338,43 +386,58 @@ record EVBatInvMotDiff_DWBC_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -388,128 +451,89 @@ record EVBatInvMotDiff_DWBC_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBC_DWBCRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension and rear bellcrank-actuated double wishbone suspension. +Record EVBatInvMotDiff_DWBC_DWBCRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBC_DWBC.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBC_DWBCRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCStabarRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCStabarRecord.mo index ccf69dd..b0c85b0 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCStabarRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWBCStabarRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,76 +19,88 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BCRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - rodPickup = 1, - shockPickup = 2, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + rodPickup = 1, + shockPickup = 2, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.2, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -95,39 +108,41 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -135,43 +150,58 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -185,119 +215,136 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BC_StabarRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, - rodPickup = 1, - shockPickup = 2, - stabarPickup = 3, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, + rodPickup = 1, + shockPickup = 2, + stabarPickup = 3, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.265, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Stabar.StabarRecord pRrStabar( - leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, - leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, - barRate = 535.473018735); + leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, + leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, + barRate = 1 + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -305,39 +352,41 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -345,43 +394,58 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -395,128 +459,89 @@ record EVBatInvMotDiff_DWBC_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBC_DWBCStabarRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension and rear bellcrank-actuated double wishbone suspension with a stabilizer bar. +Record EVBatInvMotDiff_DWBC_DWBCStabarRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBC_DWBCStabar.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBC_DWBCStabarRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWDirectRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWDirectRecord.mo index a4dd26b..9856ff9 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWDirectRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWBC_DWDirectRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,76 +19,88 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_BCRecord pFrAxleDW( - bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, - bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, - bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, - bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, - rodPickup = 1, - shockPickup = 2, - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 26269.02525], - springFreeLength = 0.1997, - damperTable = [-1, -850; 0, 0; 1, 850]); + bellcrankPivot = {-0.042144464098, 0.250754351932, 0.370010000136}, + bellcrankPivotAxis = {0.95754655, -0.26587315, -0.11142744}, + bellcrankRodPickup = {-0.014493326106, 0.348410770284, 0.374614186762}, + bellcrankShockPickup = {-0.01102742905, 0.34553503283, 0.411259910778}, + rodPickup = 1, + shockPickup = 2, + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 26269.02525], + springFreeLength = 0.2, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -95,39 +108,41 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -135,43 +150,58 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -185,106 +215,122 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_DirectRecord pRrAxleDW( - rodToLower = true, - rodMount = {-1.55448, 0.57658, 0.116078}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.4, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + rodToLower = true, + rodMount = {-1.55448, 0.57658, 0.116078}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.4, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -292,39 +338,41 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -332,43 +380,58 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -382,128 +445,89 @@ record EVBatInvMotDiff_DWBC_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWBC_DWDirectRecord defines the EV battery-inverter-motor-differential vehicle configuration with front bellcrank-actuated double wishbone suspension and rear direct-acting double wishbone suspension. +Record EVBatInvMotDiff_DWBC_DWDirectRecord is generated from vehicle.yml for EVBatInvMotDiff_DWBC_DWDirect.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWBC_DWDirectRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCRecord.mo index 9d95e25..95c326a 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,70 +19,82 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_DirectRecord pFrAxleDW( - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 40000], - springFreeLength = 0.525, - damperTable = [-1, -850; 0, 0; 1, 850]); + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 40000], + springFreeLength = 0.525, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -89,39 +102,41 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -129,43 +144,58 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -179,112 +209,128 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BCRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - rodPickup = 1, - shockPickup = 2, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + rodPickup = 1, + shockPickup = 2, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.265, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -292,39 +338,41 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -332,43 +380,58 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -382,128 +445,89 @@ record EVBatInvMotDiff_DWDirect_DWBCRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWDirect_DWBCRecord defines the EV battery-inverter-motor-differential vehicle configuration with front direct-acting double wishbone suspension and rear bellcrank-actuated double wishbone suspension. +Record EVBatInvMotDiff_DWDirect_DWBCRecord is generated from vehicle.yml for EVBatInvMotDiff_DWDirect_DWBC.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWDirect_DWBCRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCStabarRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCStabarRecord.mo index c50fa61..6bf4017 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCStabarRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWBCStabarRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,70 +19,82 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_DirectRecord pFrAxleDW( - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 40000], - springFreeLength = 0.525, - damperTable = [-1, -850; 0, 0; 1, 850]); + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 40000], + springFreeLength = 0.525, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -89,39 +102,41 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -129,43 +144,58 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -179,119 +209,136 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_BC_StabarRecord pRrAxleDW( - bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, - bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, - bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, - bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, - bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, - rodPickup = 1, - shockPickup = 2, - stabarPickup = 3, - rodToLower = false, - rodMount = {-1.53509479, 0.50330883, 0.26648017}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.2634, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + bellcrankPivot = {-1.39886851, 0.29230126, 0.1016}, + bellcrankPivotAxis = {0.887962410598, 0.302708516859, 0.346251803151}, + bellcrankRodPickup = {-1.41267566, 0.35197317, 0.08484064}, + bellcrankShockPickup = {-1.43801295, 0.36137285, 0.14160048}, + bellcrankStabarPickup = {-1.41346984, 0.31057564, 0.12306883}, + rodPickup = 1, + shockPickup = 2, + stabarPickup = 3, + rodToLower = false, + rodMount = {-1.53509479, 0.50330883, 0.26648017}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.265, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Stabar.StabarRecord pRrStabar( - leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, - leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, - barRate = 535.473018735); + leftArmEnd = {-1.43001283, 0.3032125, 0.4054766}, + leftBarEnd = {-1.3925183, 0.3032125, 0.41224196}, + barRate = 1 + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -299,39 +346,41 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -339,43 +388,58 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -389,128 +453,89 @@ record EVBatInvMotDiff_DWDirect_DWBCStabarRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWDirect_DWBCStabarRecord defines the EV battery-inverter-motor-differential vehicle configuration with front direct-acting double wishbone suspension and rear bellcrank-actuated double wishbone suspension with a stabilizer bar. +Record EVBatInvMotDiff_DWDirect_DWBCStabarRecord is generated from vehicle.yml for EVBatInvMotDiff_DWDirect_DWBCStabar.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWDirect_DWBCStabarRecord; diff --git a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWDirectRecord.mo b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWDirectRecord.mo index 237df79..0b86521 100644 --- a/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWDirectRecord.mo +++ b/BobLib/Records/VehicleDefn/EVBatInvMotDiff_DWDirect_DWDirectRecord.mo @@ -10,6 +10,7 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord import PowerElectronics = BobLib.Records.VehicleRecord.PowerElectronics; import ElectricDrives = BobLib.Records.VehicleRecord.ElectricDrives; import Drivelines = BobLib.Records.VehicleRecord.Drivelines; + import Transmissions = BobLib.Records.VehicleRecord.Transmissions; import TireModel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire.MF52; import Wheel = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.Tire; import Rack = BobLib.Records.VehicleRecord.Chassis.Suspension.Templates.SteeringRack; @@ -18,70 +19,82 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord import Axle = BobLib.Records.VehicleRecord.Chassis.Suspension; parameter Axle.AxleDW_DirectRecord pFrAxleDW( - rodToLower = true, - rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, - shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, - springTable = [0, 0; 1, 40000], - springFreeLength = 0.525, - damperTable = [-1, -850; 0, 0; 1, 850]); + rodToLower = true, + rodMount = {0.006762552642, 0.525610676234, 0.134465050856}, + shockMount = {-0.020673469702, 0.247847085458, 0.561456926868}, + springTable = [0, 0; 1, 40000], + springFreeLength = 0.525, + damperTable = [-1, -850; 0, 0; 1, 850] + ); parameter Wheel.Templates.PartialWheelRecord pFrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pFrRack( - leftPickup = {0.05715, 0.2260092, 0.1137158}, - cFactor = 0.0889); + leftPickup = {0.05715, 0.2260092, 0.1137158}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pFrDW( - upperFore_i = {0.1016, 0.237744, 0.2143252}, - upperAft_i = {-0.0680974, 0.2356358, 0.215138}, - lowerFore_i = {0.1016, 0.226314, 0.08001}, - lowerAft_i = {-0.0762, 0.226314, 0.08001}, - upper_o = {-0.0092964, 0.5420106, 0.2679954}, - lower_o = {0.0029972, 0.562991, 0.1139952}, - tie_o = {0.0569976, 0.546989, 0.1522222}, - wheelCenter = {0, 0.606110767456, 0.199898}); + upperFore_i = {0.1016, 0.237744, 0.2143252}, + upperAft_i = {-0.0680974, 0.2356358, 0.215138}, + lowerFore_i = {0.1016, 0.226314, 0.08001}, + lowerAft_i = {-0.0762, 0.226314, 0.08001}, + upper_o = {-0.0092964, 0.5420106, 0.2679954}, + lower_o = {0.0029972, 0.562991, 0.1139952}, + tie_o = {0.0569976, 0.546989, 0.1522222}, + wheelCenter = {0, 0.606110767456, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pFrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.82268281, rCM = {-0.00611067, 0.60164333, 0.1980248}, - inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}}), - ucaMass = MassRecord( + inertia = {{0.10584698, 0.00036654, 0.00061019}, {0.00036654, 0.16067787, -0.00076932}, {0.00061019, -0.00076932, 0.1081089}} + ), + ucaMass = MassRecord( m = 0.55776965, rCM = {-0.00187916, 0.45854113, 0.25343195}, - inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}}), - lcaMass = MassRecord( + inertia = {{0.00700626, -0.00058434, -0.0001073}, {-0.00058434, 0.0011635, 0.00116272}, {-0.0001073, 0.00116272, 0.00762498}} + ), + lcaMass = MassRecord( m = 0.5182905, rCM = {0.00803455, 0.40581792, 0.09882118}, - inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}}), - tieMass = MassRecord( + inertia = {{0.00649759, -0.00017572, -1.824e-05}, {-0.00017572, 0.00145437, 0.00068888}, {-1.824e-05, 0.00068888, 0.00776251}} + ), + tieMass = MassRecord( m = 0.13459415, rCM = {0.05709287, 0.34616483, 0.1281302}, - inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}})); + inertia = {{0.00178949, -8.3e-07, -1e-07}, {-8.3e-07, 2.994e-05, 0.00021109}, {-1e-07, 0.000211, 0.001764}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pFrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pFrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pFrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -89,39 +102,41 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -129,43 +144,58 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -179,106 +209,122 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pFrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pFrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pFrPartialWheel.R0 + ) + ); parameter Axle.AxleDW_DirectRecord pRrAxleDW( - rodToLower = true, - rodMount = {-1.55448, 0.57658, 0.116078}, - shockMount = {-1.50192144, 0.28884688, 0.36889916}, - springTable = [0, 0; 1, 43781.70875], - springFreeLength = 0.4, - damperTable = [-1, -1300; 0, 0; 1, 1300]); + rodToLower = true, + rodMount = {-1.55448, 0.57658, 0.116078}, + shockMount = {-1.50192144, 0.28884688, 0.36889916}, + springTable = [0, 0; 1, 43781.70875], + springFreeLength = 0.4, + damperTable = [-1, -1300; 0, 0; 1, 1300] + ); parameter Wheel.Templates.PartialWheelRecord pRrPartialWheel( - R0 = 0.2045, - rimR0 = 0.2045*0.625, - rimWidth = 0.2045*0.625*1.4, - staticAlpha = 0, - staticGamma = 0); + R0 = 0.2045, + rimR0 = 0.1278125, + rimWidth = 0.1789375, + staticAlpha = 0, + staticGamma = 0 + ); parameter Rack.RackAndPinionRecord pRrRack( - leftPickup = {-1.3763498, 0.2897124, 0.1700022}, - cFactor = 0.0889); + leftPickup = {-1.3763498, 0.2897124, 0.1700022}, + cFactor = 0.0889 + ); parameter DW.WishboneUprightLoopRecord pRrDW( - upperFore_i = {-1.279144, 0.2972308, 0.2482342}, - upperAft_i = {-1.4993874, 0.283845, 0.2434336}, - lowerFore_i = {-1.3142214, 0.283464, 0.086868}, - lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, - upper_o = {-1.5540736, 0.5267706, 0.29464}, - lower_o = {-1.55448, 0.57658, 0.116078}, - tie_o = {-1.45796, 0.5823966, 0.2143506}, - wheelCenter = {-1.5494, 0.60611077, 0.199898}); + upperFore_i = {-1.279144, 0.2972308, 0.2482342}, + upperAft_i = {-1.4993874, 0.283845, 0.2434336}, + lowerFore_i = {-1.3142214, 0.283464, 0.086868}, + lowerAft_i = {-1.4998192, 0.2835148, 0.0872236}, + upper_o = {-1.5540736, 0.5267706, 0.29464}, + lower_o = {-1.55448, 0.57658, 0.116078}, + tie_o = {-1.45796, 0.5823966, 0.2143506}, + wheelCenter = {-1.5494, 0.60611077, 0.199898} + ); parameter Axle.Templates.AxleMassRecord pRrAxleMass( - unsprungMass = MassRecord( + unsprungMass = MassRecord( m = 7.35220072, rCM = {-1.54081056, 0.59989818, 0.20113454}, - inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}}), - ucaMass = MassRecord( + inertia = {{0.15501895, -0.07141018, 0.00044628}, {-0.07141018, 0.25694304, -0.00178752}, {0.00044628, -0.00178752, 0.25436752}} + ), + ucaMass = MassRecord( m = 0.34927896, rCM = {-1.47556121, 0.42263392, 0.27196898}, - inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}}), - lcaMass = MassRecord( + inertia = {{0.00248293, -0.00169357, -0.00031129}, {-0.00169357, 0.00276385, 0.00045612}, {-0.00031129, 0.00045612, 0.00504556}} + ), + lcaMass = MassRecord( m = 0.46311564, rCM = {-1.47625848, 0.4301135, 0.10156115}, - inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}}), - tieMass = MassRecord( + inertia = {{0.00434917, -0.00226155, -0.0002268}, {-0.00226155, 0.00268231, 0.00042397}, {-0.0002268, 0.00042397, 0.0069183}} + ), + tieMass = MassRecord( m = 0.13293714, rCM = {-1.40704567, 0.39979876, 0.18668273}, - inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}})); + inertia = {{0.00146339, -0.00039766, -6.025e-05}, {-0.00039766, 0.00014812, 0.0002161}, {-6.025e-05, 0.0002161, 0.00154153}} + ) + ); parameter Wheel.Wheel1DOF_YRecord pRrTire1DOF_YParams( - wheelJ = 0.02); + wheelJ = 0.02 + ); parameter Wheel.Wheel1DOF_ZRecord pRrTire1DOF_ZParams( - wheelC = 98947, - wheelD = 115.844); + wheelC = 98947, + wheelD = 115.844 + ); parameter TireModel.MF52Record pRrTireModel( - fxCombined = TireModel.CombinedSlip.FxCombinedRecord( + fxCombined = TireModel.CombinedSlip.FxCombinedRecord( RBX1 = 8.151136, RBX2 = 5.388063, RCX1 = 1.122399, REX1 = 0.052014, REX2 = -0.89845, - RHX1 = 0.0), - fxPure = TireModel.PureSlip.FxPureRecord( - LFZO = 1.0, - LGAX = 1.0, + RHX1 = 0 + ), + fxPure = TireModel.PureSlip.FxPureRecord( + LFZO = 1, + LGAX = 1, PCX1 = 1.53041, PDX1 = 2.597991, PDX2 = -0.618826, @@ -286,39 +332,41 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord PKX1 = 55.079922, PKX2 = -1.7e-05, PKX3 = -0.16185, - PHX1 = 0.0, - PHX2 = 0.0, - PVX1 = 0.0, - PVX2 = 0.0, - PEX1 = 0.0, + PHX1 = 0, + PHX2 = 0, + PVX1 = 0, + PVX2 = 0, + PEX1 = 0, PEX2 = 0.141806, PEX3 = -1.93495, PEX4 = 0.044722, - LCX = 1.0, - LMUX = 1.0, - LKX = 1.0, - LHX = 1.0, - LVX = 1.0, - LEX = 1.0, - LXAL = 1.0), - fyCombined = TireModel.CombinedSlip.FyCombinedRecord( + LCX = 1, + LMUX = 1, + LKX = 1, + LHX = 1, + LVX = 1, + LEX = 1, + LXAL = 1 + ), + fyCombined = TireModel.CombinedSlip.FyCombinedRecord( RBY1 = 14.628, RBY2 = 10.4, - RBY3 = 0.0, + RBY3 = 0, RCY1 = 1.044, REY1 = 0.048, REY2 = 0.025, - RHY1 = 0.0, - RHY2 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0), - fyPure = TireModel.PureSlip.FyPureRecord( - LFZO = 1.0, - LGAY = 1.0, + RHY1 = 0, + RHY2 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0 + ), + fyPure = TireModel.PureSlip.FyPureRecord( + LFZO = 1, + LGAY = 1, PCY1 = 1.53041, PDY1 = -2.40275, PDY2 = 0.343535, @@ -326,43 +374,58 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord PKY1 = -53.2421, PKY2 = 2.38205, PKY3 = 1.36502, - PHY1 = 0.0, - PHY2 = 0.0, - PHY3 = 0.0, - PVY1 = 0.0, - PVY2 = 0.0, - PVY3 = 0.0, - PVY4 = 0.0, - PEY1 = 0.0, + PHY1 = 0, + PHY2 = 0, + PHY3 = 0, + PVY1 = 0, + PVY2 = 0, + PVY3 = 0, + PVY4 = 0, + PEY1 = 0, PEY2 = -0.280762, PEY3 = 0.70403, PEY4 = -0.478297, - LCY = 1.0, - LMUY = 1.0, - LEY = 1.0, - LKY = 1.0, - LHY = 1.0, - LVY = 1.0, - LYKA = 1.0, - LVYKA = 1.0), - mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), - mxPure = TireModel.PureSlip.MxPureRecord(QSX1 = -0.0130807, QSX2 = 0.0, QSX3 = 0.0587803, LMX = 1.0, LVMX = 1.0), - myCombined = TireModel.CombinedSlip.MyCombinedRecord(), - myPure = TireModel.PureSlip.MyPureRecord(QSY1 = 0.0, QSY2 = 0.0, QSY3 = 0.0, QSY4 = 0.0, Vref = 12.0, LMY = 1.0), - mzCombined = TireModel.CombinedSlip.MzCombinedRecord( - SSZ1 = 0.0, - SSZ2 = 0.0, - SSZ3 = 0.0, - SSZ4 = 0.0, - RVY1 = 0.0, - RVY2 = 0.0, - RVY3 = 0.0, - RVY4 = 0.0, - RVY5 = 0.0, - RVY6 = 0.0, - LS = 1.0, - LVYKA = 1.0), - mzPure = TireModel.PureSlip.MzPureRecord( + LCY = 1, + LMUY = 1, + LEY = 1, + LKY = 1, + LHY = 1, + LVY = 1, + LYKA = 1, + LVYKA = 1 + ), + mxCombined = TireModel.CombinedSlip.MxCombinedRecord(), + mxPure = TireModel.PureSlip.MxPureRecord( + QSX1 = -0.0130807, + QSX2 = 0, + QSX3 = 0.0587803, + LMX = 1, + LVMX = 1 + ), + myCombined = TireModel.CombinedSlip.MyCombinedRecord(), + myPure = TireModel.PureSlip.MyPureRecord( + QSY1 = 0, + QSY2 = 0, + QSY3 = 0, + QSY4 = 0, + Vref = 12, + LMY = 1 + ), + mzCombined = TireModel.CombinedSlip.MzCombinedRecord( + SSZ1 = 0, + SSZ2 = 0, + SSZ3 = 0, + SSZ4 = 0, + RVY1 = 0, + RVY2 = 0, + RVY3 = 0, + RVY4 = 0, + RVY5 = 0, + RVY6 = 0, + LS = 1, + LVYKA = 1 + ), + mzPure = TireModel.PureSlip.MzPureRecord( QBZ1 = 8.22843, QBZ2 = 2.98676, QBZ3 = -3.57739, @@ -376,128 +439,89 @@ record EVBatInvMotDiff_DWDirect_DWDirectRecord QEZ1 = -0.239731, QEZ2 = 1.29253, QEZ3 = -1.21298, - QEZ4 = 0.0, - QEZ5 = 0.0, - QHZ1 = 0.0, - QHZ2 = 0.0, - QHZ3 = 0.0, - QHZ4 = 0.0, - QBZ9 = 0.0, + QEZ4 = 0, + QEZ5 = 0, + QHZ1 = 0, + QHZ2 = 0, + QHZ3 = 0, + QHZ4 = 0, + QBZ9 = 0, QBZ10 = -1.72926, QDZ6 = 0.00604966, QDZ7 = -0.000116241, QDZ8 = -2.33359, QDZ9 = -0.0379755, - LTR = 1.0, - LRES = 1.0, - LKY = 1.0, - LMUY = 1.0, - LGAZ = 1.0), - relaxation = TireModel.RelaxationRecord( - FNOMIN = 650.0, + LTR = 1, + LRES = 1, + LKY = 1, + LMUY = 1, + LGAZ = 1 + ), + relaxation = TireModel.RelaxationRecord( + FNOMIN = 650, UNLOADED_RADIUS = pRrPartialWheel.R0, - LFZO = 1.0, - PTX1 = 0.0, - PTX2 = 0.0, - PTX3 = 0.0, - PTY1 = 0.0, - PTY2 = 0.0, + LFZO = 1, + PTX1 = 0, + PTX2 = 0, + PTX3 = 0, + PTY1 = 0, + PTY2 = 0, PKY3 = 1.36502, - LSGKP = 1.0, - LSGAL = 1.0), - setup = TireModel.SetupRecord( - FNOMIN = 650.0, - FZMIN = 100.0, - FZMAX = 1800.0, - UNLOADED_RADIUS = pRrPartialWheel.R0)); + LSGKP = 1, + LSGAL = 1 + ), + setup = TireModel.SetupRecord( + FNOMIN = 650, + FZMIN = 100, + FZMAX = 1800, + UNLOADED_RADIUS = pRrPartialWheel.R0 + ) + ); - parameter EnergyStorage.BatteryPackRecord pBattery( - Ns = 140, - Np = 4, - SOC_start = 1.0); - - parameter Controllers.VCURecord pVCU( - tau_max = 220, - regenTorqueLimit = 220, - w_eps = 1.0, - motorSpeedSign = 1); - - parameter PowerElectronics.InverterDCRecord pInverter( - P_max_mot = 124000, - P_max_reg = 124000, - V_dc_max = 588); - - parameter ElectricDrives.MotorRecord pMotor( - Vdc_max = 630, - rpm_max_peak = 6500, - T_peak = 220, - T_cont = 130, - I_peak_2min = 360, - I_cont = 180, - Kt_Nm_per_A = 0.61, - peakTime = 120, - P_mech_peak = 124000, - P_cont_low = 75000, - P_cont_high = 75000, - eta_mot = 0.96, - eta_reg = 0.95, - w_eps = 1.0, - rotorJ = 0.02521); - - parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline( - finalDriveRatio = 3.31, - diffInputRotorJ = 0.04, - diff_use_lsd = true, - diff_driveSideTorqueSign = 1, - diff_T_preload = 20, - diff_lockFractionAccel = 0.35, - diff_lockFractionDecel = 0.15, - diff_T_capacity_max = 1000, - diff_clutchEffectiveRadius = 1.0, - diff_kineticFrictionRatio = 0.85, - diff_w_transition = 1.0, - diff_c_viscous = 0.05, - halfshaftLeftC = 15000, - halfshaftLeftJEquivalent = 0.02, - halfshaftLeftD = 34.64101615137755, - halfshaftRightC = 15000, - halfshaftRightJEquivalent = 0.02, - halfshaftRightD = 34.64101615137755); + parameter EnergyStorage.BatteryPackRecord pBattery(); + parameter Controllers.VCURecord pVCU(); + parameter PowerElectronics.InverterDCRecord pInverter(); + parameter ElectricDrives.MotorRecord pMotor(); + parameter Drivelines.RearFinalDriveDifferentialRecord pDriveline(); + parameter Transmissions.SpeedScheduledTransmissionRecord pTransmission(); parameter MassRecord pBaseSprungMass( - m = 160.64, - rCM = {-0.92, 0, 0.25}, - inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}}); + m = 160.64, + rCM = {-0.92, 0, 0.25}, + inertia = {{10.39, 0.3, -0.93}, {0.3, 55.98, -0.05}, {-0.93, -0.05, 56.75}} + ); parameter MassRecord pDriverMass( - m = 65.770912, - rCM = {-0.541837, 6e-06, 0.395782}, - inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}}); + m = 65.770912, + rCM = {-0.541837, 6e-06, 0.395782}, + inertia = {{2.241988, 0.000284, -1.975938}, {0.000284, 7.621387, -5.3e-05}, {-1.975938, -5.3e-05, 6.749042}} + ); - parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 300000; + parameter Modelica.Units.SI.RotationalSpringConstant pTorsionalStiff = 500000; parameter MassRecord pSprungMass = BobLib.Utilities.Mechanics.Functions.combineMassRecords({pBaseSprungMass, pDriverMass}); parameter Aero.CFDAeroMapRecord pAero( - referenceSpeed = 15.0, - aeroRef = {1.0, 0.0, 0.0}, - FL_RideHeightRef = {0.0127, 0.226314, 0.08001}, - RL_RideHeightRef = {-1.4070203, 0.2834894, 0.0870458}, - frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, - rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, - dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, - downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, - mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, - myTable = {{-502.5174, -519.189, -455.8905, -386.8458, -307.2876}, {-461.3122, -500.3786, -536.1656, -543.1164, -557.093}, {-433.3226, -481.5682, -512.4992, -537.0784, -553.3084}, {-405.697, -435.1382, -471.1794, -493.9232, -528.5418}, {-387.9356, -388.7082, -429.8596, -474.065, -498.3212}}, - mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}); + referenceSpeed = 15, + aeroRef = {1, 0, 0}, + FL_RideHeightRef = {0, 0.606110767456, 0.199898}, + RL_RideHeightRef = {-1.5494, 0.60611077, 0.199898}, + frontRideHeightGrid = {0.03556, 0.05334, 0.07112, 0.0889, 0.10668}, + rearRideHeightGrid = {0.04191, 0.0635, 0.08382, 0.10414, 0.12573}, + dragTable = {{161.5972, 161.9498, 163.687, 159.2334, 154.50145}, {164.547, 164.7349, 172.3558, 172.1838, 170.2062}, {159.2388, 167.52, 172.4602, 176.457, 180.1312}, {156.3824, 162.2704, 169.104, 174.6198, 178.8624}, {155.6694, 157.0208, 165.7478, 169.332, 174.9112}}, + downforceTable = {{323.4758, 306.2802, 265.3572, 215.9386, 163.4313375}, {294.4118, 301.2197, 341.5206, 331.72, 301.3074}, {263.8606, 296.1592, 319.799, 339.5682, 351.2746}, {238.4332, 261.4048, 286.5552, 305.715, 332.3768}, {219.5836, 226.6504, 253.3114, 284.1392, 304.1904}}, + mxTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}, + myTable = {{-825.9932, -825.4692, -808.9816, -764.9962, -718.2617125}, {-755.724, -801.5983, -877.6862, -874.8364, -858.4004}, {-697.1832, -777.7274, -832.2982, -876.6466, -904.583}, {-644.1302, -696.543, -757.7346, -799.6382, -860.9186}, {-607.5192, -615.3586, -683.171, -758.2042, -802.5116}}, + mzTable = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}} + ); annotation( Documentation(info = "

-Record EVBatInvMotDiff_DWDirect_DWDirectRecord defines the EV battery-inverter-motor-differential vehicle configuration with front direct-acting double wishbone suspension and rear direct-acting double wishbone suspension. +Record EVBatInvMotDiff_DWDirect_DWDirectRecord is generated from vehicle.yml for EVBatInvMotDiff_DWDirect_DWDirect.

-It binds axle geometry, steering data, wheel and tire records, sprung and unsprung mass properties, aero maps, and the domain-owned battery, controller, inverter, motor, and driveline records used by the standard experiments. +It binds axle geometry, wheel and tire records, mass properties, aero maps, and BobLib powertrain subsystem records.

")); end EVBatInvMotDiff_DWDirect_DWDirectRecord; diff --git a/BobLib/Records/VehicleRecord/ElectricDrives/MotorRecord.mo b/BobLib/Records/VehicleRecord/ElectricDrives/MotorRecord.mo index 3a71755..9d643b0 100644 --- a/BobLib/Records/VehicleRecord/ElectricDrives/MotorRecord.mo +++ b/BobLib/Records/VehicleRecord/ElectricDrives/MotorRecord.mo @@ -36,6 +36,10 @@ record MotorRecord "Select reverse torque direction when starting exactly from standstill"; parameter SI.Inertia rotorJ = 0.02521 "Motor rotor inertia"; + parameter Boolean useTorqueTable = false + "Use a torque-vs-rpm curve as an additional peak-torque cap"; + parameter Real torqueTable[:, 2] = [0.0, 1e9; 1.0, 1e9] + "Peak torque vs speed (rpm, Nm); applied as an extra cap when useTorqueTable"; annotation( Documentation(info = " diff --git a/BobLib/Records/VehicleRecord/Transmissions/SpeedScheduledTransmissionRecord.mo b/BobLib/Records/VehicleRecord/Transmissions/SpeedScheduledTransmissionRecord.mo new file mode 100644 index 0000000..a22585c --- /dev/null +++ b/BobLib/Records/VehicleRecord/Transmissions/SpeedScheduledTransmissionRecord.mo @@ -0,0 +1,36 @@ +within BobLib.Records.VehicleRecord.Transmissions; + +record SpeedScheduledTransmissionRecord + + import SI = Modelica.Units.SI; + + parameter Integer nGears(min = 1) = 1 + "Number of forward gears"; + parameter Real gearRatios[nGears] = {3.31} + "Gear ratios ordered from lowest gear (highest ratio) to highest gear"; + parameter SI.Velocity upshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear upshifts to the next"; + parameter SI.Velocity downshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear downshifts to the previous"; + parameter Integer initialGear(min = 1, max = nGears) = 1 + "Gear engaged at initialization"; + parameter SI.Radius wheelRadius(min = 1e-6) = 0.2045 + "Loaded wheel radius used to estimate vehicle speed from output speed"; + + annotation( + Documentation(info = " +

+Record SpeedScheduledTransmissionRecord contains the +vehicle-level parameters passed to +Transmissions.SpeedScheduledTransmission. +

+

+Option A gearing: gearRatios holds the complete motor-to-wheel +reduction per gear (primary x gear x sprocket), ordered from lowest gear +(highest numerical ratio) to highest gear. The upshiftSpeeds and +downshiftSpeeds vectors carry one entry per gear boundary +(nGears - 1 entries); a downshift speed below the matching upshift +speed provides shift hysteresis. +

+")); +end SpeedScheduledTransmissionRecord; diff --git a/BobLib/Records/VehicleRecord/Transmissions/package.mo b/BobLib/Records/VehicleRecord/Transmissions/package.mo new file mode 100644 index 0000000..8a5face --- /dev/null +++ b/BobLib/Records/VehicleRecord/Transmissions/package.mo @@ -0,0 +1,17 @@ +within BobLib.Records.VehicleRecord; +package Transmissions + + extends BobLib.Icons.RecordsPackageIcon; + + annotation( + Documentation(info = " +

+Package BobLib.Records.VehicleRecord.Transmissions +contains transmission subsystem parameter records. +

+

+Records in this package mirror the public transmission models used by +vehicle-level experiments. +

+")); +end Transmissions; diff --git a/BobLib/Records/VehicleRecord/Transmissions/package.order b/BobLib/Records/VehicleRecord/Transmissions/package.order new file mode 100644 index 0000000..801368b --- /dev/null +++ b/BobLib/Records/VehicleRecord/Transmissions/package.order @@ -0,0 +1 @@ +SpeedScheduledTransmissionRecord diff --git a/BobLib/Records/VehicleRecord/package.order b/BobLib/Records/VehicleRecord/package.order index 7b586bd..e727e4a 100644 --- a/BobLib/Records/VehicleRecord/package.order +++ b/BobLib/Records/VehicleRecord/package.order @@ -5,3 +5,4 @@ Drivelines ElectricDrives EnergyStorage PowerElectronics +Transmissions diff --git a/BobLib/Transmissions/FixedRatioTransmission.mo b/BobLib/Transmissions/FixedRatioTransmission.mo index 585219b..1cd0327 100644 --- a/BobLib/Transmissions/FixedRatioTransmission.mo +++ b/BobLib/Transmissions/FixedRatioTransmission.mo @@ -18,16 +18,24 @@ model FixedRatioTransmission Placement(transformation(origin = {58, 48}, extent = {{10, -10}, {-10, 10}}))); output SI.AngularVelocity w_out "Transmission output speed"; + output Real activeGearRatio "Engaged gear ratio published for controllers"; protected VehicleInterfaces.Interfaces.TransmissionBus transmissionBus annotation( Placement(transformation(extent = {{-60, 50}, {-40, 70}}))); + Modelica.Blocks.Sources.RealExpression gearRatioBusSignal( + y = activeGearRatio) "Engaged gear ratio published to the transmission bus" annotation( + Placement(transformation(origin = {-8, 66}, extent = {{-8, -4}, {8, 4}}))); + equation w_out = outputSpeed.w; + activeGearRatio = gearRatio; connect(controlBus.transmissionBus, transmissionBus) annotation( Line(points = {{-100, 60}, {-50, 60}}, color = {255, 204, 51}, thickness = 0.5)); + connect(gearRatioBusSignal.y, transmissionBus.gearRatio) annotation( + Line(points = {{0.8, 66}, {30, 66}, {30, 60}, {-50, 60}}, color = {0, 0, 127})); connect(engineFlange.flange, gear.inputFlange) annotation( Line(points = {{-100, 0}, {-24, 0}}, color = {135, 135, 135}, thickness = 0.5)); connect(gear.outputFlange, drivelineFlange.flange) annotation( diff --git a/BobLib/Transmissions/Internal/SpeedGearScheduler.mo b/BobLib/Transmissions/Internal/SpeedGearScheduler.mo new file mode 100644 index 0000000..2ae9f75 --- /dev/null +++ b/BobLib/Transmissions/Internal/SpeedGearScheduler.mo @@ -0,0 +1,57 @@ +within BobLib.Transmissions.Internal; +model SpeedGearScheduler + + "Selects a discrete gear ratio from vehicle speed with shift hysteresis" + import SI = Modelica.Units.SI; + + parameter Integer nGears(min = 1) = 1 + "Number of forward gears"; + parameter Real gearRatios[nGears] = {1.0} + "Gear ratios ordered from lowest gear (highest ratio) to highest gear"; + parameter SI.Velocity upshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear upshifts to the next"; + parameter SI.Velocity downshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear downshifts to the previous"; + parameter Integer initialGear(min = 1, max = nGears) = 1 + "Gear engaged at initialization"; + + Modelica.Blocks.Interfaces.RealInput vehicleSpeed(unit = "m/s") + "Vehicle longitudinal speed used to schedule gears" annotation( + Placement(transformation(extent = {{-140, -20}, {-100, 20}}))); + Modelica.Blocks.Interfaces.RealOutput ratio + "Selected gear ratio" annotation( + Placement(transformation(extent = {{100, -10}, {120, 10}}))); + Modelica.Blocks.Interfaces.IntegerOutput gear + "Selected gear index" annotation( + Placement(transformation(extent = {{100, -70}, {120, -50}}))); + + discrete Integer currentGear(start = initialGear, fixed = true) + "Latched engaged gear index"; + +algorithm + when nGears > 1 and pre(currentGear) < nGears and + vehicleSpeed > upshiftSpeeds[pre(currentGear)] then + currentGear := pre(currentGear) + 1; + elsewhen nGears > 1 and pre(currentGear) > 1 and + vehicleSpeed < downshiftSpeeds[pre(currentGear) - 1] then + currentGear := pre(currentGear) - 1; + end when; + +equation + gear = currentGear; + ratio = gearRatios[currentGear]; + + annotation(Documentation(info = " +

+Model SpeedGearScheduler maps vehicle speed to a discrete gear +ratio. Gears are ordered from lowest gear (highest numerical ratio) to highest +gear. The upshiftSpeeds/downshiftSpeeds vectors carry +one entry per gear boundary; keeping the downshift speed below the upshift +speed gives shift hysteresis and prevents chatter around a threshold. +

+

+The gear index is latched in a when clause so a ratio change is a +discrete event rather than a continuous function of speed. +

+")); +end SpeedGearScheduler; diff --git a/BobLib/Transmissions/Internal/VariableRatioGear.mo b/BobLib/Transmissions/Internal/VariableRatioGear.mo new file mode 100644 index 0000000..9bdb8e6 --- /dev/null +++ b/BobLib/Transmissions/Internal/VariableRatioGear.mo @@ -0,0 +1,39 @@ +within BobLib.Transmissions.Internal; +model VariableRatioGear + + "Reusable ideal gear with a runtime-selectable ratio" + import SI = Modelica.Units.SI; + + Modelica.Mechanics.Rotational.Interfaces.Flange_a inputFlange + "Input shaft" annotation( + Placement(transformation(extent = {{-110, -10}, {-90, 10}}))); + Modelica.Mechanics.Rotational.Interfaces.Flange_b outputFlange + "Output shaft" annotation( + Placement(transformation(extent = {{90, -10}, {110, 10}}))); + Modelica.Blocks.Interfaces.RealInput ratio + "Selected gear ratio (input speed divided by output speed)" annotation( + Placement(transformation(origin = {0, 110}, extent = {{-20, -20}, {20, 20}}, rotation = -90))); + + SI.AngularVelocity w_in "Input shaft speed"; + SI.AngularVelocity w_out "Output shaft speed"; + +equation + w_in = der(inputFlange.phi); + w_out = der(outputFlange.phi); + + // Speed-level ideal gear relation. Constraining velocity rather than + // position means a discrete ratio change does not impose a non-physical + // position jump on the connected shafts. + w_in = ratio*w_out; + 0 = ratio*inputFlange.tau + outputFlange.tau; + + annotation(Documentation(info = " +

+Model VariableRatioGear is the reusable gear core used by +transmission adapters that change ratio at run time. The power-conserving +torque relation 0 = ratio*inputFlange.tau + outputFlange.tau +pairs with the velocity-level speed relation so the selected ratio can step +between discrete gears without a position discontinuity. +

+")); +end VariableRatioGear; diff --git a/BobLib/Transmissions/Internal/package.order b/BobLib/Transmissions/Internal/package.order index 62aacf1..5572d2f 100644 --- a/BobLib/Transmissions/Internal/package.order +++ b/BobLib/Transmissions/Internal/package.order @@ -1 +1,3 @@ FixedRatioGear +VariableRatioGear +SpeedGearScheduler diff --git a/BobLib/Transmissions/SpeedScheduledTransmission.mo b/BobLib/Transmissions/SpeedScheduledTransmission.mo new file mode 100644 index 0000000..c1315b8 --- /dev/null +++ b/BobLib/Transmissions/SpeedScheduledTransmission.mo @@ -0,0 +1,105 @@ +within BobLib.Transmissions; +model SpeedScheduledTransmission + + "Multi-ratio transmission that selects a gear from vehicle speed" + extends VehicleInterfaces.Icons.Transmission; + extends VehicleInterfaces.Transmissions.Interfaces.Base; + + import SI = Modelica.Units.SI; + + parameter Integer nGears(min = 1) = 1 + "Number of forward gears"; + parameter Real gearRatios[nGears] = {3.31} + "Gear ratios ordered from lowest gear (highest ratio) to highest gear"; + parameter SI.Velocity upshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear upshifts to the next"; + parameter SI.Velocity downshiftSpeeds[nGears - 1] = fill(0.0, nGears - 1) + "Vehicle speed at which each gear downshifts to the previous"; + parameter Integer initialGear(min = 1, max = nGears) = 1 + "Gear engaged at initialization"; + parameter SI.Radius wheelRadius(min = 1e-6) = 0.2045 + "Loaded wheel radius used to estimate vehicle speed from output speed"; + + BobLib.Transmissions.Internal.SpeedGearScheduler scheduler( + nGears = nGears, + gearRatios = gearRatios, + upshiftSpeeds = upshiftSpeeds, + downshiftSpeeds = downshiftSpeeds, + initialGear = initialGear) annotation( + Placement(transformation(origin = {-40, 40}, extent = {{-10, -10}, {10, 10}}))); + + BobLib.Transmissions.Internal.VariableRatioGear gear annotation( + Placement(transformation(extent = {{-24, -24}, {24, 24}}))); + + Modelica.Mechanics.Rotational.Sensors.SpeedSensor outputSpeed annotation( + Placement(transformation(origin = {58, 48}, extent = {{10, -10}, {-10, 10}}))); + + output SI.AngularVelocity w_out "Transmission output speed"; + output SI.Velocity vehicleSpeedEstimate "Estimated vehicle speed"; + output Integer selectedGear "Engaged gear index"; + output Real selectedRatio "Engaged gear ratio"; + +protected + VehicleInterfaces.Interfaces.TransmissionBus transmissionBus annotation( + Placement(transformation(extent = {{-60, 50}, {-40, 70}}))); + + Modelica.Blocks.Sources.RealExpression vehicleSpeedSignal( + y = vehicleSpeedEstimate) annotation( + Placement(transformation(origin = {-78, 40}, extent = {{-10, -6}, {10, 6}}))); + + Modelica.Blocks.Sources.RealExpression gearRatioBusSignal( + y = selectedRatio) "Engaged gear ratio published to the transmission bus" annotation( + Placement(transformation(origin = {-8, 66}, extent = {{-8, -4}, {8, 4}}))); + +equation + w_out = outputSpeed.w; + // With Option A gearing the full reduction is folded into gearRatios, so the + // transmission output shaft turns at wheel speed. Vehicle speed is therefore + // just the wheel-speed times the loaded radius; no final drive is involved. + vehicleSpeedEstimate = w_out*wheelRadius; + selectedGear = scheduler.gear; + selectedRatio = scheduler.ratio; + + connect(vehicleSpeedSignal.y, scheduler.vehicleSpeed) annotation( + Line(points = {{-67, 40}, {-51, 40}}, color = {0, 0, 127})); + connect(scheduler.ratio, gear.ratio) annotation( + Line(points = {{-29, 40}, {0, 40}, {0, 24}}, color = {0, 0, 127})); + + connect(controlBus.transmissionBus, transmissionBus) annotation( + Line(points = {{-100, 60}, {-50, 60}}, color = {255, 204, 51}, thickness = 0.5)); + connect(engineFlange.flange, gear.inputFlange) annotation( + Line(points = {{-100, 0}, {-24, 0}}, color = {135, 135, 135}, thickness = 0.5)); + connect(gear.outputFlange, drivelineFlange.flange) annotation( + Line(points = {{24, 0}, {100, 0}}, color = {135, 135, 135}, thickness = 0.5)); + connect(outputSpeed.flange, gear.outputFlange) annotation( + Line(points = {{68, 48}, {78, 48}, {78, 0}, {24, 0}}, color = {0, 0, 0})); + connect(outputSpeed.w, transmissionBus.outputSpeed) annotation( + Line(points = {{47, 48}, {30, 48}, {30, 60}, {-50, 60}}, color = {0, 0, 127})); + connect(gearRatioBusSignal.y, transmissionBus.gearRatio) annotation( + Line(points = {{0.8, 66}, {30, 66}, {30, 60}, {-50, 60}}, color = {0, 0, 127})); + + annotation(Documentation(info = " +

+Model SpeedScheduledTransmission is a multi-ratio transmission +adapter for the neutral VehicleInterfaces transmission contract. It goes beyond +a single planetary/fixed reduction: given the current vehicle speed it selects +the appropriate discrete gear ratio and applies it through a variable-ratio +gear core. +

+

+Consistent with the package boundary rules, the public model owns the VI +engine/driveline flanges and control-bus publishing, while the reusable shift +logic (Internal.SpeedGearScheduler) and gear relation +(Internal.VariableRatioGear) live one level deeper. Set +nGears = 1 to recover single-speed behaviour equivalent to +FixedRatioTransmission. +

+

+This adapter assumes Option A gearing: the complete reduction (primary, gear, +and sprocket/final drive) is folded into gearRatios, so the +transmission output shaft turns at wheel speed and the downstream driveline +final drive is unity. Vehicle speed used for scheduling is therefore just +wheelRadius times the output-shaft speed. +

+")); +end SpeedScheduledTransmission; diff --git a/BobLib/Transmissions/package.order b/BobLib/Transmissions/package.order index 5146125..27950a8 100644 --- a/BobLib/Transmissions/package.order +++ b/BobLib/Transmissions/package.order @@ -1,2 +1,3 @@ Internal FixedRatioTransmission +SpeedScheduledTransmission