Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit a3359ece authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

reset braking power before next search, fix gearbox: add inertia

parent bbe89025
No related branches found
No related tags found
No related merge requests found
......@@ -691,6 +691,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
Case<ResponseGearShift>(r => {
Log.Info("Brake -> Got GearShift response, performing roll action + brakes");
//response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient);
DataBus.BrakePower = 0.SI<Watt>();
response = Driver.DrivingActionBrake(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed,
gradient, targetDistance: targetDistance);
});
......
......@@ -74,7 +74,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return _engageTime.IsSmallerOrEqual(absTime);
}
public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy, KilogramSquareMeter engineInertia)
public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy,
KilogramSquareMeter engineInertia)
: base(container, gearboxModelData, engineInertia)
{
_strategy = strategy;
......@@ -309,14 +310,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var inTorque = outTorque / ModelData.Gears[Gear].Ratio + inTorqueLossResult.Value;
var inAngularVelocity = outAngularVelocity * ModelData.Gears[Gear].Ratio;
var inertiaTorqueLossOut = !inAngularVelocity.IsEqual(0)
? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) /
avgOutAngularVelocity
: 0.SI<NewtonMeter>();
inTorque += inertiaTorqueLossOut / ModelData.Gears[Gear].Ratio;
if (dryRun) {
CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0)
? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) /
avgOutAngularVelocity
: 0.SI<NewtonMeter>();
inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio;
var inertiaTorqueLossIn = avgOutAngularVelocity.IsEqual(0, 1e-9)
? 0.SI<NewtonMeter>()
: Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) /
......@@ -357,11 +357,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
// begin critical section
CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio;
// MQ 19.2.2016: check! inertia is related to output side, torque loss accounts to input side
CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0)
? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) /
avgOutAngularVelocity
: 0.SI<NewtonMeter>();
inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio;
CurrentState.InertiaTorqueLossOut = inertiaTorqueLossOut;
CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio;
CurrentState.TorqueLossResult = inTorqueLossResult;
......@@ -378,7 +374,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
protected override void DoWriteModalResults(IModalDataContainer container)
{
var avgInAngularSpeed = (PreviousState.InAngularVelocity + CurrentState.InAngularVelocity) / 2.0;
// (PreviousState.OutAngularVelocity +
// (PreviousState.OutAngularVelocity +
//CurrentState.OutAngularVelocity) / 2.0 * ModelData.Gears[Gear].Ratio;
container[ModalResultField.Gear] = Disengaged || DataBus.VehicleStopped ? 0 : Gear;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment