Reverse engineering der 5AM BINs

Die Uebersicht

Moderator: gk

Falkone
Morinisti
Morinisti
Beiträge: 142
Registriert: Dienstag 3. April 2018, 13:27
Wohnort: Dresden

Beitrag von Falkone »

Also ich bin in der Lage Daten aufzuzeichnen, zu ändern und wieder aufzuspielen.
Alles andere ist Hexerei :P

Ich bin nur "hellhörige" geworden als ich gelesen hab, dass das Steuergerät 2 Lamdasonden Eingänge hat. Wäre ja schick wenn man 2 Breitbandsonden nehmen könnte und das Steuergerät anschließend sich selbst Zylinder selektiv anpassen würde
:P aber so war das sicherlich nicht gemeint...
Moto Morini Shop: www.bessergemacht.de
Spezialteile für unsere 1200 Morinis.

Viele Grüße aus Dresden
Falko
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi,

neben mir beteiligt sich noch John, ein hervorragender Elektronik-Ingenieur, an der Analyse der 5AM. Er konnte die in der 5AM verwendete Platine freilegen (überaus schwierige Prozedur) und die verwendeten aktiven und passiven Bausteine identifizieren. Was wiederum für das Verständnis des Codes oft unerlässlich war.

Bild

Gruss
Meinolf
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Falko,
Falkone hat geschrieben:Also ich bin in der Lage Daten aufzuzeichnen, zu ändern und wieder aufzuspielen.
Interessant, welche Daten loggst du mit welchem Gerät?

Falkone hat geschrieben:Ich bin nur "hellhörige" geworden als ich gelesen hab, dass das Steuergerät 2 Lamdasonden Eingänge hat. Wäre ja schick wenn man 2 Breitbandsonden nehmen könnte und das Steuergerät anschließend sich selbst Zylinder selektiv anpassen würde
Nein, für die Verwendung von Breitbandsonden ist der Code nicht ausgelegt.
Falkone hat geschrieben:...und das Steuergerät anschließend sich selbst Zylinder selektiv anpassen würde
Ein selektive Anpassung erfolgt auch bei Verwendung der Sprungsonde(n).

Der Regelmechanismus bei closed loop-Betrieb verwendet 2 Größen. Der Short Term Fuel Trim (STFT) besorgt, als Faktor mit zulässigem Bereich von -25% bis +25%, die dynamische Anpassung. Wenn er dauerhaft überschritten wird, wird die Überschreitung in den Long Term Fuel Trim (LTFT) überführt, der zu den Einspritzwerten (Bereich von -1000 bis +1000) addiert/subtrahiert wird.

Da der Wirkbereich des closed loop-Betrieb relativ eng ist (TPS < 26°, Drehzahl < 4000rpm, Werte aus den Guzzi BINs) und in vielen Fällen zusätzlich noch unterbrochen wird, z.B. bei Beschleunigung, halte ich ihn für durchaus sinnvoll. Zum einen sind die Werte normalerweise so gewählt, dass sie einem entspannten Cruisen entsprechen. Da braucht man kein Lambda von 0,86 und das Leistungsmaximum dieses Wertes, sondern legt auf saubere Abgase und niedrigen Verbrauch Wert. Die Motoren laufen bei diesem Lambda einwandfrei.

Die oft mit closed Loop-Betrieb, meistens bei einer Lambdasonde, verknüpften Problem wie KFR haben ihre Ursache nicht im closed loop-Betrieb, sondern der miserablen Synchronisation der Lambda-Werte der beiden Zylinder an allen Stützpunkten durch den Hersteller. Keine der bisher von mir vermessenen BINs erreichte bei den originalen Fuel Delta-Werten auch nur annäherungsweise eine Gleichsetzung der Lambda-Werte. Das macht die Regelung irre, weil sie einem nicht erreichbaren Ziel nachläuft.

Meine Erfahrung ist, dass mit Gleichsetzung der Lambda-Werte (der absolute Wert ist nebensächlich) bereits eine Zielerreichung (besserer Motorlauf, kein KFR, mehr Drehmoment/Leistung, ...) von über 90% gegeben ist.

Die Optimierung der Übergänge der Stützpunkte, insbesondere im niedrigen Lastbereich,
bringt es auf 95%. Den Rest besorgt dann die Korrektur der Trim-Tabellen.

Und wenn man dann noch die ZZPs auf die gewählten Lambda-Werte einstellen kann (bzw. könnte, ich kenne keine im Fahrbetrieb für einen normalen Anwender nutzbare Prozedur, es bedarf eines gebremsten Prüfstandes), ist man bei 200% :-)

Damit hat man einen Motor, der nicht wieder zu erkennen ist und hat keine Schraube ändern müssen.

Gruss
Meinolf
VesaII
Morinisti
Morinisti
Beiträge: 240
Registriert: Dienstag 24. April 2018, 14:36

Beitrag von VesaII »

Wow

Just unbelievable, what you have done. Your research lifts us to different level.

I have been dreaming of simple things like adjusting STFT to optimize economy and fine tune 'accelerator pump' or fixing minor issues like shooting on low revs when engine breaking when TPS goes outside off main table, but you understand how things works in depth. Wow. Im speechless.

And after that i get curious :)

Obviously we all should fix this FuelAirTempPressureTrimTable_4D9A0 issue on our BINs or what do you think?

I have had my bike on dyno and main fuel maps are very nice, but wonder what else could be done to BIN and how?

Nice thing with Morinis is that there only is two different XDF.s, as far ai i know. My bike is 9.5 but i had Scrambler map as a base. It opens nicely with your XDF. Thank you very much for this.

One thing i have been thinking is proper ignition tuning with tools like this and dyno: https://www.xarin.com/

As i guess this kind things is only possible to tune in dyno with wideband lambdas, but before that basic things should be fixed in BIN

This why i wonder if you have simplified explanation of all those values in XDF and what are they for and how to use them for tuning and fixing issues?

Bild
Zuletzt geändert von VesaII am Sonntag 1. März 2020, 09:38, insgesamt 1-mal geändert.
Br,
Vesa
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Vesa,
VesaII hat geschrieben:Obviously we all should fix this FuelAirTempPressureTrimTable_4D9A0 issue on our BINs or what do you think?
Indeed I think that fixing all known mistakes is a good policy. For those interested here's a link to the worksheet used to correct the trim table:
https://drive.google.com/open?id=1GRL3h ... D_lOJYt1cO

The calculation is based on the general gas equation p*V=m*R*T and the abbreviated equivalence formulas once the constants are removed.

VesaII hat geschrieben:I have had my bike on dyno and main fuel maps are very nice, but wonder what else could be done to BIN and how?
I don't know if you are a German speaker, so here's a brief repetition of what I explained in a previous post.

The biggest bang for the least buck (but lot's of time needed) is setting lambda for both cylinders equal at every breakpoint reachable. A prequisite for this is setting the trim tables right.

The next step would be to evaluate the steps in the main fuel table at low loads. The free intake area in the throttle bodies when opening the butterfly valves follows a (quite complicated) cosine function.

The result is that the free intake area percentage changes at small throttle openings are equivalent to the changes at larger throttle openings. Just as an example to show the magnitude, a change from 4° to 4,5° would increase the free intake area by the same percentage as a change from 45° to 55°.

The low load area, also because it is overlayed by the idle valve, is the most difficult and time consuming to measure and correct. My experience is that for this area, ~10% of all breakpoints, 95% of the measuring and analyzing time is needed.

Lastly a correction of the ignition values following the chosen lambda values.

Bild

The overall duration of the combustion varies with the mixture. The best torque is gotten if the mean pressure reaches it's maximum at ~13°-15° after TDC, hence the combustion start must be changed accordingly.
VesaII hat geschrieben:This why i wonder if you have simplified explanation of all those values in XDF and what are they for and how to use them for tuning and fixing issues?
Because there are several hundred tables and scalars and ~600 RAM variables. Chasing and documenting them requires lot's of time. Which I invest in the Guzzi XDFs, since I drive Guzzis. The Morini XDFs are a subset and just written as a favor for PaulDaytona.

Cheers
Meinolf
Zuletzt geändert von Meinolf am Donnerstag 12. März 2020, 10:13, insgesamt 1-mal geändert.
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi,
Meinolf hat geschrieben: For those interested here's a link to the worksheet used to correct the trim table:
https://drive.google.com/open?id=1BZ7mP ... I8q0LDvsKN
after having posted above Vesa asked why the lowest breakpoint in my table is 700(mBar) and not 600(mBar) as in the Morini BIN.

The basic procedure behind all analog signals (such as TPS, temperature sensors, barometric sensor, MAP sensor, ...) is that they are read from sensors via an ADC (Analog/Digital converter) in the ECU. The 5AM has 12 ADC channels. The analog signal is converted to a digital value in a look-up table.

The air pressure values used by the OEM, 600mBar to 1024mBar, correspond to roughly -90m below sea level and 4207m above sea level.

If the actual barometric pressure (the same applies to almost all index tables and values) exceeds the upper or lower boundaries, an (unknown) interpolation is applied to calculate the values.

As I don't know the interpolation method I circumvented it and changed the barometric index to 700-1050mbar because, as we have experienced some weeks ago, barometric pressures in excess to 1024mBar can and do happen.

The result of these changes is that the air pressure trim factor is correctly calculated even if the barometric pressure exceeds 1024mBar.

And for the lower value, I'm not in the habit of driving 90m below sea level :-)

Cheers
Meinolf
Falkone
Morinisti
Morinisti
Beiträge: 142
Registriert: Dienstag 3. April 2018, 13:27
Wohnort: Dresden

Beitrag von Falkone »

Meinolf hat geschrieben:
Interessant, welche Daten loggst du mit welchem Gerät?
Ich logge mit dem Innovate LM-2 (Einzellsonde) (Drehzahl, TPS, AFR).
Je Zylinder zwei Sondengewinde eingeschweißt.
Auswertung dann mit Logworks.
Leider funktioniert bei mir das Umrechnen der kompletten Tabelle nach Wunsch-Lambda nicht so richtig.
Also, ich muss den Multiplikator für jeden Wert (Einspritzzeit) per Hand ermitteln und dann im Tunerpro eintragen. Mühsam aber es geht.

Normalerweiße soll logworks das alleine machen. Bei mir stützt Log works nur immer ab :cry:


Was benutzt du für Technik zum Loggen?

Sorry für die leicht inkompetente Frage aber deine letzten Beiträge waren sehr viel Input, welchen ich nicht richtig Filtern konnte.

Was ändert sich für mich als Hobby mapper durch nutzen deiner .xdf ?
Moto Morini Shop: www.bessergemacht.de
Spezialteile für unsere 1200 Morinis.

Viele Grüße aus Dresden
Falko
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Falko,

vor einigen Jahren habe ich auch mit 1 und 2ch LM2s angefangen. Die Teile sind aber so unzuverlässig, dass ich sie in die Tonne getreten habe und auf Zeitronix ZT-2 umgestiegen bin.

Logworks war bis vor ~2,5 Jahren ein durchaus brauchbares Programm, dann kamen Updates und die von dir erwähnten Abstürze.

Die Software von Zeitronix ist für jede Art von Analyse absolut unbrauchbar. Beard, der Autor der GuzziDiag-Suite, hat mir freundlicherweise eine Datenbank-Anwendung programmiert, mit der die immens großen Log-Datenmengen sehr komfortabel ausgewertet werden können.

Nach der Ermittlung der Lambda-Werte mit der Datenbank-Anwendung benutze ich ein selbstgeschriebenes Excel-Worksheet.

In dieser Ansicht, von links nach rechts, werden die Lambda-Werte aus der Datenbank eingetragen. In den Blöcken in der Mitte sind die aus Tunerpro kopierten Werte der BIN, mit der die Messungen gemacht wurden. Rechts dann die neuen Fuel-Werte.

Bild

Die neuen Fuel-Werte werden auf Basis meiner Lambda-Zielwerte errechnet. Die werden dann mit C&P wieder in Tunerpro und die neue BIN eingefügt.

Bild

Die Lambda-Zielwerte wiederum stützen sich die mit MAP-Sensoren ermittelten Unterdruckwerte im Ansaugtrakt. In der Ansicht sind die bereits normalisierten Werte in %. 100% entspricht dem zum Zeitpunkt der Messung vorliegenden Luftdruck.

Bild

Gruss
Meinolf
VesaII
Morinisti
Morinisti
Beiträge: 240
Registriert: Dienstag 24. April 2018, 14:36

Beitrag von VesaII »

Hi Meinolf

Noticed we need to replace , to . when we copy values from your Exel. Otherwise funny results.

I also try ty understand your way of tunin as it is a bit different to mine.

I simply went to dyno-shop and asked him to balance cylinders as good as he could. Especially at low openings. Lambda, single one, was off and target AFR was set to 13,8. After tuning was done, we simply enabled lambda. Engine still runs perfectly. Only difference is less fuel consumption and no exhaust shooting on idle.

Now i wonder what could be improved by logging with GuzziDiag or some more expensive tools like you use? And how to use lambda values and STFT to adjust AFR. And maybe raise lambra rpm limit from 4000 to 5000.

My case is described on these two:
http://www.ital-web.de/forum/viewtopic.php?t=6159
http://www.ital-web.de/forum/viewtopic. ... 0616#50616
Br,
Vesa
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Falko,
Falkone hat geschrieben:Was ändert sich für mich als Hobby mapper durch nutzen deiner .xdf ?
die XDF ist ein Werkzeug zur Lösung, nicht die Lösung.

Nach dem Auslesen einer BIN liegt erstmal eine Datei im Hex-Format vor. Damit kann der durchschnittliche Benutzer nicht viel anfangen, Assembler können nicht mehr viele lesen und verstehen.

Bild

Nach dem Einlesen in einen Dissassembler, der schon eine Übersetzung in Mnemonics macht und und versucht die Struktur zu erkennen, sieht dieselbe Stelle, beginnend bei 0x02CE00, so aus. Hier habe ich allerdings bereits alles, was in blauer Farbe dargestellt ist, bearbeitet und die Variablen mit sprechenden Namen versehen.

Bild

Wenn man sich eine Stelle genauer anschaut, die vorhergehende Umsetzung der Adressen vom Seg:Offset-Format in reale Adressen und das Verständnis des Unterprogrammes welches die Indizes aufruft, richtig waren, bleibt dies übrig.

Eine Tabelle an 4E658 wird benutzt den Index DB48. Dieser wiederum ist die aktuelle Drehzahl, berechnet in einem anderen Unterprogramm, mit 32 Stützpunkten. Das heisst schon mal, dass die Tabelle im 32x1 signed Integer-Format vorliegt.

Der auf Basis der aktuellen Drehzahl aus der Tabelle ermittelte Wert wird von R4 nach R12 übertragen und im nächsten Schritt mit Hilfe eines anderen Unterprogramms durch 1000 geteilt. Dieses Ergebnis ist dann der skalierte Tabellen-Wert. Zu diesem Zeitpunkt ist es aber noch nicht klar, wofür dieser Wert steht und was er bewirkt. Erst die Analyse der kompletten Routine, in der dieser Code steckt sowie die aufrufenden Programme ermöglichen die Auslegung als ein Wert, der bei Beschleunigung in der Berechnung der Einspritzwerte als Faktor verwendet wird.

Bild

Das alles führt dann zu dem Verständnis, welches die Erstellung eines Parameters, der Tabelle in diesem Fall, in einer XDF ermöglicht. Eine signed Integer-Tabelle mit 32 Werten, die Konversion erfolgt durch X/1000.

Bild

Und damit kann man dann eine Änderung der Einspritzmenge bei Beschleunigungsvorgängen auf Basis einer bekannten Tabelle vornehmen. Wenn man es denn so möchte und die Ergebnisse einer Änderung messen kann.

Gruss
Meinolf
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Vesa
VesaII hat geschrieben: Noticed we need to replace , to . when we copy values from your Exel. Otherwise funny results.
Yes, European style decimal notation in Excel and US style in TunerPro.
VesaII hat geschrieben: I simply went to dyno-shop and asked him to balance cylinders as good as he could. Especially at low openings. Lambda, single one, was off and target AFR was set to 13,8. After tuning was done, we simply enabled lambda. Engine still runs perfectly. Only difference is less fuel consumption and no exhaust shooting on idle.
That's, using a dyno instead of road-logging, the same approach I use. And the same results I'M striving for.
VesaII hat geschrieben: Now i wonder what could be improved by logging with GuzziDiag or some more expensive tools like you use?
GuzziDiag is not the right tool for logging. It uses the OBD values sent by the ECU, the total bandwidth is ~ 16HZ and shared by every OBD value requested. Requesting 4 values (for example rpm/TPS/lambda voltage/engine run mode) delivers these values sequentially at ~4Hz. Much to slow and without additional hardware there's no way to log the data.

The question what could be improved is yours to answer. If you are satisfied, leave it be.
VesaII hat geschrieben: And how to use lambda values and STFT to adjust AFR. And maybe raise lambra rpm limit from 4000 to 5000.
Before wondering how to use something I'd ask myself what I want to change. And then try to figure out by which means the target can be achieved.

The closed loop function is a very complex one. The code uses 11 engine run mode states, 7 lambda mode states, 4 lambda control states, 5 power state modes plus several temperature thresholds to determine if the engine is in closed loop or not. And which trim values to use when it is in closed loop.

Disabling closed loop (and foregoing the advantage of it) and setting the lambda values based on measurements is easier.

Cheers
Meinolf
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi,

aufgrund der einiger Fragen zu der Berechnung der ZZP folgend eine Übersicht der Abläufe.

Die beginnt in der Trap50-Routine, in der die Verzweigungsbedingungen, ob eine Berechnung gerade vonnöten ist, überprüft werden. Also wie hoch ist die Drehzahl, treffen Start-Interlock Stati zu, ist die Zündung an und so weiter.

Bild

Wenn das alles erfüllt ist, wird eigentliche Sub aufgerufen. Die beginnt auch wieder mit einer Sichtigung der Lage. Der Reihe nach, welche Zylinder-Indexierung soll benutzt werden, wie ist die TPS-Stellung, wenn diese nicht auf WOT steht dann die Überprüfung der gerade vorliegenden Drehgeschwindigkeit des TPS in °/s, eine Überprüfung welcher Gang eingelegt ist, sind wir noch im Warm-up Modus und letzlich der Check, ob der Motor gestartet werden kann oder schon läuft.

Bild

Anschließend die erste Filterung nach Engine_run_modes. Die Modi 10 und 11 werden separat behandelt. Wenn es keiner von diesen ist wird geprüft, welche der ZZP-Tabellen benutzt werden soll.

Bild

Das erfolgt in einem Unterprogramm, abhängig von TPS-Stellung und Kupplung/Neutral-Stellung.

Bei geschlossenem TPS wird eine der beiden 1D Idle Ignitionen-Tabellen im weiteren Verlauf benutzt. Bei geöffnetem TPS word die Main-Tabelle benutzt. Dier Übergänge von geschlossen zu offen und der von offen zu ganz offen sind Lernwerte, die im laufenden Betrieb ermittelt werden.

Bild

Nach diesem Schritt geht es mit der Abfrage nach vorhandener Zylinder-Anzahl und der Trennung zwischen vorderem und hinteren Zylinder weiter. Wenn gerade der vordere dran ist, werden die Werte aus der Main Ign-Tabelle verwendet. Wenn der hintere dran ist, werden die Werte aus der Delta-Tabelle gesucht und zu der der Main Tabelle addiert/subtrahiert.

Bild

Mit dem dann aktuellen ZZP-Wert geht's in die Temperatur-Korrektur. Die Logik ist wie bei der Auswahl der ZZP-Tabellen, unterschiedliche Korrekturfaktoren abhängig von TPS-, Kupplung und Neutral-Stellung.

Bild

Mit dem getrimmten Wert wieder zurück in die eigentliche Routine und eine Prüfung, ob ZZP-Maximalwerte überschritten werden. Falls ja, werden diese im weiteren Verlauf als Default verwendet. Ebenfalls wieder Entscheidungen zwischen den Tabellen auf Basis von TPS, Kupplung und Neutral.

Bild

Bild

Bild

Und zum Abschluss die Berechnung der Ignition Dwell-Werte.

Bild

Ein oder zwei us Pause und zurück in die aufrufende Prozedur.

Gruss
Meinolf
VesaII
Morinisti
Morinisti
Beiträge: 240
Registriert: Dienstag 24. April 2018, 14:36

Beitrag von VesaII »

Hello Meinolf

Dot is not the reason. It is not possible to use multiply function either, as i have done with Ebis XDF. Cannot be a major issue, but i cannot figure out how to fix it. Please advice.
Br,
Vesa
Meinolf
Bialbero
Bialbero
Beiträge: 27
Registriert: Donnerstag 20. Februar 2020, 14:04

Beitrag von Meinolf »

Hi Vesa,
VesaII hat geschrieben:Dot is not the reason. It is not possible to use multiply function either, as i have done with Ebis XDF. Cannot be a major issue, but i cannot figure out how to fix it. Please advice.
I assume you are refering to the air temp/air pressure correction table. The decimal notation doesn't come into play if you use my worksheet

The spreadsheet contains 5 tables. The upper left one (A2-O18) calculates the correct factors, the lower left one (A39-O54) contains the correct factors as hex values. These values are copied into Tunerpro.

The other 3 tables are just for information and show the deviations between corrected and original trim factors (R20-AD36) and the %-changes using the corrected values (A21-=36).

Bild

The only thing which might need changing are the air pressure values if you want to continue using the original ones used in the Morini BIN.

Cheers
Meinolf
morluk
Morinisti
Morinisti
Beiträge: 291
Registriert: Montag 22. Juli 2013, 06:47
Wohnort: Langquaid

Beitrag von morluk »

Hallo Meinolf,

Ich verfolge sehr interessiert deine Arbeit und freue mich, dass du auch Zeit für Moto Morini aufbringst.
Vesa hat in seine 9 ½ andere Einspritzdüsen eingebaut und das Mapping auf die veränderten Durchflussraten angepasst.
Da mir der Verbrauch zu hoch war habe ich seine Umbauten auch gemacht.

Erste Tests auf kurzen Fahrten waren sehr vielversprechend. Konstantfahrruckeln weg, 50 Km/h im 4. Gang etc.
Auch der Verbrauch ist um einiges geringer, da stehen allerdings wetterbedingt noch genauere Messungen aus.

Du hattest in einem deiner Beiträge eine excel Tabelle für den Druck Temperatur veröffentlicht. Diese Tabelle wollte ich in das Map von Vesa übernehmen.
Dabei bin ich auf Probleme gestoßen. Wenn ich im Tunerpro deine XDF Datei verwende, wird nach jeder Veränderung eines Wertes 65353 angezeigt.
D.h. der Wert wird übernommen und richtig angezeigt. Sobald ich die Tabelle nochmals öffne steht in den Editierten Feldern 65353.
Es ist egal ob ich die Werte aus der Tabelle mit copy/paste übertrage oder Werte manuell eintrage. Das Thema mit der Wertanzeige (Punkt statt Komma) habe ich beachtet.
Sobald ich die „alte“ XDF Datei verwende kann ich Werte ändern.
Mache ich bei deiner umfangreicheren XDF Datei irgendetwas falsch?
Deine Tabelle hat andere Luftdruckwerte, ich habe nur die Werte geändert, die in der Originaltabelle vorhanden waren.
Es gibt eine Tabelle für die Luftdruckeckpunkte, kann ich die einfach erweitern?

Bei Temperaturen unter 0° C lief der Motor schlechter als mit der originalen Temperatur/Druck Tabelle.
Ich habe deshalb die Werte bei niedrigen Temperaturen angepasst, muss sie allerdings noch testen. Am Wochenende soll es nachts nochmal kalt werden….

Heinz
Antworten

Zurück zu „Mapping“