.. highlightlang:: us .. index:: WHTC .. index:: NRTC .. index:: ETC .. index:: ESC .. _emission_evaluation: 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 :guilabel:`Emissionsauswertung=>Auswertung`. .. _installation-emission: Installation ------------ * Erzeugen im Verzeichnis :file:`uniplot\\addin` ein Unterverzeichnis :file:`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 :file:`rs_emission.adi` nach :file:`uniplot\\addin`. * Kopieren Sei die Datei :file:`ecc_configuration.xlsx` in ein Verzeichnis Ihrer Wahl. * Starten Sie UniPlot. * Markieren Sie im Dialog :ref:`tools-add-in-manager` das Addin "Emissions-Auswertung". * Wählen Sie :guilabel:`Emissionsauswertung=>Konfiguration` und wählen Sie die Datei mit den Zyklusbeschreibungen aus (:file:`ecc_configuration.xlsx`). .. index:: Emissionsauswertung .. _emission-main-dialog: Der Haupt-Dialog ---------------- .. image:: S:/uniplot-obj/images/emission-maindialog-de.* .. us.dialog .. us.dlgitem **Konfiguration** Zeigt eine Liste mit Konfigurationen an. Eine Konfiguration enthält alle Einstellungen für eine Auswertung außer dem Namen der Vorlage. .. us.dlgitem **Messdatei** Datendatei mit den Messwerten. Um eine Messdatei auszuwählen drücken Sie auf die Schaltfläche :guilabel:`...`. Die Daten müssen in einem von UniPlot unterstützten Format vorliegen. .. us.dlgitem **Messdatei-Kalt** Für WHTC, NRTC und FTP-HD kann eine Kaltmessung ausgewählt werden. .. us.dlgitem **Kanalzuordnung** Über den Schalter Kanalzuordnung wird das Dialogfeld für die Kanalauswahl geöffnet. Siehe :ref:`emission-data-channels`. .. us.dlgitem **Gaslaufzeiten** Der Schalter öffnet das Dialogfeld für die Definition der Gaslaufzeiten. Siehe :ref:`emission-gas-responsetime`. .. us.dlgitem **Vorlage** Name der Vorlage. Die Vorlage ist eine IPW-Datei mit den Diagrammen und Tabellen. Die Vorlage kann geändert werden. Siehe :ref:`emission-template`. .. us.dlgitem **Zyklustyp** Liste der unterstützten Zyklustypen, z. B. Marine, Non Road, On Road. Siehe :ref:`emission-excel-configuration`. .. us.dlgitem **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 :ref:`emission-excel-configuration`. .. us.dlgitem **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 :ref:`emission-excel-configuration`. .. us.dlgitem **Kategorie** Liste der Kategorien, z. B. Leistungsklassen. Siehe :ref:`emission-excel-configuration`. .. us.dlgitem **Kraftstoff** Liste der unterstützen Kraftstoffe. Die Kraftstoffzusammensetzung wird für die Berechnung des Feuchtefaktors für Kohlenmonoxid und Stickoxide benötigt. Siehe :ref:`emission-fuel-composition`. .. us.dlgitem **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. .. us.dlgitem **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) .. list-table:: :header-rows: 1 * - 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. .. us.dlgitem **NOx-Messung feucht** Falls die Option markiert ist, wird keine Feuchtekorrektur entsprechend ISO 16183, Formel 14 bzw. in :ref:`nox-correction` beschrieben durchgeführt. .. us.dlgitem **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. .. us.dlgitem **Motor mit Turbolader** Nötig für die Verifikation der transienten Zyklen zur Bestimmung der maximalen Abweichung vom Umgebungsdruck und Temperatur. .. us.dlgitem **Motorkennwerte** Die Motorkennwerte werden die die Regressionsanalyse benötigt. .. us.dialog .. index:: Emissionsauswertung-Kanalzuordnung .. _emission-data-channels: Kanalzuordnung -------------- Die Schaltfläche Kanalzuordnung öffnet das folgende Dialogfeld: .. image:: S:/uniplot-obj/images/emission-channelselection-de.* Ü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: .. list-table:: :header-rows: 1 * - 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. .. index:: Emissionsauswertung-Gaslaufzeiten .. _emission-gas-responsetime: 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. .. image:: S:/uniplot-obj/images/emission-gasresponsetimes-de.* .. index:: Emissionsauswertung-Kraftstoff .. _emission-fuel-composition: Kraftstoffzusammensetzung ------------------------- Über die Schaltfläche **Zusammensetzung** können die Massenanteile in % für die einzelnen Komponenten angegeben werden. .. image:: S:/uniplot-obj/images/emission-fuelcompostition-de.* 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 ------------- .. image:: S:/uniplot-obj/images/emission-configuration-de.* Im Konfigurationsdialog kann die Excel-Datei mit den Definitionen des Zyklen und Grenzwerte ausgewählt werden. Siehe :ref:`emission-excel-configuration`. .. index:: Emissionsauswertung-Vorlage .. _emission-template: Einrichtung der Vorlage ^^^^^^^^^^^^^^^^^^^^^^^ Eine Vorlage finden Sie im Verzeichnis :file:`\\uniplot\\addin\\rs_emission`. Die Vorlage hat den Namen :file:`etc_emission1.ipw`. .. index:: Emissionsauswertung-Regressionsanalyse .. _emission-regression: Ü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. .. index:: Emissionsauswertung-Berechnung .. _emission-excel-configuration: 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 :file:`ecc_configuration.xlsx` finden Sie im Verzeichnis :file:`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. .. image:: S:/uniplot-obj/images/emission-ecc-cycles.* .. list-table:: :header-rows: 1 * - 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. .. image:: S:/uniplot-obj/images/emission-ecc-limits.* .. list-table:: :header-rows: 1 * - 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. .. _emission-calculation: 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. .. _nox-correction: 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: .. code-block:: none 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. .. index:: Emissionsauswertung-ELR-Test .. _emission-elr-test: 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: .. code-block:: none 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. 3. 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. 5. The length of the 10% load period has to be between 18 and 22 seconds long. 6. 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*: .. image:: S:/uniplot-obj/images/emission-driftcorrection-en.* Dabei haben die Spalten die folgende Bedeutung: .. list-table:: :header-rows: 1 * - 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 :math:`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: .. math:: :nowrap: \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 * :math:`\rho_{Air}` Dichte der Luft 1.293 kg/m³ * :math:`C_{Conc}` Konzentration von Kohlenstoff im Dieselkraftstoff in Prozent, Beispiel: 86.5 % * :math:`M` Molare Masse in mol/g * :math:`m_{CO_{2, Air}}`, :math:`CO_2` in Luft in ppm (380ppm) * :math:`m_{x}`, Masse in g * :math:`V_{m, Air}` Molares Volument von Luft: 22.4 l/mol Der Wert für :math:`C_{Balance}` in Prozent wird in der Vorlage ausgegeben Textplatzhalter: ``$C_Balance_Deviation$`` Für die Molmassen werden die folgenden Konstanten verwendet: .. list-table:: :header-rows: 1 * - Komponente - Molare Masse in g/mol * - CO2 - 44.01 * - CO - 28.01 * - HC - 14.0 * - C - 12.0107 .. index:: Emissionsauswertung-UniScript-Interface .. _emission-uniscript-interface: 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: .. list-table:: :header-rows: 1 * - 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: .. highlightlang:: xml :: UniPlot ETC-Parameter File 2.0 1 3170.23 0.53 3.61 50 0 0 0 0 1 Air_mass P_intake T_intake Load PAtmos --Not Used-- CO2 --Not Used-- CO --Not Used-- --Not Used-- Fuel_mass --Not Used-- --Not Used-- HC --Not Used-- Humidity --Not Used-- --Not Used-- NOx --Not Used-- --Not Used-- --Not Used-- CO Smoke_FSN_ge Smoke_FSN_ge Smoke_FSN_ge Speed_Ref Speed Time Torque Torque_Ref 1 Default, 4.6E-10, -1.9E-7, 1.3E-4, 5 86.5 13.5 0 0 0 Diesel WHTC Euro VI 0.40000000000000002 0 23.41 0 20.120000000000001 0 0.80000000000000004 3.73 0 0 3.9199999999999999 0 0 0 0 0 0 0 1 Diesel Engine Z:\projects\emissionsauswertung\whtc_testdata.nc 0 600 5 3100 Z:\projects\emissionsauswertung\whtc_testdata.nc 1 200 2100 1150 1 .. highlightlang:: us Ergebnis-Dokument ----------------- Hier das Ergebnis einer WHTC-Auswertung: Die erste Seite enthält die Ergebnisse: .. image:: S:/uniplot-obj/images/emission_whtc_testdata_page1.* Die zweite Seite zeigt die Ergebnisse der Regressionsanalyse: .. image:: S:/uniplot-obj/images/emission_whtc_testdata_verification.* Die dritte Seite ziegt die Ergebnisse der Ermissiosberechnung für NOx , CO und HC: .. image:: S:/uniplot-obj/images/emission_whtc_testdata_emissions.* Die vierte Seite zeigt eine Liste den Parametern: .. image:: S:/uniplot-obj/images/emission_whtc_testdata_Parameter.* **History** .. list-table:: :header-rows: 1 * - 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. :sub:`id-1940897`