Der Lenkradwinkel ist zum Unfallzeitpunkt von einem gleichmäßigen Verlauf mit Schwankungen um maximal 4 Grad zum Unfallzeitpunkt auf 0 gesprungen.
In der Stellungnahme vom Hersteller werden diese Sprünge als plausibel abgetan.
Auf diesem Bild kann man erkennen, dass der Unfall in einer Kurve stattgefunden hat. An der Ampel befinden sich 2 wartende Fahrzeuge. Man kann erkennen, dass der Unfall ziemlich genau im Scheitelpunkt der Kurve statt gefunden hat. Ein plötzliches Gerade aus lenken hätte hier dazu geführt, dass mein Fahrzeug nicht perfekt gerade hinter die anderen drei gefahren wäre, sondern eine eher seitlich verschobene Kollision statt gefunden hätte.
Im Fehlerspeicher ist darüber hinaus bereits ein früherer Ausfall des Datenbuswertes des Lenkrads dokumentiert:
Bufferoverflow
Der Unfalldatenspeicher wird im Unfallmoment als Block aus Daten in Hex Werten abgelegt und dieser Teilt ist auch im PDF, das vom Gutachter ausgelesen wurde, enthalten. Wir konnten die Position des Lenkradwinkels im Unfalldatenspeicher bereits bestimmen:
Die Lenkradwinkel werden als 8 bit unsigned Werte abgelegt. Ein 8-Bit Wert bedeutet eine maximale Größe von 28 = 256 Werten. Wenn man einen größeren Wert dort hineinschreibt, kommt es zu einem Überlauf (Bufferoverflow).
Baugleichheit mit den anderen Fahrzeugen
Die Unfälle mit Fahrzeugen einer anderen Marke sind hier ebenfalls gelistet, weil sie mit meinem Fahrzeug technisch eng verwandt sind. Deswegen sind die Handbücher dieser Fahrzeuge auch identisch. Beide Fahrzeugtypen verwenden die MEB (Modularer E-Antriebs-Baukasten) Plattform.
Wenn man die Werte des baugleichen Fahrzeugs betrachtet, lassen sich die abgelegten „invalid data“ durch einen Bufferoverflow erklären:
Der Lenkradwinkel berechnet sich hierbei folgendermaßen aus den Hex Daten:
man nimmt den Rohwert * Faktor 2 und zieht den Offset von – 254 ab. Definiert man dann Lenkwinkel, die größer als 254° oder kleiner als -254° als „invalid“ bekommt man genau die gespeicherten Werte.
Zu den Lenkradwinkel finden sich dem gegenüber Diagnosedaten, die nahelegen, dass der Winkel Werte bis 289 haben:
Wenn die Lenkradwinkel einen Offset von 298 haben, ist davon auszugehen, dass sie Werte um die +- 300 haben.
Die vorliegenden Daten der anderen Fahrer sind von Unfällen, bei denen sie in eine Parklücke einparken wollten und eine sehr starke Beschleunigung stattfand, laut Unfalldatenspeicher ausgelöst durch den Fahrer.
Ein Fahrer war dabei quer vorwärts nach rechts in eine Parklücke einzuparken.
Der zweite Unfalldatenspeichereintrag stammt von einem Fahrzeug, das quer nach links am eingeparkt wurde.
Was kann ein Überlauf in Software anrichten?
Ein Überlauf bedeutet, dass man bei der Programmierung für einen bestimmten Wert, den man abspeichern möchte, mit einer maximalen Größe des Wertes gerechnet hat und deshalb einen Platz in dieser Größe für ihn vorgesehen hat. Im hier dargestellten Fall geht es um den Lenkradwinkel, der in einen 8-Bit Wert gespeichert werden soll. Ein 8-Bit Wert bedeutet eine maximale Größe von 28 = 256 Werten. Wenn man einen größeren Wert dort hineinschreibt, kommt es zu einem Überlauf und je nach System kann dann dort plötzlich eine 0 stehen, was einer Geradeausfahrt entspricht.
Berühmte Beispiele für einen Überlauf: Softwarefehler in der Raumfahrt: In den Neunzigern stürzte alles ab – Golem.de https://glm.io/117537?n
Ob diese übergelaufenen Werte nur beim Abspeichern im Unfalldatenspeicher verwendet werden oder darüber hinaus ihren Weg als Inputparameter in die Fahrerassistenzsysteme gefunden haben und da zu unerwarteten Effekten führen, ist ohne Einsicht in den Code nicht zu klären. Mögliche Auswirkungen auf die Fahrerassistenzsysteme finden sich im Kapitel Mächtigkeit der Fahrerassistenzsyteme ein.
Darüber hinaus passt der abgespeicherte Lenkradwert zum Unfallzeitpunkt nicht zur Position des Fahrzeugs vor der Wand. Denn um gerade vor der Wand zu stehen, wie beim Einparken üblich, müssen am Ende die Räder wieder gerade gelenkt werden. Der Wagen stand zum Unfallzeitpunkt gerade vor der Wand.