Forked from
VECTO / VECTO Sim
11575 commits behind the upstream repository.
-
Kostis ANAGNOSTOPOULOS authoredKostis ANAGNOSTOPOULOS authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
comments.txt 211.35 KiB
>>> ApplicationEvents.vb
5: ' Für MyApplication sind folgende Ereignisse verfügbar:
7: ' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
8: ' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung nicht normal beendet wird.
9: ' UnhandledException: Wird ausgelöst, wenn in der Anwendung eine unbehandelte Ausnahme auftritt.
10: ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
11: ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
14: 'Initialisierung
25: 'Pfade
33: 'Falls Ordner nicht vorhanden: Erstellen!
52: 'Directories.txt vorkonfigurieren
78: 'Trennzeichen!
85: 'MSGtoForm(8, "Set CurrentCulture to 'en-US'", True)
91: 'Klassen initialisieren
102: 'Config
106: 'Log starten
109: 'Dateigröße checken
112: 'Falls Log zu groß: löschen
139: 'Lizenz initialisieren
>>> cConfig.vb
49: '*** Erste Zeile: Version
52: ' "V" entfernen => Zahl bleibt übrig
55: 'Falls Version ungültig: Abbruch
58: 'Version festgelegt
133: 'Config.txt
134: 'Zeile Variable Typ Beschreibung
135: '(01) WorkDPath String WorkDir
136: '(02) LastMode Short Letzter verwendeter Modus (entspricht CBoxMODE.SelectedIndex)
137: '(03) IntpV2 Boolean Neuen Interpolator verwenden
138: '(04) nnormEngStop Single Unter dieser Drehzahl Engine Stop
139: '(05) TEMpath String TEM_Data Pfad
140: '(06) LastTEM String Letzte TEM Datei -nicht in Options Form!!!
141: '(07) TEMexl Boolean Open TEM in Excel -nicht in Options Form!!!
142: '(08) EAAvInt Short Analyse intervals of seconds. Wenn 0: Wert abfragen
143: '(09) ModOut Boolean Modale Ausgabe
144: '(10) WegKorJa Boolean Wegkorrektur damit bei Geschw. Reduktion Zyklus nicht kürzer wird
145: '(11) GnVorgab Boolean Gang- bzw. Drehzahl
146: '(12) LogSize Int16 Maximale Log-Größe [MiB]
147: '(13) FZPsort Boolean FZP sortieren (früher Standard da VISSIM die .fzp nach Sekunden sortiert ausgibt)
148: '(14) FZPsortExp Boolean Sortierte FZP exportieren
149: '(15) BATCHoutpath Boolean Ausgabepfad für BATCH-Modus: <WORKDIR>, <GENPATH> oder Pfad
150: '(16) BATCHoutSubD Boolean BATCH-Ausgabe in Unterordner (je .gen Datei)
151: '(17) AirDensity Single Luftdichte
152: '(18) FinalEmOnly Boolean Nur Final-Emissions ausgeben
153: '(19) FCcorrection Boolean FC-Korrektur im BATCH-Modus
175: 'Früher: IntpV2 = CBool(line)
254: 'Version
>>> cCustomMap.vb
85: 'Min/Max suchen
105: 'Normieren
125: 'Wenn Vorzeichen von x oder y nicht gleich Vorzeichen von xA(i) oder yA(i) dann wird Zeile i übersprungen
>>> cCycleKin.vb
9: 'Fahrzustände in Sekunden
15: 'Fahrzustands-Anteile
21: 'Beschl.-Parameter
82: '3s-Beschl
89: 't_apos, t_aneg, t_cruise, t_stop
91: 'Fahranteile Stop/Acc/Dec/Cruise
106: 'Durchschnitts-Beschl
110: 'a
113: 'a-pos
116: 'a-neg
119: 'Acc.Noise
>>> cDelaunayMap.vb
35: 'XY-Triangulierung
50: 'XZ-Triangulierung
74: 'XY => Z Interpolation
90: 'ERROR: Extrapolation
97: 'XZ => Y Interpolation
115: 'ERROR: Extrapolation
121: 'ERROR: Extrapolation
176: 'Quelle: http://www.blackpawn.com/texts/pointinpoly/default.html (Barycentric Technique)
178: ' Compute vectors
188: ' Compute dot products
195: ' Compute barycentric coordinates
200: ' Check if point is in triangle
223: 'If DirectCast(left, Object) = DirectCast(right, Object) Then
224: ' Return True
225: 'End If
227: 'If (DirectCast(left, Object) Is Nothing) OrElse (DirectCast(right, Object) Is Nothing) Then
228: ' Return False
229: 'End If
231: ' Just compare x and y here...
326: 'If DirectCast(left, Object) = DirectCast(right, Object) Then
327: ' Return True
328: 'End If
330: 'If (DirectCast(left, Object) Is Nothing) Or (DirectCast(right, Object) Is Nothing) Then
331: ' Return False
332: 'End If
351: ' The triangle list
356: ' The "supertriangle" which encompasses all triangulation points.
357: ' This triangle initializes the algorithm and will be removed later.
361: ' Include each point one at a time into the existing triangulation
363: ' Initialize the edge buffer.
366: ' If the actual vertex lies inside the circumcircle, then the three edges of the
367: ' triangle are added to the edge buffer and the triangle is removed from list.
378: ' Remove duplicate edges. This leaves the convex hull of the edges.
379: ' The edges in this convex hull are oriented counterclockwise!
391: ' Generate new counterclockwise oriented triangles filling the "hole" in
392: ' the existing triangulation. These triangles all share the actual vertex.
398: ' We don't want the supertriangle in the triangulation, so
399: ' remove all triangles sharing a vertex with the supertriangle.
406: ' Return the triangles
416: ' get the extremal x and y coordinates
428: ' make a triangle
>>> cDEV.vb
13: '********************************* Anleitung zur Einbindung neuer DEV-Options *********************************
15: '1. Eintrag in "Sub New()"
17: ' I) Neues cDEVoption Objekt definieren mit "Conf0 = New cDEVoption(ConfigType, Description, SaveInConfg, Enabled)"
19: ' ConfigType <tDEVconfType> ...definiert Typ: Boolean, Integer, Single, String, Menüauswahl (Integer) oder Verweis auf Funktion
20: ' Description <String> ...Beschreibung des Parameters
21: ' SaveInConfg <Boolean> ...Ob Einstellung für nächsten PHEM-Start gespeichert werden soll
22: ' Enabled <Boolean> ...Ob Einstellung im DEV-Tab geändert werden kann
24: ' II) Default-Wert definieren. Hier wird unterschieden welcher ConfigType verwendet wird:
26: ' a) ConfigType = tBoolean:
28: ' Conf0.BoolVal = ... <Boolean>
30: ' b) ConfigType = tSingleVal:
32: ' Conf0.SingleVal = ... <Single>
34: ' c) ConfigType = tStringVal:
36: ' Conf0.StringVal = ... <String>
38: ' d) ConfigType = tIntVal:
40: ' Conf0.IntVal = ... <Integer>
42: ' e) ConfigType = tAction:
44: ' Conf0.ActionDelegate = New cDEVoption.dActionDelegate(AddressOf NameDerFunktion)
46: ' Wobei NameDerFunktion die aufzurufende Funktion ist die einen <String> übergibt: "Public Function NameDerFunktion() As String"
48: ' f) ConfigType = tContMenIndex:
50: ' Verfügbare Auswahl-Möglichkeiten als <String> definieren:
52: ' Conf0.AddMode("Auswahl 1")
53: ' Conf0.AddMode("Auswahl 2")
54: ' usw...
56: ' Default-Wert definieren: Erste Auswahl = 0
58: ' Conf0.ModeIndex = ... <Integer>
73: '**************************** START: Parameter konfigurieren '****************************
77: 'Conf0 = New cDEVoption(tDEVconfType.tBoolean, "Kennfelderstellung mit Median")
78: 'Conf0.BoolVal = False
79: 'MyOptions.Add("KF-Median", Conf0)
81: 'Conf0 = New cDEVoption(tDEVconfType.tAction, "Action Test")
82: 'Conf0.ActionDelegate = New cDEVoption.dActionDelegate(AddressOf Me.TestFunction)
83: 'MyOptions.Add("Action_Test", Conf0)
85: 'Conf0 = New cDEVoption(tDEVconfType.tIntVal, "Integer Test", True, False)
86: 'Conf0.IntVal = 666
87: 'MyOptions.Add("Integer_Test", Conf0)
89: 'Conf0 = New cDEVoption(tDEVconfType.tSingleVal, "Single Test")
90: 'Conf0.SingleVal = 1.2345
91: 'MyOptions.Add("Single_Test", Conf0)
93: 'Conf0 = New cDEVoption(tDEVconfType.tStringVal, "String Test", False)
94: 'Conf0.StringVal = "Hallo DU!"
95: 'MyOptions.Add("String_Test", Conf0)
97: 'Conf0 = New cDEVoption(tDEVconfType.tSelection, "Menu Test", False, False)
98: 'Conf0.AddMode("Mode 0")
99: 'Conf0.AddMode("Hugo")
100: 'Conf0.AddMode("Charlie")
101: 'Conf0.AddMode("Mode 3")
102: 'Conf0.ModeIndex = 3
103: 'MyOptions.Add("Menu_Test", Conf0)
113: '**************************** ENDE: Parameter konfigurieren '*****************************
121: 'Initialisiert die tatsächlichen Config-Parameter aus der MyConfigs-Liste
126: 'Demo für Delegate Function
327: '??? Darf nicht sein
>>> cEmComp.vb
5: 'IDstring:
6: ' Def-Komponente: IDstring = sKey (upper case)
7: ' Cstm-Komponente (tMapComp.Undefined): IDstring = Name (upper case)
21: 'Transient Correction
25: 'Komponente wird sekündlich ausgegeben
28: 'ATVals definiert (EXS)
31: 'Summen/DruchschnittsWerte
109: 'Durchschnitt
113: 'Summe (g/h umgerechnet in g)
>>> cERG.vb
47: '********************** GEN-Liste raussuchen. Bei ADVANCE aus Flotte sonst aus Jobliste '**********************
84: '********************** Erg-Einträge erstellen '**********************
90: 'Fahrzeugtyp-unabhängig
94: 'Jede GEN-Datei auf Modus und Kennfeld checken
115: 'nix...
136: 'Elektrofahrzeug / Hybrid
139: 'EV & HEV
158: 'Nur EV:
171: 'Konventionell / Hybrid (Alles außer EV)
174: 'Konventionelles Fahrzeug...
182: 'Aus den Messdaten
197: 'x/h-Ausgabe falls ADVANCE Modus -oder- EngineOnly -oder- Einheit nicht in x/h und somit keine Umrechnung in x/km möglich
212: 'Aus dem Kennfeld
240: 'x/h-Ausgabe falls ADVANCE Modus -oder- EngineOnly -oder- Einheit nicht in x/h und somit keine Umrechnung in x/km möglich
260: 'derzeit nix
266: 'Fahrzeugbesogene Felder
280: 'CylceKin
288: 'ErgListe sortieren damit g/km und g/h nebeneinander liegen
357: 'Fahrzeugtyp-unabhängig
361: 'Länge, Geschw., Steigung
364: 'Durchschnitts-Geschw. berechnen
374: 'Durchschnitts-Steigung berechnen
385: 'EV / Hybrid
388: 'Positive effektive EM-Leistung
399: 'Positive effektive Batterie-Leistung = innere EM-Leistung
410: 'Positive innere Batterie-Leistung
421: 'Verbrauchte Energie berechnen
424: 'Negative effektive EM-Leistung
435: 'Negative effektive Batterie-Leistung = innere EM-Leistung
446: 'Negative innere Batterie-Leistung
457: 'Geladene Energie berechnen
460: 'Energie in/aus Batterie
464: 'EtaEM
478: 'EtaBat
492: 'Delta SOC
495: 'Nur EV:
498: 'Energieverbrauch
505: 'Konventionell d.h. alles mit ICE (nicht EV)
508: 'Emissionen
511: 'x/h-Ausgabe falls ADVANCE Modus -oder- EngineOnly -oder- Einheit nicht in x/h und somit keine Umrechnung in x/km möglich
522: 'Leistung, Drehzahl
535: 'Ppos
542: 'Pneg
551: 'Nur Gesamtfahrzeug (nicht EngOnly)
554: 'Pbrake-norm
561: 'Eair
568: 'Eroll
575: 'Egrad
582: 'Eacc
589: 'Eaux
596: 'Ebrake
603: 'Etransm
610: 'Masse, Loading
614: 'CylceKin
620: 'EposICE
627: 'EnegICE
637: 'Ausgabe-String erstellen:
655: 'Datei öffnen
664: '*** Header / Units
668: 'Datei schließen (wird nach jedem Job neu geöffnet)
687: 'Datei öffnen
704: 'Datei schließen
739: 'Ausgabepfad definieren
753: 'Datei öffnen
755: 'Datei öffnen
763: 'Info
769: 'Datei schließen (wird nach jedem Job neu geöffnet)
787: 'If Cfg.FCcorrection Then
788: ' s.AppendLine("HDV FC Correction ON")
789: 'Else
790: ' s.AppendLine("HDV FC Correction OFF")
791: 'End If
793: 'If DEV.Enabled Then s.AppendLine(DEV.DEVinfo)
>>> cFile V3.vb
43: 'If TxtFldParser.EndOfData Then Return False
>>> cHEVctrl.vb
61: 'Extrapolation für x < x(1)
63: ' ....Int1D_ERROR = True
73: 'Extrapolation für x > x(imax)
75: ' ....Int1D_ERROR = True
79: 'Interpolation
>>> cRegression.vb
117: 'calculate distances for each point (residual)
>>> cVECTO.vb
22: 'Missions
32: 'Header
50: 'Segment Table
58: 'Header
>>> cVSUM.vb
46: 'Durchschnitts-Geschw. berechnen
114: 'TODO: Mission nicht Zyklusname
117: 'TODO: Test Setup
>>> M_FCCor.vb
3: 'C
4: 'C
5: 'C Unterprogramm zur Korrektur der verbrauchswerte nach Motorgroesse (fuer HBEFA-Berechnungen, da dort
6: 'C alle LKW-Groessen mit gleichem *.mep gerechnet werden
7: 'C
8: 'C
10: 'C
11: ' include "com.inc"<<<<<<<<<<<<<<<<<<<<<<<<<<
12: 'c
31: 'C
32: 'c Korrektur des Kraftstoffverbrauches
33: 'c nur für Handbuchrechnungen und LKW
35: 'c für Euro0 und früher werden größenabhängig 3 verschiedene KF verwendet
36: 'c daher hier keine Größenkorrektur
39: 'c Korrekturfunktion für Euro1 und Euro 2 1:1 von Stand ARTEMIS übernommen
50: 'c Korrekturfunktion Euro 3 gg. ARTEMIS geringfügig adaptiert (siehe FcCorr_Eu3ff.xls)
55: 'c Korrekturfunktion für Euro 4 ff analog zu Euro3
56: 'c lediglich adaptiert: Durchschnittsnennleistung der ins mep verwursteten Motoren
61: 'c Euro6ff
66: 'c
70: 'C
>>> M_Lese.vb
15: '----------------------------- ~GEN~ -----------------------------
16: 'GEN einlesen
35: 'VECTO: Defaultwerte für Parameter die nicht mehr in der .GEN/.VECTO sind werden beim Einlesen über SetDefault belegt.
46: 'Fehlermeldung in Init()
50: '----------------------------- ~VEH~ -----------------------------
51: 'Einlesen der KFZ-Spezifikationen aus 'KFZspez'
67: '----------------------------- ~ENG~ -----------------------------
78: '----------------------------- ~GBX~ -----------------------------
89: '----------------------------- VECTO -----------------------------
90: 'GEN => VEH
107: 'ENG => VEH
113: 'GBX => VEH
130: '----------------------------- ~FLD~ -----------------------------
131: ' FLD muss jetzt vor MAP/MEP eingelesen werden falls dort <DRAG> Einträge sind!
142: 'Normieren
145: '----------------------------- ~MAP~ -----------------------------
146: ' Kennfeld: Spalten 1 und 2 sind die x- und y- Koordinaten (Pe,n), die
147: ' uebrigen sind Messwerte
148: ' Emissionen und Verbrauch in (g/(h*(kW_Nennleistung) bei SNF
149: ' Emissionen in (g/h) und Verbrauch in (g/(h*(kW_Nennleistung) bei PKW und LNF
152: 'Kennfeld einlesen
163: 'Normieren
169: '----------------------------- ~DRI~ -----------------------------
170: ' Einlesen des KFZ-Fahrzyklus (Nicht in ADVANCE).
171: ' LUZ: 04.02.2011: Ab jetzt ausserhalb von LESE wegen neuer BATCH-Struktur
173: '----------------------------- ~TRS~ -----------------------------
174: ' Dynamik-Korrekturparameter, falls dynamokkorrektur ausgewählt:
175: ' Parameter aus multipler Regressionsanalyse, Differenz zu stationär in
176: ' SNF: (g/h)/kW_Nennleistung fuer einzelne Parameter
177: ' PKW (g/h) für Emissionen , (g/h)/kW fuer Verbrauch
192: 'Einlesen der Daten fuer Hybridsimulation:
195: 'TODO: EV/HEV Init hierher!
>>> M_MAIN.vb
31: 'Hauptprogramm für alle Modi
48: 'Falls es zu "ungeplanten" Abbruch kommt
51: 'Fehler zurücksetzen
52: ''ClearErrors()
54: 'Modus festlegen und Meldung
70: 'Lizenz checken
93: 'BATCH-Ausgabeordner erstellen falls notwendig
114: 'MOD-Daten Klasse initialisieren
116: 'TEST: Schaun ob's auch ohne dem geht: MODdata.Init()
118: 'ERG-Klasse initialisieren
128: 'Warnung wenn ungültige/unrealistische Einstellungen
131: 'Meldungen
134: 'Progbar-Init
139: ' Schleife zur Berechnung fuer alle vorgegebenen Zyklen und Fahrzeuge:
142: '**************************************** Job-Schleife ****************************************
166: 'Status
174: 'Status/ProgBar
192: 'Check ob Abbruch
195: 'Falls Error beim GEN einlesen
198: 'Einlesen der Inputfiles
199: ' BATCH: Zyklus aus DRI-Liste
200: ' ADVANCE: Zyklus wird nicht eingelesen
206: 'Überprüfe ob alle Modi in der GEN Datei lizenziert sind
229: 'Falls Optimierer aktiv werden hier die Parameter eingelesen
232: 'BATCH: Sub-Dir Ausgabeordner erstellen
255: '************************************** Zylus-Schleife ****************************************
264: 'ProgBar
268: 'BATCH-Modus: Fahrzyklus nicht aus GEN-Datei sondern aus DRI-Liste
272: 'Status
277: 'Ausgabe-Name definieren
296: '********************************** VECTO-Zylus-Schleife **********************************
304: 'ProgBar
321: 'TODO: Loading Schleife
322: '***************************** VECTO-Loading-Schleife *********************************
326: 'Einstiegspunkt für SOC-Start Iteration
329: 'Aufraumen
332: 'Zyklus einlesen
335: 'Einlesen
344: 'v(s) in v(t) konvertieren (optional)
352: 'In 1Hz konvertieren (optional)
356: 'Fehlermeldung in DRI.Convert()
362: 'Entnormieren
370: 'Zyklus-Vorgaben initialisieren (Geschw, Beschl, ...)
377: 'Rechne .npi-Leistung in Pe und P_clutch um
385: 'ACHTUNG: VehmodeInit benötigt Infos aus GEN und DRI!
387: 'Fehlermeldung innerhalb VehmodeInit()
416: 'TODO: Meldung...
444: 'CycleKin (für erg/sum usw.) berechnen
452: 'Emissionen und Nachbehandlung - wird bei EV-Modus nicht ausgeführt
457: 'Sekündliche TC Parameter ermittlen
460: 'Kennfeld Erstellung
476: 'Rohemissionen berechnen
479: 'TC Parameter umrechnen in Differenz zu Kennfeld-TC-Parameter
482: 'Dynamik-Korrektur
488: 'Korrektur der Verbrauchswerte kleiner LKW-Motoren bei HBEFA
494: 'Exhaust System Simulation
504: 'Summen / Durchschnitte bilden
507: 'Engine Analysis
520: '*** Sekündliche Ausgabe ***
532: 'VECTO Ausgabe
533: 'TODO: Loadings umschalten...
540: 'Ausgabe für BATCH und ADVANCE
544: 'In ADVANCE ist Zyklus-Abbruch = Job-Abbruch
560: 'Ausgabe in Erg (Erste Berechnung - Initialisieren & Header)
567: 'Daten aufräumen
570: 'Status-Update
577: 'TODO: Loading Schleife
578: '******************** ENDE *** VECTO-Loading-Schleife *** ENDE ************************
588: '************************* ENDE *** VECTO-Zylus-Schleife *** ENDE *************************
595: '****************************** ENDE *** Zylus-Schleife *** ENDE ******************************
621: 'If GEN.irechwahl = tCalcMode.cmHEV Then MsgStrBuilder.Append(" (dSOC = " & SOC(MODdata.tDim) - SOC(0) & ")")
641: 'Check ob Abbruch
647: '******************************* ENDE *** Job-Schleife *** ENDE *******************************
>>> M_OptInterface.vb
21: 'Korrigierte Emissionen (wird von SOC-Iterations-Modul bestimmt)
24: '*** Opt_Interface Ein/Ausschalten
32: 'Initialisierung
40: '*** Initialisierung
44: 'Zähler null setzen
47: 'Korr. Em. löschen
52: 'TODO: I/O-Verzeichnis festlegen
56: 'Communication - Input
72: 'Dim file As New cFile
73: 'ReDim xA(Adim)
74: 'ReDim yA(Adim)
75: 'ReDim zA(Adim)
76: 'file.OpenRead(OptDir & "XYZ_Punkte.csv")
77: 'For x = 1 To Adim
78: ' file.Read(xA(x))
79: ' file.ReadTab(yA(x))
80: ' file.ReadTab(zA(x))
81: 'Next
82: 'file.Close()
83: 'file = Nothing
85: 'Timer initialisieren/starten
92: '*** Parameter einlesen
98: '**** Einlesen der Input-Datei mit Opt-Parameter
108: '*** Parameter ausgeben
114: '**** Ausgabe der Output-Datei mit Zielfunktion
124: 'Ausgabe StatusString
128: 'F_DEV.ButOptAbbr.Enabled = True
133: 'Berechnung der Zielfunktion
136: 'Ausgabe der Zielfunktion
144: '*** Opt Deaktivieren
149: 'F_DEV.ButOptAbbr.Enabled = True
153: '*** Status-Meldung (darf nicht von BGWorker aufgerufen werden)
155: 'F_DEV.LbOptStatus.Text = txt
158: '*** Starte PHEM - wird von F_MAINForm.ComMsgTimer aufgerufen wenn Start-Signal erhalten
161: 'PHEM starten
165: 'Timer anhalten
167: 'Zähler + 1
169: 'PHEM starten
174: '*** PHEM fertig - wird von BackgroundWorker1_RunWorkerCompleted aufgerufen wenn PHEM beendet
177: 'Ausgabe der Zielfunktion
180: 'PHEM_Launcher beenden
183: 'Timer wieder starten
190: '*** Beendet PHEM_Launcher
201: '*** CommunicationService
203: 'Inherits MarshalByRefObject
204: 'Implements SharedInterfaces.ICommunicationService
205: 'Public Sub MsgReceive(ByVal txt As String) Implements SharedInterfaces.ICommunicationService.SendMsg
206: ' OptMsgTxt = txt
207: 'End Sub
211: ' ''*** Message Output
212: '' ''Public Sub OptSendMsg(ByVal txt As String)
213: '' '' Try
214: '' '' ' Dim ipcChS As New IpcChannel("ClientSender")
215: '' '' ' ChannelServices.RegisterChannel(ipcChS, False)
216: '' '' Dim ClientRemoteObj As SharedInterfaces.ICommunicationService = DirectCast(Activator.GetObject(GetType(SharedInterfaces.ICommunicationService), "ipc://IPC_Client/ClientReceiveObj"), SharedInterfaces.ICommunicationService)
217: '' '' ClientRemoteObj.SendMsg(txt)
218: '' '' ' ChannelServices.UnregisterChannel(ipcChS)
219: '' '' Catch ex As Exception
220: '' '' WorkerMSG(tMsgID.Err, "ClientRemoteObj.SendMsg failed!!")
221: '' '' End Try
222: '' ''End Sub
>>> M_SOC_Iter.vb
5: '-----------SOC Neutral Iteration------------
20: 'TODO: Dummies
31: '-------------------------------- ~SOC - Neutral Iteration~ ---------------------------------
39: ''Dim SOCnMiCheck As Boolean
40: ''Dim SOCnMaCheck As Boolean
82: 'Return
97: 'Check ob Vorzeichen von Delta-SOC sich ändert
102: 'Vorzeichenwechsel...
105: '...Limit erreicht => Abbruch
126: 'Falls die letzte Iteration die Beste war (SOCnAbbr = True): Abbruch
131: 'Falls eine andere Iteration besser war (SOCnAbbr = False): Wiederholen
168: 'Check ob LinReg möglich: Mind. 2 Berechnungen; Mind. 1 dSOC-Vorzeichenwechsel
271: 'Unkorrigierte Em verwenden wenn SOC-Iteration OK
276: 'Unkorrigierte Em verwenden
284: 'Korrigierte Emissionen für Optimierer
286: 'Falls SOC-Iteration erfolgreich (oder Lin.Reg. nicht möglich) dann Emissionen der letzten Berechnung (unkorrigiert) verwenden
>>> VECTO_Global.vb
10: 'BackgroundWorker
13: 'Log/Msg
17: 'Config-------------------------------------------------------
20: 'TODO: Weg damit! SOC-Iteration gehört in die Leistungsschleife oder nach Em-Berechnung für LinReg
27: 'Dateiformat
346: 'Log starten
>>> cADV.vb
84: 'Zeile 1: FZP-Datei
87: 'Zeile 2: FLT-Datei
90: 'Zeile 3: TEM-Datei
93: 'Zeile 4: RndSeed
96: 'Zeile 5: MISKAMout True/False
99: 'Zeile 6: STRfilter True/False
102: 'Zeile 7: Distance filter für SUM.STR
105: 'Zeile 8+: STR Dateien
>>> cADVANCE.vb
11: 'TEM (TODO)
17: 'ADV
23: 'FLT-Collection
71: 'Felder für Streckennummer, Spur und Koordinaten für alle STR-Dateien
80: 'STR.SUM
103: 'Berechnung
113: 'ADVANCE Initialisierung
126: 'ADV Datei einlesen
129: 'Check ob FLT vorhanden
135: 'Check ob sortierte FZP vorhanden
151: 'GO!
159: 'FLT einlesen (muss vor STR sein wegen cSTRerg)
164: 'EMlist erstellen
183: 'STR einlesen
204: 'Listen erstellen
209: 'FZP einlesen
213: 'FZP sortieren (und exportieren)
223: 'FZP Check
226: 'TEM (TODO)
229: 'Random-Init
233: 'Für AusgVis
236: 'Ausgabe-Initialisierung
238: ' Dateinamen
241: ' Modale Ausgabe
246: 'Startwerte
260: 'ADVANCE Speicher frei geben
270: 'Ausgabe
273: 'Speicher freigeben
291: 'ReDim vX(-1)
292: 'ReDim vY(-1)
293: 'ReDim vNr(-1)
294: 'ReDim vNrSub(-1)
295: 'ReDim vVm(-1)
296: 'ReDim vStg(-1)
297: 'ReDim vID(-1)
298: 'ReDim vSID(-1)
299: 'ReDim sStr(-1)
300: 'ReDim sSIDlist(-1)
301: 'ReDim sSp(-1)
302: 'ReDim sSegAnX(-1)
303: 'ReDim sSegEnX(-1)
304: 'ReDim sSegAnY(-1)
305: 'ReDim sSegEnY(-1)
319: 'ReDim sFC(-1)
320: 'ReDim sNOx(-1)
321: 'ReDim sCO(-1)
322: 'ReDim sHC(-1)
323: 'ReDim sPM(-1)
324: 'ReDim sBe(-1)
325: 'ReDim sRu(-1)
326: 'ReDim sSO2(-1)
327: 'ReDim ala(-1)
328: 'ReDim vDTV(-1)
329: 'ReDim ALKW(-1)
333: 'Listen löschen
340: 'Garbage Collection - Soll "System Out of Memory" Exception verhindern (tut's aber nicht!)
346: 'ADVANCE Fahrzeugberechnung
361: 'Check ob Fertig
368: 'Zyklus-Klasse initialisieren
374: 'Fahzeugnummer und Typ definieren (bleibt hier konstant)
375: ' Altes Fahrzeug ist VehStrAlt, Aktuelles ist VehStr
380: 'Listen erstellen
385: 't0
388: 'Definiere Felder für Fahrzeug-Berechnung
391: 'Check ob neues Fahrzeug
396: 'Allgemeiner Fahrzyklus
400: 'ADVANCE
401: ' Strecken-Auswertung (MISKAM)
408: ''StatusMSG(7, "Calculation running... " & CInt(zFZP / FZPlen * 100).ToString("00") & "%", False)
415: ' Fahrzeug-Identifizierung
419: 'Check ob Zyklus zu kurz => Überspringen
422: 'Fahrzeuganzahl je Typ erhöhen
427: 'Check ob letzte Gen-Datei neu zu verwenden ist, sonst Belegung durch FLT
440: 'VehStr ist ab jetzt ALT
449: 'Abschnittsweise Berechnung
469: 'Zyklus durchschleifen
472: 'Nr. der STR-Datei
475: 'Falls Wechsel in STR-Nr:
476: ' Alte STR-Nr abschließen
485: 'Distanz (gefahrene km)
488: 'Reisezeit in h
491: 'Kfz-Anz
494: 'Summen-Emissionen
513: 'Aufsummieren
527: 'Letzte STR abschließen
534: 'Distanz (gefahrene km)
537: 'Reisezeit in h
540: 'Kfz-Anz
543: 'Summen-Emissionen
565: 'FLT einlesen
667: 'FZP einlesen
696: 'Dateilänge bestimmen
730: 'Arrays dimensionieren
750: 'Datei einlesen
755: 'Kommentare überspringen
765: 'Strecken die nicht in der STR Datei aufgeführt sind werden hier entfernt
783: 'Arrays belegen
794: 'Progress-Ausgabe
804: 'Speicher freigeben
814: 'Arrays neu dimensionieren
830: 'FZP sortiren
833: 'Dim x0 As Int32
872: 'Aktuelles Fahrzeug ist vNr1
874: 'Zähle Fahrzeuge mit vNr = vNr1
883: 'vNrAnz = Anzahl der Fahrzeuge mit vNr = vNr1
884: 'Sortiere alle Fahrzeuge mit vNr = vNr1 nach Fahrzeugnummer
892: 'Zwischenspeicher = Zeile x1
901: 'Zeile x1 = Zeile x2
910: 'Zeile x2 = Zwischenspeicher
924: 'vNr1 nach Zeit sortieren
931: 'Zwischenspeicher = Zeile xx1
938: 'Zeile xx1 = Zeile xx2
946: 'Zeile x2 = Zwischenspeicher
960: 'Status-Ausgabe
963: '' StatusMSG(7, "Sorting FZP..." & CInt(x1 / FZPlen * 100).ToString("00") & "%", False)
974: 'FZP exportieren
1013: 'Header
1016: 'Daten
1031: 'f.WriteLine(vt(x) & ";" & vX(x) & ";" & vY(x) & ";" & vNr(x) & ";" & vVm(x) & ";" & vStg(x) & ";" & vID(x) & ";" & vSID(x))
1042: 'STR einlesen
1133: 'SID-Liste erstellen
1161: 'FZP Check:
1162: ' ...Fahrzeuge aufteilen, die Lücke im Zeitverlauf haben
1194: 'ADV einlesen
1208: '********** .ADV Datei einlesen ********
1217: 'Zeile 1: FZP-Datei
1220: 'Zeile 2: FLT-Datei
1223: 'Zeile 3: TEM-Datei
1226: 'Zeile 4: RndSeed
1229: 'Zeile 5: MISKAMout True/False
1232: 'Zeile 6: STRfilter True/False
1235: 'Zeile 7: STR.SUM Streckenfilter
1238: 'Zeile 8+: STR Dateien
1258: 'Ausgabepfad definieren
1265: 'Header:
1285: ' *********************************** .sum *************************************
1286: 'File mit Summen Ergebnissen ueber alle Kfz:
1295: 'Header
1308: 'Ausgabe Schließen
1330: 'C
1331: 'C Umrechnung auf g Emissionen je Sekunde sowie Kfz/Tag
1343: 'C
1345: 'C
1346: 'C Umrechnung auf mg Emissionen je Meter
1347: 'C Streckenlaenge [m] wird aus Gerade zwischen Anfangs- und Endpunkt berechnet:
1348: 'C
1362: 'C
1363: 'C Ausgabe der Ergebnisse
1364: 'C
1365: 'C Filename fuer Ergebnisfile = Name Eingabefile aber mit *.sd3:
1366: 'C
1368: 'C
1369: 'C File mit Summen Ergebnissen ueber alle Streckenstuecke:
1371: 'C
1378: 'C
1439: 'C Unterprogramm zu PHEM/Advance zur Ausgabe der Ergebnisse an MISKAM Luftguetemodell von Lohmeyer
1440: 'C Daten jeweils durch Semikolon getrennt ausgegeben
1441: 'C
1442: 'C
1443: 'C
1444: ' include "com.inc"<<<<<<<<<<<<<<<<<<<<<<<<<<
1450: 'C -------------------------------------------------------------------------------------------------
1451: 'C
1452: 'C Aufaddieren der Emissionsdaten nach Streckenabschnitten, ueber jede Sekunde fuer jedes Fahrzeug
1453: 'C Achtung: jeweils 2 Richtungen je Abschnitt moeglich aber nur StrId in *.fzp uebergeben -> auf "naechstgelegene"
1454: 'C Richtung zugewiesen
1455: 'C
1459: 'C
1462: 'C
1464: 'C Suche nach naechstgelegenem Strassenteilstueck
1465: 'C Koordinaten Kfz:
1468: 'C Koordinaten Strecke: sSegAnX(j), sSegEnX(j), sSegAnY(j), sSegEnY(j) aus Eingabe
1469: 'C Abstandsumme zu Anfang- und Endpunkt des Streckenabschnittes j
1479: 'C Falls Streckennummer auf *.fzp File in *.str File nicht existiert, wird auf naechstgelegenes Stueck zugewiesen (gleiches System wie oben):
1495: 'C Aufsummierung der Emissionen auf den jeweils zugehoerigen Streckenabschnitten:
1496: 'C berechnung sekuendlich in (g/h)/3600 -> g/Strecke ueber gesamte Zeit
1503: 'C Zaehlen der Kfz fuer DTV (nur wenn nicht in voriger Sekunde auch schon auf der Strecke
1510: 'C ,
1511: 'C Grobe Rechnung Benzol nach GLOBEMI (HBEFA):
1512: 'C Trennung nach Otto, Diesel, LKW, PKW,vor/nach EURO 1
1513: 'C Otto:
1520: 'Continue For
1525: 'C Diesel
1533: 'C
1534: 'C Grobe Rechnung Russ, Anteile Russ an PM derzeit nur Schaetzwerte!!!!:
1535: 'C Trennung nach Otto, Diesel, LKW, PKW,vor/nach EURO 1
1536: 'C Diesel:
1553: 'C Otto
1561: 'C
1562: 'C SO2-Emissionen aus dem im Kraftstoff enthaltenen
1563: 'C Schwefel gerechnet. Mit Masse SO2 = (Masse% S / 100) * 2
1564: 'C Diesel_
1567: 'C Otto:
1571: 'C
1573: 'C
1596: '******** Ausgabe der einzelnen STR-Ergebnisse '*********
1601: '********* Ausgabe Summen über alle STR's '*********
1611: '** Datei-Header
1618: '*************************** Em je km ***************************
1620: 'Header
1632: 'Untits
1648: '** Em je Segment
1653: 'Segment-Name
1656: 'Anzahl Fahrzeuge
1659: 'Reisezeit
1663: 'km
1667: 'Speed
1674: 'Em je km
1683: 'Schreiben
1688: '** Em je Vehicle Type
1693: 'Type
1696: 'Anzahl Fahrzeuge
1699: 'Reisezeit, Strecke, Avg.Speed
1714: 'Em
1727: 'Schreiben
1732: '** Summe
1735: 'Segment
1738: 'Anzahl Fahrzeuge wird nicht aus STRerg berechnet (macht keinen Sinn) sondern aus cFLTfleet-Aufzeichnung
1745: 'Reisezeit
1752: 'km
1759: 'Speed
1766: 'Em je km
1779: 'Schreiben
1783: '**************************** Em abs ****************************
1787: 'Header
1799: 'Untits
1815: '** Em je Segment
1820: 'Segment-Name
1823: 'Em abs
1828: 'Schreiben
1833: '** Em je Vehicle Type
1838: 'Type
1841: 'Em
1850: 'Schreiben
1855: '** Summe
1858: 'Segment
1861: 'Em abs
1870: 'Schreiben
1879: '.mod-Datei zerlegen
1895: 'InFile öffnen
1910: 'Anzahl VehNummern
1915: 'Schleife durch alle VehNummern in Liste
1918: 'Abbruch falls Userabbruch
1924: 'Abbruch falls Datei fertig
1931: 'Ausgabedatei öffnen / Abbruch wenn Fehler beim Öffnen
1937: 'Schleife durch Datei
1940: 'Falls String schon eine VehNr enthält wird Zeile nicht nochmal eingelesen (siehe unten)
1944: 'Zeile einlesen
1948: 'Falls Zeile mit VehNr gefunden: VehNr rausholen
1952: 'Falls VehNr die gesuchte ist: Ausgabedatei schreiben
1955: 'Erste Zeile schreiben ("VehNr: ...")
1958: 'Nächste Zeile lesen (sonst wird Do While übersprungen)
1961: 'Schleife bis nächste VehNr / Dateiende
1964: 'Wenn nächstes Fahrzeug:
1967: 'Wenn gleiche Fahrzeugnummer: Datei weiter schreiben
1968: 'Header und Units überspringen
1973: 'Sonst: Raus aus Schleife
1978: 'Zeile schreiben
1981: 'Zeile lesen
1986: 'Falls nicht EndOfStream Flag setzen damit nächste VehNr nicht übersprungen wird
1989: 'Ausgabedatei schließen
1992: 'Aus der VehNr-Such-Schleife raus springen
2001: 'ProgBar
2026: 'FLT Klasse
2036: 'New
2042: 'Initialisieren
2075: 'GenDatei Zufallsgenerator
2125: 'Klasse für abschnittsweise Auswertung
2191: 'Datei-Header
2202: '*************************** Em je km ***************************
2204: 'Header
2216: 'Untits
2232: '** Ergebnisse je Veh-Type
2237: 'Type
2240: 'Anzahl Fahrzeuge
2243: 'Reisezeit
2247: 'km
2251: 'Speed
2258: 'Em
2267: 'Schreiben
2272: '** Summe
2275: 'Type
2278: 'Anzahl Fahrzeuge
2281: 'Reisezeit
2285: 'km
2289: 'Speed
2296: 'Em
2309: 'Schreiben
2315: '*************************** Em absolut *************************
2317: 'Header
2329: 'Untits
2345: '** Ergebnisse je Veh-Type
2350: 'Type
2353: 'Em
2358: 'Schreiben
2363: '** Summe
2366: 'Type
2369: 'Em
2378: 'Schreiben
2381: 'Datei schließen
>>> cFileBrowser.vb
2:'Imports System.Windows.Forms
4:'V1.0 10.12.2010
5:'V1.1 12.01.2011
6:'V1.2 08.03.2011
7:'V1.3 17.03.2011
8:'V1.4 30.03.2011
9:'V1.5 10.06.2011
10:'V2.0 23.11.2011
11:' - Dir-Favorites
12:'V2.0.1 01.12.2011
13:' - Fav-Dlog: "Abbrechen" => "Cancel"
14:' - Fav-Dlog: Statt leeren Items in Fav-Liste "<undefined>"
18:'**Anwendung
19:'Dim fbTXT As cFileBrowser
20:'fbTXT = New cFileBrowser("TXT")
21:'fbTXT.Extensions = New String() {"txt,log", "csv"}
23:'fbTXT.Close()
25:'**Benötigte Globale Variablen (Default):
26:'Public FB_Drives() As String
27:'Public FB_Init As Boolean = False
28:'Public FB_FilHisDir As String
29:'Public FB_FolderHistory(9) As String
30:'Public FB_WorkDir As String
49: 'Neue Instanz - ID definieren, umschalten auf FolderBrowser
58: 'OpenDialog - Öffnen Dialog - Übergibt True wenn Dialog mit OK beendet wurde
63: 'SaveDialog - Speichern Dialog - Übergibt True wenn Dialog mit OK beendet wurde
74: 'Dialog öffnen - Übergibt True wenn Dialog mit OK beendet wurde
80: 'File-History manuell updaten
86: 'File / Folder History speichen und Speicher freigeben
104: 'Dateiendungen definieren
115: 'Dateien abfragen
>>> FB_Dialog.designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
58: 'SplitContainer1
67: 'SplitContainer1.Panel1
78: 'SplitContainer1.Panel2
91: 'ButtonNewDir
102: 'ButtonDesktop
113: 'ButtonWorkDir
124: 'ButtonHisFolder
135: 'ButtonFolderBack
145: 'TextBoxSearchFolder
154: 'ListViewFolder
171: 'ColumnHeader3
175: 'ComboBoxDrive
184: 'ButtonAll
194: 'LabelFileAnz
203: 'ComboBoxExt
212: 'ButtonHisFile
223: 'TextBoxSearchFile
232: 'ListViewFiles
249: 'ColumnHeader1
254: 'ContextMenuFile
260: 'RenameFileToolStripMenuItem
266: 'DeleteFileToolStripMenuItem
272: 'TextBoxPath
281: 'ContextMenuHisFolder
286: 'ContextMenuHisFile
291: 'ButtonOK
303: 'ButtonCancel
315: 'TextBoxCurrent
327: 'FB_Dialog
>>> FB_Dialog.vb
27: ''<SORTER>
28: ''Private lvwColumnSorter As ListViewColumnSorter
30: 'New
32: ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
34: ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
50: 'Resize
55: 'Shown
62: 'Resized ListView Format
68: 'SplitterMoved
73: 'Closing (Overwrite-Check etc)
83: 'Wenn leerer Pfad: Aktuellen Ordner (MyFolder) nehmen
98: 'Abbruch wenn leerer Pfad
104: 'Dateien in Array übernehmen
106: 'Mehrere Dateien ausgewählt
117: 'Einzelne Datei
119: 'Primäre Extension (u.a. für bForceExt)
121: 'Falls Datei ohne Pfad angegeben dann Pfad hinzufügen
123: 'Falls statt Datei ein Ordner eingegeben wurde: Auf Ordner wechseln und Abbruch
129: 'Force Extension
134: 'Check ob Datei mit Ext angegeben
137: 'Falls Datei ohne Endung (nach bForceExt-Abfrage) und nicht existiert dann primäre Endung hinzufügen
143: 'Check ob Datei existiert
145: 'Ja: Check ob Overwrite wenn bOverwriteCheck
153: 'Nein: Abbruch wenn bFileMustExist
160: 'MyFiles definieren
169: 'Browse - Custom Dialog
175: 'FolderHistory ContextMenu laden
183: 'Options
188: 'Form Config
193: 'Ext-Combobox
221: 'Pfad definieren
222: ' Falls kein Pfad angegeben wird: Letzter Ordner, kein Dateiname
225: ' Falls Pfadlänge zu klein (Pfad ungültig): Letzte Datei
228: 'Ordner öffnen - Falls kein Ordner im Pfad: Letzter Ordner
230: 'Falls Datei ohne Pfad angegeben
237: '...sonst:
247: 'Form anzeigen----------------------------------------------------
250: 'File / Folder History
259: 'Globale Folder History updaten
272: 'Schließen und File/Folder History speichern
276: 'Folder History
289: 'File History
305: 'Close
309: 'Umschalten auf FolderBrowser
321: 'Initialisieren
329: 'Globale FileBrowser Initialisierung
332: 'Laufwerk-ComboBox laden
337: 'FolderHistory ContextMenu
349: 'FileHistory ContextMenu
370: 'Extension-ComboBox
395: 'Laufwerk-Liste erstellen
403: 'FolderHistory einlesen
423: 'ComboBoxDrive_SelectedIndexChanged
429: 'ButtonFolderBack_Click
434: 'TextBoxPath_KeyDown (ENTER)
453: 'ListViewFolder_SelectedIndexChanged
464: 'ListViewFolder_MouseDoubleClick
470: 'ListViewFolder_KeyDown
478: ''<SORTER>
479: ''Private Sub ListViewFiles_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListViewFiles.ColumnClick
480: '' ' Determine if the clicked column is already the column that is
481: '' ' being sorted.
482: '' If (e.Column = lvwColumnSorter.SortColumn) Then
483: '' ' Reverse the current sort direction for this column.
484: '' If (lvwColumnSorter.Order = SortOrder.Ascending) Then
485: '' lvwColumnSorter.Order = SortOrder.Descending
486: '' Else
487: '' lvwColumnSorter.Order = SortOrder.Ascending
488: '' End If
489: '' Else
490: '' ' Set the column number that is to be sorted; default to ascending.
491: '' lvwColumnSorter.SortColumn = e.Column
492: '' lvwColumnSorter.Order = SortOrder.Ascending
493: '' End If
495: '' ' Perform the sort with these new sort options.
496: '' Me.ListViewFiles.Sort()
498: ''End Sub
500: 'ListViewFiles_SelectedIndexChanged
516: 'ListViewFiles_MouseDoubleClick
523: 'ListViewFiles_KeyDown
532: 'TextBoxSearchFolder_KeyDown
572: 'TextBoxSearchFolder_TextChanged
577: 'TextBoxSearchFile_KeyDown
616: 'TextBoxSearchFile_TextChanged
621: 'ComboBoxExt_TextChanged
626: 'ButtonHisFolder_Click
631: 'ButtonHisFile_Click
636: 'Select All - Click
646: 'ContextMenuHisFile_ItemClicked
660: 'ContextMenuHisFolder_ItemClicked
689: 'TextBoxCurrent_MouseClick
706: 'path = Microsoft.VisualBasic.Left(path, x1 - 1)
713: 'ButtonWorkDir_Click
718: 'ButtonDesktop_Click
723: 'Context Menu Update
728: 'Context Menu sortieren
741: 'Context Menu sortieren
754: 'Manuelles History-Update
758: 'Init
760: 'Dateien
762: 'Ordner
773: 'Ordner wechseln
776: 'Abbruch wenn keine Laufwerk-Angabe
781: 'Suchfelder löschen
785: 'Laufwerk setzen
791: 'Ordner setzen
801: 'Me.TextBoxPath.SelectionStart = Me.TextBoxPath.Text.Length
806: 'Ordner Eine Ebene hinauf
817: 'FolderListe laden
820: 'FolderListe löschen
824: 'Ordner hinzufügen
837: 'Dateiliste laden
845: 'Abbruch wenn bBrowseFolder
849: 'Extension-Filter definieren
856: 'FileListe löschen
863: 'Ordner hinzufügen
889: 'Rename File
913: 'Delete File
934: 'Neuer Ordner
954: ''Private Function fTimeString(ByVal T As Date) As String
955: '' Return T.Year & "-" & T.Month.ToString("00") & "-" & T.Day.ToString("00") & " " & T.Hour.ToString("00") & ":" & T.Minute.ToString("00") & ":" & T.Second.ToString("00")
956: ''End Function
>>> FB_FavDlog.designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
33: 'TableLayoutPanel1
48: 'OK_Button
57: 'Cancel_Button
67: 'ListBox1
75: 'Label1
84: 'FB_FavDlog
>>> F_AboutBox.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
60: 'Label1
70: 'Label3
80: 'Label5
90: 'Label6
100: 'Label7
110: 'Label9
120: 'LinkHAUS
131: 'LinkREX
142: 'LinkLUZ
153: 'LabelTelHAUS
163: 'LabelTelREX
173: 'LabelTelLUZ
183: 'Label10
193: 'LabelLic
203: 'LabelLicDate
214: 'Label2
224: 'Label8
234: 'Panel1
244: 'PictureBoxJRC
254: 'PictureBox1
263: 'PictureBoxTUG
273: 'PictureBoxFVT
283: 'Label4
293: 'Label11
303: 'LinkJRC1
314: 'LinkJRC2
325: 'Label12
335: 'Label13
345: 'F_AboutBox
>>> F_AboutBox.vb
4: 'Initialisieren
11: 'e-mail links----------------------------------------------------------------
33: 'Bild Links------------------------------------------------------------------
>>> F_ADV.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
61: 'TextBoxTEM
69: 'TextBoxFLT
76: 'ButtonTEM
86: 'ButtonFLT
95: 'TextBoxFZP
102: 'ButtonFZP
111: 'StatusStrip1
121: 'ToolStripStatusLabelADV
127: 'Label2
136: 'TBseed
143: 'CheckBoxMISKAM
155: 'Label1
164: 'Label3
173: 'Label4
182: 'Label5
191: 'CheckBoxSTRfilter
201: 'ButOK
211: 'ButCancel
222: 'LbSTR
232: 'ButSTRadd
241: 'ButSTRrem
250: 'LbFilter0
259: 'TbFilter
266: 'LbFilter1
275: 'ToolStrip1
285: 'ToolStripBtNew
295: 'ToolStripBtOpen
305: 'ToolStripBtSave
315: 'ToolStripBtSaveAs
325: 'ToolStripSeparator1
330: 'ToolStripBtSendTo
340: 'F_ADV
>>> F_ADV.vb
7: 'Initialisieren
12: 'Schließen
19: 'Inputfile- Steuerelemente------------------------------------------
21: 'Browse Button-Click Events
58: 'New
63: 'Open
68: 'Save
73: 'Save As
78: 'Send to ADV List
91: 'ADV speichern
108: 'Neue leere ADV
126: 'ADV in Form laden
149: 'Zeile 1: FZP-Datei
152: 'Zeile 2: FLT-Datei
155: 'Zeile 3: TEM-Datei
158: 'Zeile 4: RndSeed
161: 'Zeile 5: MISKAMout True/False
164: 'Zeile 6: STRfilter True/False
167: 'Zeile 7: Distance filter für SUM.STR
170: 'Zeile 8+: STR Dateien
181: 'ADV aus Form speichern
204: 'ADV.STRpathsClear() '<= Nicht notwendig da neues lokales cADV-Objekt
229: 'TEMformCreator
234: 'Formular Änderungen (Kontrolle ob GEN gespeichert)---------------------------------
235: 'Event Handler für Formänderungen
237: 'Change Status ändern
243: ' "Save changes ?" ...liefert True wenn User Vorgang abbricht
311: 'OK (Save & Close)
317: 'Cancel
>>> F_ADVfzp.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
38: 'TableLayoutPanel1
53: 'OK_Button
62: 'Cancel_Button
72: 'RbUseSFZP
84: 'RbUseFZP
94: 'RBAbort
104: 'LbTimer
115: 'LbMsg
125: 'Timer1
129: 'F_ADVfzp
>>> F_ENG.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
71: 'TbNleerl
78: 'Label11
87: 'TbNnenn
94: 'Label10
103: 'TbInertia
110: 'Label41
119: 'Label40
128: 'Label39
137: 'Label36
146: 'Label5
155: 'TbPnenn
162: 'Label9
171: 'ButCancel
182: 'ButOK
192: 'ToolStrip1
202: 'ToolStripBtNew
212: 'ToolStripBtOpen
222: 'ToolStripBtSave
232: 'ToolStripBtSaveAs
242: 'ToolStripSeparator3
247: 'ToolStripBtSendTo
257: 'StatusStrip1
267: 'LbStatus
273: 'Label1
282: 'Label2
291: 'TbDispl
298: 'TbName
305: 'Label3
314: 'Label4
323: 'TbFLD
330: 'BtFLD
340: 'TbMAP
347: 'Label6
356: 'BtMAP
366: 'TbWHTC
373: 'Label7
382: 'BtWHTC
392: 'PictureBox1
402: 'ToolStripSeparator1
407: 'ToolStripButton1
416: 'F_ENG
>>> F_ENG.vb
127: 'Speichern oder Speichern als Function = true wenn Datei gespeichert
139: 'ENG speichern
180: 'Change Status ändern
188: ' "Save changes ?" ...liefert True wenn User Vorgang abbricht
>>> F_GBX.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
58: 'ToolStrip1
68: 'ToolStripBtNew
78: 'ToolStripBtOpen
88: 'ToolStripBtSave
98: 'ToolStripBtSaveAs
108: 'ToolStripSeparator3
113: 'ToolStripBtSendTo
123: 'StatusStrip1
133: 'LbStatus
139: 'ButCancel
150: 'ButOK
160: 'TbTracInt
167: 'LvGears
182: 'ColumnHeader1
187: 'ColumnHeader2
191: 'ColumnHeader3
196: 'TBI_getr
203: 'Label49
212: 'Label33
221: 'Label48
230: 'Label6
239: 'Label3
248: 'TbName
255: 'PictureBox1
265: 'BtClearGear
274: 'ToolStripSeparator1
279: 'ToolStripButton1
288: 'F_GBX
>>> F_GBX.vb
81: 'Help
154: 'Speichern oder Speichern als Function = true wenn Datei gespeichert
206: 'Change Status ändern
214: ' "Save changes ?" ...liefert True wenn User Vorgang abbricht
261: 'Gear-DoubleClick
266: 'Gear-KeyDown
276: 'Clear Gear Button
281: 'Edit Gear
311: 'Clear Gear
>>> F_GEN.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
191: 'ButOpenEXS
201: 'ButtonEXS
211: 'TabPgHEV
242: 'CbSOCnIter
253: 'Label10
262: 'TbSOCstart
269: 'TextBoxEKF
278: 'TextBoxSTE
287: 'TextBoxGET
296: 'TextBoxEAN
305: 'TextBoxEMO
314: 'TextBoxBAT
323: 'ButOpenEKF
333: 'ButOpenSTE
343: 'ButOpenGET
353: 'ButOpenEAN
363: 'ButOpenEMO
373: 'ButOpenBAT
383: 'ButtonBAT
394: 'ButtonEKF
405: 'ButtonSTE
416: 'ButtonGET
427: 'ButtonEMO
438: 'ButtonEAN
449: 'TabPgColdSt
478: 'TextBoxATC
487: 'TextBoxCDW
496: 'TextBoxWUC
505: 'TextBoxWUA
514: 'TextBoxMAC
523: 'TextBoxMAA
532: 'ButOpenATC
542: 'ButOpenCDW
552: 'ButOpenWUC
562: 'ButOpenWUA
572: 'GroupBox3
590: 'Label6
599: 'TextBoxTofSt
606: 'TextBoxTKW
613: 'TextBoxTKat
620: 'Label5
629: 'Label4
638: 'ButOpenMAC
648: 'ButOpenMAA
658: 'ButtonMAA
669: 'ButtonATC
680: 'ButtonCDW
691: 'ButtonWUC
702: 'ButtonMAC
713: 'ButtonWUA
724: 'TabPgGen
745: 'GroupBox5
757: 'LvCycles
774: 'ColumnHeader1
779: 'BtDRIrem
789: 'BtDRIadd
799: 'GroupBox4
811: 'LvAux
828: 'ColumnHeader4
833: 'ColumnHeader5
838: 'ColumnHeader6
843: 'ButAuxRem
853: 'ButAuxAdd
863: 'TbGBX
872: 'TbENG
881: 'TextBoxVEH
890: 'ButOpenGBX
900: 'ButOpenENG
910: 'ButOpenVEH
920: 'ButtonVEH
931: 'ButtonFLD
942: 'ButtonMAP
953: 'Label11
962: 'CbTransLossModel
972: 'TextBoxEXS
979: 'TextBoxTRS
986: 'CheckBoxDynKor
998: 'CheckBoxSCR
1010: 'ChBStartStop
1022: 'CheckBoxColdSt
1035: 'ButOpenTRS
1045: 'ButtonTRS
1055: 'ComboBoxGearShift
1065: 'TabControl1
1083: 'TabPgDriver
1097: 'GroupBox1
1120: 'TBpfast
1127: 'TBpspar
1134: 'Label19
1143: 'Label18
1152: 'Label44
1161: 'Label43
1170: 'Label42
1179: 'Label17
1188: 'TBlhinunter
1195: 'TBlhinauf
1202: 'TBhinunter
1209: 'Label16
1218: 'Label15
1227: 'TBhinauf
1234: 'Label1
1243: 'BtDesMaxBr
1252: 'TbDesMaxFile
1259: 'TabPgKF
1270: 'GroupBox2
1294: 'Label12
1303: 'CbDragIntp
1313: 'ChInsertDrag
1323: 'ChCutDrag
1333: 'ChCutFull
1343: 'CheckBoxGS
1356: 'Label9
1366: 'TextBoxAvPerofModVal
1373: 'TextBoxIncn
1380: 'Label8
1389: 'Label7
1398: 'TextBoxIncPe
1405: 'TabPgStartStop
1416: 'GroupBoxStartStop
1432: 'LabelSStime
1441: 'LabelSSspeed
1450: 'TBSStime
1457: 'TBSSspeed
1464: 'TabPgTEST
1495: 'Label3
1504: 'ChbDesMax
1516: 'CbVehMode
1526: 'ChCreateMap
1536: 'ChEngAnalysis
1546: 'ComboBoxEngType
1556: 'ComboBoxEclass
1566: 'ComboBoxVehType
1576: 'StatusStrip1
1586: 'ToolStripStatusLabelGEN
1592: 'ButOK
1602: 'ButCancel
1613: 'ToolStrip1
1623: 'ToolStripBtNew
1633: 'ToolStripBtOpen
1643: 'ToolStripBtSave
1653: 'ToolStripBtSaveAs
1663: 'ToolStripSeparator1
1668: 'ToolStripBtSendTo
1678: 'ToolStripSeparator2
1683: 'ToolStripButton1
1692: 'PictureBox1
1702: 'F_GEN
>>> F_GEN.vb
23: 'Coolant System Simulation Zwischenspeicher
31: 'Initialisiere Form (Lade Verlauf, Combobox-Listen,...)
45: 'Damit Combobox-Inhalte aktuell sind
59: 'Schließen
66: 'Shown
75: 'Änderung der DynKor Checkbox
83: 'Änderung der Kaltstart Checkbox
89: 'Änderund der SCR Checkbox
280: 'General
298: 'Cold Start
318: 'HEV
338: 'a_DesMax
347: 'General
352: 'Damit Veh-Datei übergeben wird
378: 'Damit Veh-Datei übergeben wird
404: 'Damit Veh-Datei übergeben wird
432: 'Cold Start
451: 'HEV
474: 'New
479: 'Open
484: 'Save
489: 'Save As
495: 'Send to GEN List
502: 'Me.ToolStripStatusLabelGEN.Text = fFILE(Genfile, True) & " sent to GEN List."
506: 'Help
520: 'Speichern ("Save" bzw. "Save As" falls neue Datei)
532: 'GEN in Form laden
544: 'GEN einlesen
559: 'Form updaten
587: 'Kennfeld Erstellung-----------------
601: 'Kalt Start--------------------------
608: 'Dateien-----------------------------
617: 'Kalt Start
625: 'HEV
632: 'EXS
636: 'Start/Stop
641: 'SOC Start/Iteration
645: 'Transm.Loss Model
653: 'Coolant Sim
657: 'a_DesMax
699: 'GEN aus Form speichern
720: 'Kennfeld Erstellung------------------------------------------------------
730: 'Kalt Start---------------------------------------------------------------
736: 'Dateien------------------------------------------------------------------
750: 'Kalt Start
758: 'HEV
766: 'EXS
770: 'Start/Stop
775: 'SOC
779: 'Transm.Loss Model
787: 'Coolant Sim
791: 'a_DesMax
811: 'SAVE
833: 'Neue leere GEN
838: 'General-----------------------------
848: 'Kennfeld Erstellung-----------------
858: 'Kalt Start--------------------------
864: 'Dateien-----------------------------
865: 'Kalt Start
867: 'HEV
871: 'SCR
893: 'Start/Stop
898: 'Transm.Loss Model
901: 'Coolant Sim
905: 'a_Desmax
933: 'Event Handler für Formänderungen
949: 'Start/Stop - Checkbox Änderung
955: 'Start/Stop - Textbox Änderung
960: 'TextBox.TextChanged Events => Change()
1072: 'Change Status ändern
1080: ' "Save changes ?" ...liefert True wenn User Vorgang abbricht
1211: 'OK (Save & Close)
1217: 'Cancel
>>> F_MAINForm.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
139: 'StatusBAR
148: 'ToolStripLbStatus
156: 'ToolStripProgBarJob
166: 'ToolStripProgBarOverall
176: 'TabControl1
191: 'TabPageGEN
211: 'PictureBox1
220: 'BtGENdown
230: 'BtGENup
240: 'LbAutoShDown
253: 'ChBoxAllGEN
264: 'LvGEN
284: 'ColGENpath
289: 'ColGENstatus
294: 'ButtonGENopt
304: 'ButtonGENremove
315: 'Button1
326: 'ButtonGENadd
337: 'TabPageDRI
354: 'BtDRIdown
364: 'BtDRIup
374: 'ChBoxAllDRI
385: 'LvDRI
405: 'ColDRIpath
410: 'ColDRIstatus
415: 'ButtonDRIedit
425: 'ButtonDRIremove
436: 'ButtonDRIadd
447: 'TabPgOptions
463: 'GrbxTest
476: 'ChBoxFCkor
486: 'ChBoxFinalEm
496: 'GrBoxADV
510: 'ChBoxFzpSort
522: 'ChBoxFzpExport
532: 'GrBoxSTD
544: 'GrBoxBATCH
561: 'ChBoxBatchSubD
571: 'Label2
580: 'ButBObrowse
590: 'CbBOmode
600: 'TbBOpath
609: 'ChBoxAutoSD
619: 'PanelOptAllg
631: 'Label1
640: 'ChBoxCyclDistCor
650: 'ChBoxUseGears
660: 'CBoxMODE
671: 'ChBoxModOut
683: 'TabPageDEV
694: 'LvDEVoptions
710: 'ColumnHeader4
715: 'ColumnHeader7
720: 'ColumnHeader5
725: 'ColumnHeader6
730: 'ConMenFilelist
736: 'SaveListToolStripMenuItem
742: 'LoadListToolStripMenuItem
748: 'LoadDefaultListToolStripMenuItem
754: 'ClearListToolStripMenuItem
760: 'ToolStripSeparator5
765: 'RemovePathsToolStripMenuItem2
771: 'BackgroundWorker1
774: 'ComMsgTimer
777: 'LvMsg
796: 'ColumnHeader1
801: 'ColumnHeader2
806: 'ColumnHeader3
811: 'SplitContainer1
821: 'SplitContainer1.Panel1
825: 'SplitContainer1.Panel2
832: 'ToolStrip1
842: 'ToolStripBtNew
852: 'ToolStripBtOpen
862: 'ToolStripSeparator2
867: 'ToolStripDrDnBtTools
876: 'GENEditorToolStripMenuItem1
882: 'VEHEditorToolStripMenuItem
888: 'EngineEditorToolStripMenuItem
894: 'GearboxEditorToolStripMenuItem
900: 'ADVEditorToolStripMenuItem1
907: 'ToolStripSeparator1
912: 'CreateTEMFileToolStripMenuItem
919: 'SplitMODFilesToolStripMenuItem
926: 'ToolStripSeparator4
932: 'OpenLogToolStripMenuItem
938: 'ChangeWorkingDirectoryToolStripMenuItem1
944: 'SettingsToolStripMenuItem
950: 'ToolStripDrDnBtInfo
959: 'UserManualToolStripMenuItem
965: 'QuickStartGuideToolStripMenuItem
971: 'ToolStripSeparator3
976: 'CreateActivationFileToolStripMenuItem
982: 'AboutPHEMToolStripMenuItem1
988: 'CmDEV
993: 'TmProgSec
997: 'F_MAINForm
>>> F_MAINForm.vb
51: ''' Informs the system that the state being set should remain in effect until the next call that uses ES_CONTINUOUS and one of the other state flags is cleared.
53: ''' Forces the display to be on by resetting the display idle timer.
55: ''' Forces the system to be in the working state by resetting the system idle timer.
176: 'PHEM-Launcher
180: 'Falls Aufruf während PHEM schon läuft
186: 'GENlist-Selection löschen
189: 'Modus festlegen
199: 'Wenn mehr als 100 Kombinationen in Batch fragen ob sekündliche Ausgabe
210: 'Status
214: 'Job-Liste definieren
216: 'File- / Zylus- Liste definieren
219: 'Zyklus-Liste definieren (falls nicht BATCH-Modus wird in SetCycleList nur die Liste gelöscht und nicht neu belegt)
222: 'Check ob Overall-Progbar benötigt
225: 'Launch über Job_Launcher
259: 'Datei-Listen definieren
291: 'Job-Launcher
296: 'Options aus Options-Tab laden
299: 'Config speichern
304: 'Msg-Ausgabe zurück setzen
307: 'Button umschalten
311: 'Options disablen
314: 'ProgBars Start
323: 'BG-Worker starten
328: 'Abort Job
339: 'Beginne Arbeit
342: 'SLEEP verhindern
363: 'Progress Report
377: 'Bei x.ProgSec = -1 kein Update von ProgBarSec
404: 'Arbeit fertig
409: 'Progbar Reset
415: 'Damit ListView-Item Farben (Warnung = Gelb, etc..) richtig sichtbar
424: 'Falls Optimierer aktiv werden hier die Zielfunktion ausgegeben und Signal an Interface
436: 'ShutDown wenn Unexpected Error
443: 'Options enablen / GUI Reset
450: 'CommandLine Shutdown
453: 'Auto Shutdown
464: 'SLEEP reaktivieren
477: 'Initialisieren
490: 'Tabs richtig laden (sonst Problem mit Listviews)
511: 'FileLists
521: 'GUI Options laden (hier werden die GEN/ADV/DRI Listen geladen)
524: 'Spalten skalieren... erst nach dem Laden der Dateilisten
529: 'BackgroundWorker initialisieren
534: 'Lizenz überprüfen
559: 'Shown Event (Form-Load abgeschlossen) ...hier werden StartUp-Forms geladen (DEV, GEN/ADV- Editor..)
562: 'DEV Form
567: 'VECTO Init
568: ' VEC.Init()
570: 'Command Line Args
587: 'Datei mit PHEM öffnen
599: 'ComLineArgs auslesen
614: 'Modus umschalten
621: 'Falls Datei angegeben
626: 'Schließen
629: 'FileLists speichern
632: 'Log schließen
641: 'Config speichern
646: 'FileBrowser-Instanzen schließen
705: 'Gesperrte Funktionen ein/ausblenden
791: 'Datei aus Liste entfernen
830: 'Datei zu Liste hinzufügen
838: 'ADVANCE
844: 'STANDARD/BATCH
855: 'Datei öffnen
880: 'GEN/ADV Liste: Datei hinzufügen
889: 'Falls PHEM läuft: Vorgang abbrechen (weil Modusänderung während Berechnung nix gscheit)
895: 'Modus umschalten falls nötig
903: '******************************************* Begin Update '*******************************************
923: 'Wenn Datei schon in Liste vorhanden: Nicht hinzufügen (nur wenn einzelne Datei)
926: 'Status reset
931: 'Element auswählen und anhaken
942: 'Sonst: Datei hinzufügen (ohne WorkDir)
954: '******************************************* End Update '*******************************************
956: 'Anzahl updaten
974: 'Me.TabPageGEN.Text = "Job Files (" & c & ")"
1013: 'If e.CurrentValue = e.NewValue Then Exit Sub
1015: 'If e.NewValue = CheckState.Checked Then
1016: ' DRIchecked += 1
1017: 'Else
1018: ' DRIchecked -= 1
1019: 'End If
1021: 'If CheckLock Then Exit Sub
1022: 'UpdateDRITabText()
1081: 'Drag n' Drop
1160: 'DRI Liste: Datei hinzufügen
1171: 'Modus umschalten falls nötig
1185: 'Anzahl updaten
1202: 'Me.TabPageDRI.Text = "Driving Cycles (" & c & ")"
1222: 'New GEN/ADV
1231: 'Open GEN/ADV
1293: 'Worker starten
1363: 'Selected Items zwischenspeichern
1384: 'Selected Items löschen
1389: 'Items einfügen und auswählen
1390: 'For y = y1 To 0 Step -1
1405: 'Save List
1416: 'Load List
1428: 'Modus ggf. umschalten (auf BATCH)
1439: 'Load Default
1462: 'Clear List
1464: 'Dim ListViewItem0 As ListViewItem
1465: 'For Each ListViewItem0 In ConMenTarget.SelectedItems
1466: ' ListViewItem0.Remove()
1467: 'Next
1480: 'Remove Paths
1494: 'PHEM Start
1497: 'PHEM Start/Stop
1499: 'Falls PHEM schon rennt: STOP
1503: '...Sonst: START
1505: 'Listen speichern falls Crash
1508: 'Start
1515: 'Modus Change
1521: 'Alte Liste speichern
1543: 'Neue Liste laden
1549: 'Me.GrBoxSTD.BringToFront()
1566: 'Me.GrBoxBATCH.BringToFront()
1573: 'Me.TabControl1.Controls.Add(DRIpage)
1581: 'Me.GrBoxADV.BringToFront()
1617: 'If LVbox.Items.Count = 0 Then Exit Sub
1730: 'GEN Editor öffnen und Datei laden
1750: 'ADV Editor öffnen und Datei laden
1761: 'FileLists speichern
1774: '*** ComMsgTimer_Tick Tick - Check ob neue Nachricht
1856: 'Modus einstellen
1875: 'Allgemein
1880: 'ADVANCE
1884: 'BATCH
2057: 'Log
2065: 'Log
2073: 'Log
2102: 'Private Sub LvMsg_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles LvMsg.SelectedIndexChanged
2103: ' If LvMsg.SelectedItems.Count > 0 Then LvMsg.SelectedItems.Clear()
2104: 'End Sub
2106: 'Falls Link => Öffnen
2119: 'Hand-Cursor für Links
>>> F_ModSplit.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
37: 'TableLayoutPanel1
52: 'OK_Button
61: 'Cancel_Button
71: 'RichTextBox1
80: 'TextBoxPath
87: 'ButBrowse
96: 'Label1
105: 'Label2
114: 'ButClear
123: 'F_ModSplit
>>> F_ModSplit.vb
11: ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
14: ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
19: 'Load
24: 'Browse
59: ' Split
62: ' Zu Int32 convertieren
71: ' Sort
76: 'Ende
>>> F_Options.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
72: 'TextBoxWorDir
79: 'ButtonWorDir
89: 'GroupBoxWorDir
100: 'ButtonOK
110: 'ButtonCancel
121: 'GroupBox3
134: 'TbOpenCmd
141: 'Label7
150: 'TextBoxLogSize
157: 'Label16
166: 'TabControl1
179: 'TabPage2
192: 'GroupBox4
210: 'Label11
219: 'Label9
228: 'Label3
237: 'TbCO2toFC
244: 'Label10
253: 'TbFuelDens
260: 'Label8
269: 'TbAirDensity
276: 'Label2
285: 'TabPgTest
301: 'Label6
310: 'TbnnormEngStop
317: 'Label5
326: 'Label4
335: 'GroupBox1
347: 'ButtonTD
356: 'ButTDdefault
365: 'TextBoxTD
372: 'GroupBox2
384: 'Label1
393: 'LabelEAVal
402: 'TextBoxEAVal
409: 'ButReset
419: 'BtHelp
429: 'F_Options
>>> F_Options.vb
5: 'Initialisiere - Lade Config
14: 'Config laden
28: 'Reset Button
37: 'OK
56: 'Cancel
61: 'Optionen-----------------------------------
>>> F_ShutDown.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
32: 'Cancel_Button
42: 'Label1
51: 'LbTime
60: 'Timer1
64: 'F_ShutDown
>>> F_StrInpBox.designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
33: 'TableLayoutPanel1
48: 'OK_Button
57: 'Cancel_Button
67: 'Label1
76: 'TextBox1
83: 'F_StrInpBox
>>> F_TEM_Creator.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
38: 'TextBoxTemp
45: 'ComboBoxDrCyc
54: 'TextBoxPath
61: 'ButtonBrowse
70: 'ButtonOK
79: 'ButtonCancel
88: 'Label1
97: 'Label2
106: 'Label3
115: 'Label4
124: 'CheckBoxEXL
134: 'F04_TEM_Creator
>>> F_TEM_Creator.vb
3: 'Initialisierung
14: 'Cancel
19: 'OK
42: 'Browse
>>> F_VEH.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
107: 'Label1
116: 'TbMass
123: 'Label2
132: 'TbLoad
139: 'Label3
148: 'TBcw
155: 'Label4
164: 'TBAquers
171: 'Label7
180: 'TbI_wheels
187: 'Label13
196: 'TBDreifen
203: 'ButOK
213: 'ButCancel
224: 'Label14
233: 'Label31
242: 'Label32
251: 'Label35
260: 'Label37
269: 'Label38
278: 'CbCdMode
288: 'TbCdFile
296: 'BtCdFileBrowse
306: 'GroupBox6
319: 'LbCdMode
328: 'ToolStrip1
338: 'ToolStripBtNew
348: 'ToolStripBtOpen
358: 'ToolStripBtSave
368: 'ToolStripBtSaveAs
378: 'ToolStripSeparator3
383: 'ToolStripBtSendTo
393: 'GroupBox7
407: 'PnRt
417: 'Label45
427: 'LbRtRatio
436: 'TbRtRatio
444: 'BtRtBrowse
454: 'TbRtPath
463: 'CbRtType
473: 'Label12
482: 'Label46
491: 'Label50
500: 'TbMassExtra
507: 'GroupBox8
525: 'ButAxlRem
535: 'LvRRC
553: 'ColumnHeader7
558: 'ColumnHeader8
563: 'ColumnHeader9
568: 'ButAxlAdd
578: 'Label23
587: 'CbAxleConfig
598: 'Label21
607: 'CbCat
617: 'Label5
626: 'Label9
635: 'TbMassMax
642: 'Label10
651: 'StatusStrip1
661: 'LbStatus
667: 'TbHDVclass
676: 'Label11
685: 'TbLoadingMax
694: 'Label22
703: 'GroupBox1
727: 'GroupBox4
742: 'PictureBox1
752: 'ToolStripSeparator1
757: 'ToolStripButton1
766: 'F_VEH
>>> F_VEH.vb
19: 'Init
30: 'New
35: 'Open
40: 'Save
45: 'Save As
50: 'Send to GEN Editor
76: 'Help
87: 'Save and Close
92: 'Cancel
99: 'Speichern oder Speichern als Function = true wenn Datei gespeichert
111: 'Neue VEH
124: 'Me.TBlhinauf.Text = ""
125: 'Me.TBlhinunter.Text = ""
126: 'Me.TBhinauf.Text = ""
127: 'Me.TBhinunter.Text = ""
128: 'Me.TBpspar.Text = ""
129: 'Me.TBpfast.Text = ""
152: 'TODO: AUTO: Me.TbHDVclass.Text
153: 'AUTO: Me.TbLoadingMax.Text
164: 'VEH öffnen
190: 'Me.TBhinauf.Text = VEH0.hinauf
191: 'Me.TBhinunter.Text = VEH0.hinunter
192: 'Me.TBlhinauf.Text = VEH0.lhinauf
193: 'Me.TBlhinunter.Text = VEH0.lhinunter
194: 'Me.TBpspar.Text = VEH0.pspar
195: 'Me.TBpfast.Text = 1 - VEH0.pmodell - VEH0.pspar
221: 'TODO: AUTO: Me.TbHDVclass.Text
222: 'AUTO: Me.TbLoadingMax.Text
234: 'VEH speichern
249: 'VEH0.I_mot = CSng(fTextboxToNumString(Me.TBI_mot.Text))
251: 'VEH0.I_Getriebe = CSng(fTextboxToNumString(Me.TBI_getr.Text))
252: 'VEH0.Paux0 = CSng(fTextboxToNumString(Me.TbPaux0.Text))
253: 'VEH0.Pnenn = CSng(fTextboxToNumString(Me.TBPnenn.Text))
254: 'VEH0.nNenn = CSng(fTextboxToNumString(Me.TBnnenn.Text))
255: 'VEH0.nLeerl = CSng(fTextboxToNumString(Me.TBnleerl.Text))
257: 'VEH0.fGetr = CSng(fTextboxToNumString(Me.TBfGetr.Text))
259: 'VEH0.AchsI = CSng(Me.LvGears.Items(0).SubItems(1).Text)
260: 'VEH0.AchsMap = Me.LvGears.Items(0).SubItems(2).Text
264: 'For i = 1 To 16
265: ' VEH0.Igetr(i) = CSng(Me.LvGears.Items(i).SubItems(1).Text)
266: ' VEH0.GetrMap(i) = Me.LvGears.Items(i).SubItems(2).Text
267: 'Next
269: 'VEH0.hinauf = CSng(fTextboxToNumString(Me.TBhinauf.Text))
270: 'VEH0.hinunter = CSng(fTextboxToNumString(Me.TBhinunter.Text))
271: 'VEH0.lhinauf = CSng(fTextboxToNumString(Me.TBlhinauf.Text))
272: 'VEH0.lhinunter = CSng(fTextboxToNumString(Me.TBlhinunter.Text))
273: 'VEH0.pspar = CSng(fTextboxToNumString(Me.TBpspar.Text))
274: 'VEH0.pmodell = CSng(1 - CSng(fTextboxToNumString(Me.TBpfast.Text)) - CSng(fTextboxToNumString(Me.TBpspar.Text)))
276: 'VEH0.TracIntrSi = fTextboxToNumString(Me.TbTracInt.Text)
321: 'Cd Mode Change
347: 'Cd File Browse
368: 'Rt Type Change
392: 'Rt File Browse
405: 'Change Status ändern
413: ' "Save changes ?" ...liefert True wenn User Vorgang abbricht
>>> F_VEH_AuxDlog.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
39: 'TableLayoutPanel1
54: 'OK_Button
63: 'Cancel_Button
73: 'Label1
82: 'Label2
91: 'Label3
100: 'TbID
107: 'TbPath
114: 'BtBrowse
123: 'CbType
132: 'LbIDhelp
141: 'F_VEH_AuxDlog
>>> F_VEH_AuxDlog.vb
7: 'Private Sub F_VEH_AuxDlog_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
8: ' Stop
10: 'End Sub
>>> F_VEH_Axle.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
37: 'TableLayoutPanel1
52: 'OK_Button
61: 'Cancel_Button
71: 'Label1
80: 'TbWeight
87: 'Label2
96: 'Label3
105: 'Label4
114: 'TbRRC
121: 'F_VEH_Axle
>>> F_VEH_GearDlog.Designer.vb
5: 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
17: 'Wird vom Windows Form-Designer benötigt.
20: 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
21: 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
22: 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
39: 'TableLayoutPanel1
54: 'OK_Button
63: 'Cancel_Button
73: 'TbGear
82: 'Label1
91: 'TbRatio
99: 'Label2
109: 'TbMapPath
116: 'Label3
125: 'BtBrowse
134: 'BtNext
144: 'F_VEH_GearDlog
>>> GUI_Subs.vb
6: 'Status Message => Msg-Listview
26: 'Status => Statusbar
33: 'Job-Status => Jobliste Status-Spalte
43: 'Zyklus-Status => Zyklusliste Status-Spalte
52: 'Worker Progress => Progbar (ProgBarSec Update wenn ProgSec > -1; ProgBarSec-Reset bei ProgSec = 0)
59: 'Progbar auf Continuous setzen
65: 'Abbruch
77: 'Status Message direkt an GUI - darf nicht durch den Backgroundworker geschehen!
82: 'Statusbar - Aufruf durch WorkerMSG oder direkt über Form, NIEMALS über Worker
87: 'Status Form zurück setzen - Aufruf NUR durch Events, NIEMALS über Worker
94: 'Klasse zum Übergeben von Nachrichten vom Backgroundworker
176: 'Falls String nicht Zahl dann Null
179: 'GUImsg(tMsgID.Err, "'" & txt & "' is no numeric expression!")
202: 'Datei in Excel öffnen
216: 'WorkDir oder MainDir einfügen falls kein Pfad angegeben. Spezial-Ordner einfügen
221: 'Pfad trimmen
224: 'Falls leere Datei => Abbruch
227: 'sKeys ersetzen
232: 'Replace - Ordner bestimmen
239: ' "..\" => Eine Ordner-Ebene hoch
246: 'Pfad ergänzen falls nicht vorhanden
257: 'Pfad eine Ebene nach oben "C:\temp\ordner1\" >> "C:\temp\"
271: 'Dateiname ohne Pfad "C:\temp\TEST.txt" >> "TEST.txt" oder "TEST"
283: 'Dateiname ohne Extension "C:\temp\TEST.txt" >> "C:\temp\TEST"
288: 'Dateiname ohne Pfad falls Pfad = WorkDir oder MainDir
305: 'Pfad allein "C:\temp\TEST.txt" >> "C:\temp\"
306: ' "TEST.txt" >> ""
314: 'Endung allein "C:\temp\TEST.txt" >> ".txt"
>>> cAux.vb
21: 'Abbruch wenn's Datei nicht gibt
27: 'Datei öffnen
35: 'Kennfeld zurück setzen
42: 'Transmission ration to engine rpm [-]
47: 'Efficiency to engine [-]
52: 'Efficiency auxiliary to supply [-]
57: 'Efficiency Map
60: 'Spalte 1 = Auxiliary speed [rpm] => X-Achse
61: 'Spalte 2 = Mechanical power [kW] => Z-Achse (!)
62: 'Spalte 3 = Output power [kW] => Y-Achse (!)
>>> cDRI.vb
5: 'Private Const FormatVersion As Integer = 1
6: 'Private FileVersion As Integer
30: 'Vorgabe für EXS
34: 'Parameter für KF-Erstellung
39: 'Vorgabe für AUX
88: 'Values.Add(tDriComp.t, New List(Of Single)) '<= brauchen wir erst wenn bei ADVANCE > 1Hz unterstützt wird
123: 'Reset
126: 'Abbruch wenn's Datei nicht gibt
132: 'EmComp Init
133: '...jetzt in New()
135: 'Datei öffnen
157: ''*** Erste Zeile: Version
158: 'line = file.ReadLine
159: 'txt = Trim(UCase(line(0)))
160: 'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then
161: ' ' "V" entfernen => Zahl bleibt übrig
162: ' txt = txt.Replace("V", "")
163: ' If Not IsNumeric(txt) Then
164: ' 'Falls Version ungültig: Abbruch
165: ' WorkerMsg(tMsgID.Err, "File Version invalid!", MsgSrc)
166: ' GoTo lbEr
167: ' Else
168: ' 'Version festgelegt
169: ' FileVersion = CInt(txt)
170: ' End If
171: 'Else
172: ' 'Falls keine Versionsangabe: Altes Format
173: ' file.Close()
174: ' Return ReadOldFormat()
175: 'End If
177: ''Version-Check: Abbruch falls Inputdateiformat neuer ist als PHEM-Version
178: 'If FileVersion > FormatVersion Then
179: ' WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc)
180: ' GoTo lbEr
181: 'End If
183: ''Spalte 2: Option "+" = Parameter für KF-Erstellung gegeben
184: 'If UBound(line) > 0 Then
185: ' If Trim(line(1)) = "+" Then
186: ' bCreateMapParDef = True
187: ' WorkerMsg(tMsgID.Normal, "MAP-Creation settings found.", MsgSrc)
188: ' End If
189: 'End If
200: '*** Zweite Zeile: Namen/Identifizierung der Komponenten
203: 'Spaltenanzahl/Komponenten checken
210: 'Falls DRIcomp = Undefined dann wirds als EXS-Comp oder als Emission für KF-Erstellung / Eng-Analysis verwendet
245: 'ERROR wenn Komponente in spitzen Klammern aber nicht bekannt
275: 'Falls erste EXS-Spalte dann Dictionary erstellen
281: 'Falls EXS-Componenten noch nicht in Dictionary dann erstellen
293: 'Check ob ExsComp/Modul-Kombination schon vorhanden => ERROR
321: 'Gvorg / Nvorg setzen:
333: '*** Dritte Zeile: Einheiten/Normierung
334: 'VECTO: nix einlesen. Fixe Units (line = file.ReadLine)
336: 'Normierungs-Unterstützte DRI-Komponenten
338: 'PeNormed = (UCase(Trim(line(Spalten(tDriComp.Pe)))) = sKey.Normed)
343: 'nNormed = (UCase(Trim(line(Spalten(tDriComp.nn)))) = sKey.Normed)
348: 'PaddNormed = (UCase(Trim(line(Spalten(tDriComp.Padd)))) = sKey.Normed)
352: 'MAP-Komponenten VECTO: Immer [g/h]!
355: ''Unit in String für weitere Checks speichern
356: 'txt = Trim(line(Em0.Col))
358: ''Klammern entfernen
359: 'txt = txt.Replace("[", "")
360: 'txt = txt.Replace("]", "")
362: ''Normierung und Unit festlegen
363: 'If txt.Contains("/") Then
366: ' Select Case UCase(Right(txt, txt.Length - txt.IndexOf("/") - 1))
367: ' Case "KWH", "H" & sKey.Normed
368: ' WorkerMsg(tMsgID.Warn, "Unit of component " & line(s) & " is not valid! Check Output!", MsgSrc)
369: ' Em0.NormID = tEmNorm.x
370: ' Em0.Unit = "Unit-ERROR!"
372: ' Case "H"
373: ' Em0.NormID = tEmNorm.x_h
374: ' Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]"
376: ' Case Else
377: ' Em0.NormID = tEmNorm.x
378: ' Em0.Unit = "[" & txt & "]"
380: ' End Select
382: 'Else
383: ' Em0.NormID = tEmNorm.x
384: ' Em0.Unit = "[" & txt & "]"
385: 'End If
393: '*** Zeile 4, 5: (optional, wenn oben "+"): Einstellungen für KF-Erstellung
395: 'Falls "+" aktiviert
398: 'Instanzen erstellen
402: '1. Option "Kennfeld normieren durch Pnenn"
408: '2. Option "Pfak anwenden"
429: '*** Ab 4.Zeile bzw. Ab 6.Zeile: Werte (derzeit keine unterschiedlichen Einheiten/Normierungen unterstützt)
490: 'Datei öffnen
517: 'TODO...
552: 'Nvorg / Gvorg wird in ResetMe zurück gesetzt
607: 'Geschw. umrechnen in m/s
615: 'Normieren, falls notwendig
625: 'Padd entnormieren, falls notwendig
635: 'Pe normieren, falls notwendig
647: '!!!!!!!! Emissionen werden nur in x/h oder x akzeptiert (siehe ReadFile) !!!!!!!!
759: '*********************************** Verzögerung limitieren ********************************
786: '*********************************** Zeitreihe erstellen '***********************************
891: '*********************************** Umrechnen in 1Hz '***********************************
1009: 'Check ob Zeit nicht rückwärts
1017: 'Zeitgrenzen definieren
1021: 'Ausgabe-, Summen- und Anz- Dictionaries erstellen
1060: 'Startwerte
1077: 'Nächster Zeitschritt
1082: 'Falls Zeitschritt > tMax:
1085: 'Sekunde abschließen
1088: 'Falls keine Werte in Summe: Interpolieren
1140: 'Falls nur ein Wert: Inter- / Extrapolieren
1223: 'Neuen Bereich festlegen
1228: 'Check ob letzte Sekunde
1234: 'Neue Summe/Anz beginnen
1291: 'Neue Felder übernehmen
>>> cEMO.vb
17: 'TODO...
40: 'Abbruch wenn's Datei nicht gibt
44: 'Datei öffnen
51: 'Kennfeld-Konfig
54: 'FLD und MAP einlesen
76: 'Kennfeld normieren
83: 'Übergibt aktuell mögliche Antriebsleistung für geg. Drehzahl
87: 'Extrapolation für x < x(1)
99: 'Extrapolation für x > x(imax)
105: 'Interpolation
114: 'Übergibt aktuell mögliche Generatorleistung für geg. Drehzahl
118: 'Extrapolation für x < x(1)
130: 'Extrapolation für x > x(imax)
136: 'Interpolation
>>> cFLD.vb
5: 'Private Const FormatVersion As Integer = 1
6: 'Private FileVersion As Integer
46: 'Dim txt As String
48: 'Dim s As Integer
49: 'Dim ID As tFldComp
64: 'Reset
67: 'Abbruch wenn's Datei nicht gibt
73: 'Datei öffnen
81: 'Listen initialisieren
91: ''*** Erste Zeile: Version
92: 'line = file.ReadLine
93: 'txt = Trim(UCase(line(0)))
94: 'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then
95: ' ' "V" entfernen => Zahl bleibt übrig
96: ' txt = txt.Replace("V", "")
97: ' If Not IsNumeric(txt) Then
98: ' 'Falls Version ungültig: Abbruch
99: ' WorkerMsg(tMsgID.Err, "File Version invalid!", MsgSrc)
100: ' GoTo lbEr
101: ' Else
102: ' 'Version festgelegt
103: ' FileVersion = CInt(txt)
104: ' End If
106: 'Else
107: ' 'Falls keine Versionsangabe: Altes Format
108: ' file.Close()
109: ' Return ReadOldFormat()
110: 'End If
112: ''Version-Check: Abbruch falls Inputdateiformat neuer ist als PHEM-Version
113: 'If FileVersion > FormatVersion Then
114: ' WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc)
115: ' GoTo lbEr
116: 'End If
121: '*** Zweite Zeile: Namen/Identifizierung der Komponenten (Schlepp-Emissionen f. KF-Erstellung)
122: 'line = file.ReadLine
124: ''Spaltenanzahl checken
125: 's1 = UBound(line)
127: ''Abbruch falls weniger als 3 Spalten
128: 'If s1 < 3 Then
129: ' WorkerMsg(tMsgID.Err, "Format invalid!", MsgSrc)
130: ' GoTo lbEr
131: 'End If
133: 'If s1 > 3 Then
134: ' For s = 4 To s1
136: ' txt = Trim(UCase(line(s)))
137: ' ID = fFldComp(txt)
139: ' Select Case ID
141: ' Case tFldComp.PeTarget
143: ' sTarget = s
144: ' PtargetDef = True
146: ' 'Case tFldComp.PT1
148: ' ' sPT1 = s
150: ' Case Else 'tFldComp.Undefined
152: ' bEmDef = True
154: ' If EmDragD.ContainsKey(txt) Then
155: ' WorkerMsg(tMsgID.Err, "Em-Component '" & txt & "' already defined!", MsgSrc)
156: ' GoTo lbEr
157: ' Else
158: ' EmDragD.Add(txt, New List(Of Single))
159: ' EmDragNormed.Add(txt, False)
160: ' sEmDrag.Add(txt, s)
161: ' End If
163: ' End Select
165: ' Next
166: 'End If
168: 'VECTO: Keine Header/Unit-Spalte. Immer PT1!
174: '*** Dritte Zeile: Normierung/Einheit
175: 'line = file.ReadLine
177: ''Abbruch falls weniger Spalten als in zweiter Zeile
178: 'If UBound(line) < s1 Then
179: ' WorkerMsg(tMsgID.Err, "Format invalid!", MsgSrc)
180: ' GoTo lbEr
181: 'End If
183: 'nNormed = (Trim(UCase(line(0))) = sKey.Normed)
186: 'If Not nNormed Then
187: ' Select Case Trim(UCase(line(0)))
188: ' Case "[U/MIN]", "RPM", "[1/MIN]", "[MIN^-1]"
189: ' 'Alles okay
190: ' Case Else
191: ' WorkerMsg(tMsgID.Err, "Engine Speed Unit '" & line(0) & "' unknown! '[U/min]' expected.", MsgSrc)
192: ' End Select
193: 'Else
194: ' WorkerMsg(tMsgID.Err, "Engine Speed Unit '" & line(0) & "' unknown! '[U/min]' expected.", MsgSrc)
195: 'End If
197: 'PfullNormed = (Trim(UCase(line(1))) = sKey.Normed)
200: 'If Not PfullNormed Then
201: ' If Trim(UCase(line(1))) <> "[NM]" Then
202: ' WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(1) & "' unknown! '[Nm]' expected.", MsgSrc)
203: ' End If
204: 'Else
205: ' WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(1) & "' unknown! '[Nm]' expected.", MsgSrc)
206: 'End If
208: 'PdragNormed = (Trim(UCase(line(2))) = sKey.Normed)
211: 'If Not PdragNormed Then
212: ' If Trim(UCase(line(1))) <> "[NM]" Then
213: ' WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(2) & "' unknown! '[Nm]' expected.", MsgSrc)
214: ' End If
215: 'Else
216: ' WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(2) & "' unknown! '[Nm]' expected.", MsgSrc)
217: 'End If
219: 'If PtargetDef Then
220: ' LPtarget = New System.Collections.Generic.List(Of Single)
221: ' PtargetNormed = (Trim(UCase(line(sTarget))) = sKey.Normed)
223: ' If Not PtargetNormed Then
224: ' If Trim(UCase(line(1))) <> "[KW]" Then
225: ' WorkerMsg(tMsgID.Err, "Engine Power Unit '" & line(sTarget) & "' unknown! '[kW]' or '" & sKey.Normed & "' expected.", MsgSrc)
226: ' End If
227: ' End If
229: 'End If
231: ''Zusatzkomponenten
232: 'If bEmDef Then
233: ' For Each EmKV In sEmDrag
235: ' txt = line(EmKV.Value)
237: ' 'Klammern entfernen
238: ' txt = txt.Replace("[", "")
239: ' txt = txt.Replace("]", "")
241: ' 'Normierung und Unit festlegen
242: ' If txt.Contains("/") Then
243: ' Select Case UCase(Right(txt, txt.Length - txt.IndexOf("/") - 1))
244: ' Case "H"
245: ' EmDragNormed(EmKV.Key) = False
246: ' Case "KWH"
247: ' WorkerMsg(tMsgID.Err, "Unit '" & line(EmKV.Value) & "' is not supported in this file!", MsgSrc)
248: ' GoTo lbEr
249: ' Case "H" & sKey.Normed
250: ' EmDragNormed(EmKV.Key) = True
251: ' End Select
252: ' Else
253: ' EmDragNormed(EmKV.Key) = False
254: ' End If
256: ' Next
257: 'End If
260: 'Ab Zeile 4: Werte
265: 'Zeile einlesen
268: 'VECTO: M => Pe
276: 'Falls PT1 nicht vorgegeben wird Defaultwert verwendet (siehe oben)
296: 'Zeilen-Zähler hoch (wurde in ResetMe zurück gesetzt)
309: 'Datei schließen
315: 'ERROR-Label für sauberen Abbruch
328: 'Datei öffnen
348: 'Zeilen-Zähler hoch (wurde in ResetMe zurück gesetzt)
353: 'Datei schließen
371: 'Drehzahl normieren
378: 'Leistung normieren
385: 'Leistung normieren
392: 'Pe-Target normieren
399: 'Em ent-normieren
415: 'Extrapolation für x < x(1)
427: 'Extrapolation für x > x(imax)
433: 'Interpolation
444: 'Extrapolation für x < x(1)
456: 'Extrapolation für x > x(imax)
462: 'Interpolation
466: 'Dynamische Volllast
475: 'Extrapolation für x < x(1)
487: 'Extrapolation für x > x(imax)
493: 'Interpolation
500: 'Extrapolation für x < x(1)
512: 'Extrapolation für x > x(imax)
518: 'Interpolation
530: 'Extrapolation für x < x(1)
542: 'Extrapolation für x > x(imax)
548: 'Interpolation
>>> cGEN.vb
5: 'Private Const FormatVersion As Integer = 1
6: 'Private FileVersion As Integer
12: 'Modus
133: 'Dim txt As String
154: ''*** Erste Zeile: Version
155: 'line = file.ReadLine
156: 'txt = Trim(UCase(line(0)))
157: 'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then
158: ' ' "V" entfernen => Zahl bleibt übrig
159: ' txt = txt.Replace("V", "")
160: ' If Not IsNumeric(txt) Then
161: ' 'Falls Version ungültig: Abbruch
162: ' GoTo lbEr
163: ' Else
164: ' 'Version festgelegt
165: ' FileVersion = CInt(txt)
166: ' End If
167: 'Else
168: ' file.Close()
169: ' Return ReadOldFormat()
170: 'End If
172: ''Version-Check: Abbruch falls Inputdateiformat neuer ist als PHEM-Version
173: 'If FileVersion > FormatVersion Then
174: ' WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc)
175: ' GoTo lbEr
176: 'End If
178: '**** GEN Datei einlesen ****
180: 'Allgemein
181: 'boPKWja = CBool(file.ReadLine(0))
182: 'bodynkorja = CBool(file.ReadLine(0))
183: 'ineklasse = CShort(file.ReadLine(0))
184: 'inizykwael = CShort(file.ReadLine(0))
186: 'line = file.ReadLine
187: 'If UBound(line) < 2 Then
188: ' WorkerMsg(tMsgID.Err, "File Format invalid (" & sFilePath & ")!", MsgSrc)
189: ' GoTo lbEr
190: 'End If
192: 'Select Case CShort(line(0))
193: ' Case 0
194: ' VehMode = tVehMode.StandardMode
195: ' Case 1
196: ' VehMode = tVehMode.EngineOnly
197: ' Case 2
198: ' VehMode = tVehMode.HEV
199: ' Case Else '3
200: ' VehMode = tVehMode.EV
201: 'End Select
203: 'EngAnalysis = CBool(line(1))
204: 'CreateMap = CBool(line(2))
205: 'ModeHorEV = (VehMode = tVehMode.HEV Or VehMode = tVehMode.EV)
208: 'KF Erstellung
209: 'line = file.ReadLine
210: 'inPschrit = CShort(line(0))
211: 'innschrit = CShort(line(1))
213: 'line = file.ReadLine
214: 'bKFcutFull = CBool(line(0))
215: 'bKFcutDrag = CBool(line(1))
216: 'bKFinsertDrag = CBool(line(2))
217: 'bKFDragIntp = CBool(line(3))
219: 'boMapSchaltja = CBool(file.ReadLine(0))
221: 'iniMsek = CShort(file.ReadLine(0))
223: 'boottoJa = CBool(file.ReadLine(0))
225: 'bokaltst1 = CBool(file.ReadLine(0))
227: 'sitkat1 = CSng(file.ReadLine(0))
228: 'sitkw1 = CSng(file.ReadLine(0))
229: 'sihsstart = CSng(file.ReadLine(0))
251: 'stdynspez.Init(MyPath, file.ReadLine(0))
253: 'Kaltstart
254: 'stkatmap.Init(MyPath, file.ReadLine(0))
255: 'stkwmap.Init(MyPath, file.ReadLine(0))
256: 'stkatkurv.Init(MyPath, file.ReadLine(0))
257: 'stkwkurv.Init(MyPath, file.ReadLine(0))
258: 'stcooldown.Init(MyPath, file.ReadLine(0))
259: 'sttumgebung.Init(MyPath, file.ReadLine(0))
261: 'If file.EndOfFile Then GoTo lbClose
263: 'HEV
264: 'stBatfile.Init(MyPath, file.ReadLine(0))
265: 'stEmospez.Init(MyPath, file.ReadLine(0))
266: 'stEANfile.Init(MyPath, file.ReadLine(0))
267: 'stGetspez.Init(MyPath, file.ReadLine(0))
268: 'stSTEnam.Init(MyPath, file.ReadLine(0))
269: 'stEKFnam.Init(MyPath, file.ReadLine(0))
271: 'If file.EndOfFile Then GoTo lbClose
273: 'EXS
274: 'boEXSja = CBool(file.ReadLine(0))
275: 'stPathExs.Init(MyPath, file.ReadLine(0))
277: 'If file.EndOfFile Then GoTo lbClose
279: 'boStartStop = CBool(file.ReadLine(0))
280: 'siStStV = CSng(file.ReadLine(0))
281: 'siStStT = CSng(file.ReadLine(0))
283: 'boSOCnJa = CBool(file.ReadLine(0))
284: 'siSOCstart = CSng(file.ReadLine(0))
286: 'If file.EndOfFile Then GoTo lbClose
288: 'GetrMod = CShort(file.ReadLine(0))
290: 'If file.EndOfFile Then GoTo lbClose
292: 'CoolantsimJa = CBool(file.ReadLine(0))
293: 'stCoolantSimPath.Init(MyPath, file.ReadLine(0))
295: 'If file.EndOfFile Then GoTo lbClose
297: 'Einzelne Nebenverbraucher
323: 'DesMaxJa = CBool(file.ReadLine(0))
333: 'Schaltmodell-Verteilung
357: 'ERROR-Label für sauberen Abbruch
380: '**** GEN Datei einlesen ****
390: 'Alten Rechenmodus in neue Modus-Schalter umwandeln
438: 'stCycleFile.Init(MyPath, file.ReadLine(0))
509: 'Dim s As String
514: 'fGEN.WriteLine("V" & FormatVersion)
520: 'fGEN.WriteLine("c Heavy Duty (0) or Passenger Car (1)")
521: 'fGEN.WriteLine(Math.Abs(CInt(boPKWja)))
523: 'fGEN.WriteLine("c Transient emission correction (1/0)")
524: 'fGEN.WriteLine(Math.Abs(CInt(bodynkorja)))
526: 'fGEN.WriteLine("c Emission Class (EURO ..)")
527: 'fGEN.WriteLine(ineklasse)
529: 'fGEN.WriteLine("c Gear Shift Mode: NEDC (0), FTP (1), Model - MT (2)")
530: 'fGEN.WriteLine(inizykwael)
532: 'fGEN.WriteLine("c Calculation Mode, EngAnalysis, CreateMap")
533: 'Select Case VehMode
534: ' Case tVehMode.StandardMode
535: ' s = "0"
536: ' Case tVehMode.EngineOnly
537: ' s = "1"
538: ' Case tVehMode.HEV
539: ' s = "2"
540: ' Case Else 'tVehMode.EV
541: ' s = "3"
542: 'End Select
543: 's &= "," & Math.Abs(CInt(EngAnalysis))
544: 's &= "," & Math.Abs(CInt(CreateMap))
545: 'fGEN.WriteLine(s)
547: 'Kennfeld Erstellung------------------------------------------------------
548: 'fGEN.WriteLine("c Settings for Emission Map Creation Mode:")
549: 'fGEN.WriteLine("c Increment Pe, n:")
550: 'fGEN.WriteLine(inPschrit & "," & innschrit)
552: 'fGEN.WriteLine("c CutFull,CutDrag,InsertDrag,DragIntp:")
553: 'fGEN.WriteLine(Math.Abs(CInt(bKFcutFull)) & "," & Math.Abs(CInt(bKFcutDrag)) & "," & Math.Abs(CInt(bKFinsertDrag)) & "," & Math.Abs(CInt(bKFDragIntp)))
555: 'fGEN.WriteLine("c Include Gear Shifts (1/0, Standard = 1)")
556: 'fGEN.WriteLine(Math.Abs(CInt(boMapSchaltja)))
558: 'fGEN.WriteLine("c Averageing Period for Modal Values")
559: 'fGEN.WriteLine(iniMsek)
561: 'fGEN.WriteLine("c ICE Type (Otto = 1, Diesel = 0")
562: 'fGEN.WriteLine(Math.Abs(CInt(boottoJa)))
564: 'Kalt Start---------------------------------------------------------------
565: 'fGEN.WriteLine("c Cold Start (1/0)")
566: 'fGEN.WriteLine(Math.Abs(CInt(bokaltst1)))
568: 'fGEN.WriteLine("c t cat start [°C]")
569: 'fGEN.WriteLine(sitkat1)
571: 'fGEN.WriteLine("c t coolant start [°C]")
572: 'fGEN.WriteLine(sitkw1)
574: 'fGEN.WriteLine("c time of start [h.sec]")
575: 'fGEN.WriteLine(sihsstart)
577: 'Dateien------------------------------------------------------------------
593: 'fGEN.WriteLine("c ")
594: 'fGEN.WriteLine("c File containing transient correction parameters (*.trs):")
595: 'fGEN.WriteLine(stdynspez.PathOrDummy)
597: 'Kalt Start
598: 'fGEN.WriteLine("c ")
599: 'fGEN.WriteLine("c File containing the catalyst map (*.maa):")
600: 'fGEN.WriteLine(stkatmap.PathOrDummy)
602: 'fGEN.WriteLine("c ")
603: 'fGEN.WriteLine("c File containing the map of cooling water (*.mac):")
604: 'fGEN.WriteLine(stkwmap.PathOrDummy)
606: 'fGEN.WriteLine("c ")
607: 'fGEN.WriteLine("c File containing the catalyst warm-up (*.wua):")
608: 'fGEN.WriteLine(stkatkurv.PathOrDummy)
610: 'fGEN.WriteLine("c ")
611: 'fGEN.WriteLine("c File containing the engine coolant warm-up (*.wuc):")
612: 'fGEN.WriteLine(stkwkurv.PathOrDummy)
614: 'fGEN.WriteLine("c ")
615: 'fGEN.WriteLine("c File containing the cooling parameters for catalyst and engine coolant (*.cdw):")
616: 'fGEN.WriteLine(stcooldown.PathOrDummy)
618: 'fGEN.WriteLine("c ")
619: 'fGEN.WriteLine("c File containing the ambient parameters (*.atc)")
620: 'fGEN.WriteLine(sttumgebung.PathOrDummy)
622: 'HEV
623: 'fGEN.WriteLine("c ")
624: 'fGEN.WriteLine("c File containing battery specifications for HEV (*.bat)")
625: 'fGEN.WriteLine(stBatfile.PathOrDummy)
627: 'fGEN.WriteLine("c ")
628: 'fGEN.WriteLine("c File containing specifications of the E-motor for HEV (*emo)")
629: 'fGEN.WriteLine(stEmospez.PathOrDummy)
631: 'fGEN.WriteLine("c ")
632: 'fGEN.WriteLine("c File containing the pattern of E-motor on/off for HEV (*ean)")
633: 'fGEN.WriteLine(stEANfile.PathOrDummy)
635: 'fGEN.WriteLine("c ")
636: 'fGEN.WriteLine("c File containing the efficiency of additional gearbox for HEV (*get)")
637: 'fGEN.WriteLine(stGetspez.PathOrDummy)
639: 'fGEN.WriteLine("c ")
640: 'fGEN.WriteLine("c File containing the control efficiency-File for HEV (*.ste)")
641: 'fGEN.WriteLine(stSTEnam.PathOrDummy)
643: 'fGEN.WriteLine("c ")
644: 'fGEN.WriteLine("c File containing the efficiency-maps for HEV-strategy control (*.ekf)")
645: 'fGEN.WriteLine(stEKFnam.PathOrDummy)
647: 'EXS
648: 'fGEN.WriteLine("c ")
649: 'fGEN.WriteLine("c Exhaust System Simulation (1/0)")
650: 'fGEN.WriteLine(Math.Abs(CInt(boEXSja)))
652: 'fGEN.WriteLine("c Exhaust System Simulation Configuration File")
653: 'fGEN.WriteLine(stPathExs.PathOrDummy)
655: 'Start/Stop
656: 'fGEN.WriteLine("c ICE Auto-Start/Stop (1/0) - Non HEV only")
657: 'fGEN.WriteLine(Math.Abs(CInt(boStartStop)))
658: 'fGEN.WriteLine("c Start/Stop Max Speed [km/h]")
659: 'fGEN.WriteLine(siStStV)
660: 'fGEN.WriteLine("c Start/Stop Min ICE-On Time [s]")
661: 'fGEN.WriteLine(siStStT)
663: 'SOC-Start Iteration
664: 'fGEN.WriteLine("c SOC Start Iteration (1/0) - HEV only")
665: 'fGEN.WriteLine(Math.Abs(CInt(boSOCnJa)))
667: ''SOC-Start
668: 'fGEN.WriteLine("c SOC Start - (H)EV only")
669: 'fGEN.WriteLine(siSOCstart)
671: ''Getriebe-Verluste-Modell
672: 'fGEN.WriteLine("c Transmission Loss Model")
673: 'fGEN.WriteLine(CStr(GetrMod))
675: 'Coolantsim
676: 'fGEN.WriteLine("c Coolant System Simulation (1/0)")
677: 'fGEN.WriteLine(Math.Abs(CInt(CoolantsimJa)))
678: 'fGEN.WriteLine("c Coolant System Simulation Configuration File")
679: 'fGEN.WriteLine(stCoolantSimPath.PathOrDummy)
687: 'a_DesMax
689: 'fGEN.WriteLine(Math.Abs(CInt(DesMaxJa)))
740: 'FileVersion = 0
790: 'Liest Sub Input Files ein die keine eigene Klasse haben, etc.
1327: 'Extrapolation für x < x(1)
1339: 'Extrapolation für x > x(imax)
1345: 'Interpolation
1353: 'Extrapolation für x < x(1)
1365: 'Extrapolation für x > x(imax)
1371: 'Interpolation
>>> cMAP.vb
5: 'Private Const FormatVersion As Integer = 1
6: 'Private FileVersion As Integer
34: 'FileVersion = 0
127: 'Dim txt As String
137: 'Reset
140: 'Abbruch wenn's Datei nicht gibt
146: 'Datei öffnen
154: 'Listen initialisieren (vor Version-Check damit ReadOldFormat funktioniert)
163: 'Check ob MEP oder MAP
164: '...wird jetzt weiter unten gecheckt beim Einlesen.
167: ''*** Erste Zeile: Version
168: 'line = file.ReadLine
169: 'txt = Trim(UCase(line(0)))
170: 'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then
171: ' ' "V" entfernen => Zahl bleibt übrig
172: ' txt = txt.Replace("V", "")
173: ' If Not IsNumeric(txt) Then
174: ' WorkerMsg(tMsgID.Err, "File Version invalid!", MsgSrc)
175: ' GoTo lbEr
176: ' Else
177: ' 'Version festgelegt
178: ' FileVersion = CInt(txt)
179: ' End If
180: 'Else
181: ' file.Close()
182: ' Return ReadOldFormat()
183: 'End If
185: ''Version-Check: Abbruch falls Inputdateiformat neuer ist als PHEM-Version
186: 'If FileVersion > FormatVersion Then
187: ' WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc)
188: ' GoTo lbEr
189: 'End If
191: ''Spalte 2: Option "+" = Parameter für KF-Erstellung gegeben
192: 'If UBound(line) > 0 Then
193: ' If Trim(line(1)) = "+" Then
194: ' SwitchOn = True
195: ' If MsgOutput Then WorkerMsg(tMsgID.Normal, "Advanced settings found.", MsgSrc)
196: ' End If
197: 'End If
200: '*** Zweite Zeile: Namen/Identifizierung der Komponenten (Nur Em. Leistung, Drehzahl ist fix!)
201: 'line = file.ReadLine
203: ''Spaltenanzahl checken
204: 's1 = UBound(line)
207: ''Abbruch falls weniger als 3 Spalten
208: 'If s1 < 2 Then GoTo lbEr
210: ' ''Check ob Leistung/Drehzahl vertauscht
211: ''If UCase(line(0)).Contains("PE") Then
212: '' If MsgOutput Then WorkerMsg(tMsgID.Warn, "Expected Emission Map format: 1st column = Engine Speed, 2nd column = Engine Power (Header Check failed)", MsgSrc)
213: ''End If
215: ''Em-Komponenten initialisieren
216: 'For s = 3 To s1
218: ' Em0 = New cEmComp
219: ' Em0.Col = s
220: ' Em0.Name = line(s) 'wird bei Default-Komponenten noch geändert
221: ' Em0.IDstring = Trim(UCase(line(s)))
222: ' Em0.MapCompID = fMapComp(Em0.Name)
223: ' Em0.NormID = tEmNorm.x 'wird ggf. weiter unten korrigiert!
224: ' 'Default-Interpolator definiert in Em0 = New cEmComp
225: ' 'Default Pe-Correction definiert in Em0 = New cEmComp
227: ' If EmComponents.ContainsKey(UCase(Em0.Name)) Then
229: ' 'Abbruch falls schon definiert
230: ' WorkerMsg(tMsgID.Err, "Component '" & Em0.Name & "' already defined! Col. " & s + 1, MsgSrc)
231: ' GoTo lbEr
233: ' Else
235: ' 'Dictionary füllen....
236: ' If Em0.MapCompID = tMapComp.Undefined Then
238: ' 'ERROR wenn Komponente in spitzen Klammern aber nicht bekannt
239: ' If Em0.IDstring.Length > 1 Then
240: ' If Left(Em0.IDstring, 1) = "<" And Right(Em0.IDstring, 1) = ">" Then
241: ' If MsgOutput Then WorkerMsg(tMsgID.Err, "'" & Em0.Name & "' is no valid Default Map Component!", MsgSrc)
242: ' End If
243: ' End If
245: ' 'Custom Em-Komponenten Dictionary:
246: ' EmComponents.Add(Em0.IDstring, Em0)
247: ' MyEmList.Add(Em0.IDstring)
249: ' Else
251: ' '*** Default Em-Komponenten ***
253: ' 'Default-Interpolator
254: ' Em0.IntpolV2 = fDefIntpV2(Em0.MapCompID)
256: ' 'Default Pe-Correction
257: ' Em0.PeCorMode = fDefPeCorMode(Em0.MapCompID)
259: ' 'Default-Name
260: ' Em0.Name = fMapCompName(Em0.MapCompID)
262: ' 'TC-Komponenten werden nicht ausgegeben
263: ' If fMapCompIsTC(Em0.MapCompID) Then
264: ' TransMap = True
265: ' Em0.WriteOutput = False
266: ' End If
268: ' 'Custom Em-Komponenten Dictionary:
269: ' EmComponents.Add(Em0.IDstring, Em0)
270: ' MyEmList.Add(Em0.IDstring)
272: ' 'Eintrag in Referenz-Dictionary
273: ' EmDefRef.Add(Em0.MapCompID, Em0)
275: ' End If
276: ' End If
277: 'Next
279: 'VECTO: Spalte 3 immer Verbrauch
289: 'Abbruch falls schon definiert
302: '*** Dritte Zeile: Normierung/Einheit
303: 'line = file.ReadLine
305: ''Abbruch falls weniger Spalten als in zweiter Zeile
306: 'If UBound(line) < s1 Then GoTo lbEr
308: ''Normierung/Einheit einlesen
309: 'For Each EmKV In EmComponents
311: ' 'EM-Komp Referenz
312: ' Em0 = EmKV.Value
314: ' 'Unit in String für weitere Checks speichern
315: ' txt = Trim(line(Em0.Col))
317: ' 'Klammern entfernen
318: ' txt = txt.Replace("[", "")
319: ' txt = txt.Replace("]", "")
321: ' 'Normierung und Unit festlegen
322: ' If txt.Contains("/") Then
323: ' Select Case UCase(Right(txt, txt.Length - txt.IndexOf("/") - 1))
325: ' Case "H"
326: ' Em0.NormID = tEmNorm.x_h
327: ' Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]"
329: ' Case "KWH"
330: ' Em0.NormID = tEmNorm.x_kWh
331: ' Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]"
333: ' Case "H" & sKey.Normed
334: ' Em0.NormID = tEmNorm.x_hPnenn
335: ' Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]"
337: ' Case Else
338: ' Em0.NormID = tEmNorm.x
339: ' Em0.Unit = "[" & txt & "]"
341: ' End Select
342: ' Else
343: ' Em0.NormID = tEmNorm.x
344: ' Em0.Unit = "[" & txt & "]"
345: ' End If
347: 'Next
348: 'nNormed = Trim(UCase(line(0))) = sKey.Normed
349: 'PeNormed = Trim(UCase(line(1))) = sKey.Normed
353: ''Check ob n/Pe Einheiten OK:
354: 'If Not nNormed Then
355: ' Select Case Trim(UCase(line(0)))
356: ' Case "[U/MIN]", "RPM", "[1/MIN]", "[MIN^-1]"
357: ' 'Alles okay
358: ' Case Else
359: ' If MsgOutput Then WorkerMsg(tMsgID.Err, "Engine Speed Unit '" & line(0) & "' unknown! '[U/min]' expected.", MsgSrc)
360: ' End Select
361: 'Else
362: ' If MsgOutput Then WorkerMsg(tMsgID.Err, "Engine Speed Unit '" & line(0) & "' unknown! '[U/min]' expected.", MsgSrc)
363: 'End If
365: 'If Not PeNormed Then
366: ' If Trim(UCase(line(1))) <> "[NM]" Then
367: ' If MsgOutput Then WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(1) & "' unknown! '[Nm]' expected.", MsgSrc)
368: ' End If
369: 'Else
370: ' If MsgOutput Then WorkerMsg(tMsgID.Err, "Engine Torque Unit '" & line(1) & "' unknown! '[Nm]' expected.", MsgSrc)
371: 'End If
375: '*** Zeile 4,5: (optional, wenn oben "+"): Einstellungen für Pe-Cor (altes Pfak)
376: ' Falls nicht "+" werden Default Interpolatoren verwendet (s.o.)
379: 'Zeile 4 einlesen
382: 'Schleife über Em-Komponenten
408: 'Zeile 5 einlesen
411: 'Schleife über Em-Komponenten
436: 'Ab Zeile 4 (bzw. 6): Werte
440: 'Zeile einlesen
443: 'Zeilen-Zähler hoch (wurde in ResetMe zurück gesetzt)
446: 'Drehzahl
451: 'Leistung
452: 'If Trim(UCase(line(1))) = sKey.MAP.Drag Then
453: ' If PeNormed Then
454: ' LPe.Add(FLD.Pdrag(Lnn(iMapDim)) / VEH.Pnenn)
455: ' Else
456: ' LPe.Add(FLD.Pdrag(Lnn(iMapDim)))
457: ' End If
458: 'Else
460: 'End If
462: 'Emissionen
474: 'Shep-Init
477: 'Datei schließen
487: 'ERROR-Label für sauberen Abbruch
506: 'Datei öffnen
513: 'Alte Kennfelder haben immer TC-Faktoren (sind halt evtl. Null)
776: 'Werte
778: 'Zeile einlesen
781: 'Zeilen-Zähler hoch (wurde in ResetMe zurück gesetzt)
784: 'Drehzahl
787: 'Leistung
792: 'Emissionen
803: 'Shep-Init
806: 'Datei schließen
821: 'Abbruch falls Em-Komponente nicht in MAP
828: 'Abbruch falls TC-Faktoren für die Komponente schon definiert
859: 'Drehzahl normieren
866: ' "anders" normierte Drehzahl berechnen
871: 'Leistung normieren
878: 'Emissionen entnormieren
879: ' ACHTUNG: Selbst wenn x_kWh bzw. x_hPnenn in x_h umgewandelt werden muss Normed gleich bleiben weil sonst die DynKor nicht stimmt!
891: 'Werte sind bereits absolut angegeben
892: 'Unterscheidung in [x] und [x/h] derzeit nicht verwendet/unterstützt
896: 'Check ob Drehzahl/Leistung vertauscht
926: 'FC Delauney
958: 'Kennfeld-Erstellung
1016: 'Reset
1025: '***************** Initialisiere Em-Komponenten *******************
1052: 'FileVersion = FormatVersion
1067: 'PeCorMode: Falls nicht in MES/NPI vorgegeben gilt bei Nicht-Default-Em was in cEmComp.New() eingestellt ist
1078: 'Falls TC angegeben dann Abbruch
1084: 'Interpolator auswählen
1087: 'Eintrag in Referenz-Dictionary (Es wird nicht überprüft ob Em-Comp. doppelt vorkommt weil das schon in DRI.ReadFile passiert)
1097: 'Infos ausgeben
1102: 'Dynamikparameter und Extrapol kommen noch dazu
1247: '************* Mittelwert-Dictionary initialisieren ***************
1271: '********************* Mittelwerte berechnen **********************
1273: 'Haupt-Schleife
1276: 'Listen erstellen
1291: 'Schleife über Messwerte
1296: 'Bereich unter iMsek mit Messwert belegen
1310: 'Bereich über iMsek mit Mittelwerten der Messwerte belegen
1331: 'Keine Mittelwertbildung
1347: 'EmCheck: False = Wert noch nicht verwendet, True = Wert wurde bereits in Kennfeld verwurschtet
1353: '*************************** Rasterung ****************************
1418: 'Schlepp hinzufügen mit halber nn-Schrittweite. Wird für Pfak benötigt. Falls GEN.KFinsertDrag deaktiviert wird sie später wieder gelöscht.
1428: 'Leerlaufpunkt hinzufügen
1435: '**************** NrUsed Erstellung / Null setzen *****************
1442: '**************** Messwerte in Raster reinrechnen *****************
1444: 'Basis Schrittweite zwischenspeichern
1448: 'Schleife über Rasterpunkte (i)
1451: 'Summen/Anzahl/Flags zurücksetzen
1456: 'Schlepp-Leistung
1459: 'Schleife bis genug Werte im Radius gefunden
1462: 'Zähler/Summen zurück setzen
1469: 'Schleife über Messwerte (j)
1472: 'Falls innerhalb von Radius...
1475: 'Anz + 1
1478: 'Schleife über alle Em-Komp.
1481: 'Summe +
1484: 'Min/Max belegen (für Log-Ausgabe)
1495: 'Interpolierte Leistung aufsummieren (wird dann durch Anz dividiert)
1498: 'Zählen wieviel Messwerte für Rasterpunkt verwendet werden (Log-Ausgabe)
1509: 'Falls keine Messwerte im Radius (Anz=0) dann Radius vergrößern und Extra-Flag setzen
1518: 'NrUsed belegen
1523: 'Interpolierte Leistung = Summe / Anz
1526: 'Pfak berechnen:
1527: ' Falls oberhalb Pschlepp dann Pfak laut Formel oder 1 falls Abstand zw. Pe-Interpol und Pschlepp zu gering
1528: ' Unterhalb von Pschlepp Pfak=0 => Em-Wert=Null
1539: 'Extrapol-Flag in Extrapol-Spalte (1/0) übernehmen
1546: 'Für Log-Ausgabe
1550: 'Schleife über Em-Comp (innerhalb Rasterpunkt Schleife)
1553: 'Falls Option 'Schlepp-Em aus .FLD' belegen und Rasterpunkt-Leistung <= Schleppleistung
1556: 'Falls Schlepp-Em in .FLD vorhanden dann nehmen sonst mit Null belegen
1565: 'Em-Belegung ohne Pfak (=> Pfak wird später gemacht)
1570: 'Für Log-Ausgabe
1576: 'TC-Faktoren ohne Pfak übernehmen
1584: '***************************** Pfak ******************************
1586: '!!! WICHTIG !!!
1587: 'Schleife geht über alle Rasterpunkt (auch über die Pe <= PeSchlepp bzw. PeIntpol nahe an Pschlepp).
1588: ' Das ist OK weil Pfak dort sowieso mit Eins beleget.
1590: 'Schleife über Em-Comp
1593: 'Falls keine Create Map Einstellungen (in .NPI/.MES) oder Pfak explizit aktiviert => Pfak verwenden
1596: 'Schleife über Rasterpunkte (i)
1601: 'Altes Pfak mit Extrapolation von Null weg
1606: 'Schlepp-Emission raus suchen
1607: ' Schlepp-Em aus nächstgelegenen Rasterpunkt nehmen. Das geht weil Schleppkurve
1608: ' immer ins Map kommt (auch wenn sie dann später raus gelöscht wird) !!
1609: ' Option 'Schlepp-Em aus .FLD' spielt keine Rolle weil das nur die Belegungs-Methode der Schleppkurve betrifft (s.o.)
1623: 'Pfak anwenden
1633: '******************* Normieren (Wert und Unit) ********************
1636: 'Falls Vorgabe in MES/NPI-Datei dann verwenden
1641: 'Werte normieren
1652: 'Sonst Standard-Normierung verwenden
1657: 'Werte normieren
1673: '****************** EmComponents zusammenfassen *******************
1688: '*********** Schleppkurve wieder raus nehmen (optional) ***********
1691: 'Schleife über Rasterpunkte (i). Keine For-Schleife weil iMapDim reduziert wird
1713: '************************** Ausgabe Map '**************************
1726: 'file.WriteLine("V" & FormatVersion)
1728: 'Header
1732: 'ACHTUNG: Nicht Name sondern sKey !!!
1740: 'Unit
1751: 'Werte
1765: '********************** Ausgabe Zusatzinfo '***********************
1794: 'Header (MAP)
1804: 'Werte
1831: 'Header (MES/NPI)
1857: 'Shep-Init
1864: 'Default Shepard wie in intpshep()
1873: 'Interpolator V1
1879: 'Interpolator V2
1905: '******************************** V1 & V2 **********************************
1918: '*********************************** V1 ************************************
1924: 'Abstand berechnen und korrigieren.
1928: 'Um Nullleistung werden Kennfeldpunkte um Pe=0 hoeher gewichtet und Drehzahlabstand geringer,
1929: ' da Interpolation aus Punkten mit hoeherer last dort schlecht passt:
1935: 'Quadrat des Abstandes:
1938: 'Falls Vorzeichen von Pe unterschiedlich (Last/Schlepp-Trennung) wird Abstand vergroessert um Schlepp bei Schlepp mehr zu gewichten:
1945: 'Punkte innerhalb Radius zählen und ggf. Radius erhöhen
1962: 'Abstand-Array erstellen und Leistung interpolieren für Pe-Korrektur
1974: 'Berechnung von wisum
1980: 'Interpolierte Leistung berechnen
1986: '*********************************** V2 ************************************
1992: 'Abstand berechnen und korrigieren.
1995: 'Quadrat des Abstandes:
2000: 'Punkte innerhalb Radius zählen und ggf. Radius erhöhen
2017: 'Abstand-Array erstellen und Leistung interpolieren für Pe-Korrektur
2029: 'Berechnung von wisumV2
2035: 'Interpolierte Leistung berechnen
2112: 'Berechnet Emission an Schleppkurve
2129: 'Es wird an Schleppkurve gesucht
2131: 'n0 ist schon in Init definiert worden
2133: 'Abstand berechnen und korrigieren.
2136: 'Quadrat des Abstandes:
2139: 'Falls Vorzeichen von Pe unterschiedlich (Last/Schlepp-Trennung) wird Abstand vergroessert um Schlepp bei Schlepp mehr zu gewichten:
2146: 'Punkte innerhalb Radius zählen und ggf. Radius erhöhen
2163: 'Abstand-Array erstellen
2173: 'Berechnung von wisum
2179: 'Emission berechnen
>>> cTRS.vb
29: 'Reset
32: 'Abbruch wenn's Datei nicht gibt
38: 'Datei öffnen
47: '*** Erste Zeile: Version
51: ' "V" entfernen => Zahl bleibt übrig
54: 'Falls Version ungültig: Abbruch
58: 'Version festgelegt
62: 'Falls keine Versionsangabe: Altes Format
67: 'Version-Check: Abbruch falls Inputdateiformat neuer ist als PHEM-Version
79: '*** Zweite Zeile: Check welche TC-Faktoren in welcher Spalte stehen (ab Spalte 1!!)
83: 'Abbruch falls weniger als 2 Spalen:
91: 'Abbruch wenn unbekannter TC-Faktor
96: 'Zu Dict hinzufügen
101: '*** Ab Zeile 3: TC-Faktoren für die einzelnen Em-Komponeten
102: ' l ist nur für Fehlerausgabe
163: 'Datei öffnen
207: 'Abbruch falls weniger als 11 Spalen:
>>> cVEH.vb
11: 'Private siDelta As Single
175: 'siI_mot = CSng(file.ReadLine(0))
177: 'siI_Getriebe = CSng(file.ReadLine(0))
178: 'siPaux0 = CSng(file.ReadLine(0))
179: 'siPnenn = CSng(file.ReadLine(0))
180: 'sinNenn = CSng(file.ReadLine(0))
181: 'sinLeerl = CSng(file.ReadLine(0))
182: 'file.ReadLine() 'Früher: Getr-Verl Kennfeld
183: 'siFr0 = CSng(file.ReadLine(0))
184: 'file.ReadLine() 'Früher: Getr-Verl Kennfeld verwenden Ja/Nein
185: 'sifGetr = CSng(file.ReadLine(0))
186: 'Achs-Übersetzung-TransLoss Parameter
187: 'line = file.ReadLine
188: 'siGetrI(0) = CSng(line(0))
189: 'If UBound(line) > 0 Then sGetrMaps(0).Init(MyPath, line(1))
192: 'iganganz = 0
193: 'For i = 1 To 16
194: ' line = file.ReadLine
195: ' siGetrI(i) = CSng(line(0))
196: ' 'Falls keine GetrModell-Parameter vorhanden Dummy-Belegung durch SetDefault
197: ' If UBound(line) > 0 Then sGetrMaps(i).Init(MyPath, line(1))
198: ' If Igetr(i) > 0.0001 Then iganganz = i
199: 'Next
200: 'sihinauf = CSng(file.ReadLine(0))
201: 'sihinunter = CSng(file.ReadLine(0))
202: 'silhinauf = CSng(file.ReadLine(0))
203: 'silhinunter = CSng(file.ReadLine(0))
204: 'sipspar = CSng(file.ReadLine(0))
205: 'sipmodell = CSng(file.ReadLine(0))
207: ''Schaltmodell-Verteilung
208: 'If (sipspar > 1) Then
209: ' sipspar = 1
210: 'ElseIf (sipspar < 0) Then
211: ' sipspar = 0
212: 'End If
213: 'If (sipmodell > 1) Then
214: ' sipmodell = 1
215: 'ElseIf (sipmodell < 0) Then
216: ' sipmodell = 0
217: 'End If
218: 'If ((sipspar + sipmodell) > 1.0) Then sipmodell = 1.0 - sipspar
220: 'Update 07.08.2012 (CO2 Demo)
221: 'Einzelne Nebenverbraucher
222: 'Do While Not file.EndOfFile
224: ' line = file.ReadLine
226: ' If line(0) = sKey.Break Then Exit Do
228: ' AuxID = UCase(Trim(line(0)))
230: ' If AuxPaths.ContainsKey(AuxID) Then
231: ' WorkerMsg(tMsgID.Err, "Multiple definitions of the same auxiliary type (" & line(0) & ")!", MsgSrc)
232: ' file.Close()
233: ' Return False
234: ' End If
236: ' AuxEntry = New cAuxEntry
238: ' AuxEntry.Type = line(1)
239: ' AuxEntry.Path.Init(MyPath, line(2))
241: ' AuxPaths.Add(AuxID, AuxEntry)
243: ' AuxDef = True
245: 'Loop
249: 'Zugkraftunterbrechung - Update 09.08.2012 (CO2 Demo)
250: 'Try
251: ' TracIntrSi = CSng(file.ReadLine(0))
252: 'Catch ex As Exception
253: ' WorkerMsg(tMsgID.Err, ex.Message, MsgSrc)
254: ' file.Close()
255: ' Return False
256: 'End Try
260: 'Cd Modus / Input Datei - Update 14.08.2012 (CO2 Demo)
273: 'Retarder - Update 02.10.2012 (CO2 Demo)
284: 'Axle configuration - Update 16.10.2012
316: '************************ Ende Einlesen ****************************
353: 'file.WriteLine("c Engine rotational inertia [kg*m^2]")
354: 'file.WriteLine(CStr(siI_mot))
357: 'file.WriteLine("c Gearbox rotational inertia [kg*m^2]")
358: 'file.WriteLine(CStr(siI_Getriebe))
359: 'file.WriteLine("c Auxiliaries base power demand (normalized) [-]")
360: 'file.WriteLine(CStr(siPaux0))
361: 'file.WriteLine("c Engine rated power [kW]")
362: 'file.WriteLine(CStr(siPnenn))
363: 'file.WriteLine("c Engine rated speed [rpm]")
364: 'file.WriteLine(CStr(sinNenn))
365: 'file.WriteLine("c Engine idling speed [rpm]")
366: 'file.WriteLine(CStr(sinLeerl))
367: 'file.WriteLine("c Transmission loss factor")
368: 'file.WriteLine(CStr(sifGetr))
369: 'file.WriteLine("c Transmission")
370: 'file.WriteLine("c Axle ratio [-], path to efficiency map file (optional)")
371: 'file.WriteLine(CStr(siGetrI(0)), sGetrMaps(0).PathOrDummy)
374: 'file.WriteLine("c Transmission gears: Ratio [-], path to efficiency map file (optional)")
375: 'For i = 1 To 16
376: ' file.WriteLine("c Gear " & i)
377: ' file.WriteLine(CStr(siGetrI(i)), sGetrMaps(i).PathOrDummy)
378: 'Next
379: 'file.WriteLine("c Gear shift behaviour:")
380: 'file.WriteLine("c Gearshift model (Version fast driver)")
381: 'file.WriteLine("c shift up at ratio rpm/rated rpm in actual gear greater than")
382: 'file.WriteLine(CStr(sihinauf))
383: 'file.WriteLine("c shift down when rpm/rated rpm in lower gear is higher than")
384: 'file.WriteLine(CStr(sihinunter))
385: 'file.WriteLine("c Gearshift model (Version economic driver)")
386: 'file.WriteLine("c shift up at ratio rpm/rated rpm in higher gear greater than")
387: 'file.WriteLine(CStr(silhinauf))
388: 'file.WriteLine("c Shift down when ratio rpm/rated rpm in actual gear is lower than")
389: 'file.WriteLine(CStr(silhinunter))
390: 'file.WriteLine("c Share of version economic driver (0 to 1)")
391: 'file.WriteLine(CStr(sipspar))
392: 'file.WriteLine("c Share of version mixed model (0 to 1)")
393: 'file.WriteLine(CStr(sipmodell))
395: 'file.WriteLine("c Auxiliaries")
396: 'For Each AuxEntryKV In AuxPaths
397: ' file.WriteLine(Trim(UCase(AuxEntryKV.Key)) & "," & AuxEntryKV.Value.Type & "," & AuxEntryKV.Value.Path.PathOrDummy)
398: 'Next
399: 'file.WriteLine(sKey.Break)
401: 'Zugkraftunterbrechung (Update 09.08.2012 - CO2 Demo)
402: 'file.WriteLine("c Traction Interruption")
403: 'file.WriteLine(CStr(TracIntrSi))
405: 'Cd Modus / Input Datei (Update 14.08.2012 - CO2 Demo)
409: 'Retarder (Update 02.10.2012 - CO2 Demo)
417: 'Axle configuration - Update 16.10.2012
451: 'Fehlermeldung innerhalb AuxInit
454: 'Cd-Init
457: 'Transmission Loss Maps
465: 'Retarder
468: 'Fr0
492: 'Dim n_norm As Double
493: 'Dim Pe_norm As Double
531: 'Getriebe-Nenndrehzahl
532: 'n_norm = CSng(file.ReadLine(0))
534: 'Getriebe-Nennleistung
535: 'Pe_norm = CSng(file.ReadLine(0))
537: 'Wenn nix angegeben: Motor-Nennleistung und Nenndrehzahl zur Normierung
538: 'If n_norm < 0.0001 Then
539: ' n_norm = sinNenn
540: ' Pe_norm = siPnenn
541: 'End If
551: 'PHEM: n, PeIn, PeOut => x=n, y=PeOut, z=PeIn
552: 'PHEM: GBmap0.AddPoints(CDbl(line(0)) * n_norm, CDbl(line(2)) * Pe_norm, CDbl(line(1)) * Pe_norm)
553: 'VECTO: n, M_in, M_loss => x=n, y=PeOut, z=PeIn
619: 'Interpolieren mit Original Werten
624: 'Falls Fehler: Extrapolation versuchen
626: 'Suche nach nächstgelegenen Kennfeldpunkt
640: 'Wirkungsgrad
644: 'Antrieb => Antrieb
651: 'Schlepp => Antrieb: ERROR!
661: 'Antrieb => Schlepp: ERROR!
668: 'Schlepp => Schlepp
677: 'Mit Wirkungsgrad PeIn für original PeOut ausrechnen
720: 'Interpolieren mit Original Werten
725: 'Falls Fehler: Extrapolation versuchen
727: 'Suche nach nächstgelegenen Kennfeldpunkt
741: 'Wirkungsgrad
745: 'Antrieb => Antrieb
750: 'Schlepp => Antrieb: ERROR!
760: 'Antrieb => Schlepp: ERROR!
767: 'Schlepp => Schlepp
774: 'Mit Wirkungsgrad PeIn für original PeOut ausrechnen
838: 'Meldung in Readfile()
934: 'Falls Vair-Vorgabe in DRI aber nicht CdType= CdOfBeta dann Warnung
946: 'Falls konstanter Cd-Wert dann is nix zu tun
949: 'Inputdatei einlesen
996: 'Extrapolation für x < x(1)
1014: 'Extrapolation für x > x(imax)
1024: 'Interpolation
1042: 'Inputdatei einlesen
1104: 'Extrapolation für x < x(1)
1116: 'Extrapolation für x > x(imax)
1120: 'Interpolation
>>> cBatModel.vb
21: 'Aktuelle Daten (d.h. zum aktuellen (zuletzt berechneten) Zeitschritt)
47: 'TODO...
55: 'Maximal zulässige Leistung zum Antreiben (Batterie entladen) [kW] Vorzeichen positiv (PHEM Standard)
62: 'Maximal zulässige Leistung zum Generieren/Rekuperiren (Batterie laden) [kW] Vorzeichen negativ (PHEM Standard)
72: '--------------------------------- ~Batteriemodell Renhart~ ---------------------------------
74: 'Methode zur Initialisierung - wird einmal aufgerufen
82: 'Abbruch wenn's Datei nicht gibt
91: 'Einlesen der Parameter:
132: ' Berechnung der Batteriespannung bei TempBat und SOC(0), Entladekurve
138: ' Berechnung der Batteriespannung bei TempBat und SOC(0), Ladekurve
148: 'Methode zur Berechnung der zulässigen Leistung - sekündlicher Aufruf
168: 'PmaxEntl = -SOC_Kap * 3600 * (SOC(jz - 1) - SOC_MIN)
169: 'PmaxLad = SOC_Kap * 3600 * (SOC_MAX - SOC(jz - 1))
174: 'Methode zur Berechnung der Batterieveluste und SOC für geg. Leistung - sekündlicher Aufruf
190: ' MsgBox("negativ" + Str(Perf))
193: 'MsgBox("positiv" + Str(Perf))
196: 'MsgBox(Str(jz) + ": Betrag von " + Str(Perf) + " ist kleiner gleich " + Str(epsilon))
201: 'Input:
202: ' Perf ...geforderte Leistung. Bedingung: PgMAX < Perf < PaMAX [kW]
203: ' alle Paramer die in Bat_Init bestimmt/eingelesen wurden
204: ' jz ...Aktueller Zeitschritt
205: ' Alle Arrays von Zeitschritt 1 bis jz-1
207: 'Output:
208: ' SOC(jz)
209: ' Ubat(jz)
210: ' Ibat(jz)
211: ' PbatV(jz)
213: '-------------TEST-------------
214: 'PbatV(jz) = 0.2 * Math.Abs(Perf)
215: 'SOC(jz) = SOC(jz - 1) + Perf / 5000
216: 'Ubat(jz) = (SOC(jz) - SOC_MIN) / (SOC_MAX - SOC_MIN) * 80 + 120
217: 'Ibat(jz) = Perf / Ubat(jz)
218: '-------------TEST-------------
225: 'Übergibt PeBat für geg. PiBat (Vorzeichen nach PHEM)
247: '----------------------------------------- PRIVATE ------------------------------------------
250: 'Batterie entladen
256: 'Temperaturfunktion
259: 'Ri bestimmen abhängig von Temperatur
262: 'Spannung bestimmen aus SOC und Spannungskurve
265: 'Strom berechnen
268: 'Batterieverluste
271: 'Batterietemperatur
277: 'SOC berechnen
280: 'Korrektur für den aktuellen Zeitschritt
287: 'Batterie laden
294: 'Temperaturfunktion
297: 'Ri bestimmen abhängig von Temperatur
300: 'Spannung bestimmen aus SOC und Spannungskurve
303: 'Strom berechnen
306: 'Batterieverluste
309: 'Batterietemperatur
315: 'SOC berechnen
318: 'Korrektur für den aktuellen Zeitschritt
325: 'Batterie nix tun
327: 'Dim SocProz As Single ' lokal, SOC in Prozent
328: 'Dim FunkTemp As Single ' Temp-Funktion für Ri(Temp)
329: 'Dim U0_L As Single ' Ubatt(SOC(T), Ibatt=0), Entladekurve
330: 'Dim Ri_T As Single ' Ri bei Temperatur T, lokal
336: ' ALT: Ubat(jz) = Ubat(jz - 1)
340: 'Übergibt PeBat beim Laden mit PEmot (Vorzeichen nach Renhart)
362: 'Übergibt PeBat beim Entladen mit PEmot (Vorzeichen nach Renhart)
>>> cMOD.vb
19: 'Leistungen
36: 'Fahrzeug
192: 'Zykluslänge definieren (Um 1s kürzer als Original weil Zwischensekunden)
195: 'Hier wird der eigentliche Zyklus eingelesen:
198: 'Drehzahl-Vorgabe
206: 'Drehzahl
211: 'Winkelbeschleunigung
218: 'Em-Komponenten mitteln (Zwischensekunden) für KF-Erstellung oder Eng-Analysis
227: 'EXS Vorgaben mitteln
238: 'Aux Vorgaben mitteln und Aux-Listen falls Aux in Dri und Veh vorhanden
258: 'Zykluslänge definieren: Gleiche Länge wie Zyklus (nicht reduziert weil keine "Zwischensekunden")
261: 'Hier wird der eigentliche Zyklus eingelesen:
264: 'Drehzahl-Vorgabe
272: 'Drehzahl
277: 'Winkelbeschleunigung
308: 'Dim TC0 As List(Of Single)
315: '*********** Initialisierung / Datei öffnen **************
343: '*********** Settings **************
353: '********** Key-Listen ************
370: '*** ID-Zeile (Nur ADVANCE)
385: '*** Header & Units ****************************************************************************
421: 'Auxiliaries
431: 'ADVANCE-spezifisch
479: 'Berechnete Dynamikparameter (Diff zu Kennfeld)
480: 'If TC.Calculated Then
481: ' For Each TcKey In TcList
482: ' s.Append(Sepp & fMapCompName(TcKey))
483: ' sU.Append(Sepp & "-")
484: ' Next
485: 'End If
488: 'In Datei schreiben
489: ' Header
491: ' Units
497: '*** Werte *************************************************************************************
505: 'Zeit
510: 'Strecke
514: 'Ist-Geschw.
517: 'Soll-Geschw.
520: 'Beschl.
523: 'Steigung
532: 'Drehzahl
535: 'Leistung
538: 'Drehzahl normiert
541: 'Leistung normiert
546: 'Drehzahl in U/min
549: 'EM-Leistung in kW
552: 'Effektive Batterieleistung
555: 'Innere Batterieleistung
558: 'Batteriespannung
561: 'Batteriestrom
564: 'SOC
569: 'Drehzahl
572: 'Leistung
575: 'Drehzahl normiert
578: 'Leistung normiert
581: 'Volllast und Schlepp
592: 'Leistung an Kupplung
600: 'Gang
603: 'Getriebeverluste
606: 'Diff-Verluste
609: 'Retarder-Verluste
612: 'PaEng
615: 'PaGB
618: 'Pa Veh
621: 'Roll..
624: 'Luft..
627: 'Steigung..
630: 'Aux..
633: 'Radleistung
636: 'Bremse
639: 'Auxiliaries
646: 'ADVANCE-spezifisch
649: 'X
652: 'Y
655: 'StrId
662: 'Final-Emissionen (Tailpipe)
680: 'Roh-Emissionen
683: 'TC-Emissionen
686: 'AT-Emissionen (EXS)
694: 'Berechnete Dynamikparameter (Diff zu Kennfeld)
695: 'If TC.Calculated Then
696: ' For Each TcKey In TcList
697: ' TC0 = MODdata.TC.TCcomponents(TcKey)
698: ' s.Append(Sepp & TC0(t))
699: ' Next
700: 'End If
702: 'In Datei schreiben
716: 'Errors/Warnings die sekündlich auftreten können
731: 'Reset-Hierarchie:
732: ' ResetAll
733: ' DesMaxExtr
734: ' -GeschRedReset
735: ' CdExtrapol
736: ' -PxReset
737: ' TrLossMapExtr
738: ' AuxMapExtr
739: ' AuxNegative
740: ' FLDextrapol
742: 'Kompletter Reset (am Beginn jedes Sekundenschritts)
748: 'Reset von Errors nach Geschw.-Reduktion (innerhalb Iteration)
755: 'Reset von Errors die mit der Leistungsberechnung zu tun haben (nach Schaltmodell durchzuführen)
763: 'Errors ausgeben
>>> cPower.vb
11: 'Settings
21: 'Sekündliche Daten
33: 'Zugkraftunterbrechung
87: 'Rekuperation
88: ' Projekt HERO - BMW Mini Hybrid
89: ' Standard Mini One D Radstand 2467 mm
92: 'Annahme für Schwerpunkthöhe
93: ' nach http://www.colliseum.net/wiki/Schwerpunkth%C3%B6he
94: ' X = 0.2 * m / 1000 = h/R
95: ' mit R = 2.467 [m] und m = 1335 [kg]
174: 'BAT
177: 'STE
181: 'EMO
189: 'Bat einlesen
196: 'Maximale effektive EM-Leistung beim Antreiben abhängig von Überlast und Batteriezustand
201: 'Basis: Volllastkurve
204: 'Falls Überlast möglich: auf ÜL-Leistung hochskalieren
207: '=> PeFLD = maximale EM-Leistung nach FLD und ÜL
209: 'PeMax aus PeBatMax berechnen
212: '=> PeBAT = maximale EM-Leistung nach Batterie
214: 'Übergeben wird maximal die Leistung die die Batterie erlaubt
219: 'Maximale effektive EM-Leistung beim Laden abhängig von Überlast und Batteriezustand
224: 'Basis: Schleppkurve
227: 'Falls Überlast möglich: auf ÜL-Leistung hochskalieren
230: '=> PeFLD = maximale EM-Leistung nach FLD und ÜL
232: 'PeMax aus PeBatMax berechnen
235: '=> PeBAT = maximale EM-Leistung nach Batterie
237: 'Übergeben wird maximal die Leistung die die Batterie erlaubt
244: 'Umrechnung von PeBat(=PiEM) auf PeEM
256: 'Wenn Vorzeichen von x oder y nicht gleich Vorzeichen von xA(i) oder yA(i) dann wird Zeile i übersprungen
281: 'Umrechnung von PeEM auf PeBat(=PiEM)
293: 'Wenn Vorzeichen von x oder y nicht gleich Vorzeichen von xA(i) oder yA(i) dann wird Zeile i übersprungen
318: 'Maximale Rekup-Leistung
324: 'Falls unter V-Untergrenze dann gleich Null übergeben
327: 'Radaufstandskraft
334: 'Vorzeichen "sollte" immer + sein
337: 'Längskraft am Reifen
340: 'Sicherheitsfaktor mitnehmen
343: 'Leistung
346: 'Falls unter V-Obergrenze dann linear runter skalieren
353: ''PeEM-Max reduzieren bis es die Batterie aushaltet
354: 'Private Function RedPiToPbatMax(ByVal PeEM As Single) As Single
356: ' Dim PiEM As Single
358: ' PiEM = EMO.PiEM(PeEM)
360: ' Do While PiEM > PeBatMax
362: ' PeEM *= 0.99
363: ' PiEM = EMO.PiEM(PeEM)
365: ' Loop
367: ' Return PiEM
369: 'End Function
371: ''PeEM-Min reduzieren bis es die Batterie aushaltet
372: 'Private Function RedPiToPbatMin(ByVal PeEM As Single) As Single
374: ' Dim PiEM As Single
376: ' PiEM = EMO.PiEM(PeEM)
378: ' Do While PiEM < PeBatMin
380: ' PeEM *= 0.99
381: ' PiEM = EMO.PiEM(PeEM)
383: ' Loop
385: ' Return PiEM
387: 'End Function
406: 'Start/Stop Steuerung
444: 'Abbruch wenn keine Geschw. gegeben
450: ' Initialisieren
486: 'Schaltpunkte für NEDC/FTP Schaltung
521: 'Schaltparameter initialisieren
523: 'Standard
533: 'Theoretische Höchstgeschwindigkeit [m/s] - gesetzt auf Geschw. bei 1.2 x NennDrehzahl im höchsten Gang
539: '*********************************** Zeitschleife ****************************************
550: 'Sekundäre Progressbar
553: ' Zustand bestimmen
556: 'Reset der sekündlichen Errors
559: 'Geschw. / Beschl. berechnen-------------------
560: 'Jetzt durch DRI-Klasse
564: 'Wenn Geschw. über theoretischer Höchstgeschw. => Reduzieren
571: 'a_DesMax
574: 'Check ob Beschleunigung zu hoch
593: '- Verzögerung limitieren ---------------------------
594: 'Else
595: ' 'Check ob Verzögerung zu hoch
596: ' amax = GEN.aDesMin(Vist)
597: ' If amax > -0.001 Then
598: ' WorkerMsg(tMsgID.Err, "aDesMax(dec) invalid! v= " & Vist & ", aDesMax(dec) =" & amax, MsgSrc)
599: ' Return False
600: ' End If
601: ' If aist < amax - 0.0001 Then
602: ' Vh.SetSpeed0(jz, Vh.V0(jz) + amax)
603: ' GoTo lbGschw
604: ' End If
614: 'Aus Leistg-----
617: 'Vh.SetSpeed(jz, 0)
618: 'GoTo lbGschw
624: 'Fahrzustand bestimmen-------------------------
649: 'Schneller Check ob Leistung viel zu hoch
656: '************************************ Gangwahl ************************************
675: 'Checken ob Kupplung schleift (wichtig für Schaltmodell):
683: 'Gang-Vorgabe
686: 'Drehzahlvorgabe
692: 'Gang nach Geschwindigkeit
696: 'Schaltmodell
703: 'Muss hier nochmal zurück gesetzt werden weil im Schaltmodell kann (und darf) das passieren
709: 'Schaltmodell/Vorgabe kann Clutch öffnen
720: ' Wichtige Checks
723: 'Checken ob Geschwindigkeit reduzieren
724: ''If GeschwRed Then GoTo lbGeschwRed <= stattdessen neues Konzept: Leistung wird "normal" berechnet und erst später überprüft ob Pe > Pmax... ?
726: 'Checken ob Kupplung offen:
727: ''bKupplOffen = (bStehen Or Gang(jz) = 0) <= bereits durch Clutch bekannt
729: 'Falls konventionell dann ICE-Kupplung = Hauptkupplung
730: ''bICEKupOffen = bKupplOffen <= Brauch i nix mehr
732: 'Falls vor Gangwahl festgestellt wurde, dass nicht KupplSchleif, dann bei zu niedriger Drehzahl runterschalten:
737: 'Checken ob Leerlauf obwohl Leistung > 0
738: ' wenn Leistung vor Diff > 0.1% von Nennleistung dann Korrigieren!
759: '************************************ Drehzahl ************************************
761: '*** Wenn Drehzahl vorgegeben dann wird der nächste Block übersprungen ***
766: 'Falls Start/Stop dann wird gleich bei nn < -0.05 auf nU = 0 gesetzt
784: 'Drehzahlabfall beim Auskuppeln
806: 'Leistungsabfall limitieren auf Pe(t-1) minus 75% von (Pe(t-1) - Pschlepp)
807: ' aus Auswertung ETC des Motors mit dem dynamische Volllast parametriert wurde
808: ' Einfluss auf Beschleunigungsvermögen gering (Einfluss durch Pe(t-1) bei dynamischer Volllast mit PT1)
809: ' Luz/Rexeis 21.08.2012
810: ' Iterations-Schleife: 01.10.2012
813: 'original: M = -Pmin * 1000 * 60 / (2 * Math.PI * ((nU + nUx) / 2))
818: '01.10.12 Luz: Drehzahl darf nicht höher werden als zuvor
825: 'TODO: Auschalten?!
838: '*** Beginn: Drehzahl-Check
840: 'Checken ob Drehzahl zu hoch! => Hochschalten
846: 'Checken ob Drehzahl zu niedrig mit geschlossener Kupplung
863: '************************************ Motor-Zustand bestimmen ************************************
864: ' nn ist ab hier fix!
867: 'Nebenverbrauch bestimmen (aus VEH und DRI)
870: 'ICE-Trägheit
875: 'Nicht optimal da jz-1 bis jz nicht der richtige Zeitraum
880: 'Drehzahlvorgabe
887: 'Gesamt-Motorleistung
888: ' => Pantr
889: ' => P
890: ' => Pkup
915: 'EngState
957: '*************** Leistungsverteilung usw. ******************
959: 'Volllast- / Schleppkurve
965: 'Drehzahl korrigieren
979: 'Falls Pmax < 0 oder Pmin > 0 dann Abbruch mit Error!
990: ' => Pbrake
1009: 'VKM an Schleppkurve
1012: 'Forwärtsrechnung bis Rad (PvorD)
1028: 'Check ob Abbruch (vor Geschw.Red-Iteration sonst kann sichs aufhängen)
1031: 'Check ob P über Volllast => Geschw.-Reduktion
1046: 'FEHLER: Geschw.-Red. bringt nix?!...
1051: 'FEHLER: Motor nicht in Antrieb ...kann nicht sein?!
1059: 'Zugkraftunterbrechung
1091: '------------------------- PNR --------------------------------------------------------------------
1093: ' Sekunde abschließen
1095: 'Start / Stop - Aktivierung-Geschw. Steuerung
1110: 'Modalwerte-Felder schreiben
1141: 'Zugkraftunterbrechung
1172: 'Meldungen (Abbruch falls Error)
1185: '*********************************** Zeitschleife ENDE ***********************************
1188: 'Meldungen (wenn nicht ADVANCE)
1199: 'CleanUp
1225: 'Abbruch falls Leistung/Drehzahl nicht gegeben
1236: 'Drehzahlen vorher weil sonst scheitert die Pmr-Berechnung bei MODdata.nU(t + 1)
1238: 'Modalwerte-Felder schreiben
1239: ' MODdata.Pe wird unten belegt
1244: 'Leistung berechnen
1247: 'Sekundäre Progressbar
1250: 'Reset der sekündlichen Errors
1253: 'ALT und falsch weil Zeit nicht verschoben: P_mr(jz) = 0.001 * (I_mot * 0.0109662 * (n(jz) * nnenn) * nnenn * (n(jz) - n(jz - 1))) / Pnenn
1260: 'Leistung aus Zyklus korrigiert um P_clutch
1263: 'Drehzhal aus Zyklus => Durch CycleInit bestimmt
1264: 'Falls Drehzahl unter Leerlauf wir Motor als abgestellt angenommen
1276: 'Falls Pmax < 0 oder Pmin > 0 dann Abbruch mit Error!
1285: 'FLD Check
1314: 'Meldungen
1336: 'Start/Stop Steuerung
1367: 'WegKorrektur
1381: 'Abbruch wenn keine Geschw. gegeben
1387: ' Initialisieren
1415: 'WG-Kennfeld aus MAP übernehmen und Pi-Liste berechnen
1432: 'Schaltpunkte für NEDC/FTP Schaltung
1449: 'Theoretische Höchstgeschwindigkeit [m/s]
1457: '*********************************** Zeitschleife ****************************************
1465: 'Sekundäre Progressbar
1468: ' Zustand bestimmen
1472: 'Geschw. / Beschl. berechnen-------------------
1473: 'Jetzt durch DRI-Klasse
1477: 'Wenn Geschw. über theoretischer Höchstgeschw. => Reduzieren
1484: 'Aus Leistg-----
1494: 'Fahrzustand bestimmen-------------------------
1519: 'Maximal zulässige Batterieleistung
1524: '************************************ Gangwahl ************************************
1529: 'Checken ob Kupplung schleift (wichtig für Schaltmodell):
1537: 'Gang-Vorgabe
1540: 'Drehzahlvorgabe
1546: 'Gang nach Geschwindigkeit wird hier nicht unterstützt
1550: 'Schaltmodell
1553: 'EV: Kein Leerlauf wegen Rekuperation
1566: 'Falls Rekuperation laut Radleistung möglich: PrekupMax berechnen
1568: 'Maximale Rekuperations-Leistung berechnen (abh. von Radlast/Reibkoef.)
1573: 'Falls vor Gangwahl festgestellt wurde, dass nicht KupplSchleif, dann bei zu niedriger Drehzahl runterschalten:
1578: 'Checken ob Leerlauf obwohl Leistung > 0
1579: ' wenn Leistung vor Diff > 0.1% von Nennleistung dann Korrigieren!
1591: '************************************ Drehzahl ************************************
1593: '*** Wenn Drehzahl vorgegeben (Gemess = 2) dann wird der nächste Block übersprungen ***
1601: 'Drehzahlabfall beim Auskuppeln
1622: '*** Beginn: Drehzahl-Check wenn keine Vorgabe
1624: 'Checken ob Drehzahl zu hoch! => Hochschalten
1630: 'Checken ob Drehzahl zu niedrig mit geschlossener Kupplung
1642: '************************************ Motor-Zustand bestimmen ************************************
1643: ' nn ist ab hier fix!
1646: 'Nebenverbrauch bestimmen (aus VEH und DRI)
1649: 'MotorTrägheit
1654: 'Nicht optimal da jz-1 bis jz nicht der richtige Zeitraum
1659: 'Drehzahlvorgabe
1666: 'Gesamt-Motorleistung
1667: ' => Pantr
1668: ' => P
1669: ' => Pkup
1694: 'EngState
1707: '*************** Leistungsverteilung usw. ******************
1709: 'Volllast- / Schleppkurve
1722: ' => Pbrake
1729: 'Maximale Rekuperations-Leistung berechnen (abh. von Radlast/Reibkoef.)
1730: 'PrekupMax = fPrekupMax()
1732: 'Falls RekupMax überschritten muss Pe neu berechnet werden
1735: 'PbrakeRek = Leistung die zusätzlich mechanisch gebremst werden muss wegen Überschreitung von RekupMax
1736: 'wird schon oben nach Gangwahl erledigt: PbrakeRek = Pantr - PrekupMax
1738: 'Neue EM-Leistung
1743: 'Check ob Leistung aufgenommen werden kann (abh. von FLD und Batterie). Bremsleistung berechnen.
1752: 'RekupMax-Bremsleistung dazu addieren
1764: 'Check ob P über Volllast => Geschw.-Reduktion
1768: 'Falls Pmax=0 muss Batterie leer sein
1782: 'FEHLER: Geschw.-Red. bringt nix?!...
1790: '------------------------- PNR -------------------------
1792: ' Sekunde abschließen
1797: '******************** EM **************************
1805: '***************** Batterie ***********************
1817: '****** Modalwerte-Felder schreiben **************
1859: 'Meldungen
1865: '********************************* Zeitschleife ENDE *************************************
1869: 'Meldungen (nicht ADV)
1887: 'TODO.... Fehlermeldung etc
1893: 'CleanUp
1933: 'WegKorrektur
1941: 'HEV
2033: 'Abbruch wenn keine Geschw. gegeben
2039: ' Initialisieren
2062: 'Schaltpunkte für NEDC/FTP Schaltung
2097: 'Schaltparameter initialisieren
2106: 'Theoretische Höchstgeschwindigkeit [m/s]
2109: 'HEV
2127: '*********************************** Zeitschleife ****************************************
2134: 'Sekundäre Progressbar
2137: ' Zustand bestimmen
2141: 'Geschw. / Beschl. berechnen-------------------
2142: 'Jetzt durch DRI-Klasse
2146: 'Wenn Geschw. über theoretischer Höchstgeschw. => Reduzieren
2153: 'Aus Leistg-----
2156: 'Vh.SetSpeed(jz, 0)
2157: 'GoTo lbGschw
2164: '*************************** Fahrzustand bestimmen *****************************
2166: 'Fahrzustand bestimmen-------------------------
2184: '************************************* HEV *************************************
2238: '********************* PvorD = PanRad ************************
2249: '************************************ Gangwahl ************************************
2254: 'Checken ob Kupplung schleift (wichtig für Schaltmodell):
2262: 'Gang-Vorgabe
2265: 'Drehzahlvorgabe
2271: 'Gang nach Geschwindigkeit
2274: 'Schaltmodell
2289: 'Nebenverbrauch bestimmen (aus VEH und DRI)
2292: 'HEV-Teil kommt erst nach Gangwahl weil Getr./Diff-Loss den benötigt und EM zwischen ICE und GB liegt
2300: 'Nebenverbrauch bestimmen (aus VEH und DRI)
2306: 'Wenn Drehzahl vorgegeben
2309: 'Sonst aus Vist und Gear
2313: 'Normierte Drehzahl
2316: 'Maximale Leistung der ICE
2325: 'Nebenverbrauch bestimmen (aus VEH und DRI)
2328: 'Maximal zulässige Batterieleistung
2333: 'Maximale EM-Leistung. (Batterieleistung limitiert EM-Leistung)
2344: 'Leistung bis ICE/EM (= an Kupplung) berechnen
2350: 'Leistung an Kupplung
2353: 'PaMot
2355: 'Drehzahlvorgabe
2363: '***** Notwendige Leistung im EV-Betrieb
2364: ' Leistung an Kupplung plus EM-Trägheit
2366: '! ACHTUNG: Wenn ICE eingekuppelt dann muss PaICE auch noch dazu ! => Später bei Leistungsverteilung
2368: '***** Notwendige Leistung im ICE+EM-Betrieb
2371: '***** Notwendige Leistung im ICE-Betrieb
2374: '***** Check ob EV möglich
2375: ' => Bat <> Low
2376: ' => EM-Leistung >= Antriebsleistung
2377: ' => v < vEVo
2380: '***** Falls EV möglich: Check ob kritisch
2383: '***** Check ob Assist / LPI / ICEonly möglich und ob Boost erforderlich
2384: ' => ICE-Ein muss möglich sein (ICElock)
2387: 'Assist / Boost
2388: ' => SOC > MIN
2391: 'Boost
2392: ' => ICE an Volllast
2396: 'LPI
2397: ' => Bat <> High
2400: 'ICEonly
2405: '***** Check ob Rekup möglich
2411: '********************************* Fahrzustands-Unterscheidung *********************************
2417: '***************************** Betriebsmodus Vor-Auswahl ********************************
2421: 'Wenn Boost notwendig (und möglich), dann keine Wahl
2426: 'EV Mode wenn...
2435: 'Wenn EV & ICE nicht möglich dann EV-Modus bis ICE wieder startet.... sollte nie vorkommen weil keine ICE-Abschaltung wenn wenig SOC
2445: 'Falls Einsatz von HEV-Strategie:
2446: ' Ke's berechnen
2449: '************** Optimale Ke's berechnen und Leistungen dazu ************
2451: 'Emission/Verbrauch in g/h
2455: '******************************* KeSTE *********************************
2458: 'KeSTE aus STE-Kurve...
2463: '******************************** KeA **********************************
2476: 'Unter Max-Pe bleiben
2479: 'Wenn Pvkm negativ: Berechnung für reinen EM-Betrieb
2482: ' ...nicht gültig falls Batlvl <= Low oder ICEonLock
2485: 'EM-Leistung = P-Antrieb
2489: 'Verbrauchseinsparung in g/h
2492: 'Abbruch nach dieser Berechnung (mehr EM-Leistung macht keinen Sinn da hier schon rein elektrischer Antrieb)
2497: 'Verbrauchseinsparung in g/h
2502: 'Leistung nach E-Motor in kW
2513: 'Leistung in Batterie
2518: 'Div/0 und Vorzeichen-Check
2521: 'KeA berechnen in kWh/kg
2524: 'Check ob Optimum
2532: 'Abbruch falls reiner EM-Betrieb schon erreicht
2551: '******************************** KeG **********************************
2565: 'Falls Pvkm an Volllast:
2568: 'Pvkm auf Volllast setzen
2571: 'Elektromotor in Generatorbetrieb (Pges1 - Pvkm < 0)
2574: 'Abbruch nach diesem Durchgang weil mehr Generieren nicht möglich
2579: 'Zusatzverbrauch in g/h
2582: 'Leistung nach E-Motor in kW
2593: 'Leistung in Batterie
2598: 'Div/0 und Vorzeichen-Check
2601: 'KeG berechnen in kWh/kg
2604: 'Check ob Optimum
2613: 'Abbruch falls VKM-Volllast schon erreicht
2622: 'Abstand Eta zu Kurve berechnen
2632: '********************** KeSTE, Deltas auswerten ************************
2661: '************************* Betriebsstrategie ***************************
2664: 'LastHEVmode-Check
2690: '** Ke-Modus einsetzen wenn...
2693: '...Gleicher Modus wie vorher, Fahrzustands-Änderung oder Letzter Modus unmöglich
2698: '...wenn Motor nicht läuft
2703: '...wenn PeICE-Leistungsänderung mit neuen Modus am geringsten
2728: '****************************** Leistungen je nach Modus verteilen **************************
2735: 'EM übernimmt gesamte Leistung
2738: 'Geschw. reduzieren falls Leistung zu hoch für EM oder Bat
2744: 'Falls ICElock oder EVcrit dann ICE ein (aber ausgekuppelt)
2758: 'ICE übernimmt gesamten Antrieb
2826: 'ACHTUNG: ICEclutch ist standardmäßig 'False' deshalb hier keine weiteren Statements mehr
2828: 'Maximale Rekup-Leistung berechnen
2833: 'Mit PrekupMax auf EM/ICE zurück rechnen
2842: 'Den Rest gleich auf die Bremse
2847: 'Default für ICE (damit man sich die "Else"-Statements spart)
2855: 'EM-Leistung berechnen
2860: 'EM-Leistung neu
2863: 'Restliche Leistung an ICE
2867: 'Falls ICE über Schleppkurve
2870: 'ICE-Leistung neu
2873: 'Rest an Bremse
2880: 'ICE in Leerlauf (weil On-Lock)
2889: 'EM-Leistung berechnen
2894: 'EM-Leistung neu
2899: 'ICE im Schubbetrieb
2903: 'Falls ICE über Schleppkurve
2906: 'ICE-Leistung neu
2909: 'Rest an Bremse
2932: 'ICE im Schubbetrieb
2936: 'Falls ICE über Schleppkurve
2939: 'ICE-Leistung neu
2942: 'Rest an Bremse
2962: 'Leistung Null
2973: '****************************** Clutch und Drehzahlen *******************************
2976: 'Haupt-Kupplung => muss hier schon bekannt sein!
2977: 'If ICEclutch Then
2978: ' If PeICE > 0 And fnn(Vist, Gear, False) < Kuppln_norm Then
2979: ' Clutch = tEngClutch.Slipping
2980: ' Else
2981: ' Clutch = tEngClutch.Closed
2982: ' End If
2983: 'ElseIf EMclutch Then
2984: ' Clutch = tEngClutch.Closed
2985: 'Else
2986: ' Clutch = tEngClutch.Opened
2987: 'End If
2989: '************************************ Drehzahl ICE ************************************
3034: '************************************ Drehzahl EM *************************************
3042: '********************************* EM => Batterie *************************************
3055: '------------------------- PNR -------------------------
3060: ' Sekunde abschließen
3064: 'ICE-Lock
3065: ' ACHTUNG: Die beiden If-Schleifen nicht verbinden weil LockCount sich sonst verzählt
3082: 'Modalwerte-Felder schreiben
3130: 'Meldungen
3136: '********************************* Zeitschleife ENDE **************************************
3139: 'Meldungen (Nicht ADVANCE)
3150: 'CleanUp
3255: '-----------------------------------Sekunde 1--------------------------------------
3256: 'Erste Sekunde: Gang finden / Initialisierung
3283: '--------------------------------Ab Sekunde 2--------------------------------------
3285: '---------Startwerte---------
3286: 'gangX = Letzter Gang d.h. Ausgangsbasis für Schaltmodell
3293: 'Kuppelschleif-check << Schon passiert in Power.Calc
3294: ''If bPplus And fn_norm(1) < Kuppln_norm Then bKupplSchleif = True
3296: '-------------------Gang für die nächsten 6 Sekunden berechnen---------------------
3303: '-----------Schaltfunktion----------
3330: 'Gelöscht LUZ 13.07.10: If (Pjetzt > 1) Then Pjetzt = 1.0
3331: 'If ix = jpm Then Pvorher = Pjetzt
3341: 'Drehzahlschranke Hinaufschalten n_normiert (leerl = 0, Nenndrehzahl = 1)
3344: 'Drehzahlschranke Hinunterschalten n_normiert (leerl = 0, Nenndrehzahl = 1)
3346: 'Gelöscht LUZ 13.07.10: If (nnsaufi > 0.85) Then nnsaufi = 0.85
3347: 'Umrechnung in hier verwendete Drehzahleinheit (n/n_nenn):
3350: 'Drehzahl mit letzten Gang (gangX)
3351: 'nx = fnU(Vist, gangX, Clutch = tEngClutch.Slipping) / VEH.nNenn
3354: ' ''Schalten Maximal alle 2 Sekunden schalten zulaessig:
3357: 'Ueberpruefen ob hinunterschalten, nur wenn Geschw. abnimmt oder leistung zunimmt
3366: 'Ueberpruefen ob hinaufschalten, nur wenn Geschw. zunimmt oder leistung abnimmt
3374: 'Gangwahl korrigieren
3383: 'Kein Leerlauf wenn Leistung > 0
3388: 'Drehzahl neu
3389: ''nn = fnn(Vist, gangX, Clutch = tEngClutch.Slipping)
3392: 'Überprüfe ob Gang innerhalb der Leistungs-/Drehzahl Grenzen. Schleppbetrieb wird nicht beachtet
3406: 'Speichere Gänge in Feld für spätere Checks
3418: 'Gang wird übernommen
3426: 'Gang-Verlauf hinzufügen
3430: '--------------------------------Checks Teil 1-------------------------------------
3431: 'Checks zur Saeuberung unsinniger Schlatmanoever:
3433: ''Unterteilung in "iphase(j)" Beschleunigungs- (=1), Verzoegerungs- (=2) und Cruise (=3) -Phasen:
3434: 'iphase = 0
3435: 'Select Case (beschl(jz - 2) + beschl(jz - 1) + beschl(jz)) / 3
3436: ' Case Is >= 0.125
3437: ' iphase = 1
3438: ' Case Is <= -0.125
3439: ' iphase = 2
3440: ' Case Else
3441: ' iphase = 3
3442: 'End Select
3443: ' ============>> Schon bestimmt durch VehState0
3445: 'Suche nach letztem Gangwechsel
3456: 'Schaltvorgaenge max. alle 3 Sekunden zulaessig:
3462: 'Cruise-Phasen:
3463: 'Solange Geschwindigkeitsaenderung seit letztem Gangwechsel unter 6% und Pe/Pnenn aenderung unter 6% wird nicht geschaltet:
3464: 'Verzoegerungsphasen: Hochschalten wird unterdrückt
3465: 'Beschleunigungsphasen: Zurückschalten wird unterdrückt
3486: 'Wenn innerhalb von 6 Sekunden wieder in vorigen Gang zurueck geschaltet wird, wird der vorige Gang
3487: 'durchgehend beibehalten
3499: 'Wenn innerhalb von 6 Sekunden einmal höher und einmal niedriger als voriger Gang
3500: 'geschaltet wird, wird voriger Gang durchgehend beibehalten
3517: '--------------------------------Checks Teil 2-------------------------------------
3518: 'Schalten von 2. in 1. Gang wird bei v > 2,5 m/s unterdrueckt
3519: 'NEU LUZ 040210: Hochschalten nur wenn im 2. Gang über Kuppeldrehzahl
3524: 'bei verzoegerungsvorgaengen unter 2,5 m/s wird in Leerlauf geschaltet
3538: 'wenn v mehr als 1 Sek. < 0.1 m/s wird auf Gang=0 geschaltet
3545: 'bei Beschleunigungsvorgaengen unter 1,5 m/s wird in 1. Gang geschaltet
3552: 'ueberpruefung, ob Drehzahl ueber nenndrehzahl, dann muss immer hochgeschaltet werden
3553: 'sonst fehlt die leistung!
3562: 'EV-Schaltmodell (auf Basis PKW)
3592: '-----------------------------------Sekunde 1--------------------------------------
3593: 'Erste Sekunde: Gang finden / Initialisierung
3620: '--------------------------------Ab Sekunde 2--------------------------------------
3622: '---------Startwerte---------
3623: 'gangX = Letzter Gang d.h. Ausgangsbasis für Schaltmodell
3630: 'Kuppelschleif-check << Schon passiert in Power.Calc
3631: ''If bPplus And fn_norm(1) < Kuppln_norm Then bKupplSchleif = True
3633: '-------------------Gang für die nächsten 6 Sekunden berechnen---------------------
3640: '-----------Schaltfunktion----------
3667: 'Gelöscht LUZ 13.07.10: If (Pjetzt > 1) Then Pjetzt = 1.0
3668: 'If ix = jpm Then Pvorher = Pjetzt
3678: 'Drehzahlschranke Hinaufschalten n_normiert (leerl = 0, Nenndrehzahl = 1)
3681: 'Drehzahlschranke Hinunterschalten n_normiert (leerl = 0, Nenndrehzahl = 1)
3683: 'Gelöscht LUZ 13.07.10: If (nnsaufi > 0.85) Then nnsaufi = 0.85
3684: 'Umrechnung in hier verwendete Drehzahleinheit (n/n_nenn):
3687: 'Drehzahl mit letzten Gang (gangX)
3688: 'nx = fnU(Vist, gangX, Clutch = tEngClutch.Slipping) / VEH.nNenn
3691: ' ''Schalten Maximal alle 2 Sekunden schalten zulaessig:
3694: 'Ueberpruefen ob hinunterschalten, nur wenn Geschw. abnimmt oder leistung zunimmt
3703: 'Ueberpruefen ob hinaufschalten, nur wenn Geschw. zunimmt oder leistung abnimmt
3711: 'Gangwahl korrigieren
3720: 'Kein Leerlauf wenn Leistung > 0
3725: 'Drehzahl neu
3726: ''nn = fnn(Vist, gangX, Clutch = tEngClutch.Slipping)
3729: 'Überprüfe ob Gang innerhalb der Leistungs-/Drehzahl Grenzen. Schleppbetrieb wird nicht beachtet
3743: 'Speichere Gänge in Feld für spätere Checks
3755: 'Gang wird übernommen
3763: 'Gang-Verlauf hinzufügen
3767: '--------------------------------Checks Teil 1-------------------------------------
3768: 'Checks zur Saeuberung unsinniger Schlatmanoever:
3770: ''Unterteilung in "iphase(j)" Beschleunigungs- (=1), Verzoegerungs- (=2) und Cruise (=3) -Phasen:
3771: 'iphase = 0
3772: 'Select Case (beschl(jz - 2) + beschl(jz - 1) + beschl(jz)) / 3
3773: ' Case Is >= 0.125
3774: ' iphase = 1
3775: ' Case Is <= -0.125
3776: ' iphase = 2
3777: ' Case Else
3778: ' iphase = 3
3779: 'End Select
3780: ' ============>> Schon bestimmt durch VehState0
3782: 'Suche nach letztem Gangwechsel
3793: 'Schaltvorgaenge max. alle 3 Sekunden zulaessig:
3799: 'Cruise-Phasen:
3800: 'Solange Geschwindigkeitsaenderung seit letztem Gangwechsel unter 6% und Pe/Pnenn aenderung unter 6% wird nicht geschaltet:
3801: 'Verzoegerungsphasen: Hochschalten wird unterdrückt
3802: 'Beschleunigungsphasen: Zurückschalten wird unterdrückt
3823: 'Wenn innerhalb von 6 Sekunden wieder in vorigen Gang zurueck geschaltet wird, wird der vorige Gang
3824: 'durchgehend beibehalten
3836: 'Wenn innerhalb von 6 Sekunden einmal höher und einmal niedriger als voriger Gang
3837: 'geschaltet wird, wird voriger Gang durchgehend beibehalten
3854: '--------------------------------Checks Teil 2-------------------------------------
3855: 'Schalten von 2. in 1. Gang wird bei v > 2,5 m/s unterdrueckt
3856: 'NEU LUZ 040210: Hochschalten nur wenn im 2. Gang über Kuppeldrehzahl
3861: 'bei verzoegerungsvorgaengen unter 2,5 m/s wird in Leerlauf geschaltet
3875: 'wenn v mehr als 1 Sek. < 0.1 m/s wird auf Gang=0 geschaltet
3882: 'bei Beschleunigungsvorgaengen unter 1,5 m/s wird in 1. Gang geschaltet
3889: 'ueberpruefung, ob Drehzahl ueber nenndrehzahl, dann muss immer hochgeschaltet werden
3890: 'sonst fehlt die leistung!
3919: 'Dim avchek As Single
3944: '-----------------------------------Sekunde 1--------------------------------------
3945: 'Erste Sekunde: Gang finden / Initialisierung
3982: '--------------------------------Ab Sekunde 2--------------------------------------
3984: '---------Startwerte---------
4014: 'Leistung berechnen von jz bis jz + 6-----------------
4027: ' Berechnung nach Drehzahl/Leistung-Modell
4030: '(1) Nach Variante "schnelle Fahrweise"
4032: 'Schaltmanoever erfolgt nur, wenn v-aenderung 5% seit letztem Gangwechsel,
4033: 'VECTO: Auskommentiert START
4034: 'achek = 1
4035: 'If (MODdata.Vh.V(itgangwH) <> 0) Then
4036: ' avchek = Math.Abs(Vist0 / MODdata.Vh.V(itgangwH) - 1)
4037: 'Else
4038: ' avchek = Math.Abs(Vist0 - MODdata.Vh.V(itgangwH))
4039: 'End If
4040: 'If (avchek >= 0.05) Then
4041: ' achek = -1
4042: 'Else
4043: ' achek = 1
4044: 'End If
4045: 'VECTO: Auskommentiert ENDE
4047: 'in ersten 10 Zyklussekunden kann zum Einregulieren immer geschlatet werden:
4050: 'Bei Aenderung der Steigung kann ebenfalls immer geschaltet werden:
4054: 'Hinunterschalten:
4061: 'Hochschalten:
4062: ' bei Steigungszyklen mit zu hohen Geschwindigkeiten wird geschw. i+1 erst nach gangwahl berechnet
4063: ' dabei manchmal zu hoher gang -> Drehzahl und P_max viel zu nieder, daher nu bei niederen leistungen
4064: ' hochschalten erlaubt:
4083: '(2) Nach Variante "sparsame Fahrweise"
4085: ' Zurueckschalten erfolgt nur, wenn Geschwindigkeitsaenderung > 6%
4086: ' Hochschalten geht immer
4087: 'VECTO: Auskommentiert START
4088: 'achek = 1
4089: 'If (MODdata.Vh.V(itgangwL) <> 0) Then
4090: ' avchek = Math.Abs(Vist0 / MODdata.Vh.V(itgangwL) - 1)
4091: 'Else
4092: ' avchek = Math.Abs(Vist0 - MODdata.Vh.V(itgangwL))
4093: 'End If
4094: 'If (avchek >= 0.06) Then
4095: ' achek = -1
4096: 'Else
4097: ' achek = 1
4098: 'End If
4099: 'VECTO: Auskommentiert ENDE
4101: ' in ersten 10 Zyklussekunden kann zum einregulieren immer geschlatet werden:
4103: ' Bei Aenderung der Steigung kann ebenfalls immer geschaltet werden:
4107: ' Hinunterschalten:
4117: 'Hinaufschalten, nur ueberprueft wenn nicht schon hoechster Gang:
4119: 'C
4125: 'C
4126: 'C relevante Drehzahlen:
4137: ' Auswahl des Drehzahlverhaeltnisses aus der "schnellen (..h)" und
4138: ' der "sparsamen (..l)" Variante:
4140: ' Drehzahlverhhealtnisse nach "Modellmix":
4141: ' anhand der erforderlichen maximalen Motorleistung ueber die
4142: ' naechsten 6 Sekunden
4150: ' Festlegung der Anteile von schneller und sparsamer Fahrweise
4151: ' (Modell Hausberger):
4158: ' Mix der berechneten Gaenge gemaess Vorgabe in Eingabefile:
4159: ' (pmodell wird aus Eingabefile gelesen, = Anteil, zu der die Drehzahl
4160: ' nach "reales Modell" bestehen soll)
4165: ' Ermittlung des "virtuellen" aktuellen Ganges nach Modell
4170: ' ueberpruefung, ob Drehzahl ueber nenndrehzahl, dann muss immer hochgeschaltet werden
4171: ' sonst fehlt die leistung!
4181: ' ueberpruefung, ob erforderliche leistung ueber P_max(n) liegt
4182: ' dann wird zurueckgeschaltet:
4208: ' Eigentliche Ueberpruefung ob ueber P_max(n)
4214: 'falls schlechte Vollastkurve ohne Moment in leerlauf wird korrigiert:
4217: ' Ueberpruefung, ob hoehere Leistung erforderlich ist als Maximalleistung bei nh
4218: ' dann wird zurueckgeschaltet:
4248: ''Pjetzt = fPantr(Gang(jz)) / (fGPvoll(fn(Gang(jz))) + 0.00000001)
4250: ''If Pjetzt > 1 Then
4251: '' GeschwRed = True
4252: '' GeschwRedPC = Pjetzt
4253: '' Exit Function
4254: ''End If
4256: 'c Ende "Modell"-Basisgangwahl
4260: 'Kuppelschleif-check
4261: ''If bPplus And fn_norm(1) < Kuppln_norm Then bKupplSchleif = True
4263: '--------------------------------Checks Teil 1-------------------------------------
4264: 'Checks zur Saeuberung unsinniger Schlatmanoever:
4265: 'Unterteilung in "iphase(j)" Beschleunigungs- (=1), Verzoegerungs- (=2) und Cruise (=3) -Phasen:
4290: 'Suche nach letztem Gangwechsel
4299: 'Schaltvorgaenge max. alle 3 Sekunden zulaessig:
4304: 'Cruise-Phasen:
4305: 'Solange Geschwindigkeitsaenderung seit letztem Gangwechsel unter 6% und Pe/Pnenn aenderung unter 6% wird nicht geschaltet:
4306: 'Verzoegerungsphasen: Hochschalten wird unterdrückt
4307: 'Beschleunigungsphasen: Zurückschalten wird unterdrückt
4326: 'Wenn innerhalb von 6 Sekunden wieder in vorigen Gang zurueck geschaltet wird, wird der vorige Gang
4327: 'durchgehend beibehalten
4328: 'VECTO: Ausnahme: Über Volllastkurve
4339: 'Wenn innerhalb von 6 Sekunden einmal höher und einmal niedriger als voriger Gang
4340: 'geschaltet wird, wird voriger Gang durchgehend beibehalten
4356: '--------------------------------Checks Teil 2-------------------------------------
4357: 'Schalten von 2. in 1. Gang wird bei v > 1.5 m/s unterdrueckt
4358: 'NEU LUZ 040210: Hochschalten nur wenn im 2. Gang über Kuppeldrehzahl
4363: 'bei verzoegerungsvorgaengen unter 1.5 m/s wird in Leerlauf geschaltet
4375: 'wenn v mehr als 1 Sek. < 0.1 m/s wird auf Gang=0 geschaltet
4383: 'ueberpruefung, ob Drehzahl ueber nenndrehzahl, dann muss immer hochgeschaltet werden
4384: 'sonst fehlt die leistung!
4424: 'Geschwindigkeit vorausschauen
4437: 'Checks aus PKWgear....
4438: 'Schalten von 2. in 1. Gang wird bei v>2,5 m/s unterdrueckt
4447: 'Bei verzoegerungsvorgaengen unter 2,5 m/s wird in Leerlauf geschaltet
4456: 'Wenn v mehr als 1 Sek. <0.1 m/s wird auf Gang=0 geschaltet
4461: 'Bei Beschleunigungsvorgaengen unter 1,5 m/s wird in 1. Gang geschaltet
4488: 'Funktion zur einfachen Leistungsberechnung für Schaltmodelle
4493: 'Funktion zur einfachen Leistungsberechnung für EV-Schaltmodell
4508: 'Drehzahlvorgabe
4552: '--------------Leistung vor Diff = Am Rad-------------
4561: '----------------Rollwiderstand----------------
4566: '----------------Luftwiderstand----------------
4591: '--------Beschleunigungsleistung Fahrzeug--------
4593: 'Früher (PHEM 10.4.2 und älter) wurde statt m_raeder Massered verwendet, mit Massered = m_raeder + I_Getriebe * (Iachs / (0.5 * Dreifen)) ^ 2
4594: ' Der fehlende Teil (I_Getriebe * (Iachs / (0.5 * Dreifen)) ^ 2) wird jetzt durch fPaG(V,a) mit berücksichtigt
4598: '----------------Steigungswiderstand----------------
4603: '----------------Nebenaggregate----------------
4608: '-------------------Getriebe-------------------
4624: 'Pdiff
4633: 'Leistung nach Getriebe (Getriebeausgang)
4636: 'Verluste berechnet (eignet sich nur für Schaltgetriebe)
4637: ' Interpolation der Getriebeverlustleistung
4638: ' Zwischen 1. und 8. gang sowie 9. und 16. Gang:
4662: '***Differenzial
4663: ' Leistung nach Diff (vor Getriebe)
4682: 'Pdiff
4691: '***Differenzial
4692: ' Leistung vor Diff
4744: '----------------Getriebe Trägheit----------------
>>> cVh.vb
5: 'Aus DRI-Datei
15: 'Berechnet
18: 'WegKor
58: 'Geschwindigkeit
69: 'Original-Geschwindigkeit ist um 1 länger
79: 'Strecke (aus Zwischensekunden sonst passiert Fehler)
87: 'Steigung
99: 'Gang - nicht Mittelwert sondern Gang(t) = DRI.Gang(t)
103: 'lGears.Add(Math.Round((DRI.Values(tDriComp.Gears)(s + 1) + DRI.Values(tDriComp.Gears)(s)) / 2, 0, MidpointRounding.AwayFromZero))
112: 'Padd
124: 'Beschl. berechnen
132: 'Vair-Vorgaben: Nicht in Zwischensekunden!!
157: 'Geschwindigkeit
169: 'Strecke
177: 'Steigung
189: 'Gang - nicht Mittelwert sonder Gang(t) = DRI.Gang(t)
193: 'lGears.Add(Math.Round((DRI.Values(tDriComp.Gears)(s + 1) + DRI.Values(tDriComp.Gears)(s)) / 2, 0, MidpointRounding.AwayFromZero))
202: 'Padd
214: 'Beschl. berechnen
257: 'TODO: Wenn Fzg schneller als Zyklus...
273: 'Falls Zeitschritt wiederholen näher an Wegvorgabe als aktueller Weg => Zeitschritt wiederholen
279: 'Falls nächsten Zeitschritt löschen näher an Wegvorgabe als aktueller Weg => Nächsten Zeitschritt löschen
280: 'ElseIf WegX < MODdata.tDimOgl - 1 AndAlso t < MODdata.tDim - 1 AndAlso WegIst > Weg(WegX + 1) AndAlso Math.Abs(WegIst - Weg(WegX + 1)) <= Math.Abs(WegIst - Weg(WegX)) Then
282: ' Do
283: ' Cut(t + 1)
284: ' MODdata.tDim -= 1
285: ' WegX += 1
286: ' Loop While WegX < MODdata.tDimOgl - 1 AndAlso t < MODdata.tDim - 1 AndAlso WegIst > Weg(WegX + 1) AndAlso Math.Abs(WegIst - Weg(WegX + 1)) <= Math.Abs(WegIst - Weg(WegX))
287: ' WegX += 1
291: 'Keine Korrektur
>>> Em Calc.vb
51: 'Delaunay
54: 'Normale Interpolation
101: 'Ersten zwei sekunden keine Korrektur:
185: 'Dictionaries erstellen
192: 'Unit-Check
208: 'Summen ermitteln
220: 'Mittelwerte
228: '***************************************** 'Header '******************************************
243: '************************************ 'Zyklus-Mittelwerte '************************************
248: '***** Name
251: '***** Unit
258: '***** Messwert
261: '***** PHEM-Wert
264: '***** Diff - ACHTUNG: Keine Pnenn-Normierung! Vorsicht bei Dynamik-Korrektur!
267: '***** Delta
274: '***** R2
279: 'Über x Sekunden gemittelte Werte berechnen und sofort au
282: 'Null setzen
286: 'Aufsummieren
292: 'Messwert
295: 'PHEM-Wert
311: '************************************ Modale Ausgabe '************************************
315: 'Header/Units
324: 'Messwert
328: 'PHEM-Wert
332: 'Diff - ACHTUNG: Keine Pnenn-Normierung! Vorsicht bei Dynamik-Korrektur!
340: 'Delta
351: 'Header und Units schreiben
355: 'Über x Sekunden gemittelte Werte berechnen und sofort au
358: 'Null setzen
371: 'Aufsummieren
388: 'Ausgabe
393: 'Pe/nn
399: 'Messwert
402: 'PHEM-Wert
405: 'Diff
412: 'Delta
422: 'TC
563: 'C Lastwechsel (allgemeine Bedingung ausser bei Intervallen mit
564: 'C Konstantfahrt:
565: 'C
571: 'C
572: 'C Damit werden Trapezfoermige Zyklen nicht als lastwechsel erkannt
573: 'C da LWje = 0. In diesem fall wird voraus der naechste Wert gesucht,
574: 'C der nicht gleich Pe(jz) ist. Dieser wird anstelle von Pe(jz+1)
575: 'C gesetzt:
602: 'C
603: 'C lastwechsel werden nur als solche gezaehlt, wenn sie mehr als 0.05% von
604: 'C Pnenn betragen (sonst ist Ergebnis viel zu wackelig):
605: 'C (Lastwechsel wird gezaehlt, wenn LWja < 0)
606: 'C
608: 'C
609: 'C (1) Mittlere Amplitude vom Pe-Verlauf ("Ampl")
610: 'C Zwischenrechnung fue Zyklusmittelwert:
611: 'C
616: 'C
617: 'C Berechnung der mittleren Amplitude in 3 Sekunden vor Emission (Ampl3s)
618: 'C und der Anzahl der Pe-Sekundenschritten ueber 3% der Nennleistung
619: 'C (LW3p3s):
649: 'C
650: 'C (2) Aenderung der aktuellen Motorleistung (dP_2s):
651: 'C
664: 'C Mittelwert 3 sec. vor Emission:
672: 'C Gezaehlt nur bei dynamischem betrieb:
679: 'C
680: 'C
681: 'C (4) Mittelwert der negativen Motorleistung ("PnegMW"):
682: 'C
687: 'C Mittelwert 3 sec. vor Emission:
695: 'C Gezaehlt nur bei dynamischem betrieb:
705: 'C
706: 'C
707: 'C Berechnung der absoluten Dynamikkenngroessen:
708: 'C Addition der Amplituden von Pe (1. Pe-Wert
709: 'C wird fuer Amplitude auch als Maxima bzw. Minima gezaehlt)
710: 'C 1. Sekunde:
713: 'C
714: 'C 2. Sekunde bis Ende:
717: 'C Absolutwert:
723: 'C
727: 'C
729: 'C
730: 'C
731: 'C (8) WM_n10sn**3 * MW_P_10s:
732: 'c
744: 'c
752: 'c
754: 'C
761: 'c
762: 'C (9) MW_P40sABS:
763: 'c
778: 'C
780: 'c
781: 'C (9) MW_abs_dn2s:
782: 'c
792: 'Geschw./Beschl.-abhängige Parameter nur wenn nicht Eng-Only
805: 'Dynamikparameter als Differenz zu Dynamik in Kennfeld
806: ' ...war früher hier. Jetzt eigene Methode weil bei KF-Erstellung ungültig
812: 'Dynamikparameter als Differenz zu Dynamik in Kennfeld:
837:''' <summary>
838:''' Klasse zur Berchnung der Abgastemperaturen
839:''' </summary>
840:''' <remarks></remarks>
846: '! Felder für Größen aus PHEM Hauptprogramm
867: 'variables for coolant simulation
895: '**** Einlesen von tgas aus .npi (Projekt HERO) ****
896: ' => überschreibt tgas(jz) aus HtMass()
897: ' Luz/Rexeis 16.05.2011
911: ''' <summary>
912: ''' Hauptroutine für EXS Modul
913: ''' </summary>
914: ''' <remarks></remarks>
916: '! Aufruf von Exs_Main(true) -> Developer Version ohne PHEM Hauptprogramm
921: '! Felder für Größen aus exs-File
951: 'Allgemeine Konstanten
955: '!Stoffwerte Abgas:
956: '!unempfindlich gg. lambda, siehe "Stoffwerte_vollständigeVerbrennung_neu.xls"
958: 'cp_exh = 1054.0 '!Wärmekapazität Abgas [J/(kg*K)], wird nicht mehr verwendet weil jetzt direkt in Abh. von T und Lambda berechnet
964: '!Anmerkung: Mittelwertwert aus Internetrecherche, in Literatur keine Angaben gefunden
965: '!kalibriert anhand Test an Thermoelement unter Annahme von Schichtdicke 0.1mm
967: 'Reaktionsenthalpien in J/mol
972: 'Molmassen
977: 'Kompatibilität mit alter EXS-Strkutur. Bevor neues Konzept für Em-Komponenten mit cMAP-Klasse, tMapComp, etc. eingeführt wurde
985: 'Verweise auf Emissionen: Gegebene falls vorhanden sonst die berechneten
1006: 'Dimensionieren:
1025: 'Übergabe der relevanten Größen aus dem PHEM Hauptprogramm
1026: 'In DEV direkt aus der Datei *.phe eingelesen
1045: 'Lambda
1051: 'Wird weiter unten belegt weil mpexh vorhanden sein muss
1056: 'Anfang exs-File einlesen
1072: 'dummy = DatExs.ReadLine(0) 'alte dummy zeilen: auf exs-file kompatibilität achten
1073: 'dummy = DatExs.ReadLine(0)
1074: 'dummy = DatExs.ReadLine(0)
1079: 'Initialisieren der entsprechenden Anzahl an Modulen
1085: 'Lesen der Datenblöcke je Modul
1088: 'Fehlermelderung in TempMod(iMod).Read(DatExs)
1096: 'Ende exs-File einlesen
1100: 'Anfang csy-File einlesen
1106: 't_amb_coolant = ...
1121: 'Ende csy-File einlesen
1133: 'Berechnungsschleife: je Zeitschritt /je Modul: 1. Temperaturen, 2.Konvertierungen
1135: 'Sekündliche Ergebnisse werden in jeder Iteration ausgegeben
1139: ' Header *.ter schreiben
1159: ' Header der KonvMods schreiben
1169: 'startwerte für kühlersimulation:
1174: 'Wärmeeintrag ins Kühlsystem (Kennfeld)
1189: 'Kühlsystem Simulation
1191: 'Wärmeeinträge in Massen 1 und 2
1195: 'Wärmeübergang Masse 1 und 2 ins Kühlsystem
1199: 'Massentemperaturen für nächsten Zeitschritt
1205: 'Wärmeverlust nach außen
1208: 'Gesamtwärmeeintrag ins Kühlsystem (Ausgabewert der Kühlersimulation)
1213: 'EXS Simulation
1218: 'Berechnung Abgasmassenstrom aus gegebenem Kraftstoffverbrauch und Lambda
1219: 'nur zulässig bei Motoren ohne AGR
1220: 'Einheit mpexh.......[kg/s]
1221: 'Einheit Vpexh.......[m3/s]
1222: 'Fall 1: Berechnung aus Verbrauch und lambda
1224: '!Fall 2: Berechnung aus durch Motor gepumpter Luftmenge
1231: 'Es fehlt: Methodik Massenstromberechnung für AGR Motoren BMW HERO Projekt
1239: 'Lambda berechnen falls nicht explizit gegeben
1252: 'Erstes Modul im Abgasstrang kann kein katalytisch aktives Element sein,
1253: 'daher sind die Emissionen immer gleich der Rohemissionen aus dem PHEM-Hauptprogramm
1269: 'Qp_reak berechnen: massenstrom * konvertierungsrate * reaktionsenthalpie / molmasse
1273: 'Schadstoffkomponente berechnen
1277: 'Konvertierung von NOx, CO, HC -> alter Wert * (1-Konvertierungsrate)
1291: 'Falls Modul kein Konv-Element hat ändert sich nix (Anmerkung: Modul 1 hat immer ModTyp0)
1304: 'Zeile in *.ter schreiben
1323: 'Ende Berechnungsschleife
1326: 'Alle sekündlichen Ergebnisfiles zumachen
1338: '---------- Abfrage Rücksprung im iterativen Berechnungsmodus für Starttemp -------------------
1340: 'Abbruchbedingung: Temperatur des Massenelementes "t_m" des in "iter_pos" spezifizierten Moduls
1341: 'am Beginn und am Ende des Zyklus innerhalb vorzugebender Bandbreite "iter_tol"
1417: '--- Ausgabefile *.ter schreiben ----------------------------------------------------------
1419: '--- Ende Ausgabefile *.ter schreiben -----------------------------------------------------
1422: 'Aufräumen
1430: ''' <summary>
1431: ''' Klasse für Temperaturmodule
1432: ''' </summary>
1433: ''' <remarks>Art des Moduls wird mit ModTyp definiert</remarks>
1491: ''' <summary>
1492: ''' Einlesen der EXS-Datei
1493: ''' </summary>
1494: ''' <param name="Datei">Dateihandler</param>
1495: ''' <remarks></remarks>
1512: 'Pfad für Konvertierungsraten bei Modulen mit Konvertierung
1520: 'Initialisieren der Module & Einlesen des Parameterfiles je nach Modul
1561: 'Wärmeübergangsfaktor
1563: 'Oberfläche außen
1565: 'Emissivität
1567: 'Faktoren für Wärmeübergänge nach außen
1571: 'Faktoren für Temperaturzusammenhang t_katsubstrat <-> t_kat_außen
1574: 'Abkühlkurve Masse
1576: 'normierte Querschnittsfläche
1578: 'durchschnittlicher Gegendruck
1580: 'Durchmesser Thermoelement
1583: 'Abkühlkurve Thermoelement
1595: 'Faktoren für Wärmeübergänge nach außen
1621: 'Check ob Tgas in Zyklus gegeben:
1629: 'Entnormierungen und Berechnung weiterer Größen
1638: 'Zusätzlich berechnete Parameter für Rohrmodule:
1650: 'Für Strömungsberechnungen in SI-Einheiten wird Querschnittsfäche in m2 umgerechnet
1653: 'Geometrische Größen berechnen
1654: 'Anmerkung: es wird davon ausgegangen, dass Temperatursensoren
1655: 'mittig ins Rohr stehen
1660: ' Anmerkung: Kugelkalotte an t-sensor spitze wird in der Betrachtung als
1661: ' umströmter Zylinder vernachlässigt
1663: 'Abkühlkurven einlesen
1690: ''' <summary>
1691: ''' Wärmeübergang Masse
1692: ''' </summary>
1693: ''' <param name="jz">Zeit</param>
1694: ''' <remarks></remarks>
1708: 'Festlegung Schwellwert für Genauigkeit der Temperaturberechnung (wird wegen iterativem Berechnungsmodus benötigt)
1711: 'Übergabe Eintrittstemperatur des Abgases aus oberhalb liegendem Modul bzw. dem Motor
1730: 'Berechnung der aktuellen Massentemperatur
1733: '! bei n_iter > 0 ist bereits der Endwert der letzten Iteration zugewiesen
1739: 'Falls Motor Aus wird nach Abkühlkurve gerechnet und Methode verlassen:
1761: 'Wärmekapazität (vgl. Bogdanic)
1780: 'Schleife für Iteration Wärmeübergang
1788: ' Abbruchkriterium siehe unten
1794: 'Ermittlung der Temperatur des Abgases in der Mitte der Masse ("t_gas_mid") aus einem nichtlinearem (logaritmisch) Temperaturverlauf
1803: 'Wärmeübergang Konvektion innen für alle Module (außer Rohr)
1807: 'für Rohrmodule:
1809: 'Nusselt Zahl: Dichte = 345/t_gas_mid, Term in Klammer: mu_Rohr / mu_Mitte
1811: 'Wärmeübergang (Konvektion innen), d_pipe in m: char. Länge
1815: 'Wärmekapazität (vgl. Bogdanic)
1820: 'Abbruchkriterium: Änderung der Abgas-Austrittstemperatur im Vergleich zum letzten Iterationsschritt kleiner Schwellwert
1838: 'Berechnung der Wärmeverluste der "thermischen Masse" nach außen
1840: 'Parameter werden aus EXS-Datei eingelesen:
1841: 'Daten für MuD:
1842: ' Oberfl_Kat = 0.12 'Oberfläche für Wärmeübergang in m^2
1843: ' Emiss = 0.5 'Emissivität
1844: ' A = 7, B = 0.21, C = 8, k = 1, d = -340
1846: 'Empirische Formel, passt für alle Rollentests recht gut
1848: 'Anm.: Versuch mit direkter Abhängigkeit von t_m -> funktioniert nicht gut
1850: 'Wärmeverlust durch Strahlung
1852: 'Wärmeverlust durch Konvektion
1856: 'Parameter werden aus EXS-Datei eingelesen:
1857: 'Daten für MuD:
1858: ' Modul Nr. 3:
1859: ' Oberfl_Mod3 = 0.169457508 'Oberfläche für Wärmeübergang in m^2
1860: ' Emiss = 0.5 'Emissivität
1861: ' A = 7
1862: ' B = 0.42
1863: ' Modul Nr. 4:
1864: ' Oberfl_Mod4 = 0.103596481 'Oberfläche für Wärmeübergang in m^2
1865: ' Emiss = 0.9 'Emissivität
1866: ' A = 7
1867: ' B = 0
1869: 'Wärmeverlust durch Strahlung = Sichtfaktor * Emissivität * St.-Boltzm.-Konst * Oberfläche * (T_Rohr^4 - T_Umgebung^4)
1871: 'Wärmeverlust durch Konvektion = Wärmeübergangskoeffizient * Oberfläche * (T_Rohr - T_Umgebung)
1874: 'Standard: Crad konstant, keine Verluste durch Konvektion
1879: 'Gesamtwärmeverlust
1885: ''' <summary>
1886: ''' Wärmeübergang Thermoelement
1887: ''' </summary>
1888: ''' <param name="jz">Zeit</param>
1889: ''' <remarks></remarks>
1899: 'Falls Motor Aus wird nach Abkühlkurve gerechnet und Methode verlassen:
1912: '!Formelwerk Berechnung Wärmeübergang am umströmten Zylinder
1921: 'Vereinfachte Lösung der Wärmeflussgleichung für den t-sensor
1922: 'entspricht einer Diffgl. für ein PT1 glied
1924: 'Zeitdiskrete Lösung der PT1-Diffgl
1991: ''Extrapolation für LastTemp > TempAr(0)
1992: 'If TempAr(0) < LastTemp Then
1993: ' 'TODO: StatusMSG(8, "Extrapolation of Cool Down Temperature! t = " & jz & ", Temp(t-1) = " & LastTemp)
1994: ' i = 1
1995: ' GoTo lbInt
1996: 'End If
1998: 'i = 0
1999: 'Do While TempAr(i) > LastTemp And i < Adim
2000: ' i += 1
2001: 'Loop
2003: 'Extrapolation für LastTemp < TempAr(Adim)
2005: 'lbInt:
2006: 'Interpolation
2013: 'Einen Zeitschritt vor ( = 1 Sekunde)
2033: ''' <summary>
2034: ''' SCR Modell
2035: ''' </summary>
2036: ''' <remarks></remarks>
2041: 'Klasse initialisiert als Unterelement von TempMod
2047: 'c Prefix "c" bedeutet: Zykluswert verwendet für Kennlinien-Korrektur
2049: 'c Index "cc" bedeutet: Wert aus Kennlinie (-> "c" - "cc" ist die Differenz, mit der Korrigiert wird)
2053: 'Filename sekündliches Ausgabefile spezifizieren
2105: 'Abbruch wenn kein NOx gegeben
2126: 't-SCR (°C), deNOx(1-NOx-Auspuff/NOx-Roh), -t-upstream(°C), NOx-Roh (g/h)/kW_Nennleistg, Summe NOx ueber 60Sek vorher g/h)/kW_Nennleistg, Raumgeschwindigkeit (1/h)
2149: ' Programm zur Simulation SCR-Flottendurchschnitt
2150: ' Anmerkung: deNOx-Werte kleiner als Null sind möglich:
2151: ' dies entspricht höherem Roh-Nox-Niveau als im Basiskennfeld
2162: ' 1.) Berechnung der sekündlichen Werte für Eingangsgrößen SCR-Modell
2164: ' a.) t_SCR: zusammengewichten der von t_upstream und t_downstream
2165: ' SCR-Model-intern werden dabei Temperaturen zwischen 50°C und 500°C begrenzt
2166: ' Temperaturmodelwerte (zB bei Kaltstart) werden nicht überschrieben
2172: ' b.) t_up, NOxraw, SV: 20s gleitender Mittelwert in die Vergangenheit
2173: ' Formel gilt auch für die ersten 20 Sekunden
2187: ' c.) NOx60s: Summe über letzten 60s der spezifischen NOx-Rohemissionen
2188: ' Formel gilt auch für die ersten 60 Sekunden
2194: ' Für Sekunde 1 bis 59 muss summenwert hochgerechnet werden
2201: ' Berechnung deNOxmin aus Kennlinien-Wert bei 50°C
2213: ' 2.) Berechnung deNOx
2215: ' a.) deNOx aus Kennlinie:
2225: 'c b.) Falls Korrekturkriterien erfüllt sind: deNOx-Korrektur gegenüber Kennlinie
2227: 'c
2228: 'c t_up aus Kennlinie:
2237: 'c
2238: 'c NOx_raw aus Kennlinie:
2247: 'c
2248: 'c Summe NOxraw in den letzten 60 Sekunden aus Kennlinie:
2257: 'c
2258: 'c Raumgeschwindigkeit aus Kennlinie:
2267: 'c
2269: 'c
2271: 'c
2276: 'Schreiben der Ergebnisse auf die standardisierten Variablen eEmKomp (iSchad, jz) und Qp_reak(jz)
2311: ''' <summary>
2312: ''' SCR Modell
2313: ''' </summary>
2314: ''' <remarks></remarks>
2319: 'Klasse initialisiert als Unterelement von TempMod
2325: 'c Prefix "c" bedeutet: Zykluswert verwendet für Kennlinien-Korrektur
2327: 'c Index "cc" bedeutet: Wert aus Kennlinie (-> "c" - "cc" ist die Differenz, mit der Korrigiert wird)
2331: 'Filename sekündliches Ausgabefile spezifizieren
2385: 'Abbruch wenn kein NOx gegeben
2405: 't-SCR (°C), deNOx(1-NOx-Auspuff/NOx-Roh), -t-upstream(°C), NOx-Roh (g/h)/kW_Nennleistg, Summe NOx ueber 60Sek vorher g/h)/kW_Nennleistg, Raumgeschwindigkeit (1/h)
2429: ' Programm zur Simulation SCR-Flottendurchschnitt
2430: ' Anmerkung: deNOx-Werte kleiner als Null sind möglich:
2431: ' dies entspricht höherem Roh-Nox-Niveau als im Basiskennfeld
2443: ' 1.) Berechnung der sekündlichen Werte für Eingangsgrößen SCR-Modell
2445: ' a.) t_SCR: zusammengewichten der von t_upstream und t_downstream
2446: ' SCR-Model-intern werden dabei Temperaturen zwischen 50°C und 500°C begrenzt
2447: ' Temperaturmodelwerte (zB bei Kaltstart) werden nicht überschrieben
2453: ' b.) t_up, NOxraw, SV: 20s gleitender Mittelwert in die Vergangenheit
2454: ' Formel gilt auch für die ersten 20 Sekunden
2470: ' c.) NOx60s: Summe über letzten 60s der spezifischen NOx-Rohemissionen
2471: ' Formel gilt auch für die ersten 60 Sekunden
2479: ' Für Sekunde 1 bis 59 muss summenwert hochgerechnet werden
2486: ' Berechnung deNOxmin aus Kennlinien-Wert bei 50°C
2498: ' 2.) Berechnung deNOx
2500: ' a.) deNOx aus Kennlinie:
2510: 'c b.) Falls Korrekturkriterien erfüllt sind: deNOx-Korrektur gegenüber Kennlinie
2512: 'c
2513: 'c t_up aus Kennlinie:
2522: 'c
2523: 'c NOx_raw aus Kennlinie:
2532: 'c
2533: 'c Summe NOxraw in den letzten 60 Sekunden aus Kennlinie:
2542: 'c
2543: 'c Raumgeschwindigkeit aus Kennlinie:
2552: 'c
2554: 'c
2556: 'c
2561: 'Schreiben der Ergebnisse auf die standardisierten Variablen eEmKomp (iSchad, jz) und Qp_reak(jz)
2592: ''' <summary>
2593: ''' KAT-Modell
2594: ''' </summary>
2595: ''' <remarks></remarks>
2600: 'Klasse initialisiert als Unterelement von TempMod
2606: 'Kennfelddaten
2607: 'Private Massflow As List(Of Single)
2608: 'Private Temp_KAT As List(Of Single)
2609: 'Private Massflow_Norm As List(Of Single)
2610: 'Private Temp_KAT_Norm As List(Of Single)
2611: 'Private Massflow_Min As Single
2612: 'Private Massflow_Max As Single
2613: 'Private Temp_KAT_Min As Single
2614: 'Private Temp_KAT_Max As Single
2615: 'Private ListDim As Integer
2618: 'Public KonvRate As Dictionary(Of tMapComp, List(Of Single))
2626: ''' <summary>
2627: ''' Erstellen eines neuen KAT-Moduls
2628: ''' </summary>
2629: ''' <param name="i">ID</param>
2630: ''' <param name="EXSref">EXS-Klasse</param>
2631: ''' <remarks></remarks>
2641: ''' <summary>
2642: ''' Interpolationsfunktion
2643: ''' </summary>
2644: ''' <param name="x">Massenstrom</param>
2645: ''' <param name="y">Temperatur vor KAT</param>
2646: ''' <param name="MapID">MapID der entsprechenden Abgaskomponente</param>
2647: ''' <returns>interpolierten Wert für x und y aus Kennfeld</returns>
2648: ''' <remarks>Aus Massenstrom-Temperatur Kennfeld wird Konvertierungsrate für entsprechende Abgaskomponente berechnet</remarks>
2659: ''' <summary>
2660: ''' Einlesen der Kennfelder für Konvertierungsraten
2661: ''' </summary>
2662: ''' <param name="Name">Dateiname</param>
2663: ''' <remarks></remarks>
2694: 'Header
2716: 'Units (wird nicht ausgewertet)
2719: 'Werte
2731: 'KonvRaten Null setzen wenn Komponente nicht gegeben
2742: 'Triangulieren
2750: 'Dic. für modale Konvrate definieren
2762: ''' <summary>
2763: ''' Berechnung der Konvertierungsrate aus Kennfeld
2764: ''' </summary>
2765: ''' <param name="jz">Zeit</param>
2766: ''' <remarks>Für die Berechnung wird die Temperatur des Thermoelements am Kateingang (entspricht Modulnummer i-1) verwendet!!!</remarks>
2768: 'Konvertierungsrate aus Kennfeld berechnen
2783: ''' <summary>
2784: ''' Header für Ausgabedatei
2785: ''' </summary>
2786: ''' <remarks></remarks>
2795: ''' <summary>
2796: ''' Daten für Ausgabedatei
2797: ''' </summary>
2798: ''' <param name="jz">Zeit</param>
2799: ''' <remarks></remarks>
2818: ''' <summary>
2819: ''' Interface zur Konverter-Klasse cScrMod, cDocMod , usw...
2820: ''' </summary>
2821: ''' <remarks></remarks>
2823: 'Sub NewI(ByVal i As Int16)
2834: ''C
2835: 'C Unterprogramm zu PHEM zur linearen INterpolation aus einem Polygonzug (z.B. in Vissimzs.for aufgerufen)
2836: 'C uebergeben wid "such" als X-Wert, der dann als berechneter Y-Wert wieder zurueck gegeben wird
2837: 'C Zu Belegen sind vorher:
2838: 'C Xis(j) und Yis(j)
2839: 'c Zu uebergeben der gesuchte Wert (such) und die Anzahl an vorhandenen Polyginpunkten (izpl)
2840: 'c
2841: 'C
2842: ' INCLUDE "com.inc"<<<<<<<<<<<<<<<<<<<<<<<<<<
2848: 'C
2849: 'c
2850: 'C Suche der naechstgelegenen Drehzahlpunkte aus eingegebener Vollastkurve:
2851: 'c Abstand zu Eingabepunkten und Suche des Punktes mit geringstem Abstand:
2861: 'c
2862: 'C Festlegung des zweiten INterpolationspunktes (nur interpolieren, nicht extrapolieren)
2863: 'C
2868: '!Extrapolation nach oben
2874: '!Extrapolation nach unten
2878: 'c
2879: 'c Sortieren der 2 Werte nach aufsteigendem n:
2880: 'c
2886: 'c
2887: 'c Interpolation der zugehoerigen Maximalleistung (P/Pnenn)
2888: 'c
2893: 'C
>>> Application.Designer.vb
2:' <auto-generated>
3:' Dieser Code wurde von einem Tool generiert.
4:' Laufzeitversion:4.0.30319.269
6:' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
7:' der Code erneut generiert wird.
8:' </auto-generated>
17: 'HINWEIS: Diese Datei wird automatisch generiert. Ändern Sie sie nicht direkt. Zum Ändern
18: ' oder bei in dieser Datei auftretenden Buildfehlern wechseln Sie zum Projekt-Designer.
19: ' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
20: ' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
>>> AssemblyInfo.vb
5:' Allgemeine Informationen über eine Assembly werden über die folgenden
6:' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
7:' die mit einer Assembly verknüpft sind.
9:' Die Werte der Assemblyattribute überprüfen
20:'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23:' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
25:' Hauptversion
26:' Nebenversion
27:' Buildnummer
28:' Revision
30:' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
31:' übernehmen, indem Sie "*" eingeben:
32:' <Assembly: AssemblyVersion("1.0.*")>
>>> Resources.Designer.vb
2:' <auto-generated>
3:' Dieser Code wurde von einem Tool generiert.
4:' Laufzeitversion:4.0.30319.269
6:' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
7:' der Code erneut generiert wird.
8:' </auto-generated>
18: 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
19: '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
20: 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
21: 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
22: '''<summary>
23: ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
24: '''</summary>
35: '''<summary>
36: ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
37: '''</summary>
49: '''<summary>
50: ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
51: ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
52: '''</summary>
>>> Settings.Designer.vb
2:' <auto-generated>
3:' Dieser Code wurde von einem Tool generiert.
4:' Laufzeitversion:4.0.30319.269
6:' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
7:' der Code erneut generiert wird.
8:' </auto-generated>