Emissionsauswertung

Mit Hilfe des Addins rs_emission können die folgenden Emissionsauswertungen berechnet werden:

  • WHTC
  • WHSC
  • ETC European transient cycle
  • ESC European steady state cycle
  • NRTC Nonroad Transient Cycle (NRTC) Test
  • NRSC
  • WNTE
  • FTP HD US Heavy Duty Federal Test Procedure (FTP) Test (beta)
  • JE05 Japanese JE05 Emissions Test Cycle (beta)
  • EPA 1065

Das Addin gehört nicht zum Lieferumfang von UniPlot.

Um eine Auswertung zu starten, wählen Sie Emissionsauswertung=>Auswertung.

Installation

  • Erzeugen im Verzeichnis uniplot\addin ein Unterverzeichnis rs_emission. Kopieren Sie die folgenden Dateien in das neue Verzeichnis:

    ecc_read_excel.ic
    etc_dialog.ic
    etc_emissions.ic
    etc_init.ic
    etc_loaddata.ic
    etc_main.ic
    etc_refcycle.ic
    etc_template.ic
    etc_validation.ic
    etc_WHSC.ic
    etc_elr.ic
    
    rs_emission.icl
    etc_template_default.ipw
    etc_template_default_en.ipw
    ecc_configuration.xlsx
    Verzeichnis functions
    
  • Kopieren Sie die Datei rs_emission.adi nach uniplot\addin.

  • Kopieren Sei die Datei ecc_configuration.xlsx in ein Verzeichnis Ihrer Wahl.

  • Starten Sie UniPlot.

  • Markieren Sie im Dialog Extras=>Add-In Manager das Addin „Emissions-Auswertung“.

  • Wählen Sie Emissionsauswertung=>Konfiguration und wählen Sie die Datei mit den Zyklusbeschreibungen aus (ecc_configuration.xlsx).

Der Haupt-Dialog

../../_images/emission-maindialog-de.png

Konfiguration

Zeigt eine Liste mit Konfigurationen an. Eine Konfiguration enthält alle Einstellungen für eine Auswertung außer dem Namen der Vorlage.

Messdatei

Datendatei mit den Messwerten. Um eine Messdatei auszuwählen drücken Sie auf die Schaltfläche . Die Daten müssen in einem von UniPlot unterstützten Format vorliegen.

Messdatei-Kalt

Für WHTC, NRTC und FTP-HD kann eine Kaltmessung ausgewählt werden.

Kanalzuordnung

Über den Schalter Kanalzuordnung wird das Dialogfeld für die Kanalauswahl geöffnet. Siehe Kanalzuordnung.

Gaslaufzeiten

Der Schalter öffnet das Dialogfeld für die Definition der Gaslaufzeiten. Siehe Gaslaufzeiten.
Vorlage
Name der Vorlage. Die Vorlage ist eine IPW-Datei mit den Diagrammen und Tabellen. Die Vorlage kann geändert werden. Siehe Einrichtung der Vorlage.
Zyklustyp
Liste der unterstützten Zyklustypen, z. B. Marine, Non Road, On Road. Siehe Konfiguration über Excel-Datei.
Vorschriften
Liste der unterstützten Vorschriften, die für den ausgewählten Zyklustyp verfügbar sind. Die Vorschriften können in die Excel-Tabelle eingetragen werden. Siehe Konfiguration über Excel-Datei.
Zyklus
Liste der unterstützten Zyklen, die für die ausgewählte Vorschrift verfügbar sind. Die Zyklen können in die Excel-Tabelle eingetragen werden. Siehe Konfiguration über Excel-Datei.
Kategorie
Liste der Kategorien, z. B. Leistungsklassen. Siehe Konfiguration über Excel-Datei.
Kraftstoff
Liste der unterstützen Kraftstoffe. Die Kraftstoffzusammensetzung wird für die Berechnung des Feuchtefaktors für Kohlenmonoxid und Stickoxide benötigt. Siehe Kraftstoffzusammensetzung.

Lüfter berücksichtigen

Wenn die Option markiert ist, kann ein Lüfterpolynom definiert werden. Die Lüfterleistung reduziert die Leistung des Motors und verringert damit die verrichtete Arbeit.

Partikel Messung

Data for full flow dilution system. GEDF is directly measured by the CVS equipment:

PTMass = Mf / Msam * Gedf * x / 1000
x = test length in hours (1 for stationary tests)
Value Description
Mf Is the particulate mass sampled over the cycle in milligrams.
Msam or msep Is the mass of dilluted exhaus gas passing the particulate collector filters in kilograms.
Gedf or medf Is the mass of equivalent diluted exhaust gas in kg/h. If the mass is only given in kg/test it must be converted to kg/h.

NOx-Messung feucht

Falls die Option markiert ist, wird keine Feuchtekorrektur entsprechend ISO 16183, Formel 14 bzw. in Feuchtekorrekturfaktor für Stickoxid beschrieben durchgeführt.

Zertifizierungsmessung

Falls die Option markiert ist, dürfen die angegebenen Kanäle keine Fehlmessung (missing-Values) enthalten. Die Länge der Messung darf höchstens 5 Sekunden kürzer als die Sollänge sein. (Beispiel bei WHTC: 1795 Sekunden Mindestlänge).

Falls die Option nicht markiert ist, werden die folgenden Grenzen überprüft:

  1. Zeitkanal muss mindestens 50% gültige Werte enthalten.
  2. Die Abschnittslänge aufeinander folgender ungültiger Messpunkte ist auf Maximal 10 Sekunden begrenzt.
  3. Maximal dürfen 10% der Datenpunkte eines Kanals ungültig sein.

Motor mit Turbolader

Nötig für die Verifikation der transienten Zyklen zur Bestimmung der maximalen Abweichung vom Umgebungsdruck und Temperatur.

Motorkennwerte

Die Motorkennwerte werden die die Regressionsanalyse benötigt.

Kanalzuordnung

Die Schaltfläche Kanalzuordnung öffnet das folgende Dialogfeld:

../../_images/emission-channelselection-de.png

Über das Dialogfeld werden die benötigten Kanäle ausgewählt. Die Kanäle müssen in der angegebenen Einheit vorliegen. Nicht benutzte Kanäle werden mit --Not Used-- markiert. In Abhängigkeit vom Zyklus sind einige der Kanäle Pflichtkanäle.

Channels:

Kanal Einheit Beschreibung
Zeit in s oder ms S, ms Nötig für transiente Zyklen (WHTC, NRTC, ETC, etc.) Falls die Zeit im ms definiert ist, muss der Kanal die Einheit ms besitzen.
Drehzahl in 1/min 1/min Ist-Drehzahl
Drehzahl Referenz 1/min Soll-Drehzahl
Drehmoment Nm Ist-Moment
Drehmoment Referenz Nm Soll-Moment
Alpha in % % Last
Ansaugluft-Temperatur °C Für die Berechnung der absoluten Feuchte.
Ansaugluft-Druck mbar  
Ansaugluft-Massenstrom kg/h  
Kraftstoff-Massenstrom kg/h  
Rel. Luftfeuchtigkeit % Für die Berechnung der absoluten Feuchte.
Alternativ: Taupunkttemperatur °C  
Umgebungsluftdruck hPa  
CO2 % oder ppm Trocken gemessen
CO ppm Trocken gemessen
NOx ppm Trocken oder feucht gemessen
HC ppm Feucht gemessen
Alternative to HC: HC propane equivalent (C3) in ppm (RAW) ppm Any HC (C3) Signal. Feucht gemessen
CO2 (RAW) % or ppm Any CO2 signal
CO (RAW) ppm Any CO signal
NOx (RAW) ppm Any NOx signal
HC (RAW) ppm Feucht gemessen
Rauch (AVL 439 Opacimeter) % Optional
Rauch (AVL 439 Opacimeter) K  
Rauch (AVL 483 Micro Soot Sensor) mg/m³ unverdünnt
Rauch (AVL 415 Smoke Meter) mg/m³  
Partikel Anzahl #/cm³  
NH3 ppm Ammoniak
CH4 ppm Feucht gemessen
CH4 (RAW) ppm Feucht gemessen
Urea (Harnstoff) kg, kg/h, g/h oder g/min Harnstoff
NO ppm Stickstoffmonoxid;
NO (RAW) ppm Stickstoffmonoxid vor KAT gemessen
N2O ppm Lachgas N2O;

Die feucht (heiß) gemessenen Abgaskomponenten werden nicht korrigiert (mit Kw,r multipliziert). Für die Komponente NOx kann angegeben werden ob feucht oder trocken gemessen wurde.

Gaslaufzeiten

Für die transienten Zyklen können die Gaslaufzeiten angegeben werden. Die Signale werden für die Auswertung um die angegebene Zeit verschoben. Die Gaslaufzeiten müssen in Sekunden eingegeben werden.

../../_images/emission-gasresponsetimes-de.png

Kraftstoffzusammensetzung

Über die Schaltfläche Zusammensetzung können die Massenanteile in % für die einzelnen Komponenten angegeben werden.

../../_images/emission-fuelcompostition-de.png

Für den Kraftstoff CNG kann das Molverhältnis H/C angegeben werden. Defaultwert ist 4.0.

Feuchte-Korrektur (Dry/wet correction) entsprechend ISO 16183, Formel 15 für die Berechnung der Abgasdichte entsprechend ISO 16183, Formel 14. Für Euro VI wird der kraftstoffspezifische Faktor aus den Anteilen für Wasserstoff, Stickstoff und Sauerstoff berechnet.

Konfiguration

../../_images/emission-configuration-de.png

Im Konfigurationsdialog kann die Excel-Datei mit den Definitionen des Zyklen und Grenzwerte ausgewählt werden. Siehe Konfiguration über Excel-Datei.

Einrichtung der Vorlage

Eine Vorlage finden Sie im Verzeichnis \uniplot\addin\rs_emission. Die Vorlage hat den Namen etc_emission1.ipw.

Überprüfung der Prüfungsdurchlaufs (Regressionsanalyse)

Bei den transienten Zyklen wird die Übereinstimmung der Messwerte mit den Bezugszykluswerten durchgeführt. Dazu kann das Signal auf 1Hz interpoliert werden. Für die Signale Drehzahl und Moment wird eine Verschiebung zur Solldrehzahl und Sollmoment berechnet um eine optimale Korrelation berechnen zu können. Die Verschiebung wird für Drehzahl und Drehmoment separat berechnet. Es wird die Verschiebung ausgewählt, die das beste Regressionsergebnis liefert.

Die Zyklusarbeit wird entsprechend der Richtlinie berechnet (negative Drehmomente werden auf Null gesetzt. Bei Messdaten mit weniger als 5Hz werden die Nulldurchgänge entsprechend der Vorschrift berücksichtigt). Für die zeitlich korrigierten Signale wird eine Punktstreichung durchgeführt. Beim NRTC Zyklus werden die ersten 25 Sekunden und die letzten 25 Sekunden ignoriert.

Vollast: Drosselklappenstellung Alpha > 95%

Leerlauf: Drosselklappenstellung Alpha < 5%

Streichpunkte: Die möglichen Streichpunkte werden, bevor sie endgültig gestrichen werden, noch bewertet. Falls der Betrag der Differenz zwischen Soll- und Istwert kleiner als 1% des Maximalwertes ist, wird der Punkt nicht gestrichen. Diese Bewertung wird für Drehzahl, Moment und Leistung durchgeführt.

Drehzahlsollwerte, die kleiner als 50% der Leerlaufdrehzahl sind, werden für die Regressionsanalyse auf die Leerlaufdrehzahl gesetzt.

Punktstreichung bei WHTC: Bei der Bedingung für den Leerlaufpunkt (Minimum operator Demand (idle point)) wird für nref = 0% ein Fenster der Breite +-0.5% der Leerlaufdrehzahl verwendet und für Mref = 0 per cent ein Fenster von +-Leerlaufmoment.

Beim WHTC-Test wird bei der Wahl zwischen Drehzahlstreichung und Momentenstreichung zuerst das Moment gestrichen (Kriterium 3 und 4: „Minimum operator demand“ und „Maximum operator demand“, Regulation No. 49, Revision 5). Punkte, die bei der Momentenstreichung nicht gestrichen wurden, werden dann bei der Drehzahl gestrichen. Dabei werden nur die möglichen Streichpunkte entfernt, die Ausserhalb eines 1% Bereichs um die 45° Gerade liegen. Die 1% Toleranz bezieht sich auf das maximale Moment bzw. die maximale Drehzahl.

Laden der Messdaten

Negative Emissionswerte werden auf 0 gesetzt.

Konfiguration über Excel-Datei

Die Konfiguration der Emissionsauswertung wird über eine Excel-Datei vorgenommen. Mit Hilfe der Datei kann die Emissionsauswertung um neue Zyklen erweitert werden, ohne das Programm ändern zu müssen. Für stationäre Tests, z. B. für den ESC-Test, können die Wichtungsfaktoren und Berechnungsfunktionen festgelegt werden. Für transiente kann die Länge der Berechnungssektionen, die Berechnungsfunktion und die Parameter für die Regressionsanalyse festgelegt werden.

Die Excel-Datei enthält dazu drei Tabellen mit den Namen ECC-Cycles, ECC-Limits und ECC-Names. Im folgenden werden die einzelnen Tabellen beschrieben.

Die Beispieldatei ecc_configuration.xlsx finden Sie im Verzeichnis uniplot\addin\rs_emission. Die Datei kann im Konfigurationsdialog ausgewählt werden. Änderungen an der Datei werden bei der nächsten Auswertung berücksichtigt.

Tabelle ECC-Cycles

Die Tabelle muss mindestens 25 Spalten enthalt. Die Spalentitel stehen in Zeile 3. Die Werte beginnen in Zeile 5. Jede Zeile in der Tabelle definiert einen Auswertezyklus.

../../_images/emission-ecc-cycles.png
Spalte Spaltentitel Beschreibung
A # disable line Durch ein #-Zeichen in Spalte A wird eine Zeile in der Tabelle auskommentiert. Damit ist es möglich nicht benötigte Zyklen auszublenden.
B Marine/Landbased/OnRoad In dieser Spalte wird festgelegt für welche Anwendung der Zyklus definiert wird. Die Spalte muss einen der drei folgenden Buchstaben enthalten: M, L, O. Die Buchstaben müssen mit Spalte A in der Tabelle ECC-Names übereinstimmen.
C Regulation In dieser Spalte wird über einen Namen die Gesetzesvorschrift definiert, nach dem der Zyklus ausgewertet wird. Der Name kann frei vergeben werden und dient zur Auswahl. Die Zelle darf nicht leer sein. In der Tabelle ECC-Limits werden für jede Gesetzesvorschrift und Leistungsklassen die Grenzwerde definiert.
D Cycle In dieser Spalte werden für jede Gesetzesvorschrift die unterscheidlichen Zyklen definiert. Die Zelle darf nicht leer sein.
E Comment In dieser Spalte darf freier Text eingegeben werden.
F Transient Cycle In dieser Spalte wird für einen transienten Zyklus, z. B. WHTC nach Euro VI, eine 1 eingetragen. Für stationäre Zyklen wird 0 eingetragen oder die Zelle wird leer gelassen.
G Initializing/Regression Calculation In dieser Zelle muss der Name einer Callback-Funktion angegeben werden. Über die Callbackfunktion kann die Regressionsberechnung bei transienten Zyklen definiert werden. Der vollständige Name der Funktion setzt sich aus dem Text ecc_init_ und dem Text in Zelle G zusammen, z. B. ecc_init_whtc. Der Name darf in Groß-/Kleinbuchstaben enthalten. Der Funktionsname darf nur Kleinbuchstaben enthalten.
H Weighted cold Cycle in % Falls ein Test aus zwei separaten Messungen besteht, kann hier die Wichtung des Warmtests in Prozent angegeben werden. Bei anderen Tests wird der Wert ignoriert.
I Single Point Calculation (NTE) Wird noch nicht ausgewertet.
J Dummy leer
K Number of Points (Cycle Length in s) Legt die Anzahl der Punkte eines stationären Zykluses fest. Die Anzahl muss mit der Anzahl der Wichtungsfaktoren ab Spalte Z übereinstimmen. Bei transienten Tests wird in dieser Spalte die Zykluslänge in Sekunden angegeben.
L Dummy leer
M Dummy leer
N Saturation vapour pressure Sättigungsdampfdruckberechnung. Enthält den variablen Namensteil der UniScriptfunktion, über die der Sättingsdampfdruck berechnet werden soll. Der Funktionsname setzt sich aus dem Text ecc_saturation_vapor_pressure_ und dem variablen Namen zusammen, z. B. ecc_saturation_vapor_pressure_epa1065. Wenn kein Name angegeben wird, wird die Funktion ecc_saturation_vapor_pressure_default aufgerufen.
O Absolute humidity intake air Berechnungsfunktion für die absolute Feuchte. Vorsilbe: ecc_humidity_. Wenn keine Funktion angebeben wird, wird die Funktion ecc_humidity_default aufgerufen.
P Humidity correction factor NOx Vorsilbe: ecc_nox_factor_
Q Dry to Wet Correction PM Vorsilbe: ecc_pm_factor_. Wenn keine Funktion angegeben ist, wird keine korrektur der Partikelmasse durchgeführt.
R Dry to Wet Correction Vorsilbe: ecc_dry_wet_factor_. Trocken/Feucht Korrektur. Die Korrektur wird bei den Signalen CO, CO2, HC immer durchgeführt. Bei NOx nur, wenn kalt (trocken) gemessen wurde.
S Dummy leer
T Dummy leer
U Dummy leer
V Dummy leer
W Dummy leer
X Dummy leer
Y Dummy leer
Z und folgende Weight Factors/Sections Bei stationären Zyklen sollte die Summer der Wichtungsfaktoren 1 (100%) ergeben. Die Summe wird aber nicht überprüft. Bei transienten Zyklen werden die Längen der einzelnen Sektionen in Sekunden eingetragen, z. B. 600, 600, 600 für einen WHTC Zyklus.Damit wird der Test in drei Abschnitte von 0 bis 600 s, 600 bis 1200s und 1200 bis 1800s eingeteilt. Die Summe sollte der Zykluslänge entsprechen. Für jede Sektion werden die Summenergebnisse der Emissionen berechnet.

Tabelle ECC-Limits

In der Tabelle ECC-Limits werden für jede Gesetzesvorschrift und Leistungsklasse die Emissionsgrenzwerte definiert.

Die Tabelle muss mindestens 15 Spalten enthalten. Die Spaltentitel stehen in Zeile 3 und 4. Die Werte beginnen in Zeile 5. Jede Zeile in der Tabelle definiert einen Auswertezyklus.

../../_images/emission-ecc-limits.png
Spalte Spaltentitel Beschreibung
A # disable line Durch ein #-Zeichen in Spalte A wird eine Zeile in der Tabelle auskommentiert. Damit ist es möglich nicht benötigte Zyklen auszublenden.
B Comment In die Zelle darf freier Text eingegeben werden.
C Marine/Landbased/OnRoad In dieser Spalte wird festgelegt für welche Anwendung der Zyklus definiert wird. Die Spalte muss einen der drei folgenden Buchstaben enthalten: M, L, O. Die Buchstaben müssen mit Spalte A in Tabelle ECC-Names übereinstimmen.
D Regulation In dieser Spalte wird über einen Namen die Gesetzesvorschrift definiert, nach dem der Zyklus ausgewertet wird. Der Name kann frei vergeben werden und dient zur Auswahl im Dialogfeld. Die Zelle darf nicht leer sein.
E Cycle In dieser Spalte werden für jede Gesetzesvorschrift die unterschiedlichen Zyklen definiert. Die Zelle darf nicht leer sein.
F Category Für jeden Regulation/Cycle Kombination können mehrere Grenzwerte definiert werden. Beispielsweise nach Motorleistung oder Gütigkeitsjahr oder nach anderen Ordnungskriterien. Der eingegebene Text muss für eine Regulation/Cycle-Gruppe eindeutig sein.
G NOx Grenzwert in g/kWh Grenzwert der Stickoxidemissionen.
H HC Grenzwert in g/kWh  
I CO Grenzwert in g/kWh  
J PM Grenzwert in g/kWh Grenzwert der Partikelmasse.
K PN Grenzwert in 1/kWh Partikelanzahl
K NH3 Grenzwert in ppm  
M NMHC + NOx Grenzwert in g/kWh  
N CH4 Grenzwert in g/kWh  
O NO2 Grenzwert in g/kWh  
P Smoke Grenzwert in 1/m  

Tabelle ECC-Names

Enthält Werte für die Gültigkeitsüberprüfung in Tabelle ECC-Cycles und ECC-Limits. Wenn Elemente zugefügt werden, müssen die alle Zellen in Excel markiert werden und über den Reiter Daten, Datenüberprüfung neu zugewiesen werden. In der Tabelle ECC-Cycles kann dann entsprechend eine Überprüfung der Eingaben durchgeführt werden.

Definition der Callbackfunktionen

Die in der Tabelle ECC-Cycles definierte Callbackfunktionen werden vom Rahmenprogramm aufgerufen. Der Name der Callbackfunktion setzt sich aus einer Vorsilbe und dem in der Tabelle angegebenen Namensteil zusammen. Über die Callbackfunktionen kann das Programm an neue Vorschriften oder Änderungen angepasst werden, ohne das Programm zu modifizieren.

Beispiel für eine Callbackfunktion:

def ecc_nox_factor_e6(obj)
{
  od = obj.od;
  rv_q_mf_kg_h =od.rv_q_mf_kg_h;
  g_air_dry = od.g_air_dry;
  rv_ha  = od.rv_ha;
  rv_ta_celsius =  od.rv_ta_celsius;
  ssFuel = obj.fuel.ssFuelName;

  if (ssFuel == "Diesel") {
      // UN/ECE-Regelung 49, Ergänzung 5 S.292
      // compression-ignition engines
      rv_nox_factor_euro = 15.698 * rv_ha ./ 1000 + 0.832;
  } else {
      // Ethanol
      // gasoline and LPG fuel, CNG
      // positive ignition engines
      rv_nox_factor_euro = 0.6272 + 44.030 * 0.001 * rv_ha - 0.862 * 0.001 * (rv_ha .* rv_ha);
  }
  return rv_nox_factor_euro;
}

Die Callbackfunktionen werden mit einem Parameter mit dem Namen obj aufgerufen. Der Parameter obj enthält alle Messdaten, berechnetet Daten und Berechnungsparameter. Die Elemente des obj-Parameters werden weiter unten beschrieben.

Die Callbackfunktion geben entweder einen Vektor zurück und fügen Ergebnisse in das Objekt ein.

Die Callbackfunktion können im Verzeichnis functions im Verzeichnis addin\\rs_emission oder jedem anderen Verzeichnis, das von UniPlot beim Starten geladen wird, gespeichert werden.

Callbackfunktion für Initialisierung

Die Callbackfunktion wird für die Initialisierung von zyklusspezifischen Werten verwendet. Beispiel siehe „functions\ecc_init_whtc.ic“

Die Funktion wird aufgerufen, nachdem alle Werte aus der Excel-Definition zugewiesen worden sind. D.h., es können die Werte aus der Excel-Datei im Objekt-Parameter überschrieben werden.

In der Init-Callback können die Grenzwerte für die Gültikeitsüberprüfung der Messung überschrieben werden. Als Defaultwerte werden die folgenden Kennzahlen für fa verwendet:

obj.ref.fa_limit_min = 0.96
obj.ref.fa_limit_max = 1.06

Falls für einen Zyklus andere als die Default uGas-Werte verwendet werden sollen können die uGas-Werte wie folgt vorgegeben werden hier am Beispiel des uGas-Wertes für CO2 für NRTC und NRSC für Diesel-Kraftstoff:

if (obj.fuel.ssFuelName == "Diesel") {
   obj.uGasValues.CO2 = 0.001519;
}

Die Kraftstoffnamen und uGas-Namen können der Datei „functions\ecc_ugas_values.ic“ entnommen werden. In der Datei enthält die uGas-Defaultwerte.

Callbackfunktion Sättigungsdampfdruck

Berechnung des Sättigungsdampfdrucks. Input is die Lufttemperatur in °C. Die Funktion muss einen Vektor der Länge des Input-Parameters zurückgeben. Die Einheit des Returnwerts ist mbar oder hPa.

Die Beispielfunktionen finden Sie in der Datei „functions\ecc_saturation_vapor_pressure.ic“

Beispiel für die Default Berechnung:

def ecc_saturation_vapor_pressure_default(rv_ta_celsius)
{
      T = rv_ta_celsius;

      eso = 0.133322; // torr->kPa
      c0 = 4.856884
      c1 = 0.2660089
      c2 = 1.688919e-2
      c3 = 0.7477123e-4
      c4 = 0.810525e-5
      c5 = 0.3115221e-7
      p = (c0 + c1.*T + c2.*T.^2 - c3.*T.^3 + c4.*T.^4 - c5.*T.^5) .* eso .* 10;
      return p; // hPa = mbar
}

Callbackfunktion Absolute Feuchte

Berechnung der absoluten Feuchte in g Wasser pro kg Luft.

Beispiel für die Default Berechnung:

// Feuchtigkeitsgehalt der feuchten Luft in g Wasser je kg trockener Luft
// Ha = humidity of the intake air water per kg dry air
// δ = 0.62197 is the ratio of molecular weights of water vapour and dry air

// rv_hyg_percent: relative Feuchtigkeit der Ansaugluft(%)
// rv_barom_hPa: Umgebungsluftdruck (kPa)
// rv_pw_mbar: Sättigungsdampfdruck der Ansaugluft (hPa == mbar)
// rv_p_air_intake_mbar: Ansaugluftdruck relativ zum Umgebungsluftdruck in mbar
// pB = barometrischer Gesamtdruck in hPa.

// Ha=humidity of the intake air, g water per kg dry air
// Ha=(6.220 * Ra * pa)/(pB-pa * Ra * 0.01)
// Ra=relative humidity of the intake air, %
// pa=saturation vapor pressure of the intake air, kPa
// pB=total barometric pressure, kPa

def ecc_humidity_default(obj)
{
      od = obj.od;

      Ra = od.rv_hyg_percent;
      pa = od.rv_pw_mbar/10;
      pB = od.rv_barom_hPa/10;
      ha = 6.22 .* Ra .* pa ./ (pB - pa .* Ra ./ 100);
      return ha;
}

Callbackfunktion Feuchtekorrektur NOx

Berechnung des Korrekturfaktos kh für die NOx Feuchtekorrektur.

Callbackfunktion Dry to Wet Correction

Berechnung des Korrekturfaktos kh für die Trocken-Feucht Korrektur.

Die Funktion gibt einen Vektor mit den Korrekturwerten zurück.

Der Korrekturfaktor wird mit den kalt (trocken) gemessenen Signalen CO, CO2 NOx und HC multipliziert.

Die Unterscheidung nach Treibstoff muss innerhalb der Funktion durchgeführt werden.

Beispiel für NRTC Zyklus:

def ecc_dry_wet_factor_nrtc(obj)
{
      od = obj.od;
      co_dry_ppm = od.rv_co_ppm;
      co2_dry_percent = od.rv_co2_percent;
      rv_ha = od.rv_ha;
      ssFuel = obj.fuel.ssFuelName;

      co_dry_percent = co_dry_ppm / 10000;
      rvkw2 = (1.608 * rv_ha) ./ (1000 + (1.608 * rv_ha));

      if (ssFuel == "Diesel") {
              // Diesel
              return 1 / (1 + 1.88 * 0.005 * (co_dry_percent + co2_dry_percent) + rvkw2);
      } else {
              // Fremdzündungsmotor:
              // Kraftstoff H/C Verhältnis
              rsAlpha = 1.85;

              h2_dry = 0.5 * rsAlpha * co_dry_percent .* (co_dry_percent + co2_dry_percent) ./ ..
                       (co_dry_percent + (3.5 * co2_dry_percent));

              return 1 / (1 + rsAlpha * 0.005 * (co_dry_percent + co2_dry_percent) - 0.01 .* h2_dry + rvkw2);
      }
}

Callbackfunktion Feuchtekorrektur PM

Berechnung der Feuchtekorrektur für die Partikelmasse, wie Sie beim NRSC/NRTC-Zykus durchgeführt wird.

Beispiel:

// NRTC. NRSC, Directive 97/68/EC, Directive 2004/26/EC
// Humidity correction factor for particulate
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2004:225:0003:0107:EN:PDF
def ecc_dry_wet_pm_nonroad_factor(rv_ha)
{
      rvFactor = 1 / (1 + 0.0133 .* (rv_ha - 10.71));
      return rvFactor;
}

Der Mittelwert des Faktors wird mit der Filtermasse multipliziert.

Struktur des Parameters obj

Der Parameter obj ist ein Objekt, das beim Starten einer Auswertung erzeugt wird und beim Beenden wieder gelöscht wird. Es enthält alle Parameter, Messdaten und berechnete Daten.

uGas-Werte

Die uGas-Werte werden in der Funktion ecc_ugas_values.ic festgelegt. Sie wurden für die unterschiedlichen Kraftstoffe der folgenden Tabelle entnommen: „E/ECE/324/Rev.1/Add.48/Rev.5, Table 5: Raw exhaust gas u values and component densities“.

Wenn die Werte für einen Zyklus von den Werten abweichen, kann der entsprechende Wert in der Init-Funktion des Zykluses überschrieben werden. Im folgenden Beispiel wird für Diesel Kraftstoff der uGas-Wert für CO2 beim NRTC-Zyklus (ecc_init_nrtc.ic) geändert:

if (obj.fuel.ssFuelName == "Diesel") {
      obj.uGasValues.CO2 = 0.001519;
}

Kraftstoffnamen: Diesel, CNG, Ethanol, Propane, Butane, LPG. Der Kraftstoffname wird in obj.fuel.ssFuelName gespeichert. Namen der uGas Komponentnen: NOx, CO, HC, CO2, O2, CH4, N2O, NO. Die uGas-Werte werden in Element obj.uGasValues gespeichert.

Berechnung

Berechnung des Sättigungsdampfdrucks in mbar:

// T_C in grad C
T_K = T_C + 273.15;
ln_Pe = -6096.9385 ./ T_K + ...
     21.2409642 - ...
     2.711193e-2 .* T_K + ...
     1.673952e-5 .* T_K .* T_K + ...
     2.433502 .* log(T_K);
p = exp(ln_Pe) ./ 100 ; // hPa = mbar

Quelle: Sonntag (1994), JE05-Zyklus Dokumentation.

Berechnung des absoluten Feuchtigkeitsgehalts der feuchten Luft in g Wasser je kg trockener Luft:

// Ha=humidity of the intake air, g water per kg dry air
// Ha=(6.220 * Ra * pa)/(pB-pa * Ra * 10-2)
// Ra=relative humidity of the intake air, %
// pa=saturation vapor pressure of the intake air, kPa
// pB=total barometric pressure, kPa

Ra = rv_hyg_percent;
pa = rv_pw_mbar/10;
pB = rv_barom_hPa/10 - rv_p_air_intake_mbar/10;
ha = 6.22 .* Ra .* pa ./ (pB - pa .* Ra ./ 100);

Falls die relative Luftfeuchtigkeit im Ansaugrohr gemessen wurde, muss der Ansaugluftdruck angegeben werden.

Feuchtekorrekturfaktor für Stickoxid

Da die NOx-Emission von den Bedingungen der Umgebungsluft abhängig ist, ist die NOx-Konzentration zur Berücksichtigung der Feuchtigkeit mit dem Faktor KH zu multiplizieren.

Berechnung des NOx-Korrekturfaktors für Temperatur und Feuchtigkeit (Diesel), Euro I und II:

// Richtlinie 88/77/EWG des Rates vom 3. Dezember 1987
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CONSLEG:1988L0077:19911011:DE:PDF

rv_a1 = 0.044 * rv_q_mf_kg_h ./ g_air_dry - 0.0038;
rv_a2 = -0.116 * rv_q_mf_kg_h ./ g_air_dry + 0.0053;
rv_a4 = (1 + rv_a1 .* (7 * rv_ha - 75)) + rv_a2 .* ((rv_ta_celsius + 273.15)-302);
rv_nox_factor_euro_1_2 = 1 / rv_a4;

// Datei ist:
// rv_ha (m) = Feuchte der Ansaugluft, ausgedrückt in g Wasser pro kg trockener Luft,
// rv_ta_celsius = Temperatur der Luft in °C,
// rv_q_mf_kg_h ./ g_air_dry (GFÜL / GAIR) = Kraftstoff-Luft-Verhältnis (Trockenluft).

Berechnung des NOx-Korrekturfaktors for Temperatur und Feuchtigkeit (Diesel), Euro III:

// L275/61 (20.10.2005), Para 4.3
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:31997L0068:EN:HTML
// 1.3.3. Humidity correction for NOx

rv_a1 = 0.309 * rv_q_mf_kg_h ./ g_air_dry - 0.0266;
rv_a2 = -0.209 * rv_q_mf_kg_h ./ g_air_dry + 0.00954;
rv_a4 = (1 + rv_a1 .* (rv_ha - 10.71)) + rv_a2 .* ((rv_ta_celsius + 273.15)-298);
rv_nox_factor_euro_3 = 1 / rv_a4;

Berechnung des NOx-Korrekturfaktors for Temperatur und Feuchtigkeit (Diesel) Euro IV, V:

// Richtlinie 1999/96/EG, 13. Dezember 1999, S. 74
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2004:225:0003:0107:EN:PDF
// 2.1.2.3. NOx correction for humidity and temperature

rv_nox_factor_euro_4_5 = 1 / (1 - 0.0182 .* (rv_ha - 10.71) + ...
                                             0.0045 .* ((rv_ta_celsius + 273.15)-298));

Berechnung des NOx-Korrekturfaktors for Temperatur und Feuchtigkeit (Diesel) Euro VI:

// Diesel
// UN/ECE-Regelung 49, Ergänzung 5 S.292
// http://www.unece.org/fileadmin/DAM/trans/main/wp29/wp29regs/R049r5e.pdf
// compression-ignition engines

rv_nox_factor = 15.698 * rv_ha ./ 1000 + 0.832;

// positive ignition engines (CNG)
// ISO 16183, Formula 24

rv_nox_factor = 0.6272 + 44.030 * 0.001 * rv_ha - 0.862 * 0.001 * (rv_ha .* rv_ha);

Feuchtekorrekturfaktor für CO-, CO2- und NOx-Konzentration

Eine Feuchtekorrektur wird für die Signale vorgenommen, die trocken (kalt) gemessen wurden. Das sind CO, CO2 und je nach Messverfahren NOx.

Umrechnung von trockenen in den feuchten Bezugszustand (Diesel), Euro I und Euro II:

// Richtlinie 88/77/EWG des Rates vom 3. Dezember 1987
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CONSLEG:1988L0077:19911011:DE:PDF
// Seite 61

rv_conox = 1 - (1.85 * rv_q_mf_kg_h) ./ g_air_dry;

// Dabei ist:
// rv_q_mf_kg_h (GFUEL) = Kraftstofffluß in kg/h (kg/s)
// g_air_dry (GAIR) = der Luftstrom (kg/h) (kg/s) (Trockenluft)

Umrechnung von trockenen in den feuchten Bezugszustand (Diesel), Euro III:

// Richtlinie 99/96/EG
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2000:044:0001:0155:DE:PDF
// Seite 61

Ffh = 1.969 ./ (1 + (rv_q_mf_kg_h ./ g_air_wet));
Kw2 = 1.608 .* rv_ha ./ (1000 + (1.608 .* rv_ha));
rv_conox = 1 - Ffh .* (rv_q_mf_kg_h ./ g_air_dry) - Kw2;

Umrechnung von trockenen in den feuchten Bezugszustand (Diesel), Euro IV, V:

// vapour mass in air intake in kg/h
g_air_dry = rv_q_maw_kg_h ./ (1 + rv_ha/1000);

XFuel_Air = rv_q_mf_kg_h ./ g_air_dry;

// ISO 16183 / 5.5.5: Dry/wet correction, Formula 18
Fuel_KF =  0.055584 .* obj.fuel.FuelPercentH - 0.0001083 * obj.fuel.FuelPercentC - ..
          0.0001562 * obj.fuel.FuelPercentS + 0.0079936 * obj.fuel.FuelPercentN + ..
          0.0069978 * obj.fuel.FuelPercentO;
rv_conox_factor_euro_4_5 = (1 -  ..
         ((1.2434 .* rv_ha + 111.12 .* obj.fuel.FuelPercentH .* XFuel_Air) ./ ..
          (773.4 + 1.2434 * rv_ha + XFuel_Air .* Fuel_KF*1000))) * 1.008;

Umrechnung von trockenen in den feuchten Bezugszustand (Diesel), Euro VI:

// vapour mass in air intake in kg/h
g_air_dry = rv_q_maw_kg_h ./ (1 + rv_ha/1000);

XFuel_Air = rv_q_mf_kg_h ./ g_air_dry;

// http://www.unece.org/fileadmin/DAM/trans/main/wp29/wp29regs/R049r5e.pdf
// (Regulation No. 49 - Rev.5)

Fuel_KF = 0.055594 * obj.fuel.FuelPercentH + ..
          0.0080021 * obj.fuel.FuelPercentN + ..
          0.0070046 * obj.fuel.FuelPercentO;
rv_conox_factor = (1 -  ..
         ((1.2434 .* rv_ha + 111.12 .* obj.fuel.FuelPercentH .* XFuel_Air) ./ ..
          (773.4 + 1.2434 * rv_ha + XFuel_Air .* Fuel_KF*1000))) * 1.008;

Umrechnung von trockenen in den feuchten Bezugszustnd (NRTC, NRSC für Diesel):

// co/hc dry/wet correction for NRTC and NRSC
// http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2004:225:0003:0107:DE:PDF
// 1.3.2. Umrechnung vom trockenen in den feuchten Bezugszustand
co_dry_percent = co_dry_ppm / 10000;
rvkw2 = (1.608 * rv_ha) ./ (1000 + (1.608 * rv_ha));
rvkw = 1 / (1 + 1.88 * 0.005 * (co_dry_percent + co2_dry_percent) + rvkw2);

Umrechnung von trockenen in den feuchten Bezugszustand (CNG) Euro V, VI:

kw1 = 1.608 .* rv_ha ./ (1000 + (1.608 .* rv_ha));
a1 = 1.0 ./ (1.0 + rsAlpha .* 0.005 .* (c_co_percent + c_co2_percent))
rv_conox_factor_euro_4_5 = (a1 - kw1) * 1.008;

Berechnung der Partikelanzahl:

N = medf / 1.293 * k *c_mean * f * 1e6

N = Anzahl der im Prüfzyklus abgegebenen Partikel;

medf = Masse des äquivalenten verdünnten Abgases im Prüfzyklus. Entspricht dem Wert Gedf aus der Partikelmessung:

k = 1, Kalibrierfaktor;

c_mean: durchschnittliche, in Bezug auf die Standardbedingungen (273,2 K und 101,33 kPa) berichtigte Konzentration der Partikel aus dem verdünnten Abgas, Partikel/cm3:

f = 1, Minderungsfaktor.

ELR Test

European load response test

The „ELR test“ is a test cycle of a sequence of load steps at 3 or 4 constant engine speeds. The smoke is determined by means of an opacimeter. For each load step the smoke peak is determined. Calculation of the final smoke value from the avaraged data:

SV = (0.43 × SV_A) + (0.56 × SV_B) + (0.01 × SV_C)

The opacimeter should applay a Bessel filter to the smoke data as described in the regulation.

The data should be measured over time with a frequency of 20Hz or higher. Instead of transient data file, a file with 9 or 12 records with the results of each load step can be selected.

If a transient data file is selected, a second page with the smoke, speed and torque versus time curves is added to the result page.

Extracting the load steps for a tranient data file

Picture with throttle position.

  1. The signal length must be greater than 270 seconds (9 steps a 30 seconds)

2. The throttle signal must be below 70% for 10% load and above 70% for 100 % load.

  1. The throttle signal must cross the 70% line at least 17 times.

4. The length of the 100 % load period has to be between 8 and 12 seconds long. The regulation expects between 9 and 11 seconds.

  1. The length of the 10% load period has to be between 18 and 22 seconds long.
  2. The data is only valid if at least 9 or 12 load steps are found.

Smoke Data Validation

As described in E/ECE/324/Rev.1/Add.48/Rev.5, Annex 4A - Appendix 1, Paragraph 3.4 Cycle validation is executed:

„The relative standard deviations of the mean smoke values at each test speed (SVA, SVB, SVC, as calculated in accordance with paragraph 7.3.3. of this appendix from the three successive load steps at each test speed) shall be lower than 15 per cent of the mean value, or 10 per cent of the limit value shown in table 1 of paragraph 5.2. of the Regulation, whichever is greater. If the difference is greater, the sequence shall be repeated until three successive load steps meet the validation criteria.“

and, if a 4th random test speed is measured:

„5.2.3.2.: The smoke value on the random test speed of the ELR shall not exceed the highest smoke value of the two adjacent test speeds by more than 20 per cent, or by more than 5 per cent of the limit value, whichever is greater.“

WNTE

Bei WNTE können 15 oder 18 Modes ausgewertet werden.

EPA 1065

The calculation can be executed with drift correction. If drift correction is enabled, the gas concentration for zero gas and span gas must be measured before and after the test according to regulation EPA § 1065.672 Drift correction . The values for the gas concentrations must be specified in the dialog box Drift Check Configuration:

../../_images/emission-driftcorrection-en.png

Dabei haben die Spalten die folgende Bedeutung:

Name Description
refzero reference concentration of the zero gas, which is usually zero unless known to be otherwise.
refspan reference concentration of the span gas.
prezero pre-test interval gas analyzer response to the zero gas concentration.
prespan pre-test interval gas analyzer response to the span gas concentration.
postzero post-test interval gas analyzer response to the zero gas concentration.
postspan post-test interval gas analyzer response to the span gas concentration.

The result values will be corrected with the calculated drift correction. If the drift check is enabled the negative emission values are not set to 0.

The test is invalid if the difference between the corrected and uncorrected brake-specific emission is outside a 4% range.

Kohlenstoffbilanz

Bei transienten Zyklen können die Messwerte teilweise anhand einer Kohlenstoffbilanz überprüft werden. Dazu wird der Kohlenstoffanteil in der Ansaugluft und im Diesel-Kraftstoff sowie in den Abgaskompnenten berechnet und ins Verhältnis gesetzt.

Für die Ansaugluft wird ein CO_2 Gehalt von 380 ppm angenommen. Für die Dichte der Ansaugluft wird ein Wert von 1.293 kg/m³ angenommen (mol_volume = 22.4 l/mol).

Damit kann die Kohelnstoffbilanz berechnet werden:

\begin{eqnarray}
C_{Exhaust} & = & m_{CO_2} \cdot \frac{M_{C}}{M_{CO_2}} +
              m_{CO} \cdot \frac{M_{C}}{M_{HC}} +
              m_{HC} \cdot \frac{M_{C}}{M_{HC}} \\
C_{Fuel} & = & m_{Fuel} \cdot \frac{C_{Conc}}{100} \\
C_{Air} & = & \frac{m_{Air} \cdot 1000 \cdot 1e^{-6}}{\rho_{Air} \cdot {V_{m, Air}}} \cdot m_{CO_{2, Air}} \cdot M_C \\
C_{Fuel, Air} & = & C_{Fuel} + C_{Air} \\
C_{Balance} & = & (1 - \frac{C_{Exhaust}}{C_{Fuel,Air}}) \cdot 100
\end{eqnarray}

Dabei ist

  • \rho_{Air} Dichte der Luft 1.293 kg/m³
  • C_{Conc} Konzentration von Kohlenstoff im Dieselkraftstoff in Prozent, Beispiel: 86.5 %
  • M Molare Masse in mol/g
  • m_{CO_{2, Air}}, CO_2 in Luft in ppm (380ppm)
  • m_{x}, Masse in g
  • V_{m, Air} Molares Volument von Luft: 22.4 l/mol

Der Wert für C_{Balance} in Prozent wird in der Vorlage ausgegeben Textplatzhalter: $C_Balance_Deviation$

Für die Molmassen werden die folgenden Konstanten verwendet:

Komponente Molare Masse in g/mol
CO2 44.01
CO 28.01
HC 14.0
C 12.0107

UniScript-Interface

Die Emissionsauswertung kann neben der über den Dialog gesteuerten Ablauf auch über UniScript genutzt werden. Die einfachste Anwendung ist die Erstellung einer Konfigurationsdatei im XML-Format. Die Datei kann z. B. über das Dialogfeld erstellt werden.

Einfaches UniScript-Interface:

ssXMLFile = _etc_get_settings_dir() + "nrtc_tuev3.xml";
ssTemplate = GetRootDirectory() "\\addin\\rs_emission\\etc_template1.ipw";
obj = etc_eval_test(ssXMLFile, ssTemplate)

Das zweite Beispiel lädt eine XML-Konfigurationsdatei und modifiziert anschließend einige Parameter:

def my_ecc_evaluation(ssXMLFile, ssTemplate, ssDatafile)
{
     obj = ecc_create_object();
     if (obj == 0) {
             return FALSE;
     }

     if (ecc_load_settings_file(obj, ssXMLFile) == FALSE) {
             return 0;
     }
     obj.ssNCFile_2 = "";
     obj.rsFileName_2_Enable =FALSE;
     obj.ssTemplate = ssTemplate;
     obj.ssFileName = ssDatafile
     obj.ssNCFile = auto_ImportData(ssDatafile);

     // ecc_load_CycleLimits(obj); // will be called in ecc_load_settings_file.

     if (obj.ssNCFile == "") {
             log_error("", "Emission", "Cannot open data file: %s", obj.ssFileName);
             return 0;
     }
     if (ecc_load_data(obj) == FALSE) {
             return 0;
     }
     if (ecc_eval_test(obj) == FALSE) {
             return 0;
     }
     ecc_save_data(obj);
     return obj;
}

Das Objekt obj enthält am Ende des Programmablaufs alle Parameter, Daten und Ergebniswerte. Das Objekt kann in das Kommandofenster mit print obj ausgegeben werden.

Liste der parametrierbaren Elemente im Objekt:

Element Typ Beschreibung
obj = ecc_create_object(); object ecc_create_object() erstellt ein neues Emissions-Objektt.
obj.ref.limit_name = ssLimit; char  
obj.DriftCheck.bEnable = FALSE; char  
obj.ssFileName char Dateiname der Datendatei.
obj.ssFileName_2 char Dateiname der zweiten Datendatei (kalt).
obj.rsFileName_2_Enable char „1“ oder „0“.
obj.ssTemplate char Name der Vorlagendatei.
obj.CycleType = ETC_TRANSIENT or ETC_STATIONARY; real  
obj.ref.cycle_type = char Einer der folgenden Buchstaben: „O“, „L“, „M“ (OnRoad, Land Based, Marine)
obj.ref.cycle_regulation = char Wert aus der Spalte Regulation der Excel-Tabelle.
obj.ref.cycle_name = char Wert aus der Spalte Cycle
obj.ref.limit_name = char Wert aus der Spalte Category
obj.fuel.ssFuelName = „Diesel“; // „CNG“, char Entweder „Diesel“ oder „CNG“
os.fuel.FuelPercentH real Anteil Wasserstoff in Prozent (Default 13.5 % für Diesel)
os.fuel.FuelPercentC = strtod(dc_etc_get_number_str(para[„C_Anteil“].Value)); real Anteil Kohlenstoff in Prozent (Default 86.5 % für Diesel)
os.fuel.FuelPercentN = strtod(dc_etc_get_number_str(para[„N_Anteil“].Value)); real Anteil Stickstoff in Prozent
os.fuel.FuelPercentO = strtod(dc_etc_get_number_str(para[„O_Anteil“].Value)); real Anteil Sauerstoff in Prozent
os.fuel.FuelPercentS = strtod(dc_etc_get_number_str(para[„S_Anteil“].Value)); real Anteil Schwefel in Prozent
obj.fuel.H_C_ratio real Molar hydrogen ratio (H/C): Wird bei obj.fuel.ssFuelName == „CNG“ verwendet.
obj.ssEngineType = char Mögliche Werte: „Diesel Engine“ oder „Gas Engine“;
obj.coolingfan.On = „0“ // or „1“ char „0“ oder „1“
obj.coolingfan.p // Polynom Paramter char Polynom 4. Grades. Parameter für Polygon Power [kW] = p3*x³ + p2*x² + p1*x + p0 durch Komma getrennt: p3,p2,p1,p0, Beispiel: „4.6E-10,-1.9E-7,1.3E-4,0“
obj.PM.Enable = „0“ // or „1“ char Partikelfilter auswerten: „1“
obj.PM.Mf_mg = „100“ char Is the particulate mass sampled over the cycle in milligrams.
obj.PM.Gedf_kg_h = „100“ char Is the mass of equivalent diluted exhaust gas in kg/h. If the mass is only given in kg/test it must be converted to kg/h.
obj.PM.Msam_kg = „100“; char Is the mass of dilluted exhaus gas passing the particulate collector filters in kilograms.
obj.PM.T_c = „50“ char Temperatur in °C vor Filter.
obj.PM_cold.Mf_mg = „100“ char Kaltmessung, falls 2 Messungen angegeben werden.
obj.PM_cold.Gedf_kg_h = „100“ char Kaltmessung
obj.PM_cold.Msam_kg = „100“ char Kaltmessung
obj.PM_cold.T_c = „50“ char  
os.bRegressionPointDeletion; bool (1 oder 0) Regressionsberechnung Ja = 1, Nein = 0.
obj.bRegression1Hz bool (1 oder 0) Bei 1 wird bei transienten Zyklen die Regressionsberechnung mit
obj.ssTurboChargedType = „1“ // or „0“ char „1“: Turbomotor, „0“: Saugmotor
obj.ssNOxHOT = „1“ // or „0“ char „1“: Heißmessung (feucht): Keine Feuchtekorrektur.
obj.ssCertificationTest = „1“ // or „0“ char „1“: Es dürfen keine ungültigen Werte in den Signalen vorhanden sein. „0“: Es sind ungültige Werte in Grenzen erlaubt (< 10%).
obj.ssIdleSpeed_rpm = „600“ char Leerlaufdrehzahl in 1/min
obj.ssRatedSpeed_rpm = „2400“ char Maximaldrehzahl
obj.ssMaxTorque_nm = „500“ char Maximal-Drehmoment in Nm
obj.ssSpeedMaxTorque_rpm = „1800“ char  
obj.ssIdleTorque_nm = „10“ char Leerlaufmoment
obj.ssRatedPower_kw = „150“ char Sollleistung in kW
obj.ref.rsRefSpeed; real  
obj.ref.rsIdleSpeed; real  
obj.ref.rsIdleTorque = strtod(obj.ssIdleTorque_nm); real  
obj.ref.rsRefMaxTorque = strtod(obj.ssMaxTorque_nm); real  
obj.ref.rsRefMaxTorqueSpeed = strtod(obj.ssSpeedMaxTorque_rpm); real  
obj.ref.rsRefPower = strtod(obj.ssRatedPower_kw); real  
obj.ssXMLName = XML-File Name for settings. char Name der XML-Datei mit den Einstellwerten.
obj.rmData real Die Messdaten werden mit ecc_load_data(obj) in die Matrix geladen. Die Matrix enthält 33 Spalten. Nicht alle Spalten werden gefüllt. Die Bedeutung der Spalten wird weiter unten erklärt. Bei transienten Daten werden in der Funktion ecc_load_data() die Gaslaufzeiten angewendet und die Signale entsprechend verschoben. Falls die Zeit nicht bei 0 beginnt wird der Zeitkanal korrigiert. Falls die Länge der Messung größer als die definierte Zykluslänge ist, werden die Daten entsprechend gekürzt. Die Matrix rmData hat 33 Spalten. Auf die einzelnen Signale kann entsprechend der weiter unten beschriebenen Liste zugegriffen werden. Beispielsweise kann man auf die NOx-Messwerte wie folgt zugreifen:: rvNOx = obj.rmData[NOX_PPM;]
os.svVars char String Vektor mit 33 Elementen. Jedes Element enthält den Kanalnamen entsprechend der Spalten in obj.rmData.
os.response_time.air_intake_mass_kg_h real Gaslaufzeit in Sekunden.
os.response_time.ch4_ppm real  
os.response_time.co2_percent real  
os.response_time.co_ppm real  
os.response_time.fuel_mass_kg_h real  
os.response_time.hc_ppm real  
os.response_time.nmhc_ppm real  
os.response_time.nox_ppm real  
os.response_time.smoke_percent real  
os.response_time.smoke_k real  
os.response_time.smoke_mg_m3 real  
os.response_time.smoke415_mg_m3 real  
os.response_time.co2_raw_percent real  
os.response_time.co_raw_ppm real  
os.response_time.hc_raw_ppm real  
os.response_time.nox_raw_ppm real  
os.response_time.nh3_ppm real  
obj.DriftCheck.bEnable bool 0 oder 1
obj.deteriorationfactors = [.]; real  
obj.deteriorationfactors.CO = 1.0; real  
obj.deteriorationfactors.HC = 1.0; real  
obj.deteriorationfactors.NMHC = 1.0; real  
obj.deteriorationfactors.CH4 = 1.0; real  
obj.deteriorationfactors.NOx = 1.0; real  
obj.deteriorationfactors.NH3 = 1.0; real  
obj.deteriorationfactors.PM = 1.0; real  
obj.deteriorationfactors.PN = 1.0; real  
obj.ui.ssFunc_saturation_vapor_pressure char Name der Callbackfunktion.
obj.ui.ssFunc_humitity; char Name der Callbackfunktion.
obj.ui.ssFunc_etc_nox_factor char Name der Callbackfunktion.
obj.ui.ssFunc_dry_wet_correction char Name der Callbackfunktion.
obj.ui.ssFunc_dry_wet_pm_correction char Name der Callbackfunktion.

Liste der Spalten von obj.rmData:

alias("ETC_TIME_S", "1")
alias("SPEED_RPM",  "2");
alias("TORQUE_NM",  "3");
alias("AIR_INTAKE_TEMPERATURE_GRADC", "4");
alias("AIR_INTAKE_PRESSURE_MBAR", "5");
alias("AIR_INTAKE_MASS_KG", "6");
alias("FUEL_MASS_KG_H", "7");
alias("HYG_PERCENT", "8");
alias("BAROM_HPA", "9");
// EP Exhaust pipe
alias("CO2_PERCENT", "10");
alias("CO_PPM", "11");
alias("NOX_PPM", "12");
alias("HC_PPM", "13");
alias("SPEED_REFERENCE_RPM",  "14");
alias("TORQUE_REFERENCE_NM",  "15");
alias("ETC_SMOKE_PERCENT",  "16");
alias("ETC_ALPHA",  "17");
alias("CH4_PPM",  "18");
alias("CH4_RAW_PPM",  "19");
alias("DEWPOINTTEMP_GRADC", "20");
alias("ETC_SMOKE_K",  "21");
alias("ETC_SMOKE_MG_M3",  "22");
alias("ETC_SMOKE415_MG_M3",  "23");
alias("ETC_PARTICLE_NUMBER", "24");
alias("ETC_NH3_PPM", "25");
alias("HC_C3_PPM", "26"); // C3 Äquivalent. Mit Propan kalibiert
alias("CO2_RAW_PERCENT", "27");
alias("CO_RAW_PPM", "28");
alias("NOX_RAW_PPM", "29");
alias("HC_RAW_PPM", "30");
alias("HC_C3_RAW_PPM", "31");
alias("AIR_TEMPERATURE_AT_HUMIDITYSENSOR_GRADC", "32");
alias("UREA", "33");  // kg, kg/h, g/h, g/min

Aufbau der xml-Parameter-Datei

Beispiel für eine Parameterdatei:

<?xml version='1.0' encoding='utf-8'?>
<obj id='1'>
  <string key='FileType'>UniPlot ETC-Parameter File</string>
  <string key='Version'>2.0</string>
  <obj id='2' key='PM'>
        <string key='Enable'>1</string>
        <string key='Gedf_kg_h'>3170.23</string>
        <string key='Mf_mg'>0.53</string>
        <string key='Msam_kg'>3.61</string>
        <string key='T_c'>50</string>
  </obj>
  <obj id='3' key='PM_cold'>
        <string key='Gedf_kg_h'>0</string>
        <string key='Mf_mg'>0</string>
        <string key='Msam_kg'>0</string>
        <string key='T_c'>0</string>
  </obj>
  <number key='bRegression1Hz'>1</number>
  <obj id='4' key='channel'>
        <string key='air_intake_mass_kg_h'>Air_mass</string>
        <string key='air_intake_pressure_mbar'>P_intake</string>
        <string key='air_intake_temperature_gradC'>T_intake</string>
        <string key='alpha_percent'>Load</string>
        <string key='barom_hPa'>PAtmos</string>
        <string key='ch4_ppm'>--Not Used--</string>
        <string key='co2_percent'>CO2</string>
        <string key='co2_raw_percent'>--Not Used--</string>
        <string key='co_ppm'>CO</string>
        <string key='co_raw_ppm'>--Not Used--</string>
        <string key='dew_point_temp_c'>--Not Used--</string>
        <string key='fuel_mass_kg_h'>Fuel_mass</string>
        <string key='hc_c3_ppm'>--Not Used--</string>
        <string key='hc_c3_raw_ppm'>--Not Used--</string>
        <string key='hc_ppm'>HC</string>
        <string key='hc_raw_ppm'>--Not Used--</string>
        <string key='hyg_percent'>Humidity</string>
        <string key='nh3_ppm'>--Not Used--</string>
        <string key='nmhc_ppm'>--Not Used--</string>
        <string key='nox_ppm'>NOx</string>
        <string key='nox_raw_ppm'>--Not Used--</string>
        <string key='particle_n_cm3'>--Not Used--</string>
        <string key='particle_n_rd'>--Not Used--</string>
        <string key='smoke415_mg_m3'>CO</string>
        <string key='smoke_k'>Smoke_FSN_ge</string>
        <string key='smoke_mg_m3'>Smoke_FSN_ge</string>
        <string key='smoke_percent'>Smoke_FSN_ge</string>
        <string key='speed_reference_rpm'>Speed_Ref</string>
        <string key='speed_rpm'>Speed</string>
        <string key='time_s'>Time</string>
        <string key='torque_nm'>Torque</string>
        <string key='torque_reference_nm'>Torque_Ref</string>
  </obj>
  <obj id='5' key='coolingfan'>
        <string key='On'>1</string>
        <string key='p'>Default, 4.6E-10, -1.9E-7, 1.3E-4, 5</string>
  </obj>
  <obj id='6' key='fuel'>
        <number key='FuelPercentC'>86.5</number>
        <number key='FuelPercentH'>13.5</number>
        <number key='FuelPercentN'>0</number>
        <number key='FuelPercentO'>0</number>
        <number key='FuelPercentS'>0</number>
        <string key='ssFuelName'>Diesel</string>
  </obj>
  <obj id='7' key='ref'>
        <string key='cycle_name'>WHTC</string>
        <string key='limit_name'>Euro VI</string>
  </obj>
  <obj id='8' key='response_time'>
        <number key='air_intake_mass_kg_h'>0.40000000000000002</number>
        <number key='ch4_ppm'>0</number>
        <number key='co2_percent'>23.41</number>
        <number key='co2_raw_percent'>0</number>
        <number key='co_ppm'>20.120000000000001</number>
        <number key='co_raw_ppm'>0</number>
        <number key='fuel_mass_kg_h'>0.80000000000000004</number>
        <number key='hc_ppm'>3.73</number>
        <number key='hc_raw_ppm'>0</number>
        <number key='nmhc_ppm'>0</number>
        <number key='nox_ppm'>3.9199999999999999</number>
        <number key='nox_raw_ppm'>0</number>
        <number key='particle_n_cm3'>0</number>
        <number key='particle_n_rd'>0</number>
        <number key='smoke415_mg_m3'>0</number>
        <number key='smoke_k'>0</number>
        <number key='smoke_mg_m3'>0</number>
        <number key='smoke_percent'>0</number>
  </obj>
  <string key='ssCertificationTest'>1</string>
  <string key='ssEngineType'>Diesel Engine</string>
  <string key='ssFileName'>Z:\projects\emissionsauswertung\whtc_testdata.nc</string>
  <string key='ssFileName_2'/>
  <number key='ssFileName_2_Enable'>0</number>
  <string key='ssIdleSpeed_rpm'>600</string>
  <string key='ssIdleTorque_nm'>5</string>
  <string key='ssMaxTorque_nm'>3100</string>
  <string key='ssNCFile'>Z:\projects\emissionsauswertung\whtc_testdata.nc</string>
  <string key='ssNCFile_2'/>
  <string key='ssNOxHOT'>1</string>
  <string key='ssRatedPower_kw'>200</string>
  <string key='ssRatedSpeed_rpm'>2100</string>
  <string key='ssSpeedMaxTorque_rpm'>1150</string>
  <string key='ssTurboChargedType'>1</string>
</obj>

Ergebnis-Dokument

Hier das Ergebnis einer WHTC-Auswertung:

Die erste Seite enthält die Ergebnisse:

../../_images/emission_whtc_testdata_page1.png

Die zweite Seite zeigt die Ergebnisse der Regressionsanalyse:

../../_images/emission_whtc_testdata_verification.png

Die dritte Seite ziegt die Ergebnisse der Ermissiosberechnung für NOx , CO und HC:

../../_images/emission_whtc_testdata_emissions.png

Die vierte Seite zeigt eine Liste den Parametern:

../../_images/emission_whtc_testdata_parameter.png

History

Version Beschreibung
2.0.0 Neue Version: Konfiguration über Excel-Tabelle.
0.7.3 EPA 1065 zugefügt.
0.7.2 Kohlenstoffbilanz zugefügt.
0.7.1 Harnstoffverbrauchsberechnung zugefügt
0.6.9 WNTE: Falls die Messung länger als 1800s war wurde die Messung nicht auf 1800s beschnitten.
0.6.9 NRTC, NRHC: Die HC-Messung wurde auf feuchte Bezugsgrundlagen berechnet, obwohl HC nicht korrigiert werden muss, da feucht gemessen.
0.6.9 Die Feuchtekorrektur für NOx wurde vertauscht. Die Korrektur wurde versehentlich bei feucht gemessener Konzentration angewendet.
0.6.8 Modeerkennung bei WHTC, WNTE geändert.
0.6.8 NMHC wird aus CH4 und HC erst nach Integration berechnet (nur CNG).
0.6.8 Neuer Kanal Temperatur an der Feuchtemessstelle eingeführt.
0.6.7 Neue Berechnung Sättigungsdampfdruck
0.6.7 Bei Kalt/Warm-Zyklus wird nun der Kaltzyklus auf den ersten 4 Seiten ausgegeben
0.6.7 WHSC: Neues Verfahren um Stufen in den transienten Daten zu finden (über Ableitung des Solldrehmoments).
0.6.7 Neue Korrekturformel für Feuchtekorrektur Euro III nach Richtlinie 99/96/EG, vorher wurde nach Euro II berechnet.
0.6.7 WHSC, WHTC. Neue Korrekturformel für Feuchtekorrektur Euro VI nach Richtlinie UN/ECE-Regelung 49, Ergänzung 5.

Probleme

Falls Probleme auftreten, melden Sie sich bitte.

Für die Richtigkeit der Berechnungen und Ergebnisse der Emissionsberechnung können wir trotz sorgfältiger Prüfung keine Gewähr übernehmen.

id-1940897