Teil 1: Entwicklung und Test von Steuergerätefunktionen mit der Bypass-Methode Operation am offenen Herzen

Die Software von Steuergeräten komplexer mechatronischer Systeme im Automobil ist sehr umfangreich. Aus Gründen der Kosten, der Entwicklungszeit und der Zuverlässigkeit dieser Systeme wird die Software von Steuergeräten nur im Ausnahmefall komplett...

Teil 1: Entwicklung und Test von Steuergerätefunktionen mit der Bypass-Methode

Die Software von Steuergeräten komplexer mechatronischer Systeme im Automobil ist sehr umfangreich. Aus Gründen der Kosten, der Entwicklungszeit und der Zuverlässigkeit dieser Systeme wird die Software von Steuergeräten nur im Ausnahmefall komplett neu entwickelt. In der Regel wird der Funktionsumfang existierender, bereits im Feld erprobter Software angepasst, verändert oder erweitert. Dabei kommt die Bypassmethode zum Einsatz.

Die neu zu entwickelnde oder zu adaptierende Bypass-Funktion verwendet existierende Signale im Steuergerät als Eingangswerte und schreibt die berechneten Ergebnisse wieder in das Steuergerät zurück (Bild 1).

Instrumentierung der Steuergeräte-Software

Die Implementierung einer Bypass-Funktion erfordert eine geeignete Instrumentierung des Steuergerätecodes. Die Auswahl der Steuergerätegrößen für den Bypass kann entweder statisch im Steuergerätecode festgelegt sein oder flexibel über etablierte Mechanismen ähnlich wie beim Messen von Steuergerätegrößen erfolgen. Dabei werden die Adressen der zu erfassenden Größen vom Entwicklungswerkzeug aus der Steuergerätebeschreibungsdatei (A2L) gelesen und die Werte in den Speicherzellen dieser Adressen vom Steuergerät angefordert bzw. beschrieben.

Normalerweise werden im Bypass-Betrieb die Steuergerätefunktionen, welche durch die Bypass-Funktion ersetzt werden, weiterhin berechnet. Dadurch lassen sich die Berechnungsergebnisse der Bypass-Funktion und der Steuergerätefunktion miteinander vergleichen und aufzeichnen. Darüber hinaus stehen so jederzeit sinnvolle Alternativwerte für den Fall bereit, dass der Bypass zur Laufzeit unterbrochen oder beendet wird (Rückfallebene).

Servicebasierter Bypass-Austausch von Ein- und Ausgabewerten

Beim servicebasierten Bypass werden in den Prozesslisten (Tasks – eine Menge von verschiedenen Aufgabeneinheiten (Prozessen) mit identischen Echtzeit-Anforderungen werden in einer Task, zum Beispiel in einer 10-ms-Task, einer 100-ms-Task oder in einer drehzahlsynchronen Task, zusammengefasst) der Steuergeräte-Software zusätzliche Serviceroutinen eingefügt (Bild 2, oberer Teil). Mit Hilfe dieser Bypass-Services können Ein- und Ausgabewerte zwischen Steuergeräte- und Bypass-Funktionen ausgetauscht werden. Ein Bypass-Service schreibt entweder die Werte von Steuergerätegrößen in Zellen des Speicherbereichs, der von der Bypass-Funktion gelesen wird (Eingangswerte der Bypass-Funktion) oder – umgekehrt – die Werte der Größe aus dem Speicherbereich der Bypass-Funktion in Speicherzellen, die von der bestehenden Steuergeräte-Software verwendet werden (Ausgabewert der Bypass-Funktion).

Die Verwendung des servicebasierten Bypass hat den Vorteil, dass der Funktionscode im Steuergerät nicht verändert werden muss. Mit Hilfe der Bypass-Services können alle bekannten Steuergerätegrößen gelesen oder geschrieben werden. Die Bypass-Services können zur Laufzeit des Steuergeräts aktiviert oder deaktiviert werden und damit der Bypass an- oder abgeschaltet werden.

Der Nachteil des servicebasierten Bypass besteht darin, dass Dateninkonsistenzen nicht ausgeschlossen werden können. Ein Wert, der von einer Steuergerätefunktion berechnet wurde, kann gelesen werden, bevor er durch den Ausgabewert der Bypass-Funktion überschrieben wird. Das ist möglich, da in Fahrzeugsteuergeräten mehrere Tasks um Rechenzeit konkurrieren – das heißt, Tasks mit niederer Priorität können durch höher priorisierte Tasks unterbrochen werden.

Bei dem aus diesem Grund häufig verwendeten Message-Konzept werden zu Beginn einer Task lokale Kopien der globalen Steuergerätegrößen angelegt, die von Prozessen dieser und mindestens einer weiteren Task gelesen und beschrieben werden. Dadurch werden konsistente Ein- und Ausgangsgrößen (Messages) von Prozessen innerhalb einer Task gewährleistet. Am Ende der Task werden die Werte der Messages in die Speicherzellen der globalen Größen zurückgeschrieben.

Im normalen Betrieb ohne Bypass hat das Arbeiten mit lokalen Kopien den Vorteil, dass Dateninkonsistenzen bei der Unterbrechung einer Task durch eine höher priorisierte Task vermieden werden. Wenn die Werte von Messages in Speicherzellen, deren Adressen nicht deklariert sind, auf dem Stack gespeichert werden, können Bypass- Services nicht auf Messages zugreifen. In diesem Fall sollte der Bypass-Service deshalb unmittelbar vor oder nach dem Erstellen der lokalen Kopie eingefügt werden (Bild 2, untere Bildhälfte). Dabei ist es notwendig, dass die Eingangswerte der Bypass-Funktion bereits bei Beginn der Task zur Verfügung stehen und nicht innerhalb der Task berechnet werden.

Freischnittbasierter Bypass

Um Dateninkonsistenzen beim Bypass auszuschließen, muss sichergestellt sein, dass die Ausgabewerte der Bypass-Funktion nicht von den Steuergerätefunktionen überschrieben werden können. Um dies zu garantieren, werden Schalter in die betreffenden Steuergerätefunktionen eingebaut: Bei aktivem Bypass wird das jeweilige Berechnungsergebnis der Bypass-Funktion als Ausgabewert der Steuergerätefunktion zur Verfügung gestellt. Bei inaktivem Bypass wird das Berechnungsergebnis der Steuergerätefunktion verwendet. Alternativ zum Ersatzwert kann bei aktivem Bypass auch das Ergebnis einer Verrechnung – typischerweise einer Addition – der Resultate von Bypass- und Steuergerätefunktion ausgegeben werden (Bild 3).

Unabhängig davon, ob eine Task-Umschaltung stattfindet und damit unabhängig von der Priorität der Tasks, sorgt dieser Mechanismus dafür, dass die Speicherzellen der Steuergerätegrößen entweder mit den Ausgabewerten der Bypass-Funktion oder der Steuergerätefunktionen beschrieben werden. Die Instrumentierung der Steuergerätefunktionen mit Schaltern wird Freischneiden von Steuergerätegrößen oder einfach Freischnitt genannt. Beim so genannten Funktionsfreischnitt werden alle von einem Prozess beschriebenen Speicherzellen freigeschnitten.

In Bezug auf die Datenkonsistenz besteht die optimale Lösung darin, den Bypass-Service, der die Eingangswerte der Bypass-Funktion beschreibt, direkt vor demjenigen Prozess einzuhängen, der die freigeschnittene Funktion beinhaltet (Bild 3, oben). Das Verfahren erfordert auf Kosten der Rechenzeit einen separaten Schreibvorgang pro Bypass.

Bei Verwendung eines Message-Konzepts werden die Eingangswerte der Bypass-Funktion zu Beginn einer Task beschrieben. Dabei lassen sich alle Werte in einem Schreibvorgang en bloc übergeben, wodurch sich die Beeinflussung des Echtzeit-Verhaltens minimieren lässt (Bild 3, unten).

Eine Variante des Freischnittverfahrens besteht darin, die Berechnung der Bypass-Funktion erst nach der Übergabe der Eingangswerte anzustoßen. Daraufhin wartet das Steuergerät bis zum Ende der Bypass-Berechnung und kopiert dann die Ergebnisse in die Speicherzellen der betreffenden Steuergerätegrößen. Diese Variante sorgt für absolut synchrone Daten. Wegen der damit einhergehenden Verzögerung ist diese Variante allerdings nur für zeitlich unkritische Bypass-Funktionen geeignet.

Der Vorteil der Datenkonsistenz wird beim freischnittbasierten Bypass dadurch erkauft, dass jede Größe, die ersetzt werden soll, für den Bypass vorbereitet werden muss.

Bypasssysteme

Die Bypass-Funktion kann entweder intern auf dem Steuergerät (interner Bypass) oder extern auf einem separaten, über eine Datenschnittstelle mit dem Steuergerät verbundenen System (externer Bypass) berechnet werden (Tabelle).

Am Steuergerät ohne zusätzliche Hardware durchführbar

Der steuergeräte-interne Bypass erfordert keine zusätzliche Hardware. Die Bypass-Funktion muss an die Steuergeräte-Hardware angepasst sein und in den Berechnungsablauf des Steuergeräts eingebunden werden. Für viele Steuergeräte muss die Bypass-Funktion in Festkomma-Arithmetik implementiert werden. Da die Bypass-Funktion vom Steuergerät berechnet wird, kann – mit Ausnahme von Steuergeräten mit Multicore-Prozessoren – keine parallele Ausführung erfolgen.

Der interne Bypass ist nicht ausfallsicher. Ein Fehlverhalten der Bypass-Funktion kann zu einem Absturz des Steuergeräts führen. Aufgrund der knappen Ressourcen von Fahrzeugsteuergeräten sind dem Bedarf der Bypass-Funktion an Rechenzeit und Speicher enge Grenzen gesetzt. Durch Deaktivierung der Originalfunktion können Ressourcen für die Bypass-Funktion gewonnen werden.

Bei einer Änderung der Bypass-Funktion muss eine neue Version der Steuergeräte-Software generiert werden. Dazu ist die Build-Umgebung für das Steuergerät erforderlich. Im zweiten Schritt muss der Flash-Speicher des Steuergeräts mit dem geänderten Steuergerätecode neu programmiert werden.

Wegen der Verwendung der Ziel-Hardware kann der interne Bypass zum Test der Integrierbarkeit der Bypass-Funktion in die Steuergeräte-Software dienen. Aufgrund der genannten Einschränkungen wird der steuergeräteinterne Bypass typischerweise als Variablen-Bypass eingesetzt (s.u.). Dabei werden Variablen im Steuergerät, beispielsweise Sensorsignale, von außen bedatet und zu einem einstellbaren Parameter gemacht.

Steuergerät mit zusätzlichem Speicher

Um den verfügbaren Speicher für den internen Bypass zu erhöhen, kann im Entwicklungssteuergerät ein Mikrocontroller mit größerem internen Speicher oder zusätzlich externer Speicher eingebaut werden. Alternativ wird auch der Speicher eines im Entwicklungssteuergerät vorhandenen Speicheremulators, zum Beispiel eines Emulatortastkopfs (ETK) [1], verwendet.

Wenn die Ressourcen des Steuergeräts für die Bypass-Funktion nicht ausreichen, muss zusätzliche Hardware eingesetzt werden. Dabei kommen parallel betriebene Steuergeräte oder Mikrocontroller oder spezielle Experimentiersysteme zum Einsatz.

Experimentiersysteme

Experimentiersysteme stellen eine hohe Rechenleistung und Speicherkapazität zur Verfügung. Sie ermöglichen die Integration zusätzlicher Signale von Sensoren, Aktoren oder Fahrzeugbussen.

Prozessoren mit Fließkomma-Arithmetik ermöglichen eine physikalische Simulation von Bypass-Funktionen in der realen Umgebung.

In einem zweiten Schritt kann diese Simulation mit dem Verhalten der Bypass-Funktion in der späteren Implementierung verglichen werden.

Bei einer Änderung der Bypass-Funktion benötigt der Download in den RAM-Speicher über die leistungsfähige PC-Schnittstelle des Experimentiersystems nur einen Bruchteil der Zeit des Flash-Vorgangs beim internen Bypass.

Um die Ausgabewerte der Bypass-Funktion und der Steuergerätefunktion direkt vergleichen zu können, wird die Steuergerätefunktion bei aktivem Bypass parallel auf dem Steuergerät ausgeführt.

Die Anbindung des Experimentiersystems an das Steuergerät erfolgt entweder über eine echtzeit-fähige Schnittstellen-Hardware, beispielsweise einen ETK, oder über eine leistungsfähige Busschnittstelle des Steuergeräts (Bild 4).

Bypass-Methoden

Je nach Art und Umfang der Bypass-Funktion lassen sich verschiedene Arten von Bypass-Methoden unterscheiden (Bild 5).

Variablen-Bypass wird auch Slewing genannt

Im einfachsten Fall überschreibt eine Bypass-Funktion nur eine Speicherzelle mit einem Wert, ohne dass eine Berechnung stattfindet. Diese Variante wird als Variablen-Bypass oder auch als „Slewing“ bezeichnet. Typische Anwendungsfälle für diese Bypass-Methode sind das Festhalten einer Steuergerätevariablen auf einem bestimmten Wert, beispielsweise zur Kalibrierung von Steuergerätefunktionen, oder die Deaktivierung eines Berechnungspfads durch das Setzen eines neutralen Wertes („0“ oder „1“). Für Test- oder Diagnosezwecke können mit dieser Methode gezielt Werte von Sensorsignalen vorgegeben oder Einträge im Fehlerspeicher gesetzt werden. Wenn ein Variablen-Bypass steuergeräteintern implementiert ist, kann er mit gängigen Kalibrationswerkzeugen, wie zum Beispiel INCA, bedient werden.

Funktions-Bypass – der „Klassiker“

Der klassische Bypass, der im Rahmen der Weiterentwicklung von vorhandenen Steuergerätefunktionen zum Einsatz kommt, wird auch als Funktions-Bypass bezeichnet. Neue Funktionen werden per Bypass mit den bestehenden Funktionen des Steuergeräts gekoppelt. Die bestehende Software des Steuergeräts übernimmt zum überwiegenden Teil die Steuerung und Regelung des Fahrzeugsystems und wird durch die neuen Funktionen erweitert. Wenn die Bypass-Funktion extern auf einem Experimentiersystem berechnet wird, können über dieses System zusätzliche Signale von Sensoren oder von Fahrzeugbussen eingebunden werden.

Applikations-Bypass mit einem Seriensteuergerät als Vehikel

Beim Applikations-Bypass werden die Ein- und Ausgangssignale der Bypass-Funktion direkt an den Schnittstellen der Plattform-Software zur Applikationsschicht abgegriffen. Bei der Methode werden Hardware, Treiber und Betriebssystem eines vorhandenen Steuergeräts genutzt, um eine neue Funktion ohne Einbeziehung von bestehender Applikations-Software zu entwickeln.

Der Vorteil dieser Methode besteht darin, eine neue Funktion auf Basis von existierender Seriensteuergeräte-Hardware zu entwickeln. Beispielsweise können die originalen Ein- und Ausgangssignale des Steuergeräts verwendet werden, welche die Reaktion der Treiberschicht des Steuergeräts enthalten, zum Beispiel der Diagnoseprotokolle. Mit Hilfe eines Experimentiersystems können gegebenenfalls zusätzliche Sensoren, Aktoren oder Fahrzeugbusse eingebunden werden.

Fullpass auf dem Experimentiersystem

Beim Fullpass wird das Steuergerät vollständig durch ein Experimentiersystem ersetzt. Zusätzlich zur Applikations-Software integriert das Fullpass-System auch Treiber für die Schnittstellen und das Steuergeräte-Betriebssystem sowie Schnittstellen für Sensoren, Aktoren und Fahrzeugbusse, wie zum Beispiel CANController. Fullpass-Systeme werden typischerweise bei Neuentwicklungen eingesetzt, bei denen entweder die Steuergeräte-Hardware oder die Plattform-Software noch nicht zur Verfügung stehen.

Die Signalkonditionierung im Experimentiersystem und im späteren Seriensteuergerät ist in der Regel nicht identisch. Jedoch sollten die Schnittstellen zur Treiberschicht ähnlich sein, damit die neu entwickelten Funktionen später ohne größere Änderungen auf das Zielsystem portiert werden können. Fullpass-Systeme werden häufig auch bei der Restbussimulation verwendet. Dabei wird das Verhalten eines oder mehrerer Steuergeräte an einem Fahrzeugbus nachgebildet. Mit einem Fullpass-System kann die Simulation durch reale Signale von Sensoren, Aktoren und vom Fahrzeugbus gespeist und das Systemverhalten eines Steuergeräteverbunds getestet werden.

Strecken-Bypass – für den fließenden Übergang

In einer Hardware-in-the-Loop-Umgebung (HiL), in der das Steuergerät mit einer simulierten Regelstrecke gestestet wird, kann die Bypass-Funktion einen Teil der Regelstrecke abbilden. Dadurch lassen sich einzelne Funktionen des Steuergeräts im geschlossenen Regelkreis ohne Austausch von Signalen über die Schnittstellen-Hardware von Steuergerät und HiL-System testen. Die Methode erlaubt einen fließenden Übergang zwischen Software-in-the-Loop-Simulationen (SiL) ohne elektrische Streckensimulation und HiL-Simulationen. In einer der kommenden Elektronik-automotive-Ausgaben werden in einem zweiten Beitrag die vielfältigen Einsatzmöglichkeiten von Bypassmethoden bei der Entwicklung und beim Test von Steuergerätefunktionen diskutiert. go

Literatur

[1] Triess, B.; Müller, Ch.; Lauff, U.; Mößner, C.: Entwicklung und Applikation von Motor- und Getriebesteuerungen mit der ETK-Steuergeräteschnittstelle. ATZ Automobiltechnische Zeitschrift 109 (2007), Heft 1.

Dipl.-Ing. Markus Gebhardt
studierte Elektrotechnik an der TU Darmstadt und arbeitet seit 1995 als Ingenieur bei ETAS. Er sammelte langjährige Erfahrung in Kundenprojekten zur Steuergeräte-Software- und -funktionsentwicklung. Seit 2005 ist er als technischer Experte im Marketing mit der Entwicklung neuer Methoden für die Steuergeräte-Software-Entwicklung betraut.

markus.gebhardt@etas.com

Dr. rer. nat. Ulrich Lauff

studierte Physik an den Universitäten Heidelberg und Stuttgart und ist in der Unternehmenskommunikation der ETAS GmbH für die Anwendungsfelder Software Engineering, Applikation, Messtechnik und Steuergerätediagnose verantwortlich.

ulrich.lauff@etas.com

Dipl.-Ing. Kilian Schnellbacher

studierte Elektrotechnik mit dem Schwerpunkt Technik der Informationsverarbeitung an der Universität Karlsruhe. Er ist im Strategischen Marketing der ETAS GmbH im Bereich Messen, Kalibrieren und Steuergerätediagnose tätig.

kilian.schnellbacher@etas.com