Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR OPERATING A CONTROL DEVICE AND FOR EXTERNAL BYPASSING OF A CONFIGURED CONTROL DEVICE
Document Type and Number:
WIPO Patent Application WO/2017/084779
Kind Code:
A1
Abstract:
The invention relates to a method for operating a control device (1), wherein a program code (4) having internal control device functions (a()) is stored on the control device (1), wherein the program code (4) is instrumented having at least one service function (ecu_s()). An internal control device function (a()) can be selectively retrieved via external bypassing in that a service configuration (6) for the service function (ecu_s()) is provided on the control device (1), the service configuration (6) is detected in the control device (1), and a service functionality is executed according to the service configuration (6) upon retrieval of the service function (ecu_s()), wherein the service configuration (6) designates at least one internal control device function (a()) that is executed as a service functionality of the corresponding service function (ecu_s()). The service function (ecu_s()) is configured to provide, by means of the service configuration (6), at least one value (x') for at least one argument of the internal control device function (a()) in the control device (1), and/or to receive the at least one return value of the internal control device function (a()).

Inventors:
HUFNAGEL THORSTEN (DE)
Application Number:
PCT/EP2016/069161
Publication Date:
May 26, 2017
Filing Date:
August 11, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
DSPACE GMBH (DE)
International Classes:
G05B19/042; G06F9/445
Domestic Patent References:
WO2005091089A12005-09-29
Foreign References:
US6260157B12001-07-10
DE10235610A12004-02-19
EP1876525A12008-01-09
DE10228610A12003-01-16
EP2881858A12015-06-10
Download PDF:
Claims:
Patentansprüche:

1. Verfahren zum Betreiben eines Steuergeräts (1), wobei auf dem Steuergerät (1) Programmcode (4) mit internen Steuergerätefunktionen (afj) hinterlegt ist, wobei der Programmcode (4) mit wenigstens einer Service-Funktion (ecu_s(J) instrumentiert ist, wobei auf dem Steuergerät (1) eine Service-Konfiguration (6) für die Service-Funktion (ecu_s(J) bereitgestellt wird, wobei die Service-Konfiguration (6) in dem Steuergerät (1) erfasst wird und wobei bei Aufruf der Service-Funktion (ecu_s(J) eine Service- Funktionalität entsprechend der Service-Konfiguration (6) ausgeführt wird, dadurch gekennzeichnet, dass die Service-Konfiguration (6) wenigstens eine interne Steuergerätefunktion (afj) bezeichnet, die als Service-Funktionalität der korrespondierenden Service- Funktion (ecu_s(J) ausgeführt wird, wobei die Service- Funktion (ecu_s(J) mit Hilfe der Service-Konfiguration (6) wenigstens einen Wert (χ') für wenigstens ein Argument der internen Steuergerätefunktion (afj) im Steuergerät (1) bereitstellt und/oder wenigstens einen Rückgabewert der internen Steuergerätefunktion (afj) entgegennimmt.

2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in der Service- Konfiguration (6) ausführbarer Code enthalten ist, der wenigstens einen Wert (χ') für wenigs- tens ein Argument der internen Steuergerätefunktion (afj) im Steuergerät (1) bereitstellt und/oder der wenigstens einen Rückgabewert der internen Steuergeräte funktion (afj) entgegennimmt.

3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Service- Funktion (ecu_s()) dazu eingerichtet ist, Funktionen mit vorbestimmten Mustern von

Argumenten und/oder Rückgabewerten aufzurufen, wobei die Service-Konfiguration (6) die interne Steuergerätefunktion (afj) durch Angabe des vorbestimmten Musters und durch Angabe der Startadresse der internen Steuergerätefunktion (afj) bezeichnet.

4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass das Steuergerät (1) über eine Schnittstelle (8) mit einem Beeinflussungsgerät (9) verbunden ist und von dem Beeinflussungsgerät (9) über die Schnittstelle (8) die Service-Konfiguration (6) auf das Steuergerät (1) übertragen und auf dem Steuergerät (1) abge- speichert wird.

5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass in der Service-Konfiguration (6) wenigstens ein Speicherort (10, 11) angegeben wird, wo wenigstens ein Wert (χ') für wenigstens ein Argument der internen Steuergerätefunktion (afj) im Steuergerät (1) hinterlegt wird und/oder wo wenigstens ein Rückgabewert (r) der internen Steuergerätefunktion (afj) im Steuergerät (1) hinterlegt wird.

6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass der Speicherort (10) für ein Argument (χ') der internen Steuergeräte funktion (afj) überwacht wird und die interne Steuergerätefunktion (afj) erst dann mit dem im Speicherort (10) hinterlegten Wert für das Argument (χ') aufgerufen wird, wenn der Speicherort (10) mit einem aktuellen Wert für das Argument (χ') beschrieben worden ist.

7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass das Steuergerät (1) über eine Schnittstelle (8) mit einem Beeinflussungsgerät (9) verbunden ist und das Steuergerät (1) über die Schnittstelle (8) den Rückgabewert (r) der internen Steuergerätefunktion (a()) an das Beeinflussungsgerät (9) überträgt und/oder das Beeinflussungsgerät (9) den Rückgabewert (r) der internen Steuergerätefunktion (a()) über die Schnittstelle (8) aus dem Steuergerät (1) ausliest.

8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass das Steuergerät (1) über eine Schnittstelle (8) mit einem Beeinflussungsgerät (9) verbunden ist und im Beeinflussungsgerät (9) Programmcode mit wenigstens einer Beeinflussungsgerätfunktion (f '()) hinterlegt ist, die Service-Konfiguration (6) den Aufruf (12) einer Beeinflussungsgerätfunktion (f '()) umfasst und bei Aufruf (12) der entsprechenden Service-Funktion (ecu_s()) das Steuergerät (1) über die Schnittstelle (8) dem Beeinflussungsgerät (9) den Aufruf (12) der Beeinflussungsgerätfunktion (f '()) signalisiert und das Beeinflussungsgerät (9) die Beeinflussungsgerätfunktion (f '()) ausführt.

9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass in der Service- Konfiguration (6) ein Speicherort (11) angegeben wird, wo ein Wert für ein Argument (r) der Beeinflussungsgerätfunktion (f '()) im Steuergerät (1) hinterlegt wird und/oder wo ein Rückgabewert (y') der Beeinflussungsgerätfunktion (f '()) im Steuergerät (1) hinterlegt wird.

10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass der Speicherort (11) für das Argument (r) der Beeinflussungsgerätfunktion (f '()) von dem Beeinflussungsgerät (9) über die Schnittstelle (8) überwacht wird und die Beeinflussungsgerätfunktion (f '()) erst dann mit dem im Speicherort (11) hinterlegten Wert für das Argument (r) aufgerufen wird, wenn der Speicherort (11) mit einem aktuellen Wert für das Argument (r) beschrieben worden ist.

11. Zum externen Bypassing eingerichtetes Steuergerät (1), wobei das Steuergerät (1) über eine I/O-Schnittstelle (2) mit einem technischen Prozess (3) verbunden ist, wobei auf dem Steuergerät (1) Programmcode (4) mit internen Steuergerätefunktionen (afj) hinterlegt ist, wobei der Programmcode (4) mit wenigstens einer Service-Funktion (ecu_sfj) instrumentiert ist und wobei bei Ausführung des Programmcodes (4) das Steuergerät (1) über die I/O-Schnittstelle (2) Steuersignale an dem technischen Pro- zess (3) ausgibt und über die I/O-Schnittstelle (2) Zustandsgrößen des technischen Prozesses (3) als Signale empfängt, wobei auf dem Steuergerät (1) eine Service-Konfiguration (6) für die Service-Funktion (ecu_s) bereitgestellt ist, wobei die Service-Konfiguration (6) in dem Steuergerät (1) bei Betrieb des Steuergeräts (1) erfasst wird und bei Aufruf der Service- Funktion (ecu_sfj) eine Service-Funktionalität entsprechend der Service-Konfiguration (6) ausgeführt wird, dadurch gekennzeichnet, dass die Service- Konfiguration (6) wenigstens eine interne Steuergerätefunktion (afj) bezeichnet, die als Service-Funktionalität der korrespondierenden Service-Funktion (ecu_s()) ausgeführt wird, sodass durch Bereitstellen der Service-Konfiguration (6) auf dem Steuergerät (1) flexibel auf den verbundenen technischen Prozess (3) eingewirkt wird, wobei die Service-Funktion (ecu_s()) mit Hilfe der Service-Konfiguration (6) wenigstens einen Wert (χ') für wenigstens ein Argument der internen Steuergerätefunktion (afj) im Steuergerät (1) bereitstellt und/oder der wenigstens einen Rückgabewert der internen Steuergerätefunktion (afj) entgegennimmt.

12. Steuergerät (1) nach Anspruch 11, dadurch gekennzeichnet, dass es so programmiert ist, dass es im Betriebszustand, also bei Ausführung des Programmcodes (4), ein Verfahren nach einem der Patentansprüche 2 bis 10 ausführt.

Description:
Verfahren zum Betreiben eines Steuergeräts sowie

zum externen Bypassing eingerichtetes Steuergerät

Die Erfindung betrifft ein Verfahren zum Betreiben eines Steuergeräts, wobei auf dem Steuergerät Programmcode mit internen Steuergerätefunktionen hinterlegt ist, wobei der Programmcode mit wenigstens einer Service-Funktion instrumentiert ist. Ferner betrifft die Erfindung auch ein zum externen Bypassing eingerichtetes Steuergerät. Das vorgenannte Verfahren betrifft insgesamt die Handhabung und Beeinflussung von Steuergeräten in der Steuergeräteentwicklung, nämlich die Steuergeräteentwicklung im Rahmen des sogenannten Rapid-Control-Prototyping (RCP), bei dem (Serien-) Steuergeräte zur Anwendung kommen, die fest implementierte interne Steuergerätefunktionen aufweisen. Die internen Steuergerätefunktionen sind Bestandteil des auf dem Steuergerät abgespeicherten Programmcodes, bei dem es sich im Regelfall um ein ausführbares kompiliertes Programm handelt. Zwar ist es auch denkbar, dass der Programmcode in hochsprachlicher Form vorliegt und interpretiert wird, dies steht jedoch den im Regelfall existierenden Geschwindigkeitsanforderungen aufgrund des Echtzeitbetriebes eines Steuergeräts entgegen.

Im Rahmen der hier betrachteten Steuergeräteentwicklung werden eine oder mehrere dieser internen Steuergerätefunktionen vollständig umgangen, erweitert oder ganz allgemein in bestimmter Weise manipuliert, es handelt sich also methodisch um das sogenannten "Bypassing". Diese Methode der Steuergeräteentwicklung im Rahmen des Ra- pid-Control-Prototyping unterscheidet sich von der Methode des "Fullpass", bei der ein Steuergerät vollständig durch eine leistungsstarke Entwicklungs-Hardware mit I/O- Schnittstellen ersetzt wird. Diese Entwicklungs-Hardware wird später im Zusammenhang mit dem zu beeinflussenden technischen Prozess nicht eingesetzt, sondern sie wird nach Abschluss der Entwicklungsarbeit durch ein genau zugeschnittenes - und im Regelfall deutlich preiswerteres - Steuergerät ersetzt.

Der hier betrachtete Anwendungsfall besteht darin, dass das Steuergerät über eine I/O- Schnittstelle mit einem technischen Prozess verbunden ist, wobei bei Ausführung des auf dem Steuergerät hinterlegten - also gespeicherten - Programmcodes das Steuerge- rät über die I/O-Schnittstelle Steuersignale an den technischen Prozess ausgibt und über die I/O-Schnittstelle Zustandsgrößen des technischen Prozesses als Signale empfängt. Beim Rapid-Control-Prototyping durch Bypassing bleibt das Steuergerät in dem zu beeinflussenden und zu beobachtenden technischen Prozess eingesetzt und wird durch das Bypassing funktional beeinflusst. Typischerweise ist das Steuergerät dazu über eine weitere Schnittstelle mit einem Beeinflussungsgerät verbunden. Diese wei- tere Schnittstelle unterscheidet sich üblicherweise von der I/O-Schnittstelle des Steuergeräts, über die das Steuergerät mit dem technischen Prozess verbunden ist. Über diese Beeinflussungsschnittstelle ist es möglich, durch gezieltes Auslesen von Speicherzellen aus dem Steuergerät in das Beeinflussungsgerät und durch Schreiben von auf dem Beeinflussungsgerät berechneten Werten in den Speicher des Steuergeräts, Steuergerätefunktionen zu umgehen (Bypass), neue Funktionen auf dem Beeinflussungsgerät zu berechnen und das Steuergerät so durch diese Bypass-Operationen gezielt zu beeinflussen. Der schreibende Zugriff auf den Speicher des Steuergeräts, mit dem lediglich Parameter bzw. Parametersätze, also Kennzahlen, -linien oder -felder verändert werden, die die interne Steuergerätefunktionen verwenden, wird häufig als Steuergeräte-Applikation bezeichnet. Sollen nicht nur Parameter von internen Funktionen des Steuergeräts, also im Speicher des Steuergeräts abgelegte Daten, sondern die im Steuergerät imple- mentierten internen Funktionen selbst testweise verändert werden, kommt das Funk- tions-Bypassing zum Einsatz, bei dem das Steuergerät einem angeschlossenen, echt- zeitfähigen Beeinflussungsgerät den Aufruf einer internen Steuergerätefunktion signalisiert, das Steuergerät selbst die Funktion jedoch nicht ausführt, sondern lediglich das Ergebnis der auf dem Beeinflussungsgerät ersatzweise berechneten Funktion entge- gennimmt und weiter verwendet, es findet auf diese Art und Weise ein Bypass der Steuergeräte-Funktion statt.

In den beiden zuvor geschilderten Szenarien - Steuergeräte-Applikation und Funkti- ons-Bypassing - ist es notwendig, einen besonderen Zugang zum Steuergerät in Form der bereits angesprochenen Bypass- Schnittstelle zu schaffen, über den eine Beobachtung und aktive Beeinflussung des Steuergeräts möglich ist. Im Stand der Technik ist es beispielsweise bekannt, eine parallele Schnittstelle zum Eingriff in die Hardware des Steuergeräts zu verwenden, über die das Beeinflussungsgerät wie ein Speicher-Emulator arbeitet. Das Beeinflussungsgerät wird über einen Adapter aufgenommen, der an die Stelle eines Speicherbausteins des Steuergeräts tritt, oder von einem extra dafür vorgesehenen Steckplatz auf der Platine des Steuergeräts und kann so auf den Adress- und Datenbus des Steuergerät-Mikrocontrollers zugreifen. Das Beeinflussungsgerät selbst enthält dann als zentrales Element einen zweiseitig zugreifbaren Speicher (Dual- Port-Memory, DPMEM). Der zweiseitig zugreifbare Speicher kann nun seitens des Be- einflussungsgeräts gelesen und beschrieben werden, wobei die in den zweiseitig zugreifbaren Speicher des Beeinflussungsgeräts abgelegten Daten automatisch von dem Steuergerät-Mikrocontroller gelesen werden können, da sich der zweiseitig zugreifbare Speicher durch die Ankopplung an den Daten- und Adressbus des Steuergerät- Mikrocontrollers im Adressraum des Mikrocontrollers befindet.

Bei anderen Lösungen wird ein Datenaustausch zwischen Steuergerät und Beeinflussungsgerät über sogenannte Debug-Schnittstellen des Steuergeräts realisiert, die bei modernen Mikrocontrollern auf dem Chip bereits integriert sind (z. B. Nexus, JTAG). Unabhängig von dem hardwaremäßigen Zugriff auf das Steuergerät muss das Steuergerät softwaremäßig für einen möglichen Einsatz des Bypassing vorbereitet werden, was dadurch geschieht, dass in dem Programmcode des Steuergeräts speziell für das Bypas- sing gedachte Service-Funktionen vorgesehen werden, so dass der Programmcode also mit diesen Service-Funktionen instrumentiert ist. Diese Service-Funktionen stehen häufig am Anfang und am Ende einer interessierender Steuergerätefunktion, sie können fest kodiert sein oder eine gewisse Flexibilität aufweisen, so dass sie aktiviert und deaktiviert werden können. Die Servicefunktionen kopieren beispielsweise Argumente interner Steuergerätefunktionen in das DPMEM, um sie von dort einem angeschlossenen Beeinflussungsgerät verfügbar zu machen, das diese Werte ausliest und einer auf dem Beeinflussungsgerät implementierten Funktionalität zuführt. Das Ergebnis der Berechnung auf dem Beeinflussungsgerät wird dann umgekehrt wieder in das DPMEM geschrieben und für die weitere interne Berechnung auf dem Steuergerät als Ergebnis für die umgangene interne Steuergerätefunktion verwendet.

Die DE 102 28 610 AI offenbart ein Verfahren zum Überprüfen eines auf einer elektronischen Recheneinheit ablaufenden Steuerprogramms, bei dem mindestens eine By- passfunktion durch dynamisches Linken an vorgegebene Schnittstellen angekoppelt wird. Eine in den Speicher der elektronischen Recheneinheit geladene Bypassroutine hat lesenden Zugriff auf statisch vorliegende Daten.

Aus der EP 2 881 858 AI ist ein Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes bekannt, bei dem eine Bypassroutine im Arbeitsspei- eher des Steuergeräts abgelegt und die Speicheradresse in einer Tabelle hinterlegt wird. Eine Servicefunktion liest die Adresse aus der Tabelle aus und ruft die Bypassroutine auf. Durch Löschung des Tabelleneintrags ist die Bypassroutine zur Laufzeit des Steuergeräts austauschbar. Die Informationen über die von der Programmroutine verarbeiteten Variablen stammen aus einer technischen Beschreibungsdatei, die unter anderem die Speicheradressen der Variablen enthält.

Im Rahmen des Bypassing ist es im Stand der Technik nicht möglich, mit den beschriebenen Mechanismen gezielt auf steuergeräteinterne Funktionen zuzugreifen. Behelfsweise wird dies dadurch gelöst, dass in den Programmcode des Steuergeräts diese in- ternen Funktionen zyklisch aufgerufen und die Funktionsargumente bzw. Rückgabewerte mittels globaler Variablen dann transportiert werden. Dies erzwingt jedoch im Programmcode des Steuergeräts für jede Funktion und für jede möglicherweise gewünschte Aufrufposition dieser internen Steuergerätefunktion eine spezifische Anpassung des Steuergeräte-Programmcodes, was erhebliche Nachteile mit sich bringt hin- sichtlich des Umfangs des Programmcodes und auch hinsichtlich der Beeinflussung des Laufzeitverhaltens des Programmcodes im Steuergerät. Aufgabe der vorliegenden Erfindung ist es, ein Verfahren zum Betreiben eines Steuergeräts anzugeben, durch das es auf flexible Weise möglich ist, auch interne Steuergerätefunktionen beim externen Bypassing flexibel aufzurufen. Die zuvor hergeleitete und aufgezeigte Aufgabe ist erfindungsgemäß bei dem eingangs beschriebenen Verfahren zum Betreiben eines Steuergerätes dadurch gelöst, dass auf dem Steuergerät eine Service-Konfiguration für die Service-Funktion bereitgestellt wird, dass die Service-Konfiguration in dem Steuergerät erfasst wird und dass bei Aufruf der Service-Funktion eines Service-Funktionalität entsprechend der Service-Konfi- guration ausgeführt wird, wobei die Service-Konfiguration wenigstens eine interne

Steuergerätefunktion bezeichnet, die als Service-Funktionalität der korrespondierenden Service-Funktion ausgeführt wird. Die Service-Funktion ist dazu eingerichtet, mit Hilfe der Service-Konfiguration wenigstens einen Wert für wenigstens ein Argument der internen Steuergerätefunktion im Steuergerät bereitzustellen und/oder wenigs- tens einen Rückgabewert der internen Steuergerätefunktion entgegenzunehmen.

Durch diese Verfahrensschritte ist es auf sehr einfache und elegante Weise möglich, von jeder beliebigen Service-Funktion eine beliebige interne Steuergeräte-Funktion aufzurufen. Die Zuweisung, welche Service-Funktion welche interne Steuergerätefunk- tion - oder auch eine Mehrzahl von Steuergerätefunktionen - aufruft, ist in der Service- Konfiguration enthalten. Die Service-Funktion und/oder die Service- Konfiguration enthalten zweckmäßigerweise einen ausführbaren Code, mittels dem die Übergabe der Argumente und/oder Rückgabewerte zur Laufzeit ermöglicht wird. Unter einer internen Steuergerätefunktion sind hierbei solche Routinen des ursprünglichen Programmcodes zu verstehen, deren Aufruf die Übergabe eines oder mehrerer Argumente erfordert und/oder die ein oder mehrere Rückgabewerte ausgeben. Beispielsweise kann es sich um Set-Funktionen handeln, die ein oder mehrere Argumente entgegennehmen und anhand der übergebenen Werte einen oder mehrere Parameter des Programmcodes modifizieren, ohne dass die Adresse des jeweiligen Parameters bekannt sein muss. Ein weiteres Beispiel sind Get-Funktionen, die bei einem Aufruf einen oder mehrere Rückgabewerte liefern, wie insbesondere ein momentanes Sensorsignal. Prinzipiell können interne Steuergerätefunktionen sowohl mindestens ein Argument erfordern als auch mindestens einen Rückgabewert liefern. In diesem Fall ist die Servicefunktion zweckmäßigerweise dazu eingerichtet, vor dem Aufruf der internen Steuergerätefunktion die Argumente bereitzustellen und nach dem Aufruf die Rückgabewerte entgegenzunehmen. Optional kann die Servicefunktion dazu eingerichtet sein, einen oder mehrere Rückgabewerte an einer vorgegebenen Adresse im Arbeitsspeicher abzulegen, so dass insbesondere ein angeschlossenes Beeinflussungsgerät mit an sich bekannten Mechanismen auf diesen Wert zugreifen kann. Argumente und/oder Rückgabewerte werden zweckmäßigerweise über einen Stack oder Heap übergeben, so dass die Speicheradresse der jeweiligen Variable sich dynamisch ändert. Die Werteübergabe kann in diesem Fall nur über relative Speicheradressen erfolgen, welche nicht global eindeutig sind, da weder die Startadresse noch die momentane Belegung des Stacks vorab bekannt ist und somit die Adresse nur relativ zum Stackpointer angegeben werden kann. Indem die Service-Funktion dazu eingerichtet ist, dem Mikroprozessor den ausführbaren Code zur Werteübergabe zuzuführen, können zur Laufzeit korrekte Speicheradressen ermittelt und der entsprechende Speicher mit den benötigten Werten beschrieben werden.

Alternativ oder ergänzend kann es auch vorgesehen sein, Argumente und/oder Rückgabewerte mittels eines lokalen Registers des Mikroprozessors des Steuergeräts auszutauschen. Dadurch, dass die Service-Funktion dem Mikroprozessor den ausführbaren Code zuführt, kann dieser selbst ein oder mehrere benötigte Argumente in die entsprechenden lokalen Register schreiben oder -nach Ausführung der internen Steuergerätefunktion - einen oder mehrere Rückgabewerte aus den entsprechenden lokalen Registern in den Arbeitsspeicher schreiben.

Gemäß einer bevorzugten Variante der Versorgung der internen Steuergerätefunktion mit Argumenten ist vorgesehen, dass in der Service-Konfiguration ausführbarer Code enthalten ist, der wenigstens einen Wert für wenigstens ein Argument der internen Steuergerätefunktion im Steuergerät bereitstellt. Dieses Vorgehen hat den Vorteil, dass lediglich der ausführbare Code aufgerufen werden muss, um den Aufruf der internen Steuergerätefunktion vorzubereiten. Dieser ausführbare Code kann beispielsweise mittels eines Cross-Compilers für die Steuergeräte-CPU anhand von Informationen über die Struktur des Programmcodes des Steuergeräts hergestellt worden sein (wie Header-Dateien). Insbesondere kann derselbe Cross-Compiler eingesetzt werden, mit dem auch der Programmcode des Steuergeräts selbst erstellt worden ist. Dem gleichen Prinzip folgend ist in einer weiteren Ausgestaltung alternativ oder ergänzend vorgesehen, dass in der Service-Konfiguration ausführbarer Code enthalten ist, der wenigstens einen Rückgabewerte der internen Steuergerätefunktion entgegennimmt. Dieser Rückgabewert könnte dann beispielsweise einem angeschlossenen Beeinflussungsgerät bereitgestellt werden.

Bei einer bevorzugten Ausgestaltung des Verfahrens zum Betreiben eines Steuergeräts wird davon ausgegangen, dass die Service-Funktion dazu eingerichtet ist, Funktionen mit vorbestimmten Mustern von Argumenten und/oder Rückgabewerten aufzurufen. Mit einem solchen Muster sind praktisch die Angaben gemeint, die üblicherweise von einer Funktionsdeklaration umfasst sind. Die Angabe "double f(char, int, int)" beschreibt beispielsweise eine Funktion f mit einem Rückgabewert vom Typ double, die mit drei Argumenten zu versorgen ist, wobei das erste Argument ein Zeichen (charac- ter) ist und wobei das zweite und das dritte Argument jeweils ein Integer- Wert ist. Die Service- Funktion ist nun so eingerichtet, dass sie zum Aufruf von Funktionen mit bestimmten Mustern von Argumenten und/oder Rückgabewerten vorbereitet ist. Die Ser- vice-Konfiguration bezeichnet dann die interne Steuergerätefunktion (oder gegebenenfalls mehrerer Steuergerätefunktionen) durch Angabe des vorbestimmten Musters und durch Angabe der Startadresse der internen Steuergerätefunktion. Durch diese Angaben ist eindeutig festgelegt, welche interne Steuergerätefunktion bzw. welche internen Steuergerätefunktionen bei Aufruf der Service-Funktion aufgerufen wird bzw. aufgeru- fen werden.

Die Service- Funktion des Steuergeräts kann beispielsweise zyklisch in einem festen Zeitraster ausgeführt werden, dann ist sie in dem üblicherweise im Steuergerät zum Einsatz kommenden Echtzeitbetriebssystem als Timer-Task aufgesetzt oder wird im Rahmen einer solchen Timer-Task - neben anderen Funktionen - aufgerufen. Es ist auch möglich, dass die Service-Funktion azyklisch ausgeführt wird, sie kann durch ein externes Ereignis getrieben sein, wie beispielsweise ein Ereignis in dem technischen Prozess, mit dem das Steuergerät über die I/O- Schnittstelle verbunden ist. Es ist also durchaus denkbar, dass eine bestimmte Service-Funktion nur sehr selten oder nur ein einziges Mal aufgerufen wird.

Wenn es heißt, dass die Service-Konfiguration in dem Steuergerät erfasst wird, dann ist damit gemeint, dass die in der Service- Konfiguration enthaltene Korrespondenz von Service- Funktion und interner Steuergerätefunktion bzw. internen Steuergerätefunkti- onen durch eine in dem Steuergerät implementierte Auswertefunktion erkannt - also sinngebend erfasst - wird und die in der Service-Konfiguration enthaltene Korrespondenz an der Stelle der Service-Funktion in den entsprechenden Aufruf der internen Steuergerätefunktion umgesetzt werden muss. Die Bereitstellung der Service-Konfiguration auf dem Steuergerät kann einfach dadurch geschehen, dass die Service-Konfigu- ration in einem dafür vorgesehenen Speicherbereich des Steuergeräts abgespeichert wird. Das Bereitstellen der Service-Konfiguration könnte aber auch von extern erfolgen.

In einer bevorzugten Ausgestaltung ist vorgesehen, dass das Steuergerät über eine Schnittstelle mit einem Beeinflussungsgerät verbunden ist und von dem Beeinflussungsgerät über die Schnittstelle die Service-Konfiguration auf das Steuergerät übertragen und auf dem Steuergerät abgespeichert wird. In einer alternativen Ausgestaltung ist vorgesehen, dass das Steuergerät zwar auch über eine Schnittstelle mit einem Beeinflussungsgerät verbunden ist und von dem Beeinflussungsgerät über die Schnitt- stelle die Service- Konfiguration auf das Steuergerät übertragen wird, hier jedoch keine dauerhafte Abspeicherung der Service-Konfiguration erfolgt, die Service-Konfiguration vielmehr sofort in dem Steuergerät erfasst und an der Stelle der Service-Funktion so- fort ein der Service-Konfiguration entsprechender Aufruf der internen Steuergerätefunktion implementiert wird. So könnte realisiert werden, dass nicht bei jedem Aufruf einer Service-Funktion zunächst die entsprechenden Informationen aus der Service- Konfiguration ausgelesen und erfasst werden müssen, um als Service-Funktionalität der Service-Funktion die zugewiesene interne Steuergerätefunktion aufzurufen. Es könnte beispielsweise dafür gesorgt werden, dass das Auslesen und Erfassen der Service-Konfiguration erst dann wieder erfolgt, wenn sich die Service-Konfiguration geändert hat, was beispielsweise durch das Setzen eines bestimmten Flags auf dem Steuergerät signalisiert werden könnte.

Bevorzugt ist vorgesehen, dass in der Service-Konfiguration wenigstens ein Speicherort angegeben wird, wo wenigstens ein Wert für ein Argument oder mehrere Argumente der internen Steuergerätefunktion im Steuergerät hinterlegt wird und/oder wo wenigstens ein Rückgabewert der internen Steuergerätefunktion im Steuergerät hin- terlegt wird. Durch diese Maßnahme ist sichergestellt, dass der Service-Funktion bekannt ist, wo sie ein Argument - oder natürlich auch mehrere Argumente - für die aufzurufende interne Steuergerätefunktion - oder auch mehrere aufzurufende interne Steuergerätefunktionen - erhält und wo sie ggf. einen Rückgabewert - oder natürlich auch mehrere Rückgabewerte - der internen Steuergerätefunktion im Steuergerät zur weiteren Verwendung ablegt. Wenn die Service- Konfiguration von einem angeschlossenen Beeinflussungsgerät stammt, ist selbstverständlich auch auf dem Beeinflussungsgerät bekannt, wo die Argumente der internen Steuergerätefunktion im Steuergerät abzulegen sind und wo ggf. Rückgabewerte einer internen Steuergerätefunktion im Steuergerät aufzufinden sind, wenn diese beispielsweise für eine weitere Berech- nung benötigt werden.

In einer Weiterentwicklung des vorgenannten Verfahrens ist vorgesehen, dass der Speicherort für ein Argument der internen Steuergerätefunktion überwacht wird und die interne Steuergerätefunktion erst dann mit dem im Speicherort hinterlegten Wert für das Argument aufgerufen wird, wenn der Speicherort mit einem aktuellen Wert für das Argument beschrieben worden ist. Dadurch wird eine automatische Synchronisation mit einem externen Bypass-Prozess ermöglicht, wobei die Überwachung des Speicherorts nicht zwingend bedeuten muss, dass nur die Änderung des Inhalts des Speicherorts detektiert wird, es kann vielmehr auch auf den Schreibvorgang in den Spei- cherort abgestellt werden, unabhängig davon, ob sich der Inhalt des Speicherortes bei dem Schreibvorgang geändert hat oder nicht.

Eine für das externe Bypassing ebenfalls wichtige Ausgestaltung des bisher beschriebenen Verfahrens ist, dass das Steuergerät über eine Schnittstelle mit einem Beeinflus- sungsgerät verbunden ist und das Steuergerät über die Schnittstelle den Rückgabewert der internen Steuergerätefunktion an das Beeinflussungsgerät überträgt und/oder das Beeinflussungsgerät den Rückgabewert der internen Steuergerätefunktion über die Schnittstelle aus dem Steuergerät ausliest. So kann durch das Beeinflussungsgerät nicht nur der Aufruf einer internen Steuergerätefunktion veranlasst werden, es kann vielmehr auch in dem Beeinflussungsgerät mit dem Ergebnis des Aufrufs der internen Steuergerätefunktion gearbeitet werden. Ein so eingesetztes Beeinflussungsgerät ist also Ort einer ausgelagerten Funktionalität bzw. einer Bypass-Funktionalität. Dieses Beeinflussungsgerät kann ein anderes Beeinflussungsgerät sein als das zuerst erwähnte Beeinflussungsgerät, mit dem die Service-Konfiguration auf das Steuergerät übertragen wird. Die Funktionalitäten können aber auch in einem einzigen Beeinflussungsgerät realisiert sein, darauf kommt es erkennbar nicht an. Eine weitere Maßnahme für eine vorteilhafte Weiterentwicklung des Verfahrens, insbesondere im Hinblick auf das Bypassing, ist dadurch gekennzeichnet, dass das Steuergerät über eine Schnittstelle mit einem Beeinflussungsgerät verbunden ist und im Beeinflussungsgerät Programmcode mit wenigstens einer Beeinflussungsgerätefunktion hinterlegt ist, die Service-Konfiguration den Aufruf einer Beeinflussungsgerätefunktion umfasst und bei Aufruf der entsprechenden Service-Funktion das Steuergerät über die Schnittstelle dem Beeinflussungsgerät den Aufruf der Beeinflussungsgerätfunktion signalisiert und das Beeinflussungsgerät die Beeinflussungsgerätfunktion ausführt.

Dadurch kann von dem Steuergerät in dem Beeinflussungsgerät gezielt eine Beeinflussungsgerätefunktion aufgerufen - getriggert - werden, so dass Steuergerät und Beein- flussungsgerät funktional und zeitlich eng miteinander verzahnt sind.

In Bezug auf das Verfahren mit der Beeinflussungsgerätfunktion hat es sich als vorteilhaft herausgestellt, wenn in der Service-Konfiguration ein Speicherort angegeben wird, wo ein Wert für ein Argument der Beeinflussungsgerätfunktion im Steuergerät hinterlegt wird und/oder wo ein Rückgabewert der Beeinflussungsgerätfunktion im Steuergerät hinterlegt wird. Diese Funktionalität ist unabhängig von dem Aufruf der internen Steuergerätfunktion und gewährleistet die sichere Versorgung der Beeinflussungsgerätfunktion mit den richtigen Argumenten und gewährleistet ferner, dass das Ergebnis der Berechnung der Beeinflussungsgerätfunktion auf dem Steuergerät an der richtigen Stelle zur Verfügung gestellt wird.

In dem vorgenannten Zusammenhang wird wiederum eine Synchronisation hergestellt zwischen dem Steuergerät und dem Beeinflussungsgerät, indem der Speicherort für ein Argument der Beeinflussungsgerätfunktion von dem Beeinflussungsgerät über die Schnittstelle überwacht wird und die Beeinflussungsgerätfunktion erst dann mit dem im Speicherort hinterlegten Wert für das Argument aufgerufen wird, wenn der Speicherort mit einem aktuellen Wert für das Argument beschrieben worden ist.

Die zuvor aufgezeigte Aufgabe wird auch durch ein zum externen Bypassing eingerichtetes Steuergerät gelöst, wobei das Steuergerät über eine I/O-Schnittstelle mit einem technischen Prozess verbunden ist, wobei auf dem Steuergerät Programmcode mit internen Steuergerätefunktionen hinterlegt ist, wobei der Programmcode mit wenigstens einer Service-Funktion instrumentiert ist und wobei bei Ausführung des Programmcodes das Steuergerät über die I/O- Schnittstelle Steuersignale an dem technischen Pro- zess ausgibt und über die I/O-Schnittstelle Zustandsgrößen des technischen Prozesses als Signale empfängt. Das zum externen Bypassing eingerichtete Steuergerät zeichnet sich letztlich dadurch aus, dass auf dem Steuergerät eines Service-Konfiguration für die Service-Funktion bereitgestellt ist, dass die Service-Konfiguration in dem Steuergerät bei Betrieb des Steuergeräts erfasst wird und bei Aufruf des Service- Funktion eines Service-Funktionalität entsprechend der Service-Konfiguration ausgeführt wird, wobei die Service-Konfiguration eine interne Steuergerätefunktion bezeichnet, die als Service-Funktionalität der korrespondierenden Service-Funktion ausgeführt wird, sodass durch Bereitstellen der Service- Konfiguration auf dem Steuergerät flexibel auf dem verbundenen technischen Prozess eingewirkt wird. Das Steuergerät zeichnet sich ferner dadurch aus, dass das zuvor beschriebene Verfahren in dem Betriebszustand des Steuergeräts entsprechend auf dem Steuergerät durchgeführt wird.

Im Einzelnen gibt es nun mehrere Möglichkeiten, das erfindungsgemäße Verfahren zum Betreiben eines Steuergeräts und das erfindungsgemäße Steuergerät, das zum externen Bypassing eingerichtet ist, auszugestalten und weiterzubilden. Dazu wird verwiesen sowohl auf die dem Patentanspruch 1 und dem Patentanspruch 9 nachgeordneten Patentansprüche als auch auf die Beschreibung der in der Zeichnung dargestellten Ausführungsbeispiele. In der Zeichnung zeigen ein erstes Ausführungsbeispiel für ein zum externen Bypassing eingerichtetes Steuergerät sowie ein Verfahren zum Betreiben eines solchen Steuergeräts, wiederum ein zum externen Bypassing eingerichtetes Steuergerät, dies mal mit einem angeschlossenen Beeinflussungsgerät, ein zum externen Bypassing eingerichtetes Steuergerät mit angeschlossenem Beeinflussungsgerät und einer vollständigen Sequenz für das Bypassing und das Ausführungsbeispiel gemäß Fig. 3 mit einer weiteren Synchronisation zur Ablaufsteuerung auf dem Steuergerät.

In Fig. 1 ist zunächst die typische Situation für den Einsatz eines Steuergeräts 1 dargestellt, wobei das Steuergerät 1 über eine I/O-Schnittstelle 2 mit einem technischen Prozess 3 verbunden ist. Über die I/O-Schnittstelle 2 steht das Steuergerät 1 in dauerndem Wirkzusammenhang mit dem technischen Prozess 3, wobei es Stellgrößen an Aktoren innerhalb des technischen Prozesses 3 ausgibt und so den technischen Prozess 3 aktiv beeinflusst, und wobei das Steuergerät 1 über die I/O-Schnittstelle 2 über Sensoren von dem technischen Prozess 3 Messdaten erhält und diese Messdaten beispielsweise in die Berechnung neuer Stellgrößen einfließen lässt. Das Steuergerät umfasst mindestens einen Mikroprozessor mit einem oder mehreren Kernen, der auch als IP-Core auf einen programmierbaren Logikbaustein implementiert sein kann.

Auf dem Steuergerät 1 ist Programmcode 4 mit internen Steuergerätefunktionen hinterlegt, wobei in den Fig. 1 bis 4 jeweils die internen Steuergerätefunktion ffj und afj dargestellt sind. Der Programmcode 4 ist darüber hinaus mit Service-Funktionen instrumentiert, wobei die Service-Funktionen in den Fig. 1 bis 4 jeweils mit "ecu_s(n)" und "ecu_s(n+l)" bezeichnet sind.

In dem Programmcode 4 des Steuergeräts 1 ist eine originäre Funktionalität ffj definiert, deren Berechnung zu dem Ergebnis y führt. Das Argument der Funktion ffj wird von der internen Steuergerätefunktion afj geliefert, die ihrerseits das Argument x verwendet. Diese in dem Programmcode fest implementierte Steuergerätefunktion ffj ist umgeben von den Service-Funktionen ecu_s(n) und ecu_s(n+l). Diese die Steuergerätefunktion ffj umgebenden Service-Funktionen ecu_s(n), ecu_s(n+l) ermöglichen grundsätzlich die Umgehung der Steuergeräte funktion ffj.

Die Service- Funktionen ecu_sfj im Programmcode 4 des Steuergeräts 1 dienen vor allem zur Realisierung der planmäßigen Beeinflussung des Steuergeräts 1 durch Bypass- sing. In den hier dargestellten Ausführungsbeispielen wird es nun ermöglicht, dass auch interne Steuergerätfunktionen afj praktisch von jeder beliebigen Service-Funktion ecu_sfj aufgerufen werden können, wobei dies insbesondere auch durch das externe Bypassing ermöglicht wird.

Dazu ist vorgesehen, dass auf dem Steuergerät 1 - beispielsweise im RAM 5 des Steuer- geräts 1 - eine Service-Konfiguration 6 bereitgestellt wird und dass diese Service-Konfiguration 6 in dem Steuergerät 1 durch einen Algorithmus sinngebend erfasst wird, sodass bei Aufruf der Service-Funktion ecu_sfj eine Service- Funktionalität entsprechend der Service-Konfiguration 6 ausgeführt wird, wobei die Service-Konfiguration 6 wenigstens eine interne Steuergerätefunktion afj bezeichnet, die als Service-Funktio- nalität der korrespondierenden Service-Funktion ecu_sfj ausgeführt wird. In den dargestellten Ausführungsbeispielen enthält die Service-Konfiguration 6 die Information, dass die Service- Funktion ecu_s(n) die interne Steuergerätefunktion a(x) aufruft, wobei im vorliegenden Fall der Aufruf mit dem Argument x' erfolgen soll. Die Service- Konfiguration 6 enthält also eine Korrespondenzliste, die einer Service-Funktion ecu_s(i) eine beliebige interne Steuergerätefunktion a_ifj oder auch mehrere beliebige interne Steuergerätefunktionen a_ifj zuordnen kann, sodass in dem Programmcode 4 des Steu- ergeräts 1 praktisch an allen Stellen, an denen eine Service-Funktion ecu_sfj vorgesehen ist, eine oder mehrere beliebige interne Steuergerätefunktionen afj aufgerufen werden kann/können. Das Erfassen der Service-Konfiguration 6 erfolgt im dargestellten Ausführungsbeispiel über das Auslesen der entsprechenden Korrespondenz aus der Service- Konfiguration 6 zu der Service-Funktion ecu_s(n). In den Ausführungsbeispielen ist dieses Auslesen der Korrespondenz aus der Service-Konfiguration als "read_c(n)" bezeichnet. Das Auslesen der Service-Konfiguration 6 führt dann zu dem Ergebnis, dass die interne Steuergeräte- funktion a(x) mit dem Argument x', ausgeführt werden soll. Die mit dem Auslesen der Service-Konfiguration 6 verbundenen Vorgänge (z. B. read_n) und die Umsetzung der in der Service-Konfiguration 6 enthaltenen Informationen in Anweisungen (z. B.

r=a(x ) ist in den Figuren jeweils in den Bypassing-Services 7 dargestellt. In den Ausführungsbeispielen gemäß den Fig. 1 bis 4 ist der Programmcode 4 und sind die Bypas- sing-Services 7 in dem Flash-Speicher des Steuergeräts 1 angesiedelt und sind die Service-Konfiguration 6 und später erläuterte Austauschspeicher in dem RAM 5 realisiert.

In den Fig. 2 bis 4 ist der physikalische Prozess 3 nicht mehr dargestellt, wie er noch in Fig. 1 zu sehen ist. Dafür ist in den Fig. 2 bis 4 jeweils dargestellt eine Schnittstelle 8, über die das Steuergerät 1 mit einem Beeinflussungsgerät 9 verbunden ist.

In Fig. 2 ist zu erkennen, dass von dem Beeinflussungsgerät 9 über die Schnittstelle 8 die Service-Konfiguration 6 auf das Steuergerät 1 übertragen und auf dem Steuergerät 1 abgespeichert wird; dieser Vorgang ist durch einen Pfeil angedeutet. Idealerweise geschieht dies während der Initialisierung des Steuergeräts 1 durch das Beeinflussungsgerät 9, was durch die Funktion "initfj" angedeutet ist.

In den Fig. 2 bis 4 ist ferner dargestellt, dass die Service-Konfiguration 6 auch Speicherorte 10, 11 angibt, in denen ein Wert x' für ein Argument der internen Steuergerätefunktion afj im Steuergerät 1 hinterlegt wird, und wo ein Rückgabewert r der internen Steuergerätefunktion afj im Steuergerät 1 hinterlegt wird. Diese Speicherorte 10, 11 können insbesondere als Austauschspeicher dienen, über die das Steuergerät 1 und das Beeinflussungsgerät 9 Argumente x' und Ergebnisse r der internen Steuergerätefunktion afj austauschen können.

Bei den in den Steuergeräten 1 implementierten Verfahren ist im Rahmen der Bypass- Services 7 vorgesehen, dass der Speicherort 10 für ein Argument x' der internen Steuergerätefunktion afj überwacht wird und die interne Steuergerätefunktion afj erst dann mit dem im Speicherort 10 hinterlegten Wert für das Argument x' aufgerufen wird, wenn der Speicherort 10 mit einem aktuellen Wert für das Argument x' beschrieben worden ist. Dadurch ist gewährleistet, dass die interne Steuergerätefunktion afj immer mit einem aktuellen Argument x' berechnet wird. In den Fig. 3 und 4 ist die Erweiterung des bisher geschilderten Verfahrens dargestellt, sodass ein vollständiges Bypassing realisiert ist unter Aufruf der internen Steuergerätefunktion afj durch das externe Beeinflussungsgerät 9. Dazu gehört, dass das Steuergerät 1 über die Schnittstelle 8 mit dem Beeinflussungsgerät 9 verbunden ist und das Steuergerät 1 über die Schnittstelle 8 den Rückgabewert r der internen Steuergeräte- funktion afj an das Beeinflussungsgerät 9 überträgt. Alternativ kann das Beeinflussungsgerät 9 den Rückgabewert r der internen Steuergerätefunktion afj über die Schnittstelle 8 aus dem Steuergerät 1 auslesen. In dem dargestellten Verfahren wird die interne Steuergerätefunktion afj unter Verwendung des Arguments x', das in dem Speicherort 10 hinterlegt ist, berechnet.

In den Fig. 3 und 4 weist das Beeinflussungsgerät 9 Programmcode mit einer Beeinflussungsgerätfunktion fΌ auf. Die Beeinflussungsgerätfunktion f '() ist dazu gedacht, die Berechnung der in dem Steuergerät 1 im Programmcode 4 vorhandenen originären Steuergerätfunktion ffj zu modifizieren. Während die Berechnung der internen Steuer- gerätefunktion ffj zum Ergebnis wird y führt, führt die Berechnung der Beeinflussungsgerätfunktion fΌ zu dem modifizierten Ergebniswert y'.

In Fig. 4 ist in diesem Zusammenhang dargestellt, dass die Servicekonfiguration 6 den Aufruf 12 ("trigger") der Beeinflussungsgerätfunktion f '() umfasst und bei Aufruf der entsprechenden Service-Funktion, in diesem Fall der Service-Funktion ecu_s(n), das Steuergerät 1 über die Schnittstelle 8 dem Beeinflussungsgerät 9 den Aufruf 12 der Beeinflussungsgerätfunktion fΌ, signalisiert, woraufhin das Beeinflussungsgerät 9 die Beeinflussungsgerätfunktion f '() ausführt. So kann sichergestellt werden, dass das Steuergerät 1 Beeinflussungsgerätfunktionen f '() auf dem Steuergerät 9 aktiv auslösen, also triggern kann.

Zu der Durchführung des Bypassing gehört in den Verfahren gemäß den Figuren 3 und 4 auch, dass in der Service-Konfiguration 6 ein Speicherort 11 angegeben wird, wo ein Wert für ein Argument r der Beeinflussungsgerätfunktion f '() im Steuergerät 1 hinterlegt wird und wo ein Rückgabewert y' der Beeinflussungswertfunktion f '() im Steuergerät 1 hinterlegt wird. In beiden dargestellten Verfahren wird letztendlich der Wert y, der das Ergebnis der originären Steuergerätfunktion ffj ist, durch den modifizierten Wert y', der aus der Berechnung der Beeinflussungsgerätfunktion f '() resultiert, ersetzt, womit das Bypassing der originären Steuergerätfunktion ffj abgeschlossen ist. In den dargestellten Verfahren ist ferner vorgesehen, dass der Speicherort 11 für das Argument r der Beeinflussungsgerätfunktion f '() von dem Beeinflussungsgerät 9 über die Schnittstelle 8 überwacht wird und die Beeinflussungsgerätfunktion f '() erst dann mit dem im Speicherort 11 hinterlegten Wert für das Argument r aufgerufen wird, wenn der Speicherort 11 mit einem aktuellen Wert für das Argument r beschrieben worden ist; dies ist in den Figuren angedeutet durch den Verfahrensschritt "wait for r". Dadurch kann die Berechnung der Beeinflussungsgerätfunktion f '() praktisch ereignisgetrieben angestoßen werden.