-
Die Erfindung betrifft die Übermittlung von Informationen. Insbesondere betrifft die Erfindung die Übermittlung von strukturierten Informationen auf einem Datenbus eines Kraftfahrzeugs.
-
Stand der Technik
-
An Bord eines Kraftfahrzeugs ist ein Datenbus vorgesehen, um unterschiedliche Komponenten miteinander zu koppeln. Eine erste Komponente kann einen Sensor und eine zweite Komponente ein Steuergerät umfassen, wobei der Sensor dem Steuergerät bestimmte Informationen zur Verfügung stellt. Dazu kann der Sensor die Informationen in einer vorbestimmten Datenstruktur zusammenfassen und über den Datenbus an das Steuergerät übermitteln.
-
Klassischerweise umfasst die Datenstruktur eine geordnete Abfolge vorbestimmter Datenfelder. Die einzelnen Datenfelder haben jeweils eine vorbestimmte Menge und folgen unmittelbar aufeinander. Gegebenenfalls sind noch besondere Felder für eine Prüfsumme, eine Sequenznummer oder andere Zwecke vorgesehen. Sowohl das Bilden der Datenstruktur seitens des Sensors als auch das Analysieren der Datenstruktur seitens der Steuervorrichtung erfolgen üblicherweise jeweils mittels eines Verfahrens, das auf der Basis einer Spezifikation erstellt wurde. Die Spezifikation muss üblicherweise für einen Menschen verständlich sein, sodass die Verfahren erstellt und überprüft werden können. Dabei ergeben sich häufig Missverständnisse, sodass die Verfahren des Sensors und des Steuergeräts unter Umständen nicht miteinander kompatibel sind. Das Auffinden einer solchen Inkompatibilität kann aufwendig sein.
-
Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, eine Technik anzugeben, mittels derer Informationen zwischen einer ersten und einer zweiten Komponente insbesondere an Bord eines Kraftfahrzeugs verbessert ausgetauscht werden können. Die Erfindung löst diese Aufgabe mittels eines Verfahrens, eines Computerprogrammprodukts und eines Systems mit den Merkmalen der unabhängigen Ansprüche. Unteransprüche geben bevorzugte Ausführungsformen wieder.
-
Offenbarung der Erfindung
-
Ein Verfahren zum Übermitteln von Informationen umfasst Schritte des Anordnens von Informationen in einer Datenstruktur, des Übermittelns der Datenstruktur von einer ersten Komponente an eine zweite Komponente mittels einer Transportkomponente und des Umwandelns der Datenstruktur in ein erstes Objekt, das einen vorbestimmten abstrakten Datentyp implementiert. Dabei umfasst die Datenstruktur einen Hinweis zu seiner Umwandlung in das erste Objekt.
-
Dadurch ist es möglich, die Datenstruktur nicht länger als bloße Aneinanderreihung von festen Datentypen, sondern flexibel zu gestalten. Ein Interpretationsspielraum kann dadurch verringert sein. Die Kompatibilität der ersten Komponente mit der zweiten Komponente kann verbessert sein. Die Spezifikation, welcher Hinweis mit welcher Abfolge von Informationen innerhalb der Datenstruktur gekoppelt ist, muss nicht länger von einem Menschen bzw. einem Programmierer interpretiert werden. Vielmehr können das Anordnen von Informationen in der Datenstruktur und das Entnehmen von Informationen aus der Datenstruktur automatisiert mit Bezug auf den Hinweis erfolgen. Mittels des vorgeschlagenen Ansatzes können die Informationen während der Übertragung zwischen den Komponenten verbessert gekapselt sein. Außerdem kann ein Missbrauch der übermittelten Datenstrukturen seitens einer dritten Stelle erschwert werden, die den Zusammenhang zwischen dem Hinweis und der vorgeschlagenen Umwandlung nicht kennt.
-
Der abstrakte Datentyp kann insbesondere einen Verbund von Daten zusammen mit der Definition aller zulässigen Operationen, die auf die Daten zugreifen, umfassen. Eine Applikation seitens der zweiten Komponente kann so unmittelbar auf einem Objekt arbeiten. Die objektorientierte Programmierweise ist in vielen Bereichen bereits etabliert und das Übermitteln von Objekten, die Informationen umfassen, kann diesen Ansatz unterstützen.
-
Das Objekt kann einen Zugriff auf die Informationen ausschließlich mittels einer oder mehrerer vorgesehener Methoden erlauben. Dabei kann auch eine Zugriffssteuerung implementiert sein, die lediglich einer vorbestimmten zweiten Komponente den Zugriff auf eine vorgestimmte Methode erlaubt. Ein Missbrauch von Informationen kann so verhindert werden. Ideen oder Inhalte, auf die sich die Informationen beziehen, können so verbessert geschützt werden. Beispielsweise können unterschiedliche Hersteller Komponenten an Bord des Kraftfahrzeugs herstellen, die mittels der Transportkomponente miteinander kommunizieren können, wobei Informationen spezifisch ausgetauscht werden können, ohne einen beliebigen Zugriff zu erlauben.
-
Es ist besonders bevorzugt, dass die Datenstruktur eine Beschreibung des Objekts umfasst. Die Beschreibung kann beispielsweise in einer bekannten Beschreibungssyntax verfasst sein, beispielsweise mittels ASN.1 oder in einer XML-Variante.
-
In noch einer weiter bevorzugten Ausführungsform umfasst die Datenstruktur das Objekt in einer serialisierten Form. Dabei kann das Objekt samt seiner Methoden in der Datenstruktur abgebildet sein. In einer Ausführungsform kann auch eine Implementation einer Methode Teil des serialisierten Objekts sein. Dadurch können beispielsweise Änderungen an der Datenstruktur seitens der ersten Komponente transparent auf die zweite Komponente übertragen werden.
-
Es ist besonders bevorzugt, dass die Datenstruktur dazu eingerichtet ist, in ein zweites Objekt umgewandelt zu werden, das einen vorbestimmten abstrakten Datentyp implementiert, und sich das zweite Objekt vom ersten Objekt unterscheidet. Insbesondere kann das zweite Objekt eine Erweiterung des ersten Objekts sein. Sollte beispielsweise die erste Komponente zusätzliche Fähigkeiten erwerben, so kann sie die Datenstruktur erweitern, wobei eine ältere zweite Komponente auf der Basis der Datenstruktur unverändert das erste Objekt und eine neuere zweite Komponente auf der Basis der gleichen Datenstruktur ein zweites Objekt bereitstellen kann, wobei das zweite Objekt zusätzliche Methoden, Formate, Eigenschaften oder Merkmale gegenüber dem zweiten Objekt aufweist. Anders ausgedrückt kann das zweite Objekt rückwärtskompatibel zum ersten Objekt sein. Ein Versionsmanagement von Komponenten in einem System, insbesondere an Bord eines Kraftfahrzeugs, kann dadurch massiv vereinfacht werden. Insbesondere ist es möglich, eine der Komponenten zu erneuern, ohne eine andere erneuern zu müssen.
-
Ein Computerprogrammprodukt umfasst Programmcodemittel zur Durchführung des oben beschriebenen Verfahrens, wenn das Computerprogrammprodukt auf einer Verarbeitungseinrichtung abläuft oder auf einem computerlesbaren Datenträger gespeichert ist.
-
Ein System, insbesondere an Bord eines Kraftfahrzeugs, umfasst eine erste und eine zweite Komponente, die mittels einer Transportkomponente miteinander verbunden sind. Die erste Komponente ist dazu eingerichtet, Informationen in einer Datenstruktur anzuordnen und die Datenstruktur an die Transportkomponente zu übergeben, wobei die Transportkomponente den Transport der Datenstruktur erlaubt. Die zweite Komponente ist dazu eingerichtet, die Datenstruktur von der Datenverbindung zu übernehmen, wobei die zweite Komponente einen Umsetzer umfasst, der dazu eingerichtet ist, eine übernommene Datenstruktur in ein erstes Objekt umzuwandeln, das einen vorbestimmten abstrakten Datentyp implementiert.
-
Der Umsetzer kann beispielsweise als Bibliotheksfunktion (Library) bereitgestellt sein. Wird die erste, sendende Komponente verändert, sodass die Datenstruktur ein anderes Format aufweist, so kann auch ein zugehöriger Umsetzer bereitgestellt werden, um in der zweiten Komponente verwendet zu werden. Ein Hersteller der ersten Komponente kann beispielsweise Umsetzer in Bibliotheksform unterschiedlichen Herstellern unterschiedlicher zweiten Komponenten bereitstellen, sodass die Implementation der zweiten Komponenten im Wesentlichen auf den Zugriff auf Objekte beschränkt ist. Der tatsächliche Transport von Informationen bzw. Datenstrukturen kann für die zweite Komponente vollständig transparent erfolgen. Umgekehrt kann die Umsetzung von Informationen in die Datenstruktur und wieder zurück in Informationen vollständig seitens des ersten Herstellers kontrolliert werden, ohne dass er sich mit der Verarbeitung der Informationen seitens der zweiten Komponenten befassen muss. Die Zusammenarbeit zwischen Komponenten und zwischen deren Herstellern kann so verbessert werden. Eine Funktionssicherheit für das System kann erhöht sein. Testzyklen können verkürzt sein.
-
Es ist besonders bevorzugt, dass die erste Komponente einen Sensor, die zweite Komponente ein Steuergerät oder die Transportkomponente einen Datenbus umfasst. In einer anderen Ausführungsform umfassen beide Komponenten jeweils ein Steuergerät. In einer weiteren Variante kann die erste Komponente auch einen Aktuator umfassen, der beispielsweise als „intelligenter Aktuator“ eine entsprechende Kommunikations- und Verarbeitungsfähigkeit umfassen kann. Der Aktuator kann etwa ein Motorsteuergerät, ein Lenkungssteuergerät oder ein Bremssteuergerät umfassen. In noch einer weiteren Variante sind eine oder mehrere der Komponenten als Software definiert und können auf der gleichen Ausführungs- bzw. Verarbeitungseinrichtung ablaufen. Beispielsweise können die Komponenten Programme umfassen, die unabhängig voneinander ablaufen und mittels der Datenstrukturen miteinander kommunizieren können. Die Richtung, in der Informationen zwischen den Komponenten übermittelt werden, ist beliebig wählbar.
-
Kurze Beschreibung von Ausführungsformen
-
Die Erfindung wird nun mit Bezug auf die beigefügten Figuren genauer beschrieben, in denen:
-
1 ein System und ein Verfahren; und
-
2 eine Komponente des Systems von 1
darstellt.
-
Genaue Beschreibung von Ausführungsbeispielen
-
1 zeigt ein System 100, insbesondere für den Einsatz an Bord eines Kraftfahrzeugs. Das System 100 umfasst eine erste Komponente 105, eine zweite Komponente 110, optional eine dritte Komponente 115 und eine Transportkomponente 120 zur Verbindung der Komponenten 105 bis 115. Die erste Komponente 105 kann insbesondere einen Sensor umfassen, der mit einer Abtasteinrichtung 125 zur Erfassung eines Objekts 130 gekoppelt ist. Beispielsweise kann die Abtasteinrichtung 125 einen Radar- oder Lidarsensor umfassen und das Objekt 130 kann beispielsweise eine Person oder ein Kraftfahrzeug umfassen. In einer anderen Ausführungsform kann die erste Komponente 105 jedoch beispielsweise auch ein Steuergerät umfassen.
-
Die zweite Komponente 110 und die dritte Komponente 115 sind bevorzugterweise jeweils durch eine Steuereinrichtung bzw. ein Steuergerät gebildet. Die zweite Komponente 110 kann beispielsweise zur Implementation eines Geschwindigkeitsassistenten (ACC, Adaptive Cruise Control) und die dritte Komponente 115 zur Implementation eines Parkassistenten vorgesehen sein. Derartige Funktionalitäten sind auch als Middleware bekannt, die auf eine bestehende Infrastruktur, die insbesondere Hardware umfasst, aufbaut, und Teile eines übergeordneten Steuermechanismus, etwa einer autonomen Steuerung des Kraftfahrzeugs, dienen können. Beide Steuergeräte 110, 115 können auf Informationen des Sensors 105 zurückgreifen, wobei unterschiedliche Informationsbedürfnisse vorliegen können.
-
Jede der Komponenten 105 bis 115 umfasst eine Funktionskomponente 135 und einen Umsetzer 140. Die Funktionskomponente 135 implementiert üblicherweise nur die Funktionalität, die zur Verarbeitung von Informationen erforderlich ist, ohne sich um einen Transport von Informationen zu kümmern. Die Umsetzer 140 dienen dazu, die Übermittlung von Informationen über die Transportkomponente 120 zu ermöglichen.
-
Es wird vorgeschlagen, Informationen zwischen der ersten Komponente 105 und einer der beiden Komponenten 110 und 115 mittels einer Datenstruktur durchzuführen, die es den Umsetzern 140 in der zweiten Komponente 110 oder der dritten Komponente 115 erlaubt, die übermittelten Informationen jeweils in Form eines Objekts 130 den Funktionskomponenten 135 bereitzustellen, wobei das Objekt 130 jeweils einen abstrakten Datentyp implementiert.
-
Insbesondere wird vorgeschlagen, in einem Verfahren 150 Informationen 155 in einem Schritt 160 in einer Datenstruktur 165 anzuordnen, in einem Schritt 170 mittels der Transportkomponente 120 zu übermitteln und in einem Schritt 175 in ein erstes Objekt 180 oder ein zweites Objekt 185 umzuwandeln. Dabei ist bevorzugt, dass das zweite Objekt 185 eine Erweiterung des ersten Objekts 180 ist. Beide Objekte 180, 185 umfassen eine Anzahl vorbestimmter Eigenschafen oder Methoden 190. Das zweite Objekt 185 umfasst bevorzugterweise wenigstens eine zusätzliche oder erweiterte Methode 190. Die bereitgestellten Objekte 180, 185 werden bevorzugterweise den Funktionskomponenten 135 der Komponenten 110, 115 bereitgestellt.
-
Der Umsetzer 135 kann in unterschiedlichen Modi arbeiten, die auch gleichzeitig angeboten werden können. In einem ersten Modus wir eine Abwärtskompatibilität hergestellt, indem das erste Objekt 180 im Wesentlichen eine bekannte Abfolge (struct) von Basistypen (z. B. int, float, bool) ist. Es wird das erste Objekt 180 oder eine Referenz auf das erste Objekt 180 bereitgestellt. In einem zweiten Modus wird das erste Objekt 180 mit Zugriffsmethoden bereitgestellt, wobei die Zugriffsmethoden auf Elemente der bekannten Abfolge realisiert sind. Das versteckte Interface wird als detailliertes Dateninterface mit objektorientiertem Zugriff realisiert. In einem dritten Modus erfolgt ein objektorientierter Zugriff mit verstecktem Dateninterface. In einem vierten Modus ist zusätzlich eine Verschlüsselung vorgesehen, sodass der Zugriff auf die Methoden des ersten Objekts 180 vor Missbrauch geschützt sind. Weitere Modi können ebenfalls realisiert werden.
-
Die Datenstruktur 165 ist bevorzugterweise so gewählt, dass sie einen Hinweis darauf enthält, wie die Datenstruktur 165 in das Objekt 180 oder 185 umzuwandeln ist. In einer einfachen Ausführungsform kann hierzu eine Versionsnummer angegeben sein. In einer bevorzugten Ausführungsform umfasst der Hinweis 195 weitergehende Informationen, insbesondere bezüglich wenigstens einer der Methoden 190. In noch einer weiteren Ausführungsform kann der Hinweis 195 auch eine vollständige Definition einer der Methoden 190 umfassen. Das Objekt 180 oder 185 kann in einer weiteren Ausführungsform in der Datenstruktur 165 vollständig linearisiert vorliegen. Dabei können alle Eigenschaften des Objekts 180, 185 einschließlich der Methoden 190 in einer vorbestimmten Beschreibungsform angegeben sein. In einer Ausführungsform sind auch die Informationen 155 beigefügt.
-
In obigem Beispiel des Sensors 105, der Informationen 155 an die erste Komponente 105 des Systems 100 übermittelt, können beispielsweise Entfernungsmessungen zum Objekt 130, die mittels der Abtasteinrichtung 125 bestimmt wurden, als Informationen 155 in der Datenstruktur 165 angeordnet werden. Dann wird die Datenstruktur 165 zur ersten Komponente 105 übermittelt und dort mittels des Umsetzers 140 in das erste Objekt 180 umgewandelt. Der Umsetzer 140 kann in einer Ausführungsform durch einen Hersteller des Sensors 105 bereitgestellt sein, sodass sichergestellt ist, dass das erste Objekt 180 in einer vorbestimmten Weise zur Datenstruktur 165 und zu den Informationen 155 passt. Das erste Objekt 180 kann dann von der Funktionskomponente 135 der ersten Komponente 105 verwendet werden, um beispielsweise zu bestimmen, ob eine Längsgeschwindigkeit des Fahrzeugs, an Bord dessen das System 100 installiert ist, verringert werden muss, um die Gefahr eines Auffahrens auf das Objekt 130 zu verringern.
-
In der gleichen Weise kann auch die dritte Komponente 115 Datenstrukturen 165 empfangen, die mittels des Umsetzers 140 in das erste Objekt 180 umgewandelt werden können. Sollte nun die erste Komponente 105 verändert werden, beispielsweise indem eine im Nahbereich verbessert auflösende Abtasteinrichtung 125 verwendet wird, so kann es vorteilhaft sein, die Datenstruktur 165 anzupassen, um die genaueren Informationen 155 der dritten Komponente 115 bereitzustellen. Es wird vorgeschlagen, dass die Datenstruktur 165 derart angepasst wird, dass sie wie zuvor in das erste Objekt 180 umgewandelt werden kann, zusätzlich jedoch die Möglichkeit besteht, es in das zweite Objekt 185 umzuwandeln, das bevorzugterweise abwärtskompatibel zum ersten Objekt 180 ist. Beispielsweise kann eine zusätzliche Methode 190 bereitgestellt werden, die die Abfrage einer Entfernung zum Objekt 130 mit einer verbesserten Genauigkeit, beispielsweise in der Einheit Zentimeter statt in der Einheit Meter, erlaubt. Die ursprünglichen Methoden 190 des ersten Objekts 180 werden hierbei bevorzugterweise nicht verändert. Bevorzugterweise wird auch der Umsetzer 140 für die dritte Komponente 115 seitens des Herstellers der ersten Komponente 105 bereitgestellt. Die Funktionskomponente 135 der dritten Komponente 115 kann dann objektorientiert auf der Basis des zweiten Objekts 185 arbeiten, ohne von den Einschränkungen des ersten Objekts 180 betroffen zu sein.
-
Mittels der vorgeschlagenen Technologie ist es möglich, die Komponenten 105 bis 115 von unterschiedlichen Herstellern zu beziehen und die Zuständigkeit für eine korrekte Übermittlung der Informationen 155 bzw. die korrekte Bereitstellung von Objekten 180, 185 an einen der Hersteller zu delegieren. Ein Zusammenarbeiten von Entwicklungsabteilungen unterschiedlicher Hersteller, um die korrekte Übermittlung von Informationen 155 zu ermöglichen, kann nicht mehr erforderlich sein. Dadurch kann insbesondere vermieden werden, dass eine für einen Menschen verständliche Spezifikation des Datenformats der Datenstruktur 165 von unterschiedlichen Personen seitens der unterschiedlichen Hersteller verschieden interpretiert wird.
-
2 zeigt eine Komponente 110, 115 des Systems 100 von 1. Die Komponente 110, 115 empfängt von der Transportkomponente 120 eine Datenstruktur 165, die im rechten Bereich von 2 exemplarisch ansatzweise dargestellt ist. Der Umsetzer 140 ist bevorzugterweise als Bibliothek bereitgestellt. Dazu kann ein Hersteller der ersten Komponente 105 beispielsweise eine Bibliothek oder ein lauffähiges Binärprogramm bereitstellen, das den Umsetzer 140 seitens der zweiten Komponente 110 oder der dritten Komponente 115 implementiert. Der Umsetzer 140 stellt auf der Basis der Datenstruktur 165 ein Objekt 180, 185 bereit, das einen vorbestimmten abstrakten Datentyp implementiert. Der abstrakte Datentyp umfasst einen Verbund von Daten (Informationen) zusammen mit der Definition aller zulässigen Operationen, die auf die Daten zugreifen. Ein Fragment eines Beispiels für eine Struktur eines Objekts 180, 185 ist im rechten Bereich von 2 dargestellt.
-
Das bereitgestellte Objekt 180, 185 kann dann der Funktionskomponente 135 bereitgestellt werden, die höher abstrahierte Ziele verfolgt, wie im obigen Beispiel eine Längssteuerung des Kraftfahrzeugs im Fall des Geschwindigkeitsassistenten auf der zweiten Komponente 110 oder eine beispielsweise akustische oder haptische Abstandswarnung im Fall des Parkassistenten auf der dritten Komponente 115.