[0001] Die Erfindung betrifft eine Motorsteuerung nach dem Oberbegriff von Patentanspruch
1.
[0002] Bei einer bekannten Motorsteuerung (DE 38 26 526 A1) laufen Programme unterschiedlicher
zeitlicher Priorität ab. Prioritätshoch sind Programme, mit denen bei einem vorgegebenen
Kurbelwinkel ein Motorsteuervorgang ausgelöst wird, z.B. Kraftstoff eingespritzt oder
gezündet wird. Mit niedriger Priorität laufen sogenannte Hintergrundprogramme ab.
Die zeitabhängigen Programme sind in verschiedene Gruppen eingeteilt, mindestens in
eine abstandskürzeste Programmgruppe und abstandslängere Programme. An die abstandskürzeste
Programmgruppe ist mindestens eines der abstandslängeren Programme angefügt, wodurch
eine Verbundgruppe gebildet wird. Dieses bekannte Betriebssystem ist aufwendig.
[0003] Der Erfindung liegt die Aufgabe zugrunde, eine Motorsteuerung mit schnelleren Wechselzeiten
für die zu bearbeitenden Aufgaben zu schaffen.
[0004] Diese Aufgabe wird durch die Motorsteuerung nach Anspruch 1 gelöst.
[0005] Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen niedergelegt.
[0006] Ein Ausführungsbeispiel der Erfindung wird im folgenden anhand der Zeichnung erläutert.
Es zeigen:
Figur 1 die wesentlichen Bestandteile einer erfindungsgemäßen Motorsteuerung als Blockschaltbild,
Figur 2 und 3 den Aufbau der Synchronliste und der Asynchronliste des Betriebssystems
der Motorsteuerung nach Figur 1 und
Figur 4 ein Struktogramm des Betriebssystems der Motorsteuerung nach Figur 1.
[0007] Wesentliche Bestandteile einer Motorsteuerung 1 sind ein Rechenteil 2 und ein Echtzeitteil
3 (Figur 1). Der Rechenteil und der Echtzeitteil sind durch ein sog. Zwei- oder Drei-Port-RAM
4, durch mehrere sog. Handshake-Leitungen 5 und durch eine Interrupt-Leitung 6 miteinander
verbunden.
[0008] An den Echtzeitteil 3 sind mehrere Eingangsleitungen 8 und Ausgangssleitungen 9 angeschlossen.
Über die Eingangsleitungen 8 treffen Eingangsgrößen ein, die in dem Echtzeitteil gemessen
werden, z.B. Sensorsignale, die die Lage der Kurbelwelle oder der Nockenwelle wiedergeben.
Über die Ausgangsleitungen 9 werden Steuersignale an Aktoren ausgegeben, mit denen
z.B. die Zündung und die Kraftstoffeinspritzung ausgelöst werden. Im vorliegenden
Ausführungsbeispiel weist der Echtzeitteil 3 zwei Mikroprozessoren des Typs 87C51GB
der Firma Intel auf.
[0009] An den Rechenteil 2 sind ebenfalls mehrere Eingangsleitungen 10 und Ausgangssleitungen
11 angeschlossen. Über eine Eingangsleitung 10 gelangen z.B. analoge Temperatursignale
zu dem Rechenteil und werden in diesem in einem internen AD-Wandler digitalisiert.
Andere Eingangsleitungen 10 sind an einen HSI-Eingang und an Port-Pins des Rechenteils
2 angeschlossen. Über die Ausgangsleitungen 11 werden von einem sogenannten HSO-Ausgang
des Rechenteils pulsweitenmodulierte Steuersignale LLFS an den Leerlauffüllungssteller
des Motors und Signale TEV an das Tankentlüftungsventil des Fahrzeugs ausgegeben.
In der Zeichnung sind die nicht zu der Motorsteuerung 1 gehörenden Fahrzeugs- und
Motorbestandteile nicht dargestellt, ebenso nicht der interne Aufbau der verwendeten
Prozessoren, da sie den Handbüchern des Herstellers entnommen werden können. Von den
Eingangs- und Ausgangsleitungen sind nur einige wenige stellvertretend für die tatsächlich
vorhandenen Leitungen dargestellt.
[0010] Eine Leitung 14 bildet eine serielle Schnittstelle des Rechenteils 2 und über einen
Bus 15 ist dieser mit zwei Speicherbausteinen, einem RAM 16 und einem EPROM 17, verbunden.
[0011] Die Aufgabe des Rechenteils in 2 ist es, die - entweder direkt oder über den Echtzeitteil
3 - empfangenen Meßdaten zu erfassen und auszuwerten und darauf basierend Steuersignale
für die Zündung, die Einspritzung usw. zu berechnen und über den Echtzeitteil 3 an
die entsprechenden Aktoren auszugeben. Um die Arbeiten mit der erforderlichen Genauigkeit
und Schnelligkeit erledigen zu können, wird für die Motorsteuerung ein Betriebssystem
eingesetzt, das wie nachfolgend beschrieben ausgebildet ist.
[0012] Durch das Betriebssystem sind folgende, in abgestufter Priorität abzuarbeitende Gruppen
von Arbeitsabläufen festgelegt:
- Anforderungen von Unterbrechungen (Interrupts),
- Zeitverwaltungsaufträge und
- Aktivierung von Arbeitsabläufen.
[0013] Dabei ergeben sich fünf sog. Prioritätsebenen, d.h. eine Unterteilung der Arbeitsabläufe
in folgende Prioritäts- oder Vorrangstufen für die zu erledigenden Arbeiten oder Tasks,
und zwar in absteigender Reihenfolge:
- Interrupts (angeforderte Unterbrechungen)
- Überprüfung auf abgearbeitete (oder abgelaufene) kurze Zeitaufträge ZV_KURZ
- Synchrontasks (Aktivierung von synchronen Arbeitsabläufen)
- Überprüfung auf abgearbeitete (oder abgelaufene) lange Zeitaufträge ZV_LANG, und
- Asynchrontasks (Aktivierung von asynchronen Arbeitsabläufen)
In dem Rechenteil 2 werden vier Quellen für Interrupts benutzt:
- externer Interrupt EXTINT
- HSO-Interrupt
- HSI-Interrupt
- Interrupt für die serielle Schnittstelle.
[0014] Der über die Leitung 6 zu dem Rechenteil 2 gelangende externe Interrupt EXTINT wird
von dem Echtzeitteil 3 ausgesendet. Sobald sich der Echtzeitteil 2 auf die Bewegung
einer Zahnscheibe, die an der Kurbelwelle befestigt ist, synchronisiert hat, wird
jedes Kurbelwellen-Segment, d.h. bei einem 6-Zylinder-Motor alle 120° KW(Kurbelwellenwinkel),
ein externer Interrupt EXTINT durchgeführt. Solange der Echtzeitteil 2 noch nicht
synchronisiert ist, wird ein EXTINT bei jedem Zahn der Kurbelwellen-Scheibe, d.h.
alle 6° Kurbelwellendrehung, aktiviert. Dieser Interrupt oder Unterbrechung EXTINT
gibt den Anstoß für einen Berechnungszyklus der Daten für jeweils einen Zylinder.
[0015] HSO-Interrupts werden benutzt, um pulsweitenmodulierte Steuersignale für das Tankentlüftungsventil
TEV, den Leerlauffüllungssteller LLFS und den Drosselklappen-Istwert DKI zu erzeugen.
Zusätzlich wird in einem Zeitraster von 10 ms eine Anforderung für kurze Zeitaufträge
ZV_KURZ ausgegeben.
[0016] Der HSI-Interrupt wird für die Auswertung des Tachosignals des Kraftfahrzeugs benutzt.
Bei dem vorstehend genannten Mikroprozessor 80C196KB wird mit HSI/O (high speed input/output)
ein Anschluß für die schnellen Datenein- und - ausgabe bezeichnet.
[0017] Die Interrupts für die serielle Schnittstelle dienen dazu, das Senden und Empfangen
von Daten zu steuern, die mit externen Entwicklungs- und Anpassungs-, Meß- und Testgeräten
ausgetauscht werden.
[0018] Die Zeitverwaltung für kurze Zeitaufträge wird wie folgt durchgeführt. Sobald eine
Aufgabe oder Task abgearbeitet ist, wird überprüft, ob eine Anforderung für einen
kurzen Zeitauftrag ZV_KURZ vorliegt. Ist dies der Fall, so wird die Anforderung aktiviert.
Als Aufgabe oder Task wird hier ein Programmteil bezeichnet, der aktiviert wird und
nach dessen Abarbeitung wieder in das Betriebssystem zurückgesprungen wird.
[0019] Die Zeitverwaltung für kurze Zeitaufträge führt folgende Aufgaben durch:
- Setzen einer Anforderung für eine Zeitverwaltung für lange Zeitaufträge ZV_LANG.
- Inkrementieren eines als interne Systemuhr dienenden Zählers AKZEIT.
- Verwaltung von Zeitaufträgen für kurze Zeiten (10 ms). Hierbei können vorgegebene
Funktionen abgearbeitet, z.B. AD-Wandlungen gestartet, Eingangssignale überprüft,
Synchrontasks oder Asynchrontasks usw. eingetragen werden.
- Aktivierung einer Diagnosekommunikation im Bedarfsfall.
[0020] Die Synchrontasks werden folgendermaßen verwaltet oder abgearbeitet. Im RAM-Speicher
16 ist eine Liste 20 vorgesehen - abgekürzt BERLST_SYNC - , in der die Anfangsadressen
der zu aktivierenden Tasks eingetragen werden. In dem vorliegenden Ausführungsbeispiel
ist diese Liste als Ringspeicher aufgebaut und faßt bis zu 32 Einträgen. Für die Liste
gibt es zwei Zeiger, einen sog. Eintragszeiger BERLST_E_ZEIG und einen Bearbeitungszeiger
BERLST_B_ZEIG. Der Eintragszeiger markiert die Stelle in der Liste, in der die nächste
Taskadresse eingetragen wird, der Bearbeitungszeiger zeigt auf die Anfangsadresse
der Task, die gerade abgearbeitet oder als nächste aufgerufen wird.
[0021] Wird eine Synchrontask eingetragen, so wird eine Statusmarke "Synchronanforderung"
gesetzt und die Anfangsadresse in die Stelle der Synchronliste 20 eingetragen, auf
die der Eintragszeiger gerade zeigt. Anschließend wird der Eintragszeiger erhöht,
und dabei auf den zulässigen Maximalwert - hier 32 - begrenzt.
[0022] Der Aufruf einer Task erfolgt, indem sich der Rechenteil 2 den Inhalt der Task-Liste
- d.h. die Einsprungadresse der Task - lädt, auf die der Bearbeitungszeiger verweist,
und auf die geladene Adresse springt.
[0023] Ist eine Task abgearbeitet worden, so wird der Bearbeitungszeiger erhöht, begrenzt
und mit dem Eintragszeiger verglichen. Ist der Wert beider Zeiger gleich, bedeutet
dies, daß die Aufträge in der Synchronliste abgearbeitet sind. Die Statusmarke "Synchronanforderung
vorhanden" wird zurückgesetzt.
[0024] Synchrontasks sind hier diejenigen Programmteile, die in starrer zeitlicher Bindung
an die Drehung der Kurbelwelle abgearbeitet werden müssen. Eine Synchrontask kann
nur aus dem Synchronteil des Betriebssystems aus aufgerufen werden, ein Eintrag in
die Synchronliste kann jedoch von jeder Prioritätsebene aus erfolgen.
[0025] Bei der Verwaltung der als Ringspeicher ausgeführten Bearbeitungsliste 20 müssen
die Zeiger, um zu vermeiden, daß sie durch ein ständiges Erhöhen über das Listenende
hinauslaufen, begrenzt werden. Hierbei wird nach jeder Addition überprüft, ob der
jeweilige Zeiger über das Ende der Liste hinausgelaufen ist. Ist dies der Fall, so
wird der Zeiger wieder auf den Anfang der Task-Liste gesetzt.
[0026] Eine Synchrontask wird mit einem Makrobefehl"Anfangsadresse Synchrontask" START_TASK_SYNC
eingetragen.
[0027] Die Rücksprungadresse aus einer Synchrontask in das Betriebssystem lautet immer VON_SYNC.
[0028] Die Zeitverwaltung für lange Zeitaufträge wird folgendermaßen durchgeführt. Nach
Abarbeitung der Zeitverwaltung für kurze Zeitaufträge und sämtlicher momentan eingetragener
Synchrontasks wird die Zeitverwaltung ZV_LANG aktiviert, sofern eine Anforderung vorhanden
ist. Alle 10 ms wird durch die ZV_KURZ eine Anforderung für eine Zeitverwaltung ZV_LANG
eingetragen.
[0029] Mit niedrigster Priorität werden bei der vorliegenden Motorsteuerung die Asynchrontasks
abgearbeitet, d.h., sie werden erst aktiviert, wenn keine Anforderungen von ZV_KURZ,
Synchrontasks und ZV_LANG vorhanden sind.
[0030] Die Funktionsweise beim Abarbeiten der Asynchrontasks ist gleich der bei den Synchrontasks,
es existiert jedoch eine eigene Liste 23 (Figur 3) für die Anfangsadressen der Asynchrontasks
- die sog. Bereitliste für Asynchrontasks BERLST_ASY - mit eigenen Bearbeitungszeiger
ASYNC_B und Eintragszeiger ASYNC_E.
[0031] Ein Eintrag einer Asynchrontask kann aus jeder Prioritätsebene erfolgen und wird
mit dem Makrobefehl "Anfangsadresse Asynchrontask" START_TASK ausgeführt.
[0032] Ein Rücksprung aus der Asynchrontask in das Betriebssystem muß immer auf die Adresse
VON_ASYNC erfolgen.
[0033] Die Tasks können sich jeweils in einem von drei Zuständen befinden: "RECHNEND", wenn
das Programm in dem Rechenteil 2 abgearbeitet wird; "BEREIT" oder "WARTEND", wenn
das Programm angefordert ist, aber noch nicht ausgeführt wird, und "SCHLAFEND" oder
"NICHT AKTIV", wenn keiner der ersten beiden Zustände vorliegt.
[0034] Die verschiedenen Tasks und Zeitverwaltungen können jederzeit aber nur durch Interrupts
unterbrochen werden. Es wird dann der Interrupt-Auftrag abgearbeitet und anschließend
wieder die Abarbeitung der begonnenen Task oder Zeitverwaltung fortgesetzt. Für die
Tasks und Zeitverwaltungen gilt: ein Auftrag mit höherer Priorität kann erst nach
Abarbeitung des momentanen Auftrages - auch wenn dieser eine niedrigere Priorität
hat - aktiviert werden.
[0035] Die maximale Zeit für die Abarbeitung von Tasks einschließlich der Zeit für die möglicherweise
während der Abarbeitung auftretenden Interrupts muß kleiner als 10 ms sein, damit
die Zeitverwaltung ZV_LANG fehlerfrei arbeiten kann.
[0036] Je kürzer die einzelnen Tasks sind, desto höhere Echtzeit-Anforderungen werden von
dem Betriebssystem erfüllt, d.h., desto schneller kann es auf bestimmte kurbelwellensynchrone
oder Zeitsynchrone Ereignisse reagieren.
[0037] Das vorstehend beschriebene Betriebssystem des Rechenteils 2 der Motorsteuerung 1
ist in Figur 4 in Form eines Struktogramms dargestellt. Das Symbol "<>" bedeutet hierin
"nicht gleich" oder "ungleich"
[0038] Eine Anfrage 26, ob der Bearbeitungszeiger der Synchronliste ungleich dem Eintragszeiger
der Synchronliste ist, entspricht der Abfrage, ob eine Anforderung für eine Synchrontask
vorliegt. Eine Anfrage 27, ob der Bearbeitungszeiger der Asynchronliste ungleich dem
(zugehörigen) Eintragszeiger ist, entspricht der Abfrage, ob eine Anforderung für
eine Synchrontask vorliegt. Der Inhalt der anderen Kästchen des Struktogramms 25 ist,
auch im Hinblick auf die vorstehende Beschreibung, selbsterklärend.
[0039] Zusammengefaßt sei die Erfindung wie folgt beschrieben:
Eine Steuerung 1 für einen Kraftfahrzeugmotor enthält einen Rechenteil 2, durch den
Meßwerte erfaßt und ausgewertet werden, die Betriebsgrößen des Motors wiedergeben,
und Steuersignale für Stellglieder erzeugt werden, die auf den Motorbetrieb einwirken
(Zündung, Einspritzung usw.). Ein Betriebssystem steuert die Erfassung und Auswertung
der Meßwerte und die Erzeugung von Steuersignalen derart, daß sich kurze Wechselzeiten
für die abzuarbeitenden Programme ergeben. Durch das Betriebssystem werden folgende,
in abgestufter Priorität abzuarbeitende Gruppen von Arbeitsabläufen festgelegt: Anforderung
von Unterbrechungen (Interrupts), Zeitverwaltungsaufträge und Aktivierung von Arbeitsabläufen.
1. Motorsteuerung (1) mit einem Rechenteil (2), durch den Betriebsgrößen des Motors wiedergebende
Meßwerte erfaßt und ausgewertet und Steuersignale für auf den Motorbetrieb ein wirkende
Stellglieder erzeugt werden, und mit einem die Erfassung und Auswertung und die Erzeugung
von Steuersignalen steuernden Betriebssystem, unter welchem Programme unterschiedlicher
Priorität abgearbeitet werden,
dadurch gekennzeichnet,
daß durch das Betriebssystem folgende, in abgestufter Priorität abzuarbeitende Gruppen
von Arbeitsabläufen festgelegt sind:
- Anforderungen von Unterbrechungen,
- Zeitverwaltungsaufträge und
- Aktivierung von Arbeitsabläufen.
2. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß die Arbeitsabläufe in
folgende, in absteigender Reihenfolge abzuarbeitende Prioritätsstufen
unterteilt sind:
- Anforderung von Unterbrechungen,
- Überprüfung auf abgearbeitete kurze Zeitaufträge,
- Aktivierung von synchronen Arbeitsabläufen,
- Überprüfung auf abgearbeitete lange Zeitaufträge und
- Aktivierung von asynchronen Arbeitsabläufen.
3. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß folgende Quellen für Anforderungen
von Unterbrechungen (Interrupts) vorhanden sind:
- externe Interrupts (EXTIND);
- HSO-Interrupts,
- HSI-Interrupts und
- Interrupts für serielle Schnittstelle.
4. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß die Zeitverwaltungsaufträge
eine Überprüfung auf abgearbeitete kurze Zeitaufträge und eine Überprüfung auf abgearbeitete
lange Zeitaufträge einschließen.
5. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß die Aktivierung von Arbeitsabläufen
eine Aktivierung von synchronen und asynchronen Arbeitsabläufen einschließt.
6. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß von dem Rechenteil (2)
Unterbrechungsanforderungen (HSO-Interrupts) ausgegeben werden, aufgrund derer Steuersignale
für die Stellglieder erzeugt werden.
7. Motorsteuerung nach Anspruch 6, dadurch gekennzeichnet, daß durch die Steuersignale
der Leerlauffüllungsssteller des Motors und gfs. das Tankentlüftungsventil des Kraftfahrzeugs
gesteuert werden.
8. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß von dem Rechenteil (2)
Tachosignale empfangen und aufgrund dieser Signale Unterbrechungsanforderungen(HSI-Interrupts)
ausgelöst werden, die zur Ermittlung der Geschwindigkeit des Kraftfahrzeugs benutzt
werden.
9. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß von dem Rechenteil (2)
Unterbrechungsanforderungen ausgewertet werden, die über eine Diagnoseschnittstelle
von externen Geräten empfangen werden und durch die eine Kommunikation mit diesen
externen Geräten gesteuert wird.
10. Motorsteuerung nach Anspruch 1, dadurch gekennzeichnet, daß sie einen Speicherbereich
(RAM 16) aufweist, in dem eine erste Ringspeicherliste (20), in der die Anfangsadressen
der zu aktivierenden synchronen Arbeitsabläufe gespeichert werden, und eine zweite
Ringspeicherliste (23), in der die Anfangsadressen der zu aktivierenden asynchronen
Arbeitsabläufe gespeichert werden, enthalten sind.