Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

Merge pull request #140 in VECTO/vecto-sim from ~EMKRISPMI/vecto-sim:master to master

* commit '8890ae9f':
  reverted smaller margin in Note: Vecto ... again. problem with images.
  added bugfixes in changelog
  exception when Roll Resistance coefficient could not be calculated
  exception when driving cycle could not be read!
  changed style: smaller note vecto-xxx, box around code examples
  better descriptions
  better examples of json files
  corrected column field names in csv files
  corrected link
  driver acceleration limit new image and text
  output of warning fuelmap extrapolated: n in rpm instead of 1/s
  [VECTO-229] removed disable logging during search in measured speed
  moved logger from code to app.config
  easier logging configuration
parents 0e293a78 8890ae9f
No related branches found
No related tags found
No related merge requests found
Showing
with 671 additions and 579 deletions
......@@ -62,10 +62,10 @@ In Vecto 3.0.2 the structure of the modal data output has been revised and re-st
| Gear | [-] | Gear. "0" = clutch opened / neutral |
| n_eng_avg | [1/min] | Average engine speed in the current simulation interval. Used for interpolation of the engine's fuel consumption |
| T_eng_fcmap | [Nm] | Engine torque used for interpolation of the engine's fuel consumption. T_eng_fcmap is the sum of torque demand on the output shaft, torque demand of the auxiliaries, and engine's inertia torque |
| Tq_full | [Nm] | Engine's transient maximum torque (see [transient full load](l#transient-full-load)) |
| Tq_full | [Nm] | Engine's transient maximum torque (see [transient full load](#engine-transient-full-load)) |
| Tq_drag | [Nm] | Engine's drag torque, interpolated from the full-load curve |
| P_eng_fcmap | [kW] | Total power the engine has to provide, computed from n_eng_avg and T_eng_fcmap |
| P_eng_full | [kW] | Engine's transient maximum power (see [transient full load](l#transient-full-load)) |
| P_eng_full | [kW] | Engine's transient maximum power (see [transient full load](#engine-transient-full-load)) |
| P_eng_drag | [kW] | Engine's drag power |
| P_eng_inertia | [kW] | Power loss/gain due to the engine's inertia |
| P_eng_out | [kW] | Power provided at the engine's output shaft |
......
......@@ -2,14 +2,17 @@
This file is used to define retarder idling losses. It can be used for primary and secondary retarders and must be set in the [Vehicle File](#vehicle-editor). The file uses the [VECTO CSV format](#csv).
- Filetype: .vrlm
- Header: **Retarder Speed \[1/min], Loss Torque \[Nm]**
- Header: **Retarder Speed \[1/min], Torque Loss \[Nm]**
- Requires at least 2 data entries
**Example:**
Retarder Speed [1/min],Loss Torque [Nm]
~~~
Retarder Speed [1/min],Torque Loss [Nm]
0 ,10
100 ,10.02
200 ,10.08
300 ,10.18
...
~~~
......@@ -3,47 +3,47 @@ The .vsum file includes total / average results for each calculation run in one
***Quantities:***
| Name | Unit | Description
| ----- | ---- | -----------------------------------------
| Job | [-] | Job number in the format "x-y" (where x = file number and y = cycle number)
| Input File | [-] | Name of the input file
| Cycle | [-] | Name of the cycle file
| Status | [-] | The result status of the run (Success, Aborted)
| time | [s] | Total simulation time
| distance | [km] | Total traveled distance
| speed | [km/h] | Average vehicle speed
| altitude | [m] | Altitude difference between start and end of cycle
| Ppos | [kW] | Average positive engine power
| PwheelPos | [kW] | Average positive wheel power
| Pneg | [kW] | Average negative engine power
| FC-Final | [g/km], [l/100km], [l/100tkm] | Average fuel consumption. Final value after all corrections.
| FC-Map | [g/h], [g/km] | Fuel consumption interpolated from [Fuel Map](#fuel-consumption-calculation).
| FC-AUXc | [g/h], [g/km] | Fuel consumption after [Auxiliary-Start/Stop Correction](#fuel-consumption-calculation). (Based on FC-Map.)
| FC-WHTCc | [g/h], [g/km] | Fuel consumption after [WHTC Correction](#fuel-consumption-calculation). (Based on FC-AUXc.)
| Co~2~ | [g/km], [g/tkm] | Average CO~2~ emissions.
| Pbrake | [kW] | Average brake power (not including engine drag)
| EposICE | [kWh] | Total positive engine work
| EnegICE | [kWh] | Total negative engine work (engine brake)
| Eair | [kWh] | Total work of air resistance
| Eroll | [kWh] | Total work of rolling resistance
| Egrad | [kWh] | Total work of gradient resistance
| Eacc | [kWh] | Total work from accelerations (<0) / decelerations (>0)
| Eaux | [kWh] | Total energy demand of auxiliaries
| Eaux_xxx | [kWh] | Energy demand of auxiliary with ID xxx. See also [Aux Dialog](#auxiliary-dialog) and [Driving Cycle](#driving-cycles).
| Ebrake | [kWh] | Total work dissipated in mechanical braking (sum of service brakes, retader and additional engine exhaust brakes)
| Etransm | [kWh] | Total work of transmission losses
| Eretarder | [kWh] | Total retarder losses
| Etorqueconv | [kWh] | Total torque converter losses
| Mass | [kg] | Vehicle mass (equals **Curb Weight Vehicle** plus **Curb Weight Extra Trailer/Body**, see [Vehicle Editor](#vehicle-editor))
| Loading | [kg] | Vehicle loading (see [Vehicle Editor](#vehicle-editor))
| a | [m/s²] | Average acceleration
| a_pos | [m/s²] | Average acceleration in acceleration phases \*
| a_neg | [m/s²] | Average deceleration in deceleration phases \*
| Acc.Noise | [m/s²] | Acceleration noise
| pAcc | [%] | Time share of acceleration phases \*
| pDec | [%] | Time share of deceleration phases \*
| pCruise | [%] | Time share of cruise phases \*
| pStop | [%] | Time share of stop phases \*
| Name | Unit | Description |
|---------------|-------------------------------|------------------------------------------------------------------------------------------------------------------------------|
| Job | [-] | Job number in the format "x-y" (where x = file number and y = cycle number) |
| Input File | [-] | Name of the input file |
| Cycle | [-] | Name of the cycle file |
| Status | [-] | The result status of the run (Success, Aborted) |
| time | [s] | Total simulation time |
| distance | [km] | Total traveled distance |
| speed | [km/h] | Average vehicle speed |
| altitudeDelta | [m] | Altitude difference between start and end of cycle |
| Ppos | [kW] | Average positive engine power |
| PwheelPos | [kW] | Average positive wheel power |
| Pneg | [kW] | Average negative engine power |
| FC-Final | [g/km], [l/100km], [l/100tkm] | Average fuel consumption. Final value after all corrections. |
| FC-Map | [g/h], [g/km] | Fuel consumption interpolated from [Fuel Map](#fuel-consumption-calculation). |
| FC-AUXc | [g/h], [g/km] | Fuel consumption after [Auxiliary-Start/Stop Correction](#fuel-consumption-calculation). (Based on FC-Map.) |
| FC-WHTCc | [g/h], [g/km] | Fuel consumption after [WHTC Correction](#fuel-consumption-calculation). (Based on FC-AUXc.) |
| CO2 | [g/km], [g/tkm] | Average CO~2~ emissions. |
| Pbrake | [kW] | Average brake power (not including engine drag) |
| EposICE | [kWh] | Total positive engine work |
| EnegICE | [kWh] | Total negative engine work (engine brake) |
| Eair | [kWh] | Total work of air resistance |
| Eroll | [kWh] | Total work of rolling resistance |
| Egrad | [kWh] | Total work of gradient resistance |
| Eacc | [kWh] | Total work from accelerations (<0) / decelerations (>0) |
| Eaux | [kWh] | Total energy demand of auxiliaries |
| Eaux_xxx | [kWh] | Energy demand of auxiliary with ID xxx. See also [Aux Dialog](#auxiliary-dialog) and [Driving Cycle](#driving-cycles). |
| Ebrake | [kWh] | Total work dissipated in mechanical braking (sum of service brakes, retader and additional engine exhaust brakes) |
| Etransm | [kWh] | Total work of transmission losses |
| Eretarder | [kWh] | Total retarder losses |
| Etorqueconv | [kWh] | Total torque converter losses |
| Mass | [kg] | Vehicle mass (equals **Curb Weight Vehicle** plus **Curb Weight Extra Trailer/Body**, see [Vehicle Editor](#vehicle-editor)) |
| Loading | [kg] | Vehicle loading (see [Vehicle Editor](#vehicle-editor)) |
| a | [m/s²] | Average acceleration |
| a_pos | [m/s²] | Average acceleration in acceleration phases \* |
| a_neg | [m/s²] | Average deceleration in deceleration phases \* |
| Acc.Noise | [m/s²] | Acceleration noise |
| pAcc | [%] | Time share of acceleration phases \* |
| pDec | [%] | Time share of deceleration phases \* |
| pCruise | [%] | Time share of cruise phases \* |
| pStop | [%] | Time share of stop phases \* |
\*Definition of phases:
: Acceleration Phase: a~3s~ &gt; 0.125 \[m/s^2^\]
......
......@@ -2,7 +2,7 @@
**!!! The Torque Converter Model is still in development !!!**
<div class="vecto2">
The file uses the [VECTO CSV format](#csv).
- Filetype: .vtlm
......@@ -11,4 +11,4 @@ The file uses the [VECTO CSV format](#csv).
See [Torque Converter Model](#torque-converter-model) for more information about the component model.
</div>
\ No newline at end of file
......@@ -2,13 +2,14 @@
This file defines losses in gearbox and axle transmission and must be provided for each gear in the [Gearbox File](#gearbox-editor). The file uses the [VECTO CSV format](#csv).
- Filetype: .vtlm
- Header: **Input Speed \[rpm], Input Torque \[Nm], Torque Loss [Nm]**
- Header: **Input Speed [rpm], Input Torque [Nm], Torque Loss [Nm]**
- Requires at least 3 data entries
Input speed and input torque are meant at the engine-side.
**Example:**
~~~
Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
0 ,-350 ,6.81
0 ,-150 ,5.81
......@@ -16,16 +17,16 @@ Input speed and input torque are meant at the engine-side.
0 ,250 ,6.31
0 ,450 ,7.31
0 ,650 ,8.31
~~~
###Sign of torque values###
####Sign of torque values
* Input Torque >0 means normal driving operation.
* Input Torque \<0 means motoring operation. **The Torque Loss Map must include negative torque values for engine motoring operation!**
* Torque Loss is always positive!
###Calculation of Output Torque###
####Calculation of Output Torque
VECTO calculates the output torque using this formula, independent from the current operation mode (driving/braking):
......@@ -38,3 +39,6 @@ with:
* T~loss~ ... Torque loss
* r~gear~ ... The tranmission ratio for the gurrent gear
......@@ -5,60 +5,61 @@ File for the definition of a vehicle in vecto. Can be created with the [Vehicle
- File format is [JSON](#json).
- Filetype ending is ".vveh"
Refers to other files:
* [Cross Wind Correction (VCDV, VCDB)](#cross-wind-correction)
* [Retarder Loss Map (VRLM)](#retarder-loss-torque-input-file-.vrlm)
**Example:**
~~~json
{
"Header": {
"CreatedBy": "Raphael Luz IVT TU-Graz (14fea510-e457-4bf6-860f-a9514dc327f1)",
"Date": "02.07.2015 13:55:46",
"AppVersion": "2.2 beta-2",
"CreatedBy": "Michael Krisper (Graz University of Technology)",
"Date": "2016-03-18T14:42:45+01:00",
"AppVersion": "3.0.2",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": false,
"VehCat": "Coach",
"CurbWeight": 15700.0,
"VehCat": "RigidTruck",
"CurbWeight": 6000.0,
"CurbWeightExtra": 0.0,
"Loading": 3300.0,
"MassMax": 24.0,
"CdA": 3.2634,
"rdyn": 520.0,
"Rim": "-",
"Loading": 0.0,
"MassMax": 11.9,
"CdA": 4.5,
"rdyn": 450,
"Rim": "15° DC Rims",
"CdCorrMode": "CdOfVeng",
"CdCorrFile": "24t Coach.vcdv",
"CdCorrFile": "CrossWindCorrection.vcdv",
"Retarder": {
"Type": "Secondary",
"Ratio": 1.0,
"File": "Retarder.vrlm"
},
"AxleConfig": {
"Type": "6x2",
"Type": "4x2",
"Axles": [
{
"Inertia": 21.66667,
"Wheels": "-",
"AxleWeightShare": 0.4375,
"Inertia": 6.0,
"Wheels": "245/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0055,
"FzISO": 62538.75
"RRCISO": 0.008343465,
"FzISO": 20800.0
},
{
"Inertia": 10.83333,
"Wheels": "-",
"AxleWeightShare": 0.375,
"Inertia": 6.0,
"Wheels": "245/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0065,
"FzISO": 52532.55
},
{
"Inertia": 21.66667,
"Wheels": "-",
"AxleWeightShare": 0.1875,
"TwinTyres": false,
"RRCISO": 0.0055,
"FzISO": 62538.75
"RRCISO": 0.00943769,
"FzISO": 20800.0
}
]
}
}
}
~~~
......@@ -34,6 +34,10 @@
- Bugfix: retarder takes the retarder ratio into account for lossmap lookup
- Bugfix: use unique identifier for jobs in job list
- Bugfix: error in triagulation of fuel consumption map
- Bugfix: better error message roll resistance calculation could not be calculated
- Bugfix: measured speed now calculates distance correctly
- Bugfix: measured speed fills missing moddata columns (acc, dist, grad)
- Bugfix: better error message when driving cycle is missing.
**VECTO 3.0.1**
......
This diff is collapsed.
......@@ -100,11 +100,11 @@ div.vecto2:before {
content: 'Note: Vecto 2.2!';
background: gray;
color: white;
padding: 5px 5px 5px 33px;
padding: 5px 5px 5px 5px;
margin-left: -8px;
font-weight: bold;
display: inline-block;
margin-bottom: 1em;
font-size: smaller;
}
......@@ -118,10 +118,14 @@ div.vecto3:before {
content: 'Note: Vecto 3.x!';
background: green;
color: white;
padding: 5px 5px 5px 33px;
padding: 5px 5px 5px 5px;
margin-left: -8px;
font-weight: bold;
display: inline-block;
margin-bottom: 1em;
font-size: smaller;
}
pre {
padding: 2px;
border: 1px solid #EEEEEE;
}
User Manual/pics/AccLimit.png

10.8 KiB | W: | H:

User Manual/pics/AccLimit.png

10.8 KiB | W: | H:

User Manual/pics/AccLimit.png
User Manual/pics/AccLimit.png
User Manual/pics/AccLimit.png
User Manual/pics/AccLimit.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -566,21 +566,9 @@ Imports TUGraz.VectoCore.Utils
End If
DeclOnOff()
'Init Log Writer for Listening to VectoCore Nlog
Dim config As LoggingConfiguration = LogManager.Configuration
Dim methodCallTarget As MethodCallTarget = New MethodCallTarget()
methodCallTarget.ClassName = "VECTO.F_MAINForm, vecto"
methodCallTarget.MethodName = "LogMessage"
methodCallTarget.Name = "WarningLogger"
methodCallTarget.Parameters.Add(New MethodCallParameter("${level}"))
methodCallTarget.Parameters.Add(New MethodCallParameter("${message}"))
config.LoggingRules.Add(New LoggingRule("*", LogLevel.Warn, methodCallTarget))
LogManager.Configuration = config
End Sub
Public Shared Sub LogMessage(level As String, message As String)
Public Shared Sub LogMethod(level As String, message As String)
Try
If level = "Warn" Then
VECTOworkerV3.ReportProgress(100, New With {.Target = "ListBoxWarning", .Message = message})
......
......@@ -12,11 +12,13 @@
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target xsi:type="Console" name="ConsoleLogger" error="true" />
<target name="WarningLogger" xsi:type="MethodCall" className="VECTO.F_MAINForm, VECTO" methodName="LogMethod"><parameter layout="${level}" /><parameter layout="${message}" /></target>
<target xsi:type="File" name="LogFile" fileName="${basedir}/logs/log.txt"
layout="${longdate} [${processid}:${threadid}@${machinename}] ${callsite} ${level:uppercase=true}: ${message} ${exception:format=tostring}" />
</targets>
<rules>
<logger name="*" minlevel="Warn" writeTo="LogFile" />
<logger name="*" minlevel="Warn" writeTo="WarningLogger" />
</rules>
</nlog>
<system.diagnostics>
......
......@@ -369,8 +369,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
RessourceHelper.ReadStream(RessourceHelper.Namespace + "MissionCycles." + cycle.Value<string>() + ".vdri");
cycleData = VectoCSVFile.ReadStream(cycleDataRes);
} catch {
// todo: log?
cycleData = null;
Log.Debug("Driving Cycle could not be read: " + cycleFile);
throw new VectoException("Driving Cycle could not be read: " + cycleFile);
}
}
retVal.Add(new CycleInputData() {
......
......@@ -165,9 +165,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
private static class FieldsCdxABeta
{
public const string Beta = "Beta";
public const string Beta = "beta";
public const string DeltaCdxA = "Delta CdA";
public const string DeltaCdxA = "delta CdA";
}
......
......@@ -125,9 +125,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
var wheelsInertia = 0.0.SI<KilogramSquareMeter>();
foreach (var axle in _axleData) {
var nrWheels = axle.TwinTyres ? 4 : 2;
var baseValue = (axle.AxleWeightShare * TotalVehicleWeight() * g / axle.TyreTestLoad / nrWheels).Value();
if (baseValue == 0) {
throw new VectoSimulationException(
"Axle Roll Resistance Coefficient could not be calculated. One of the values is 0: AxleWeightShare: {0}, TotalVehicleWeight: {1}, TyreTestLoad: {2}, nrWheels: {3}",
axle.AxleWeightShare, TotalVehicleWeight(), axle.TyreTestLoad, nrWheels);
}
rrc += axle.AxleWeightShare * axle.RollResistanceCoefficient *
Math.Pow((axle.AxleWeightShare * TotalVehicleWeight() * g / axle.TyreTestLoad / nrWheels).Value(),
Physics.RollResistanceExponent - 1);
Math.Pow(baseValue, Physics.RollResistanceExponent - 1);
wheelsInertia += nrWheels * axle.Inertia;
}
TotalRollResistanceCoefficient = rrc;
......
......@@ -335,10 +335,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
container[ModalResultField.FCWHTCc] = fcaux * ModelData.WHTCCorrectionFactor;
if (ModelData.ConsumptionMap.Extrapolated) {
Log.Warn("FuelMap Extrapolated: n_eng_avg: {0} Tq: {1}, FC: {2}", avgEngineSpeed, CurrentState.EngineTorque, fc);
Log.Warn("FuelMap Extrapolated: n_eng_avg: {0} Tq: {1}, FC: {2}", avgEngineSpeed.ConvertTo().Rounds.Per.Minute,
CurrentState.EngineTorque, fc);
}
} catch (VectoException ex) {
Log.Warn("FuelMap: {0} n_eng_avg: {1} Tq: {2}", ex.Message, avgEngineSpeed, CurrentState.EngineTorque);
Log.Warn("FuelMap: {0} n_eng_avg: {1} Tq: {2}", ex.Message, avgEngineSpeed.ConvertTo().Rounds.Per.Minute,
CurrentState.EngineTorque);
container[ModalResultField.FCMap] = null;
}
}
......
......@@ -84,7 +84,8 @@ namespace TUGraz.VectoCore.Utils
var result = evaluateFunction(x);
if (criterion(result)) {
log.Debug("InterpolateLinear found an operating point after {0} function calls.", iterationCount);
LogManager.EnableLogging();
log.Debug("SearchBinary found an operating point after {0} function calls.", iterationCount);
return x;
}
y = getYValue(result);
......@@ -103,7 +104,6 @@ namespace TUGraz.VectoCore.Utils
Func<T, object> evaluateFunction, Func<object, bool> criterion) where T : SIBase<T>
{
var log = LogManager.GetLogger(typeof(SearchAlgorithm).FullName);
LogManager.DisableLogging();
var debug = new List<dynamic> { new { x = x1, y = y1 } };
var x2 = x1 + interval;
......@@ -121,7 +121,6 @@ namespace TUGraz.VectoCore.Utils
x1 = x2;
x2 = (-d / k).Cast<T>();
result = evaluateFunction(x2);
if (criterion(result)) {
log.Debug("InterpolateLinear found an operating point after {0} function calls.", iterationCount);
......@@ -131,7 +130,6 @@ namespace TUGraz.VectoCore.Utils
y1 = y2;
}
LogManager.EnableLogging();
log.Debug("InterpolateLinear could not find an operating point.");
log.Error("Exceeded max iterations when searching for operating point!");
log.Error("debug: {0} ... {1}", ", ".Join(debug.Take(5)), ", ".Join(debug.Slice(-6)));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment