Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit ac3338c1 authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

refactoring wheels, brakes, vehicle, tc angledrive, axlegear response

parent 2d04fc43
No related branches found
No related tags found
No related merge requests found
Showing
with 126 additions and 52 deletions
...@@ -40,16 +40,12 @@ namespace TUGraz.VectoCommon.Models ...@@ -40,16 +40,12 @@ namespace TUGraz.VectoCommon.Models
/// </summary> /// </summary>
public interface IResponse public interface IResponse
{ {
object Source { get; }
Second AbsTime { get; set; } Second AbsTime { get; set; }
Meter SimulationDistance { get; set; } Meter SimulationDistance { get; set; }
Second SimulationInterval { get; set; } Second SimulationInterval { get; set; }
object Source { get; }
Watt AxlegearPowerRequest { get; set; }
Watt WheelsPowerRequest { get; set; }
Watt VehiclePowerRequest { get; set; }
Watt BrakePower { get; set; }
Watt AngledrivePowerRequest { get; set; }
DriverResponse Driver { get; } DriverResponse Driver { get; }
...@@ -59,6 +55,18 @@ namespace TUGraz.VectoCommon.Models ...@@ -59,6 +55,18 @@ namespace TUGraz.VectoCommon.Models
GearboxResponse Gearbox { get; } GearboxResponse Gearbox { get; }
TorqueConverterResponse TorqueConverter { get; }
AxlegearResponse Axlegear { get; }
AngledriveResponse Angledrive { get; }
WheelsResponse Wheels { get; }
VehicleResponse Vehicle { get; }
BrakesResponse Brakes { get; }
} }
public abstract class AbstractComponentResponse public abstract class AbstractComponentResponse
...@@ -125,4 +133,48 @@ namespace TUGraz.VectoCommon.Models ...@@ -125,4 +133,48 @@ namespace TUGraz.VectoCommon.Models
public NewtonMeter OutputTorque { get; set; } public NewtonMeter OutputTorque { get; set; }
} }
public class TorqueConverterResponse : AbstractPowertrainComponentResponse
{
public TorqueConverterOperatingPoint TorqueConverterOperatingPoint { get; set; }
public NewtonMeter TorqueConverterTorqueDemand { get; set; }
}
[DebuggerDisplay("P_out: {PowerRequest}; T_card: {CardanTorque}")]
public class AxlegearResponse : AbstractPowertrainComponentResponse
{
public NewtonMeter CardanTorque { get; set; }
public NewtonMeter OutputTorque { get; set; }
public PerSecond OutputSpeed { get; set; }
}
[DebuggerDisplay("P_out: {PowerRequest}")]
public class AngledriveResponse : AbstractPowertrainComponentResponse
{
public NewtonMeter OutputTorque { get; set; }
public PerSecond OutputSpeed { get; set; }
}
[DebuggerDisplay("P_out: {PowerRequest}")]
public class WheelsResponse : AbstractPowertrainComponentResponse { }
[DebuggerDisplay("v_veh: {VehicleSpeed}")]
public class VehicleResponse : AbstractComponentResponse
{
public MeterPerSecond VehicleSpeed { get; set; }
}
[DebuggerDisplay("P_brake: {BrakePower}")]
public class BrakesResponse : AbstractComponentResponse
{
public Watt BrakePower { get; set; }
}
} }
\ No newline at end of file
using TUGraz.VectoCommon.Utils;
namespace TUGraz.VectoCommon.Models {
public class TorqueConverterOperatingPoint
{
public PerSecond OutAngularVelocity;
public NewtonMeter OutTorque;
public PerSecond InAngularVelocity;
public NewtonMeter InTorque;
public double SpeedRatio;
public double TorqueRatio;
public bool Creeping;
public override string ToString()
{
return $"n_out: {OutAngularVelocity}, n_in: {InAngularVelocity}, tq_out: {OutTorque}, tq_in {InTorque}, nu: {SpeedRatio}, my: {TorqueRatio}";
}
}
}
\ No newline at end of file
...@@ -83,6 +83,7 @@ ...@@ -83,6 +83,7 @@
<Compile Include="Models\OperatingPoint.cs" /> <Compile Include="Models\OperatingPoint.cs" />
<Compile Include="Models\RetarderType.cs" /> <Compile Include="Models\RetarderType.cs" />
<Compile Include="Models\SimulationType.cs" /> <Compile Include="Models\SimulationType.cs" />
<Compile Include="Models\TorqueConverterOperatingPoint.cs" />
<Compile Include="Models\VehicleCategory.cs" /> <Compile Include="Models\VehicleCategory.cs" />
<Compile Include="Models\WHRType.cs" /> <Compile Include="Models\WHRType.cs" />
<Compile Include="OutputData\IOutputFileWriter.cs" /> <Compile Include="OutputData\IOutputFileWriter.cs" />
......
...@@ -49,16 +49,18 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl ...@@ -49,16 +49,18 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
Engine = new EngineResponse(); Engine = new EngineResponse();
Clutch = new ClutchResponse(); Clutch = new ClutchResponse();
Gearbox = new GearboxResponse(); Gearbox = new GearboxResponse();
//Axlegear = new AxlegearResponse(); Axlegear = new AxlegearResponse();
//Angledrive = new AngledriveResponse(); Angledrive = new AngledriveResponse();
//Wheels = new WheelsResponse(); Wheels = new WheelsResponse();
//Vehicle = new VehicleResponse(); Vehicle = new VehicleResponse();
//Brakes = new BrakesResponse(); Brakes = new BrakesResponse();
//ElectricMotor = new ElectricMotorResponse(); //ElectricMotor = new ElectricMotorResponse();
////ElectricSystem = new ////ElectricSystem = new
//TorqueConverter = new TorqueConverterResponse(); TorqueConverter = new TorqueConverterResponse();
//HybridController = new HybridControllerResponse(); //HybridController = new HybridControllerResponse();
} }
public object Source { get; } public object Source { get; }
...@@ -66,11 +68,7 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl ...@@ -66,11 +68,7 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
public Second AbsTime { get; set; } public Second AbsTime { get; set; }
public Second SimulationInterval { get; set; } public Second SimulationInterval { get; set; }
public Meter SimulationDistance { get; set; } public Meter SimulationDistance { get; set; }
public Watt AngledrivePowerRequest { get; set; }
public Watt AxlegearPowerRequest { get; set; }
public Watt WheelsPowerRequest { get; set; }
public Watt VehiclePowerRequest { get; set; }
public Watt BrakePower { get; set; }
public GearboxResponse Gearbox { get; } public GearboxResponse Gearbox { get; }
public DriverResponse Driver { get; } public DriverResponse Driver { get; }
...@@ -79,8 +77,18 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl ...@@ -79,8 +77,18 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
public ClutchResponse Clutch { get; } public ClutchResponse Clutch { get; }
public TorqueConverterOperatingPoint TorqueConverterOperatingPoint { get; set; } public AxlegearResponse Axlegear { get; }
public AngledriveResponse Angledrive { get; }
public TorqueConverterResponse TorqueConverter { get; }
public WheelsResponse Wheels { get; }
public VehicleResponse Vehicle { get; }
public BrakesResponse Brakes { get; }
public override string ToString() public override string ToString()
{ {
var t = GetType(); var t = GetType();
......
...@@ -35,6 +35,7 @@ using System.ComponentModel.DataAnnotations; ...@@ -35,6 +35,7 @@ using System.ComponentModel.DataAnnotations;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Declaration;
...@@ -347,26 +348,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox ...@@ -347,26 +348,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
} }
public class TorqueConverterOperatingPoint
{
public PerSecond OutAngularVelocity;
public NewtonMeter OutTorque;
public PerSecond InAngularVelocity;
public NewtonMeter InTorque;
public double SpeedRatio;
public double TorqueRatio;
public bool Creeping;
public override string ToString()
{
return string.Format("n_out: {0}, n_in: {1}, tq_out: {2}, tq_in {3}, nu: {4}, my: {5}", OutAngularVelocity,
InAngularVelocity, OutTorque, InTorque, SpeedRatio, TorqueRatio);
}
}
[DebuggerDisplay("nu: {SpeedRatio}, mu: {TorqueRatio}, T_ref: {Torque}")] [DebuggerDisplay("nu: {SpeedRatio}, mu: {TorqueRatio}, T_ref: {Torque}")]
public class TorqueConverterEntry public class TorqueConverterEntry
{ {
......
...@@ -46,7 +46,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -46,7 +46,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
bool dryRun = false) bool dryRun = false)
{ {
var retVal = base.Request(absTime, dt, outTorque, outAngularVelocity, dryRun); var retVal = base.Request(absTime, dt, outTorque, outAngularVelocity, dryRun);
retVal.AngledrivePowerRequest = outTorque * (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2.0; retVal.Angledrive.PowerRequest = outTorque * (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2.0;
retVal.Angledrive.OutputTorque = outTorque;
retVal.Angledrive.OutputSpeed = outAngularVelocity;
return retVal; return retVal;
} }
......
...@@ -46,7 +46,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -46,7 +46,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
bool dryRun = false) bool dryRun = false)
{ {
var retVal = base.Request(absTime, dt, outTorque, outAngularVelocity, dryRun); var retVal = base.Request(absTime, dt, outTorque, outAngularVelocity, dryRun);
retVal.AxlegearPowerRequest = outTorque * (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2.0; retVal.Axlegear.PowerRequest = outTorque * (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2.0;
retVal.Axlegear.CardanTorque = PreviousState.InTorque;
return retVal; return retVal;
} }
......
...@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
CurrentState.SetState(outTorque + brakeTorque, outAngularVelocity, outTorque, outAngularVelocity); CurrentState.SetState(outTorque + brakeTorque, outAngularVelocity, outTorque, outAngularVelocity);
var retVal = NextComponent.Request(absTime, dt, outTorque + brakeTorque, outAngularVelocity, dryRun); var retVal = NextComponent.Request(absTime, dt, outTorque + brakeTorque, outAngularVelocity, dryRun);
retVal.BrakePower = brakeTorque * avgAngularSpeed; retVal.Brakes.BrakePower = brakeTorque * avgAngularSpeed;
return retVal; return retVal;
} }
......
...@@ -556,7 +556,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -556,7 +556,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
operatingPoint.Acceleration, DataBus.BrakePower); operatingPoint.Acceleration, DataBus.BrakePower);
if (DataBus.BrakePower < 0) { if (DataBus.BrakePower < 0) {
var overload = new ResponseOverload(this) { var overload = new ResponseOverload(this) {
BrakePower = DataBus.BrakePower, Brakes = { BrakePower = DataBus.BrakePower, },
Driver = { Acceleration = operatingPoint.Acceleration } Driver = { Acceleration = operatingPoint.Acceleration }
}; };
DataBus.BrakePower = 0.SI<Watt>(); DataBus.BrakePower = 0.SI<Watt>();
......
...@@ -106,7 +106,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -106,7 +106,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var inTorque = CalculateAverageInTorque(operatingPoint); var inTorque = CalculateAverageInTorque(operatingPoint);
if (dryRun) { if (dryRun) {
return HandleDryRun(absTime, dt, outTorque, outAngularVelocity, inTorque, operatingPoint); var retValD = HandleDryRun(absTime, dt, outTorque, outAngularVelocity, inTorque, operatingPoint);
retValD.TorqueConverter.TorqueConverterTorqueDemand = outTorque;
return retValD;
} }
// normal request // normal request
...@@ -117,9 +119,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -117,9 +119,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
(PreviousState.OutAngularVelocity + operatingPoint.OutAngularVelocity) / 2.0; (PreviousState.OutAngularVelocity + operatingPoint.OutAngularVelocity) / 2.0;
if (!delta.IsEqual(0, Constants.SimulationSettings.LineSearchTolerance)) { if (!delta.IsEqual(0, Constants.SimulationSettings.LineSearchTolerance)) {
return delta > 0 return delta > 0
? new ResponseOverload(this) { Delta = delta, TorqueConverterOperatingPoint = operatingPoint } ? new ResponseOverload(this) { Delta = delta, TorqueConverter = { TorqueConverterOperatingPoint = operatingPoint }}
: (IResponse) : (IResponse)
new ResponseUnderload(this) {Delta = delta, TorqueConverterOperatingPoint = operatingPoint }; new ResponseUnderload(this) {Delta = delta, TorqueConverter = { TorqueConverterOperatingPoint = operatingPoint } };
} }
} }
...@@ -169,7 +171,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -169,7 +171,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return new ResponseDryRun(this) { return new ResponseDryRun(this) {
DeltaFullLoad = delta, DeltaFullLoad = delta,
DeltaDragLoad = delta, DeltaDragLoad = delta,
TorqueConverterOperatingPoint = operatingPoint TorqueConverter = {
TorqueConverterOperatingPoint = operatingPoint
}
}; };
} }
...@@ -194,7 +198,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -194,7 +198,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return new ResponseDryRun(this) { return new ResponseDryRun(this) {
DeltaFullLoad = 10 * deltaMax, DeltaFullLoad = 10 * deltaMax,
DeltaDragLoad = 10 * deltaMin, DeltaDragLoad = 10 * deltaMin,
TorqueConverterOperatingPoint = DataBus.DriverInfo.DrivingAction == DrivingAction.Brake ? dryOperatingPointMin : dryOperatingPointMax TorqueConverter = {
TorqueConverterOperatingPoint = DataBus.DriverInfo.DrivingAction == DrivingAction.Brake ? dryOperatingPointMin : dryOperatingPointMax
}
}; };
} }
......
...@@ -134,6 +134,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -134,6 +134,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var retval = NextComponent.Request(absTime, dt, CurrentState.VehicleTractionForce, var retval = NextComponent.Request(absTime, dt, CurrentState.VehicleTractionForce,
CurrentState.Velocity, dryRun); CurrentState.Velocity, dryRun);
retval.Vehicle.VehicleSpeed = CurrentState.Velocity;
return retval; return retval;
} }
......
...@@ -82,7 +82,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -82,7 +82,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var retVal = NextComponent.Request(absTime, dt, CurrentState.TorqueIn, CurrentState.AngularVelocity, var retVal = NextComponent.Request(absTime, dt, CurrentState.TorqueIn, CurrentState.AngularVelocity,
dryRun); dryRun);
retVal.WheelsPowerRequest = CurrentState.TorqueIn * avgAngularSpeed; retVal.Wheels.PowerRequest = CurrentState.TorqueIn * avgAngularSpeed;
return retVal; return retVal;
} }
......
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