From aa63948887b8852bca656d1b4acb19b1ccb26ef4 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Wed, 22 Jun 2016 17:47:29 +0200 Subject: [PATCH] updated segment table weights --- Declaration/SegmentTable.csv | 2 +- VECTO/GUI/F_MAINForm.vb | 1 + VECTO/GUI/F_VEH.vb | 2 +- .../DeclarationDataAdapter.cs | 2 +- .../Models/Declaration/DeclarationData.cs | 11 ++-- .../VectoCore/Models/Declaration/Mission.cs | 2 +- .../VectoCore/Models/Declaration/Segments.cs | 51 ++++++++++------ .../Models/Declaration/StandardWeigths.cs | 47 +++++++++++++++ .../SimulationComponent/Data/VehicleData.cs | 8 ++- .../Declaration/SegmentTable Description.md | 57 ++++++++++++++++++ .../Resources/Declaration/SegmentTable.csv | 58 +++++++++---------- .../Resources/Declaration/StandardWeights.csv | 11 ++++ VectoCore/VectoCore/VectoCore.csproj | 2 + 13 files changed, 196 insertions(+), 58 deletions(-) create mode 100644 VectoCore/VectoCore/Models/Declaration/StandardWeigths.cs create mode 100644 VectoCore/VectoCore/Resources/Declaration/SegmentTable Description.md create mode 100644 VectoCore/VectoCore/Resources/Declaration/StandardWeights.csv diff --git a/Declaration/SegmentTable.csv b/Declaration/SegmentTable.csv index b7cdfef977..f28c6c9e63 100644 --- a/Declaration/SegmentTable.csv +++ b/Declaration/SegmentTable.csv @@ -1,7 +1,7 @@ Valid,Vehicle Category ,Axle Conf.,GVW_Min,GVW_Max,HDV class,.vacc file ,Cross Wind Correction - Long haul,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,Mass Extra - Long haul,Mass Extra - Regional delivery,Mass Extra - Urban delivery,Mass Extra - Municipal utility,Mass Extra - Construction,Mass Extra - Heavy Urban,Mass Extra - Urban,Mass Extra - Suburban,Mass Extra - Interurban,Mass Extra - Coach,Payload - Long haul,Payload - Regional delivery,Payload - Urban delivery,Payload - Municipal utility,Payload - Construction,Payload - Heavy Urban,Payload - Urban,Payload - Suburban,Payload - Interurban,Payload - Coach 0,RigidTruck,4x2,0,7.5,0,Truck.vacc,-,RigidSolo,-,-,-,-,0,1,1,0,0,0,0,0,0,0,-,???,???,-,-,-,-,-,-,-,-,???,???,-,-,-,-,-,-,- 1,RigidTruck,4x2,7.5,10,1,Truck.vacc,-,RigidSolo,-,45/55,-,-,0,1,1,0,0,0,0,0,0,0,-,1600,1600,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,- -1,RigidTruck,4x2,10,12,2,Truck.vacc,RigidSolo,RigidSolo,40/60,45/55,-,-,1,1,1,0,0,0,0,0,0,0,1900,1900,1900,-,-,-,-,-,-,-,f,f,f,-,-,-,-,-,-,- +1,RigidTruck,4x2,10,12,2,Truck.vacc,RigidSolo,RigidSolo,22.5/32.5,45/55,45/1,-,1,1,1,0,0,0,0,0,0,0,1900,1900,1900,-,-,-,-,-,-,-,f,f,f,-,-,-,-,-,-,- 1,RigidTruck,4x2,12,16,3,Truck.vacc,-,RigidSolo,-,40/60,-,-,0,1,1,0,0,0,0,0,0,0,-,2000,2000,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,- 1,RigidTruck,4x2,16,99,4,Truck.vacc,RigidTrailer,RigidSolo,20/30,45/55,50/2,-,1,1,0,1,0,0,0,0,0,0,7500,2100,-,2100,-,-,-,-,-,-,14000,4400,-,4400,-,-,-,-,-,- 1,Tractor,4x2,16,99,5,Truck.vacc,TractorSemitrailer,TractorSemitrailer,20/25,25/25,55/3,50/3,1,1,0,0,0,0,0,0,0,0,7500,7500,-,-,-,-,-,-,-,-,19300,12900,-,-,-,-,-,-,-,- diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb index c8fccda99a..4499633c14 100644 --- a/VECTO/GUI/F_MAINForm.vb +++ b/VECTO/GUI/F_MAINForm.vb @@ -1646,6 +1646,7 @@ lbFound: Catch ex As Exception MsgBox(String.Format("ERROR running job {0}: {1}", jobFile, ex.Message), MsgBoxStyle.Critical) sender.ReportProgress(0, New With {.Target = "ListBoxError", .Message = ex.Message}) + Return End Try Next diff --git a/VECTO/GUI/F_VEH.vb b/VECTO/GUI/F_VEH.vb index 6c609ce434..bef991990d 100644 --- a/VECTO/GUI/F_VEH.vb +++ b/VECTO/GUI/F_VEH.vb @@ -451,7 +451,7 @@ Public Class F_VEH Next - If Math.Abs(axleShareCheck - 1) > 0.000001 Then + If Not Cfg.DeclMode AndAlso Math.Abs(axleShareCheck - 1) > 0.000001 Then MsgBox("Relative axle loads must sum up to 1.0. Current value: " & axleShareCheck, MsgBoxStyle.Critical) Return False End If diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index 1e429b303d..c3ba4937e6 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper var retVal = SetCommonVehicleData(data); retVal.GrossVehicleMassRating = data.GrossVehicleMassRating; - + retVal.TrailerGrossVehicleMassRating = mission.TrailerGrossVehicleMassRating; retVal.CurbWeigthExtra = mission.MassExtra; retVal.Loading = loading; retVal.DynamicTyreRadius = diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 3893b68873..09f3626a5b 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -31,18 +31,13 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; -using System.Net.NetworkInformation; -using iTextSharp.text.pdf; -using iTextSharp.text.pdf.interfaces; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Models.SimulationComponent.Data; -using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.Utils; @@ -63,6 +58,7 @@ namespace TUGraz.VectoCore.Models.Declaration private WHTCCorrection _whtcCorrection; private AirDrag _airDrag; private TorqueConverter _torqueConverter; + private StandardWeigths _standardWeigths; public static Wheels Wheels { @@ -132,6 +128,11 @@ namespace TUGraz.VectoCore.Models.Declaration } } + public static StandardWeigths StandardWeights + { + get { return Instance()._standardWeigths ?? (Instance()._standardWeigths = new StandardWeigths()); } + } + public static PneumaticSystem PneumaticSystem { get { return Instance()._pneumaticSystem ?? (Instance()._pneumaticSystem = new PneumaticSystem()); } diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs index 5e0cd31d59..e4d228e975 100644 --- a/VectoCore/VectoCore/Models/Declaration/Mission.cs +++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs @@ -50,7 +50,6 @@ namespace TUGraz.VectoCore.Models.Declaration } } - public class Mission { public MissionType MissionType { get; set; } @@ -59,6 +58,7 @@ namespace TUGraz.VectoCore.Models.Declaration public double[] TrailerAxleWeightDistribution { get; set; } public Kilogram MassExtra { get; set; } + public Kilogram TrailerGrossVehicleMassRating { get; set; } public Kilogram MinLoad { get; set; } public Kilogram RefLoad { get; set; } diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs index 640879e85f..ce8985fdbc 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segments.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs @@ -95,20 +95,21 @@ namespace TUGraz.VectoCore.Models.Declaration AxleConfiguration = axleConfiguration, VehicleClass = VehicleClassHelper.Parse(row.Field<string>("hdvclass")), AccelerationFile = RessourceHelper.ReadStream(RessourceHelper.Namespace + "VACC." + row.Field<string>(".vaccfile")), - Missions = CreateMissions(grossVehicleMassRating, curbWeight, row).ToArray(), + Missions = CreateMissions(ref grossVehicleMassRating, curbWeight, row), GrossVehicleMassRating = grossVehicleMassRating }; return segment; } - private static IEnumerable<Mission> CreateMissions(Kilogram grossVehicleMassRating, Kilogram curbWeight, DataRow row) + private static Mission[] CreateMissions(ref Kilogram grossVehicleWeight, Kilogram curbWeight, DataRow row) { var trailerOnlyInLongHaul = row.Field<string>("vehiclecategory") == VehicleCategory.RigidTruck.ToString() && - row.Field<string>("traileraxles-longhaul") != "-" && - row.Field<string>("traileraxles-other") == "-"; + !string.IsNullOrWhiteSpace(row.Field<string>("traileraxles-longhaul")) && + string.IsNullOrWhiteSpace(row.Field<string>("traileraxles-other")); var missionTypes = Enum.GetValues(typeof(MissionType)).Cast<MissionType>(); + var missions = new List<Mission>(); foreach (var missionType in missionTypes.Where(m => row.Field<string>(m.ToString()) == "1")) { string vcdvField; string axleField; @@ -137,28 +138,42 @@ namespace TUGraz.VectoCore.Models.Declaration var count = 0; var weightPercent = 0.0; - if (trailerAxles[0] != "-") { + if (!string.IsNullOrWhiteSpace(trailerAxles[0])) { count = int.Parse(trailerAxles[1]); weightPercent = trailerAxles[0].ToDouble(); } - mission.TrailerAxleWeightDistribution = Enumerable.Repeat(weightPercent / count / 100.0, count).ToArray(); - + mission.TrailerAxleWeightDistribution = (weightPercent / 100.0 / count).Repeat(count).ToArray(); + mission.TrailerGrossVehicleMassRating = 0.SI<Kilogram>(); mission.MinLoad = 0.SI<Kilogram>(); - mission.MaxLoad = grossVehicleMassRating - mission.MassExtra - curbWeight; + mission.MaxLoad = grossVehicleWeight - curbWeight - mission.MassExtra; var refLoadField = row.Field<string>("payload-" + missionType.ToString().ToLower()); - if (refLoadField == "R(pc)") - mission.RefLoad = VectoMath.Min(DeclarationData.PayloadForGVW(grossVehicleMassRating, missionType), mission.MaxLoad); - else if (refLoadField == "R(pc)+T") { - // R(pc) + Trailer 3.4t + Loading Trailer 5.3t - mission.RefLoad = VectoMath.Min(DeclarationData.PayloadForGVW(grossVehicleMassRating, missionType), mission.MaxLoad); - mission.RefLoad += 3400.SI<Kilogram>() + 5300.SI<Kilogram>(); - } else { - mission.RefLoad = VectoMath.Min(refLoadField.ToDouble().SI<Kilogram>(), mission.MaxLoad); + switch (refLoadField) { + case "pc(R)": + mission.RefLoad = VectoMath.Min(DeclarationData.PayloadForGVW(grossVehicleWeight, missionType), mission.MaxLoad); + break; + case "pc(R)+T": + // VECTO-262 + var trailerCurbWeight = DeclarationData.StandardWeights.Lookup(row.Field<string>("Trailer")).CurbWeight; + mission.TrailerGrossVehicleMassRating = + DeclarationData.StandardWeights.Lookup(row.Field<string>("Trailer")).GrossVehicleWeight; + mission.MaxLoad += mission.TrailerGrossVehicleMassRating - trailerCurbWeight; + + // mass extra doesn't need to be changed: trailer curb weight already included in segment table! + //mission.MassExtra += trailerCurbWeight; + + var payload = DeclarationData.PayloadForGVW(grossVehicleWeight, missionType) + + (mission.TrailerGrossVehicleMassRating - trailerCurbWeight) * 3 / 4; + + mission.RefLoad = VectoMath.Min(payload, mission.MaxLoad); + break; + default: + mission.RefLoad = VectoMath.Min(refLoadField.ToDouble().SI<Kilogram>(), mission.MaxLoad); + break; } - - yield return mission; + missions.Add(mission); } + return missions.ToArray(); } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Declaration/StandardWeigths.cs b/VectoCore/VectoCore/Models/Declaration/StandardWeigths.cs new file mode 100644 index 0000000000..b227119cdb --- /dev/null +++ b/VectoCore/VectoCore/Models/Declaration/StandardWeigths.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using System.Data; +using System.Linq; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.Models.Declaration +{ + public sealed class StandardWeigths : LookupData<string, StandardWeight> + { + private const string ResourceId = "TUGraz.VectoCore.Resources.Declaration.StandardWeights.csv"; + + public StandardWeigths() + { + ParseData(ReadCsvResource(ResourceId)); + } + + public override StandardWeight Lookup(string id) + { + try { + return Data[id]; + } catch (KeyNotFoundException) { + throw new VectoException("StandardWeigths Lookup Error: No value found for ID '{0}'", id); + } + } + + protected override void ParseData(DataTable table) + { + NormalizeTable(table); + + Data = table.Rows.Cast<DataRow>() + .ToDictionary( + kv => kv.Field<string>("name"), + kv => new StandardWeight { + CurbWeight = kv.ParseDoubleOrGetDefault("curbweight").SI<Kilogram>(), + GrossVehicleWeight = kv.ParseDoubleOrGetDefault("gvw").SI<Kilogram>() + }); + } + } + + public sealed class StandardWeight + { + public Kilogram CurbWeight; + public Kilogram GrossVehicleWeight; + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs index aca8f710a0..f39b379093 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs @@ -80,6 +80,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [Required, SIRange(3500, 40000)] public Kilogram GrossVehicleMassRating { get; internal set; } + [Required, SIRange(0, 40000)] + public Kilogram TrailerGrossVehicleMassRating { get; internal set; } + [Required, SIRange(0.1, 0.7)] public Meter DynamicTyreRadius { get; internal set; } @@ -147,10 +150,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data weightShareSum, 1 - weightShareSum)); } - if (vehicleData.TotalVehicleWeight() > vehicleData.GrossVehicleMassRating) { + var gvwTotal = vehicleData.GrossVehicleMassRating + vehicleData.TrailerGrossVehicleMassRating; + if (vehicleData.TotalVehicleWeight() > gvwTotal) { return new ValidationResult( string.Format("Total Vehicle Weight is greater than GrossVehicleMassRating! sum: {0}, GVM: {1}", - vehicleData.TotalVehicleWeight(), vehicleData.GrossVehicleMassRating)); + vehicleData.TotalVehicleWeight(), gvwTotal)); } return ValidationResult.Success; diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable Description.md b/VectoCore/VectoCore/Resources/Declaration/SegmentTable Description.md new file mode 100644 index 0000000000..a4647dafcd --- /dev/null +++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable Description.md @@ -0,0 +1,57 @@ +# SegmentTable + +This document describes the structure of the file SegmentTable.csv. This +document resembles the Vehicle Classes table from the ACEA Whitebook and +defines standard vehicle classes, values and driving cycles. +(ACEA Whitebook April 2016, Part 1, Page 51). + +If a value is not defined there is a "-". + +| column | values | description | +|-----------------------------------|------------------------------------------------|----------------------------------------------------------------------------------------------------| +| Valid | 0,1 | 1 means the entry is enabled, 0 means the entry is disabled and will not be used in vecto. | +| Vehicle Category | RigidTruck,Tractor,CityBus,InterurbanBus,Coach | The basic vehicle category from whitebook. | +| Axle Conf. | 4x2,4x4,6x2,6x4,6x6,8x2,8x4,8x6,8x8 | | +| GVW_Min | | | +| GVW_Max | | | +| HDV class | | | +| Body | B1,B2,B3,B4,B5,B6 | Standard bodies (see standardbodies.csv) | +| Trailer | T1, T2 | Standard trailers (see standardbodies.csv) | +| Semitrailer | ST1, ST1-v2 | Standard semitrailer (see standardbodies.csv) | +| .vacc file | <filename>.vacc | | +| Cross Wind Correction - Long haul | RigidSolo, RigidTrailer, TractorSemitrailer | | +| Cross Wind Correction - Other | RigidSolo, TractorSemitrailer, CoachBus | | +| Truck Axles - Long haul | percent(/percent)\* (e.g. 40/60) | percent share for each axle on the truck. sum must be < 100. sum + trailer must be 100. | +| Truck Axles - Other | percent(/percent)\* | percent share for each axle on the truck. sum must be < 100. sum + trailer must be 100. | +| Trailer Axles - Long haul | percent/count | percent share divides amongst the axles of the trailer. e.g. for 3 axles: 60/3 (means 20%/20%/20%) | +| Trailer Axles - Other | percent/count | percent share divides amongst the axles of the trailer. e.g. for 3 axles: 60/3 (means 20%/20%/20%) | +| Long haul | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Regional delivery | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Urban delivery | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Municipal utility | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Construction | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Heavy Urban | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Urban | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Suburban | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Interurban | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Coach | 0,1 | if 1 then this driving cycle is enabled for declaration, 0 means it is disabled. | +| Mass Extra - Long haul | | | +| Mass Extra - Regional delivery | | | +| Mass Extra - Urban delivery | | | +| Mass Extra - Municipal utility | | | +| Mass Extra - Construction | | | +| Mass Extra - Heavy Urban | | | +| Mass Extra - Urban | | | +| Mass Extra - Suburban | | | +| Mass Extra - Interurban | | | +| Mass Extra - Coach | | | +| Payload - Long haul | | | +| Payload - Regional delivery | | | +| Payload - Urban delivery | | | +| Payload - Municipal utility | | | +| Payload - Construction | | | +| Payload - Heavy Urban | | | +| Payload - Urban | | | +| Payload - Suburban | | | +| Payload - Interurban | | | +| Payload - Coach | | | diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv index c029c51a55..9f4979f17d 100644 --- a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv +++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv @@ -1,29 +1,29 @@ -Valid,Vehicle Category ,Axle Conf.,GVW_Min,GVW_Max,HDV class,.vacc file ,Cross Wind Correction - Long haul,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,Mass Extra - Long haul,Mass Extra - Regional delivery,Mass Extra - Urban delivery,Mass Extra - Municipal utility,Mass Extra - Construction,Mass Extra - Heavy Urban,Mass Extra - Urban,Mass Extra - Suburban,Mass Extra - Interurban,Mass Extra - Coach,Payload - Long haul,Payload - Regional delivery,Payload - Urban delivery,Payload - Municipal utility,Payload - Construction,Payload - Heavy Urban,Payload - Urban,Payload - Suburban,Payload - Interurban,Payload - Coach -0 ,RigidTruck ,4x2 ,0 ,7.5 ,0 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,??? ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -1 ,RigidTruck ,4x2 ,7.5 ,10 ,1 ,Truck.vacc ,- ,RigidSolo ,- ,45/55 ,- ,- ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,1600 ,1600 ,- ,- ,- ,- ,- ,- ,- ,- ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,Tractor ,4x2 ,7.5 ,10 ,1 ,Truck.vacc ,- ,RigidSolo ,- ,45/55 ,- ,- ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,1600 ,1600 ,- ,- ,- ,- ,- ,- ,- ,- ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,RigidTruck ,4x2 ,10 ,12 ,2 ,Truck.vacc ,RigidSolo ,RigidSolo ,40/60 ,45/55 ,- ,- ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1900 ,1900 ,1900 ,- ,- ,- ,- ,- ,- ,- ,R(pc)+T ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,Tractor ,4x2 ,10 ,12 ,2 ,Truck.vacc ,RigidSolo ,RigidSolo ,40/60 ,45/55 ,- ,- ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1900 ,1900 ,1900 ,- ,- ,- ,- ,- ,- ,- ,R(pc)+T ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,RigidTruck ,4x2 ,12 ,16 ,3 ,Truck.vacc ,- ,RigidSolo ,- ,40/60 ,- ,- ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,2000 ,2000 ,- ,- ,- ,- ,- ,- ,- ,- ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,Tractor ,4x2 ,12 ,16 ,3 ,Truck.vacc ,- ,RigidSolo ,- ,40/60 ,- ,- ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,2000 ,2000 ,- ,- ,- ,- ,- ,- ,- ,- ,R(pc) ,R(pc) ,- ,- ,- ,- ,- ,- ,- -1 ,RigidTruck ,4x2 ,16 ,99 ,4 ,Truck.vacc ,RigidTrailer ,RigidSolo ,20/30 ,45/55 ,50/2 ,- ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,2100 ,- ,2100 ,- ,- ,- ,- ,- ,- ,14000 ,4400 ,- ,4400 ,- ,- ,- ,- ,- ,- -1 ,Tractor ,4x2 ,16 ,99 ,5 ,Truck.vacc ,TractorSemitrailer ,TractorSemitrailer ,20/25 ,25/25 ,55/3 ,50/3 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,7500 ,- ,- ,- ,- ,- ,- ,- ,- ,19300 ,12900 ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,4x4 ,7.5 ,16 ,6 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,??? ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,4x4 ,16 ,99 ,7 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,Tractor ,4x4 ,16 ,99 ,8 ,Truck.vacc ,- ,TractorSemitrailer ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -1 ,RigidTruck ,6x2 ,0 ,99 ,9 ,Truck.vacc ,RigidTrailer ,RigidSolo ,20/30/15 ,35/40/25 ,35/2 ,- ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,7600 ,2200 ,- ,2200 ,- ,- ,- ,- ,- ,- ,19300 ,7100 ,- ,7100 ,- ,- ,- ,- ,- ,- -1 ,Tractor ,6x2 ,0 ,99 ,10 ,Truck.vacc ,TractorSemitrailer ,TractorSemitrailer ,15/10/20 ,20/10/20 ,55/2 ,50/2 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,7500 ,- ,- ,- ,- ,- ,- ,- ,- ,19300 ,12900 ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,6x4 ,0 ,99 ,11 ,Truck.vacc ,- ,RigidSolo ,- ,35/35/30 ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,7100 ,- ,- ,- ,- ,- -0 ,Tractor ,6x4 ,0 ,99 ,12 ,Truck.vacc ,- ,TractorSemitrailer ,- ,20/15/15 ,- ,50/2 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,12900 ,- ,- ,- ,- ,- -0 ,RigidTruck ,6x6 ,0 ,99 ,13 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,Tractor ,6x6 ,0 ,99 ,14 ,Truck.vacc ,- ,TractorSemitrailer ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,8x2 ,0 ,99 ,15 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,8x4 ,0 ,99 ,16 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,12900 ,- ,- ,- ,- ,- -0 ,RigidTruck ,8x6 ,0 ,99 ,17 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,RigidTruck ,8x8 ,0 ,99 ,17 ,Truck.vacc ,- ,RigidSolo ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,CityBus ,4x2 ,0 ,18 ,B1 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,InterurbanBus ,4x2 ,0 ,18 ,B2 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,Coach ,4x2 ,0 ,18 ,B3 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,CityBus ,6x2 ,18 ,99 ,B4 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,InterurbanBus ,6x2 ,18 ,99 ,B5 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- -0 ,Coach ,6x2 ,18 ,99 ,B6 ,N/A ,- ,CoachBus ,- ,- ,- ,- ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- \ No newline at end of file +Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Body,Trailer,Semitrailer,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - Other,Truck Axles - Long haul ,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,Mass Extra - Long haul,Mass Extra - Regional delivery,Mass Extra - Urban delivery,Mass Extra - Municipal utility,Mass Extra - Construction,Mass Extra - Heavy Urban,Mass Extra - Urban,Mass Extra - Suburban,Mass Extra - Interurban,Mass Extra - Coach,Payload - Long haul ,Payload - Regional delivery,Payload - Urban delivery,Payload - Municipal utility,Payload - Construction,Payload - Heavy Urban,Payload - Urban,Payload - Suburban,Payload - Interurban,Payload - Coach +0 ,RigidTruck ,4x2 ,0 ,7.5 ,0 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +1 ,RigidTruck ,4x2 ,7.5 ,10 ,1 ,B1 , , ,Truck.vacc, ,RigidSolo , ,45/55 , , ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , ,1600 ,1600 , , , , , , , , ,pc(R) ,pc(R) , , , , , , , +1 ,Tractor ,4x2 ,7.5 ,10 ,1 ,B1 , , ,Truck.vacc, ,RigidSolo , ,45/55 , , ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , ,1600 ,1600 , , , , , , , , ,pc(R) ,pc(R) , , , , , , , +1 ,RigidTruck ,4x2 ,10 ,12 ,2 ,B2 ,T1 , ,Truck.vacc,RigidSolo ,RigidSolo ,22.5/32.5 ,45/55 ,45/1 , ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,5300 ,1900 ,1900 , , , , , , , ,pc(R)+T ,pc(R) ,pc(R) , , , , , , , +1 ,Tractor ,4x2 ,10 ,12 ,2 ,B2 ,T1 , ,Truck.vacc,RigidSolo ,RigidSolo ,22.5/32.5 ,45/55 ,45/1 , ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,5300 ,1900 ,1900 , , , , , , , ,pc(R)+T ,pc(R) ,pc(R) , , , , , , , +1 ,RigidTruck ,4x2 ,12 ,16 ,3 ,B3 , , ,Truck.vacc, ,RigidSolo , ,40/60 , , ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , ,2000 ,2000 , , , , , , , , ,pc(R) ,pc(R) , , , , , , , +1 ,Tractor ,4x2 ,12 ,16 ,3 ,B3 , , ,Truck.vacc, ,RigidSolo , ,40/60 , , ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , ,2000 ,2000 , , , , , , , , ,pc(R) ,pc(R) , , , , , , , +1 ,RigidTruck ,4x2 ,16 ,99 ,4 ,B4 ,T2 , ,Truck.vacc,RigidTrailer ,RigidSolo ,20/30 ,45/55 ,50/2 , ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,2100 , ,2100 , , , , , , ,14000 ,4400 , ,4400 , , , , , , +1 ,Tractor ,4x2 ,16 ,99 ,5 , , ,ST1 ,Truck.vacc,TractorSemitrailer ,TractorSemitrailer ,20/25 ,25/25 ,55/3 ,50/3 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,7500 , , , , , , , , ,19300 ,12900 , , , , , , , , +0 ,RigidTruck ,4x4 ,7.5 ,16 ,6 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,RigidTruck ,4x4 ,16 ,99 ,7 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,Tractor ,4x4 ,16 ,99 ,8 , , , ,Truck.vacc, ,TractorSemitrailer , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +1 ,RigidTruck ,6x2 ,0 ,99 ,9 ,B5 ,T2 , ,Truck.vacc,RigidTrailer ,RigidSolo ,20/30/15 ,35/40/25 ,35/2 , ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,7600 ,2200 , ,2200 , , , , , , ,19300 ,7100 , ,7100 , , , , , , +1 ,Tractor ,6x2 ,0 ,99 ,10 , , ,ST1 ,Truck.vacc,TractorSemitrailer ,TractorSemitrailer ,15/10/20 ,20/10/20 ,55/2 ,50/2 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,7500 ,7500 , , , , , , , , ,19300 ,12900 , , , , , , , , +0 ,RigidTruck ,6x4 ,0 ,99 ,11 , , , ,Truck.vacc, ,RigidSolo , ,35/35/30 , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , ,7100 , , , , , +0 ,Tractor ,6x4 ,0 ,99 ,12 , , , ,Truck.vacc, ,TractorSemitrailer , ,20/15/15 , ,50/2 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , ,12900 , , , , , +0 ,RigidTruck ,6x6 ,0 ,99 ,13 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,Tractor ,6x6 ,0 ,99 ,14 , , , ,Truck.vacc, ,TractorSemitrailer , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,RigidTruck ,8x2 ,0 ,99 ,15 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,RigidTruck ,8x4 ,0 ,99 ,16 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , ,12900 , , , , , +0 ,RigidTruck ,8x6 ,0 ,99 ,17 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,RigidTruck ,8x8 ,0 ,99 ,17 , , , ,Truck.vacc, ,RigidSolo , , , , ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,CityBus ,4x2 ,0 ,18 ,B1 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,InterurbanBus ,4x2 ,0 ,18 ,B2 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,Coach ,4x2 ,0 ,18 ,B3 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 , , , , , , , , , , , , , , , , , , , , +0 ,CityBus ,6x2 ,18 ,99 ,B4 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,InterurbanBus ,6x2 ,18 ,99 ,B5 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 , , , , , , , , , , , , , , , , , , , , +0 ,Coach ,6x2 ,18 ,99 ,B6 , , , , , ,CoachBus , , , , ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 , , , , , , , , , , , , , , , , , , , , \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/StandardWeights.csv b/VectoCore/VectoCore/Resources/Declaration/StandardWeights.csv new file mode 100644 index 0000000000..e17299ded5 --- /dev/null +++ b/VectoCore/VectoCore/Resources/Declaration/StandardWeights.csv @@ -0,0 +1,11 @@ +name ,gvw ,curb weight +B1 , ,1600 +B2 , ,1900 +B3 , ,2000 +B4 , ,2100 +B5 , , +B6 , ,2200 +T1 ,10500,3400 +T2 ,18000,5400 +ST1 , , +ST1-v2, , \ No newline at end of file diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 173660e7e7..55fda258f9 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -139,6 +139,7 @@ <Compile Include="Models\Declaration\PT1.cs" /> <Compile Include="Models\Declaration\Rims.cs" /> <Compile Include="Models\Declaration\Segments.cs" /> + <Compile Include="Models\Declaration\StandardWeigths.cs" /> <Compile Include="Models\Declaration\SteeringPump.cs" /> <Compile Include="Models\Declaration\TorqueConverter.cs" /> <Compile Include="Models\Declaration\VehicleClass.cs" /> @@ -312,6 +313,7 @@ </None> <EmbeddedResource Include="Resources\Declaration\LAC-DF-Vdrop.csv" /> <EmbeddedResource Include="Resources\Declaration\LAC-DF-Vtarget.csv" /> + <EmbeddedResource Include="Resources\Declaration\StandardWeights.csv" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Resources\Declaration\Report\4x2r.png" /> -- GitLab