-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Diese Erfindung betrifft allgemein ein Controller-Area-Network (CAN), das eine Übertragung von Information zwischen mehreren elektronischen Steuereinheiten (ECU) steuert, die in einem Fahrzeug angeordnet sind, und insbesondere eine Technik zur Verhinderung eines Informationsverlustes, die in einem CAN-System verwendet wird.
-
2. Beschreibung der verwandten Technik
-
Die modernen Zeiten haben die Verwendung verschiedener innovativer Merkmale bei Kraftfahrzeugen gesehen. Diese Merkmale umfassen Adaptivtempomat-, Kollisionsvermeidungs- und Stabilitätskontrollsysteme. Die Implementierung solcher Systeme umfasst typischerweise die Verwendung eines verteilten Controller-Area-Network-Systems (CAN-Systems) mit mehreren elektronischen Steuereinheits-Knoten (ECU-Knoten) und einem CAN-Bus zur Übertragung von Nachrichten zwischen diesen Knoten. Bei dem verteilten CAN-System gibt es normalerweise keine Uhrensynchronisation zwischen den ECU-Knoten. Aufgrund des Fehlens der Synchronisation driften die Uhren der ECU-Knoten voneinander weg. Typischerweise könnte eine Uhr bei einer Uhrendriftrate von ±30 ppm (Teile pro Million) bei einer Standardtemperatur (25°C, 77°F) in einer Stunde um 108 Millisekunden driften. Dieses Driften von Uhren kann einen Nachrichtenverlust in dem CAN-System verursachen, der ernste Folgen haben könnte. Ferner könnte eine Sequenz von Nachrichten aufgrund einer Kombination von anderen Faktoren zusätzlich zu der Uhrendrift, wie beispielsweise endliche Puffergröße, Übertragungs-Jitter, usw., in dem CAN-System verloren gehen.
-
Ein existierender Ansatz zum Verhindern eines Nachrichtenverlustes umfasst ein Oversampling, so dass ein einzelner Nachrichtenverlust das Funktionieren des Systems nicht beeinflussen kann. Dieser Ansatz kann jedoch nicht verwendet werden, um eine Sequenz von Nachrichtenverlusten zu überwinden. Dies liegt daran, dass die Samplingrate und die Softwaretask-Ausführungsdauer n-mal schneller sein sollten, um eine Sequenz von n Nachrichtenverlusten zu überwinden. Dies ist in Fällen, bei denen n ≥ 3 ist, aufgrund eines großen Verbrauchs von Ressourcen und aufgrund von Hardwarebeschränkungen im Allgemeinen unmöglich.
-
Ein anderer Ansatz zum Verhindern eines Nachrichtenverlustes ist es, eine digitale Uhr für jeden ECU-Knoten vorzusehen und diese Uhren zu synchronisieren. Eine Uhrensynchronisation kann jedoch einen großen Overhead aufweisen, da diese Synchronisationen bei einer Driftrate von ±30 ppm üblicherweise ungefähr jede 15 ms (Millisekunden) ausgeführt werden und manche Synchronisationsmechanismen spezielle Hardwareschaltungen erfordern. Derzeit basiert das Betriebssystem zur Taskaktivierung auf den Quarzuhren der ECU-Knoten anstelle der digitalen Uhr.
-
Aus der
US 6,111,888 A ist ein Verfahren gemäß dem Oberbegriff des Anspruchs 1 bekannt.
-
-
In der
US 2007/0271204 A1 ist ein Verfahren zur Verifikation eines linearen Hybridautomaten beschrieben.
-
Ferner beschreibt die
US 2003/0070019 A1 ein Verfahren zur Übertragung von Informationen in einem Bussystem, die Synchronisationsinformationen umfassen.
-
Eine Aufgabe der Erfindung besteht darin, ein Verfahren zum Verhindern eines Nachrichtenverlustes in einem CAN-System gemäß dem Ansatz mit einer digitalen Uhr für jeden ECU-Knoten zu schaffen, bei dem ein angepasstes Betriebssystem eingesetzt wird, das mit den digitalen Uhren zu verwenden ist.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des Anspruchs 1 gelöst.
-
Gemäß den Lehren der vorliegenden Erfindung wird ein Verfahren zur Verhinderung eines Nachrichtenverlustes in einem CAN-System offenbart, das eine spezielle Anwendung für die verschiedenen Steuermerkmale aufweist, die in Fahrzeugen verwendet werden, wie beispielsweise Adaptivtempomat-, Kollisionsvermeidungs- und Stabilitätskontrollysteme. Das Verfahren verwendet ein CAN-System, das mehrere verteilte Knoten aufweist, die miteinander über einen CAN-Bus kommunizieren. Die verteilten Knoten werden als Master-Knoten oder als Slave-Knoten klassifiziert. Ferner weist jeder verteilte Knoten seine eigene lokale Taskdauer auf, welche die Zeit ist, die ein Knoten benötigt, um eine ihm zugewiesene Task abzuarbeiten. Eine Synchronisationsfrequenz wird ermittelt, und Synchronisationsrahmen werden mit der Synchronisationsfrequenz von dem Master-Knoten an die Slave-Knoten gesendet. Anschließend wird eine Taskaktivierungs-Synchronisation an dem zweiten Knotentyp basierend auf einer Information ausgeführt, die in den Synchronisationsrahmen enthalten ist, wobei die Taskaktivierungs-Synchronisation ausgeführt wird, indem die Taskdauer des zweiten Knotentyps angepasst wird.
-
Zusätzliche Merkmale der vorliegenden Erfindung werden anhand der nachfolgenden Beschreibung und der beigefügten Ansprüche offensichtlich werden, wenn diese mit den begleitenden Zeichnungen in Verbindung gebracht werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 stellt ein verteiltes Controller-Area-Network-System (CAN-System) dar, das einen Nachrichtenverlust aufgrund von Uhrendriften zeigt;
-
2 stellt ein Blockdiagramm eines Verfahrens zum Verhindern eines Nachrichtenverlustes in einem verteilten CAN-System dar;
-
3 stellt ein Flussdiagramm dar, das die Ausführung einer Task an einem Master-Knoten zeigt;
-
4 stellt ein Flussdiagramm dar, das die Ausführung einer Task an einen Slave-Knoten zeigt;
-
5 stellt ein Flussdiagramm dar, das die Ausführung einer Task an dem letzten Slave-Knoten zeigt;
-
6 stellt ein Flussdiagramm dar, welches das Verfahren zum Ausführen einer Taskaktivierungs-Synchronisation an dem Master-Knoten zeigt; und
-
7 stellt ein Flussdiagramm dar, das ein Verfahren zum Ausführen der Taskaktivierungs-Synchronisation an dem Slave-Knoten zeigt.
-
AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Die nachfolgende Diskussion der Ausführungsformen der Erfindung, die auf ein Verfahren zur Verhinderung eines Nachrichtenverlustes in einem CAN-System gerichtet sind, ist nur beispielhafter Natur und ist in keiner Weise dazu gedacht, die Erfindung oder ihre Anwendungsmöglichkeiten oder Verwendungen einzuschränken. Beispielsweise weist das Verfahren zur Verhinderung eines Nachrichtenverlustes in einem CAN-System gemäß der Erfindung eine spezielle Anwendung in Adaptivtempomat-, Kollisionsvermeidungs- und Stabilitätskontrollsystemen auf, die in Fahrzeugen verwendet werden. Wie Fachleute jedoch einsehen werden, kann das Verfahren zur Verhinderung eines Nachrichtenverlustes in einem CAN-System gemäß der Erfindung andere Anwendungen aufweisen.
-
1 stellt eine beispielhafte Situation dar, die einen Nachrichtenverlust in einem CAN-System aufgrund von Uhrendriften, einer endlichen Puffergröße und eines Übertragungs-Jitters zeigt. Das CAN-System weist mehrere Knoten 12, 14 und 16 auf, die miteinander über einen CAN-Bus 18 kommunizieren können, wobei der Knoten 12 der erste Knoten ist, der Knoten 16 der letzte Knoten ist und die Knoten 14 Zwischenknoten sind. Die Knoten 12, 14 und 16 sind ECU-Knoten, wobei jeder Knoten seine eigene lokale Uhr aufweist. Ferner weisen die Knoten 14 und 16 einen Puffer einer solchen endlichen Größe auf, dass eine Information gespeichert wird, die von dem vorhergehenden Knoten empfangen wird. Jedem Knoten wird eine Task zugewiesen, die dieser periodisch abarbeitet, wenn seine Uhr Zeiteinheiten gleich der Taskdauer oder der Taskaktivierungszeit misst, die nachstehend austauschbar verwendet werden. Eine Task wird hier als abgearbeitet bezeichnet, wenn der Knoten eine Ausgabe basierend auf einer Eingabe erzeugt. Die Taskdauer ist die Zeit zwischen zwei aufeinanderfolgenden Aufrufen der Task. In dieser beispielhaften Situation wird angenommen, dass die Taskdauer 10 Millisekunden (ms) beträgt und die Freigabephase, d. h. die Zeitverzögerung zwischen den Aktivierungen der Tasks an ihren entsprechenden Knoten, Null ist. Um den Übertragungs-Jitter in Betracht zu ziehen, wird die Taskausführungszeit jeder Task für den besten Fall und für den schlechtesten Fall als 4,9 ms bzw. 5,1 ms angenommen.
-
Wie in 1 gezeigt ist, wird eine Eingabe 10 dem ersten Knoten 12 zugeführt, und eine Ausgabe 20 wird an dem letzten Knoten 16 beobachtet. Es wird gezeigt, dass eine Ausgabesequenz (0 → 0 → 0 → 0 → 0) für eine Eingabesequenz (0 → 1 → 1 → 1 → 0) erhalten wird. Es kann klar beobachtet werden, dass ein fortlaufender Nachrichtenverlust an Positionen 22 bei den Knoten 12 und 14 aufgrund einer Ersetzung einer unverbrauchten alten Nachricht durch eine neue Nachricht auftritt.
-
2 stellt ein Blockdiagramm eines Verfahrens zum Verhindern eines Nachrichtenverlustes in einem verteilten CAN-System dar. Die Knoten, die von dem CAN-System umfasst werden, gehören zu zwei Typen, nämlich einem ersten Knotentyp 24, der auch als ein Master-Knoten bekannt ist, und einem zweiten Knotentyp 26, der auch als ein Slave-Knoten 26 bekannt ist. Jeder der Knoten in dem CAN-System ist verteilt, da sie die ihnen zugewiesenen Tasks unabhängig ausführen. Der Master-Knoten 24 ist üblicherweise der erste Knoten und alle nachfolgenden Knoten sind die Slave-Knoten (Slave-Knoten0, Slave-Knoten1, ..., Slave-Knotenn). Dem Master-Knoten 24 wird eine Task t0 zugewiesen, und den Slave-Knoten 26 werden Tasks t1, t2, ..., tn zugewiesen. Ferner weist jeder Knoten eine lokale Uhr für seine lokale Taskdauer auf. Alle Slave-Knoten 26 weisen einen Puffer 28 auf, repräsentiert durch b1, b2, ..., bn. Der Puffer 28 wird verwendet, um die Nachricht zu speichern, die von dem vorhergehenden Knoten empfangen wird.
-
Der Master-Knoten 24 sendet periodisch einen Synchronisationsrahmen, der eine Information über das Zeitintervall enthält, nach dem ein Synchronisationsrahmen von dem Master-Knoten 24 gesendet wird und das bezogen auf die lokale Uhr des Master-Knotens 24 gemessen wird. Ferner passt jeder Slave-Knoten 26 bei dem Empfangen des Synchronisationsrahmens seine Taskaktivierungszeit t gemäß der Information an, die in dem Synchronisationsrahmen empfangen wird, wie später bei 7 beschrieben wird. Dieser Vorgang des Anpassens der Taskaktivierungszeit t ist als Taskaktivierungs-Synchronisation bekannt. Bevor der Vorgang der Taskaktivierungs-Synchronisation ausgeführt wird, wird eine Synchronisationsfrequenz ermittelt. Die Synchronisationsfrequenz ist die Frequenz, mit der die Synchronisationsrahmen von dem Master-Knoten 24 an die Slave-Knoten 26 gesendet werden. Um die Synchronisationsfrequenz zu ermitteln, wird ein Modell des CAN-Systems in der Form eines linearen Hybridautomaten (LHA) verwendet. Die Synchronisationsfrequenz wird auf eine solche Weise ermittelt, dass das CAN-System keinen Nachrichtenverlust und einen geringen Overhead aufweist. Dieser Prozess des Ermittelns der Synchronisationsfrequenz wird unten beschrieben und ist ein Offline-Prozess, d. h. er wird während der Ausgestaltungsphrase des CAN-Systems ausgeführt, so dass das Modell für verschiedene Frequenzparameter getestet werden kann.
-
Der LHA weist eine Testfrequenz 1/N' als einen seiner Parameter auf, wobei N' eine ganze Zahl ist. Daher wird die Taskaktivierungs-Synchronisation in dem Modell nach jeder Zeitspanne (N')·T ausgeführt, wobei T die Taskdauer ist. Die anfängliche Testfrequenz wird derart gewählt, dass sie die höchste Frequenz ist, die der LHA unter den gegebenen System-Ressourcenbeschränkungen annehmen kann. Anschließend wird eine formale Verifikation für den LHA ausgeführt, um den Zustand eines Nachrichtenverlustes bei der anfänglichen Testfrequenz zu beobachten. Nun wird die anfängliche Testfrequenz um einen Faktor verringert, und die Taskaktivierungs-Synchronisation wird mit dieser neuen Frequenz ausgeführt. Bei einer nicht einschränkenden Ausführungsform wird die Testfrequenz um einen Faktor Zwei verringert. Wiederum wird der Schritt der formalen Verifikation ausgeführt, um den Nachrichtenverlustzustand bei der neuen Testfrequenz zu beobachten. Die oben erwähnten Schritte der iterativen Verringerung der Testfrequenz, der Taskaktivierungs-Synchronisation mit der verringerten Testfrequenz und der formalen Verifikation werden ausgeführt, bis ein Nachrichtenverlust beobachtet wird. Nun wird die Testfrequenz eines Schrittes, der dem Schritt gerade vorangeht, bei dem der erste Nachrichtenverlust aufgetreten ist, welche auch die niedrigste Frequenz ist, bei der es keinen Nachrichtenverlust gibt, als die Synchronisationsfrequenz bezeichnet und durch 1/N angegeben. Wenn jedoch ein Nachrichtenverlust bei der ersten Iteration beobachtet wird, dann wird der Systemzeitplan revidiert, da der Zeitplan selbst nicht robust genug ist und eine kleine Uhrendrift einen Nachrichtenverlust verursachen würde.
-
3 stellt ein Flussdiagramm dar, das die Ausführung der Task t0 an dem Master-Knoten 24 zeigt. Hier ist B0 die Ausführungszeit für den besten Fall, W0 die Ausführungszeit für den schlechtesten Fall, und ein Freshness-Bit1 gibt den Zustand für den Puffer b1 28 an. Das Freshness-Bit wird verwendet, um anzugeben, ob die Daten in dem entsprechenden Puffer 28 durch den ihm zugeordneten Knoten aufgebraucht wurden oder nicht. Der Wert des Freshness-Bits1 ist 0, wenn die Daten in dem Puffer 28 aufgebraucht wurden, oder 1, wenn die Daten in dem Puffer 28 nicht aufgebraucht wurden. Anfänglich befindet sich die Task t0 bei Schritt 32 in einem ”Warten”-Zustand. Die lokale Uhrenvariable ist die Zeiteinheit, die von einer lokalen Uhr des entsprechenden Knotens gemessen wird. Die lokale Uhrenvariable des Master-Knotens 24 ist als C0 gezeigt, und sie ist gleich der Differenz zwischen T0 und R0, wie bei Box 30 angegeben ist. Hier ist T0 die lokale Taskdauer des Master-Knotens 24, und sie ist gleich der Taskdauer T, wobei R0 die Freigabephase ist.
-
Im Allgemeinen ist die lokale Taskdauer eines Knotens die Taskdauer, die von der entsprechenden lokalen Uhr bezüglich der lokalen Uhr des Master-Knotens gemessen wird. Daher kann gesagt werden, dass, nachdem die Taskaktivierungs-Synchronisation stattfindet, die lokalen Taskdauern aller Knoten bezüglich der lokalen Uhr des Master-Knotens gleich der gemeinsamen Taskdauer T für alle Knoten sein werden. Die lokale Uhr des Master-Knotens ist derart gezeigt, dass sie eine Driftrate von E aufweist. Daher lautet die Verlaufsfunktion für die lokale Uhr 1 – E ≤ dC0/dt ≤ 1 + E. Wenn die lokale Uhrenvariable C0 den Wert T0 erreicht, wie es bei Box 34 angegeben ist, findet ein Übergang von dem ”Warten”-Zustand 32 in einen ”Ausführen”-Zustand 38 statt, bei dem die Task des Master-Knotens 24 die Ausführung beginnt und C0 auf Null zurückgesetzt wird. Ferner könnte der Prozess von dem ”Ausführen”-Zustand 38 wieder zurück in den ”Warten”-Zustand 32 übergehen, wenn der Wert von C0 zwischen B0 und W0 liegt und das Freshness-Bit1 gleich Null ist. In diesem Fall wird das Freshness-Bit1 auf Eins zurückgesetzt. Wenn der Wert von C0 jedoch zwischen den Werten B0 und W0 liegt und das Freshness-Bit1 gleich Eins ist, dann geht der Prozess in den Zustand 42 über, bei dem ein Nachrichtenverlust an dem Puffer b1 angegeben wird.
-
4 stellt ein Flussdiagramm dar, das die Ausführung der Task ti an dem Slave-Knoteni 26 zeigt, wobei i = 1, 2, ..., (n – 1) ist. Der Prozess ist hier dem Prozess zum Abarbeiten der Task t0 ähnlich, wie er in 3 beschrieben ist, außer dass dann, wenn ein Übergang aus dem ”Warten”-Zustand 46 in den ”Ausführen”-Zustand 52 stattfindet, das Freshness-Bit für den Puffer bi(i = 1, 2, ..., (n – 1)) auf Null zurückgesetzt wird, wie es bei Box 50 angegeben ist.
-
5 stellt ein Flussdiagramm dar, das die Ausführung der Task tn an dem Slave-Knotenn 26 zeigt. Der Prozess ist hier dem Prozess zum Abarbeiten der Task t0 ähnlich, wie er in 3 beschrieben ist, außer dass es keinen Puffer nach dem Slave-Knotenn 26 gibt und es infolgedessen keine Bedingung für einen Nachrichtenverlust gibt.
-
6 stellt ein Flussdiagramm dar, welches das Taskaktivierungs-Synchronisationsmodell für den Master-Knoten0 24 zeigt. Das Zeitintervall zwischen zwei Synchronisationen wird hier mit S bezeichnet. Ferner ist die Synchronisationsfrequenz die gleiche, wie sie bei 2 beschrieben ist, und C0 ist das gleiche, wie es bei 3 beschrieben ist. Der Synchronisationsrahmen wird anfänglich von dem Master-Knoten0 24 ausgesendet und mit ”Sync” bezeichnet, und die Variable S wird bei Box 68 auf Null gesetzt. Ferner sendet der Master-Knoten0 24 nach jeden N·T Zeiteinheiten, das heißt, wenn S = N·T0 ist, wie bei Box 70 angegeben ist, einen Synchronisationsrahmen an die Slave-Knoten 26. Die Selbstübergangsschleife zum Senden der Synchronisationsrahmen durch den Master-Knoten 24 wurde bei Schritt 72 angegeben. Bei der Box 70 ist T0 die Taskdauer des Master-Knotens 24, und sie ist gleich der Taskdauer T, und daher kann gesagt werden, dass der Master-Knoten einen Synchronisationsrahmen aussendet, wenn die Bedingung N·T0 = N·T erfüllt ist.
-
7 stellt ein Flussdiagramm dar, welches das Taskaktivierungs-Synchronisationsmodell für den Slave-Knoteni zeigt (hier ist i = 1, 2, ... n). Wenn der Slave-Knoteni 26 einen Synchronisationsrahmen von dem Master-Knoten0 24 empfängt, berechnet er die Aktivierungszeitdrift Si der Task ti (hier ist i = 1, 2, ..., n) bezogen auf t0. Hier wird Si unter Verwendung der Formel Si = (Ri – R0) – (C0 – Ci) + δ berechnet. R0 und C0 sind hier die gleichen, wie sie bei 3 beschrieben sind, und Ri und Ci sind ähnliche Parameter für den i-ten Slave-Knoten. Es kann abgeleitet werden, dass Si die Differenz zwischen der lokalen Taskdauer Ti des i-ten Slave-Knotens und der Taskdauer T ist. Ferner passt der Slave-Knoteni 26 die Taskaktivierungsdauer der Task ti basierend auf dem Wert der empfangenen Synchronisationsrahmen an, wie bei Box 76 angegeben ist.
-
Ferner kann man erkennen, dass die Zeitdifferenz zwischen aufeinanderfolgenden Aktivierungen von ti und t0 wegen der Freigabephasen gleich (Ri – R0) sein würde. Wie oben diskutiert wurde, sind Si, C0 und Ci die entsprechenden Werte der Zeit, die seit der letzten Aktivierung von t0 und ti bis zu dem gegenwärtige Synchronisationspunkt vergangen ist, daher würden T0 – C0 und Ti – Ci die entsprechenden Werte der nächsten Aktivierung von t0 und ti sein, was ferner impliziert, dass (Ti – Ci) – (T0 – C0) = (C0 – Ci) + (Ti – T0) die Differenz zwischen den nächsten Aktivierungen von t0 und ti ist. Daher wird die Aktivierungsdrift gleich (Ri – R0) – (C0 – Ci) – (Ti – T0) sein. Das tatsächliche Aufzeichnen der obigen C0 und Ci wird hier durch den Master-Knoten0 24 bei einem erfolgreichen Übertragen des Synchronisationsrahmens und durch den Slave-Knoten 26 bei einem Empfangen des Synchronisationsrahmens ausgeführt, so dass diese Aufzeichnungen gleichzeitig geschehen. Zusätzlich würde es einen Systemimplementierungsfehler δ geben, so dass die Aktivierungszeitdrift Si = (Ri – R0) – (C0 – Ci) + δ sein würde. Anschließend wird die Taskaktivierungsdauer Ti der Task ti unter Verwendung der Gleichung Ti = Ti + Si/N angepasst, so dass die Uhrendrift verringert und der Nachrichtenverlust verhindert werden kann.
-
Verschiedene Ausführungsformen der vorliegenden Erfindung bieten einen oder mehrere Vorteile. Die vorliegende Erfindung schafft ein Verfahren zum Verhindern eines Nachrichtenverlustes in CAN-Systemen, die in Kraftfahrzeugen verwendet werden. Das Verfahren gemäß der vorliegenden Erfindung wird verwendet, um eine Taskaktivierungs-Synchronisation an den ECU-Knoten derart auszuführen, dass der Nachrichtenverlust aufgrund einer Uhrendrift, einer endlichen Puffergröße und eines Jitters bei Übertragungsverzögerungen vermieden werden kann. Die Synchronisation der Knoten wird bei einem geringen Overhead ausgeführt, was erreicht wird, indem die Synchronisation ausgeführt wird, wenn sie notwendig ist. Ferner erfordert das Verfahren keine Verwendung von synchronisierten digitalen Uhren.