-
Die Erfindung geht aus von einem Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug. Gegenstand der vorliegenden Erfindung sind auch eine Vorrichtung und ein Computerprogrammprodukt zur Durchführung eines solchen Verfahrens zur Aufzeichnung von Ereignisdaten in einem Fahrzeug sowie ein computerlesbares Speichermedium, auf dem das Computerprogrammprodukt gespeichert ist.
-
Hochautomatisiertes Fahren verspricht sichereren Verkehr aufgrund fehlender menschlicher Fehler. Gleichzeitig erhöht es den Bedarf an Datenerfassung in solchen Fahrzeugen mit hochautomatisierten Fahrfunktionen für den Fall, dass etwas schief geht, so dass alle erforderlichen Informationen für spätere Analysen und Produktverbesserungen zur Verfügung stehen. Daher werden Verfahren zur Aufzeichnung von Ereignisdaten in solchen Fahrzeugen eingesetzt. Hierbei werden fortlaufend Fahrzeugdaten von mindestens einem Fahrzeugsystem empfangen und als Ereignisdaten in Datenrahmen mit einer vorgegebenen Größe geschrieben, wobei die einzelnen Datenrahmen in mindestens einem flüchtigen Speicher gespeichert werden. Die gespeicherten Datenrahmen werden verwaltet und solange in dem mindestens einen flüchtigen Speicher verfügbar gehalten, bis die in den einzelnen Datenrahmen gespeicherten Ereignisdaten älter als ein vorgegebener maximaler Voreigniszeitpunkt sind oder in Reaktion auf ein erkanntes vorgegebenes Ereignis persistent in mindestens einem nichtflüchtigen Speicher gespeichert sind. Eine Vorrichtung zur Durchführung eines solchen Verfahrens zur Aufzeichnung von Ereignisdaten umfasst in der Regel eine Datenbereitstellungsanordnung, eine Ereigniserkennungsanordnung und eine Datenaufzeichnungsanordnung.
-
Offenbarung der Erfindung
-
Das Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug mit den Merkmalen des unabhängigen Patentanspruchs 1 hat den Vorteil, dass nur eine aktuelle Schreibpartition vorhanden ist, auf welche nur eine Funktion exklusiv zugreifen kann, so dass keine anderen Funktionen auf die aktuelle Schreibpartition zugreifen und deren Dateninhalte verändern können.
-
Ausführungsformen der vorliegenden Erfindung stellen ein Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug zur Verfügung, wobei fortlaufend Fahrzeugdaten von mindestens einem Fahrzeugsystem empfangen und als Ereignisdaten in Datenrahmen mit einer vorgegebenen Größe geschrieben werden. Die einzelnen Datenrahmen werden in mindestens einem flüchtigen Speicher gespeichert, wobei die gespeicherten Datenrahmen verwaltet und solange in dem mindestens einen flüchtigen Speicher verfügbar gehalten werden, bis die in den einzelnen Datenrahmen gespeicherten Ereignisdaten älter als ein vorgegebener maximaler Voreigniszeitpunkt sind oder in Reaktion auf ein erkanntes vorgegebenes Ereignis persistent in mindestens einem nichtflüchtigen Speicher gespeichert sind. Hierbei werden mehrere Partitionen mit einer vorgegebenen Größe vorgesehen, wobei in Abhängigkeit von mindestens einem Schreibkriterium eine der Partitionen als aktuelle Schreibpartition bestimmt wird, in welche die empfangenen Referenzinformationen der einzelnen Datenrahmen geschrieben werden.
-
Zudem wird eine Vorrichtung zur Durchführung eines solchen Verfahrens zur Aufzeichnung von Ereignisdaten in einem Fahrzeug vorgesehen, welche eine Datenbereitstellungsanordnung, einen Pufferblock, eine Ereigniserkennungsanordnung und eine Datenaufzeichnungsanordnung umfasst. Die Datenbereitstellungsanordnung ist ausgeführt, fortlaufend aufzuzeichnende Fahrzeugdaten von mindestens einem Fahrzeugsystem zu empfangen und als Ereignisdaten in Datenrahmen mit einer vorgegebenen Größe zu schreiben und die einzelnen Datenrahmen in mindestens einem flüchtigen Speicher zu speichern. Der Pufferblock ist ausgeführt, die gespeicherten Datenrahmen zu verwalten und solange in dem mindestens einen flüchtigen Speicher verfügbar zu halten, bis die in den einzelnen Datenrahmen gespeicherten Ereignisdaten älter als ein vorgegebener maximaler Voreigniszeitpunkt sind oder in Reaktion auf ein durch die Ereigniserkennungsanordnung erkanntes vorgegebenes Ereignis persistent in mindestens einem nichtflüchtigen Speicher gespeichert sind. Hierbei umfasst der Pufferblock eine Schreibfunktion und mehrere Partitionen mit einer vorgegebenen Größe, wobei die Schreibfunktion ausgeführt ist, in Abhängigkeit von mindestens einem Schreibkriterium eine der Partitionen als aktuelle Schreibpartition zu bestimmen und von der Datenbereitstellungsanordnung empfangene Referenzinformationen der einzelnen Datenrahmen in die aktuelle Schreibpartition zu schreiben.
-
Von Vorteil ist auch ein Computerprogrammprodukt mit Programmcode, der auf einem maschinenlesbaren Träger, wie einem Halbleiterspeicher, einem Festplattenspeicher oder einem optischen Speicher gespeichert ist und zur Durchführung der Auswertung verwendet wird, wenn das Computerprogramm ausgeführt wird.
-
Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen und Weiterbildungen sind vorteilhafte Verbesserungen des im unabhängigen Patentanspruch 1 angegebenen Verfahrens zur Aufzeichnung von Ereignisdaten in einem Fahrzeug und der im unabhängigen Patentanspruch 20 angegebenen Vorrichtung zur Aufzeichnung von Ereignisdaten in einem Fahrzeug möglich.
-
Unter der Datenbereitstellunganordnung kann vorliegend eine Verarbeitungskomponente verstanden werden, welche alle Verarbeitungsschritte von der Erfassung der ursprünglichen Fahrzeugdaten bis zur Organisation und Speicherung der Fahrzeugdaten als Ereignisdaten in flüchtigen Speicherblöcken umfasst, so dass die Ereignisdaten für eine begrenzte Zeitspanne in dem mindestens einen flüchtigen Speicher verfügbar gehalten werden können. Unter der Ereigniserkennungsanordnung kann vorliegend eine Verarbeitungskomponente verstanden werden, welche kontinuierlich den Zustand des Fahrzeugs überwacht und entscheidet, wann eine vorkonfigurierte Situation bzw. ein vorgegebenes Ereignis aufgetreten ist, welche bzw. welches die dauerhafte Speicherung von vorgegebenen Fahrzeugdaten erfordert. Bei einem solchen vorgegebenen Ereignis kann es sich beispielsweise um eine erkannte Fehlfunktion eines der Fahrzeugsysteme oder um einen erkannten Aufprall des Fahrzeugs auf ein feststehendes Hindernis oder ein anderes Fahrzeug handeln. Unter der Datenaufzeichnungsanordnung kann vorliegend eine Verarbeitungskomponente verstanden werden, welche die Verarbeitungsschritte umfasst, um die in dem mindestens einen flüchtigen Speicher zur Verfügung stehenden Fahrzeugdaten abzuholen, eventuell weitere Datentransformationen, wie beispielsweise eine Verschlüsselung durchzuführen und die Fahrzeugdaten schließlich persistent in mindestens einem nichtflüchtigen Speicher zu speichern.
-
Hierzu können die Datenbereitstellunganordnung, die Ereigniserkennungsanordnung und die Datenaufzeichnungsanordnung jeweils mindestens eine Schnittstelle aufweisen, die hard- und/oder softwaremäßig ausgebildet sein kann. Bei einer hardwaremäßigen Ausbildung kann die mindestens eine Schnittstelle beispielsweise Teil eines sogenannten System-ASICs sein, der verschiedenste Funktionen der Datenbereitstellunganordnung beinhaltet. Es ist jedoch auch möglich, dass die Schnittstellen eigene, integrierte Schaltkreise sind oder zumindest teilweise aus diskreten Bauelementen bestehen. Bei einer softwaremäßigen Ausbildung können die Schnittstellen Softwaremodule sein, die beispielsweise auf einem Mikrocontroller neben anderen Softwaremodulen vorhanden sind.
-
Über die mindestens eine Schnittstelle kann die Datenbereitstellunganordnung die aufzuzeichnenden Fahrzeugdaten von dem mindestens Fahrzeugsystem empfangen, welches beispielsweise als Umfelderfassungssystem oder als Personenschutzsystem oder als Fahrdynamiksystem oder als Bremssystem ausgeführt sein kann. Zudem kann die Datenbereitstellunganordnung über mindestens eine Schnittstelle mit dem mindestens einen flüchtigen Speicher verbunden sein, um die empfangenen Fahrzeugdaten für eine begrenzte Zeitspanne in dem mindestens einen flüchtigen Speicher verfügbar zu halten. Des Weiteren kann die Datenbereitstellunganordnung weitere Komponenten zur Aufbereitung und Vorverarbeitung der empfangenen Fahrzeugdaten umfassen. Die Ereigniserkennungsanordnung kann über die mindestens eine Schnittstelle Fahrzeugdaten bzw. Informationen von dem mindestens einen Fahrzeugsystem empfangen und die empfangenen Fahrzeugdaten bzw. Informationen zur Erkennung von relevanten Ereignissen auswerten. So können die Datenbereitstellunganordnung bzw. die Ereigniserkennungsanordnung beispielsweise jeweils mit einem Fahrzeugdatenbus gekoppelt werden, so dass die Datenbereitstellunganordnung bzw. die Ereigniserkennungsanordnung Fahrzeugdaten und Informationen von einer Vielzahl von Fahrzeugsystemen empfangen kann, die mit dem Fahrzeugdatenbus verbunden sind.
-
Die Datenaufzeichnungsanordnung kann über die mindestens eine Schnittstelle mit dem mindestens einen flüchtigen Speicher verbunden sein, um die persistent zu speichernden Daten auszulesen. Zudem kann die Datenaufzeichnungsanordnung über die mindestens eine Schnittstelle mit dem mindestens einen nichtflüchtigen Speicher verbunden sein, um die persistent zu speichernden Daten in dem mindestens einen nichtflüchtigen Speicher zu speichern.
-
Unter dem Pufferblock kann vorliegend eine Komponente verstanden werden, welche die Verbindung zwischen der Datenbereitstellunganordnung, der Ereigniserkennungsanordnung und der Datenaufzeichnungsanordnung herstellt. Hierbei hält der Pufferblock die von der Datenbereitstellunganordnung zur Verfügung gestellten Fahrzeugdaten in dem mindestens einen flüchtigen Speicher so lange aufrecht, bis die Daten zu alt sind, um für ein Ereignis relevant zu sein. In diesem Fall gibt der Pufferblock den Speicherbereich frei, welcher in dem mindestens einen flüchtigen Speicher für die jetzt veralteten Fahrzeugdaten verwendet wird, so dass dieser Speicherbereich von der Datenbereitstellunganordnung wiederverwendet werden kann, um neuere Fahrzeugdaten zu speichern. Alternativ benachrichtigt die Ereigniserkennungsanordnung den Pufferblock, dass alle Fahrzeugdaten aus einem bestimmten Erfassungszeitfenster der Datenaufzeichnungsanordnung zur Verfügung zu stellen sind. In diesem Fall stellt der Pufferblock sicher, dass alle Fahrzeugdaten des vorgegebenen aktuellen Ereigniszeitfensters verfügbar bleiben, bis die Datenaufzeichnungsanordnung diese Fahrzeugdaten vollständig persistent in dem mindestens einen nichtflüchtigen Speicher gespeichert hat. Dazu gehört auch der Grenzfall, dass die Datenaufzeichnungsanordnung die Fahrzeugdaten so langsam speichert, dass die Fahrzeugdaten für neuere Ereignisse inzwischen veraltet sind. Auch dann darf der Pufferblock den korrespondierenden Speicherbereich in dem mindestens einen flüchtigen Speicher nicht frei machen oder überschreiben.
-
Die Datenbereitstellunganordnung, die Ereigniserkennungsanordnung und die Datenaufzeichnungsanordnung können über mehrere Komponenten im Fahrzeug verteilt werden, welche über eine geeignete Fahrzeugnetzwerkinfrastruktur miteinander verbunden sind. Beispielsweise kann die Datenbereitstellunganordnung auf mehrere „Datenquellen“ wie beispielsweise Rechnereinheiten implementiert werden, welche die Fahrzeugdaten an andere Geräte im Fahrzeug weiterleiten können, welche die Ereigniserkennung und weitere Nachverarbeitungsschritte durchführen und den Pufferblock enthalten können, während weitere Nachverarbeitungsschritte und die Datenspeicherung auf einer weiteren Rechnereinheit ausgeführt werden können. Die Datenbereitstellung, Ereigniserkennung und Datenaufzeichnung können in separaten Abläufen ausgeführt werden. Darüber hinaus kann die Vorrichtung bzw. Hardware, auf welcher das Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug ausgeführt wird, mehrere CPU-Kerne oder mehrere Prozessoren bereitstellen, welche diese Abläufe wirklich parallel ausführen können. Der Pufferblock kann Aufrufe durch die Datenaufzeichnungsanordnung, die Ereigniserkennungsanordnung und die Datenbereitstellunganordnung voneinander trennen, so dass die Ergebnisse in jeder paralleten Ausführung immer korrekt sind. Darüber hinaus kann die Datenbereitstellunganordnung den Pufferblock in mehreren parallelen Abläufen aufrufen. Die Datenaufzeichnungsanordnung wird in einem einzelnen Ablauf ausgeführt, d.h. der Pufferblock muss keine einzelnen Aufrufe von der Datenaufzeichnungsanordnung voneinander trennen. Die Schnittstellenverfahren, welche der Pufferblock bereitstellt, werden von den Schnittstellenkomponenten aufgerufen und laufen somit in ihren jeweiligen Abläufen.
-
Besonders vorteilhaft ist, dass in Reaktion auf eine Anforderung und in Abhängigkeit von mindestens einem vorgegebenen Lesekriterium, welches zumindest ein aktuelles Ereigniszeitfenster umfasst, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, eine der anderen Partitionen als aktuelle Lesepartition bestimmt werden kann. Das bedeutet, dass die aktuelle Schreibpartition, welche beispielsweise durch einen Schreibpartitionszeiger markiert werden kann, nicht als aktuelle Lesepartition bestimmt werden kann, welche beispielsweise durch einen Lesepartitionszeiger markiert werden kann. Hierbei können in der aktuellen Lesepartition enthaltene Referenzinformationen von Datenrahmen ausgelesen und weitergeleitet werden, welche persistent aufzuzeichnende Ereignisdaten enthalten. Die mit den weitergeleiteten Referenzinformationen korrespondierenden Datenrahmen können persistent in dem mindestens einen nichtflüchtigen Speicher gespeichert werden. Durch die einzige Lesepartition, auf welche nur eine Funktion exklusiv zugreifen kann, kann in vorteilhafter Weise verhindert werden, dass andere Funktionen auf die aktuelle Lesepartition zugreifen und deren Dateninhalte verändern können.
-
In vorteilhafter Ausgestaltung des Verfahrens kann ein Startzeitpunkt des aktuellen Ereigniszeitfensters als Zeitstempel in Bezug auf einen aktuellen Nullreferenzzeitpunkt vorgegeben werden. Ein Endzeitpunkt des aktuellen Ereigniszeitfensters kann als Zeitdifferenz zum Startzeitpunkt vorgegeben werden, wobei der aktuelle Nullreferenzzeitpunkt bei Bedarf neu definiert werden kann. Hierbei kann ein erster Nullreferenzzeitpunkt einem Startzeitpunkt des Fahrzeugs entsprechen. Das Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug muss sich mit keinem Ereignis beschäftigen, welches zeitlich vor dem Beginn der aktuellen Fahrt liegt. Daher muss auch der Nullreferenzzeitpunkt nicht vor dem Fahrtbeginn liegen. Der aktuelle Nullreferenzzeitpunkt kann beispielsweise neu definiert werden, wenn ein neues aktuelles Ereigniszeitfenster nicht mit dem aktuellen Nullreferenzzeitpunkt darstellbar ist, weil der Startzeitpunkt des neuen aktuellen Ereigniszeitfensters zeitlich zu weit von dem aktuellen Nullreferenzzeitpunkt entfernt ist. Üblicherweise kann ein Zeitfenster als zwei absolute Zeitpunkte, d. h. als zwei Zeitstempel, einem Startzeitstempel und einem Endzeitstempel dargestellt werden. Zur Darstellung eines solchen Zeitstempels werden 32 Bits benötigt, so dass zur Darstellung eines Zeitfensters 64 Bit benötigt werden. Ein 32-Bit-Prozessor kann nur 32 Bit atomar, d.h. in einer Maschinenanweisung, lesen oder schreiben, daher erfordern 64 Bit mehr als eine Maschinenanweisung, was nicht atomar ist. Um das aktuelle Ereigniszeitfenster in 32 Bit darzustellen und damit eine sperrfreie atomare Implementierung des aktuellen Ereigniszeitfensters zu bieten, werden der Startzeitzeitstempel und eine Zeitdifferenz in Bezug zum Startzeitstempel anstelle von zwei Zeitstempeln verwendet, um das aktuelle Ereigniszeitfenster zu definieren. Die Länge des aktuellen Ereigniszeitfensters wird voraussichtlich in der Reihenfolge von Minuten liegen. Anstatt also zwei vollständige Zeitstempel für den Startzeitpunkt und den Endzeitpunkt des aktuellen Ereigniszeitfensters zu speichern, können Bits eingespart werden, indem nur der Starzeitstempel des aktuellen Ereigniszeitfensters und die Dauer des aktuellen Ereignisfensters gespeichert werden. So kann beispielsweise mit einem 32-Bit-Prozessor das aktuelle Ereigniszeitfenster bei einer Auflösung von 0,1s mit 17 Bits für den Startzeitstempel und mit 14 Bits für die Dauer bzw. Länge des aktuellen Ereigniszeitfensters mit einer atomaren Maschinenanweisung gelesen oder gespeichert werden. Hierbei kann der Startzeitpunkt des aktuellen Ereigniszeitfensters beispielsweise bis zu einem maximalen Wert von 3,6 Stunden nach dem aktuellen Nullreferenzzeitpunkt und die Dauer bzw. Länge des aktuellen Ereigniszeitfensters kann bis zu einem Maximalwert von 27,3 Minuten oder 1.638 Sekunden ausgedrückt werden.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens können die einzelnen Datenrahmen ein Zeitfenster betreffen. Hierbei können die Referenzinformationen der einzelnen Datenrahmen jeweils einen korrespondierenden Speicherbereich und das korrespondierende Zeitfenster mit einem Startzeitstempel und einem Endzeitstempel der einzelnen Datenrahmen umfassen, in welchem mindestens ein im korrespondierenden Datenrahmen enthaltenes Datensegment der Ereignisdaten erzeugt oder erfasst wurde. Dadurch kann einfach und schnell überprüft werden, ob der Datenrahmen Ereignisdaten bzw. Fahrzeugdaten enthält, deren Erzeugung oder Erfassung sich mit dem aktuellen Ereigniszeitfenster überlappt. Zudem können der Startzeitstempel und der Endzeitstempel der einzelnen Datenrahmen auf den aktuellen Nullreferenzzeitpunkt bezogen sein.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann den einzelnen Partitionen jeweils ein Zeitfenster zugeordnet werden. Hierbei kann als Startzeitstempel des Zeitfensters einer korrespondierenden Partition ein ältester Startzeitstempel von in der Partition enthaltenen Referenzinformationen eines korrespondierenden Datenrahmens eingesetzt werden. Als Endzeitstempel des Zeitfensters der korrespondierenden Partition kann ein jüngster Endzeitstempel von in der Partition enthaltenen Referenzinformationen eines korrespondierenden Datenrahmens eingesetzt werden. Dadurch kann einfach und schnell überprüft werden, ob die korrespondierende Partition mit dem aktuellen Ereigniszeitfenster überlappt.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens können die Referenzinformationen von mindestens einem Datenrahmen aus der aktuellen Lesepartition ausgelesen werden, dessen Zeitfenster mit dem aktuellen Ereigniszeitfenster überlappt. Zudem kann das Zeitfenster des mindestens einen Datenrahmens in den Referenzinformationen nach dem Auslesen der Referenzinformationen ungültig gemacht werden. Dadurch kann verhindert werden, dass die Referenzinformationen von einem Datenrahmen mehrfach ausgelesen und der korrespondierende Datenrahmen mehrfach persistent in dem mindestens einen nichtflüchtigen Speicher gespeichert wird.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann vor der Bestimmung der aktuellen Lesepartition das vorhandene aktuelle Ereigniszeitfenster lokal gespeichert werden. Hierbei kann vor jedem Auslesevorgang der Referenzinformationen von mindestens einem Datenrahmen das lokal gespeicherte aktuelle Ereigniszeitfenster mit dem aktuellen Ereigniszeitfenster verglichen und das aktuelle Ereigniszeitfenster lokal gespeichert werden, wenn es sich vom lokal gespeicherten aktuellen Ereigniszeitfenster unterscheidet. Zudem kann überprüft werden, ob sich das Zeitfenster der aktuellen Lesepartition und das neue aktuelle Ereigniszeitfenster überlappen, wenn das lokal gespeicherte aktuelle Ereigniszeitfenster geändert wurde. Der Auslesevorgang der Lesepartition kann neu gestartet werden, wenn die aktuelle Lesepartition mit dem geänderten aktuellen Ereigniszeitfenster überlappt. Das bedeutet, dass die aktuelle Lesepartition von Anfang an erneut gelesen wird. Hierbei werden bereits ausgelesene Referenzinformationen nicht nochmal ausgelesen, da das Zeitfenster des korrespondierenden Datenrahmens in den Referenzinformationen nach dem Auslesen der Referenzinformationen ungültig gemacht wurde. Alternativ kann eine neue aktuelle Lesepartition bestimmt werden, wenn die aktuelle Lesepartition mit dem geänderten aktuellen Ereigniszeitfenster nicht überlappt. Das bedeutet, dass der Auslesevorgang der aktuellen Lesepartition, der mit dem inzwischen veralteten aktuellen Ereigniszeitfenster korrespondiert, abgebrochen und nicht neu gestartet wird. Dadurch werden höchstens Referenzinformationen von einem Datenrahmen zur Datenaufzeichnungsanordnung weitergeleitet, dessen Zeitfenster sich jetzt außerhalb des neuen aktuellen Ereigniszeitfensters befindet. Dieses Verhalten ist jedoch so, als ob die Ereigniserkennungsanordnung das neue aktuelle Ereigniszeitfenster erst festgelegt hätte, nachdem der Auslesevorgang die Referenzinformationen dieses Datenrahmens ausgelesen hat und ist somit tolerierbar.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann in Abhängigkeit von dem mindestens einen vorgegebenen Schreibkriterium nach einer neuen Schreibpartition gesucht werden, wenn das Fahrzeug neu gestartet wird oder die aktuelle Schreibpartition vollständig mit Referenzinformationen beschrieben ist. Hierzu kann beispielsweise ein Satz von Partitionen bestimmt werden, welche kein gültiges Zeitfenster haben. Das bedeutet, dass diese Partitionen keine Referenzinformationen von Datenrahmen enthalten, so dass kein Konflikt zwischen dem Bestimmen der aktuellen Schreibpartition und dem Bestimmen der aktuellen Lesepartition verursacht werden kann. Da diese Partitionen keine Referenzinformationen von Datenrahmen enthalten, wird auch nicht versucht, diese Partitionen als aktuelle Lesepartitionen zu verwenden. Daher kann eine dieser Partitionen als aktuelle Schreibpartition bestimmt werden. Zusätzlich oder alternativ können Partitionen bestimmt werden, welche ein gültiges Zeitfenster haben, welches vollständig älter als der maximale Voreigniszeitpunkt ist und ein vorhandenes aktuelles Ereigniszeitfenster nicht überlappt. Das bedeutet, dass kein Ereignis, das in der Zukunft auftreten kann, noch die Datenrahmen der jeweiligen Partition benötigt, und dass die Partition derzeit auch nicht als Lesepartition relevant ist, und noch nicht alle Referenzinformationen von Datenrahmen vollständig ausgelesen sind, welche das aktuelle Ereignisfenster überlappen, auch wenn sie bereits über den maximalen Vorereigniszeitpunkt hinausreichen. Aus diesem Satz von Partitionen kann eine Partition, welche kein gültiges Zeitfenster hat, oder eine Partition als aktuelle Schreibpartition bestimmt werden, deren korrespondierendes gültiges Zeitfenster den ältesten Startzeitstempel hat. Zudem kann vor der Bestimmung der aktuellen Schreibpartition das vorhandene aktuelle Ereigniszeitfenster lokal gespeichert werden. Dadurch kann vor der Bestimmung der aktuellen Schreibpartition überprüft werden, ob sich das aktuelle Ereigniszeitfenster verändert hat. Wenn die neue aktuelle Schreibpartition bestimmt ist, kann der Schreibpartitionszeiger entsprechend einer atomaren Maschinenanweisung zurückgesetzt werden.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens können die empfangenen Referenzinformationen der einzelnen Datenrahmen in beliebiger zeitlicher Reihenfolge in die aktuelle Schreibpartition geschrieben werden. Hierbei können zeitlich zufällig sortierte Untersequenzen der geschriebenen Referenzinformationen der einzelnen Datenrahmen in der Schreibpartition ermittelt und markiert werden. Hierzu können die geschriebenen Referenzinformationen der einzelnen Datenrahmen gemäß ihrer Schreibreihenfolge aufsteigend durchnummeriert werden.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann bei jedem Schreiben von Referenzinformationen eines neuen Datenrahmens das Zeitfenster des neuen Datenrahmens mit dem Zeitfenster des Datenrahmens verglichen werden, dessen Referenzinformationen zuvor als letztes in die Schreibpartition geschrieben wurden.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann beispielsweise der Startzeitstempel des neuen Datenrahmens mit dem Startzeitstempel des zuletzt geschriebenen Datenrahmens verglichen werden, wobei eine zeitlich zufällig sortierte aktuelle Startzeituntersequenz erkannt und fortgesetzt werden kann, wenn der Startzeitstempel des neuen Datenrahmes jünger als der Startzeitstempel des zuletzt geschriebenen Datenrahmens ist. Alternativ kann eine neue Startzeituntersequenz gestartet und deren Startzeitstempel durch Speichern der korrespondierenden Nummerierung des neuen Datenrahmens markiert werden, wenn der Startzeitstempel des neuen Datenrahmes älter als der Startzeitstempel des zuletzt geschriebenen Datenrahmens ist. Zudem kann eine erste Startzeituntersequenz mit dem Startzeitstempel des ersten geschriebenen Datenrahmens starten. Das bedeutet, dass die kleinste Nummer der aufsteigenden Nummerierung gleichzeitig den Start der ersten zeitlich zufällig sortierten aktuellen Startzeituntersequenz markiert.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann der Endzeitstempel des neuen Datenrahmens mit dem Endzeitstempel des zuletzt geschriebenen Datenrahmens verglichen werden, wobei eine zeitlich zufällig sortierte aktuelle Endzeituntersequenz erkannt und fortgesetzt wird, wenn der Endzeitstempel des neuen Datenrahmes jünger als der Endzeitstempel des zuletzt geschriebenen Datenrahmens ist. Alternativ kann eine neue Endzeituntersequenz gestartet und deren Endzeitstempel durch Speichern der korrespondierenden Nummerierung des neuen Datenrahmens markiert werden, wenn der Endzeitstempel des neuen Datenrahmes älter als der Endzeitstempel des zuletzt geschriebenen Datenrahmens ist. Zudem kann eine erste Endzeituntersequenz mit dem Endzeitstempel des ersten geschriebenen Datenrahmens starten. Das bedeutet, dass die kleinste Nummer der aufsteigenden Nummerierung gleichzeitig den Start der ersten zeitlich zufällig sortierten aktuellen Endzeituntersequenz markiert.
-
In weiterer vorteilhafter Ausgestaltung des Verfahrens kann aus der aktuellen Lesepartition auszulesende Referenzinformationen von mindestens einem Datenrahmen in Abhängigkeit vom zeitlichen Bezug der mindestens einen zeitlich zufällig sortierten Startzeituntersequenz und/oder der mindestens einen zeitlich zufällig sortierten Endzeituntersequenz der aktuellen Lesepartition zum aktuellen Ereigniszeitfenster ermittelt werden. Durch die Einführung der zeitlich zufällig sortierten Startzeituntersequenzen und der zeitlich zufällig sortierten Endzeituntersequenzen kann das Auffinden von auszulesenden Referenzinformationen von Datenrahmen beschleunigt werden, da nicht immer die Referenzinformationen von allen in der aktuellen Lesepartition enthaltenen Datenrahmen überprüft werden müssen.
-
In vorteilhafter Ausgestaltung der Vorrichtung kann der Pufferblock eine Lesefunktion umfassen, welche ausgeführt ist, in Reaktion auf eine Anforderung der Datenaufzeichnungsanordnung und in Abhängigkeit von mindestens einem vorgegebenen Lesekriterium, welches zumindest ein aktuelles Ereigniszeitfenster umfasst, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, eine der anderen Partitionen als aktuelle Lesepartition zu bestimmen und in der aktuellen Lesepartition enthaltene Referenzinformationen von Datenrahmen auszulesen und an die Datenaufzeichnungsanordnung weiterzuleiten, welche persistent aufzuzeichnende Ereignisdaten enthalten. Die Datenaufzeichnungsanordnung kann ausgeführt sein, die mit den weitergeleiteten Referenzinformationen korrespondierenden Datenrahmen persistent in dem mindestens einen nichtflüchtigen Speicher zu speichern.
-
In weiterer vorteilhafter Ausgestaltung der Vorrichtung kann die Schreibfunktion weiter ausgeführt sein, die empfangenen Referenzinformationen der einzelnen Datenrahmen in beliebiger zeitlicher Reihenfolge in die aktuelle Schreibpartition zu schreiben und zeitlich zufällig sortierte Untersequenzen der geschriebenen Referenzinformationen der einzelnen Datenrahmen in der aktuellen Schreibpartition zu ermitteln und zu markieren.
-
In weiterer vorteilhafter Ausgestaltung der Vorrichtung kann die Ereigniserkennungsanordnung ausgeführt sein, kontinuierlich den Zustand des Fahrzeugs zu überwachen und zu entscheiden, wann ein vorgegebenes Ereignis aufgetreten ist, welches die persistente Speicherung der korrespondierenden Ereignisdaten des mindestens einen Fahrzeugsystems erfordert. Hierbei kann die Ereigniserkennungsanordnung weiter ausgeführt sein, das mit dem erkannten Ereignis korrespondierende aktuelle Ereigniszeitfenster an den Pufferblock auszugeben, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, wobei ein Startzeitpunkt des aktuellen Ereigniszeitfensters zeitlich nicht vor dem maximalen Voreigniszeitpunkt liegt. Zudem kann die Ereigniserkennungsanordnung weiter ausgeführt sein, den Startzeitpunkt des aktuellen Ereigniszeitfensters als Zeitstempel in Bezug auf einen aktuellen Nullreferenzzeitpunkt und einen Endzeitpunkt des aktuellen Ereigniszeitfensters als Zeitdifferenz zum Startzeitpunkt vorzugeben, wobei der Pufferblock ausgeführt sein kann, den aktuellen Nullreferenzzeitpunkt bei Bedarf neu zu definieren.
-
Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und werden in der nachfolgenden Beschreibung näher erläutert. In den Zeichnungen bezeichnen gleiche Bezugszeichen Komponenten bzw. Elemente, die gleiche bzw. analoge Funktionen ausführen.
-
Figurenliste
-
- 1 zeigt ein schematisches Ablaufdiagramm eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens zur Aufzeichnung von Ereignisdaten in einem Fahrzeug.
- 2 zeigt eine schematische Darstellung eines ersten Ausführungsbeispiels einer Partition für das erfindungsgemäße Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
- 3 zeigt eine schematische Darstellung eines zweiten Ausführungsbeispiels einer Partition für das erfindungsgemäße Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
- 4 zeigt eine schematische Darstellung eines ersten Ausführungsbeispiels eines aktuellen Ereigniszeitfensters und mehreren Ausführungsbeispielen von Partitionszeitfenstern für das erfindungsgemäße Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
- 5 zeigt eine tabellarische Darstellung eines Speicherbereichs während einer Neudefinition eines aktuellen Nullreferenzzeitpunkts für das erfindungsgemäße Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
- 6 zeigt ein schematisches Ablaufdiagramm eines Vorgangs zur Bestimmung einer aktuellen Schreibpartition für das erfindungsgemäße Verfahren zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
- 7 zeigt ein schematisches Blockdiagramm eines Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens zur Aufzeichnung von Ereignisdaten in einem Fahrzeug aus 1.
-
Ausführungsformen der Erfindung
-
Wie aus 1 ersichtlich ist, werden im dargestellten Ausführungsbeispiel eines erfindungsgemäßen Verfahrens 100 zur Aufzeichnung von Ereignisdaten in einem Fahrzeug in einem Schritt S100 fortlaufend Fahrzeugdaten von mindestens einem Fahrzeugsystem 3 empfangen und im Schritt S110 als Ereignisdaten in Datenrahmen DR mit einer vorgegebenen Größe geschrieben. Die einzelnen Datenrahmen DR werden im Schritt S120 in mindestens einem flüchtigen Speicher 50 gespeichert, wobei die gespeicherten Datenrahmen DR verwaltet und solange in dem mindestens einen flüchtigen Speicher 50 verfügbar gehalten werden, bis die in den einzelnen Datenrahmen DR gespeicherten Ereignisdaten älter als ein vorgegebener maximaler Voreigniszeitpunkt sind oder in Reaktion auf ein erkanntes vorgegebenes Ereignis persistent in mindestens einem nichtflüchtigen Speicher 46 gespeichert sind. Hierzu werden im Schritt S130 mehrere Partitionen 21, 21A, 21B mit einer vorgegebenen Größe vorgesehen, wobei im Schritt S140 in Abhängigkeit von mindestens einem Schreibkriterium eine der Partitionen 21, 21A, 21B als aktuelle Schreibpartition bestimmt wird, in welche die empfangenen Referenzinformationen 25 der einzelnen Datenrahmen DR im Schritt S150 geschrieben werden.
-
Im dargestellten Ausführungsbeispiel des erfindungsgemäßen Verfahrens 100 wird im Schritt S160 in Reaktion auf eine Anforderung und in Abhängigkeit von mindestens einem vorgegebenen Lesekriterium, welches zumindest ein aktuelles Ereigniszeitfenster EZF umfasst, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, eine der anderen Partitionen 21, 21A, 21B als aktuelle Lesepartition bestimmt. Im Schritt S170 werden in der aktuellen Lesepartition enthaltene Referenzinformationen 25 von Datenrahmen DR ausgelesen und weitergeleitet, welche persistent aufzuzeichnende Ereignisdaten enthalten, und im Schritt S180 werden die mit den weitergeleiteten Referenzinformationen 25 korrespondierenden Datenrahmen DR persistent in dem mindestens einen nichtflüchtigen Speicher 46 gespeichert.
-
In den dargestellten Ausführungsbeispielen betreffen die einzelnen Datenrahmen DR jeweils ein Zeitfenster 27. Wie aus 2 und 3 weiter ersichtlich ist, umfassen die Referenzinformationen 25 der einzelnen Datenrahmen DR jeweils einen korrespondierenden Speicherbereich, welcher vorzugsweise durch einen Datenrahmenzeiger DRZ dargestellt ist, und das korrespondierende Zeitfenster 27 mit einem Startzeitstempel 28 und einem Endzeitstempel 29 der einzelnen Datenrahmen DR, in welchem mindestens ein im korrespondierenden Datenrahmen DR enthaltenes Datensegment der Ereignisdaten erzeugt oder erfasst wurde.
-
Wie aus 2 und 3 weiter ersichtlich ist, wird den einzelnen Partitionen 21, 21A, 21B jeweils ein Zeitfenster 22 zugeordnet, wobei als Startzeitstempel 23 des Zeitfensters 22 einer korrespondierenden Partition 21, 21A, 21B ein ältester Startzeitstempel 28 von in der Partition 21 enthaltenen Referenzinformationen 25 eines korrespondierenden Datenrahmens DR eingesetzt wird. Als Endzeitstempel 24 des Zeitfensters 22 der korrespondierenden Partition 21, 21A, 21B wird ein jüngster Endzeitstempel 29 von in der Partition 21, 21A, 21B enthaltenen Referenzinformationen 25 eines korrespondierenden Datenrahmens DR eingesetzt. Wie aus 2 und 3 weiter ersichtlich ist umfassen die dargestellten vollständig beschriebenen Partitionen 21A, 21B jeweils die Referenzinformationen von fünfzehn Datenrahmen DR, welche jeweils ein korrespondierendes Zeitfenster 27 betreffen. Das Zeitfenster 22 der dargestellten Partitionen 21A, 21B weisen jeweils beispielhaft den Wert „3“ des Startzeitstempels 28 eines ersten Datenrahmens DR auf, welcher dem ältesten Startzeitstempel 28 in den dargestellten Partitionen 21A, 21B entspricht. Als Endzeitstempel 24 weisen die dargestellten Partitionen 21A, 21B jeweils beispielhaft den Wert „37“ des Endzeitstempels 29 des letzten Datenrahmens DR auf, welcher dem jüngsten Endzeitstempel 29 in den dargestellten Partitionen 21A, 21B entspricht.
-
In den dargestellten Ausführungsbeispielen wird ein in 4 dargestellter Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF als Zeitstempel in Bezug auf einen in 5 dargestellten aktuellen Nullreferenzzeitpunkt B vorgegeben. Ein Endzeitpunkt EZF_2 des aktuellen Ereigniszeitfensters EZF wird als Zeitdifferenz zum Startzeitpunkt EZF_1 vorgegeben, wobei der aktuelle Nullreferenzzeitpunkt B bei Bedarf neu definiert wird. Beispielsweise wird der aktuelle Nullreferenzzeitpunkt B neu definiert, wenn ein neues aktuelles Ereigniszeitfenster EZF nicht mit dem aktuellen Nullreferenzzeitpunkt B darstellbar ist, weil der Startzeitpunkt EZF_1 des neuen aktuellen Ereigniszeitfensters EZF zeitlich zu weit von dem aktuellen Nullreferenzzeitpunkt B entfernt ist. Zudem sind auch der Startzeitstempel 28 und der Endzeitstempel 29 der einzelnen Datenrahmen DR und somit auch der Startzeitstempel 23 und der Endzeitstempel 24 der einzelnen Partitionen 21, 21A, 21B auf den aktuellen Nullreferenzzeitpunkt B bezogen.
-
Nachfolgend wird unter Bezugnahme auf 5 der Vorgang zur Neudefinition des Nullreferenzzeitpunkts B beschrieben. Wie aus 5 ersichtlich ist, werden die beiden zuletzt verwendeten Nullreferenzzeitpunkte A, B jeweils an einem Speicherplatz Epoch A, Epoch B gespeichert, wobei in dem aktuellen Ereigniszeitfenster EZF durch eine Markierung M in einem korrespondierenden Speicherplatz angezeigt wird, auf welchen der beiden gespeicherten Nullreferenzzeitpunkte A, B sich der Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF bezieht. In der Regel entspricht ein ältester Nullreferenzzeitpunkt einem Startzeitpunkt des Fahrzeugs. Im dargestellten Ausführungsbeispiel ist das aktuelle Ereigniszeitfenster EZF in 32 Bit kodiert. Hierbei repräsentieren Bit 0 bis 13 die Dauer bzw. Länge des aktuellen Ereigniszeitfensters EZF, Bit 14 bis 30 repräsentieren den Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF als Zeitdifferenz des Startzeitpunkts EZF_1 des aktuellen Ereigniszeitfensters EZF zum aktuellen Nullreferenzzeitpunkt B. Bit 31 repräsentiert die Markierung des aktuell gültigen Nullreferenzzeitpunkt B. So kann die Gültigkeit des im Speicherplatz Epoch A gespeicherten Nullreferenzzeitpunkts A beispielsweise durch einen logischen Wert „0“ markiert werden, und die Gültigkeit des im Speicherplatz Epoch B gespeicherten Nullreferenzzeitpunkts B kann beispielsweise durch einen logischen Wert „1“ markiert werden. In 5 zeigt die zweite Zeile der Tabelle einen aktuellen Zustand des korrespondierenden Speicherbereichs. Das bedeutet, dass im Speicherplatz Epoch A ein älterer erster Nullreferenzzeitpunkt A mit dem beispielhaften Wert 2:00:00:000 und im Speicherplatz Epoch B ein jüngerer zweiter Nullreferenzzeitpunkt B mit dem Wert 8:00:00:000 gespeichert sind, wobei die Markierung M mit dem dargestellten Wert „B“ anzeigt, dass der im Speicherplatz Epoch B gespeicherte jüngere zweite Nullreferenzzeitpunkt B dem aktuellen Nullreferenzzeitpunkt B entspricht. Hierbei entspricht ein ältester Nullreferenzzeitpunkt einem Startzeitpunkt des Fahrzeugs.
-
Wie aus 5 weiter ersichtlich ist, wird bei einer Neudefinition des aktuell verwendeten Nullreferenzzeitpunkts B zuerst der ältere Nullreferenzzeitpunkt A der beiden gespeicherten Nullreferenzzeitpunkte A, B mit einem neuen Nullreferenzzeitpunkt C überschrieben. In 5 zeigt die dritte Zeile der Tabelle diesen Zustand des korrespondierenden Speicherbereichs. Das bedeutet, dass im Speicherplatz Epoch A der neue Nullreferenzzeitpunkt C mit dem beispielhaften Wert 16:00:00:000 gespeichert wird. Im Speicherplatz Epoch B ist weiterhin der nun ältere zweite Nullreferenzzeitpunkt B mit dem Wert 8:00:00:000 gespeichert, wobei die Markierung M mit dem dargestellten Wert „B“ weiterhin anzeigt, dass der im Speicherplatz Epoch B gespeicherte zweite Nullreferenzzeitpunkt B dem aktuellen Nullreferenzzeitpunkt B entspricht. Dann wird der neue Nullreferenzzeitpunkt C in einem atomaren Vorgang als aktueller Nullreferenzzeitpunkt C markiert. In 5 zeigt die vierte Zeile der Tabelle diesen Zustand des korrespondierenden Speicherbereichs. Das bedeutet, dass im Speicherplatz Epoch A der neue Nullreferenzzeitpunkt C mit dem beispielhaften Wert 16:00:00:000 gespeichert ist. Im Speicherplatz Epoch B ist weiterhin der nun ältere zweite Nullreferenzzeitpunkt B mit dem Wert 8:00:00:000 gespeichert, wobei die Markierung M mit dem dargestellten Wert „A“ nun anzeigt, dass der im Speicherplatz Epoch A gespeicherte neue Nullreferenzzeitpunkt C nun dem aktuellen Nullreferenzzeitpunkt C entspricht. Anschließend wird das neue aktuelle Ereigniszeitfenster EZF bezogen auf den neuen aktuellen Nullreferenzzeitpunkt C atomar geschrieben. In 5 zeigt die fünfte Zeile der Tabelle den Zustand des korrespondierenden Speicherbereichs nach der Neudefinition des aktuellen Nullreferenzzeitpunkts C.
-
Nachfolgend wird unter Bezugnahme auf 6 der im Schritt S140 durchgeführte Vorgang 140 zur Bestimmung einer aktuellen Schreibpartition für das erfindungsgemäße Verfahren 100 zur Aufzeichnung von Ereignisdaten in einem Fahrzeug beschrieben. Hierbei wird in Abhängigkeit von dem mindestens einen vorgegebenen Schreibkriterium nach einer neuen Schreibpartition gesucht, wenn das Fahrzeug neu gestartet wird oder die aktuelle Schreibpartition vollständig mit Referenzinformationen 25 beschrieben ist. In den dargestellten Ausführungsbeispielen wird das aktuelle Ereigniszeitfenster EZF, falls vorhanden, vor der Bestimmung der aktuellen Schreibpartition lokal gespeichert. Wie aus 6 weiter ersichtlich ist, wird der Bestimmungsvorgang 140 im Schritt S200 gestartet. Im Schritt S210 wird überprüft, ob mindestens eine der Partitionen 21, 21A, 21B kein gültiges Zeitfenster 22 hat. Ist dies der Fall, dann wird im Schritt S220 eine dieser Partitionen 21, 21A, 21B als aktuelle Schreibpartition bestimmt und der Bestimmungsvorgang ist beendet. Wird im Schritt S210 keine Partition 21, 21A, 21B mit einem ungültigen Zeitfenster 22 erkannt, dann wird im Schritt S230 überprüft, ob mindestens eine der Partitionen 21, 21A, 21B ein gültiges Zeitfenster 22 hat, welches vollständig älter als der maximale Voreigniszeitpunkt ist. Wird im Schritt S230 keine solche Partition 21, 21A, 21B erkannt, dann kehrt der Bestimmungsvorgang 140 zur Überprüfung im Schritt S210 zurück. Wird im Schritt S230 eine solche Partition 21, 21A, 21B mit einem gültigen Zeitfenster 22 erkannt, dann wird im Schritt S240 überprüft, ob diese Partition ein vorhandenes aktuelles Ereigniszeitfenster EZF überlappt oder nicht. Wird im Schritt S240 festgestellt, dass diese Partition 21, 21A, 21B ein vorhandenes aktuelles Ereigniszeitfenster EZF überlappt, dann kehrt der Bestimmungsvorgang 140 ebenfalls zur Überprüfung im Schritt S210 zurück. Wird im Schritt S240 kein aktuelles Ereigniszeitfenster EZF erkannt bzw. festgestellt, dass diese Partition 21, 21A, 21B ein vorhandenes aktuelles Ereigniszeitfenster EZF nicht überlappt, dann wird diese Partition 21, 21A, 21 im Schritt S250 einem Satz von Partitionen 21, 21A, 21B hinzugefügt. Im Schritt S260 wird überprüft, ob noch weitere Partitionen 21, 21A, 21B vorhanden sind. Ist dies der Fall, dann wird im Schritte S280 die nächste Partition 21, 21A, 21B ausgewählt und der Bestimmungsvorgang 140 mit der Überprüfung im Schritt S210 fortgesetzt. Wird im Schritt S270 keine weitere Partition 21, 21A, 21B erkannt, dann wird im Schritt S270 die Partition 21, 21A, 21B aus dem Satz der Partitionen 21, 21A, 21B ausgewählt, deren korrespondierendes gültiges Zeitfenster 22 den ältesten Startzeitstempel 23 hat. Diese ausgewählte Partition 21, 21A, 21B wird dann im Schritt S220 als aktuelle Schreibpartition bestimmt und der Bestimmungsvorgang ist beendet.
-
In den dargestellten Ausführungsbeispielen der Erfindung werden die empfangenen Referenzinformationen 25 der einzelnen Datenrahmen DR in beliebiger zeitlicher Reihenfolge in die aktuelle Schreibpartition geschrieben, wobei zeitlich zufällig sortierte Untersequenzen der geschriebenen Referenzinformationen 25 der einzelnen Datenrahmen DR in der Schreibpartition ermittelt und markiert werden. Hierzu umfassen die einzelnen Partitionen 21, 21B zusätzliche Hilfsinformationen 60, wie aus 3 weiter ersichtlich ist. Im Unterschied zu der in 2 dargestellten Partition 21A umfassen die geschriebenen Referenzinformationen 25 der einzelnen Datenrahmen DR der in 3 dargestellten Partition 21B eine Nummerierung 62. Das bedeutet, dass die Referenzinformationen 25 der einzelnen Datenrahmen DR der in 3 dargestellten Partition 21B gemäß ihrer Schreibreihenfolge aufsteigend durchnummeriert werden.
-
Bei jedem Schreiben von Referenzinformationen 25 eines neuen Datenrahmens DR wird das Zeitfenster 27 des neuen Datenrahmens DR mit dem Zeitfenster 27 des Datenrahmens DR verglichen, dessen Referenzinformationen 25 zuvor als letztes in die aktuelle Schreibpartition geschrieben wurden. Hierzu wird der Startzeitstempel 28 des neuen Datenrahmens DR mit dem Startzeitstempel 28 des zuletzt geschriebenen Datenrahmens DR verglichen. Hierbei wird eine zeitlich zufällig sortierte aktuelle Startzeituntersequenz 64 erkannt und fortgesetzt, wenn der Startzeitstempel 28 des neuen Datenrahmes DR jünger als der Startzeitstempel 28 des zuletzt geschriebenen Datenrahmens DR ist. Alternativ wird eine neue Startzeituntersequenz 64 gestartet und deren Startzeitstempel 28 durch Speichern der korrespondierenden Nummerierung 62 des neuen Datenrahmens DR markiert, wenn der Startzeitstempel 28 des neuen Datenrahmes DR älter als der Startzeitstempel 28 des zuletzt geschriebenen Datenrahmens DR ist. Eine erste Startzeituntersequenz 64 startet mit dem Startzeitstempel 28 des ersten geschriebenen Datenrahmens DR und der Nummer „0“. Zudem wird der Endzeitstempel 29 des neuen Datenrahmens DR mit dem Endzeitstempel 29 des zuletzt geschriebenen Datenrahmens DR verglichen. Hierbei wird eine zeitlich zufällig sortierte aktuelle Endzeituntersequenz 66 erkannt und fortgesetzt, wenn der Endzeitstempel 29 des neuen Datenrahmes DR jünger als der Endzeitstempel 29 des zuletzt geschriebenen Datenrahmens DR ist. Alternativ wird eine neue Endzeituntersequenz 64 gestartet und deren Endzeitstempel 29 durch Speichern der korrespondierenden Nummerierung 62 des neuen Datenrahmens DR markiert, wenn der Endzeitstempel 29 des neuen Datenrahmes DR älter als der Endzeitstempel 29 des zuletzt geschriebenen Datenrahmens DR ist. Eine erste Endzeituntersequenz 66 startet mit dem Endzeitstempel 29 des ersten geschriebenen Datenrahmens DR.
-
Wie aus 3 weiter ersichtlich ist, umfasst die beispielhaft dargestellte Partition 21B vier Startzeituntersequenzen 64. Hierbei startet die erste Startzeituntersequenz 64 mit einer niedrigsten Nummer „0“ der aufsteigenden Nummerierung 62. Eine zweite Startzeitsequenz 64 startet mit einer Nummer „3“, , da der Startzeitstempel 28 des korrespondierenden Datenrahmens DR mit dem Wert „5“ älter als der Startzeitstempel 28 mit dem Wert „7“ des vorherigen Datenrahmens DR ist. Eine dritte Startzeituntersequenz 64 startet mit einer Nummer „7“ der aufsteigenden Nummerierung 62, da der Startzeitstempel 28 des korrespondierenden Datenrahmens DR mit dem Wert „7“ älter als der Startzeitstempel 28 mit dem Wert „13“ des vorherigen Datenrahmens DR ist. Eine vierte Startzeituntersequenz 64 startet mit einer Nummer „13“ der aufsteigenden Nummerierung 62, da der Startzeitstempel 28 des korrespondierenden Datenrahmens DR mit dem Wert „28“ älter als der Startzeitstempel 28 mit dem Wert „29“ des vorherigen Datenrahmens DR ist. Des Weiteren umfasst die beispielhaft dargestellte Partition 21B fünf Endzeituntersequenzen 66. Hierbei startet die erste Endzeituntersequenz 66 mit der niedrigsten Nummer „0“ der aufsteigenden Nummerierung 62. Eine zweite Endzeitsequenz 66 startet mit einer Nummer „1“, da der Endzeitstempel 29 des korrespondierenden Datenrahmens DR mit dem Wert „19“ älter als der Endzeitstempel 29 mit dem Wert „20“ des vorherigen Datenrahmens DR ist. Eine dritte Endzeituntersequenz 66 startet mit einer Nummer „5“, da der Endzeitstempel 29 des korrespondierenden Datenrahmens DR mit dem Wert „19“ älter als der Endzeitstempel 29 mit dem Wert „27“ des vorherigen Datenrahmens DR ist. Eine vierte Endzeituntersequenz 66 startet mit einer Nummer „7“, da der Endzeitstempel 29 des korrespondierenden Datenrahmens DR mit dem Wert „12“ älter als der Endzeitstempel 29 mit dem Wert „30“ des vorherigen Datenrahmens DR ist. Eine fünfte Endzeituntersequenz 66 startet mit einer Nummer „11“, da der Endzeitstempel 29 des korrespondierenden Datenrahmens DR mit dem Wert „25“ älter als der Endzeitstempel 29 mit dem Wert „28“ des vorherigen Datenrahmens DR ist.
-
4 zeigt beispielhaft vier Zeitfenster 22A, 22B, 22C, 22D von Partitionen 21, 21A, 21B, welche mit dem aktuellen Ereigniszeitfenster EZF überlappen. Da alle dargestellten Zeitfenster 22A, 22B, 22C, 22D das aktuelle Ereigniszeitfenster EZF überlappen, sind alle korrespondierenden Partitionen 21, 21A, 21B geeignet, als aktuelle Lesepartition bestimmt zu werden. Da das Zeitfenster 22A, 22B, 22C, 22D der aktuellen Lesepartition das aktuelle Ereigniszeitfenster EZF überlappt, überlappt auch mindestens ein Datenrahmen DR der aktuellen Lesepartition das aktuelle Ereigniszeitfenster EZF. Die Referenzinformationen 25 von mindestens einem Datenrahmen DR werden aus der aktuellen Lesepartition ausgelesen, dessen Zeitfenster 27 mit den dem aktuellen Ereigniszeitfenster EZF überlappt. Hierbei wird das Zeitfenster 27 des mindestens einen Datenrahmens DR in den Referenzinformationen 25 nach dem Auslesen der Referenzinformationen 25 ungültig gemacht.
-
Vor der Bestimmung der aktuellen Lesepartition wird das vorhandene aktuelle Ereigniszeitfenster EZF lokal gespeichert, wobei vor jedem Auslesevorgang der Referenzinformationen 25 von mindestens einem Datenrahmen DR das lokal gespeicherte aktuelle Ereigniszeitfenster EZF mit dem aktuellen Ereigniszeitfenster EZF verglichen wird. Hierbei wird das aktuelle Ereigniszeitfenster EZF lokal gespeichert, wenn es sich vom lokal gespeicherten aktuellen Ereigniszeitfenster EZF unterscheidet. Zudem wird überprüft, ob sich das Zeitfenster 22 der aktuellen Lesepartition und das neue aktuelle Ereigniszeitfenster EZF überlappen, wenn das lokal gespeicherte aktuelle Ereigniszeitfenster EZF geändert wurde. Der Auslesevorgang der Lesepartition wird neu gestartet, wenn die aktuelle Lesepartition mit dem geänderten aktuellen Ereigniszeitfenster EZF überlappt. Alternativ wird eine neue aktuelle Lesepartition bestimmt, wenn die aktuelle Lesepartition mit dem geänderten aktuellen Ereigniszeitfenster EZF nicht überlappt.
-
Zur Beschleunigung des Auslesevorgangs, werden aus der aktuellen Lesepartition auszulesende Referenzinformationen 25 von mindestens einem Datenrahmen DR in Abhängigkeit vom zeitlichen Bezug der mindestens einen zeitlich zufällig sortierten Startzeituntersequenz 64 und/oder der mindestens einen zeitlich zufällig sortierten Endzeituntersequenz 66 der aktuellen Lesepartition zum aktuellen Ereigniszeitfenster EZF ermittelt.
-
Wie aus 4 weiter ersichtlich ist, liegt der Startzeitstempel 23 eines ersten Zeitfensters 22 einer korrespondierenden Partition 21, 21A, 21B außerhalb des aktuellen Ereigniszeitfensters EZF und der Endzeitstempel 24 des ersten Zeitfensters 22 der korrespondierenden Partition 21, 21A, 21B liegt innerhalb des aktuellen Ereigniszeitfensters EZF. Daher kann die Partition 21, 21A, 21B Datenrahmen DR enthalten, welche zu alt für das aktuelle Ereigniszeitfenster EZF sind, aber keine Datenrahmen DR enthalten, welche zu jung für das aktuelle Ereigniszeitfenster EZF sind. Somit werden zur Ermittlung von aus der Partition 21, 21A, 21B auszulesenden Referenzinformationen 25 von Datenrahmen DR nur die Endzeitstempel 29 der Datenrahmen DR der markierten zeitlich zufällig sortierten Endzeituntersequenzen 66 mit dem Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF verglichen, um Datenrahmen DR zu erkennen, welche vollständig vor dem aktuellen Ereigniszeitfenster EZF liegen.
-
Wie aus 4 weiter ersichtlich ist, liegt der Startzeitstempel 23 und der Endzeitstempel 24 eines zweiten Zeitfensters 22B einer korrespondierenden Partition 21, 21A, 21B innerhalb des aktuellen Ereigniszeitfensters EZF. Daher enthält die Partition 21, 21A, 21B weder Datenrahmen DR, welche zu alt für das aktuelle Ereigniszeitfenster EZF sind, noch Datenrahmen DR, welche zu jung für das aktuelle Ereigniszeitfenster EZF sind, so dass die Referenzinformationen 25 von allen Datenrahmen DR in der korrespondierenden Partition 21, 21A, 21B ohne weitere Überprüfung ausgelesen und weitergeleitet werden, und die korrespondierenden Datenrahmen DR persistent gespeichert werden.
-
Wie aus 4 weiter ersichtlich ist, liegt der Startzeitstempel 28 eines dritten Zeitfensters 22C einer korrespondierenden Partition 21, 21A, 21B innerhalb des aktuellen Ereigniszeitfensters EZF und der Endzeitstempel 29 des dritten Zeitfensters 22C der korrespondierenden Partition 21, 21A, 21B liegt außerhalb des aktuellen Ereigniszeitfensters EZF. Daher kann die Partition 21, 21A, 21B Datenrahmen DR enthalten, welche zu jung für das aktuelle Ereigniszeitfenster EZF sind, aber keine Datenrahmen DR enthalten, welche zu alt für das aktuelle Ereigniszeitfenster EZF sind. Somit werden zur Ermittlung von aus der Partition 21, 21A, 21B auszulesenden Referenzinformationen 25 von Datenrahmen DR nur die Startzeitstempel 28 der markierten zeitlich zufällig sortierten Startzeituntersequenzen 64 mit dem Endzeitpunkt EZF_2 des aktuellen Ereigniszeitfensters EZF verglichen, um Datenrahmen DR zu erkennen, welche vollständig nach dem aktuellen Ereigniszeitfenster EZF liegen.
-
Wie aus 4 weiter ersichtlich ist, liegt der Startzeitstempel 28 und der Endzeitstempel 29 eines vierten Zeitfensters 22D einer korrespondierenden Partition 21, 21A, 21B außerhalb des aktuellen Ereigniszeitfensters EZF. Daher kann die Partition 21, 21A, 21B Datenrahmen DR enthalten, welche zu jung für das aktuelle Ereigniszeitfenster EZF sind, und Datenrahmen DR enthalten, welche zu alt für das aktuelle Ereigniszeitfenster EZF sind. Somit werden zur Ermittlung von aus der Partition 21, 21A, 21B auszulesenden Referenzinformationen 25 von Datenrahmen DR die Startzeitstempel 28 der markierten zeitlich zufällig sortierten Startzeituntersequenzen 64 mit dem Endzeitpunkt EZF_2 des aktuellen Ereigniszeitfensters EZF verglichen, um Datenrahmen DR zu erkennen, welche vollständig nach dem aktuellen Ereigniszeitfenster EZF liegen. Zudem werden die Endzeitstempel 29 der markierten zeitlich zufällig sortierten Endzeituntersequenzen 66 jeweils mit dem Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF verglichen, um Datenrahmen DR zu erkennen, welche vollständig vor dem aktuellen Ereigniszeitfenster EZF liegen.
-
Hierbei werden zuerst die zufällig sortierten Endzeituntersequenzen 66 verwendet, um einen Datenrahmen DR zu finden, welcher nicht vollständig vor dem Ereigniszeitfenster EZF liegt. Dazu wird zunächst der Endzeitstempel 29 des Datenrahmens DR des letzten Eintrags einer ersten zufällig sortierten Endzeituntersequenz 66 mit dem Startzeitpunkt EZF_1 des aktuellen Ereigniszeitfensters EZF verglichen, um zu überprüfen, ob die Datenrahmen DR der ersten zufällig sortierten Endzeituntersequenz 66 vollständig vor dem Ereigniszeitfenster EZF liegen. Wenn ja, dann wird der Vorgang mit der nächsten zufällig sortierten Endzeituntersequenz 66 fortgesetzt und die Referenzinformationen 25 der Datenrahmen DR der ersten zufällig sortierten Endzeituntersequenz 66 werden nicht weitergeleitet. Wenn nicht, dann werden beginnend mit dem ersten Eintrag die Endzeitstempel 29 der Datenrahmen DR der ersten zufällig sortierten Endzeituntersequenz 66 überprüft, um einen Datenrahmen DR zu finden, welcher nicht vollständig vor dem Ereigniszeitfenster EZF liegt, da frühere Einträge von Datenrahmen DR der zufällig sortierten ersten Endzeituntersequenz 66 können noch vollständig älter als das aktuelle Ereigniszeitfensters EZF sein können. Nachdem die Nummer eines ersten solchen Datenrahmens DR ermittelt ist, wird die korrespondierende zufällig sortierte Startzeituntersequenz 64, welche diesen ersten Datenrahmen DR enthält. Um sicherzustellen, dass die Datenrahmen DR nicht vollständig nach dem Ereigniszeitfenster EZF liegen, werden beginnend mit dem Startzeitstempel 28 des ermittelten ersten Datenrahmens DR die Startzeitstempel 28 der Datenrahmen DR der ersten zufällig sortierten Startzeituntersequenz 64 mit dem Endzeitpunkt EZF_2 des aktuellen Ereigniszeitfensters EZF verglichen, um einen Datenrahmen DR zu finden, welcher vollständig nach dem Ereigniszeitfenster EZF liegt. Wird ein Datenrahmen DR gefunden, der vollständig nach dem aktuellen Ereigniszeitfenster EZF liegt, dann wird der Vorgang mit einem ersten Eintrag der nächsten zufällig sortierten Startzeituntersequenz 64 fortgesetzt. Zudem wird jedes Mal, wenn ein Datenrahmen DR gefunden wird, welcher mit dem aktuellen Ereigniszeitfensters EZF überlappt, überprüft, ob der gefundene Datenrahmen DR noch zu der zuvor überprüften zufällig sortierten Endzeituntersequenz 66 gehört. Wenn dies der Fall ist, werden die Referenzinformationen 25 des gefundenen Datenrahmens DR weitergeleitet und das Zeitfenster 27 in den Referenzinformationen 25 des Datenrahmen DR in der Partition 21 gelöscht. Andernfalls wird der Vorgang mit der zufällig sortierten Endzeituntersequenz 66 fortgesetzt, zu welcher der gefundene Datenrahmen DR gehört.
-
Ausführungsformen des erfindungsgemäßen Verfahrens 100 können beispielsweise in Software oder Hardware oder in einer Mischform aus Software und Hardware implementiert sein.
-
Wie aus 7 ersichtlich ist, umfasst das dargestellte Ausführungsbeispiel einer erfindungsgemäßen Vorrichtung 1 zur Durchführung des Verfahrens 100 zur Aufzeichnung von Ereignisdaten in einem Fahrzeug eine Datenbereitstellungsanordnung 10, einen Pufferblock 20, eine Ereigniserkennungsanordnung 30 und eine Datenaufzeichnungsanordnung 40. Die Datenbereitstellungsanordnung 10 empfängt fortlaufend aufzuzeichnende Fahrzeugdaten von mindestens einem Fahrzeugsystem 3 und schreibt diese als Ereignisdaten in Datenrahmen DR mit einer vorgegebenen Größe und speichert die einzelnen Datenrahmen DR in mindestens einen flüchtigen Speicher 50. Der Pufferblock 20 verwaltet die gespeicherten Datenrahmen DR und hält diese solange in dem mindestens einen flüchtigen Speicher 50 verfügbar, bis die in den einzelnen Datenrahmen DR gespeicherten Ereignisdaten älter als ein vorgegebener maximaler Voreigniszeitpunkt sind oder in Reaktion auf ein durch die Ereigniserkennungsanordnung 30 erkanntes vorgegebenes Ereignis persistent in mindestens einem nichtflüchtigen Speicher 46 gespeichert sind. Hierbei umfasst der Pufferblock 20 eine Schreibfunktion SF und mehrere Partitionen 21, 21A, 21B mit einer vorgegebenen Größe. Die Schreibfunktion SF bestimmt in Abhängigkeit von mindestens einem Schreibkriterium eine der Partitionen 21, 21A, 21B als aktuelle Schreibpartition und schreibt von der Datenbereitstellungsanordnung 10 empfangene Referenzinformationen 25 der einzelnen Datenrahmen DR in die aktuelle Schreibpartition.
-
Zudem umfasst der Pufferblock 20 im dargestellten Ausführungsbeispiel eine Lesefunktion LF. Die Lesefunktion LF bestimmt in Reaktion auf eine Anforderung der Datenaufzeichnungsanordnung 40 und in Abhängigkeit von mindestens einem vorgegebenen Lesekriterium, welches zumindest ein aktuelles Ereigniszeitfenster EZF umfasst, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, eine der anderen Partitionen 21 als aktuelle Lesepartition und liest in der aktuellen Lesepartition enthaltene Referenzinformationen 25 von Datenrahmen DR, welche persistent aufzuzeichnende Ereignisdaten enthalten, aus und leitet diese an die Datenaufzeichnungsanordnung 40 weiter. Die Datenaufzeichnungsanordnung 40 speichert die mit den weitergeleiteten Referenzinformationen 25 korrespondierenden Datenrahmen DR persistent in dem mindestens einen nichtflüchtigen Speicher 46.
-
Des Weiteren schreibt die Schreibfunktion SF die empfangenen Referenzinformationen 25 der einzelnen Datenrahmen DR in beliebiger zeitlicher Reihenfolge in die Schreibpartition und ermittelt und markiert zeitlich zufällig sortierte Untersequenzen der geschriebenen Referenzinformationen 25 der einzelnen Datenrahmen DR in der mindestens einen Partition 21.
-
Die Ereigniserkennungsanordnung 30 überwacht kontinuierlich den Zustand des Fahrzeugs und entscheidet, wann ein vorgegebenes Ereignis aufgetreten ist, welches die persistente Speicherung der korrespondierenden Ereignisdaten des mindestens einen Fahrzeugsystems 3 erfordert. Die Ereigniserkennungsanordnung 30 gibt das mit dem erkannten Ereignis korrespondierende aktuelle Ereigniszeitfenster EZF an den Pufferblock 20 aus, für welches die Ereignisdaten persistent aufgezeichnet werden sollen, wobei ein Startzeitpunkt des aktuellen Ereigniszeitfensters EZF zeitlich nicht vor dem maximalen Voreigniszeitpunkt liegt.
-
Im dargestellten Ausführungsbeispiel ist ein erstes Fahrzeugsystem 3 als Umfelderfassungssystem 3A ausgeführt. Ein zweites Fahrzeugsystem 3 ist als Personenschutzsystem 3B, ein drittes Fahrzeugsystem 3 ist als Fahrdynamiksystem 3C und ein viertes Fahrzeugsystem ist als Bremssystem 3D ausgeführt. Selbstverständlich können auch noch Fahrzeugdaten von anderen Fahrzeugsystemen oder von einer anderen Kombination der o. g. Fahrzeugsystemen 3 erfasst und aufgezeichnet werden.
-
Die Ereigniserkennungsanordnung 30 gibt den Startzeitpunkt EZF_1 des aktuelten Ereigniszeitfensters EZF als Zeitstempel in Bezug auf einen aktuellen Nullreferenzzeitpunkt B und den Endzeitpunkt EZF_2 des aktuellen Ereigniszeitfensters EZF als Zeitdifferenz zum Startzeitpunkt EZF_1 vor. Der Pufferblock 20 definiert den aktuellen Nullreferenzzeitpunkt B bei Bedarf neu.
-
Die Datenbereitstellunganordnung 10 umfasst im dargestellten Ausführungsbeispiel eine Datenerfassung 12 und eine Datenvorverarbeitung und übergibt die Referenzinformationen 25 der in dem mindestens einen flüchtigen Speicher 50 gespeicherten Datenrahmen DR an den Pufferblock 20. Die Referenzinformationen 25 der einzelnen Datenrahmen DR umfassen, wie oben bereits ausgeführt ist, im dargestellten Ausführungsbeispiel Datenrahmenzeiger DRZ, welche einen Speicherplatz der im flüchtigen Speicher gespeicherten Datenblöcke bzw. Datenrahmen, sowie das korrespondierende Zeitfenster 27 des Datenrahmens DR mit dem Startzeitstempel 28 und dem Endzeitstempel 29. Der Pufferblock 20 leitet im Falle eines erkannten Ereignisses die korrespondierenden Referenzinformationen 25 von Datenrahmen, welche persistent in dem mindestens einen nichtflüchtigen Speicher 46 gespeichert werden sollen, an die Datenaufzeichnungsanordnung 40 weiter. Die Datenaufzeichnungsanordnung 40 umfasst im dargestellten Ausführungsbeispiel eine Datennachverarbeitung 42, eine Datenspeicherung 44 und den mindestens einen nichtflüchtigen Speicher 46. Die einzelnen Datenrahmen DR enthalten in der Regel mehr als einen Datenausschnitt, welcher innerhalb des Zeitfensters 27 des Datenrahmens DR erzeugt oder gespeichert wurde. Der Pufferblock 20 kennt nur das Zeitfenster 27 des Datenrahmens DR und kennt oder versteht den Inhalt des Datenrahmens DR nicht. Der Pufferblock 20 empfängt und leitet die Datenrahmen DR als Referenzierung von der Datenbereitstellunganordnung 10 an die Datenaufzeichnungsanordnung 40 weiter. Das bedeutet, dass der Pufferblock 20 den Speicherinhalt der Datenrahmen DR nicht kopiert. Falls die Ereigniserkennungsanordnung 30 den Pufferblock 20 über ein aktuelles Ereigniszeitfenster EZF benachrichtigt, identifiziert der Pufferblock 20 die Datenrahmen DR, welche sich auf das aktuelle Ereigniszeitfenster EZF beziehen. Der Pufferblock 20 stellt dann genau die Referenzinformationen 25 der Datenrahmen DR der Datenaufzeichnungsanordnung 40 zur Datenaufzeichnung zur Verfügung, welche sich zeitlich mit dem aktuellen Ereigniszeitfenster EZF überlappen. Das bedeutet, dass der Pufferblock 20 die vollständigen Referenzinformationen 25 von Datenrahmen DR an die Datenaufzeichnungsanordnung 40 weiterleitet, auch wenn sich die Datenrahmen DR nur teilweise mit dem aktuellen Ereigniszeitfenster EZF überlappen und daher einige Datenausschnitte außerhalb des aktuellen Ereigniszeitfensters EZF liegen können. Der Pufferblock 20 bezieht nur Datenrahmen DR auf das eingetretene Ereignis, welche eine zeitliche Überlappung mit dem aktuellen Ereigniszeitfenster EZF aufweisen. Der Pufferblock 20 wendet keine weiteren Kriterien an, um die Datenrahmen DR einem Ereignis zuzuordnen. Der Pufferblock 20 stellt der Datenaufzeichnungsanordnung 40 genau die Referenzinformationen 25 von Datenrahmen DR bereit, welche sich mit dem aktuellen Ereigniszeitfenster EZF überlappen. Es gibt keine Einschränkungen für die Reihenfolge, in welcher der Pufferblock 20 die Datenrahmen DR an die Datenaufzeichnungsanordnung 40 weiterleitet. Der Pufferblock 20 verarbeitet jeweils nur ein Ereignis zu einem Zeitpunkt. Die Ereigniserkennungsanordnung 30 informiert den Pufferblock 20 nur über das aktuelle Ereigniszeitfenster EZF. Der Pufferblock 20 braucht keine weiteren Kenntnisse über die Umstände oder Details des Ereignisses. Wenn die Ereigniserkennungsanordnung 30 ein zweites Ereignis identifiziert, während der Pufferblock 20 bereits ein aktuelles Ereigniszeitfenster EZF eines ersten Ereignisses verarbeitet, kann die Ereigniserkennung 30 das aktuelle Ereigniszeitfenster EZF ändern. Zudem hat der Pufferblock 20 eine statisch, d.h. zur Kompilierungszeit bekannte, konfigurierbare Grenze, welche angibt, wie viele Zeiteinheiten vor dem aktuellen Zeitpunkt ein aktuelles Ereigniszeitfenster EZF höchstens beginnen kann. Diese Grenze wird als maximaler Vorereigniszeitpunkt bezeichnet. Die Ereigniserkennungsanordnung 30 kann den Start des aktuellen Ereigniszeitfensters EZF nicht auf einen Zeitpunkt ändern, welcher zeitlich vor dem maximalen Vorereigniszeitpunkt liegt. Zudem kann die Ereigniserkennungsanordnung 30 kein aktuelles Ereigniszeitfenster EZF festlegen, dessen Beginn zeitlich vor dem maximalen Vorereigniszeitpunkt liegt.
-
Somit wird das Verhalten des Pufferblocks 20 durch das aktuelle Ereigniszeitfenster EZF angezeigt. Erkennt die Ereigniserkennungsanordnung 30 ein Ereignis, für welches Daten dauerhaft aufgezeichnet werden müssen, dann benachrichtigt die Ereigniserkennungsanordnung 30 den Pufferblock 20 über das entsprechende aktuelle Ereigniszeitfenster EZF, welches einem Zeitbereich entspricht, für welchen die entsprechenden Datenrahmen DR persistent gespeichert werden sollen. Das Ende des aktuellen Ereigniszeitfensters EZF kann ein Zeitpunkt in der Zukunft sein. Wenn weitere Ereignisse erkannt werden, dann kann sich das aktuelle Ereigniszeitfenster EZF ändern. Dies kann beispielsweise der Fall sein, wenn zuerst ein weniger wichtiges Ereignis erkannt wird, gefolgt von einem schwerwiegenderen Ereignis, das als mit dem ersten Ereignis zusammenhängend betrachtet wird. Ein Beispiel könnte sein, dass das Fahrzeug als Ereignis A erkennt, dass es die Mittellinie der Straße überquert, d. h. ein Fehler in einer automatischen Lenkfunktion des Fahrzeugs vorliegt, und anschließend ein Airbagsteuergerät die Ereigniserkennungsanordnung 30 über einen Airbageinsatz als Folge eines Frontaufpralls als Ereignis B benachrichtigt. Das Ereignis A kann allein als relevant für eine Aufzeichnung der Fahrzeugdaten in einem ersten Ereigniszeitfenster EZF mit einem Startzeitpunkt EZF_1, welcher 10 Sekunden vor Eintritt des Ereignisses A liegt, und einem Endzeitpunkt EZF_2, welcher 10 Sekunden nach dem Eintritt des Ereignisses A betrachtet werden. Das Ereignis B, welches deutlich schwerwiegender als Ereignis A ist, kann eine Aufzeichnung der Fahrzeugdaten in einem zweiten Ereigniszeitfenster EZF mit einem Startzeitpunkt EZF_1, welcher 30 Sekunden vor Eintritt des Ereignisses B liegt, und einem Endzeitpunkt EZF_2, welcher 30 Sekunden nach dem Eintritt des Ereignisses B erfordern. Während also die Aufzeichnung der Fahrzeugdaten für das Ereignis A noch läuft, änderte die Ereigniserkennungsanordnung 30 das aktuelle Ereigniszeitfenster EZF für die Aufzeichnung der Fahrzeugdaten für das Ereignis B.
-
Im dargestellten Ausführungsbeispiel entspricht der Pufferblock 20 von außen betrachtet einer Sammlung von Zeigern DRZ auf Datenrahmen DR, welche der Pufferblock 20 für einige Zeit behält, bis der Pufferblock 20 diese entweder an die Speicherverwaltung des mindestens einen flüchtigen Speichers 50 zurückgibt oder an die Datenaufzeichnungsanordnung 40 weiterleitet, welche die den weitergeleiteten Zeigern DRZ korrespondierenden Datenrahmen DR aus dem mindestens einen flüchtigen Speicher 50 ausliest und persistent in dem mindestens einen nichtflüchtigen Speicher 46 speichert. Die aktuelle Schreibpartition kann der Pufferblock 20 beispielsweise mit einem Schreibpartitionszeiger in einer atomaren Maschinenanweisung markieren. Intern umfasst der Pufferblock eine Reihe von Partitionen 21, 21A, 21B. Eine einzelne Partition 21, 21A, 21B entspricht beispielsweise einem Array von Datenrahmenzeigern DRZ, welche mit einigen Zusatzinformationen 26, welche das Zeitfenster 27 des korrespondierenden Datenrahmens DR betreffen, und Hilfsinformationen 60 angereichert sind, welche den Auslesevorgang der Referenzinformationen 25 erleichtern und beschleunigen.
-
Sowohl die Größe als auch die Anzahl der Partitionen 21, 21A, 21B im Pufferblock 20 sind statisch konfigurierbar, d.h. zur Kompilierungszeit bekannt. Der Pufferblock 20 enthält statisch den Speicherbereich der Partitionen 21, 21A, 21B, d.h. der Pufferblock 20 ordnet die Partitionen 21, 21A, 21B statisch beim Programmstart zu. Größe und Anzahl der Partitionen 21, 21A, 21B kann so konfiguriert werden, dass die Anzahl der Datenrahmenzeiger DRZ unter allen Bedingungen ausreichend ist. Zusätzlich zu den Partitionen 21, 21A, 21B, welche die Datenrahmenzeiger DRZ enthalten, enthält der Pufferblock 20 eine materialisierte Darstellung des aktuellen Ereigniszeitfensters EZF.
-
Die Datenbereitstellunganordnung 10 fügt Datenrahmen DR, d.h. Referenzinformationen 25 der korrespondierenden Datenrahmen DR, in den Pufferblock 20 ein, während die Datenaufzeichnungsanordnung 40 die Referenzinformationen 25 der Datenrahmen DR aus dem Pufferblock 20 ausliest und die zugehörigen Datenrahmen DR persistent speichert. Daher wird hier die Datenbereitstellunganordnung 10 als „Schreiber“ und die Datenaufzeichnungsanordnung 40 als „Leser“ bezeichnet. Schreiber und Leser können Verfahren des Pufferblocks 20 gleichzeitig bzw. parallel aus verschiedenen Abläufen aufrufen und der innere Zustand des Pufferblocks 20 bleibt natürlich in allen möglichen gleichzeitigen bzw. parallelen Abläufen korrekt.
-
Der Pufferblock 20 trennt einen Schreibablauf der Schreibfunktion SF von einem Leseablauf der Lesefunktion LF über den exklusiven Besitz von Partitionen 21, 21A, 21B. Der Pufferblock 20 bestimmt eine der Partitionen 21, 21A, 21B als die aktuelle „Schreibpartition“. Die Schreibfunktion SF besitzt diese aktuelle Schreibpartition exklusiv. Die Lesefunktion LF kann die aktuelle Schreibpartition weder lesen noch ändern, auch wenn die aktuelle Schreibpartition Datenrahmen DR enthält, welche das aktuelle Ereigniszeitfenster EZF zeitlich überlappen. Wenn die Schreibfunktion SF die aktuelle Schreibpartition vollständig mit Referenzinformationen 25 gefüllt hat, sucht die Schreibfunktion SF mit dem oben beschriebenen Bestimmungsvorgang 140 nach einer neuen aktuellen Schreibpartition und die bisherige Schreibpartition wird für die Lesefunktion LF zugänglich.
-
Wenn die Schreibfunktion SF die neue aktuelle Schreibpartition bestimmt hat, setzt die Schreibfunktion SF den Schreibpartitionszeiger des Pufferblocks 20 entsprechend einem atomaren Speichervorgang zurück. Dadurch werden Wettlaufbedingungen ausgeschlossen, welche dadurch verursacht werden können, dass die Lesefunktion LF auf eine veraltete zwischengespeicherte Version der aktuellen Schreibpartition zugreift, z. B. in einem CPU-Cache eines anderen CPU-Kerns.
-
Ebenso besitzt die Lesefunktion LF eine Partition 21, 21A, 21B, die als aktuelle Lesepartition bestimmt ist. Natürlich überlappt sich die aktuelle Lesepartition zeitlich mit dem aktuellen Ereigniszeitfenster EZF, sonst würde sich die Lesefunktion LF nicht für die enthaltenen Datenrahmen DR interessieren. Aufgrund des oben beschriebenen Bestimmungsvorgangs wird die Schreibfunktion SF ohne weitere Mittel zum Trennen der Abläufe niemals auf die aktuelle Lesepartition zugreifen. Wenn die Lesefunktion LF alle Referenzinformationen 25 der relevanten Datenrahmen DR aus der aktuellen Lesepartition ausgelesen hat, dann ist das Zeitfenster 22 der aktuellen Lesepartition entweder ungültig, weil alle in der aktuellen Lesepartition enthaltenen Datenrahmen DR ausgelesen wurden, oder das Zeitfenster 22 der aktuellen Lesepartition überlappt sich nicht mehr mit dem aktuellen Ereigniszeitfenster EZF. Die Lesefunktion LF sucht dann nach einer anderen Partition 21, 21A, 21B, welche sich mit dem aktuellen Ereigniszeitfenster EZF überlappt und nicht die aktuelle Schreibpartition ist. Wenn die Lesefunktion LF eine solche Partition 21, 21A, 21B findet, da der Pufferblock Referenzinformationen 25 von mehreren relevanten Datenrahmen DR zum aktuellen Ereignis enthält, dann bestimmt die Lesefunktion LF diese Partition 21, 21A, 21B zur neuen aktuellen Lesepartition. Da die Schreibfunktion SF nie auf die aktuelle Lesepartition zugreift, ist es auch nicht erforderlich, den Lesepartitionszeiger atomar zu speichern. In der überwiegenden Mehrheit der Aufrufe des Pufferblocks 20 fügt die Schreibfunktion SF einfach Referenzinformationen 25 zu einem neuen Datenrahmen DR an das Ende der aktuellen Schreibpartition an, wodurch möglicherweise das Zeitfenster 22 der aktuellen Schreibpartition erweitert wird. Ebenso liest die Lesefunktion LF einfach die Referenzinformationen 25 zum nächsten Datenrahmen DR aus der aktuellen Lesepartition aus. Auf diese Weise stören sich die Schreibfunktion SF und die Lesefunktion LF nie gegenseitig. Nur wenn die aktuelle Schreibpartition vollständig beschrieben ist oder die aktuelle Lesepartition vollständig ausgelesen wurde, kann es gleichzeitige Zugriffe auf Partitionen geben. Dies sind jedoch schreibgeschützte Nur-Lese-Zugriffe, welche die Zeitfenster 22 der Partitionen 21, 21A, 21B miteinander vergleichen. Aufgrund der Definition einer neuen exklusiven Lesepartition oder einer neuen exklusiven Schreibpartition sind die Lese- und Schreibabläufe jederzeit ordnungsgemäß voneinander getrennt.
-
Es kann mehr als einen Aufruf der Schreibfunktion SF geben. Um Wettlaufbedingungen aufgrund von zwei Aufrufen zu vermeiden, welche gleichzeitig eine neue aktuelle Schreibpartition definieren oder Statusinformationen innerhalb der aktuellen Schreibpartition überschreiben wollen, werden alle Zugriffe auf den Pufferblock 20 von einem Aufruf der Schreibfunktion SF nur unter exklusivem Besitz einer Sperre ausgeführt. Bei nur einer einzigen Schreibfunktion SF ist diese Sperre immer in einem einzigen atomaren Lesevorgang verfügbar. Andernfalls muss ein zweiter Aufruf warten, bis die derzeit aktive Schreibfunktion SF diese Sperre freigegeben hat. Da die unter der Sperre ausgeführten Aktionen sehr schnell sind, ist dies die bessere Lösung, als im Gegensatz dazu eine separate aktuelle Schreibpartition für jeden Aufruf der Schreibfunktion SF einzeln einzuführen. Es ist zu beachten, dass weder die Lesefunktion LF noch die Ereigniserkennungsanordnung 30 jemals diese Sperre erwerben müssen. Das bedeutet, dass diese Sperre nur Wartezyklen verursacht, falls zwei Aufrufe dabei sind, über die Schreibfunktion SF jeweils Referenzinformationen 25 eines neuen Datenrahmens DR gleichzeitig in den Pufferblock 20 einzufügen.
-
Die Ereigniserkennung kann in der Ereigniserkennungsanordnung 30 in einem separaten Ablauf ausgeführt werden. Die Ereigniserkennungsanordnung 30 interagiert nicht direkt mit der Verarbeitung der Datenrahmen DR. Die Ereigniserkennungsanordnung 30 kann jedoch jederzeit das im Pufferblock 20 gespeicherte aktuelle Ereigniszeitfenster festlegen, ändern oder ungültig machen. Die Schreibfunktion SF liest das aktuelle Ereigniszeitfenster EZF bei der Suche nach einer neuen Schreibpartition. Obwohl der gleichzeitige Zugriff der Ereigniserkennungsanordnung 30 und der Schreibfunktion SF auf das aktuelle Ereigniszeitfenster „nur“ ein Lese-/Schreibkonflikt ist, stellt der Pufferblock 20 sicher, dass die Schreibfunktion SF kein teilweise geschriebenes und damit willkürlich beschädigtes aktuelles Ereigniszeitfenster EZF liest, während die Ereigniserkennungsanordnung 30 das aktuelle Ereigniszeitfenster EZF ändert. Wenn es mehr als einen Aufruf der Schreibfunktion SF gibt, kann nur einer von ihnen die beschriebene exklusive Sperre erworben haben. Daher kann nur eine Schreibfunktion SF mit der Ereigniserkennungsanordnung 30 für den gleichzeitigen Zugriff auf das aktuelle Ereigniszeitfenster EZF in Konflikt stehen, während andere Aufrufe versuchen, die Sperre zu erhalten. Der Pufferblock 20 löst den Konflikt zwischen der Ereigniserkennungsanordnung 30 und der Schreibfunktion SF, indem das aktuelle Ereigniszeitfenster EZF als atomarer Wert, d.h. in einer einzigen Maschinenanweisung, gespeichert wird. Daher schreibt die Ereigniserkennungsanordnung 30 das neue aktuelle Ereigniszeitfenster EZF in einem einzelnen atomaren Vorgang. Die Schreibfunktion SF liest entweder das alte aktuelle Ereigniszeitfenster EZF oder das neue aktuelle Ereigniszeitfenster EZF, aber nie ein beschädigtes, teilweise geschriebenes aktuelles Ereigniszeitfenster EZF.
-
Bei der Suche nach einer neuen Schreibpartition erstellt die Schreibfunktion SF zunächst eine ablauflokale Kopie des aktuellen Ereigniszeitfensters EZF mit Hilfe eines atomaren Lesevorgangs. Anschließend arbeitet die Schreibfunktion SF nur mit der ablauflokalen Kopie, bis eine neue Schreibpartition gefunden ist. Auf diese Weise ist es möglich, dass die Schreibfunktion SF mit Hilfe eines veralteten aktuellen Ereigniszeitfensters EZF nach einer neuen Schreibpartition sucht. Dieses Verhalten ist jedoch identisch mit dem Fall, dass die Schreibfunktion SF zuerst die Schreibpartition aktualisiert und die Ereigniserkennungsanordnung 30 danach das aktuelle Ereigniszeitfenster EZF ändert.
-
Wie bei dem beschriebenen Lese-/Schreibkonflikt zwischen der Ereigniserkennungsanordnung 30 und der Schreibfunktion SF weist auch die Lesefunktion LF einen Lese-/Schreibkonflikt mit der Ereigniserkennungsanordnung 30 für Zugriffe auf das aktuelle Ereigniszeitfenster EZF des Pufferblocks 20 auf. Die Lesefunktion LF muss das aktuelle Ereigniszeitfenster EZF kennen, um eine Partition 21, 21A, 21B zu finden, welche Datenrahmen DR enthält, die sich mit dem aktuellen Ereigniszeitfenster EZF überlappen, und falls diese Partition 21, 21A, 21B nicht vollständig im aktuellen Ereigniszeitfenster EZF enthalten ist, um die relevanten Datenrahmen DR innerhalb dieser Partition zu identifizieren bzw. zu bestimmen.
-
Natürlich liest die Lesefunktion LF kein teilweise geschriebenes beschädigtes aktuelles Ereigniszeitfenster EZF, während die Ereigniserkennungsanordnung 30 das aktuelle Ereigniszeitfenster EZF gleichzeitig ändert.
-
Wie oben ausgeführt ist, aktualisiert die Ereigniserkennungsanordnung 30 das aktuelle Ereigniszeitfenster EZF atomar. Ebenso liest die Lesefunktion LF das aktuelle Ereigniszeitfenster EZF atomar zu Beginn eines jeden Verfahrensaufrufs des Pufferblocks 20 und speichert es in einer ablauflokalen Kopie. Während der Ausführung des Auslesevorgang verwendet die Lesefunktion LF diese Kopie überall dort, wo das aktuelle Ereigniszeitfenster EZF benötigt wird.
-
Es ist möglich, dass sich das im Pufferblock 20 gespeicherte aktuelle Ereigniszeitfenster EZF von der ablauflokalen Kopie der Lesefunktion LF unterscheidet. Die Lesefunktion LF beendet den aktuellen Auslesevorgang mit dem inzwischen veralteten aktuellen Ereigniszeitfenster EZF und leitet somit höchstens die Referenzinformationen 25 von einem Datenrahmen DR, dessen Zeitfenster 22 sich außerhalb des aktuellen Ereigniszeitfensters EZF befindet, zur Datenaufzeichnungsanordnung 40 weiter. Dieses Verhalten ist jedoch so, als ob die Ereigniserkennungsanordnung 30 das neue aktuelle Ereigniszeitfenster EZF erst festgelegt hätte, nachdem die Lesefunktion LF diesen Datenrahmen DR verarbeitet hat und ist somit tolerierbar.
-
Zu Beginn eines jeden Aufrufs des Pufferblocks 20 erstellt die Lesefunktion LF nicht nur eine ablauflokale Kopie des aktuelle Ereigniszeitfensters EZF, sondern prüft auch, ob sich das aktuelle Ereigniszeitfenster EZF seit dem vorherigen Aufruf geändert hat. Wenn sich das aktuelle Ereigniszeitfenster EZF geändert hat, prüft die Lesefunktion LF zunächst, ob die aktuelle Lesepartition noch mit dem neuen aktuellen Ereigniszeitfenster überlappt. Ist dies nicht der Fall, sucht die Lesefunktion LF nach einer neuen aktuellen Lesepartition, wie oben beschrieben ist. Wenn sich die aktuelle Lesepartition immer noch mit dem neuen aktuellen Ereigniszeitfenster EZF überlappt, startet die Lesefunktion LF den Auslesevorgang erneut und beginnt die aktuelle Lesepartition von Anfang an erneut zu lesen.