DE102009017604A1 - Vorrichtung zur Steuerung eines Motors unter Verwendung eines Kurbelwellensignals und eines Nockenwellensignals - Google Patents

Vorrichtung zur Steuerung eines Motors unter Verwendung eines Kurbelwellensignals und eines Nockenwellensignals Download PDF

Info

Publication number
DE102009017604A1
DE102009017604A1 DE102009017604A DE102009017604A DE102009017604A1 DE 102009017604 A1 DE102009017604 A1 DE 102009017604A1 DE 102009017604 A DE102009017604 A DE 102009017604A DE 102009017604 A DE102009017604 A DE 102009017604A DE 102009017604 A1 DE102009017604 A1 DE 102009017604A1
Authority
DE
Germany
Prior art keywords
signal
crank
input
edge
angle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102009017604A
Other languages
English (en)
Other versions
DE102009017604B4 (de
Inventor
Haruhiko Kariya-shi Kondo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Publication of DE102009017604A1 publication Critical patent/DE102009017604A1/de
Application granted granted Critical
Publication of DE102009017604B4 publication Critical patent/DE102009017604B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/22Safety or indicating devices for abnormal conditions
    • F02D41/221Safety or indicating devices for abnormal conditions relating to the failure of actuators or electrically driven elements
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/009Electrical control of supply of combustible mixture or its constituents using means for generating position or synchronisation signals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Combined Controls Of Internal Combustion Engines (AREA)

Abstract

In einer Vorrichtung zur Steuerung eines Motors schaltet eine Eingabeschalteinheit ein Eingabesignal zur Eingabe über einen Eingabepfad von einem Kurbelsignal auf ein Nockensignal, wenn bestimmt wird, dass das Kurbelsignal anormal ist. Eine Vorgangssignalerzeugungseinheit erzeugt ein Kurbeleingabevorgangssignal, wenn von einer Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelsignal anormal ist. Das Kurbeleingabevorgangssignal hat einen Pegel, der sich wiederholt in einer bestimmten Richtung ändert. Jede Pegeländerung des Kurbeleingabevorgangssignals wird in einer entsprechenden Pegeländerung des Kurbelsignals synchronisiert. Eine Überwachungseinheit überwacht eine Pegeländerung des Kurbeleingabevorgangssignals, wenn von der Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelsignal anormal ist.

Description

  • HINTERGRUND DER ERFINDUNG
  • Querverweis auf zugehörige Anmeldung
  • Diese Anmeldung basiert auf der japanischen Patentanmeldung 2008-107854 , angemeldet am 17. April 20908, und beansprucht deren Priorität; auf den dortigen Offenbarungsgehalt wird vollinhaltlich Bezug genommen.
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Vorrichtungen zur Steuerung eines Motors, der beispielsweise in ein Fahrzeug eingebaut ist, unter Verwendung eines Paars aus Kurbelwellensignal und Nockenwellensignal.
  • Beschreibung des Standes der Technik
  • Motorsteuereinheiten für Fahrzeuge verwenden ein Kurbelwellensignal, dessen Signalpegel sich in einer bestimmten gleichen Richtung bei gleichen Drehwinkeln (regulären Kurbelwellenwinkeln) einer Motorkurbelwelle ändert. Insbesondere wird das Kurbelwellensignal von einem Kurbelwellensensor gemessen, der mit einer Motorsteuereinheit verbunden ist, und das gemessene Kurbelwellensignal wird über einen Eingabepfad der Motorsteuereinheit eingegeben, die in einem Hauptsteuermodus arbeitet.
  • Insbesondere arbeitet die Motorsteuereinheit dahingehend, eine Drehposition (Kurbelwellenposition) der Kurbelwelle basierend auf dem Kurbelwellensignal in dem Hauptsteuermodus zu erkennen.
  • Jedes Mai, wenn bestimmt wird, dass die identifizierte Rotationsposition der Kurbelwelle mit einer gewünschten Rotationsposition übereinstimmt, arbeitet die Motor steuereinheit dahingehend, Vorgänge zu erzeugen, welche der Motorsteuerung zugeordnet sind, beispielsweise Brennstoffeinspritzung oder Zündung im Hauptsteuermodus.
  • Wenn bei einer solchen Motorsteuereinheit, die zur Motorsteuerung das Kurbelwellensignal verwendet, das Kurbelwellensignal nicht auf normale Weise der Motorsteuereinheit eingegeben werden kann, da beispielsweise ein Bruch in Kabeln vorliegt, welche den Kurbelwellensensor und die Motorsteuereinheit verbinden, kann die Motorsteuereinheit die Drehposition der Kurbelwelle nicht identifizieren. Dies kann bewirken, dass die Motorsteuereinheit eine passende Motorsteuerung nicht mehr durchgängig durchführen kann.
  • Um dieses Problem anzugehen, ist die Motorsteuereinheit dahingehend ausgelegt, dass, wenn das Kurbelwellensignal nicht normal der Motorsteuereinheit eingegeben werden kann, diese dann in einem Untersteuermodus arbeitet, wo ein Nockenwellensignal verwendet wird, das von einem Nockenwellensensor gemessen wird und über den Eingabepfad eingegeben wird. Das Nockenwellensignal hat einen Wert, der sich in eine bestimmte gleiche Richtung zu gleichmäßigen Drehwinkeln einer Motornockenwelle ändert.
  • Dies erlaubt der Motorsteuereinheit, durchgängig Vorgänge zu erzeugen, die der Untersteuerung zugeordnet sind, und zwar basierend auf dem Nockenwellensignal während des Untersteuermodus.
  • Insbesondere wenn das Auftreten eines Fehlers im Kurbelwellensignal erkannt wird, vermag die Motorsteuereinheit ihren Betrieb von dem Hauptsteuermodus unter Verwendung des Kurbelwellensignals zum Untersteuermodus unter Verwendung des Nockenwellensignals umzuschalten, um die Motorsteuerung durchgängig durchzuführen. Die Motorsteuerung der Motorsteuereinheit in dem Untersteuermodus erlaubt, dass das Fahrzeug in einem Notbetrieb gefahren werden kann, um beispielsweise langsam an einen sicheren Ort gebracht werden zu können. Eine solche Motorsteuereinheit ist in der US-Patentanmeldungsveröffentlichung Nr. 20070175272 entsprechend der japanischen Patentanmeldungsveröffentlichung Nr. 2007-205242 beschrieben.
  • Eine solche Motorsteuereinheit überwacht ein Änderungsmuster des Pegels vom Kurbelwellensignal, das über den Eingabepfad eingegeben wird, und bestimmt, dass das Kurbelwellensignal anormal eingegeben wird, wenn:
    das Änderungsmuster im Pegel des Kurbelwellensignals sich von einem richtigen Änderungsmuster im Pegel des Kurbelwellensignals unterscheidet; und
    der Pegel der Differenz einen erlaubbaren Wert übersteigt.
  • Nach der Anomalieerkennung und dem Umschalten vom Kurbelwellensignal auf das Nockenwellensignal kann die Motorsteuereinheit nicht mehr richtig erkennen, dass ein Fehler im Kurbelwellensignal auftritt. Dies deshalb, als sich das Änderungsmuster des Nockenwellensignals von demjenigen des Kurbelwellensignals unterscheidet.
  • Es sei festzuhalten, dass, nachdem ein Fehler im Kurbelwellensignal aufgetreten ist, die Motorsteuereinheit das Fahrzeug im Notbetrieb betreiben muss. Nach dem Auftreten einer Anomalie im Kurbelwellensignal ist die Motorsteuereinheit für gewöhnlich so konfiguriert, dass sie ein über den Eingabepfad einzugebendes Signal vom Kurbelwellensignal auf das Nockenwellensignal umschaltet und gleichzeitig die Überwachung eines Signals stoppt, welches über den Eingabepfad eingegeben wird.
  • Wenn jedoch, nachdem eine kurzzeitige Anomalie im Kurbelwellensignal aufgetreten ist, dann das Kurbelwellensignal auf Normal zurückgeht, kann die Motorsteuereinheit nicht das Änderungsmuster im Pegel des Kurbelwellensignals überwachen, da das Nockenwellensignal über den Eingabepfad der Motorsteuereinheit eingegeben wird. Es ist somit für die Motorsteuereinheit wünschenswert, überwachen zu können, ob eine Anomalie im Kurbelwellensignal auftritt, nachdem das Nockenwellensignal zur Eingabe in die Motorsteuereinheit über den Eingabepfad vom Nockenwellensignal aus umgeschaltet wurde.
  • Dies deshalb, da, wenn das Kurbelwellensignal auf Normal zurückgeht, so dass ein der Motorsteuereinheit einzugebendes Signal wieder vom Nockenwellensignal auf das Kurbelwellensignal umgeschaltet werden könnte, es für die Motorsteuereinheit möglich wäre, ihren Betriebsmodus von dem Untersteuermodus wieder in den Hauptsteuermodus zurückzuführen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Angesichts hiervon ist es Aufgabe wenigstens eines Aspekts der vorliegenden Erfindung, Techniken bereitzustellen, um kontinuierlich zu überwachen, ob eine Anomalie in einem Kurbelwellensignal auftritt, selbst wenn ein einem Eingabepfad für eine Überwachungssteuerung eines Motors eingegebenes Signal vom Kurbelwellensignal auf ein Nockenwellensignal geändert wird.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist eine Vorrichtung zur Steuerung eines Motors mit einer Kurbelwelle und einer Nockenwelle geschaffen. Die Vorrichtung umfasst eine Eingabeeinheit, welche ein Kurbelwellensignal als Eingabesignal in einen Eingabepfad einzugeben vermag. Das Kurbelwellensignal hat einen Pegel, der sich wiederholt in einer bestimmten Richtung jedes Mal dann ändert, wenn die Kurbelwelle um einen ersten Einheitswinkel dreht. Die Vorrichtung enthält eine Multiplikationstakterzeugungseinheit, welche einen ersten Multiplikationstakt einschließlich eines Zugs von Taktimpulsen zu erzeugen vermag, dessen Taktzyklus bestimmt wird durch Division des Eingabesignals mit einer ersten Multiplikationszahl. Die Vorrichtung enthält eine Zähleinheit, welche synchron mit dem ersten Multiplikationstakt, der von der Multiplikationstakterzeugungseinheit erzeugt wird, einen Zählwert der Zähleinheit entsprechend einer Drehposition der Kurbelwelle zu zählen vermag. Die Vorrichtung enthält eine Vorgangserzeugungseinheit, welche wenigstens einen Vorgang zu erzeugen vermag, der der Steuerung des Motors zugeordnet ist, und zwar gemäß einer Kurbelwellendrehposition, die durch den Zählwert der Zähleinheit identifiziert ist. Die Vorrichtung enthält eine Überwachungseinheit, welche eine Pegeländerung des Eingabesignals zu überwachen vermag, das durch den Eingabepfad eingegeben wird. Die Vorrichtung erhält eine Anomaliebestimmungseinheit, die zu bestimmen vermag, ob das Kurbelwellensignal anormal ist, indem die überwachte Pegeländerung des Eingabesignals mit einer normalen Pegeländerung des Eingabesignals verglichen wird. Die Vorrichtung enthält eine Eingabeschalteinheit, welche das Eingabesignal zur Eingabe in den Eingabepfad vom Kurbelwellensignal auf ein Nockenwellensignal umzuschalten vermag, wenn bestimmt wird, dass das Kurbelwellensignal anormal ist. Das Nockenwellensignal hat einen Pegel, der sich wiederholt in einer bestimmten Richtung jedes Mal dann ändert, wenn die Nockenwelle um einen zweiten Einheitswinkel dreht. Die Vorrichtung enthält eine Vorgangssignalerzeugungseinheit, die ein Kurbelwelleneingabevorgangssignal zu erzeugen vermag, während durch die Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelwellensignal anormal ist. Das Kurbelwelleneingabevorgangssignal hat einen Pegel, der sich wiederholt in einer bestimmten Richtung ändert. Jede Pegeländerung des Kurbelwelleneingabevorgangssignals ist synchron mit einer entsprechenden Pegeländerung des Kurbelwellensignals. Die Überwachungseinheit vermag eine Pegeländerung des Kurbelwelleneingabevorgangssignals zu überwachen, wenn durch die Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelwellensignal anormal ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • Weitere Einzelheiten und Aspekte der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsformen unter Bezugnahme auf die beigefügte Zeichnung, in der:
  • 1 ein Blockdiagramm ist, das schematisch ein Beispiel des Aufbaus einer elektronischen Steuereinheit gemäß einer Ausführungsform der vorliegenden Erfindung zeigt, welche in ein Fahrzeug eingebaut ist;
  • 2 eine Signalwellenformdarstellung ist, welche schematisch ein Kurbelwellensignal, erste und zweite Nockenwellensignale und ein Nockenwellenflankensignal gemäß der Ausführungsform der vorliegenden Erfindung zeigt;
  • 3 ein Blockdiagramm ist, das schematisch ein Beispiel des Aufbaus einer Winkeltakterzeugungseinheit gemäß 1 zeigt;
  • 4 ein Zeitdiagramm ist, welches schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit bei einer Änderung eines Eingabesignals gemäß der Ausführungsform der Erfindung zeigt;
  • 5 ein Flussdiagramm ist, das schematisch eine Eingabesignaldiagnosetask zeigt, die von einer CPU von 1 durchzuführen ist;
  • 6 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit bei Änderungen des Eingabesignals gemäß der Ausführungsform der Erfindung zeigt;
  • 7 ein Flussdiagramm ist, das schematisch eine Eingabeschalttask darstellt, die von der CPU von 1 durchzuführen ist;
  • 8 ein Flussdiagramm ist, das schematisch eine Eingabedivisionstask zeigt, die von der CPU von 1 durchzuführen ist;
  • 9 ein Zeitdiagramm ist, welches schematisch Signalübergänge zeigt, die der Diagnosetask für das Kurbelwellensignal zugeordnet sind;
  • 10 ein Flussdiagramm ist, das schematisch eine modifizierte Eingabesignaldiagnosetask zur Durchführung durch die CPU von 1 zeigt;
  • 11 ein Flussdiagramm ist, das schematisch eine Kurbelwellenflankeninterrupttask darstellt, welche von der CPU von 1 durchzuführen ist;
  • 12 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit mit Änderungen des Eingabesignals während der Kurbelwellenflankeninterrupttask von 11 zeigt;
  • 13 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit mit Änderungen des Eingabesignals während der Kurbelwellenflankeninterrupttask von 11 zeigt;
  • 14 ein Flussdiagramm ist, welches schematisch eine Nockenwellenflankeninterrupttask zur Durchführung durch die CPU von 1 zeigt;
  • 15 eine Tabelle ist, die schematisch Entsprechungen zwischen individuellen Anfangswerten jeweiliger Zähler von Winkeltaktmodulen von 3 und individuellen aktiven Flanken in dem Nockenwellenflankensignal in Tabellenformat gemäß der Ausführungsform zeigt;
  • 16 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit mit Änderungen des Eingabesignals während der Nockenwellenflankeninterrupttask von 14 zeigt;
  • 17 ein Flussdiagramm ist, das schematisch eine Durchgangswinkelinterrupttask zur Durchführung durch die CPU von 1 zeigt;
  • 18 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit mit Änderungen des Eingabesignals während der Nockenwellenflankeninterrupttask von 14 zeigt; und
  • 19 ein Zeitdiagramm ist, das schematisch Änderungen von Parametern der Winkeltakterzeugungseinheit mit Änderungen des Eingabesignals während der Nockenwellenflankeninterrupttask von 14 zeigt.
  • GENAUE BESCHREIBUNG EINER AUSFÜHRUNGSFORM DER ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung wird nachfolgend unter Bezugnahme auf die beigefügte Zeichnung beschrieben. In der Ausführungsform wird die Erfindung bei einer elektronischen Steuereinheit (ECU) 1 angewendet, und die ECU 1 dient als eine Vorrichtung zur Steuerung einer Viertakt-Brennkraftmaschine E, die in ein Fahrzeug eingebaut ist und beispielsweise erste (#1) bis sechste (#6) Zylinder hat.
  • 1 ist ein Blockdiagramm, das schematisch ein Beispiel des Aufbaus der ECU 1 gemäß der Ausführungsform der vorliegenden Erfindung zeigt, welche in das Fahrzeug eingebaut ist.
  • Bezug nehmend auf 1 ist die ECU 1 gemäß der Ausführungsform ausgestattet mit einer Eingabeschaltung 2, einer Ausgabeschaltung 3 und einem Mikrocomputer 4. Die Eingabe- und Ausgabeschaltungen 2 und 3 sind elektrisch mit dem Mikrocomputer 4 verbunden.
  • Die Eingabeschaltung 2 ist elektrisch mit einem Kurbelwellensensor 51, einem ersten Nockenwellensensor 52, einem zweiten Nockenwellensensor 53 und anderen Sensoren verbunden.
  • Gemäß 1 enthält der Kurbelwellensensor 51 beispielsweise eine Impulsgeberscheibe 51a mit einer Mehrzahl von Zähnen 51b, die im Wesentlichen in gleichen Abständen von beispielsweise 6 Grad entlang des Umfangs der Scheibe 51a beabstandet sind. Die Impulsgeberscheibe 51a ist koaxial auf einer Kurbelwelle CS angeordnet, die als Motorhauptwelle zur Lieferung einer Drehbewegung dient, die von den Hin- und Herbewegungen von Kolben und Kolbenstangen der Zylinder gewonnen wird.
  • Die Impulsgeberscheibe 51a hat beispielsweise eine Zahnlücke 51c, die gebildet ist aus beispielsweise k benachbarten fehlenden Zähnen.
  • Der Kurbelwellensensor 51 enthält beispielsweise einen Aufnehmer 51d, der beispielsweise dahingehend arbeitet, die Zähne 51b der Impulsgeberscheibe 51a an der Kurbelwelle CS magnetisch zu erkennen, wenn diese dreht, um ein Kurbelwellensignal basierend auf dem Erkennungsergebnis zu erzeugen. Das Kurbelwellensignal wird der Eingabeschaltung 2 eingegeben.
  • Wenn die Drehposition der Kurbelwelle CS bei der Ausführungsform in einen bestimmten Drehbereich reicht, so dass die Zahnlücke 51c vorderhalb des Aufnehmers 51d liegt, um hierdurch erkannt zu werden, wird der Drehbereich der Kurbelwelle CS nachfolgend als „spezifizierter Bereich” bezeichnet.
  • Da die Zahnlücke 51c einmal pro Drehwinkel (Kurbelwellenwinkel) der Kurbelwelle CS von 360 Grad (360° CA) erscheint, erreicht die Kurbelwelle CS den spezifizierten Bereich bei jedem Kurbelwellenwinkel von 360 Grad. Mit anderen Worten, die Kurbel welle CS erreicht den spezifizierten Bereich zweimal pro Motorzyklus (Kurbelwellenwinkel von 720 Grad).
  • Der erste Nockenwellensensor 52 arbeitet dahingehend, beispielsweise auf magnetische Weise die Drehpositionen einer ersten Nockenwelle CM1 zu erkennen, wenn diese beispielsweise mit der halben Drehzahl der Kurbelwelle CS dreht, um ein erstes Nockensignal basierend auf dem Erkennungsergebnis zu erzeugen. Das erste Nockensignal wird der Eingabeschaltung 2 eingegeben.
  • Auf ähnliche Weise arbeitet der zweite Nockenwellensensor dahingehend, beispielsweise auf magnetische Weise die Drehpositionen einer zweiten Nockenwelle CM2 zu erkennen, wenn diese beispielsweise mit der halben Drehzahl der Kurbelwelle CS dreht, um basierend auf dem Erkennungsergebnis ein zweites Nockensignal zu erzeugen. Das zweite Nockensignal wird dem Eingabeschaltkreis 2 eingegeben.
  • Genauer gesagt, die ersten und zweiten Nockenwellen CM1 und CM2 werden über Getriebe, Riemen und/oder eine Kette von der Kurbelwelle CS angetrieben und enthalten eine Reihe von Nocken zum entsprechenden Öffnen und Schließen von Ansaug- und Ausstoßventilen.
  • Das Kurbelsignal hat einen Pegel, der sich wiederholt in zeitartigen Impulsen bei einer Drehung der Kurbelwelle CS ändert. Auf ähnliche Weise hat das erste Nockensignal einen Pegel, der sich wiederholt in zeitartigen Impulsen bei einer Drehung der ersten Nockenwelle CM1 ändert, und das zweite Nockensignal hat einen Pegel, der sich wiederholt in zeitartigen Impulsen bei einer Drehung der zweiten Nockenwelle CM2 ändert.
  • Die Ausgestaltungen des Kurbel(wellen)signals und der ersten und zweiten Nocken(wellen)signale werden im Detail nachfolgend unter Bezug auf 2 beschrieben.
  • Wie in 2 gezeigt, ändert sich der Pegel des Kurbelsignals in einer bestimmten gleichen Richtung in einen Impuls jedes Mal dann, wenn die Kurbelwelle CS (die Impulsgeberscheibe 51a) sich um einen Winkelteil Δθ Grad Kurbelwellenwinkel (CA) dreht, wobei die Drehposition der Kurbelwelle CS nicht innerhalb des spezifizierten Bereichs liegt. Bei der Ausführungsform ist die bestimmte gleiche Richtung in einer Richtung von hoch nach niedrig festgelegt, und der Winkelteil Δθ Grad Kurbelwellenwinkel ist auf 6 Grad Kurbelwellenwinkel festgelegt.
  • Wenn andererseits die Drehposition der Kurbelwelle CS innerhalb des spezifizierten Bereichs liegt, ist ein Drehwinkel der Kurbelwelle CS, der erlaubt, dass sich der Pegel des Kurbelsignals in gleiche Richtung (von noch nach niedrig) in einem Puls ändert, k-mal größer als der Winkelteil Δθ. Bei der Ausführungsform ist k auf 3 gesetzt.
  • Mit anderen Worten, während die Drehposition der Kurbelwelle CS innerhalb eines Bereichs mit Ausnahme des spezifizierten Bereichs liegt, erscheint eine aktive Flanke in gleicher Richtung, beispielsweise eine fallende Flanke, der Übergangspegeländerung des Kurbelsignals in einem Puls jedes Mal dann, wenn die Kurbelwelle CS um den Winkelteil Δθ dreht.
  • Wenn andererseits die Drehposition der Kurbelwelle CS innerhalb des spezifizierten Bereichs liegt, erscheinen die in gleicher Richtung liegenden k-1 aktiven Flanken der Übergangspegeländerung des Kurbelsignals nicht pro Winkelteil Δθ, obgleich die Kurbelwelle CS kontinuierlich dreht.
  • Es sei festzuhalten, dass die in gleicher Richtung verlaufenden aktiven Flanken, beispielsweise die fallenden Flanken oder steigenden Flanken, die in einem Signal erscheinen, dessen Pegel sich übergehend wiederholt in einem zeitartigen Impulssignal ändert, nachfolgend einfach als „aktive Flanken” bezeichnet werden.
  • Dies erlaubt, dass ein Zeitintervall zwischen zeitlich benachbarten aktiven Flanken des Kurbelsignals, während die Drehposition der Kurbelwelle CS innerhalb des spezifizierten Bereichs liegt, k-mal größer als ein normales Zeitintervall ist. Das normale Zeitintervall ist ein Intervall zwischen zeitlich benachbarten aktiven Flanken des Kurbelsignals, während die Drehposition der Kurbelwelle CS innerhalb eines Bereichs mit Ausnahme des spezifizierten Bereichs liegt.
  • Es sei festzuhalten, dass ein Abschnitt des Kurbelsignals entsprechend des spezifizierten Bereichs, mit anderen Worten, das k-fache Zeitintervall zwischen zeitlich benachbarten aktiven Flanken des Kurbelsignals, im Vergleich zu dem normalen Zeitintervall nachfolgend als Pulsfehlabschnitt M bezeichnet wird.
  • Da der Zahnlückenabschnitt 51c einmal pro Drehwinkel (Kurbelwellenwinkel) der Kurbelwelle CS von 360 Grad (360°CA) auftaucht, erscheint der Pulsfehlabschnitt M in dem Kurbelsignal auch einmal pro Kurbelwellenwinkel von 360 Grad.
  • In dem Kurbelsignal gemäß der Ausführungsform entspricht eine aktive Flanke, die jedes Mal dann erscheint, wenn die Kurbelwelle CS um einen bestimmten Kurbelwinkel von beispielsweise 120 Grad CA dreht, im TDC (Top Dead Center = oberer Totpunkt) eines jeden der einzelnen Zylinder #1, #5, #3, #6, #2 und #4 in dieser Reihenfolge in 2. Der bestimmte Kurbelwinkel von 120 Grad kann gesetzt werden, indem der Kurbelwinkel von 720 Grad entsprechend einem Motorzyklus durch die Anzahl von Zylindern, also beispielsweise 6, dividiert wird.
  • Eine Referenzposition des Kurbelsignals wird so gesetzt, dass sie einer aktiven Flanke bei einem bestimmten Kurbelwinkel von 18 Grad vor der aktiven Flanke entsprechend dem TDS des ersten Zylinders #1 entspricht. Die Referenzposition des Kurbelsignals ist in 2 mit „0” bezeichnet.
  • Wie oben beschrieben, erscheint der Pulsfehlabschnitt im Kurbelsignal einmal pro Kurbelwinkel von 360 Grad. Mit anderen Worten, die Pulsfehlabschnitte M werden in erste Pulsfehlabschnitte M1 und zweite Pulsfehlabschnitte M2 unterteilt.
  • In dem Kurbelsignal beginnt der erste Pulsfehlabschnitt M1 von einer ersten aktiven Flanke des Kurbelwinkels von 108 Grad, nachdem die aktive Flanke in jedem Motorzyklus an der Referenzposition erschienen ist. Der zweite Pulsfehlabschnitt M2 beginnt von einer zweiten aktiven Flanke des Kurbelwinkels von 360 Grad nach der ersten aktiven Flanke in jedem Motorzyklus.
  • Genauer gesagt, das k-fache Zeitintervall im Vergleich zum normalen Zeitintervall nach der ersten aktiven Flanke entspricht dem ersten Pulsfehlabschnitt M1 und das k-fache Zeitintervall im Vergleich zum normalen Zeitintervall nach der zweiten aktiven Flanke entspricht dem zweiten Pulsfehlabschnitt M2.
  • Das erste Nockensignal ist so konfiguriert, dass es:
    sich von einem niedrigen Pegel zu einem hohen Pegel ändert, wenn die erste Nockenwelle CM1 an einer ersten Drehposition R1 des Kurbelwinkels von 105 Grad vor der Referenzposition liegt;
    den hohen Pegel während einer ersten Periode entsprechend dem Kurbelwinkel von 240 Grad vom Zeitpunkt des Hochgehens hält;
    sich vom hohen Pegel zum niedrigen Pegel an einer zweiten Drehposition R2 unmittelbar nach Verstreichen der ersten Periode ändert;
    den niedrigen Pegel während einer zweiten Periode entsprechend dem Kurbelwinkel von 240 Grad vom Zeitpunkt des Heruntergehens hält;
    sich vom niedrigen Pegel zum hohen Pegel an einer dritten Drehposition R3 unmittelbar nach Verstreichen der zweiten Periode ändert;
    den hohen Pegel während einer dritten Periode entsprechend dem Kurbelwinkel von 210 Grad vom Zeitpunkt des Hochgehens hält;
    sich vom hohen Pegel zum niedrigen Pegel an einer vierten Drehposition R4 unmittelbar nach Verstreichen der dritten Periode ändert;
    den niedrigen Pegel während einer vierten Periode entsprechend dem Kurbelwinkel von 30 Grad vom Zeitpunkt des Heruntergehens hält, um zur ersten Drehposition R1 zurückzukehren, wobei die Serie von Änderungen in jedem Motorzyklus (Kurbelwinkel von 720 Grad) wiederholt wird.
  • Das zweite Nockensignal ist so konfiguriert, dass es:
    sich von einem niedrigen zu einem hohen Pegel ändert, wenn die zweite Nockenwelle CM2 an einer ersten Drehposition R11 des Kurbelwinkels von 15 Grad nach der Referenzposition liegt;
    den hohen Pegel während einer ersten Periode entsprechend dem Kurbelwinkel von 210 Grad vom Zeitpunkt des Hochgehens hält;
    sich vom hohen Pegel zum niedrigen Pegel an einer zweiten Drehposition R12 unmittelbar nach Verstreichen der ersten Periode ändert;
    den niedrigen Pegel während einer zweiten Periode entsprechend dem Kurbelwinkel von 30 Grad vom Zeitpunkt des Heruntergehens hält;
    sich vom niedrigen Pegel zum hohen Pegel an einer dritten Drehposition R13 unmittelbar nach Verstreichen der zweiten Periode ändert;
    den hohen Pegel während einer dritten Periode entsprechend dem Kurbelwinkel von 240 Grad vom Zeitpunkt des Hochgehens hält;
    sich vom hohen Pegel zum niedrigen Pegel bei einer vierten Drehposition R14 unmittelbar nach Verstreichen der dritten Periode ändert;
    den niedrigen Pegel während einer vierten Periode entsprechend dem Kurbelwinkel von 240 Grad vom Zeitpunkt des Heruntergehens hält, um zur ersten Drehposition R11 zurückzukehren, wobei die Serie von Änderungen in jedem Motorzyklus (Kurbelwinkel von 720 Grad) wiederholt wird.
  • Die anderen Sensoren werden vorab im Fahrzeug eingebaut und so angeordnet, dass sie verschiedene Arten physikalischer Größen messen. Diese physikalischen Größen werden von der ECU 1 benötigt, um die einzelnen Steuerziele zu steuern. Messsignale, welche Messwerte angeben, die von den anderen Sensoren ausgegeben werden, werden periodisch der Eingabeschaltung 2 eingegeben.
  • Die Eingabeschaltung 2 dient als ein Wellenformformschaltkreis. Genauer gesagt, die Eingabeschaltung 2 arbeitet dahingehend, eine Wellenformformung an das Kurbelsignal, die ersten und zweiten Nockensignale und die Messsignale anzulegen, die entsprechend vom Kurbelwellensensor 51, den ersten und zweiten Nockensensoren 52 und 53 und den anderen Sensoren ausgegeben werden. Weiterhin arbeitet die Eingabeschaltung 2 dahingehend, die wellenformgeformten Signale an den Mikrocomputer 4 auszugeben.
  • Die Ausgabeschaltung 3 arbeitet dahingehend, an die Steuerziele, welche der Motorsteuerung zugeordnet sind, also beispielsweise Einspritzern und/oder Zündern für die jeweiligen Zylinder, Aktivierungssignale auszugeben, die nachfolgend beschrieben werden, was basierend auf den Zielsteueranweisungen vom Mikrocomputer erfolgt.
  • Der Mikrocomputer 4 ist im Wesentlichen aufgebaut aus einer CPU 10, einer Winkeltakterzeugungseinheit 12, einer Timerausgabeeinheit 14, einem Flash-ROM 16 und einem RAM 18; diese Einheiten 12, 14, 16 und 18 sind elektrisch mit der CPU 10 verbunden.
  • Die CPU 10 arbeitet dahingehend, den gesamten Mikrocomputer 4 zu steuern.
  • Die Winkeltakterzeugungseinheit 12 arbeitet dahingehend, das Kurbelsignal und die ersten und zweiten Nockensignale zu empfangen, die von der Eingabeschaltung 2 ausgegeben werden.
  • Die Timerausgabeschaltung 14 enthält beispielsweise erste und zweite Timer und arbeitet dahingehend, an die Ausgabeschaltung 3 die Zielsteueranweisungen basierend auf Zählwerten der ersten und zweiten Timer für die individuellen Steuerziele auszugeben; diese Zielsteueranweisungen bestimmen eine Warteperiode und eine aktive Periode für jedes der individuellen Steuerziele.
  • Das Flash-ROM 16 wird als ein Beispiel für verschiedene Arten von nichtflüchtigen Speichern verwendet. Insbesondere ist in dem Flash-ROM 16 eine Mehrzahl von Programmen gespeichert. Wenigstens eines der Programme veranlasst die CPU 10, verschiedene Aufgaben durchzuführen, einschließlich (1) einer Eingabesignaldiagnosetask, (2) einer Eingabesignalschalttask, (3) einer Eingabedivisionstask, (4) einer Kurbelflankenunterbrechungstask, (5) einer Nockenflankenunterbrechungstask und (6) einer Durchgangswinkelunterbrechungstask, wie nachfolgend beschrieben wird.
  • Das RAM 18 arbeitet dahingehend, einen schnellen Zugriff durch die CPU 10 zu ermöglichen, und speichert von der CPU 10 verarbeitete Daten.
  • Wie in 3 dargestellt, enthält die Winkeltakterzeugungseinheit 12 ein Eingabewahlmodul 20, ein Flankenintervallmessmodul 22, ein Multiplikationstakterzeugungsmodul 24, ein Durchgangswinkelunterbrechungsmodul 26, ein Winkeltaktmodul 28, ein Eingabeteilmodul (Teilmodul) 32 und ein Kurbelmessmodul 34. Jedes der Module 20, 22, 24, 26, 28, 32 und 34 ist betrieblich mit der CPU 10 verbunden.
  • Das Eingabewahlmodul 20 ist betrieblich über einen Eingabepfad mit dem Flankenintervallmessmodul 22, dem Multiplikationstakterzeugungsmodul 24, dem Durchgangswinkelunterbrechungsmodul 26, dem Winkeltaktmodul 28, dem Eingabeteilmodul 32 und dem Kurbelmessmodul 34 verbunden.
  • Das Eingabewahlmodul 20 enthält eine Einheit 20a, die das Kurbelsignal und die ersten und zweiten Nockensignale von der Eingabeschaltung 2 zu empfangen vermag und entweder das empfangene Kurbelsignal oder ein Signal auszuwählen vermag; dieses Signal wird von der Einheit 20a basierend auf den empfangenen ersten und zweiten Nockensignalen erzeugt. Die Einheit 20a des Eingabewahlmoduls 20 kann das ausgewählte von Kurbelsignal und erzeugtem Signal an jedes der Module 22, 24, 26, 28, 32 und 34 über den Eingabepfad ausgeben.
  • Das von der Einheit 20a unter Verwendung der ersten und zweiten Nockensignale erzeugte Signal hat einen Pegel, der übergehend sich zeitlich in einer bestimmten gleichen Richtung ändert, beispielsweise von der Richtung niedrig nach hoch, jedes Mal dann, wenn eine Pegeländerung in den einzelnen ersten und zweiten Nockensignalen erscheint. Mit anderen Worten, das von der Einheit 20a erzeugte Signal, eine in die gleiche Richtung weisende aktive Flanke, beispielsweise eine steigende Flanke, erscheint jedes Mal bei einer Pegelumkehrung in den ersten und zweiten Nockensignalen. Das von der Einheit 20a erzeugte Signal wird nachfolgend als „Nockenflankensignal” bezeichnet. In gleiche Richtung weisende aktive Flanken des Nockenflankensignals werden nachfolgend einfach als „aktive Flanken” bezeichnet.
  • Genauer gesagt und wie in 2 gezeigt, kann sich der Pegel des Nockenflankensignals zeitlich gesehen vorübergehend von niedrig nach hoch an einzelnen Änderungspunkten P und Q entsprechend den einzelnen Pegeländerungszeitpunkten der ersten und zweiten Nockensignale ändern.
  • In der Ausführungsform ändert sich das Nockenflankensignal gleichförmig in seinem Pegel an den Änderungspunkten P, deren Winkelintervall dem Kurbelwinkel von 120 Grad Kurbelwinkel mit Ausnahme der Änderungspunkte Q entspricht, deren Winkelintervall dem Kurbelwinkel von 360 Grad entspricht.
  • Beispielsweise kann das Eingabewahlmodul 20 so ausgelegt sein, dass es die ersten und zweiten Nockensignale logisch ODER verknüpft, um das Nockenflankensignal zu erzeugen.
  • Das Eingabewahlmodul 20 enthält auch ein Register 20b, welches wenigstens ein Bit von Daten speichern kann, welche durch die CPU 10 neu schreibbar sind. In der Ausführungsform wir das wenigstens eine Datenbit, welches „1” anzeigt, als Vorgabewert im Register 20b gespeichert.
  • Der Datenwert „1” im Register 20b ermöglicht es dem Eingabewahlmodul 20, selektiv als Eingabesignal irgendeines von Kurbelsignal und Nockenflankensignal zumindest an eines der Module 22, 24, 26, 28, 32, und 34 weiterzugeben.
  • Wenn andererseits das wenigstens eine Datenbit von der CPU 10 als „0” neu geschrieben wird, hindert der Datenwert „0” das Eingabewahlmodul 20 daran, das Kurbelsignal und das Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 weiterzugeben.
  • Das Eingabewahlmodul 20 enthält weiterhin ein Register 20c, welches wenigstens ein Datenbit speichern kann, das von der CPU 10 neu schreibbar ist. In der Ausführungsform ist das wenigstens eine Datenbit, das „0” angibt, als Voreinstellwert vorab im Register 20c gespeichert.
  • Der Datenwert „0” im Register 20c verhindert, dass das Eingabewahlmodul 20 ein Kurbeleingabevorgangssignal an wenigstens ein externes Element, beispielsweise die CPU 10, schickt.
  • Wenn im Gegensatz hierzu das wenigstens eine Datenbit von der CPU 10 als „1” neu geschrieben wird, ermöglicht der Datenwert „1” es dem Eingabewahlmodul 20, dass Kurbeleingabevorgangssignal an das wenigstens eine externe Element, beispielsweise die CPU 10, zu schicken.
  • Es sei festzuhalten, dass das Kurbeleingabevorgangssignal das Kurbelsignal selbst oder ein Signal bedeutet, dessen Pegel sich vorübergehend in der Zeit in einer bestimmten gleichen Richtung, beispielsweise der Richtung von niedrig nach hoch, jedes Mal dann ändert, wenn eine Pegeländerung im Kurbelsignal in der gleichen Richtung auftritt.
  • Das Flankenintervallmessmodul 22 ist betrieblich mit dem Multiplikationstakterzeugungsmodul 24 verbunden und enthält einen Flankenintervallmesszähler 22a.
  • Jedes Mal, wenn eine aktive Flanke vorübergehend im Eingabesignal von dem Eingabewahlmodul 20 an das Flankenintervallmessmodul 22 erscheint, arbeitet der Flankenintervallmesszähler 22a dahingehend, ein Zeitintervall zwischen der momentanen aktiven Flanke und der nächsten aktiven Flanke zu messen, welche hierzu zeitlich benachbart in dem Eingabesignal erscheint.
  • Genauer gesagt, jedes Mal dann, wenn eine aktive Flanke vorübergehend in dem Eingabesignal erscheint, arbeitet der Flankenintervallmesszähler 22a dahingehend, dass er:
    seinen Zählwert zurücksetzt; und
    unmittelbar nach dem Zurücksetzen die Anzahl von aktiven Flanken (fallende Flanken oder steigende Flanken) von Taktimpulsen eines Systemtakts hochzählt, der vom Mikrocomputer 4 erzeugt wird, bis die nächste zeitlich benachbarte aktive Flanke im Eingabesignal erscheint.
  • Es sei festzuhalten, dass der Systemtakt eine Synchronisation der Tasks im Mikrocomputer 4 zueinander erlaubt. Wie oben beschrieben, besteht der Systemtakt aus einer sich wiederholenden Serie von Taktimpulsen mit einem konstanten Taktzyklus und einer konstanten Taktfrequenz; diese Taktfrequenz ist höher als eine Frequenz von aktiven Flanken im Eingabesignal. Die Änderung im Zählwert des Flankenintervallmesszählers 22a ist schematisch in 4 gezeigt.
  • Im Ergebnis werden individuelle Intervalle zwischen zeitlich benachbarten momentanen und nächsten aktiven Flanken in dem Eingabesignal, das von dem Eingabewahlmodul 20 dem Flankenintervallmessmodul 22 zugeführt wird, sequenziell als entsprechende individuelle Zählwerte des Flankenintervallmesszählers 22a des Flankenintervallmessmoduls 22 gemessen.
  • Das Flankenintervallmessmodul 22 arbeitet auch dahingehend, einen Zählwert (Messintervall) des Flankenintervallmesszählers 22a an das Multiplikationstakterzeugungsmodul 24 jedes Mal dann weiterzugeben, wenn eine nächste aktive Flanke vorübergehend in dem Eingabesignal erscheint, bevor der Zählwert zurückgesetzt wird.
  • Das Multiplikationstakterzeugungsmodul 24 ist betrieblich mit dem Durchgangswinkelmessmodul 26 und dem Winkeltaktmodul 28 verbunden und enthält erste und zweite Register 24a und 24b. Das zweite Register 24b speichert eine Multiplikationszahl f. In der Ausführungsform ist der Voreinstellwert der Multiplikationszahl f für das Kurbelsignal auf 60 gesetzt und die Multiplikationszahl f für das Kurbelsignal, dessen Voreinstellwert „60” ist, wird nachfolgend mit „f1” bezeichnet.
  • Jedes Mal, wenn ein Zählwert des Flankenintervallmesszählers 22a an das Multiplikationstakterzeugungsmodul 24 gegeben wird, arbeitet das Multiplikationstakterzeugungsmodul 24 dahingehend, um:
    den Zählwert (gemessenes Intervall) zu empfangen;
    den empfangenen Zählwert im ersten Register 24a als eine Multiplikationstaktreferenzzeit zu speichern (siehe „Multiplikationstaktreferenzzeit” in 4);
    die im ersten Register 24a gespeicherte Multiplikationstaktreferenzzeit mit der Multiplikationszahl f im zweiten Register 24b zu teilen, um einen Multiplikationstakt zu erzeugen, der aus einer sich wiederholenden Serie von Multiplikationstaktimpulsen besteht, deren Taktzyklus ein Multiplikationszahl-Untervielfaches der Multiplikationstaktreferenzzeit ist (siehe „Multiplikationstakt” in 4); und
    den erzeugten Multiplikationstakt an das Durchgangswinkelmessmodul 26 und das Winkeltaktmodul 28 auszugeben.
  • Da die Multiplikationstaktreferenzzeit vom Zählwert des Flankenintervallmesszählers 22a abhängt, der von einem entsprechenden Intervall zeitlich benachbarter aktiver Flanken im Eingabesignal abhängt, hängt der Taktzyklus des Multiplikationstakts von einer Änderung der Multiplikationstaktreferenzzeit ab.
  • Wie beispielsweise in 4 gezeigt, wird, wenn ein Zählwert T0 im ersten Register 24a als Multiplikationstaktreferenzzeit gespeichert wird, der Zyklus des Multiplikationstakts auf T0/f gesetzt. Wenn der Zählwert T0 im ersten Register 24a auf einen Zählwert T1 erneuert wird, ändert sich der Zyklus des Multiplikationstaktsignals von T0/f auf T1/f.
  • Auf ähnliche Weise, wenn der Zählwert T1, der im ersten Register 24a gespeichert ist, auf einen Zählwert T2 erneuert wird, ändert sich der Zyklus des Multiplikationstaktsignals von T1/f nach T2/f. Das Gleiche trifft zu, wenn die Zählwerte im ersten Register 24a auf T3 bis T5 geändert werden.
  • Das Durchgangswinkelmessmodul 26 enthält einen Durchgangswinkelmesszähler 26a zum Hochzählen der Anzahl von Änderungen in dem Multiplikationstakt in einer bestimmten gleichen Richtung, beispielsweise bei dieser Ausführungsform in einer Richtung von niedrig nach hoch.
  • Insbesondere arbeitet der Durchgangswinkelmesszähler 26a dahingehend, um:
    den Multiplikationstakt zu empfangen, der vom Multiplikationstakterzeugungsmodul 24 ausgegeben wird;
    seinen Zählwert zurückzusetzen jedes Mal dann, wenn eine aktive Flanke des Eingabesignals über das Eingabewahlmodul 20 eingegeben wird; und
    die Anzahl von steigenden Flanken der Multiplikationstaktimpulse vom empfangenen Multiplikationstakt hochzuzählen, bis die nächste zeitlich benachbarte aktive Flanke des Eingabesignals dem Durchgangswinkelmesszähler 26a eingegeben wird (siehe „Durchgangswinkelmesszähler” in 4).
  • Wie oben beschrieben, ist das Eingabesignal, das von dem Eingabewahlmodul 20 dem Durchgangswinkelunterbrechungsmodul 26 eingegeben wird, irgendeines von Kurbelsignal, Nockenflankensignal und Kurbeleingabevorgangssignal.
  • Das Kurbelsignal oder das Kurbeleingabevorgangssignal ist so konfiguriert, dass es einen Pegel hat, der sich vorübergehend wiederholt in der Zeit mit einer Drehung der Kurbelwinkel CS ändert, und das Nockenflankensignal ist so konfiguriert, dass es einen Pegel hat, der sich vorübergehend wiederholt in der Zeit in einer gleichen bestimmten Richtung ändert, beispielsweise von niedrig nach hoch, und zwar bei Drehung einer der ersten und zweiten Nockenwellen CM1 und CM2.
  • Somit hat der Multiplikationstakt einen Taktzyklus, der ein ganzzahliges Untervielfaches eines entsprechenden Zeitintervalls zwischen zeitlich benachbarten aktiven Flanken des Eingabesignals (irgendeines von Kurbelsignal, Nockenflankensignal und Kurbeleingabevorgangssignal) ist.
  • Folglich arbeitet der Durchgangswinkelmesszähler 26a dahingehend, einen Drehwinkel der Kurbelwinkel CS zwischen jedem Paar von zeitlich benachbarten aktiven Flanken des Eingabesignals mit einer hohen Auflösung im Vergleich mit dem Fall zu messen, wo der Drehwinkel synchron mit einer aktiven Flanke des Eingabesignals gemessen wird.
  • Mit anderen Worten, der Durchgangswinkelmesszähler 26a vermag einen Drehwinkel der Kurbelwelle CS, die von 0 Grad Kurbelwinkel nach Δθ Grad Kurbelwinkel durchläuft, zwischen jedem Paar von zeitlich benachbarten aktiven Flanken des Eingabesignals mit einer Auflösung zu messen, die f-mal größer als in dem Fall ist, wo der Drehwinkel synchron mit einer aktiven Flanke des Eingabesignals gemessen wird.
  • Hier sei festzuhalten, dass ein Messwert (Zählwert) des Durchgangswinkelmesszählers 26a von einem entsprechenden Zeitintervall zwischen zeitlich benachbarten aktiven Flanken des Eingabesignals abhängt.
  • Zusätzlich enthält das Durchgangswinkelmessmodul 26 ein Schwellenwertregister 26b zur Speicherung eines Schwellenwerts des Durchgangswinkelmesszählers 26a. Das Durchgangswinkelmessmodul 26 kann einen Interrupt erzeugen, wenn der Zählwert des Durchgangswinkelmesszählers 26a gleich oder größer als der Schwellenwert im Schwellenwertregister 26b ist, wobei ein Interrupt an die CPU 10 ausgegeben wird.
  • In der Ausführungsform ist eine Voreinstellung des Schwellenwerts, der im Schwellenwertregister 26b gespeichert ist, auf einen bestimmten Wert größer als ein Referenzzählwert gesetzt, den der Durchgangswinkelmesszähler 26a erreichen kann, während kein Pulsfehlabschnitt M im Kurbelsignal erscheint; dieser Referenzzählwert entspricht Δθ Grad Kurbelwinkel der Kurbelwelle CS.
  • Zusätzlich ist der Voreinstellwert des Schwellenwerts, der im Schwellenwertregister 26b gespeichert ist, kleiner als der spezifizierte Zählwert, den der Zähler 26a erreichen kann, während einer der Pulsfehlabschnitte M im Kurbelsignal erscheint.
  • Beispielsweise wird als Voreinstellung des Schwellenwerts ein Wert 2.5 mal größer als der Referenzzählwert Δθ in dem Schwellenwertregister 26b gespeichert; dieser Voreinstellwert des Schwellenwerts ergibt sich als 2.5 mal Δθ.
  • Das Durchgangswinkelmessmodul 26 enthält auch ein Freigabe/Sperrregister 26c zur Speicherung einer Information, die „freigegeben” oder „gesperrt” unter Steuerung der CPU 10 angibt. Als Voreinstellung der Information wird eine „gesperrt” angebende Information vorab in dem Freigabe/Sperrregister 26c gespeichert.
  • Das Winkeltaktmodul 28 enthält einen Referenzzähler 28a, einen Leitzähler 28b und einen Winkelzähler 28c.
  • Der Referenzzähler 28a zählt die Anzahl von Änderungen im Multiplikationstakt in einer bestimmten gleichen Richtung, beispielsweise von niedrig nach hoch bei dieser Ausführungsform.
  • Der Leitzähler 28b zählt die Multiplikationszahl f jedes Mal dann, wenn der Pegel des Eingabesignals, das von dem Eingabewahlmodul 20 eingegeben wird, sich in einer bestimmten Richtung ändert, beispielsweise von niedrig nach hoch.
  • Der Winkelzähler 28c lässt seinen Zählwert automatisch dem Zählwert des Referenzzählers 28a synchron mit einer aktiven Flanke, beispielsweise der steigenden Flanke eines jeden Taktimpulses vom Systemtakt, folgen.
  • Das Winkeltaktmodul 28 enthält auch erste und zweite Register (REG) 28d und 28e. Das erste Register 28d speichert eine Obergrenze für den Referenzzähler 28a und den Winkelzähler 28c. Das zweite Register 28e speichert einen Moduswert. Der Moduswert bestimmt den Betriebsmodus des Referenzzählers 28a.
  • Der Referenzzähler 28a ist so ausgelegt, dass er:
    die Anzahl von steigenden Flanken des Multiplikationstakts hochzählt, der vom Multiplikationstakterzeugungsmodul 24 eingegeben wird; und
    seinen Zählwert auf null (0) in Antwort auf die steigende Flanke zurücksetzt, die in dem Multiplikationstakt erscheint, nachdem der Zählwert den im ersten Register 28d gespeicherten oberen Grenzwert erreicht.
  • Der Referenzzähler 28a kann auch den Zählvorgang in einem der Betriebsmodi durchführen; der betreffende Betriebsmodus wird durch den Moduswert bestimmt, der im zweiten Register 28e gespeichert ist.
  • In der Ausführungsform umfassen die Betriebsmodi:
    einen Sperrmodus, in welchem der Referenzzähler 28a das Hochzählen sperrt, nachdem der Zählwert den Zählwert des Leitzählers 28b erreicht; und
    einen Freigabemodus, in welchem der Referenzzähler 28a das Hochzählen freigibt, auch nachdem der Zählwert den Zählwert des Leitzählers 28b erreicht.
  • In der Ausführungsform ist der Winkelzähler 28c so ausgelegt, dass ein Zählwert hiervon einer Drehposition der Kurbelwelle CS entspricht, wenn die Drehposition mit der Auflösung dargestellt wird; diese Auflösung wird erhalten, indem der Winkelteil Δθ Grad Kurbelwinkel, beispielsweise 6 Grad Kurbelwinkel, durch die 60 der Multiplikationszahl f1 dividiert wird; diese Auflösung wird als „6°/60 = 0.1° Kurbelwinkel” bestimmt.
  • Das Eingabeteilmodul 32 enthält Register 32a und 32b. Das Register 32a kann ein Divisionsverhältnis n speichern und das Register 32b kann ein Flag „1” oder „0” speichern. Ein Voreinstellwert des Teilverhältnisses n wird auf 5 gesetzt und ein Flag „1” wird als Voreinstellwert im Register 32b gesetzt.
  • Das Eingabeteilmodul 32 arbeitet dahingehend, das vom Eingabewahlmodul 20 eingegebene Eingabesignal durch das Teilverhältnis n zu dividieren, um ein kurbelgeteiltes Vorgangssignal zu erzeugen. Das Eingabeteilmodul 32 arbeitet auch dahingehend, an wenigstens ein externes Element, beispielsweise die CPU 10, das kurbelgeteilte Vorgangssignal zu senden.
  • Bezug nehmend auf 2 ist der Pegel des kurbelgeteilten Vorgangssignals so ausgelegt, dass es sich vorübergehend zeitlich in einer Richtung von niedrig nach hoch jedes Mal dann ändert, wenn die Anzahl n aktiver Flanken in dem Kurbelsignal erscheint. Mit anderen Worten, die aktive Flanke des kurbelgeteilten Vorgangssignals erscheint jedes Mal dann, wenn die Kurbelwinkel CA um einen bestimmten Kurbelwinkel dreht; dieser bestimmte Kurbelwinkel ist dargestellt durch das Produkt des Teilverhältnisses n und des Winkelteils Δθ Grad Kurbelwinkel. Wenn beispielsweise das Teilverhältnis n auf den Voreinstellwert von 5 gesetzt wird, erscheint eine aktive Flanke des kurbelgeteilten Vorgangssignals jedes Mal dann, wenn die Kurbelwinkel CA um „6° CA × 5 = 30° CA” dreht.
  • Das im Register 32b gesetzte Flag bestimmt, ob das Eingabeteilmodul 32 das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element ausgibt.
  • Genauer gesagt, ein Flag „1” ermöglicht es dem Eingabeteilmodul 32, das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element auszugeben, während ein Flag „0” das Eingabeteilmodul 32 daran hindert, das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element auszugeben.
  • Das Kurbelmessmodul 34 enthält einen Intervallmesszähler 34a.
  • Jedes Mal, wenn eine aktive Flanke (eine in gleiche Richtung laufende aktive Flanke von niedrig nach hoch) vorübergehend in dem Kurbeleingabevorgangssignal erscheint, das von dem Eingabewahlmodul 20 an das Kurbelmessmodul 34 weitergegeben wird, arbeitet der Intervallmesszähler 34a dahingehend, ein Zeitintervall zwischen der momentanen aktiven Flanke und der nächsten aktiven Flanke zu messen, welche hierzu zeitlich benachbart in dem Kurbeleingabevorgangssignal erscheint.
  • Genauer gesagt, jedes Mal, wenn eine aktive Flanke vorübergehend in dem Kurbeleingabevorgangssignal erscheint, arbeitet der Intervallmesszähler 34a dahingehend, um:
    seinen Zählwert zurückzusetzen; und
    unmittelbar nach dem Zurücksetzen die Anzahl von aktiven Flanken (fallende Flanken oder steigende Flanken) von Taktimpulsen des Systemtakts vom Mikrocomputer 4 hochzuzählen, bis die nächste zeitlich benachbarte aktive Flanke in dem Kurbeleingabevorgangssignal erscheint.
  • Es sei festzuhalten, dass ein Messwert (Zählwert) des Kurbelmessmoduls 34 von einem entsprechenden Zeitintervall zwischen zeitlich benachbarten aktiven Flanken im Kurbeleingabevorgangssignal abhängt.
  • Zusätzlich das Kurbelmessmodul 34 ein Schwellenwertregister 34b zur Speicherung eines Schwellenwerts für den Zählwert des Intervallmesszählers 34a. Das Kurbelmessmodul 34 arbeitet dahingehend, einen Interrupt zu erzeugen, wenn der Zählwert des Intervallmesszählers 34a gleich oder größer als der Schwellenwert im Schwellenwertregister 34b ist, so dass der Interrupt an die CPU 10 ausgegeben wird.
  • In der Ausführungsform ist eine Voreinstellung des Schwellenwerts auf einen bestimmten Wert im Schwellenwertregister 34b gesetzt, der größer als ein Referenzzählwert ist, den der Intervallmesszähler 34a erreichen kann, während kein Pulsfehlabschnitt M im Kurbelsignal erscheint.
  • Zusätzlich ist der im Schwellenwertregister 34b gespeicherte Voreinstellwert des Schwellenwerts kleiner als der spezifizierte Zählwert, den der Zähler 26a erreichen kann, während einer der Pulsfehlabschnitte M im Kurbelsignal erscheint.
  • Beispielsweise ist als Voreinstellung des Schwellenwerts ein Wert von 2.5 mal größer als der Referenzzählwert im Schwellenwertregister 34b gespeichert.
  • Nachfolgend werden von der CPU 10 des Mikrocomputers 4 gemäß wenigstens einem der Programme in beispielsweise dem Flash-ROM 16 durchgeführte Tasks unter Bezugnahme auf die 15 bis 19 beschrieben.
  • (1) EINGABESIGNALDIAGNOSETASK
  • Zunächst wird die Eingabesignaldiagnosetask, die von der CPU 10 durchzuführen ist, unter Bezugnahme auf 5 beschrieben. Die Eingabesignaldiagnosetask wird jedes Mal dann durchgeführt, wenn eine aktive Flanke entweder in dem kurbelgeteilten Vorgangssignal, ausgegeben von dem Eingabeteilmodul 32, oder dem Kurbeleingabevorgangssignal, ausgegeben von dem Eingabewahlmodul 20, erscheint, nachdem der Mikrocomputer 4 hochgefahren wurde.
  • Mit anderen Worten, die Eingabesignaldiagnosetask wird jedes Mal dann durchgeführt, wenn der Pegel von entweder dem kurbelgeteilten Vorgangssignal oder dem Kurbeleingabevorgangssignal sich in einer bestimmten gleichen Richtung ändert, beispielsweise von niedrig nach hoch, nachdem der Mikrocomputer 4 hochgefahren wurde. Entweder das kurbelgeteilte Vorgangssignal oder das Kurbeleingabevorgangssignal, welches den Beginn der Eingabesignaldiagnosetask auslöst, wird nachfolgend als „Triggersignal” bezeichnet.
  • Es sei festzuhalten, dass das kurbelgeteilte Vorgangssignal und das Kurbeleingabevorgangssignal so ausgelegt sind, dass sie nicht gleichzeitig ausgegeben werden, wie nachfolgend beschrieben, und daher wird die Eingabesignaldiagnosetask jedes Mall dann veranlasst, wenn eine festgelegte gerichtete Pegeländerung (Pegeländerung von niedrig nach hoch) in entweder dem kurbelgeteilten Vorgangssignal oder dem Kurbeleingabevorgangssignal erscheint.
  • Wenn die Eingabesignaldiagnosetask begonnen wird, addiert die CPU 10 zu einem Wert einer vorbereiteten „Aktivflankenzählvariablen” die Anzahl von spezifizierten Pegeländerungen (einzelne aktive Flanken) in dem Kurbelsignal, die nötig sind, damit eine aktive Flanke im Triggersignal erscheint (S110 in 5). Die Aktivflankenzählvariable stellt einen Zählwert von Änderungen mit bestimmtem Pegel (aktive Flanken) in dem Kurbelsignal zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte dar. Ein Voreinstellwert der Aktivflankenzählvariablen ist auf null gesetzt. Die Anzahl von spezifizierten Pegeländerungen (aktive Flanken) in dem Kurbelsignal, die nötig sind, damit eine aktive Flanke im Triggersignal erscheint, wird auch als „Aktivflankenzähleinheit” bezeichnet (siehe 5).
  • Wenn beispielsweise das kurbelgeteilte Vorgangssignal von dem Eingabewahlmodul 20 als das Triggersignal ausgegeben wird, addiert die CPU 10 zu einem Wert der Aktivflankenzählvariablen das Divisionsverhältnis n, das im Register 32b des Eingabeteilmoduls 32 gesetzt ist. Dies deshalb, als in dem kurbelgeteilten Vorgangssignal eine aktive Flanke (eine bestimmte Pegeländerung) jedes Mal dann erscheint, wenn die Anzahl von n aufeinanderfolgender aktiver Flanken (sequenzielle bestimmte Pegeländerungen) in dem Kurbelsignal erscheint (siehe 2).
  • Im Gegensatz hierzu, wenn das Kurbeleingabevorgangssignal von dem Eingabewahlmodul 20 als Triggersignal ausgegeben wird, addiert die CPU 10 den Wert „1” zu dem Wert der Aktivflankenzählvariablen. Dies deshalb, als in dem Kurbeleingabevorgangssignal eine aktive Flanke (eine spezifizierte Pegeländerung) jedes Mal dann erscheint, wenn eine aktive Flanke (eine spezifizierte Pegeländerung) in dem Kurbelsignal erscheint.
  • Nachfolgend überprüft die CPU 10 im Schritt 120, ob ein Pulsfehlabschnitt im Kurbelsignal erscheint. Beispielsweise bestimmt in S120 die CPU 10, dass ein Pulsfehlabschnitt im Kurbelsignal erscheint, wenn vom Durchgangswinkelmessmodul 26 ein Interrupt eingegeben wird.
  • Es sei festzuhalten, dass, wie beispielsweise in 6 gezeigt, angenommen wird, dass zeitlich benachbarte aktive Flanken E12 und E13 im Kurbelsignal einen Pulsfehlabschnitt Ma hierin bilden.
  • Unter dieser Annahme entspricht das Zeitintervall des Pulsfehlabschnitts Ma zwischen den aktiven Flanken E12 und E13 einem gemessenen Zählwert T12 vom Flankenintervallmesszähler 22a. Intervalle zwischen zeitlich benachbarten aktiven Flanken anderer Abschnitte mit Ausnahme der Pulsfehlabschnitte M im Kurbelsignal entsprechen jeweils gemessenen Zählwerten T10, T11, T13, T13, ...
  • Wie klar aus 6 ersichtlich ist, ist das Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal länger als die Intervalle der anderen Abschnitte mit Ausnahme der Pulsfehlabschnitte M hierin. Aus diesem Grund ist der Zählwert T12 entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal größer als die anderen Zählwerte der entsprechenden anderen Abschnitte.
  • Wie oben beschrieben, hängt ein Messwert (Zählwert) des Durchgangswinkelmesszählers 26a vom entsprechenden Zeitintervall zwischen zeitlich benachbarten gleichgerichteten Flanken im Kurbelsignal ab. Aus diesem Grund ist ein Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal größer als derjenige des Zählers 26a entsprechend dem anderen Zeitintervall eines der anderen Abschnitte im Kurbelsignal.
  • Zusätzlich ist der Voreinstellwert (Δθ × 2.5) des Schwellenwerts, der im Schwellenwertregister 26b gespeichert ist, größer als der Referenzzählwert, den der Durchgangswinkelmesszähler 26a erreichen kann, während keine Pulsfehlabschnitte M im Kurbelsignal auftauchen, und kleiner als der spezifizierte Zählwert, den der Zähler 26a erreichen kann, während einer der Pulsfehlabschnitte M im Kurbelsignal erscheint.
  • Aus diesem Grund übersteigt der Zählwert des Durchgangswinkelmesszählers 26a entsprechende dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den spezifizierten Zählwert, der größer als der Einstellwert (Δθ × 2.5) des Schwellenwerts ist, der im Schwellenwertregister 26b gespeichert ist. Beispielsweise ist der Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal in 6 mit „Δθ × 3” dargestellt.
  • Wie beim Durchgangswinkelmessmodul 26 hängt ein Messwert (Zählwert) des Intervallmesszählers 34a von einem entsprechenden Zeitintervall zwischen zeitlich benachbarten gleichgerichteten Flanken im Kurbelsignal ab. Aus diesem Grund ist ein Zählwert des Intervallmesszählers 34a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal größer als derjenige des Zählers 34a entsprechend dem anderen Zeitintervall in einem der anderen Abschnitte des Kurbelsignals.
  • Aus diesem Grund übersteigt der Zählwert des Intervallmesszählers 34a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den spezifizierten Zählwert größer als der Voreinstellwert des Schwellenwerts im Schwellenwertregister 34b.
  • Im Ergebnis, wenn der Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den Voreinstellwert des Schwellenwerts erreicht, erzeugt das Durchgangswinkelmessmodul 26 einen Interrupt, der an die CPU 10 ausgegeben wird. Auf ähnliche Weise, wenn der Zählwert des Intervallmesszählers 34a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den Voreinstellwert des Schwellenwerts erreicht, erzeugt das Kurbelmessmodul 34 einen Interrupt, der an die CPU 10 ausgegeben wird.
  • Wenn folglich der Interrupt vom Durchgangswinkelmessmodul 26 oder Kurbelmessmodul 34 empfangen wird, bestimmt die CPU 10, dass in dem Kurbelsignal ein Pulsfehlabschnitt erscheint (JA in S120).
  • Genauer gesagt, wenn das Triggersignal das kurbelgeteilte Vorgangssignal ist, bestimmt bei Empfang des Interrupts vom Durchgangswinkelmessmodul 26 die CPU 10, dass ein Pulsfehlabschnitt im Kurbelsignal erscheint (JA in S120). Wenn andererseits das Triggersignal das Kurbeleingabevorgangssignal ist, bestimmt bei Empfang des Interrupts vom Kurbelmessmodul 34 die CPU 10, dass ein Pulsfehlabschnitt im Kurbelsignal erscheint (JA in S120). Dann geht die CPU 10 zum Schritt S120.
  • Wenn andererseits kein Interrupt entweder vom Durchgangswinkelmessmodul 26 oder dem Kurbelmessmodul 34 erhalten wird, bestimmt die CPU 10, dass kein Pulsfehlabschnitt im Kurbelsignal erscheint, und beendet die Eingabesignaldiagnosetask.
  • Nach der negativen Bestimmung im Schritt S120 wird die Eingabesignaldiagnosetask gestartet, so dass ein Wert der Aktivflankenzählvariablen, imkrementiert durch die Aktivflankenzähleinheit im Schritt S110, jedes Mal dann, wenn eine Pegeländerung spezifizierter Richtung (Pegeländerung von niedrig nach hoch) vorliegt, in dem kurbelgeteilten Vorgangssignal und dem Kurbeleingabevorgangssignal erscheint. Das heißt, die Inkrementierung wird wiederholt, bis ein Pulsfehlabschnitt im Kurbelsignal erscheint.
  • Wenn somit bestimmt wird, dass ein Pulsfehlabschnitt im Kurbelsignal erscheint (JA im Schritt S120), bestimmt die CPU 10, ob der Wert der Aktivflankenzählvariablen innerhalb eines geeigneten Bereichs ist (Schritt S130). Der geeignete Bereich bedeutet einen geschätzten Bereich, innerhalb dessen die Anzahl von geeigneten spezifizierten Pegeländerungen (aktive Flanken) im Kurbelsignal während einer Periode zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte ist.
  • Bei Bestimmung, dass der Wert der Aktivflankenzählvariablen innerhalb des geeigneten Bereichs ist (JA im Schritt S130), speichert die CPU 10 im Schritt S140 im RAM 18 oder dem Flash-ROM 16, eine Information, die darstellt, dass die Diagnose des Kurbelsignals „normal” ist, und geht zum Schritt S160.
  • Andererseits, bei Bestimmung, dass der Wert der Aktivflankenzählvariablen nicht innerhalb des geeigneten Bereichs ist (NEIN im Schritt S130), speichert die CPU 10 im Schritt S150 im RAM 18 oder dem Flash-ROM 16 eine Information, die darstellt, dass die Diagnose des Kurbelsignals „anormal” ist, und geht zum Schritt S160.
  • Im Schritt S160 setzt die CPU 10 die Aktivflankenzählvariable auf den Voreinstellwert von null zurück und beendet die Eingabesignaldiagnosetask.
  • (2) EINGABESIGNALSCHALTTASK
  • Nachfolgend wird die Eingabesignalschalttask zur Durchführung durch die CPU 10 in regelmäßigen Abständen parallel mit der Eingabesignaldiagnosetask nach Hochfahren des Mikrocomputers 4 unter Bezugnahme auf 7 beschrieben.
  • Beim Starten der Eingabeschalttask nimmt die CPU 10 Bezug auf die Information bezüglich der Diagnose des Kurbelsignals, welche durch die Schritte S140 oder S150 im Flash-ROM 16 oder RAM 18 gespeichert wurde, so dass im Schritt S210 bestimmt wird, ob das Kurbelsignal normal ist, wobei auf das Ergebnis Bezug genommen wird.
  • Wenn bestimmt wird, dass das Kurbelsignal normal ist (Bestimmung im Schritt S210 ist JA), geht die CPU 10 zum Schritt S220. Im Schritt S220 sendet die CPU 10 an das Eingabewahlmodul 20 eine Kurbelsignalwahlanweisung, um das Kurbelsignal als Eingabesignal zu wählen. Zusätzlich sendet im Schritt S220 die CPU 10 an jedes der Module 20, 24, 26, 28 die Kurbelsignalwahlanweisung.
  • Die vom Eingabewahlmodul 20 empfangene Kurbelsignalwahlanweisung schaltet die Eingabe, so dass das Kurbelsignal als Eingabesignal gewählt wird, so dass das gewählte Kurbelsignal als Eingabesignal an der Winkeltakterzeugungseinheit 12 durchgeführt wird.
  • Die Kurbelsignalwahlanweisung, die vom Multiplikationstakterzeugungsmodul 4 empfangen wird, erlaubt dem Modul 24, als Multiplikationszahl f1 die 60 für das Kurbelsignal im zweiten Register 24b zu speichern.
  • Die Kurbelsignalwahlanweisung, die vom Durchgangswinkelmessmodul 26 empfangen wird, erlaubt dem Modul 26, im Schwellenwertregister 26b als Schwellenwert einen Wert äquivalent zu dem Voreinstellwert zu speichern, der gegeben ist durch Δθ × 2.5.
  • Die Kurbelsignalwahlanweisung, die vom Winkeltaktmodul 28 empfangen wird, erlaubt dem Modul 28 im ersten Register 28d, eine Obergrenze von Referenzzähler 28a und Winkelzähler 28c zu speichern; diese Obergrenze ist für das Kurbelsignal bestimmt. Es sei festzuhalten, dass in der Ausführungsform die Obergrenze für das Kurbelsignal gegeben ist durch einen Wert, bestimmt durch Division von 360 Grad Kurbelwinkel entsprechend einer Umdrehung der Kurbelwelle CS durch 0.1 Grad CA Auflösung basierend auf dem Winkelzähler 28c. Das heißt, die Obergrenze für das Kurbelsignal wird bestimmt als „360/0.1 = 3600”.
  • Nachfolgend hindert die CPU 10 die Winkeltakterzeugungseinheit 12 im Schritt S230 daran, das Kurbeleingabevorgangssignal auszugeben.
  • Beispielsweise schickt im Schritt 230 die CPU 10 an das Winkeltakterzeugungsmodul 12 eine Anweisung, die Ausgabe des Kurbeleingabevorgangssignals zu verhindern.
  • In Antwort auf Empfang der Anweisung, die Ausgabe des Kurbeleingabevorgangssignals zu verhindern, überschreibt das Winkeltakterzeugungsmodul 12 das Register 20b des Eingabewahlmoduls 20 in „0” (beschreibt es neu). Der Datenwert „0” hindert das Eingabewahlmodul 20 daran, das Kurbeleingabevorgangssignal an die Module 22, 24, 26, 28, 32 und 34 durchzulassen. Danach beendet die CPU 10 die Eingabeschalttask.
  • Wenn andererseits bestimmt wird, das das Kurbelsignal anormal ist (die Bestimmung im Schritt S210 ist NEIN), geht die CPU 10 zum Schritt S240.
  • Im Schritt S240 sendet die CPU 10 an das Eingabewahlmodul 20 eine Nockenflankensignalwahlanweisung, um das Nockenflankensignal als Eingabesignal zu wählen. Zusätzlich schickt im Schritt S240 die CPU 10 an jedes der Module des Winkeltakterzeugungsmoduls 12 die Nockenflankensignalwahlanweisung.
  • Die Nockenflankensignalwahlanweisung, die vom Eingabewahlmodul 20 empfangen wird, erlaubt dem Modul 20, das Nockenflankensignal als Eingabesignal zu wählen, so dass das gewählte Nockenflankensignal als Eingabesignal jedem der Module des Winkeltakterzeugungsmoduls 12 zugeführt wird.
  • Die Nockenflankensignalwahlanweisung, die von dem Multiplikationstakterzeugungsmodul 24 empfangen wird, erlaubt dem Modul 24, als Multiplikationszahl f einen Wert für das Nockenflankensignal im zweiten Register 24b zu speichern. In der Ausführungsform wird die Multiplikationszahl f für das Nockenflankensignal ausdrücklich nachfolgend mit „f2” bezeichnet.
  • Der Wert als Multiplikationszahl f2 für das Nockenflankensignal zur Speicherung im zweiten Register 24b wird erhalten durch:
    Berechnen des Produkts eines Winkelintervalls von 120 Grad Kurbelwinkel zwischen zwei beliebig zeitlich benachbarten Punkten P in dem Nockenflankensignal und der Multiplikationszahl 60 für das Kurbelsignal; und
    Teilen des erhaltenen Produkts durch den Winkelteil von 6 Grad Kurbelwinkel.
  • Das heißt, die Multiplikationszahl f2 für das Nockenflankensignal wird bestimmt als „(120 × 60)/ = 1200”.
  • Die Nockenflankensignalwahlanweisung, die vom Winkeltaktmodul 28 empfangen wird, erlaubt dem Modul 28, im ersten Register 28d eine Obergrenze für den Referenzzähler 28a und den Winkelzähler 28c zu speichern; diese Obergrenze wird für das Nockenflankensignal bestimmt. Es sei festzuhalten, dass in der Ausführungsform die Obergrenze für das Nockenflankensignal gegeben ist durch einen Wert, bestimmt durch Division von 720 Grad Kurbelwinkel entsprechend einer Drehung einer jeden der ersten und zweiten Nockenwellen CM1 und CM2 durch 0.1°CA Auflösung basierend auf dem Winkelzähler 28c. Das heißt, die Obergrenze für das Nockenflankensignal wird bestimmt als „720/0.1 = 7200”.
  • Im Gegensatz zum Schritt S220 wird im Schritt S240 kein Schwellenwert im Schwellenwertregister 26b gespeichert.
  • Danach erlaubt die CPU 10 im Schritt S250 der Winkeltakterzeugungseinheit 12, das Kurbeleingabevorgangssignal auszugeben.
  • Beispielsweise schickt im Schritt S250 die CPU 10 an das Winkeltakterzeugungsmodul 12 eine Anweisung, die Ausgabe des Kurbeleingabevorgangssignals zu erlauben.
  • In Antwort auf Empfang der Anweisung, die Ausgabe des Kurbeleingabevorgangssignals zu erlauben, überschreibt das Winkeltakterzeugungsmodul 12 das Register 20b des Eingabewahlmoduls 20 in „1”. Der Datenwert „1” erlaubt es dem Eingabewahlmodul 20, das Kurbeleingabevorgangssignal an die Module 22, 24, 26, 28, 32 und 34 zu geben. Danach beendet die CPU 10 die Eingabeschalttask.
  • Wie oben beschrieben, verhindert die Eingabeschalttask gemäß der Ausführungsform die Ausgabe des Kurbeleingabevorgangssignals, wenn das Kurbelsignal als normal bestimmt wird, und erlaubt die Ausgabe des Kurbeleingabevorgangssignals, wenn das Kurbelsignal als anormal bestimmt wird.
  • (3) EINGABEDIVISIONSTASK
  • Nachfolgend wird die von der CPU 10 durchzuführende Eingabedivisionstask unter Bezugnahme auf 8 beschrieben. Die Eingabedivisionstask wird jedes Mal durchgeführt, wenn eine aktive Flanke in entweder dem kurbelgeteilten Vorgangssignal, ausgeben von dem Eingabeteilmodul 32, oder dem Kurbeleingabevorgangssignal, ausgegeben von dem Eingabewahlmodul 20, erscheint, nachdem der Mikrocomputer 4 hochgefahren wurde.
  • Wie die Eingabesignaldiagnosetask wird die Eingabedivisionstask jedes Mal durchgeführt, wenn der Pegel von entweder dem kurbelgeteilten Vorgangssignal oder dem Kurbeleingabevorgangssignal sich in eine bestimmte gleiche Richtung ändert, beispielsweise von niedrig nach hoch, nachdem der Mikrocomputer 4 hochgefahren wurde.
  • Zum Start der Eingabedivisionstask nimmt die CPU 10 Bezug auf eine Information, welche die Diagnose des Kurbelsignals angibt, welche durch die Schritte S140 oder S150 im Flash-ROM 16 oder dem RAM 18 gespeichert wurde, um zu überprüfen, ob das Kurbelsignal normal ist, indem bei S310 auf das Ergebnis Bezug genommen wird.
  • Bei Bestimmung, dass das Kurbelsignal normal ist (JA im Schritt S310), bestimmt die CPU 10, ob ein Pulsfehlabschnitt im Kurbelsignal erscheint (S320); dieser Pulsfehlabschnitt enthält: ein k-faches Zeitintervall zwischen zeitlich benachbarten aktiven Flanken und deren zeitlich benachbarten aktiven Flanken.
  • Beispielsweise liest die CPU 10 den Zählwert vom Winkelzähler 28c und bestimmt, das ein Pulsfehlabschnitt in dem Kurbelsignal erscheint, wenn der ausgelesene Zählwert einer aktiven Flanke unmittelbar vor oder nach einer der zeitlich benachbarten aktiven Flanken eines Pulsfehlabschnitts entspricht.
  • Weiterhin bestimmt die ähnlich wie im Schritt S120 die CPU 10, dass ein Pulsfehlabschnitt in dem Kurbelsignal erscheint, abhängig davon, wann ein Interrupt von dem Durchgangswinkelmessmodul 26 oder dem Kurbelmessmodul 34 eingegeben wird.
  • Bei Bestimmung, dass ein Pulsfehlabschnitt im Kurbelsignal erscheint (JA im Schritt S320), setzt die CPU 10 im Schritt S330 das Teilverhältnis n des Registers 32b auf 5. Danach sendet die CPU 10 an den Winkeltaktgenerator 12 eine Anweisung, es dem Winkeltaktgenerator 12 zu erlauben, das kurbelgeteilte Vorgangssignal auszugeben (Schritt S340).
  • In Antwort auf Empfang der Anweisung, es dem Winkeltaktgenerator 12 zu erlauben, das kurbelgeteilte Vorgangssignal auszugeben, setzt der Winkeltaktgenerator 12 das Flag im Register 32b auf „1”. Das Flag „1” ermöglicht es dem Eingabeteilmodul 32, das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element auszugeben, beispielsweise die CPU 10. Danach beendet die CPU 10 die Eingabedivisionstask.
  • Ansonsten setzt bei Bestimmung, dass ein Pulsfehlabschnitt nicht im Kurbelsignal erscheint (NEIN im Schritt S320), die CPU 10 im Schritt S350 das Teilverhältnis n des Registers 32b auf 1. Danach sendet die CPU 10 an den Winkeltaktgenerator 12 eine Anweisung, die es dem Winkeltaktgenerator 12 ermöglicht, das kurbelgeteilte Vorgangssignal auszugeben (Schritt S340), und beendet die Eingabedivisionstask.
  • Bei Empfang der Anweisung, es dem Winkeltaktgenerator 12 zu ermöglichen, das Kurbelvorgangseingabesignal auszugeben, setzt der Winkeltaktgenerator 12 das Flag im Register 32b auf „1”. Das Flag „1” ermöglicht es dem Eingabeteilmodul 32, das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element auszugeben, beispielsweise die CPU 10.
  • Ansonsten verhindert bei Bestimmung, dass das Kurbelsignal anormal ist (NEIN im Schritt S310), die CPU 10 die Ausgabe des kurbelgeteilten Vorgangssignals im Schritt S360.
  • Beispielsweise sendet die CPU 10 an den Winkeltaktgenerator 12 im Schritt S360 eine Anweisung, die den Winkeltaktgenerator 12 daran hindert, das kurbelgeteilte Vorgangssignal auszugeben.
  • In Antwort auf Empfang der Anweisung, die den Winkeltaktgenerator 12 daran hindert, das kurbelgeteilte Vorgangssignal auszugeben, setzt der Winkeltaktgenerator 12 das Flag im Register 32b auf „0”. Das Flag „0” hindert das Eingabeteilmodul 32 daran das kurbelgeteilte Vorgangssignal an wenigstens ein externes Element, beispielsweise die CPU 10, auszugeben. Danach beendet die CPU 10 die Eingabedivisionstask.
  • Wie oben beschrieben, erlaubt im Gegensatz zur Eingabeschalttask die Eingabedivisionstask gemäß der Ausführungsform die Ausgabe des kurbelgeteilten Vorgangssignals, wenn das Kurbelsignal als normal bestimmt wird, und verhindert die Ausgabe des kurbelgeteilten Vorgangssignals, wenn das Kurbelsignal als anormal bestimmt wird.
  • Genauer gesagt, wenn das Kurbelsignal normal von dem Eingabewahlmodul 20 ausgegeben wird (JA im Schritt 310), wird die Ausgabe des kurbelgeteilten Vorgangssignals erlaubt (siehe Schritt S340). Dann wird ein kurbelgeteiltes Vorgangssignal mit einer Periode, die darauf basierend bestimmt wird, ob ein Pulsfehlabschnitt im Kurbelsignal erscheint, ausgegeben (siehe Schritte S320 bis S350).
  • Genauer gesagt, wenn ein Pulsfehlabschnitt nicht im Kurbelsignal erscheint, wird „5” als Teilverhältnis des Registers 32a im Eingabeteilmodul 32 gesetzt (siehe Schritt S350). Dann wird das kurbelgeteilte Vorgangssignal, erzeugt durch Division des Kurbelsignals durch das Teilverhältnis von „5”, ausgegeben (siehe 2).
  • Wenn im Gegensatz hierzu ein Pulsfehlabschnitt im Kurbelsignal erscheint, wird „1” als Teilverhältnis des Registers 32a im Eingabeteilmodul 32 gesetzt (siehe Schritt S330). Dann wird das kurbelgeteilte Vorgangssignal ausgegeben, das erzeugt wird durch Division des Kurbelsignals durch das Teilverhältnis von „1”, d. h. synchron mit dem Kurbelsignal (siehe Pulsfehlabschnitte in 2).
  • Zusätzlich, wenn das Kurbelsignal anormal vom Eingabewahlmodul 20 ausgegeben wird (NEIN im Schritt S310), wird die Ausgabe des kurbelgeteilten Vorgangssignals gesperrt (siehe Schritt S360), was dazu führt, dass kein kurbelgeteiltes Vorgangssignal ausgegeben wird (siehe Periode „C” und Periode „D”).
  • Wenn danach das Kurbelsignal wieder normal von dem Eingabesignalwahlmodul 20 ausgegeben wird, wird die Ausgabe des Kurbelwellenvorgangssignals erneut ermöglicht (siehe Schritt S340). Dann wird das Kurbelwellenvorgangssignal mit einer Periode, die basierend darauf, ob ein Pulsfehlabschnitt im Kurbelsignal auftritt, ausgegeben (siehe Schritte S320 bis S350 und die Periode „E” in 9).
  • Nachfolgend werden Signalübergänge betreffend die Diagnose des Kurbelsignals unter Bezugnahme auf 9 beschrieben.
  • Zunächst, wenn das Kurbelsignal normal der CPU 10 vom Eingabewahlmodul 20 eingegeben wird (JA im Schritt S210 von 7), wird das Kurbelsignal vom Eingabewahlmodul 20 als Eingabesignal gewählt (siehe Schritt S220 in 7), und die Ausgabe des Kurbeleingabevorgangssignals wird unterbunden (siehe Schritt S230 in 7). Danach wird basierend auf dem Kurbelsignal der Winkeltakt erzeugt.
  • Während das Kurbelsignal normal ist, wird die Ausgabe des Kurbeleingabevorgangssignals unterbunden, jedoch die Ausgabe des kurbelgeteilten Vorgangssignals ermöglicht (siehe Schritte S3120 bis S340 in 8). Aus diesem Grund werden die Eingabesignaldiagnosetask und die Eingabeschalttask jedes Mal dann aktiviert, wenn eine spezifizierte Pegeländerung in dem kurbelgeteilten Vorgangssignal auftritt.
  • Insbesondere wird jedes Mal, wenn eine spezifizierte Pegeländerung in dem kurbelgeteilten Vorgangssignal erscheint, der Wert der Aktivflankenzählvariablen von der Aktivflankenzähleinheit inkrementiert, um integriert zu werden (siehe Schritt S110 in 5). Wenn ein Pulsfehlabschnitt in dem Kurbelsignal während des Integrierens des Werts der Aktivflankenzählvariablen erscheint (JA in Schritt S120 in 5), wird überprüft, ob das Kurbelsignal normal ist, was basierend auf dem integrierten Wert der Aktivflankenzählvariablen erfolgt (siehe Schritte S130 bis S150 in 5 und Periode „A” in 9).
  • Wenn bei der Überprüfung das Kurbelsignal normal ist, ist der integrierte Wert der Aktivflankenzählvariablen innerhalb des passenden Bereichs (siehe JA in Schritt S130 von 5). Aus diesem Grund wird, nachdem bestimmt wurde, dass das Kurbelsignal normal ist (siehe Schritt S140 in 5), der Wert der Aktivflankenzählvariablen zurückgesetzt (siehe Schritt S160 in 5).
  • Wenn danach ein Fehler in dem Kurbelsignal auftritt, so dass der integrierte Wert der Aktivflankenzählvariablen außerhalb des richtigen Bereichs ist (NEIN in Schritt S130 von 5), wird bestimmt, dass das Kurbelsignal anormal ist (siehe Schritt S150 in 5). Nach der Anomaliebestimmung wird der Wert der Aktivflankenzählvariablen zurückgesetzt (siehe Schritt S160 in 5 und den Übergang der Periode „B” zur Periode „C” in 9).
  • Nachdem bestimmt wurde, dass das Kurbelsignal anormal ist, wird das Nockenflankensignal von dem Eingabewahlmodul 20 als Eingabesignal gewählt (siehe Schritt S240 von 7), und die Ausgabe des Kurbeleingabevorgangssignals wird unterbunden (siehe Schritt S250 in 7). Zusätzlich, nachdem bestimmt wurde, dass das Kurbelsignal anormal ist, wird die Ausgabe des kurbelgeteilten Vorgangssignals unterbun den (siehe Schritt S360 in 8 und Periode „C” in 9). Danach wird der Winkeltakt von der Winkeltakterzeugungseinheit 12 basierend auf dem Nockenflankensignal erzeugt.
  • Nachdem das Nockenflankensignal als Eingabesignal von dem Eingabewahlmodul 20 gewählt wurde, wird jedes Mal, wenn eine festgelegte Pegeländerung in dem Kurbeleingabevorgangssignal erscheint, der Wert der Aktivflankenzählvariablen von der Aktivflankenzähleinheit inkrementiert, um so integriert zu werden (siehe Schritt S110 von 6). Wenn der Pulsfehlabschnitt im Kurbelsignal auftritt, während der Wert der Aktivflankenzählvariablen integriert wird (siehe JA in Schritt S120 von 5), wird überprüft, ob das Kurbelsignal normal ist, basierend auf dem integrierten Wert der Aktivflankenzählvariablen (siehe Schritte S130 bis S150 von 5 und Periode „D” in 9).
  • Danach wird, während der Winkeltakt basierend auf dem Nockenflankensignal erzeugt wird, die Überprüfung des Kurbelsignals wiederholt jedes Mal dann durchgeführt, wenn eine festgelegte Pegeländerung in dem Kurbeleingabevorgangssignal erscheint (siehe Schritte S110 bis S160 in 5). Wenn während der wiederholten Überprüfung bestimmt wird, dass das Kurbelsignal normal ist (siehe Schritt S140 in 5), wird das Kurbelsignal wieder von dem Eingabewahlmodul 20 als Eingabesignal gewählt (siehe Schritt S220 in 7).
  • Danach wird, wie oben beschrieben, der Winkeltakt basierend auf dem Kurbelsignal erzeugt, während die Überprüfung des Kurbelsignals wiederholt durchgeführt wird (siehe Periode „E” in 9).
  • In der Ausführungsform ist der Mikrocomputer 4 gemäß der Ausführungsform beispielsweise dahingehend ausgelegt, dass er bestimmt, ob eine Anomalie in dem Kurbelsignal auftritt, basierend auf der Anzahl von festgelegten Pegeländerungen in dem Kurbelsignal während einer Periode zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte.
  • Der Mikrocomputer 4 kann jedoch auch so konfiguriert sein, dass er die Bestimmung basierend auf der Anzahl von bestimmten Pegeländerungen in dem Kurbelsignal während einer anderen Zeitdauer durchführt.
  • Insbesondere kann beispielsweise der Mikrocomputer 4 so ausgelegt sein, dass er bestimmt, ob eine Anomalie im Kurbelsignal auftritt, indem auf die Anzahl von bestimmten Pegeländerungen in dem Kurbelsignal während einer Periode zurückgegriffen wird. Diese Periode wird beispielsweise vom ersten Nockensignal (dem Nockenflankensignal oder dem zweiten Nockensignal) benötigt, um einen bestimmten Winkel zu drehen, beispielsweise um einen Winkel entsprechend einem Betriebszyklus des Motors.
  • 10 zeigt schematisch eine modifizierte Eingabesignaldiagnosetask, die von der CPU 10 durchzuführen ist.
  • Zunächst ist ähnlich wie in Schritt S110 von 5 der Mikrocomputer 4 so konfiguriert, dass er jedes Mal, wenn eine bestimmte Pegeländerung in dem kurbelgeteilten Vorgangssignal oder dem Kurbeleingabevorgangssignal auftritt, den Wert einer Kurbelflankenzählvariablen als der Aktivflankenzählvariablen mittels der Aktivflankenzähleinheit zur Integration inkrementiert.
  • Zusätzlich ist das Eingabewahlmodul 20 so konfiguriert, dass es beispielsweise das erste Nockensignal oder ein Signal, dessen Pegel sich vorübergehend zeitlich in einer bestimmten gleichen Richtung ändert, beispielsweise von niedrig nach hoch, jedes Mal dann ausgibt, wenn eine Änderung in dem ersten Nockensignal in gleicher Richtung erfolgt. Die modifizierte Eingabesignaldiagnosetask wird jedes Mal dann durchgeführt, wenn eine aktive Flanke in dem ersten Nockensignal erscheint, nachdem der Mikrocomputer 4 hochgefahren wurde (siehe 10).
  • Beim Start der modifizierten Eingabesignaldiagnosetask addiert die CPU 10 zu einem Wert, beispielsweise „1”, einer Nockenaktivflankenzählvariablen, deren Voreinstellwert null ist, die Anzahl von spezifizierten Pegeländerungen (Einzelaktivflanken) in dem ersten Nockensignal in Schritt S112 von 10.
  • Danach überprüft die CPU 10, ob der Wert der Nockenaktivflankenzählvariablen einen oberen Zählwert entsprechend einem spezifizierten Drehwinkel der ersten Nockenwelle CM1 im Schritt S122 erreicht. Beispielsweise wird als spezifizierter Drehwinkel der Drehwinkel der ersten Nockenwelle CM1 während eines Arbeitszyklus des Motors verwendet.
  • Bei Bestimmung, dass der Wert der Nockenaktivflankenzählvariablen nicht den oberen Zählwert entsprechend dem spezifizierten Drehwinkel des ersten Nockensignals erreicht (NEIN im Schritt S122), beendet die CPU 10 die modifizierte Eingabesignaldiagnosetask.
  • Danach wird jedes Mal, wenn eine aktive Flanke in dem ersten Nockensignal erscheint, die modifizierte Eingabesignaldiagnosetask aktiviert, so dass der Wert der Nockenaktivflankenzählvariablen wiederholt von der Aktivflankenzähleinheit inkrementiert wird.
  • Wenn als Ergebnis der wiederholten Inkrementierung bestimmt wird, dass der Wert der Nockenaktivflankenzählvariablen den oberen Zählwert erreicht (JA im Schritt S122), bestimmt die CPU 10 im Schritt S132, ob der Wert der Kurbelaktivflankenzählvariablen innerhalb eines passenden Bereichs ist. Der passende Bereich bedeutet einen geschätzten Bereich, innerhalb dessen die Anzahl von passenden spezifizierten Pegeländerungen (aktiven Flanken) in dem Kurbelsignal während einer Periode ist, die für die erste Nockenwelle benötigt wird, um einen bestimmten Winkel zu drehen, beispielsweise um einen Winkel entsprechend einem Betriebszyklus des Motors.
  • Bei Bestimmung, dass der Wert der Kurbelaktivflankenzählvariablen innerhalb des richtigen Bereichs ist (JA in Schritt S132), speichert die CPU 10 im RAM 18 oder dem Flash-ROM 16 eine Information, die angibt, dass die Diagnose des Kurbelsignals „normal” ist (Schritt S140), und geht zum Schritt S162.
  • Andererseits, bei Bestimmung, dass der Wert der Kurbelaktivflankenzählvariablen nicht innerhalb des richtigen Bereichs ist (NEIN in Schritt S132), speichert die CPU 10 im Schritt S150 im RAM 18 oder dem Flash-ROM 16 eine Information, die angibt, dass die Diagnose des Kurbelsignals „anormal” ist, und geht zum Schritt S162.
  • Nach dem Ablauf im Schritt S140 oder S150 setzt die CPU 10 die Nockenaktivflankenzählvariable und die Kurbelaktivflankenzählvariable auf den Einstellwert von null zurück und beendet die modifizierte Eingabesignaldiagnosetask.
  • (4) KURBELFLANKENINTERRUPTTASK
  • Eine Kurbelflankeninterrupttask wird nachfolgend unter Bezugnahme auf 11 beschrieben. Die Anweisungen erlauben der CPU 10, die Kurbelflankeninterrupttask jedes Mal dann durchzuführen, wenn eine aktive Flanke in dem Kurbelsignal erscheint, das von dem Eingabewahlmodul 20 als Eingabesignal ausgegeben wird (siehe Schritt S220 in 7), nachdem der Mikrocomputer 4 hochgefahren wurde.
  • Wenn das Erscheinen einer aktiven Flanke im Kurbelsignal (Eingabesignal) den Start des Kurbelflankeninterrupttaskprogramms auslöst, bestimmt die CPU 10, ob die triggeraktive Flanke das Ende eines Pulsfehlabschnitts M im Kurbelsignal darstellt (Schritt S410).
  • Wie oben beschrieben und in 6 klar zu sehen ist, ist das Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal länger als die Intervalle der anderen Abschnitte mit Ausnahme der Pulsfehlabschnitte M hierin. Aus diesem Grund ist der Zählwert T12 entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal größer als die anderen Zählwerte entsprechend einem der anderen Abschnitte hierin.
  • Wie oben beschrieben, hängt ein Messwert (Zählwert) des Durchgangswinkelmesszählers 26a von einem entsprechenden Zeitintervall zwischen zeitlich benachbarten gleichgerichteten Flanken im Kurbelsignal ab. Aus diesem Grund ist ein Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal größer als derjenige des Zählers 26a entsprechend einem anderen Zeitintervall eines der anderen Abschnitte im Kurbelsignal.
  • Zusätzlich ist der Voreinstellwert (Δθ × 2.5) des Schwellenwerts, gespeichert im Schwellenwertregister 26b, größer als der Referenzzählwert, den der Durchgangswinkelmesszähler 26a erreichen kann, während keine Pulsfehlabschnitte M im Kurbelsignal erscheinen, und kleiner als der spezifizierte Zählwert, den der Zähler 26a erreichen kann, während einer der Pulsfehlabschnitte M im Kurbelsignal erscheint.
  • Aus diesem Grund übersteigt der Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den spezifizierten Zählwert größer als der Voreinstellwert (Δθ × 2.5) des Schwellenwerts, der im Schwellenwertregister 26b gespeichert ist.
  • Wenn daher der Zählwert des Durchgangswinkelmesszählers 26a entsprechend dem Zeitintervall des Pulsfehlabschnitts Ma im Kurbelsignal den Voreinstellwert des Schwellenwerts erreicht, erzeugt das Durchgangswinkelmessmodul 26 einen Interrupt, der an die CPU 10 ausgegeben wird.
  • Wenn daher der Interrupt, der vom Durchgangswinkelmessmodul 26 ausgegeben wird, empfangen wird, bestimmt die CPU 10, dass die triggeraktive Flanke das Ende des Pulsfehlabschnitts M im Kurbelsignal darstellt (die Bestimmung im Schritt S410 ist JA).
  • Wie beispielsweise in 12 dargestellt, ist die aktive Flanke E22 die triggeraktive Flanke, die das Ende eines Pulsfehlabschnitts M darstellt.
  • Nachfolgend bestimmt die CPU 10 im Schritt S420, ob ein Kurbelpositionsbestimmungsflag F1 eine Information enthält, welche AUS anzeigt. Es sei festzuhalten, dass das Kurbelpositionsbestimmungsflag F1 beispielsweise durch eine Software im Mikrocomputer 4 gesetzt wird, wann immer der Mikrocomputer 4 hochgefahren wird. Die Information, die AUS angibt, ist als Ausgangswertinformation des Kurbelpositionsbestimmungsflags F1 während des Hochfahrens des Mikrocomputers gesetzt.
  • Wenn bestimmt wird, dass das Kurbelpositionsbestimmungsflag F1 eine Information enthält, welche den Voreinstellwert AUS anzeigt (die Bestimmung im Schritt S420 ist JA), bestimmt die CPU 10 einen Zeitpunkt unmittelbar nach Hochfahren des Mikrocomputers und geht zum Schritt S430.
  • Im Schritt S430 setzt die CPU 10 das Produkt aus „59” und der Multiplikationszahl f1, welche in der Kurbelflankeninterrupttask auf 60 gesetzt wurde, auf den Zählwert des Referenzzählers 28a. Auf ähnliche Weise setzt im Schritt S440 die CPU 10 das Produkt aus „59” und der Multiplikationszahl f1, welche in der Kurbelflankeninterrupttask auf 60 gesetzt wird, auf den Zählwert des Winkelzählers 28c.
  • Das Produkt aus „59” und der Multiplikationszahl f1 (60) zum Setzen des Zählwerts des Referenzzählers 28a erlaubt, dass der Zählwert hiervon gelöscht wird (auf null gesetzt wird), wenn die nächste aktive Flanke E23 im Kurbelsignal erscheint. Auf ähnliche Weise erlaubt das Produkt aus „59” und der Multiplikationszahl f1 (60), welche als Zählwert des Winkelzählers 28c gesetzt wird, dass dessen Zählwert bei Erscheinen der nächsten aktiven Flanke E23 im Kurbelsignal gelöscht wird (auf null gesetzt wird).
  • Nachfolgend ändert die CPU 10 im Schritt S450 die von dem Kurbelpositionsbestimmungsflag F1 gehaltene Information von AUS nach EIN.
  • Nach Abschluss der Durchführung der Anweisung im Schritt S450 oder einer negativen Bestimmung, die angibt, dass das Kurbelpositionsbestimmungsflag F1 nicht die Angabe AUS im Schritt S420 hat, setzt die CPU 10 „0” als Zählwert des Leitzählers 28b im Schritt S460.
  • Der Zählwert von null (0) im Leitzähler 28b stellt einen Zählwert dar, den sowohl der Referenzzähler 28a als auch der Winkelzähler 28c einnehmen sollen, wenn die nächste aktive Flanke E23 im Kurbelsignal erscheint.
  • Genauer gesagt, es sei angenommen, dass der Motor zum Zeitpunkt des Erscheinens der aktiven Flanke E22 im Kurbelsignal plötzlich beschleunigt, so dass die Motordrehzahl plötzlich zunimmt. Unter dieser Annahme kann ein Zeitintervall zwischen der aktiven Flanke E22 und der nächsten aktiven Flanke E23 im Kurbelsignal im Vergleich zu normalen Zeitintervallen der aktiven Flanken kurz werden. Dies kann bewirken, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c zum Erscheinungszeitpunkt der nächsten aktiven Flanke E23 nicht auf null (0) aufholen; jeder der Zähler 28a und 28b sollte zum Erscheinungszeitpunkt der nächsten aktiven Flanke E23 null (0) haben.
  • Unter dieser Annahme ist es gemäß der Ausführungsform möglich, zwangsweise den Zählwert eines jeden von Referenzzähler 28a und Winkelzähler 28c zu erhöhen, um an den Leitwert des Leitzählers 28b zu dem Zeitpunkt angepasst zu sein, zu dem die nächste aktive Flanke E23 im Kurbelsignal erscheint. Dies erlaubt, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c null (0) werden, auch wenn ein Zeitintervall zwischen der aktiven Flanke E22 und der nächsten aktiven Flanke E23 im Kurbelsignal im Vergleich zu normalen Zeitintervallen der dortigen aktiven Flanken kurz wird.
  • Zusätzlich sei angenommen, dass der Motor zum Zeitpunkt des Erscheinens der aktiven Flanke E22 im Kurbelsignal plötzlich verzögert, so dass ein Zeitintervall zwischen der aktiven Flanke E22 und der nächsten aktiven Flanke E23 im Kurbelsignal im Vergleich zu normalen Zeitintervallen der aktiven Flanken lang wird. Dies kann bewirken, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c bei der nächsten aktiven Flanke E23 den Wert null (0) übersteigen, den jeder der Zähler 28a und 28b bei der nächsten aktiven Flanke E23 annehmen sollte.
  • Unter dieser Annahme ist es gemäß der Ausführungsform möglich, zwangsweise eine Inkrementierung des Zählwerts von Referenzzähler 28a und Winkelzähler 28c zu stoppen, wenn der Zählwert den Leitwert des Leitzählers 28b erreicht. Dies erlaubt, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c null (0) werden, auch wenn ein Zeitintervall zwischen der aktiven Flanke E22 und der nächsten aktiven Flanke E23 im Kurbelsignal im Vergleich zu den normalen Zeitintervallen der dortigen aktiven Flanken lang wird.
  • Wie oben beschrieben, ist der Leitzähler 28b so ausgelegt, dass sein Zählwert zum Zeitpunkt des Erscheinens einer aktiven Flanke im Kurbelsignal einen Wert darstellt, den sowohl der Referenzzähler 28a als auch der Winkelzähler 28c zum Zeitpunkt des Erscheinens der nächsten aktiven Flanke im Kurbelsignal einnehmen sollten. Dies erlaubt, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c geleitet werden, auch wenn der Motor plötzlich beschleunigt oder verzögert.
  • Nach Schritt S460 sendet die CPU 10 an das Winkeltaktmodul 28 im Schritt S470 eine Anweisung, welche den Freigabemodus anzeigt.
  • Die Anweisung, die den Freigabemodus anzeigt und die vom Winkeltaktmodul 28 empfangen wird, erlaubt dem Modul 28 als Moduswert, einen Sperrmoduswert zu speichern, der den Freigabemodus im zweiten Register 28e anzeigt. Der Freigabemoduswert, der im zweiten Register 28e gespeichert ist, erlaubt dem Referenzzähler 28a, in dem oben beschriebenen Freigabemodus zu zählen, auch wenn „0” im Zählwert des Leitzählers 28b gesetzt ist.
  • Nachfolgend sendet im Schritt S480 die CPU 10 an das Multiplikationstakterzeugungsmodul 24 eine Anweisung, eine im ersten Register 24a gespeicherte Multiplikationstaktreferenzzeit zu korrigieren.
  • Genauer gesagt, die Anweisung lautet, als im ersten Register 24a zu speichernde Multiplikationstaktreferenzzeit einen Wert zu setzen, der berechnet wird durch Division des Zählwerts (gemessenes Intervall), der von dem Flankenintervallmessmodul 22 gesendet wird, durch einen bestimmten Wert.
  • Bei Empfang der Anweisung arbeitet das Multiplikationstakterzeugungsmodul 24 dahingehend, um:
    den von dem Flankenintervallmessmodul 22 zu einem Zeitpunkt zugeführten Zählwert durch einen bestimmten Wert zu dividieren; dieser Zeitpunkt ist synchronisiert mit dem Erscheinen einer aktiven Flanke in dem Kurbelsignal unmittelbar nach Empfang der Anweisung; und
    einen durch die Division berechneten Wert im ersten Register 24a als korrigierte Multiplikationstaktreferenzzeit zu speichern.
  • Insbesondere ist, wie in 12 gezeigt, der Zählwert entsprechend einem Zeitintervall, beispielsweise T22, eines Pulsfehlabschnitts M im Kurbelsignal k-mal größer als derjenige entsprechend einem Zeitintervall, beispielsweise T21, eines der anderen Abschnitte mit Ausnahme des Pulsfehlabschnitts M. Es sei festzuhalten, dass die Breite des Zeitintervalls „T21” länger als die des Zeitintervalls „T22” ist, was mit „FLANKENINTERVALL” in 12 dargestellt ist und unabhängig von der Länge des Zeitintervalls „T21” ist. Insbesondere ist die Länge des Zeitintervalls „T22” größer als diejenige des Zeitintervalls „T21” in 12.
  • Bei der Ausführungsform wird daher der bestimmte Wert auf k gesetzt, was ein Verhältnis eines Zeitintervalls zwischen aktiven Flanken eines Pulsfehlabschnitts M im Kurbelsignal zu demjenigen zwischen aktiven Flanken eines anderen Abschnitts hierin darstellt; dieses k ist auf 3 gesetzt.
  • Dies erlaubt, dass jede der Multiplikationstaktreferenzzeiten im Wesentlichen konstant ist, so dass der Taktzyklus des Multiplikationstakts im Wesentlichen konstant ist (siehe „MULTIPLIKATIONSTAKT” in 12.
  • Nachfolgend setzt im Schritt S490 die CPU 10 „2” auf einen Zählwert in einem Divisionszähler C1 und geht zum Schritt S530. Beispielsweise kann die CPU 10 den Divisionszähler C1 durch eine Software (wenigstens eines der Programme) betreiben. Ein Anfangswert des Divisionszählers C1 ist auf „0” gesetzt.
  • Wenn andererseits bestimmt wird, dass die triggeraktive Flanke nicht das Ende eines Pulsfehlabschnitts M im Kurbelsignal darstellt (die Bestimmung im Schritt S410 ist NEIN), bestimmt die CPU 10 im Schritt S500, ob die triggeraktive Flanke den Kopf eines Pulsfehlabschnitts M darstellt.
  • In der Ausführungsform führt die CPU 10 die Bestimmung im Schritt S500 beispielsweise dadurch durch, dass bestimmt wird, ob der Zählwert des Winkelzählers 28c eine Drehposition der Kurbelwelle CS entsprechend dem Kopf eines Zahnlückenabschnitts 51c darstellt. Wenn bestimmt wird, dass der Zählwert des Winkelzählers 28c die Drehposition der Kurbelwelle CS entsprechend dem Kopf eines Zahnlückenab schnitts 51c darstellt, bestimmt die CPU 10 im Schritt S500, das die triggeraktive Flanke den Kopf eines Pulsfehlabschnitts M darstellt.
  • Genauer gesagt, wenn bestimmt wird, dass die triggeraktive Flanke den Kopf eines Pulsfehlabschnitts M darstellt (die Bestimmung im Schritt S500 ist JA), setzt die CPU 10 das Produkt aus „59” und der Multiplikationszahl f1, welche in der Kurbelflankeninterrupttask auf 60 gesetzt wurde, auf den Zählwert des Leitzählers 28b (Schritt S510).
  • Dies deshalb, als der Zählwert des Referenzzählers 28a und des Winkelzählers 28c das Produkt aus „59” und der Multiplikationszahl f1 (60) annehmen sollte, wenn die nächste aktive Flanke entsprechend dem Ende eines Pulsfehlabschnitts M im Kurbelsignal erscheint.
  • Nach Abschluss der Durchführung der Anweisung im Schritt S510 oder einer negativen Bestimmung im Schritt S500 sendet die CPU 10 im Schritt S520 an das Winkeltaktmodul 28 eine Anweisung, welche den Sperrmodus anzeigt. Danach geht die CPU 10 zum Schritt S530.
  • Die Anweisung, welche den Sperrmodus angibt und vom Winkeltaktmodul empfangen wird, erlaubt es dem Modul 28, als Moduswert einen Sperrmoduswert zu speichern, der den Sperrmodus im zweiten Register 28e anzeigt. Der Sperrmoduswert, der im zweiten Register 28e gespeichert ist, erlaubt es dem Referenzzähler 28a, in dem Sperrmodus zu zählen, wie oben beschrieben.
  • Im Schritt S530 bestimmt die CPU 10, ob das Kurbelpositionsbestimmungsflag F1 die Information EIN hält.
  • Wenn bestimmt wird, dass das Kurbelpositionsbestimmungsflag F1 die Information EIN hält (die Bestimmung im Schritt S530 ist JA), inkrementiert die CPU 10 im Schritt S540 den Wert des Divisionszählers C1 um 1 und geht zum Schritt S550.
  • Im Schritt S550 überprüft die CPU 10, ob der Zählwert des Divisionszählers C1 auf „0” gesetzt ist.
  • Wenn überprüft wird, dass der Zählwert des Divisionszählers C1 auf „0” gesetzt ist (die Bestimmung im Schritt S550 ist JA), geht die CPU 10 zum Schritt S560. Im Schritt S560 erzeugt die CPU 10 einen Vorgang, der eine Aktivierungszeit für eines der individuellen Steuerziele bestimmt, welche der Motorsteuerung zugehörig sind, beispielsweise Injektor und/oder Zündung, für einen entsprechenden der einzelnen Zylinder.
  • Parallel zu der Kurbelflankeninterrupttask ist die CPU 10 gemäß der Ausführungsform programmiert, um:
    eine passende Warteperiode und eine passende aktive Periode für jedes der individuellen Steuerziele zu berechnen, basierend auf den Messsignalen, die von der Eingabeschaltung 2 eingegeben werden; und
    die berechneten Warteperioden und aktiven Perioden für ein entsprechendes der Steuerziele auf entsprechende Zählwerte der ersten und zweiten Timer der Timerausgabeeinheit 14 jedes Mal dann zu setzen, wenn der Vorgang von der Kurbelflankeninterrupttask erzeugt wird.
  • Wenn die Zählwerte in den ersten und zweiten Timern für ein entsprechendes der Steuerziele gesetzt werden, arbeitet die Timerausgabeeinheit 14 dahingehend, um:
    mit der Ausgabe der aktiven Zeit für ein entsprechendes der Steuerziele zu warten, bis die Warteperiode hierfür basierend auf dem Zählwert des ersten Timers verstrichen ist; und
    an die Ausgabeschaltung 3 eine Anweisung auszugeben, ein entsprechendes der Steuerziele für die Aktivierungsperiode hierfür basierend auf dem Zählwert des zweiten Timers zu aktivieren.
  • Die Ausgabeschaltung 3 arbeitet dahingehend, um:
    die Anweisung für ein entsprechendes der Steuerziele zu empfangen;
    ein entsprechendes der Steuerziele für dessen Aktivierungsperiode basierend auf der empfangenen Anweisung zu aktivieren.
  • Nach Abschluss der Durchführung der Anweisung im Schritt S560 setzt die CPU 10 im Schritt 570 beispielsweise „5” als Zählwert für den Divisionszähler C1. „5”, welches als Zählwert für den Divisionszähler C1 gesetzt wird, erlaubt der CPU 10, einen Vorgang in gleichmäßigen Intervallen von 30 Grad Kurbelwinkel auszugeben. Die gleichmäßigen Intervalle von 30 Grad Kurbelwinkel werden nachfolgend als „Vorgangsintervalle” bezeichnet.
  • Nach Beendigung der Durchführung der Anweisung in S570, bei einer negativen Bestimmung im Schritt S530, die darstellt, dass das Kurbelpositionsbestimmungsflag F1 auf EIN gesetzt ist, oder einer negativen Bestimmung im Schritt S550, die darstellt, dass der Zählwert des Divisionszählers C1 unterschiedlich von „0” ist, verlässt die CPU 10 die Kurbelflankeninterrupttask.
  • Spezielle Arbeitsweisen der jeweiligen Module 22, 24, 26 und 28 unter Steuerung der CPU 10 und Änderungen der Parameter, beispielsweise der Zählwerte der Zähler 22a, 28a, 28b und 28c, werden nachfolgend unter Bezugnahme auf die 11, 12 und 13 beschrieben.
  • Unmittelbar nachdem der Mikrocomputer 4 hochgefahren wurde (siehe Abschnitt e20 in 12), arbeitet das Durchgangswinkelmessmodul 26 nicht normal und der Winkelzähler 28c führt nicht einen Zählvorgang durch. Aus diesem Grund sind die Bestimmungen in Schritt S410 und S500 entsprechend negativ, so dass die Durchführung der CPU 10 über den Schritt S520 zur Anweisung von Schritt S530 verschoben wird.
  • Da zu diesem Zeitpunkt das Kurbelpositionsbestimmungsflag F1 AUS als Voreinstellinformation hält, ist die Bestimmung im Schritt S530 NEIN, so dass die Kurbelflankeninterrupttask verlassen wird.
  • Danach werden die Anweisungen im Schritt S410, S500, S520 und S530 wiederholt von der CPU 10 in dieser Reihenfolge durchgeführt, wann immer eine aktive Flanke im Kurbelsignal erscheint (siehe Abschnitt e21 in 12).
  • Während der wiederholten Durchführung der Anweisungen in den Schritten S410, S500, S520 und S530 übersteigt der Zählwert des Durchgangswinkelmesszählers 26a den Schwellenwert im Schwellenwertregister 26b, bevor eine aktive Flanke E22 in dem Kurbelsignal das Ende des Pulsfehlabschnitts M anzeigt (siehe 6). Während der wiederholten Durchführung der Anweisung in den Schritten S410, S500, S520 und S530 ist festzuhalten, dass, da der Zählwert des Winkelzählers 28c nicht den Kopf eines Pulsfehlabschnitts M darstellt, die Bestimmung im Schritt S500 negativ ist.
  • In 6 stellt beispielsweise das Bezugszeichen E13 an der aktiven Flanke im Kurbelsignal das Ende eines Pulsfehlabschnitts M dar.
  • Dies erlaubt es dem Durchgangswinkelmessmodul 26, einen Interrupt zu erzeugen und an die CPU 10 auszugeben. Somit wird der Interrupt von der CPU 10 empfangen, so dass, wenn die aktive Flanke E22 im Kurbelsignal nach Empfang des Interrupts erscheint, bestimmt wird, dass die aktive Flanke E22 das Ende eines Pulsfehlabschnitts M im Kurbelsignal darstellt (die Bestimmung im Schritt S410 ist JA). Somit wird die Durchführung durch die CPU 10 zum Schritt S420 und danach verschoben.
  • Da zu diesem Zeitpunkt das Kurbelpositionsbestimmungsflag F1 auf eine Information gesetzt ist, welche AUS darstellt, ist die Bestimmung im Schritt S420 bejahend, so dass die Durchführung der CPU 10 zum Schritt S430 verschoben wird.
  • Im Schritt S430 wird der Zählwert des Referenzzählers 28a auf das Produkt aus „59” und der Multiplikationszahl f1 (60) gesetzt und der Zählwert des Winkelzählers 28c wird auf das Produkt aus „59” und der Multiplikationszahl f1 (60) gesetzt (Schritt S440). Danach wird das Kurbelpositionsbestimmungsflag F1 auf eine Information gesetzt, welche EIN angibt (S450).
  • Nachfolgend wird im Schritt S460 der Zählwert des Leitzählers 28b auf „0” gesetzt und der Referenzzähler 28a führt im Schritt S470 den Hochzählvorgang in dem Freigabemodus durch.
  • Selbst wenn der Zählwert des Leitzählers 28b im Schritt S360 auf „0” gesetzt ist, da der Betriebsmodus des Referenzzählers 28a im Schritt S470 in den Freigabemodus versetzt ist, zählt der Referenzzähler 28a kontinuierlich hoch, bis der Zählwert die obere Grenze erreicht, die im ersten Register 28d gespeichert ist (siehe Abschnitt e23 in 12).
  • Nachfolgend wird im Schritt S480 die Multiplikationstaktreferenzzeit von T22 nach T22/3 korrigiert (siehe „T22/3” in 12) und danach wird die Durchführung der CPU 10 zum Schritt S530 verschoben. Zum Zeitpunkt des Verschiebens ist, da das Kurbelpositionsbestimmungsflag F1 auf die Information EIN gesetzt ist, die Bestimmung im Schritt S530 JA, so dass im Schritt S540 der Divisionszähler C1 um 1 dekrementiert wird.
  • Die Dekrementierung erlaubt, dass der Zählwert des Divisionszählers C1, der im Schritt S490 unmittelbar vor Schritt S530 in „2” gesetzt wurde, nach „1” verändert wird. Da zu diesem Zeitpunkt der Zählwert des Divisionszählers C1 nicht „0” wird, ist die Bestimmung in S550 NEIN, so dass die Kurbelflankeninterrupttask verlassen wird.
  • Wenn die nächste aktive Flanke E23 im Kurbelsignal entsprechend der Drehung der Kurbelwelle CS durch Δθ Grad Kurbelwelle erscheint (siehe 12), werden die Zählwerte von Referenzzähler 28a und Winkelzähler 28c von dem Produkt aus „59” und der Multiplikationszahl f1 (60) auf das Produkt aus „60” und der Multiplikationszahl f1 (60) inkrementiert. Das Produkt aus „60” und der Multiplikationszahl f1 (60) wird angepasst an die obere Grenze von Referenzzähler 28a und Winkelzähler 28c, die im ersten Register 28d gespeichert ist. Aus diesem Grund werden die Zählwerte von Referenzzähler 28a und Winkelzähler 28c synchron mit der aktiven Flanke E23, die im Kurbelsignal erscheint, gelöscht (auf null gesetzt) (siehe 12).
  • Zusätzlich, wenn die nächste aktive Flanke E23 in dem Kurbelsignal entsprechend der Drehung der Kurbelwelle CS durch Δθ Grad Kurbelwelle erscheint, sind die Bestimmungen im Schritt S410 und S500 jeweils negativ, so dass der Betriebsmodus des Referenzzählers 28a im Schritt S520 von dem Freigabemodus in den Sperrmodus versetzt wird Danach ist zu diesem Zeitpunkt, da das Kurbelpositionsbestimmungsflag F1 auf die Information EIN gesetzt ist, die Bestimmung in Schritt S530 JA, so dass im Schritt S540 der Divisionszähler C1 um 1 dekrementiert wird.
  • Die Dekrementierung erlaubt, dass der Zählwert des Divisionszählers C1 von „1” aus Schritt S540 nach „0” versetzt wird. Da der Zählwert des Divisionszählers C1 „0” wird, ist die Bestimmung im Schritt S550 JA, so dass im Schritt S560 die Vorgänge, welche Aktivierungszeitpunkte für die einzelnen Steuerziele in Verbindung mit der Motorsteuerung bestimmen, erzeugt werden. Danach wird der Zählwert des Divisionszählers C1 im Schritt S570 auf „5” gesetzt und die Kurbelflankeninterrupttask verlassen.
  • Wie oben beschrieben, werden nach der bejahenden Bestimmung im Schritt S410, bei der eine aktive Flanke das Ende eines Pulsfehlabschnitts M im Kurbelsignal nach dem Hochfahren des Mikrocomputers anzeigt, die Anweisungen im Schritt 410, S500 und S520 bis S570 wiederholt von der CPU 10 in dieser Reihenfolge jedes Mal dann durchgeführt, wenn eine aktive Flanke im Kurbelsignal erscheint. Die wiederholte Durchführung der Anweisungen im Schritt S410, S500 und S520 bis 570 stoppt bei Schritt S500, wenn eine aktive Flanke, die im Kurbelsignal erscheint, den Kopf eines Pulsfehlabschnitts M hierin darstellt (siehe Abschnitt e24 in 13).
  • Wenn eine aktive Flanke (E25) (siehe 13) im Kurbelsignal erscheint und den Kopf eines Pulsfehlabschnitts M hierin anzeigt (die Bestimmung im Schritt S500 ist JA), wird der Zählwert des Leitzählers 28b im Schritt S510 auf das Produkt aus „59” und der Multiplikationszahl f1 (60) gesetzt. Danach werden die Anweisungen S520 bis S570 von der CPU 10 durchgeführt (siehe Abschnitt e25 in 13).
  • Wenn danach die nächste aktive Flanke (E26) im Kurbelsignal erscheint, wird bestimmt, dass die aktive Flanke (E26) das Ende des Pulsfehlabschnitts darstellt (die Bestimmung im Schritt S410 ist JA). Da zu diesem Zeitpunkt das Kurbelpositionsbestimmungsflag F1 auf die Information EIN gesetzt ist, ist die Bestimmung im Schritt S420 NEIN, so dass die Durchführung der CPU 10 zum Schritt S460 verschoben wird.
  • Danach zählt, wie oben beschrieben, der Referenzzähler 28a kontinuierlich mit unverändertem Zählwert des Leitzählers 28b hoch, bis der Zählwert des Referenzzählers 28a gelöscht wird (auf null gesetzt wird) (siehe Abschnitt e26 in 13). Danach werden, wie oben beschrieben, die Anweisungen der Schritte S410, S500 und S520 bis S570 wiederholt von der CPU 10 durchgeführt, bis bestimmt wird, dass ein aktive Flanke in dem Kurbelsignal erscheint und den Kopf eines Pulsfehlabschnitts M anzeigt (siehe Abschnitt e27 in 13).
  • (5) NOCKENFLANKENINTERRUPTTASK
  • Eine Nockenflankeninterrupttask wird nachfolgend unter Bezugnahme auf 14 beschrieben. Die Anweisungen erlauben der CPU 10, die Nockenflankeninterrupttask jedes Mal dann durchzuführen, wenn eine aktive Flanke in dem Nockenflankensignal erscheint, das von dem Eingabewahlmodul 20 als Eingabesignal ausgegeben wird (siehe Schritt S240 in 7), nachdem der Mikrocomputer 4 hochgefahren wurde.
  • Wenn ein Erscheinen einer aktiven Flanke in dem Nockenflankensignal (Eingabesignal) das Hochfahren des Nockenflankeninterrupttaskprogramms auslöst, bestimmt die CPU 10 im Schritt S610, ob ein Nockenpositionsbestimmungsflag F2 die Information AUS hält. Es sei festzuhalten, dass das Nockenpositionsbestimmungsflag F2 beispielsweise von Software im Mikrocomputer 4 gesetzt wird, wann immer der Mikrocomputer 4 hochgefahren wird. Die Information, welche AUS anzeigt, ist als Voreinstellungsinformation des Nockenpositionsbestimmungsflags F2 während des Hochfahrprozesses des Mikrocomputers gesetzt.
  • Wenn bestimmt wird, dass das Nockenpositionsbestimmungsflag F2 die Information enthält, welche den Voreinstellwert AUS angibt (die Bestimmung im Schritt S610 ist JA), bestimmt die CPU 10 einen Zeitpunkt unmittelbar nach Hochfahren des Mikrocomputers und geht zum Schritt S620.
  • Im Schritt S620 bestimmt die CPU 10, ob der Zählwert des Leitzählers 28b gleich oder größer als das Zweifache der Multiplikationszahl f2 ist, welche in der Nockenflankeninterrupttask im zweiten Register 24b gemäß obiger Beschreibung auf 1200 gesetzt wurde. Mit anderen Worten, die CPU 10 bestimmt, ob der Zählwert des Leitzählers 28b gleich oder größer als 2400 ist (= 2 × 1200). Als Voreinstellung wird der Zählwert des Leitzählers 28b auf „0” gesetzt.
  • Wenn bestimmt wird, dass der Zählwert des Leitzählers 28b gleich oder größer als das Zweifache der Multiplikationszahl f2 ist (die Bestimmung im Schritt S620 ist JA), geht die CPU 10 zum Schritt S630.
  • Im Schritt S630 setzt die CPU 10 Anfangswerte der jeweiligen Zählwerte von Referenzzähler 28a, Leitzähler 28b und Winkelzähler 28c.
  • Genauer gesagt, bei der Ausführungsform wird vorab bestimmt, dass jede aktive Flanke in dem Nockenflankensignal entspricht:
    welchem von ersten und zweiten Nockensignalen; und
    welcher von steigenden und fallenden Flanken in jedem von ersten und zweiten Nockensignalen; und
    welchem von hohen und niedrigen Pegeln in dem anderen der ersten und zweiten Nockensignale.
  • Weiterhin werden in der Ausführungsform Anfangswerte, die im Referenzzähler 28a zu speichern sind, vorab für die jeweiligen aktiven Flanken im Nockenflankensignal bestimmt. Auf ähnliche Weise werden Anfangswerte zur Speicherung im Leitzähler 28b vorab für die jeweiligen aktiven Flanken im Nockenflankensignal bestimmt und Anfangswerte zur Speicherung im Winkelzähler 28c werden vorab für die jeweiligen aktiven Flanken im Nockenflankensignal bestimmt.
  • 14 zeigt schematisch Entsprechungen zwischen den individuellen Anfangswerten der jeweiligen Zähler 28a bis 28c und den individuellen aktiven Flanken in dem Nockenflankensignal im Tabellenformat.
  • Genauer gesagt, wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer steigenden Flanke im ersten Nockensignal entspricht, wobei das zweite Nockensignal auf niedrigem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „6000”, „0” und „6000” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer steigenden Flanke im ersten Nockensignal entspricht, wobei das zweite Nockensignal auf hohem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „3600”, „4800” und „3600” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer fallenden Flanke im ersten Nockensignal entspricht, wobei das zweite Nockensignal auf niedrigem Pegel an einem der Änderungspunkte Q ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „5700”, „6900” und „5700” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer fallenden Flanke im ersten Nockensignal entspricht, wobei das zweite Nockensignal auf hohem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „1200”, „2400” und „1200” gesetzt.
  • Zusätzlich, wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer steigenden Flanke im zweiten Nockensignal entspricht, wobei das erste Nockensignal auf niedrigem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „2400”, „3600” und „2400” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer steigenden Flanke im zweiten Nockensignal entspricht, wobei das erste Nockensignal auf hohem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „0”, „1200” und „0” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer fallenden Flanke im zweiten Nockensignal entspricht, wobei das erste Nockensignal auf niedrigem Pegel an einem der Änderungspunkte Q ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „2100”, „3300” und „2100” gesetzt.
  • Wenn eine aktive Flanke, die in dem Nockenflankensignal erscheint, einer fallenden Flanke im zweiten Nockensignal entspricht, wobei das erste Nockensignal auf hohem Pegel an einem der Änderungspunkte P ist, werden die Anfangswerte der Zähler 28a, 28b und 28c auf „4800”, „6000” und „4800” gesetzt.
  • Es sei festzuhalten, dass „steigende Flanke” und „fallende Flanke” jeweils in 12 durch die Markierung ↑ und die Markierung ↓ dargestellt sind und dass „niedriger Pegel” und „hoher Pegel” durch die Buchstaben „L” und „H” in 12 dargestellt sind.
  • In der Ausführungsform werden beispielsweise Daten, welche die Entsprechungen zwischen den individuellen Anfangswerten der jeweiligen Zähler 28a bis 28c und den individuellen aktiven Flanken im Nockenflankensignal angeben, vorab in einer Tabelle T gespeichert. Weiterhin ist die Tabelle T ein Beispiel, welches vorab im Flash-ROM 16 gespeichert wird.
  • Insbesondere nimmt im Schritt S630 die CPU 10 auf Daten der Tabelle T Bezug, um Anfangswerte für die jeweiligen Zähler 28a bis 38c auszulesen; diese ausgelesenen Anfangswerte entsprechen einer momentanen aktiven Flanke, die im Nockenflankensignal erscheint. Dann speichert die CPU 10 im Schritt S630 die ausgelesenen Anfangswerte in den jeweiligen Zählern 28a bis 28c.
  • Danach ändert im Schritt S640 die CPU 10 die von dem Nockenpositionsbestimmungsflag F2 gehaltene Information von AUS nach EIN und geht zum Schritt S670.
  • Wenn andererseits bestimmt wird, dass der Zählwert des Leitzählers 28b kleiner als das Zweifache der Multiplikationszahl f2 ist (die Bestimmung im Schritt S620 ist NEIN), geht die CPU 10 zum Schritt S670, wobei die Anweisungen der Schritte S630 und S640 übersprungen werden.
  • Wenn andererseits bestimmt wird, dass das Nockenpositionsbestimmungsflag F2 die Information EIN hält (die Bestimmung im Schritt S610 ist NEIN), geht die CPU 10 zum Schritt S650.
  • Im Schritt S650 bestimmt die CPU 10, ob der Zählwert des Leitzählers 28b gleich oder größer als das Produkt aus Multiplikationszahl f2 (1200) und der Anzahl von Zylindern ist, welche bei der Ausführungsform 6 beträgt. Mit anderen Worten, die CPU 10 bestimmt, ob der Zählwert des Leitzählers 28b gleich oder größer als 7200 ist (= 6 × 1200).
  • Wenn bestimmt wird, dass der Zählwert des Leitzählers 28b gleich oder größer als das Produkt aus Multiplikationszahl f2 (1200) und der Anzahl (6) der Zylinder ist (die Bestimmung im Schritt S650 ist JA), geht die CPU 10 zum Schritt S660. Im Schritt S660 setzt die CPU 10 „0” als Zählwert des Leitzählers 28b und geht zum Schritt S670.
  • Wenn andererseits bestimmt wird, dass der Zählwert des Leitzählers 28b kleiner als das Produkt aus Multiplikationszahl f2 (1200) und der Anzahl (6) der Zylinder ist (die Bestimmung im Schritt S550 ist NEIN), geht die CPU 10 zum Schritt S670, wobei die Anweisung im Schritt S660 übersprungen wird.
  • Im Schritt S670 überprüft die CPU 10, ob der Zählwert des Leitzählers 28b „0” ist.
  • Wenn bestimmt wird, dass der Zählwert des Leitzählers 28b auf „0” gesetzt ist (die Bestimmung im Schritt S670 ist JA), sendet die CPU 10 an das Winkeltaktmodul 28 im Schritt S680 ähnlich zum Schritt S470 eine Anweisung, welche den Freigabemodus anzeigt. Dies erlaubt dem Referenzzähler 28a, in dem Freigabemodus gemäß obiger Beschreibung zu zählen, selbst wenn „0” im Zählwert des Leitzählers 28b gesetzt ist.
  • Wenn andererseits bestimmt wird, dass der Zählwert des Leitzählers 28b unterschiedlich von „0” ist (die Bestimmung im Schritt S670 ist NEIN), sendet die CPU 10 im Schritt S690 ähnlich zum Schritt S520 an das Winkeltaktmodul 28 eine Anweisung, welche den Sperrmodus angibt. Dies erlaubt dem Referenzzähler 28a, in dem Sperrmodus zu zählen, wie oben beschrieben.
  • Nach Einrichtung des Betriebsmodus des Referenzzählers 28a im Schritt S680 oder S690 bestimmt die CPU 10, ob die triggeraktive Flanke einen Änderungspunkt unmittelbar vor einem Änderungspunkt Q darstellt (S700). Mit anderen Worten, die CPU 10 bestimmt im Schritt S700, ob die triggeraktive Flanke eine aktive Flanke darstellt, deren nächste aktive Flanke einem Änderungspunkt Q entspricht.
  • In der Ausführungsform bestehen gemäß den 2, 15 und 16 die Änderungspunkte Q aus:
    einem Änderungspunkt Q1, bei dem der Pegel des ersten Nockensignals sich kurzfristig in einer Richtung von hoch nach niedrig ändert, während das zweite Nockensignal auf niedrigem Pegel ist; und
    einem Änderungspunkt Q2, bei dem der Pegel des zweiten Nockensignals sich kurzfristig in einer Richtung von hoch nach niedrig ändert, während das erste Nockensignal auf niedrigem Pegel ist.
  • Somit ist der Änderungspunkt P1, an dem der Pegel des zweiten Nockensignals sich kurzfristig in einer Richtung von hoch nach niedrig ändert, während das erste Nockensignal auf hohem Pegel ist, ein Änderungspunkt unmittelbar vor dem Änderungspunkt Q1. Auf ähnliche Weise ist ein Änderungspunkt P2, an dem der Pegel des ersten Nockensignals sich kurzfristig in einer Richtung von hoch nach niedrig ändert, während das zweite Nockensignal auf hohem Pegel ist, ein Änderungspunkt unmittelbar vor dem Änderungspunkt Q2.
  • Beispielsweise nimmt die CPU 10 im Schritt S700 Bezug auf die Daten der Tabelle T, um zu bestimmen, ob die triggeraktive Flanke einen Änderungspunkt unmittelbar vor einem Änderungspunkt Q darstellt, basierend auf dem Ergebnis der Bezugnahme.
  • Wenn bestimmt wird, dass die triggeraktive Flanke einen Änderungspunkt unmittelbar vor einem Änderungspunkt Q darstellt (die Bestimmung im Schritt S700 ist JA), geht die CPU 10 zum Schritt S710. Im Schritt S710 sendet die CPU 10 an das Eingabewahlmodul 20 eine Anweisung, das wenigstens eine Datenbit im Register 20b von dem Voreinstellwert „1” auf „0” neu zu schreiben.
  • Der Datenwert „0” verhindert, dass das Eingabewahlmodul 20 das Kurbelsignal und das Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 weitergibt.
  • Wenn andererseits bestimmt wird, dass die triggeraktive Flanke nicht einen Änderungspunkt unmittelbar vor einem Änderungspunkt Q darstellt (die Bestimmung im Schritt S700 ist NEIN), geht die CPU 10 zum Schritt S720. Im Schritt S720 hält die CPU 10 den Voreinstellwert „1” des wenigstens einen Datenbits unverändert, was es dem Eingabewahlmodul 20 ermöglicht, kontinuierlich das Kurbelsignal und das Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 weiterzugeben.
  • Nach Einrichtung des Betriebszustands des Eingabewahlmoduls 20 im Schritt S710 oder S720 bestimmt die CPU 10 im Schritt S730, ob das Nockenpositionsbestimmungsflag F2 die Information EIN hält und ob die triggeraktive Flanke nicht einem Änderungspunkt Q entspricht.
  • Wenn bestimmt wird, dass entweder das Nockenpositionsbestimmungsflag F2 die Information AUS hält oder die triggeraktive Flanke einem Änderungspunkt Q entspricht (die Bestimmung im Schritt S730 ist NEIN), verlässt die CPU 10 die Nockenflankeninterrupttask.
  • Wenn andererseits bestimmt wird, dass das Nockenpositionsbestimmungsflag F2 die Information EIN hält und die triggeraktive Flanke nicht einem Änderungspunkt Q entspricht (die Bestimmung im Schritt S730 ist JA), geht die CPU 10 zum Schritt S740.
  • Im Schritt S740 überprüft die CPU 10, ob ein Zählwert eines Vorgangszählers C2 größer als „0” ist. Beispielsweise kann die CPU 10 den Vorgangszähler C2 durch eine Software (wenigstens eines von Programmen) betreiben. In der Ausführungsform setzt die CPU 10 als Voreinstellwert „0” für den Zählwert des Vorgangszählers C2.
  • Wenn bestimmt wird, dass der Zählwert des Vorgangszählers C2 größer als „0” ist (die Bestimmung im Schritt S740 ist JA), erzeugt die CPU 10 Vorgänge, deren Anzahl dem Zählwert des Vorgangszählers C2 entspricht, und geht zum Schritt S760. Jeder der Vorgänge bestimmt einen Aktivierungszeitpunkt für eines der einzelnen Steuerziele, die der Motorsteuerung zugeordnet sind, beispielsweise Injektor und/oder Zündung für einen entsprechenden der einzelnen Zylinder.
  • Wenn andererseits bestimmt wird, dass der Zählwert des Vorgangszählers C2 nicht größer als „0” ist (die Bestimmung im Schritt S740 ist NEIN), geht die CPU 10 zum Schritt S760, wobei die Anweisung im Schritt S750 übersprungen wird.
  • Im Schritt S760 speichert die CPU 10 einen Schwellenwert im Schwellenwertregister 26b. In der Ausführungsform wird der Schwellenwert für die Nockenflankeninterrupttask zur Speicherung im Schwellenwertregister 26b erhalten auf der Grundlage von:
    einem Drehwinkel der ersten und zweiten Nockenwellen CM1 und CM2 von einem Änderungspunkt P, benötigt zur Erzeugung eines Vorgangs;
    Winkelintervallen, an denen die Drehpositionen von erster und zweiter Nockenwelle CM1 und CM2 einen der TDCs der einzelnen Zylinder erreichen; und
    der Multiplikationszahl f2 (1200.
  • Der Drehwinkel von der ersten und zweiten Nockenwelle CM1 und CM2 von einem Änderungspunkt P aus, benötigt zur Erzeugung eines Vorgangs, wird in der Ausführungsform als „15 Grad Kurbelwinkel” bestimmt; dieser Drehwinkel wird als „Vorgangserzeugungsintervall” bezeichnet.
  • Die Winkelintervalle, an denen die Drehposition einer jeden der ersten und zweiten Nockenwelle CM1 und CM2 einen der TDCs der einzelnen Zylinder erreicht, wird als „120 Grad Kurbelwinkel” bei der Ausführungsform bestimmt; diese Winkelintervalle werden als „TDC-Winkel” bezeichnet.
  • Insbesondere wird der Schwellenwert für die Nockenflankeninterrupttask bestimmt als „15/(120/1200) = 15 × (1200/120) = 150”. Der Schwellenwert „150” wird im Schritt S760 im Schwellenwertregister 26b gespeichert.
  • Es sei festzuhalten, dass zum Zeitpunkt, zu dem die Durchführung der Anweisung im Schritt S760 abgeschlossen ist, der Zählwert im Durchgangswinkelmesszähler 26a die Anzahl von aktiven Flanken darstellt, beispielsweise der steigenden Flanken der Multiplikationstaktimpulse des Multiplikationstakts zwischen zwei zeitlich benachbarten aktiven Flanken des Nockenflankensignals (Eingabesignals) an den jeweiligen Änderungspunkten P. Die Anzahl von aktiven Flanken (steigenden Flanken) der Multiplikati onstaktimpulse stellen einen Rotationswinkel der ersten und zweiten Nockenwellen CM1 und CM2 zwischen zwei zeitlich benachbarten aktiven Flanken des Nockenflankensignals (Eingabesignals) an den jeweiligen Änderungspunkten P dar.
  • Danach schreibt die CPU 10 im Schritt S770 die im Freigabe/Sperrregister 26c gespeicherten Informationen neu von der Information, welche „gesperrt” anzeigt, zur Information, welche „freigegeben” anzeigt. Die Information „freigegeben” ermöglicht der CPU 10, eine Durchgangswinkelinterrrupttask (ein Durchgangswinkelinterruptprogramm) gemäß folgender Beschreibung in Antwort auf Empfang eines Interrupts zu beginnen, der vom Durchgangswinkelmessmodul 26 weitergegeben wird. Im Gegensatz hierzu hindert eine Information „gesperrt” die CPU 10 am Beginn der Durchgangswinkelinterrupttask.
  • Nachfolgend setzt die CPU 10 im Schritt S780 einen Vorgangswert im Vorgangszähler C2. In der Ausführungsform ist der Vorgangswert gegeben durch Division des TDC-Winkels (120° CA) durch das Vorgangsintervall (30° CA), wird also bestimmt als „120/30 = 4). Der Vorgangswert „4” wird im Schritt S780 im Vorgangszähler C2 gespeichert. Nach Abschluss der Durchführung der Anweisung im Schritt S780 verlässt die CPU 10 die Nockenflankeninterrupttask.
  • Nachfolgend werden spezielle Arbeitsweisen der jeweiligen Module 20, 22, 24, 26 und 28 unter Steuerung durch die CPU 10 und Änderungen von Parametern, beispielsweise der Zählwerte der Zähler 22a, 28a, 28b und 28c, unter Bezugnahme auf die 14 und 16 beschrieben.
  • Wenn das Nockenflankeninterruptprogramm in Antwort auf eine triggeraktive Flanke im Nockenflankensignal begonnen wird (siehe E41 in 16), hält das Nockenpositionsbestimmungsflag die Information des Voreinstellwerts AUS und der Zählwert des Leitzählers 28b wird um 1 × f vom Voreinstellwert „0” inkrementiert (siehe Abschnitte e40 und e41 in 16). Aus diesem Grund ist die Bestimmung in S610 bejahend und die Bestimmung in Schritt S620 negativ, so dass die Durchführung durch die CPU 10 zur Anweisung im Schritt S670 verschoben wird.
  • Da der Zählwert des Leitzählers 28b auf „1 × f” gesetzt ist, was nicht „0” entspricht, ist die Bestimmung im Schritt S670 NEIN, so dass die Durchführung durch die CPU 10 über die Anweisung im Schritt S690 zur Anweisung im Schritt S700 geht.
  • Da zu diesem Zeitpunkt die Anweisung im Schritt S630 nicht durchgeführt wird, so dass keine Anfangswerte in den jeweiligen Zählern 28a, 28b und 28c gesetzt werden, ist die Bestimmung im Schritt S700 NEIN, und danach geht die Durchführung durch die CPU 10 zum Schritt S720. Dies erlaubt, dass die Voreinstellung „1” des wenigstens einen Datenbits im Register 20b gehalten wird, was es dem Eingabewahlmodul 20 ermöglicht, durchgängig das Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 weiterzugeben.
  • Da das Nockenpositionsbestimmungsflag die Information der Voreinstellung AUS hält (die Bestimmung im Schritt S7430 ist NEIN), wird dann im Schritt S730 die Nockenflankeninterrupttask verlassen.
  • Wenn danach die nächste aktive Flanke im Nockenflankensignal erscheint (siehe E42 in 16), hält das Nockenpositionsbestimmungsflag F2 die Information der Voreinstellung AUS und der Zählwert des Leitzählers 28b wird um 1 × f vom Zählwert „1 × f” inkrementiert, um „2 × f” zu werden (siehe Abschnitte e42 in 16). Dies erlaubt, dass die Bestimmung im Schritt S620 bejahend wird.
  • Nach einer bejahenden Bestimmung im Schritt S620 werden im Schritt S630 die Anfangswerte, die basierend auf der momentanen aktiven Flanke (E42) in dem Nockenflankensignal und der Tabelle T bestimmt werden, in den jeweiligen Zählern 28a, 28b und 28c gespeichert. Insbesondere werden die Anfangswerte von 3600 äquivalent zu „3 × f”, 4800 äquivalent zu „4 × f” und 3600 äquivalent zu „3 × f” als Zählwerte im Referenzzähler 28a, Leitzähler 28b und Winkelzähler 28c gespeichert (siehe Tabelle T in 15).
  • Nach Durchführung der Anweisung im Schritt S630 wird im Schritt S640 das Nockenpositionsbestimmungsflag F2 auf die Information EIN gesetzt.
  • Da danach der Zählwert des Leitzählers 28b nicht auf „0” gesetzt ist und die nächste aktive Flanke E43, die in dem Nockenflankensignal erscheint, nicht dem Änderungspunkt Q1 entspricht, werden die Anweisungen in den Schritten S670, S690, S700 und S720 sequenziell von der CPU 10 durchgeführt. Danach geht die Durchführung durch die CPU 10 zum Schritt S730.
  • Da die momentane aktive Flanke E42 im Nockenflankensignal nicht dem Änderungspunkt Q1 entspricht und das Nockenpositionsbestimmungsflag F2 auf die Information EIN gesetzt ist, ist danach im Schritt S730 die Bestimmung JA. Somit wird die Durchführung durch die CPU 10 zum Schritt S740 verschoben.
  • Im Schritt S740 wird überprüft, ob der Zählwert des Vorgangszählers C2 größer als „0” ist.
  • Da der Zählwert des Vorgangszählers C2 auf der Voreinstellung „0” bleibt, werden die Anweisungen der Schritte S760, S770 und S780 von der CPU 10 durchgeführt, wobei die Anweisung im Schritt S750 übersprungen wird. Dies erlaubt die Bestimmung der Parameter einschließlich des Schwellenwerts des Schwellenwertregisters 26b, der Information im Freigabe/Sperrregister 26c und des Zählwerts im Vorgangszähler C2, und danach wird die Nockenflankeninterrupttask verlassen.
  • Insbesondere wird bei der Ausführungsform als Schwellenwert „150” im Schwellenwertregister 26b im Schritt S760 gespeichert und die Information „gesperrt” in dem Freigabe/Sperrregister 26c wird im Schritt S770 in „freigegeben” geändert. Zusätzlich wird als Vorgangswert „4” im Schritt S780 im Vorgangszähler C2 gespeichert.
  • Vor dem Erscheinen der nächsten aktiven Flanke E43 im Nockenflankensignal (siehe Abschnitt e42 in 16) erlaubt die Information „freigegeben”, dass das Durchgangswinkelmessmodul 26 einen Interrupt synchron mit einer steigenden Flanke eines jeden Multiplikationstaktimpulses in dem Multiplikationstaktsignal ausgibt. Der Interruptausgang von dem Durchgangswinkelmessmodul 26 wird zur CPU 10 geführt, so dass die CPU 10 eine Durchgangswinkelinterrupttask durchführt, die nachfolgend noch beschrieben wird.
  • Danach erscheint die nächste aktive Flanke E43, deren nächste aktive Flanke dem Änderungspunkt Q1 entspricht, in dem Nockenflankensignal (siehe 16).
  • Das Erscheinen der aktiven Flanke E43 im Nockenflankensignal erlaubt, dass:
    die Anfangswerte von 4800 äquivalent zu „4 × f”, 6000 äquivalent zu „6 × f” und 4800 äquivalent zu „4 × f” als Zählwerte im Referenzzähler 28a, Leitzähler 28b und Winkelzähler 28c gespeichert werden (siehe Schritt S530 und Tabelle T in 15); und
    die Bestimmung im Schritt S600 bejahend ist.
  • Die bejahende Bestimmung in S600 erlaubt, dass das wenigstens eine Datenbit „1” im Register 20b nach „0” geändert wird. Dies verhindert, dass das Eingabewahlmodul 20 das Nockenflankensignal an die Module 22, 24, 26, 28 und 32 weitergibt (siehe Schritt S710). Danach geht die Durchführung der CPU 10 zum Schritt S730.
  • Zu diesem Zeitpunkt entspricht die momentane aktive Flanke E43 im Nockenflankensignal nicht dem Änderungspunkt Q1 und das Nockenpositionsbestimmungsflag F2 ist auf die Information EIN gesetzt. Aus diesem Grund ist die Bestimmung im Schritt S730 JA. Damit wird die Durchführung der CPU 10 zum Schritt S740 verschoben.
  • Da der Zählwert des Vorgangszählers C2 gelöscht (auf null gesetzt) wird, und zwar durch die Durchgangswinkelinterrupttask gemäß nachfolgender Beschreibung, ist die Bestimmung im Schritt S740 NEIN, so dass die folgenden Anweisungen S760 bis S780 von der CPU 10 durchgeführt werden und danach die Nockenflankeninterrupttask verlassen wird.
  • Wie oben beschrieben, wird kein Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 von dem Eingabewahlmodul 20 weitergegeben, während im Register 20b gespeicherte Daten „0” angeben. Aus diesem Grund wird keine aktive Flanke Q1 in dem Nockenflankensignal an die Module 22, 24, 26, 28, 32 und 34 weitergegeben. Dies führt dazu, dass die Zähler 2a und 26a kontinuierlich hochzählen, bis die nächste aktive Flanke E44 nach der aktiven Flanke Q1 in dem Nockenflankensignal erscheint (siehe Abschnitt e43 in 16).
  • Wenn die nächste aktive Flanke E44 im Nockenflankensignal erscheint, ist der Zählwert vom Leitzähler 28b erhöht worden, um seit „6000” gleich (5 × f), gesetzt in Schritt 630 beim Erscheinen der aktiven Flanke E43 im Nockenflankensignal (siehe 16), „7200” zu erreichen. Da der Zählwert „7200” des Leitzählers 28b gleich dem Produkt der Multiplikationszahl f2 (1200) und der Anzahl von Zylindern ist, die bei der Ausführungsform 6 beträgt, ist die Bestimmung im Schritt S650 JA. Somit wird im Schritt S660 „0” als Zählwert des Leitzählers 28b gesetzt.
  • Somit ist die Bestimmung im Schritt S670 JA, so dass der Referenzzähler 28a den Hochzählvorgang in dem Freigabemodus im Schritt S680 durchführt.
  • Selbst wenn der Zählwert des Leitzählers 28b im Schritt S660 auf „0” gesetzt ist, zählt der Referenzzähler 28a kontinuierlich hoch, bis der Zählwert die obere Grenze erreicht, die im ersten Register 28b gespeichert ist (siehe Abschnitt e44 in 16), da der Betriebsmodus des Referenzzählers 28a im Schritt S680 in den Freigabmodus gesetzt wurde.
  • Vor dem Erscheinen der nächsten aktiven Flanke E45 im Nockenflankensignal (siehe Abschnitt e44 in 16) erlaubt die Information „freigegeben”, dass das Durchgangswinkelmessmodul 26 einen Interrupt synchron mit einer steigenden Flanke eines jeden Multiplikationstaktimpulses ausgibt, der in dem Multiplikationstaktsignal erscheint. Der Interruptausgang vom Durchgangswinkelmessmodul 26 wird zur CPU 10 geführt, so dass die CPU 10 die Durchgangswinkelinterrupttask durchführt, die nachfolgend beschrieben wird.
  • Da somit, wie oben beschrieben, der Zählwert des Vorgangszählers C2 von der Durchgangswinkelinterrupttask gelöscht (auf null gesetzt) wird, ist die Bestimmung im Schritt S740 NEIN, so dass die folgenden Anweisungen S760 bis S780 von der CPU 10 durchgeführt werden, während die Anweisung von S750 übersprungen wird, und danach wird die Nockenflankeninterrupttask verlassen.
  • Wenn die nächste aktive Flanke (E45) im Kurbelsignal erscheint (siehe 16), erreichen die Zählwerte von Referenzzähler 28a und Winkelzähler 28c die Obergrenze „7200 (6 × f)”, die im ersten Register 28d gespeichert ist, wobei der Zählwert des Leitzählers 28b auf „0” verbleibt. Dies erlaubt, dass die Zählwerte von Referenzzähler 28a und Winkelzähler 28c gelöscht (auf null gesetzt) werden (siehe Abschnitt e44 in 16).
  • Danach werden gemäß obiger Beschreibung die Anweisungen in den Schritten S650, S670, S690, S700, S720 und S730 bis S780 wiederholt von der CPU 10 jedes Mal dann durchgeführt, wenn eine aktive Flanke in dem Nockenflankensignal erscheint, bis bestimmt wird, dass eine aktive Flanke unmittelbar vor einem Änderungspunkt Q in dem Nockenflankensignal erscheint (siehe Abschnitte e45 und e46 in 16).
  • Während der wiederholten Durchführungen der Anweisungen in den Schritten S650, S670, S690, S700, S720 und S730 bis S780 wird, wenn eine aktive Flanke unmittelbar vor einem Änderungspunkt Q im Nockenflankensignal erscheint (die Bestimmung im Schritt S700 ist JA), die Anweisung im Schritt S710 anstelle derjenigen von Schritt S720 durchgeführt.
  • Zusätzlich, wenn der Zählwert des Leitzählers 28b jedes Mal, wenn das Produkt der Multiplikationszahl f2 (1200) und der Anzahl (6) von Zylindern erreicht wird, gelöscht (auf null gesetzt) wird, werden die Anweisungen der Schritte S650, S670, S690, S700, S720 und S730 bis S780 wiederholt von der CPU 10 durchgeführt (siehe Abschnitte e47 und e48).
  • (6) DURCHGANGS WINKELINTERRUPTTASK
  • Ein Durchgangswinkelinterrupttaskprogramm wird nachfolgend unter Bezugnahme auf 17 beschrieben. Die Anweisungen erlauben der CPU 10, die Durchgangswinkelinterrupttask jedes Mal durchzuführen, wenn ein vom Durchgangswinkelmessmodul 26 erzeugter Interrupt der CPU 10 eingegeben wird, während die im Freigabe/Sperrregister 26c gespeicherte Information im Schritt S770 auf die Information „freigegeben” gesetzt ist.
  • Wenn ein Interrupteingang vom Durchgangswinkelmessmodul 26 an die CPU 10 den Beginn eines Durchgangswinkelinterrupttaskprogramms auslöst, erzeugt die CPU 10 die Anzahl von Vorgängen basierend auf dem Zählwert des Vorgangszählers C2 im Schritt S810 von 17. Jeder dieser Vorgänge bestimmt einen Aktivierungszeitpunkt für eines der einzelnen Steuerziele in Zugehörigkeit zur Motorsteuerung, beispielsweise Injektor und/oder Zündung für einen entsprechenden der einzelnen Zylinder. Die Vorgangserzeugungsanweisung im Schritt S810 ist ähnlich zu der von Schritt S560 in 11.
  • Nachfolgend dekrementiert die CPU 10 den Zählwert des Vorgangszählers C2 um 1 und überprüft, ob der Zählwert des Vorgangszählers C2 „0” übersteigt (Schritt S830).
  • Wenn bestimmt wird, dass der Zählwert „0” übersteigt (die Bestimmung im Schritt S830 ist JA), erneuert die CPU 10 im Schritt S840 den im Schwellenwertregister 26b gespeicherten Schwellenwert in einen neuen. In der Ausführungsform überschreibt die CPU 10 den Substrat im Schwellenwertregister 26b mit einem neuen Schwellenwert, der bestimmt wird durch:
    Division des TDC-Winkels (120° CA) durch die Multiplikationszahl f2 (1200), um „120/1200” zu erhalten;
    Division des Vorgangsintervalls (30° CA) durch „120/1200”, um „30/(120/1200)” zu erhalten; und
    Addieren des erhaltenen Werts „30/(120/1200)” gleich 300 zu dem Schwellenwert, der vorher im Register 26b gespeichert ist.
  • Insbesondere wird die Summe des erhaltenen Werts „300” und der Schwellenwert im Register 26b hier als Schwellenwert im Schritt S840 gespeichert.
  • Wenn andererseits bestimmt wird, dass der Zählwert gleich „0” ist (die Bestimmung im Schritt S830 ist NEIN), schreibt die CPU 10 die Information in dem Freigabe/Sperrregister 26c von der Information „freigegeben” zur Information „gesperrt” im Schritt S850 neu. Dies verhindert, dass das Durchgangswinkelinterruptprogramm angefahren wird, auch wenn ein Interrupt der CPU 10 eingegeben wird.
  • Danach verlässt die CPU 10 die Durchgangswinkelinterrupttask.
  • Wie oben beschrieben, werden in der Nockenflankeninterrupttask der Schwellenwert von „150”, die Information betreffend „freigegeben” und der Vorgangswert von „4” entsprechend im Schwellenwertregister 26b, dem Freigabe/Sperrregister 26c und dem Vorgangszähler C2 gesetzt (siehe Schritte S760, S770 und S780).
  • Wenn in diesem Zustand der Durchgangswinkelmesszähler 26b synchron mit dem Erscheinen einer aktiven Flanke (E50) im Nockenflankensignal zurückgesetzt wird, gibt das Durchgangswinkelmessmodul 26 einen Interrupt synchron mit einer steigenden Flanke eines jeden Multiplikationstaktimpulses aus, der im Multiplikationstaktsignal erscheint (siehe Abschnitt e51 in 18).
  • Danach wird die Durchgangswinkelinterrupttask von der CPU 10 jedes Mal durchgeführt, wenn ein Interrupt der CPU 10 eingegeben wird, bis die Durchführung der Anweisung im Schritt S850 abgeschlossen ist.
  • Bestimmte Arbeitsweisen der jeweiligen Module 20, 22, 24, 26 und 28 unter Steuerung durch die CPU 10 und Änderungen der Parameter, beispielsweise der Zählwerte der Zähler 26a und C2 und des Schwellenwerts im Schwellenwertregister 26b, werden nachfolgend unter Bezug auf die 17 bis 19 beschrieben.
  • Wenn der Zählwert des Durchgangswinkelmesszählers 26b den Schwellenwert von „150” erreicht, der im Schwellenwertregister 26c gespeichert ist, und zwar bei einer Drehung der ersten und zweiten Nockenwellen CM1 und CM2 um 15° CA (siehe Abschnitt e52 in 18), wird von dem Durchgangswinkelmessmodul 26 ein Interrupt zur Eingabe in die CPU 10 erzeugt, so dass die Durchgangswinkelinterrupttask aktiviert wird.
  • Bei Aktivierung der Durchgangswinkelinterrupttask wird der Zählwert des Vorgangszählers C2 im Schritt S820 von „4” auf „3” dekrementiert, nachdem Vorgänge EV1 im Schritt S810 erzeugt wurden (siehe „EVENT” in 18). Da der Zählwert „3” vom Vorgangszähler C2 zu diesem Zeitpunkt größer als „0” ist, ist die Bestimmung im Schritt S820 bejahend, so dass der Schwellenwert „150” des Schwellenwertregisters 26d „300” hinzuaddiert wird, um auf „450” erneuert zu werden.
  • Wenn der Zählwert des Durchgangswinkelmesszählers 26b den Schwellenwert von „450” erreicht, der im Schwellenwertregister 26c gespeichert ist, wenn die ersten und zweiten Nockenwellen CM1 und CM2 um 45° CA gedreht haben (siehe Abschnitt e53 in 18), wird von dem Durchgangswinkelmessmodul 26 ein Interrupt erzeugt, um der CPU 10 eingegeben zu werden, so dass die Durchgangswinkelinterrupttask aktiviert wird.
  • Bei Aktivierung der Durchgangswinkelinterrupttask wird im Schritt S820 der Zählwert vom Vorgangszähler C2 von „3” auf „2” dekrementiert, nachdem die Vorgänge EV2 im Schritt S810 erzeugt wurden. Da der Zählwert „2” vom Vorgangszähler C2 zu dieser Zeit größer als „0” ist, ist die Bestimmung im Schritt S820 bejahend, so dass der Schwellenwert „450” vom Schwellenwertregister 26c „300” hinzuaddiert wird, um auf „750” erneuert zu werden.
  • Wenn der Zählwert des Durchgangswinkelmesszählers 26b den Schwellenwert von „750” erreicht, der im Schwellenwertregister 26c gespeichert ist, wenn die ersten und zweiten Nockenwellen CM1 und CM2 um 75° CA gedreht haben (siehe Abschnitt e54 in 18), wird vom Durchgangswinkelmessmodul 26 ein Interrupt erzeugt, um der CPU 10 eingegeben zu werden, so das sie Durchgangswinkelinterrupttask aktiviert wird.
  • Bei Aktivierung der Durchgangswinkelinterrupttask wird der Zählwert vom Vorgangszähler C2 im Schritt S820 von „2” auf „1” dekrementiert, nachdem im Schritt S810 Vorgänge EV3 erzeugt wurden. Da der Zählwert „1” vom Vorgangszähler C2 zu dieser Zeit größer als „0” ist, ist die Bestimmung im Schritt S820 bejahend, so dass der Schwellenwert „750” des Schwellenwertregisters 26c „300” hinzuaddiert wird, um auf „1050” erneuert zu werden.
  • Wenn der Zählwert des Durchgangswinkelmesszählers 26b den Schwellenwert von „1050” erreicht, der im Schwellenwertregister 26c gespeichert ist, wenn die ersten und zweiten Nockenwellen CM1 und CM2 um 105° CA gedreht haben (siehe Abschnitt e55 in 18), wird ein Interrupt vom Durchgangswinkelmessmodul 26 zur Eingabe in die CPU 10 erzeugt, so dass die Durchgangswinkelinterrupttask aktiviert wird.
  • Bei Aktivierung der Durchgangswinkelinterrupttask wird im Schritt S820 der Zählwert vom Vorgangszähler C2 von „1” auf „0” dekrementiert, nachdem im Schritt S810 Vorgänge EV4 erzeugt wurden.
  • Wenn der Zählwert vom Vorgangszähler C2 als „0” werdend bestimmt wird, ist die Bestimmung im Schritt S830 NEIN, so dass die Information betreffend „gesperrt” im Freigabe/Sperrregister 26c gespeichert ist.
  • Dies verhindert, dass die Durchgangswinkelinterrupttask aktiviert wird, bis die Information betreffend „freigegeben” im Freigabe/Sperrregister 26c in Antwort auf Erscheinen der nächsten aktiven Flanke (E51) im Nockenflankensignal 120° CA nach der aktiven Flanke E50 gespeichert ist (siehe Abschnitt e55 in 18).
  • Zusätzlich zählt der Durchgangswinkelmesszähler 26b kontinuierlich hoch, bis der Zählwert „1200” entsprechend einer Drehung der ersten und zweiten Nockenwellen CM1 und CM2 um 120° CA erreicht. Wenn der Zählwert des Durchgangswinkelmesszählers 26b „1200” erreicht, löscht das Erscheinen der aktiven Flanke E51 den Zählwert des Durchgangswinkelmesszählers 26b (siehe 18).
  • Wie oben beschrieben und in 18 gezeigt, wird wenigstens ein Vorgang in einem Notfallbetrieb von der Durchgangswinkelmessinterrupttask aus einer Drehposition einer jeden Nockenwelle 15° CA vor einem Änderungspunkt P jedes Mal dann erzeugt, wenn jede Nockenwelle um das Vorgangsintervall von 30° CA (15° CA, 45° CA, 75° CA und 105° CA) gedreht hat. Die von der Durchgangswinkelmessinterrupttask erzeugten Vorgänge ermöglichen, dass das Fahrzeug in einem Notfallbetrieb gefahren werden kann.
  • Es sei festzuhalten, dass in der Nockenflankeninterrupttask, wenn bestimmt wird, dass die Bestimmung im Schritt S740 JA ist, die CPU 10 die Anzahl von Vorgängen basierend auf dem momentanen Zählwert des Vorgangszählers C2 im Schritt S750 von 14 erzeugt.
  • Wie oben beschrieben und in den 14, 17 und 18 dargestellt, wird bei der Durchgangswinkelinterrupttask zur Durchführung durch die CPU 10 synchron mit einer aktiven Flanke des Nockenflankensignals angenommen, dass jede der Nockenwellen CM1 und CM2 dreht, wobei zeitlich benachbarte Änderungspunkte P konstant bei 120° CA liegen. Unter dieser Annahme ist daher die Bestimmung im Schritt S740 konstant NEIN, da der Zählwert des Vorgangszählers C2 „0” wird, bevor die nächste aktive Flanke im Nockenflankensignal erscheint.
  • Es sei jedoch beispielsweise angenommen, dass der Motor zum Zeitpunkt des Erscheinens einer aktiven Flanke E52 im Kurbelsignal plötzlich beschleunigt, so dass ein Zeitintervall zwischen der aktiven Flanke E52 und der nächsten aktiven Flanke E53 im Nockenflankensignal im Vergleich zu normalen Zeitintervallen aktiver Flanken hierin kurz wird.
  • Unter dieser Annahme kann gemäß 19 die aktive Flanke E53 im Nockenflankensignal erscheinen, bevor die Anzahl der Durchgangswinkelinterrupttasks eine bestimmte Anzahl „4” bei der Ausführungsform erreicht, mit anderen Worten, bevor der Zählwert des Vorgangszählers C2 nicht „0” erreicht. Dies kann bewirken, dass die Bestimmung im Schritt S740 von 14 negativ wird, was in den Schritten S760 bis S780 die Parameter einschließlich des Schwellenwerts im Schwellenwertregister 26b, die Information im Freigabe/Sperrregister 26c und den Vorgangswert im Vorgangszähler C2 zurücksetzen kann.
  • Dies kann bewirken, dass einige der Vorgänge, welche die CPU 10 normalerweise während eines Zeitintervalls von zeitlich benachbarten aktiven Flanken E52 und E53 erzeugen sollte, nicht erzeugt werden.
  • Um dieses Problem anzugehen, wird bei der Ausführungsform, wenn bestimmt wird, dass der Zählwert des Vorgangszählers C2 nicht „0” ist (Schritt S740), die Anzahl von Vorgängen von der CPU 10 basierend auf dem momentanen Zählwert des Vorgangszählers C2 im Schritt S750 erzeugt.
  • Wenn beispielsweise gemäß 19 der Zählwert des Vorgangszählers C2 auf „2” gesetzt ist, erscheint die aktive Flanke E53 im Nockenflankensignal aufgrund der plötzlichen Beschleunigung des Fahrzeugs. In diesem Fall wird bei Erscheinen der aktiven Flanke E53 im Nockenflankensignal die Anzahl „2” von Vorgängen entsprechend dem Zählwert des Vorgangszählers C2 durch die CPU 10 erzeugt (siehe Abschnitte e57 bis e59 und EV4 in 19). Dies macht es möglich, alle Vorgänge zu erzeugen, welche die CPU 10 normalerweise während eines Zeitintervalls von zeitlich benachbarten aktiven Flanken in dem Nockenflankensignal erzeugen sollte, auch wenn der Motor plötzlich beschleunigt.
  • Wie oben beschrieben, arbeitet die ECU 1 gemäß der Ausführungsform dahingehend, dass, wenn erkannt wird, dass das Kurbelsignal anormal ist (NEIN in Schritt S210 von 7), dann ein Eingabesignal zur Eingabe in den Eingabepfad vom Kurbelsignal auf das Nockenflankensignal umgeschaltet wird (siehe Schritt S240 in 7). Zusätzlich arbeitet die ECU 1 dahingehend, verschiedene Vorgänge zu erzeugen, welche der Motorsteuerung zugeordnet sind, und zwar basierend auf dem Nockenflankensignal (siehe 14). Somit fährt die ECU 1 fort, den Motor zu steuern, ungeachtet des Kurbelsignalfehlers, so dass es ermöglicht ist, das Fahrzeug in einem Notbetrieb zu fahren.
  • Nach dem Schalten eines Eingabesignals vom Kurbelsignal auf das Nockenflankensignal arbeitet die ECU 1 dahingehend, die Pegeländerung des Kurbeleingabevorgangssignals zu überwachen, ohne das Eingabesignal zu überwachen, das über den Eingabepfad eingegeben wird (Schritt S250 von 7). Basierend auf dem Überwachungsergebnis bestimmt die ECU 1, ob in dem Kurbelsignal eine Anomalie auftritt.
  • Das Kurbeleingabevorgangssignal hat einen Pegel, der vorübergehend sich zeitlich in einer bestimmten gleichen Richtung synchron mit einer gleichgerichteten Pegeländerung des Kurbelsignals ändert. Aus diesem Grund bedeutet eine Überwachung der Pegeländerung des Kurbeleingabevorgangssignals folglich eine Überwachung der Pegeländerung des Kurbelsignals.
  • Nach einem Schalten eines Eingabesignals, das durch den Eingabepfad eingegeben wird, vom Kurbelsignal auf das Nockenflankensignal ist es somit möglich, fortlaufend basierend auf der überwachten Pegeländerung des Kurbeleingabesignals zu bestimmen, ob das Kurbelsignal anormal auf gleiche Weise wie vor dem Umschalten eingegeben wird.
  • Wenn bei der Ausführungsform bestimmt wird, dass keine Anomalien in dem Kurbelsignal auftreten, mit anderen Worten, das Kurbelsignal kehrt vom anomalen Zustand in den normalen Zustand zurück (Schritt S210 in 7), arbeitet die ECU 1 dahingehend, um:
    ein Eingabesignal, das über den Eingabepfad eingegeben wird, vom Nockenflankensignal auf das Kurbelsignal zurückzuführen (Schritt S220 in 7); und
    die Überwachung der Pegeländerung des kurbelgeteilten Vorgangssignals, erhalten durch Division des Kurbelsignals (siehe Schritt S230 in 7 und Schritt S340 in 8), zurückzuführen.
  • Dies macht es möglich, die Motorsteuerung in einen normalen Zustand zurückzuführen.
  • Bei der ECU 1 gemäß der Ausführungsform ist es, wenn die Anzahl von spezifizierten Pegeländerungen in dem Kurbelsignal während einer Periode zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte außerhalb eines passenden Bereichs ist, möglich zu bestimmen, dass eine Anomalie in dem Kurbelsignal auftritt (siehe Schritt S130 in 5). Der passende Bereich bedeutet einen geschätzten Bereich, innerhalb dessen die Anzahl von passenden spezifizierten Pegeländerungen (aktive Flanken) in dem Kurbelsignal während einer Periode zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte liegt.
  • Zusätzlich arbeitet die ECU 1 dahingehend, die Anzahl von spezifizierten Pegeländerungen in dem kurbelgeteilten Vorgangssignal während der Eingabesignaldiagno setask zu zählen, um damit eine Gruppe der Anzahl von spezifizierten Pegeländerungen in dem Triggersignal jedes Mal zu zählen, wenn die Anzahl von spezifizierten Pegeländerungen in dem Triggersignal auftritt (siehe Schritt S110 von 5).
  • Das kurbelgeteilte Vorgangssignal wird erhalten durch Division des Kurbelsignals mittels eines Divisionsverhältnisses. Aus diesem Grund würde, wenn die ECU 1 die Anzahl von spezifizierten Pegeländerungen in dem kurbelgeteilten Vorgangssignal unverändert zählen würde, der Zählwert jedes Mal fortschreiten, wenn die Anzahl von spezifizierten Pegeländerungen basierend auf dem Divisionsverhältnis in dem Kurbelsignal auftritt. Dies würde dazu führen, dass der Zählwert in Übereinstimmung mit einem Wert ist, der erhalten wird durch Ausdünnen der Anzahl von spezifizierten Pegeländerungen in dem Kurbelsignal.
  • Bei der Ausführungsform arbeitet die ECU 1 jedoch, die Zahl des Divisionsverhältnisses jedes Mal dann zu zählen, wenn eine spezifizierte Pegeländerung im Triggersignal auftritt. Dies führt dazu, dass der Zählwert des Triggersignals in Übereinstimmung mit dem Wert ist, der jedes Mal gezählt wird, wenn eine spezifiziert Pegeländerung im Kurbelsignal auftritt.
  • Wie beschrieben, ist die ECU 1 dafür ausgelegt, die Zahl des Divisionsverhältnisses jedes Mal zu zählen, wenn eine spezifizierte Pegeländerung im Triggersignal auftritt.
  • Diese Konfiguration erlaubt, dass die Aktivierungshäufigkeit der Eingabesignaldiagnosetask zur Durchführung des Zählens der spezifizierten Pegeländerungen und der Bestimmung normal/anomal verringert wird. Somit ist es möglich, die Prozesslast zu verringern, welche wiederholt während des Eingabesignaldiagnosetask durchgeführt werden muss.
  • Nachdem ein Fehler im Kurbelsignal aufgetreten ist, zählt die ECU 1 die Anzahl von spezifizierten Pegeländerungen in dem Kurbeleingabevorgangssignal (siehe Schritte S210 bis S250 in 7 und Schritt S110 in 5). Dies erhöht relativ die Aktivierungshäufigkeit der Eingabesignaldiagnosetask im Vergleich zum Zählen der Anzahl von spezifizierten Pegeländerungen in dem kurbelgeteilten Vorgangssignal. Dies kann unmittelbar bestimmen, dass kein Fehler im Kurbelsignal auftritt, mit anderen Worten, das Kurbelsignal wird zurückgeführt und normal eingegeben.
  • Wenn in der Ausführungsform die Anzahl von spezifizierten Pegeländerungen in dem Kurbelsignal während einer Periode zwischen einem der Pulsfehlabschnitte und dem nächsten der Pulsfehlabschnitte außerhalb des richtigen Bereichs ist, ist es möglich zu bestimmen, dass eine Anomalie in dem Kurbelsignal auftritt (siehe Schritt S130 von 5). Zusätzlich, wenn die Anzahl von spezifizierten Pegeländerungen in dem Kurbelsignal während der Drehung einer der ersten und zweiten Nockenwellen CM1 und CM2 um einen festen Winkel außerhalb des passenden Bereichs ist (siehe Schritt S132 von 10), ist es möglich zu bestimmen, dass eine Anomalie in dem Kurbelsignal auftritt (siehe Schritt S150 in 10).
  • Nachdem bei der Ausführungsform bestimmt wurde, dass eine Anomalie im Kurbelsignal auftritt, wird der Zählwert „1” der Aktivflankenzählvariablen jedes Mal hinzuaddiert, wenn eine spezifizierte Pegeländerung in dem Kurbeleingabevorgangssignal erscheint. Das heißt, jedes Mal, wenn eine spezifizierte Pegeländerung in dem Kurbeleingabevorgangssignal erscheint, wird die Anzahl von Erscheinungen der spezifizierten Pegeländerung gezählt. Dies deshalb, als das Kurbeleingabevorgangssignal synchron mit dem Kurbelsignal ist.
  • Jedoch ist es jedes Mal, wenn eine bestimmte Anzahl von spezifizierten Pegeländerungen in dem Kurbeleingabevorgangssignal erscheint, möglich, die bestimmte Anzahl zu zählen. Bei dieser Abwandlung wird die Aktivierungshäufigkeit der Eingabesignaldiagnosetask für das Kurbeleingabevorgangssignal verringert, so dass die Prozesslast verringert wird, die zur wiederholten Durchführung der Eingabesignaldiagnosetask notwendig ist.
  • Um diesen Zweck der Verringerung der Prozesslast zu erreichen, kann die ECU 1 so aufgebaut sein, dass sie ein modifiziertes Kurbeleingabevorgangssignal ausgibt, indem das Kurbelsignal durch das Divisionsverhältnis dividiert wird, dass identisch zu dem Divisionsverhältnis ist, welches von dem Eingabeteilmodul 32 verwendet wird.
  • Bei dieser Abwandlung addiert im Schritt S110 von 5 die CPU 10 zu einem Wert einer erstellen „Aktivflankenzählvariablen” einen Festwert, beispielsweise „1” unabhängig vom Typ des Triggersignals (des Kurbelsignals oder des Kurbeleingabevorgangssignals).
  • Bei der Abwandlung mit diesem Aufbau wird jedes Mal, wenn die Anzahl spezifizierter Pegeländerungen basierend auf dem Divisionsverhältnis in dem Triggersignal erscheint, ein Zählwert inkrementiert. Das heißt, der Zählwert wird erhalten durch Ausdünnen der Anzahl von Erscheinungen spezifizierter Pegeländerungen in dem Kurbelsignal um die Anzahl von Divisionsverhältnissen.
  • Da jedoch das kurbelgeteilte Vorgangssignal durch ähnliches Ausdünnen des Kurbelsignals mit dem gleichen Divisionsverhältnis erzeugt wird, kann die Eingabesignaldiagnose ohne irgendwelche Probleme durchgeführt werden.
  • Die Konfiguration dieser Abwandlung verringert die Aktivierungshäufigkeit der Eingabesignaldiagnosetask, was es möglich macht, die Prozesslast zu verringern, die zur wiederholten Durchführung der Eingabesignaldiagnosetask notwendig ist.
  • Wenn bei der Ausführungsform ein Fehler im Kurbelsignal auftritt, wird das Nockenflankensignal verwendet, um den Multiplikationstakt anstelle des Kurbelsignals zu erzeugen, jedoch ist die vorliegende Erfindung nicht auf diesen Aufbau beschränkt.
  • Im Fall des Verwendung des ersten Nockensignals anstelle des Kurbelsignals kann beispielsweise das Flankenintervallmessmodul 22 ein Zeitintervall zwischen zeitlich benachbarten aktiven Flanken mit regulären Winkelintervallen (zu regulären Änderungspunkten) in dem ersten Nockensignal mit Ausnahme irregulärer Änderungspunkte bezüglich der regulären Winkelintervalle messen.
  • Auf ähnliche Weise kann im Fall der Verwendung des zweiten Nockensignals anstelle des Kurbelsignals das Flankenintervallmessmodul 22 beispielsweise ein Zeitintervall zwischen zeitlich benachbarten aktiven Flanken in dem zweiten Nockensignal mit regulären Winkelintervallen (zu regulären Änderungspunkten) mit Ausnahme irregulärer Änderungspunkte bezüglich der regulären Winkelintervalle messen.
  • Es ist sicher, dass, wenn ein Nockensignal mit einem Pegel, der sich wiederholt zeitlich ändert, jedes Mal, wenn eine Nockenwelle um einen konstanten Winkel dreht, dann das Flankenintervallmessmodul 22 direkt das Nockensignal verwenden kann, um ein Zeitintervall zwischen zeitlich benachbarten aktiven Flanken in dem Nockensignal zu messen.
  • Es sei festzuhalten, dass die Multiplikationszahl f2 für das Nockenflankensignal erhalten wird durch:
    Berechnen des Produkts aus dem zweiten Winkel von 120 Grad Kurbelwinkel und der Multiplikationszahl 60 für das Kurbelsignal; und
    Dividieren des erhaltenen Produkts durch den ersten Winkel.
  • Das heißt, die Multiplikationszahl f2 für das Nockenflankensignal wird bestimmt als „(120 × 60)/6 = 1200”.
  • Mit anderen Worten, die Beziehung zwischen der Multiplikationszahl f1 für das Kurbelsignal und der Multiplikationszahl f2 für das Nockenflankensignal ist gegeben durch die folgende Gleichung: α1f1 = α2f2 [Gleichung 1]wobei α1 der Winkelteil Δθ von 6 Grad, bezeichnet als „erster Winkel, ist und α2 120 Grad Kurbelwinkel, bezeichnet als „zweiter Winkel”, ist.
  • Insbesondere wird die Multiplikationszahl f2 für das Nockenflankensignal erhalten, um Gleichung 1 zu erfüllen.
  • Mit anderen Worten, obgleich in der Ausführungsform das Eingabesignal vom Kurbelsignal auf das Nockenflankensignal geändert wird und die Multiplikationszahl von der Multiplikationszahl f1 (60) für das Kurbelsignal auf die Multiplikationszahl f2 (1200) für das Nockenflankensignal geändert wird, ist das Verhältnis von Multiplikationszahl f1 (60) für das Kurbelsignal zum ersten Winkel angepasst an das Verhältnis von Multiplikationszahl f2 (1200) für das Nockenflankensignal zum zweiten Winkel.
  • Insbesondere ist der Taktzyklus des Multiplikationstakts, erzeugt von dem Multiplikationstakterzeugungsmodul 24, konstant ungeachtet der Multiplikationszahl f von der Zahl f1 für das Kurbelsignal zur Zahl f2 für das Nockenflankensignal und des Zeitintervalls von einem Wert entsprechend dem ersten Winkel zu dem entsprechend dem zweiten Winkel. Dies deshalb, als das Verhältnis der Multiplikationszahl f1 (60) für das Kurbelsignal zum ersten Winkel angepasst ist an das Verhältnis von Multiplikationszahl f (1200) für das Nockenflankensignal zum zweiten Winkel.
  • Mit anderen Worten, eine Änderung der Multiplikationszahl f von der Zahl f1 für das Kurbelsignal zur Anzahl f2 für das Nockenflankensignal erlaubt, dass der Taktzyklus des Multiplikationstakts, erzeugt von dem Multiplikationstakterzeugungsmodul 24, konstant ist.
  • Insbesondere wird der Taktzyklus des Multiplikationstakts zur Verwendung beim Betrieb des Referenzzählers 28a und des Winkelzählers 28c des Winkeltaktmoduls 28 vor und nach einer Änderung des Eingabesignals und der Multiplikationszahl f konstant gehalten. Dies macht es unnötig, dass das Winkeltaktmodul 28 spezielle Aufgaben zum Schalten seiner Arbeitsweisen vor und nach einer Änderung des Eingabesignals und der Multiplikationszahl f durchführt.
  • Dies erlaubt der ECU 1, nur das Eingabesignal und die Multiplikationszahl zu ändern, um damit die Motorsteuerung basierend auf dem Nockenflankensignal durchzuführen, auch wenn ein Fehler im Kurbelsignal auftritt. Dies macht es unnötig, dass das Multiplikationstakterzeugungsmodul 24, das Winkeltaktmodul 28 und die Timerausgabeeinheit 14 spezielle Aufgaben durchführen, um ihre Arbeitsweisen nach einer Änderung des Eingabesignals und der Multiplikationszahl f umzuschalten.
  • Folglich erlaubt die ECU 1, auch wenn ein Fehler im Kurbelsignal auftritt, dass das Fahrzeug in einem Notbetrieb gefahren wird, basierend auf einer Motorsteuerung unter Verwendung des Nockenflankensignals, ohne dass Hardwarekomponenten und/oder Softwarekomponenten erhöht werden.
  • In der Ausführungsform sind die Zähler zum Hochzählen ausgelegt, können jedoch auch zum Herunterzählen ausgelegt sein.
  • Die Zähler und Register der Winkeltakterzeugungseinheit 12 können als hardwareverdrahtete Logikschaltungen implementiert werden, die im Mikrocomputer 4 eingebaut sind.
  • Wenigstens ein Teil von Eingabeschaltung 2 und Ausgabeschaltung 3 kann als logische Hardwareschaltung, Softwaremodule oder ein integriertes Hardware/Softwaresystem im Mikrocomputer implementiert werden.
  • Die von der CPU 10 durchzuführenden Tasks (1) bis (6) können als logische Hardwareschaltungen oder als integriertes Hardware/Softwaresystem implementiert werden.
  • In der Ausführungsform dient beispielsweise das Eingabewahlmodul 20 sowohl als Eingabeeinheit als auch als Vorgangssignalerzeugungseinheit und das Multiplikationstakterzeugungsmodul 24 dient als Multiplikationserzeugungseinheit. In der Ausführungsform dient beispielsweise das Winkeltaktmodul 28 als Zähleinheit und die Eingabesignaldiagnosetask dient als Überwachungseinheit.
  • In der Ausführungsform dienen beispielsweise der Ablauf im Schritt S560 von 11 und der Ablauf im Schritt S810 von 17 als Vorgangserzeugungseinheit, und der Ablauf im Schritt S130 von 5 und der Ablauf im Schritt S132 von 10 dienen als Anomaliebestimmungseinheit. In der Ausführungsform dient beispielsweise die Eingabesignalschalttask als eine Eingabeschalteinheit und das Teilmodul 32 dient als Teilmodul.
  • In der Ausführungsform dienen beispielsweise die Abläufe der Schritte S110 und S120 von 5 als Intervallmesseinheit, und der Ablauf im Schritt S130 von 5 und der Ablauf im Schritt S320 von 8 dienen als Fehlregionbestimmungseinheit. In der Ausführungsform dienen beispielsweise die Abläufe der Schritte S112 und S122 von 10 als Nockenänderungszähleinheit.
  • Obgleich beschrieben wurde, was momentan als die Ausführungsform und deren Abwandlungen gemäß der vorliegenden Erfindung betrachtet wird, versteht sich, dass eine Vielzahl von Modifikationen, welche nicht beschrieben wurden, gemacht werden kann, und es ist beabsichtigt, dass die beigefügten Ansprüche sämtliche Modifikationen abdecken, wie sie unter den Umfang der nachgeführten Ansprüche fallen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • - JP 2008-107854 [0001]
    • - JP 2007-205242 [0009]

Claims (5)

  1. Eine Vorrichtung zur Steuerung eines Motors mit einer Kurbelwelle und einer Nockenwelle, wobei die Vorrichtung aufweist: eine Eingabeeinheit, welche ein Kurbelsignal als Eingabesignal in einen Eingabepfad einzugeben vermag, wobei das Kurbelsignal einen Pegel hat, der sich wiederholt in einer bestimmten Richtung jedes Mal dann ändert, wenn die Kurbelwelle um einen ersten Winkelteil dreht; eine Multiplikationstakterzeugungseinheit, welche einen ersten Multiplikationstakt zu erzeugen vermag, der einen Zug von Taktimpulsen enthält, deren Taktzyklus bestimmt wird durch Division eines Eingabesignals mit einer ersten Multiplikationszahl; eine Zähleinheit, welche synchron mit dem ersten Multiplikationstakt, der von der Multiplikationstakterzeugungseinheit erzeugt wird, einen Zählwert der Zähleinheit entsprechend einer Drehposition der Kurbelwelle zu zählen vermag; eine Vorgangserzeugungseinheit, welche wenigstens einen Vorgang zu erzeugen vermag, der der Steuerung des Motors zugeordnet ist, gemäß einer Kurbelwellendrehposition, die durch den Zählwert der Zähleinheit identifiziert ist; eine Überwachungseinheit, welche eine Pegeländerung des Eingabesignals zu überwachen vermag, das über den Eingabepfad eingegeben wird; eine Anomaliebestimmungseinheit, welche zu bestimmen vermag, ob das Kurbelsignal anormal ist, indem die überwachte Pegeländerung des Eingabesignals mit einer normalen Pegeländerung des Eingabesignals verglichen wird; eine Eingabeschalteinheit, welche das Eingabesignal zur Eingabe in den Eingabepfad von dem Kurbelsignal in ein Nockensignal umzuschalten vermag, wenn bestimmt wird, dass das Kurbelsignal anormal ist, wobei das Nockensignal einen Pegel hat, der sich wiederholt in einer bestimmten Richtung jedes Mal ändert, wenn die Nockenwelle um einen zweiten Winkelteil dreht; und eine Vorgangssignalerzeugungseinheit, welche ein Kurbeleingabevorgangssignal zu erzeugen vermag, wenn durch die Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelsignal anormal ist, wobei das Kurbeleingabevorgangssignal einen Pegel hat, der sich wiederholt in einer bestimmten Richtung ändert, wobei jede Pegeländerung des Kurbeleingabevorgangssignals mit einer entsprechenden Pegeländerung des Kurbelsignals synchronisiert ist, wobei die Überwachungseinheit eine Pegeländerung des Kurbeleingabevorgangssignals zu überwachen vermag, wenn durch die Anomaliebestimmungseinheit bestimmt wird, dass das Kurbelsignal anormal ist.
  2. Die Vorrichtung nach Anspruch 1, wobei die Überwachungseinheit eine Anzahl von Pegeländerungen vorbestimmter Richtung in einem Zielsignal innerhalb einer vorbestimmten Periode zu zählen vermag, wobei das Zielsignal entweder das Eingabesignal oder das Kurbeleingabevorgangssignal ist; und die Anomaliebestimmungseinheit zu bestimmen vermag, dass das Kurbelsignal anormal ist, wenn die von der Überwachungseinheit gezählte Anzahl außerhalb eines richtigen Bereichs ist, wobei der richtige Bereich eine Anzahl von Pegeländerungen vorbestimmter Richtung in dem Kurbelsignal ist, wobei die Anzahl von Pegeländerungen vorbestimmter Richtung als innerhalb der vorbestimmten Periode normal geschätzt wird.
  3. Die Vorrichtung nach Anspruch 2, weiterhin mit: einer Eingabeteileinheit, die das durch den Eingabepfad kommende Eingabesignal mit einem festgesetzten Divisionsverhältnis zu teilen vermag, um damit ein kurbelgeteiltes Vorgangssignal zu erzeugen, wobei die Überwachungseinheit von einem festgesetzten Zählwert eine Anzahl von Pegeländerungen vorbestimmter Richtung in dem kurbelgeteilten Vorgangssignal innerhalb einer vorbestimmten Periode zu zählen vermag, wobei der festgesetzte Zählwert dem Divisionsverhältnis entspricht.
  4. Die Vorrichtung nach Anspruch 2, wobei das Kurbelsignal aufweist: einen normalen Bereich, in welchem die Pegeländerungen vorbestimmter Richtung jedes Mal erscheinen, wenn die Kurbelwelle um einen ersten Winkelteil dreht; und einen Fehlbereich, in welchem ein Winkelintervall zwischen einer Pegeländerung vorbestimmter Richtung an einer vorbestimmten Drehposition der Kurbelwelle und einer zeitlich nächsten Pegeländerung vorbestimmter Richtung ein ganzzahliges Vielfaches des ersten Winkelteils ist, weiterhin mit: einer Intervallmesseinheit, die das Kurbelsignal als Eingabesignal durch den Eingabepfad zu empfangen vermag, wobei die Intervallmesseinheit ein Zeitintervall zu messen vermag von dem Zeitpunkt, zu dem eine Pegeländerung vorbestimmter Richtung in dem Kurbelsignal erscheint, und einer zeitlich nächsten Pegeländerung vorbestimmter Richtung; und einer Fehlbereichbestimmungseinheit, welche, wenn ein tatsächlich gemessener Wert des Zeitintervalls in den Fehlbereich reichen kann, bestimmt, dass das Kurbelsignal dem Fehlbereich entspricht, wobei die Überwachungseinheit wiederholt eine Anzahl von Pegeländerungen vorbestimmter Richtung in dem Zielsignal innerhalb einer festgesetzten Periode zählt, wobei die festgesetzte Periode definiert ist von der Bestimmung, dass das Kurbelsignal dem Fehlbereich entspricht, bis zur nächsten Bestimmung, dass das Kurbelsignal dem Fehlbereich entspricht.
  5. Die Vorrichtung nach Anspruch 2, weiterhin mit: einer Nockenänderungszähleinheit, welche wiederholt eine Anzahl von Pegeländerungen vorbestimmter Richtung in dem Nockensignal zu zählen vermag, wobei die Überwachungseinheit wiederholt eine Anzahl von Pegeländerungen vorbestimmter Richtung in dem Zielsignal innerhalb einer vorher festgesetzten Periode zu zählen vermag, in der die von der Nockenänderungszähleinheit gezählte Anzahl einen bestimmten Zählwert entsprechend eines festgelegten Drehwinkels der Nockenwelle erreicht hat.
DE102009017604.7A 2008-04-17 2009-04-16 Vorrichtung zur Steuerung eines Motors unter Verwendung eines Kurbelwellensignals und eines Nockenwellensignals Active DE102009017604B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008-107854 2008-04-17
JP2008107854A JP4636111B2 (ja) 2008-04-17 2008-04-17 エンジン制御装置

Publications (2)

Publication Number Publication Date
DE102009017604A1 true DE102009017604A1 (de) 2009-11-19
DE102009017604B4 DE102009017604B4 (de) 2018-09-20

Family

ID=41180621

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009017604.7A Active DE102009017604B4 (de) 2008-04-17 2009-04-16 Vorrichtung zur Steuerung eines Motors unter Verwendung eines Kurbelwellensignals und eines Nockenwellensignals

Country Status (3)

Country Link
US (1) US8204674B2 (de)
JP (1) JP4636111B2 (de)
DE (1) DE102009017604B4 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011054933A1 (de) * 2011-10-28 2013-05-02 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zur Erfassung eines Drehwinkels
DE102011088764A1 (de) * 2011-12-15 2013-06-20 Robert Bosch Gmbh Verfahren zum Betreiben eines Steuergeräts
US8978453B2 (en) 2012-04-12 2015-03-17 Delphi Technologies, Inc. Crank signal error detection using a cam signal interval
JP5984508B2 (ja) * 2012-05-25 2016-09-06 ルネサスエレクトロニクス株式会社 半導体データ処理装置及びエンジン制御装置
JP2014047747A (ja) * 2012-09-03 2014-03-17 Suzuki Motor Corp エンジン制御装置
JP5641030B2 (ja) * 2012-11-01 2014-12-17 株式会社デンソー カウンター装置
KR101684013B1 (ko) * 2014-12-04 2016-12-08 현대자동차주식회사 가상크랭크신호를 이용한 엔진 시동 꺼짐 방지 방법
FR3045725B1 (fr) * 2015-12-17 2022-05-13 Continental Automotive France Procede de synchronisation exact
CN108444722B (zh) * 2018-04-04 2024-03-29 中国重汽集团济南动力有限公司 一种电控发动机同步检测装置及方法
FR3095245B1 (fr) * 2019-04-19 2021-05-07 Continental Automotive Procédé de synchronisation d’un moteur à combustion interne
CN113811931B (zh) * 2019-06-20 2024-02-02 住友电气工业株式会社 车载通信系统、交换机装置、功能部、通信控制方法以及通信控制程序

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007205242A (ja) 2006-02-01 2007-08-16 Denso Corp エンジン制御装置
JP2008107854A (ja) 2008-01-15 2008-05-08 Sony Corp 表示装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3972230A (en) * 1975-06-19 1976-08-03 Rca Corporation Detecting malfunction in cylinders of internal combustion engines
US4502446A (en) * 1981-12-10 1985-03-05 Nissan Motor Company, Limited Fail-safe system for automotive engine control system for fail-safe operation as crank angle sensor fails operation thereof and fail-safe method therefor, and detection of fault in crank angle sensor
US5201296A (en) * 1992-03-30 1993-04-13 Caterpillar Inc. Control system for an internal combustion engine
US5311771A (en) * 1992-03-30 1994-05-17 Caterpillar Inc. Method for determining the rotational position of a crankshaft of an internal combustion engine
DE59405391D1 (de) * 1994-05-17 1998-04-09 Siemens Ag Verfahren zur Notlaufsteuerung einer Brennkraftmaschine
JP3651088B2 (ja) 1995-11-30 2005-05-25 株式会社デンソー 内燃機関の制御装置
JPH1047142A (ja) * 1996-07-31 1998-02-17 Suzuki Motor Corp エンジン制御装置
JP3543637B2 (ja) 1998-09-25 2004-07-14 株式会社デンソー 内燃機関用制御装置
JP3508720B2 (ja) * 2000-01-27 2004-03-22 株式会社デンソー エンジン制御装置
JP3508676B2 (ja) * 2000-02-01 2004-03-22 株式会社デンソー エンジン制御装置
JP3775220B2 (ja) 2000-12-27 2006-05-17 株式会社デンソー 内燃機関用制御装置
JP2003247450A (ja) * 2002-02-21 2003-09-05 Denso Corp 回転角センサの異常診断装置
JP4449760B2 (ja) * 2005-01-21 2010-04-14 株式会社デンソー エンジン制御装置
JP2006214386A (ja) 2005-02-04 2006-08-17 Toyota Motor Corp 内燃機関の制御装置
JP4274253B2 (ja) * 2007-02-01 2009-06-03 株式会社デンソー エンジン制御装置およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007205242A (ja) 2006-02-01 2007-08-16 Denso Corp エンジン制御装置
JP2008107854A (ja) 2008-01-15 2008-05-08 Sony Corp 表示装置

Also Published As

Publication number Publication date
JP2009257210A (ja) 2009-11-05
US20090265079A1 (en) 2009-10-22
US8204674B2 (en) 2012-06-19
JP4636111B2 (ja) 2011-02-23
DE102009017604B4 (de) 2018-09-20

Similar Documents

Publication Publication Date Title
DE102009017604B4 (de) Vorrichtung zur Steuerung eines Motors unter Verwendung eines Kurbelwellensignals und eines Nockenwellensignals
DE102007004068B4 (de) Vorrichtung zur Steuerung eines Motors mit Hilfe eines Nockensignals
DE102006002923B4 (de) Verfahren und Vorrichtung zur Steuerung eines Motors unter Verwendung eines Nockensignals
DE102018220710B4 (de) Steuereinheit und Steuerverfahren für einen Verbrennungsmotor
DE102009033459A1 (de) Motorsteuervorrichtung
DE2840706C2 (de) Elektronische Steuereinrichtung zum Steuern des Betriebs einer Brennkraftmaschine
EP0483166B1 (de) Sequentielles kraftstoffeinspritzverfahren
DE4141714C2 (de) Steuersystem für eine Brennkraftmaschine
EP2553247B1 (de) Schaltungsanordnung und verfahren zur auswertung von signalen eines kurbelwellensensors und eines nockenwellensensors einer brennkraftmaschine
DE102011109307B4 (de) Systeme und Verfahren zum Testen der Reaktion eines Steuermoduls
DE19609872A1 (de) Vorrichtung zur Steuerung der Betriebsakte eines Verbrennungsmotors
DE102010000962A1 (de) Verfahren und Vorrichtung zur Überwachung eines Frequenzsignals
DE102016119962A1 (de) Motorsynchronisationsvorrichtung und Steuerverfahren davon
DE10104273B4 (de) Impulse verschiedener Frequenzen verwendende Kraftmaschinen-Steuereinheit
DE3307833C2 (de) Verfahren zum Anzeigen und/oder Speichern von Fehlern von Geberanordnungen an Brennkraftmaschinen
EP0097826B1 (de) Verfahren zur Steuerung eines Mikrorechners
DE3539732C2 (de) Elektronisch gesteuertes Brennstoffeinspritzsystem für eine Brennkraftmaschine
DE4444751A1 (de) System zur Steuerung einer Brennkraftmaschine
DE19638338A1 (de) Geberanordnung zur schnellen Zylindererkennung bei einer Brennkraftmaschine
DE102011003335B4 (de) A/D-Wandlervorrichtung
DE10127378A1 (de) Zylinder-Identifizierungssystem für eine Brennkraftmaschine
DE2625971A1 (de) Verfahren und einrichtung zur erkennung von stoerungen bei einzelnen zylindern von brennkraftmaschinen
DE10103560A1 (de) Maschinensteuerungseinheit, die mit verschiedenen Takten auf der Grundlage eines Kurbelwellensignalsystembetriebs betreibbar ist
DE102005027650A1 (de) Verfahren und Vorrichtung zum Betreiben einer Brennkraftmaschine
DE3634587A1 (de) Zuendsystem fuer verbrennungsmotoren

Legal Events

Date Code Title Description
R084 Declaration of willingness to licence

Effective date: 20140710

R012 Request for examination validly filed

Effective date: 20140710

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final