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 Unterverzeichnisrs_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
nachuniplot\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¶
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:
- Zeitkanal muss mindestens 50% gültige Werte enthalten.
- Die Abschnittslänge aufeinander folgender ungültiger Messpunkte ist auf Maximal 10 Sekunden begrenzt.
- 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:
Ü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.
Kraftstoffzusammensetzung¶
Über die Schaltfläche Zusammensetzung können die Massenanteile in % für die einzelnen Komponenten angegeben werden.
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¶
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.
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.
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 * 1e6N = 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.
- 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.
- 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.
- The length of the 10% load period has to be between 18 and 22 seconds long.
- 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:
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 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:
Dabei ist
- Dichte der Luft 1.293 kg/m³
- Konzentration von Kohlenstoff im Dieselkraftstoff in Prozent, Beispiel: 86.5 %
- Molare Masse in mol/g
- , in Luft in ppm (380ppm)
- , Masse in g
- Molares Volument von Luft: 22.4 l/mol
Der Wert für 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:
Die zweite Seite zeigt die Ergebnisse der Regressionsanalyse:
Die dritte Seite ziegt die Ergebnisse der Ermissiosberechnung für NOx , CO und HC:
Die vierte Seite zeigt eine Liste den Parametern:
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