-
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. Um
den Nachrichtenverlust in dem System gemäß diesem Ansatz zu verhindern, wird
daher ein angepasstes Betriebssystem benötigt, das mit den digitalen
Uhren zu verwenden ist.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
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 in einen
ersten Knotentyp oder einen zweiten Knotentyp klassifiziert. Ferner weist
jeder verteilte Knoten seine eigene lokale Taskdauer auf, welche
die Zeit ist, die ein Knoten benötigt, um
einen ihm zugewiesenen Task abzuarbeiten. Eine Synchronisationsfrequenz
wird ermittelt, und Synchronisationsrahmen werden mit der Synchronisationsfrequenz
von dem ersten Knotentyp an den zweiten Knotentyp 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, die in Verbindung mit den begleitenden Zeichnungen
gesetzt 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 eines Tasks an einem
Master-Knoten zeigt;
-
4 stellt
ein Flussdiagramm dar, das die Ausführung eines Tasks an einen
Slave-Knoten zeigt;
-
5 stellt
ein Flussdiagramm dar, das die Ausführung eines Tasks 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 mm 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 ein Task zugewiesen, den
dieser periodisch abarbeitet, wenn seine Uhr Zeiteinheiten gleich
der Taskdauer oder der Tasaktivierungszeit misst, die nachstehend
austauschbar verwendet werden. Ein 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 des Tasks. 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
jedes Tasks 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
ein 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 Nachrichten verlustes 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 des Tasks 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 der 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 Knoten 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 der 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 des Tasks ti an
dem Slave-Knoteni 26 zeigt, wobei
i = 1, 2, ..., (n – 1)
ist. Der Prozess ist hier dem Prozess zum Abarbeiten des Tasks 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 des Taks tn an
dem Slave-Knoten 26 zeigt. Der
Prozess ist hier dem Prozess zum Abarbeiten des Tasks 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 – 1)). Wenn
der Slave-Knoteni 26 einen Synchronisationsrahmen
von dem Master-Knoten0 24 empfängt, berechnet
er die Aktivierungszeitdrift Si des Tasks
ti (hier ist i = 1, 2, ..., (n – 1)) bezogen
auf t0. Hier wird Si unter
Ver wendung 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 Taskdauer T
und der lokalen Taskdauer Ti des i-ten Slave-Knotens
ist. Ferner passt der Slave-Knoteni 26 die
Taskaktivierungsdauer des Tasks 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 des Tasks
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.
-
Die
vorstehende Diskussion offenbart und beschreibt nur beispielhafte
Ausführungsformen
der vorliegenden Erfindung. Ein Fachmann wird anhand einer solchen
Diskussion und anhand der begleitenden Zeichnungen und Ansprüche leicht
erkennen, dass verschiedene Änderungen,
Modifikationen und Abwandlungen darin ausgeführt werden können, ohne
von dem Geist und dem Schutzumfang der Erfindung abzuweichen, wie
er in den nachfolgenden Ansprüchen
definiert ist.