Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR REGULATING THE ROTATIONAL SPEED OF A MOTOR AND A MOTOR FOR CARRYING OUT A METHOD OF THIS TYPE
Document Type and Number:
WIPO Patent Application WO/2001/022095
Kind Code:
A1
Abstract:
The invention relates to a method for regulating the rotational speed of a motor, to which a digital governor is assigned and which during operation generates an actual value signal for the rotational speed in the form of a rotational speed frequency signal, to a rotational speed theoretical value which is predetermined in the form of a theoretical value frequency signal. Said method consists of the following steps: in a first time phase, a first numerical frequency value which characterises the rotational speed of the motor is determined from the speed frequency signal; in a second time phase, which is approximately synchronous with the first time phase, a second numerical frequency value which characterises the frequency of the theoretical value frequency signal is determined from the theoretical value frequency signal; The first and second numerical frequency value are used to regulate the rotational speed of the motor in the digital governor to a speed which is assigned to the theoretical frequency signal according to a predetermined mathematical relationship.

Inventors:
DIETERLE ROLAND (DE)
HAHN ALEXANDER (DE)
RAPPENECKER HERMANN (DE)
Application Number:
PCT/EP2000/007622
Publication Date:
March 29, 2001
Filing Date:
August 05, 2000
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
PAPST MOTOREN GMBH & CO KG (DE)
DIETERLE ROLAND (DE)
HAHN ALEXANDER (DE)
RAPPENECKER HERMANN (DE)
International Classes:
G01D5/14; G01P3/489; H02P5/68; H02P7/288; (IPC1-7): G01P3/489; H02P5/50; H02P6/08
Foreign References:
US4788476A1988-11-29
US4584528A1986-04-22
GB2192103A1987-12-31
US5502376A1996-03-26
US5237521A1993-08-17
Attorney, Agent or Firm:
Raible, Hans (Schoderstr. 10 Stuttgart, DE)
Download PDF:
Claims:
Patentansprüche
1. Verfahren zum Regeln der Drehzahl eines Motors, dem ein digitaler Drehzahlregler zugeordnet ist, und der im Betrieb ein Istwertsignal für die Drehzahl in Form eines DrehzahlFrequenzsignals liefert, auf einen in Form eines SollwertFrequenzsignals vorgegebenen DrehzahlSollwert, mit folgenden Schritten : In einem ersten Zeitabschnitt wird aus dem Drehzahl Frequenzsignal ein erster numerischer Frequenzwert ermittelt, welcher die Drehzahl des Motors charakterisiert ; in einem zweiten Zeitabschnitt, welcher im wesentlichen zeitgleich mit dem ersten Zeitabschnitt ist, wird aus dem Sollwert Frequenzsignal ein zweiter numerischer Frequenzwert ermittelt, welcher die Frequenz des SollwertFrequenzsignals charakterisiert ; mittels erstem und zweitem numerischem Frequenzwert wird im digitalen Drehzahiregler die Drehzahl des Motors auf eine Drehzahl geregelt, welche dem SollwertFrequenzsignal nach einer vorgegebenen mathematischen Beziehung zugeordnet ist.
2. Verfahren nach Anspruch 1, bei welchem zur Ermittlung der numerischen Frequenzwerte eine Zeitmessung zwischen vorgegebenen Ereignissen des betreffenden Frequenzsignals vorgenommen wird.
3. Verfahren nach Anspruch 2, bei welchem Flanken des betreffenden Frequenzsignals als Ereignisse dienen, zwischen welchen eine Zeitmessung stattfindet.
4. Verfahren nach Anspruch 2 oder 3, bei welchem für die Zeitmessung zur Ermittlung des ersten numerischen Frequenzwerts und für die Zeitmessung zur Ermittlung des zweiten numerischen Frequenzwerts dasselbe Zeitnormal verwendet wird.
5. Verfahren nach einem der vorhergehenden Ansprüche zur Bestimmung der Frequenz eines Frequenzsignals, welches bei konstanter Frequenz pro Zeiteinheit eine feste Anzahl von Ereignissen nach Art von Impulsen, Flanken oder dergleichen aufweist, mit folgenden Schritten : a) Zu einem ersten, vorgegebenen Zeitpunkt wird die Messung einer Frequenzinformation eingeleitet ; b) ein zweiter Zeitpunkt wird ermittelt, an dem ein dem ersten, vorgegebenen Zeitpunkt folgendes Ereignis des Frequenzsignals auftritt ; c) die Anzahl der auf den zweiten Zeitpunkt folgenden Ereignisse des Frequenzsignals wird erfasst ; d) zu einem dritten, vorgegebenen Zeitpunkt wird die Beendigung der Messung der Frequenzformation eingeleitet ; e) ein vierter Zeitpunkt wird ermittelt, an dem ein dem dritten, vorgegebenen Zeitpunkt folgendes Ereignis des Frequenzsignals auftritt ; aus dem zeitlichen Abstand zwischen zweitem Zeitpunkt und viertem Zeitpunkt sowie der Anzahl der Ereignisse des Frequenzsignals zwischen diesen Zeitpunkten wird die Frequenzinformation berechnet.
6. Verfahren nach Anspruch 5, bei welchem für die Ermittlung des vierten Zeitpunkts als dem dritten, vorgegebenen Zeitpunkt folgendes Ereignis das nächstfolgende Ereignis des Frequenzsignals gewählt wird.
7. Verfahren nach Anspruch 5, bei welchem für die Ermittlung des vierten Zeitpunkts als dem dritten, vorgegebenen Zeitpunkt folgendes Ereignis dasjenige nächste Ereignis des Frequenzsignals gewählt wird, bei welchem die Anzahl der Ereignisse seit dem zweiten Zeitpunkt gleich einem Produkt a ist, wobei a und N ganze Zahlen sind, von denen die eine mindestens gleich 1 und die andere mindestens gleich 2 ist.
8. Verfahren nach Anspruch 7, bei welchem bei einem Drehzahl Frequenzsignal (f) die Zahl N einer festen Anzahl von Ereignissen pro Umdrehung des Rotors entspricht.
9. Verfahren nach einem oder mehreren der vorhergehenden Ansprüche 5 bis 8, bei welchem fortlaufend Messungen gemäß Anspruch 5 durchgeführt werden.
10. Verfahren nach Anspruch 9, bei welchem die ersten, vorgegebenen Zeitpunkte aufeinanderfolgender Messungen vorgegebene zeitliche Abstände (TA) aufweisen, und bei welchem die dritten, vorgegebenen Zeitpunkte jeweils einen im wesentlichen konstanten zeitlichen Abstand von den zugeordneten ersten, vorgegebenen Zeitpunkten haben.
11. Verfahren nach Anspruche 9 oder 10, bei welchem der dritte, vorgegebene Zeitpunkt einer ersten Messung dem ersten, vorgegebenen Zeitpunkt einer darauffolgenden zweiten Messung entspricht.
12. Verfahren nach Anspruche 11, bei welchem der vierte Zeitpunkt einer ersten Messung dem zweiten Zeitpunkt einer darauffolgenden zweiten Messung entspricht.
13. Verfahren nach einem oder mehreren der vorhergehenden Ansprüche, bei welchem zum Generieren einer Frequenzinformation eine Division der Anzahl (N) der Ereignisse des Frequenzsignals zwischen dem zweiten und dem vierten Zeitpunkt durch den zeitlichen Abstand (At) zwischen diesen beiden Zeitpunkten vorgenommen wird.
14. Verfahren nach Anspruch 13, bei welchem die Drehzahlinformation durch eine Multiplikation mit einem konstanten Faktor parametriert wird.
15. Verfahren nach Anspruch 14, bei welchem der konstante Faktor so gewahlt ist, dass die Drehzahlinformation im wesentlichen einer physikalischen Drehzahl entspricht, z. B. U/min oder U/sec.
16. Verfahren nach einem der Ansprüche 13 bis 15, bei welchem die Division mit einem der Anzahl der Impulse zwischen dem zweiten und dem vierten Zeitpunkt proportionalen Zähler (Englisch : numerator) und einem der Zeitdauer zwischen zweitem und vierten Zeitpunkt proportionalen Nenner (Englisch : denominator) als Ergebnis eine ganzzahlige Frequenzinformation und einen Rest ergibt, und bei welchem der sich ergebende Rest durch Addition zum Zahler (Englisch : numerator) der nachfolgenden Messung berücksichtigt wird. Beispiel für eine ganzzahlige Division : 7/3 = 2 Rest 1.7 ist der Zahler (numerator), 3 ist der Nenner (denominator), und 1 ist der Rest (remainder). Das Resultat dieser Division ist 2.
17. Verfahren zur Gewinnung einer Information über die Drehzahl eines rotierenden, im folgenden Rotor genannten Objekts, nach einem oder mehreren der vorhergehenden Ansprüche, mit einer Anordnung zur Erzeugung eines Drehzahlsignals (f), welches pro Rotorumdrehung mindestens ein Ereignis nach Art eines Impulses, einer Signalflanke oder dgl. aufweist, und mit folgenden Schritten : a) Während einer ersten Messperiode (T_M1) wird die Zahl (N) der Ereignisse des Drehzahlsignals (f) erfasst ; b) die zeitliche Dauer (At) der ersten Messperiode (T_M1) wird erfasst ; c) durch eine ganzzahlige Division ("div"), bei der die Zahl der Ereignisse während der ersten Messdauer (T_M1) im Zähler (Englisch : numerator) und die zeitliche Dauer der ersten Messperiode (TM1) im Nenner (Englisch : denominator) steht, werden als Ergebnis eine erste ganzzahlige Drehzahlinformation und ein Rest erzeugt (Fig. 15 : S372 ; Fig. 16 : S472) ; c) bei der Auswertung einer anschliessenden Messung wird dieser Rest (REM_n_OLD ; REM n s OLD) bei der dann stattfindenden ganzzahligen Division durch Addition zum Zähler (Englisch : numerator) berücksichtigt.
18. Verfahren nach Anspruch 17, bei welchem die Zahl (N) der Ereignisse vor der ganzzahligen Division (S372 ; S472) mit einem konstanten Faktor (2^h ; 2^h_s) multipliziert wird, welcher größer ist als 1, um ein im Verhältnis zum Rest (REM_n ; REM_n_s) großes Resultat der ganzzahligen Division zu erhalten.
19. Verfahren nach Anspruch 18, bei welchem der konstante Faktor eine Zweierpotenz (2^h ; 2Ahs) ist.
20. Verfahren nach Anspruch 19, bei welchem der Exponent (h ; hs) der Zweierpotenz eine einstellbare Variable ist.
21. Vorrichtung zur Durchführung eines Verfahrens nach einem der vorhergehenden Ansprüche, bei welchem zur Gewinnung einer Information über die Drehzahl eines rotierenden, im folgenden Rotor (32 ; 32' ; 32") genannten Objekts ein Sensor (61) vorgesehen ist, welcher ein DrehzahlSignal (f) liefert, das pro Umdrehung des Rotors (32 ; 32' ; 32") eine vorgegebene Zahl von Ereignissen (Fig. 10 : 110) aufweist, mit einer Quelle (23) für Steuersignale (Fig. 10 : 191,193, 195), mit einem Zähler (INT CNT f) für Ereignisse (110) des DrehzahlSignals mit einer programmgesteuerten Vorrichtung (23) zum Auswerten der genannten Signale, welcher ein Programm zugeordnet ist, das zur Ausführung folgender Schritte ausgebildet ist : a) Durch ein erstes Steuersignal (Fig. 10 : 191) wird die Messung einer Drehzahlinformation eingeleitet ; b) ein erster Zeitpunkt (Fig. 10 : 197) wird ermittelt, an dem ein dem ersten Steuersignal (Fig. 10 : 191) folgendes Ereignis (110) des DrehzahlSignals (f) auftritt ; c) die Anzahl der folgenden Ereignisse (110) des DrehzahlSignals (f) wird durch den Zähler (INT CNT f) für Ereignisse (110) des DrehzahlSignals (f) erfasst ; d) durch ein zweites Steuersignal (Fig. 10 : 193) wird die Beendigung der Messung der Drehzahlinformation eingeleitet ; e) ein zweiter Zeitpunkt (Fig. 10 : 199) wird ermittelt, an dem ein dem zweiten Steuersignal (Fig. 10 : 193) folgendes Ereignis des Drehzahl Signals (f) auftritt ; f) aus dem zeitlichen Abstand (Fig. 10 : At_MEAS_f (197199)) zwischen erstem Zeitpunkt (Fig. 10 : 197) und zweitem Zeitpunkt (Fig. 10 : 199) sowie der Anzahl (N) der Ereignisse (110) des DrehzahlSignals (f) zwischen diesen beiden Zeitpunkten wird eine Drehzahlinformation (n) berechnet.
22. Vorrichtung nach Anspruch 21, bei welcher der Geber für die Steuersignale einen Timer (TIMERO) aufweist.
23. Vorrichtung nach Anspruch 22, bei welcher der Timer (TIMERO) dazu ausgebildet ist, als Steuersignale InterruptVorgange (TIMEROInterrupt) auszulösen.
24. Vorrichtung nach einem oder mehreren der Ansprüche 21 bis 23, bei welcher zur Messung des zeitlichen Abstands zwischen erstem und zweitem Zeitpunkt ein Timer (TIMER1) vorgesehen ist.
25. Vorrichtung nach Anspruch 24, bei welcher der Timer (TIMER1) zur Messung des zeitlichen Abstands zwischen erstem und zweitem Zeitpunkt als Ringzähler ausgebildet ist.
26. Vorrichtung nach Anspruch 25, bei welcher der Ringzähler (TIMER1) fortlaufend zählt, und das Ende einer abgeschlossenen Messung mit dem Beginn einer neuen Messung im wesentlichen identisch ist.
27. Vorrichtung nach einem oder mehreren der Ansprüche 21 bis 26, bei welcher als DrehzahlSignal ein Signal eines elektronisch kommutierten Motors dient.
28. Vorrichtung nach einem oder mehreren der Ansprüche 21 bis 27, bei welcher der Zähler (INT CNT f) für Ereignisse (110) des Drehzahl Signals (f) in der programmgesteuerten Vorrichtung (23) vorgesehen ist.
29. Motor, bei welchem die Drehzahl durch ein Sollwertsignal in Form einer Frequenz (fs) dadurch auf Null regelbar ist, dass diesem Sollwertsignal der Frequenzwert Null gegeben wird.
30. Verfahren zum Regeln der Drehzahl eines Motors, welcher einen Rotor aufweist, und dem ein Drehzahlregler zugeordnet ist, um die Drehzahl dieses Rotors zu regeln, mit einem DrehzahlFrequenzsignal (f), welches eine zur Drehzahl des Rotors proportionale Frequenz aufweist, mit einem SollwertFrequenzsignal (f s), wobei die Drehzahl des Rotors so geregelt wird, dass die Frequenz des DrehzahlFrequenzsignals (f) und die Frequenz des Sollwert Frequenzsignals (fs) in einem vorgegebenen Verhältnis (y/z) zueinander stehen.
31. Verfahren nach Anspruch 30, bei welchem das Verhaltnis zwischen den Frequenzen f und fs durch mindestens einen Parameter beeinflusst wird.
32. Verfahren nach Anspruch 31, bei welchem das Verhältnis zwischen den Frequenzen f und fs im Regler durch mindestens einen Faktor (X ; Y) vorgegeben wird.
33. Verfahren nach Anspruch 32, bei welchem der mindestens eine Parameter in einem nichtflüchtigen Speicher gespeichert wird.
34. Verfahren zur Frequenzermittiung bei einer Mehrzahl von Signalen (f und f_s), welche Signale Frequenzinformationen nach Art von Impulsen, Flanken oder dergleichen aufweisen, mit folgenden Schritten : a) Für mindestens zwei dieser Signale wird zu einem ersten, vorgegebenen Zeitpunkt die Messung ihrer Frequenz eingeleitet ; b) für jedes dieser Signale wird ein zweiter Zeitpunkt ermittelt, an dem eine dem ersten, vorgegebenen Zeitpunkt folgende Frequenzinformation dieses Signals auftritt ; c) die Zahl der auf den zweiten Zeitpunkt folgenden Frequenzinformationen jedes dieser Signale wird getrennt erfasst ; d) zu einem dritten, vorgegebenen Zeitpunkt wird für diese Signale die Beendigung der Messung der Frequenz eingeleitet ; e) für jedes dieser Signale wird ein vierter Zeitpunkt ermittelt, an dem eine dem dritten, vorgegebenen Zeitpunkt folgende Frequenzinformation dieses Signals auftritt ; f) aus dem zeitlichen Abstand zwischen zweitem Zeitpunkt und viertem Zeitpunkt sowie der Zahl der Frequenzinformationen des betreffenden Signals zwischen diesen Zeitpunkten wird für jedes der gemessenen Signale eine seine Frequenz charakterisierende Größe bestimmt.
35. Verfahren nach Anspruch 34, bei welchem für die Ermittlung des vierten Zeitpunkts als dem dritten, vorgegebenen Zeitpunkt folgende Frequenzinformation die nächstfolgende Frequenzinformation des betreffenden Signals gewählt wird.
36. Verfahren nach Anspruch 34, bei welchem für die Ermittlung des vierten Zeitpunkts als dem dritten, vorgegebenen Zeitpunkt folgende Frequenzinformation diejenige nächste Frequenzinformation des betreffenden Signals gewähtt wird, bei welcher die Anzahl der Frequenzinformationen seit dem zweiten Zeitpunkt einem ganzzahligen Vielfachen einer ganzen Zahl aus der Reihe 2,3,4,... entspricht.
37. Verfahren nach einem der Ansprüche 34 bis 36, bei welchem fortlaufend Messungen vorgenommen werden und die dritten, vorgegebenen Zeitpunkte jeweils einen im wesentlichen konstanten zeitlichen Abstand (TA) von den zugeordneten ersten, vorgegebenen Zeitpunkten haben.
38. Verfahren nach Anspruch 37, bei welchem der dritte, vorgegebene Zeitpunkt der Messung eines Signals dem ersten, vorgegebenen Zeitpunkt einer anschließenden Messung entspricht.
39. Verfahren nach Anspruch 37 oder 38, bei welchem der vierte Zeitpunkt einer Messung dem zweiten Zeitpunkt einer anschließenden Messung desselben Signals entspricht.
40. Verfahren nach einem der Ansprüche 34 bis 39, bei welchem die ersten, vorgegebenen Zeitpunkte für die Einleitung der Messung der Mehrzahl von Signalen im wesentlichen identisch sind.
41. Verfahren nach einem der Ansprüche 34 bis 40, bei welchem die dritten, vorgegebenen Zeitpunkte für die Einleitung der Beendigung der Messung der Mehrzahl von Signalen im wesentlichen identisch sind.
Description:
Verfahren zur Drehzahlregelung eines Motors, und Motor zur Durchführung eines solchen Verfahrens Die Erfindung betrifft ein Verfahren zur Drehzahiregelung eines Motors und einen Motor zur Durchführung eines solchen Verfahrens.

Digitale Systeme zur Erfassung und Regelung der Drehzahl eines rotierenden Objekts ("Rotor") beruhen darauf, dass ein solcher Rotor pro Umdrehung eines oder mehrere Signale erzeugt, z. B. Nadelimpulse, Impulsflanken, oder dgl.

Diese Signale werden nachfolgend auch als"Ereignisse"bezeichnet. Die Messung einer Drehzahl beruht darauf, dass der zeitliche Abstand zwischen derartigen"Ereignissen"gemessen wird, oder dass gezählt wird, wieviele solche"Ereignisse"pro Zeiteinheit auftreten. Bei einem Regelvorgang wird diese Drehzahlinformation dazu benutzt, um die Drehzahl eines Motors auf einem vorgegebenen Wert zu halten. Unter Motor (prime mover) wird hier jede Art von Motor verstanden, z. B. eine Brennkraftmaschine, ein Elektromotor, ein pneumatisch oder hydraulisch arbeitender Motor, eine Turbine, etc. Die Erfindung findet bevorzugte Anwendung bei der Drehzahlregelung von Elektromotoren.

Da mit zunehmender Drehzahl die Zahl solcher"Ereignisse"pro Zeiteinheit zunimmt, wird zu ihrer Verarbeitung in einem digitalen System umso mehr Rechenzeit benötigt, je höher die Drehzahl ist, so dass die Rechenzeit abnimmt, die für andere Prozesse zur Verfügung steht.

Es ist eine Aufgabe der Erfindung, ein neues Verfahren zum Regeln der Drehzahl eines Motors, und einen Motor zur Durchführung eines solchen Verfahrens, bereitzustellen.

Nach einem ersten Aspekt der Erfindung wird diese Aufgabe gelöst durch ein Verfahren gemäß Patentanspruch 1. Dadurch, dass zwei numerische Frequenzwerte gebildet werden, ist es möglich, einen oder auch beide dieser Frequenzwerte einer mathematischen Transformation zu unterziehen und so mittels des digitalen Reglers eine gewünschte Beziehung zwischen erstem und zweitem Frequenzwert herzustellen. Häufig wird man einen der numerischen Frequenzwerte, oder auch beide, mit einem konstanten Faktor multiplizieren, was digital oft durch Kommaverschiebung möglich ist und in einfacher Weise ein elektronisches Getriebe ermöglicht, doch sind auch andere Beziehungen denkbar, z. B. eine Exponentialfunktion, oder eine sonstige mathematische Funktion, entsprechend den Forderungen der jeweiligen Antriebsaufgabe.

Eine besonders vorteilhafte Ausgestaltung der Erfindung ist Gegenstand des Anspruchs 5. Dadurch, dass mit einer Messung mehrere"Ereignisse"des Frequenzsignals erfasst werden können, findet eine Mittelwertbildung bei der Messung der Frequenzinformation statt. Wird die Frequenz nämlich durch eine Mehrzahl kurzer Messungen ermittelt, so muss man oft aus mehreren Messwerten durch Rechnung einen gleitenden Mittelwert (moving average) bilden. Dagegen erhält man durch die Erfindung ohne zusätzliche Rechnung einen Mittelwert, wodurch z. B. ein Mikroprozessor oder Mikrocontroller, beides im folgenden kurz, uC genannt, zusätzlich entlastet wird. Und trotz der ungefähren Vorgabe einer Messdauer durch die vorgegebenen Zeitpunkte findet bei dem Verfahren die eigentliche Messung genau zwischen zwei Ereignissen des Frequenzsignals statt. Dies hat sich als besonders vorteilhaft erwiesen, da die Messung genau zwischen zwei vorgegebenen Ereignissen eines Frequenzsignals eine besonders hohe Genauigkeit ermöglicht.

Eine andere vorteilhafte Weiterbildung der Erfindung ist Gegenstand des Anspruchs 8. Hierdurch wird erreicht, dass bei der Messung einer Drehzahl- information bei einem Rotor mit einer festen Anzahl von"Ereignissen"pro Rotorumdrehung immer zwischen solchen"Ereignissen"gemessen wird, welche derselben Drehstellung des Rotors zugeordnet sind, d. h. es werden volle Umdrehungen gemessen. Dies ist insbesondere bei Rotoren interessant, welche mehrere"Marken"zur Erzeugung des Rotorstellungssignals aufweisen, welche Marken nicht die gleichen Winkelabstände haben. Durch die Weiterbildung gemäß Anspruch 8 wird also immer an derselben Stelle des Rotors gemessen, so dass die Exaktheit der Winkelabstände keine Rolle spielt.

Es ergibt sich hierdurch eine hohe Genauigkeit der Messung. Unter"Marken" werden hier auch unsichtbare Marken verstanden, z. B. ein Muster in der Magnetisierung eines permanentmagnetische Rotors.

Eine andere vorteilhafte Weiterbildung der Erfindung ist Gegenstand des Anspruchs 12. Durch ein solches Verfahren wird kontinuierlich eine Frequenz- information gemessen, denn die folgende Messung schließt sich nahtlos an die momentane Messung an. In der Nähe von jedem vorgegebenen Zeitpunkt wird eine momentane Messung beendet und eine neue Messung begonnen.

Wenn die vorgegebenen Zeitpunkte jeweils nach einer Zeit TA auftreten, so findet im Mittel jeweils nach der Zeit TA eine Messung statt. Die Verarbeitung der Messungen, z. B. in einem RC, findet somit in regelmäßigen Abständen statt, welche unabhängig von der Drehzahl sind. Hierdurch wird der u. C für diese Aufgaben bei allen Drehzahlen gleichmäßig beansprucht. Da in diesem Fall keine Pause zwischen den einzelnen Messungen liegt, ist dieses Verfahren besonders gut geeignet, wenn für die Messung bzw. Regelung jede einzelne Umdrehung des Rotors berücksichtigt werden muss, wie es z. B. bei Motoren mit hochgenauen Reglern, oder bei Schrittmotoren, notwendig ist.

Die Erfindung betrifft ferner ein Verfahren gemäß Anspruch 16. Durch die Berücksichtigung des Rests in der nachfolgenden Messung wird bei einer Berechnung der Frequenzinformation mittels Division bewirkt, dass durch Rundung keine Frequenzinformation verlorengeht. Dies führt in sehr vorteilhafter Weise zu einer Erhöhung der Genauigkeit der Messung und ist von großem Vorteil bei komplizierten Regelvorgängen, die hohe Präzision erfordern. Zwei oder mehr Motoren können dadurch, dass man allen diesen Motoren dasselbe Frequenzsignal zuführt, also ohne übergeordneten Regler, synchron miteinander laufen. Systeme mit übergeordneten Reglern sind relativ langsam, haben lange Einschwingvorgänge, und sie neigen zu Oszillationen, besonders bei niedrigen Drehzahlen. Dagegen arbeitet ein Verfahren nach der Erfindung schnell, denn die Berücksichtigung des Rests erfordert nur wenige Programmschritte. Auch kann ein erfindungsgemäßes Verfahren leicht auf andere Parameter umgestellt werden, z. B. auf einen anderen "Getriebefaktor", auf andere Regelparameter, etc.

Die bevorzugte Verwendung eines Ringzählers gemäß Anspruch 25, und die Weiterbildung gemäß Anspruch 26, haben den Vorteil, dass der Stopp der einen Messung und der Start der nachfolgenden Messung gleichzeitig sind, weil der Ringzähler ständig läuft, so dass keine Fehler durch eine Messverzögerung auftreten können und sich etwaige Verzögerungen, z. B. durch das gleichzeitige Auftreten von zwei Interrupts, nachfolgend sofort ausgleichen, weil die Zeit des nachfolgenden Messzyklus automatisch etwas zu kurz wird.

Dies ermöglicht eine lückenlose Erfassung der Drehzahl, und einen mittleren Fehler der Drehzahlerfassung, der bei Null liegt, da bei der Messung kein Bit verlorengeht. Ein solcher Ringzähler hat gewöhnlich einen sogenannten Pre- Scaler, mit dem die Frequenz eingestellt werden kann, mit der dieser Zähler zahlt. Durch bitweises Einstellen dieser Funktion kann der Ringzähler mit verschiedenen festen Vielfachen der Quarzfrequenz des RC getaktet werden.

Dadurch können Zähifrequenz und Auflösung des Ringzählers für den Anwen- dungsfall optimiert werden. Diese Einstellung kann über einen Parameter erfolgen, der im Motor in einem nichtflüchtigen Speicher gespeichert ist. Auf diese Weise kann die Auflösung des Ringzählers für unterschiedliche Drehzahlbereiche durch unterschiedliche Parameter optimiert sein.

Weitere Einzelheiten und vorteilhafte Weiterbildungen der Erfindung ergeben sich aus den im folgenden beschriebenen und in den Zeichnungen dargestellten, in keiner Weise als Einschränkung der Erfindung zu verstehenden Ausführungsbeispielen, sowie aus den übrigen Unteransprüchen. Es zeigt : Fig. 1 eine Prinzipdarstellung einer erfindungsgemäßen Anordnung zur Regelung der Drehzahl eines Motors auf einen Wert, der durch ein Frequenzsignal fs von außen vorgegeben wird, Fig. 2 die Pinbelegung eines beim Ausführungsbeispiel verwendeten, uC, hier des Typs PIC 16C72 von Microchip, Fig. 3 ein Prinzipschaltbild einer bevorzugten Ausführungsform eines Motors nach der Erfindung, hier mit einem Elektromotor 32, Fig. 4 ein Frequenzsignal f vor und nach der Signalbearbeitung, Fig. 5 eine schematische Darstellung zur Erläuterung einer Einzelheit der Fig. 3, Fig. 6 eine schematische Darstellung zur Erläuterung einer Einzelheit der Fig. 3, Fig. 7 ein schematisierte Darstellung einer Regelanordnung, welche ein "elektronisches Getriebe"ermöglicht, Fig. 8 ein Flussdiagramm mit einer Übersicht über das Gesamtprogramm, hier in Form eines sogenannten Funktionsmanagers, Fig. 9 ein Funktionsregister, welches im Zusammenhang mit Fig. 8 verwendet wird, Fig. 10 ein Zustandsdiagramm für ein bevorzugtes Messverfahren zur Messung eines Frequenzsignals, Fig. 11 ein Diagramm, welches beispielhaft die quasi gleichzeitige Messung einer Sollfrequenz fs und einer Istfrequenz f zeigt, Fig. 12 ein Flussdiagramm für eine Funktion TIMERO-Interrupt, Fig. 13 ein Flussdiagramm für eine Funktion Hall-lnterrupt, Fig. 14 ein Flussdiagramm für eine Funktion f_s-Interrupt, Fig. 15 ein Flussdiagramm für eine Funktion CALC_n zur Berechnung des aktuellen Werts der Drehzahl (Ist-Drehzahl), Fig. 16 ein Flussdiagramm für eine Funktion CALCns zur Berechnung einer Soll-Drehzahl ns, Fig. 17 ein Flussdiagramm für eine Funktion RGL ON, welche bestimmt, wann die Funktion RGL der Fig. 18 gestartet wird, Fig. 18 ein Flussdiagramm für die Funktion RGL zur Regelung der Drehzahl ; diese Funktion ermöglicht ein"elektronisches Getriebe", Fig. 19 ein Zustandsdiagramm für den prinzipiellen Ablauf des Regelvorgangs, Fig. 20 ein Zustandsdiagramm für einen Regler, bei welchem auch die Soll- Drehzahl ns = 0 eingestellt werden kann, Fig. 21 ein Flussdiagramm für eine Funktion RGLON2,weiche an das Zustandsdiagramm der Fig. 20 angepasst ist, Fig. 22 eine Prinzipdarstellung zur Erläuterung eines bevorzugten Messverfahrens bei einem Rotor mit einer einzigen Marke 290, Fig. 23 eine schematische Darstellung einer Drehzahlberechnungsfunktion, Fig. 24 eine Prinzipdarstellung einer bevorzugten Art der Messung bei einem Rotor mit zwei Marken 291 und 292, Fig. 25 eine Prinzipdarstellung einer Messung analog Fig. 24, bei welcher ein Störsignal S auftritt, zur Erläuterung des hierbei auftretenden Vorgänge, Fig. 26 eine Darstellung mit drei Elektromotoren 181,183,185, welche unterschiedliche Rotorpolzahlen haben und welche hier durch das gleich So)ifrequenzsignaifs auf dieselbe Drehzahl n geregelt werden, Fig. 27 eine stark schematisierte Darstellung eines Kopiergeräts, das drei Antriebsmotoren M1, M2 und M3 hat, welche alle dasselbe Steuersignal fs für ihre Drehzahl erhalten und welche vermöge der Getriebefunktion mit unterschiedlichen Drehzahlen laufen, die in vorgegebenen numerischen Verhältnissen zu fs stehen, Fig. 28 eine schematisierte Darstellung mit drei Motoren M1, M2, M3, von denen M1 der Master-Motor ist, welcher den beiden anderen Motoren M2 und M3 ein Signal TACHO liefert, das ein Maß für die Drehzahl von M1 darstellt und die Drehzahlen der beiden anderen Motoren so regelt, dass diese Drehzahlen stets in einem vorgegebenen Verhältnis zur Drehzahl des Motors M1 stehen, und Fig. 29 eine schematische Darstellung analog Fig. 6, welche die Kommutierung eines elektronisch kommutierten Motors 32"durch den gC 23 zeigt.

Gleiche oder gleich wirkende Teile werden nachfolgend mit denselben Bezugszeichen bezeichnet und gewöhnlich nur einmal beschrieben.

Fig. 1 zeigt ein Blockschaltbild einer erfindungsgemäßen Anordnung 18 mit einem Motor M. Dieser ist hier als Elektromotor 32 dargestellt, könnte aber ein beliebiger anderer Motor sein, dessen Drehzahl mittels eines Stellsignals verändert werden kann, z. B. bei einer Brennkraftmaschine mittels einer Änderung der Kraftstoffzufuhr, bei einer Dampfturbine über die Änderung der Dampfzufuhr, etc.

Der Elektromotor 32 ist mit einem Anschluss 33 mit einer positiven Betriebsspannung + UB und mit einem anderen Anschluss 34 mit Masse GND verbunden. Mittels eines Stellwerts SW 27 wird die Bestromung des Motors 32 gesteuert, um dessen Drehzahl zu regeln. Ein Rotorstellungssignal des Motors 32 wird als Frequenz f 29 einem Mikroprozessor oder Mikrocontroller, im fo) genden p. C 23 genannt, zugeführt. Eine Sollfrequenz fs 25 wird ebenfalls dem C 23 zugeführt, z. B. von einem Frequenzgeber 20, der beispielsweise auch ein anderer Elektromotor sein kann, wie nachfolgend bei Fig. 28 beschrieben. Bei Fig. 28 gibt der Motor M1 über sein Ausgangssignal die Drehzahl der Motoren M2 und M3 vor, d. h. diese können z. B. mit derselben Drehzahl laufen wie der Motor M1, oder mit anderen Drehzahlen, die zur Drehzahl des Motors M1 in einem gewünschten Drehzahlverhältnis stehen.

Da der uC 23 klein ist, kann er zusammen mit dem Motor 32 zu der Baueinheit 18 zusammengefasst werden, nämlich zu einer Motoreinheit 18 mit "elektronischem Getriebe". Dies ist auch bei Elektromotoren möglich, die man nach der gängigen Definition als Kleinmotoren oder Kleinstmotoren bezeichnet.

In dem gC 23 ist ein Drehzahlregler n-CTRL 35 realisiert, welcher den Stellwert SW 27 so regelt, dass ein festes Verhältnis zwischen der Sollfrequenz fs und der Istfrequenz f entsteht, welches folgendermaßen beschrieben werden kann fs/f=y/z (1) wobei y und z ganze Zahlen sind. Dies ist also das vorstehend erwähnte "elektronische Getriebe".

Hierdurch wird es z. B. mögich. einen Motor 181 mit zweipoligem Rotor R2, einen Motor 183 mit vierpoligem Rotor R4 und einen Motor 185 mit sechspoligem Rotor R6 mit einer einzigen Sollfrequenz f_s synchron zu steuern, wie das in Fig. 26 dargestellt ist, so dass z. B. alle drei Motoren mit derselben gewünschten Drehzahl n rotieren, die in einem bestimmten Verhältnis zu fs steht.

Hierzu wird z. B. fs/f2 =20/2, <BR> <BR> <BR> <BR> f_s/f_4 = 20/4 und<BR> <BR> <BR> <BR> <BR> <BR> f_s/f_6 = 20/6 eingestellt, wobei f-2 die Istfrequenz des zweipoligen Rotors R2, f4 die Istfrequenz des vierpoligen Rotors R4 und f 6 die Istfrequenz des Rotors R6 ist. Die Darstellung nach Fig. 26 geht davon aus, dass dort in der üblichen Weise zur Erfassung der Rotorstellung ein Hallgenerator verwendet wird, der vom Magnetfeld des betreffenden Rotors gesteuert wird, vgl. Fig. 11C und Fig. 29. Die Verhältnisse ergeben sich dadurch, dass bei dem zweipoligen Rotor R2 zwei Wechsel des Hallsignals ("Hallwechsel") pro Umdrehung stattfinden, während bei dem vierpoligen Rotor R4 vier Hallwechsel pro Umdrehung und bei dem sechspoligen Rotor R6 sechs Hallwechsel pro Umdrehung stattfinden.

Eine solche Anordnung ist vor allem für Geräte mit mehreren Motoren interessant, bei welchen die Motoren ein festes Drehzahlverhältnis zueinander haben müssen.

Fig. 2 zeigt die Anschlüsse eines RC 23. Bei diesem Ausführungsbeispiel wird ein Mikrocontroller der Firma Microchip vom Typ PIC 16C72 verwendet. Dies ist ein 8 Bit-Prozessor. Er enthält einen 16 Bit-Timer und einen 8 Bit-Timer, zwei PWM-Register, und mehrere Interruptfunktionen. Naturgemäß stellt dieser Prozessor nur ein Beispiel dar, hat sich aber für die beschriebene Ausführungsform als die bevorzugte Lösung (best mode) erwiesen.

Der, ut 23 hat u. a. die Anschlüsse MCLR 37, VSS 38, CLKIN 39, CLKOUT 40, C1 41, B5 42, B4 43, VDD 44, VSS 45, SDA 46 und SCL 47.

Fig. 3 zeigt ein stark schematisiertes Schaltbild einer bevorzugte Anordnung mit einem Elektromotor 32.

Die Anschlüsse des gC 23 sind in Fig. 2 dargestellt, und die entsprechenden Bezugszeichen werden weiter verwendet. Der Anschluss MCLR/37 ist über einen Widerstand 71 an einer Plus-Spannung + 5 V angeschlossen. Die Anschlüsse CLKIN 39 und CLKOUT 40 sind mit einem Oszillatorquarz 75 verbunden. Der Anschluss VDD 44 ist an + 5 V angeschlossen, der Anschluss VSS 45 an Masse GND, und die beiden Anschlüsse sind über einen Kondensator 77 miteinander verbunden. Der uC 23 weist zwei Timer TIMERO und TIMER1 auf, die in Fig. 1 schematisch dargestellt sind.

Die Sollfrequenz f s gelangt über eine Leitung 25 zu einem Filter FILT s 51, und von dort über eine Leitung 53 zum Anschluss B4.

Die durch einen Rotorstellungssensor 61 erfasste Istfrequenz f (entsprechend der Drehzahl des Motors 32) gelangt über eine Leitung 29 zu einem Filter FILT 57, und von dort über die Leitung 59 zum Anschluss B5 42 des u. C 23.

Ein EEPROM 80 weist Anschlüsse SDA 81, SCL 83, VDD 89, WP 95, VSS 99, A1 100, A2 101 und A3 103 auf.

Der Anschluss SDA 46 des ut 23 ist über eine Leitung 78 mit dem Anschluss SDA 81 des EEPROM 80 und mit einem externen Anschluss 105 verbunden.

Der Anschluss SCL 47 des tiC 23 ist über eine Leitung 79 mit dem Anschluss SCL 83 des EEPROM 80 und mit einem externen Anschluss 107 verbunden. Die Anschlüsse 105,107 dienen zur Verbindung mit einem Kommunikationsbus B.

Die Anschlüsse VSS 99, A1 100, A2 101, A3 103 des EEPROM 80 sind mit Masse GND verbunden. Der Anschluss WP 95 ist über einen Widerstand 97 mit Masse GND verbunden. Die Anschlüsse SDA 81 bzw. SCL 83 sind über Pullup- Widerstände 85 bzw. 87 mit + 5 V verbunden. Der Anschluss VDD 89 ist über eine Leitung 91 mit + 5 V und über einen Kondensator 93 mit Masse GND verbunden.

Der Motor 32 weist ein Stellglied SG 63 auf, welches die Größe eines durch den Motor 32 fließenden Stromes i beeinflusst.

Das Stellglied 63 ist über eine Leitung 33 an die Spannung + UB angeschlossen, und ein Stellwert SW wird dem Steliglied SG 63 über eine Leitung 27 von dem Anschluss C1 des uC 23 zugeführt, um die Größe des Stromes i zu beeinflussen. Zwischen dem Anschluss C1 des FC 23 und der Leitung 27 liegt ein Widerstand 65, und der Punkt 66 ist über einen Kondensator 67 mit Masse GND verbunden. Widerstand 65 und Kondensator 67 bilden zusammen ein Integrierglied, dessen Funktion nachfolgend anhand von Fig. 5 erläutert wird.

Arbeitsweise Der tiC 23 erhält seine Betriebsspannung über den Anschluss VDD 44 an + 5 V und VSS 45 an Masse GND. Über einen Siebkondensator 77 wird die Versorgungsspannung gegen Spannungsspitzen und -einbrüche gesichert. Die Taktfrequenz des RC 23 wird mit Hilfe des an die Anschlüsse CLKIN 39 und CLKOUT 40 angeschlossenen Oszillators 75 erzeugt.

Die Anschlüsse SDA 46 bzw. SCL 47 des foc 23 dienen zur seriellen Übertragung von Daten zwischen dem tiC 23 und dem EEPROM 80, dort die Anschlüsse SDA 81 bzw. SCL 83, sowie den externen Anschlüssen 105 bzw.

107, die z. B. an den externen Bus B geschaltet sind.

Das EEPROM 80 erhält seine Spannung über den Anschluss VDD 89, der über die Leitung 91 mit + 5 V verbunden und zusätzlich über einen Kondensator 93 gegen Spannungsspitzen gesichert ist, sowie durch den Anschluss VSS 99, der an Masse GND angeschlossen ist. Der Schreibschutz-Anschluss WP 95 ist über den Widerstand 97 auf Masse GND gezogen, so dass in diesem Ausführungsbeispiel kein Beschreiben des EEPROM 80 möglich ist. Aus demselben Grund sind auch die Anschlüsse A1 100, A2 101, A3 103, die zur Adresscodierung dienen, auf Masse GND gezogen. In diesem Ausführungsbeispiel sind die Parameter im EEPROM 80 festgeschrieben.

Varianten mit durch den FC 23 oder über den Bus B beschreibbarem EEPROM 80 sind in gleicher Weise möglich, vgl. z. B. die PCT-Anmeldung PCT/EP99/05186 der Anmelderin vom 21.07.1999 (PCT216=PCT-3036).

Die beiden Ausgänge SDA 81 bzw. SCL 83 sind als Open-Collector-Ausgänge ausgebildet, und sie sind deshalb mit den Pull-Up-Widerständen 85 bzw. 87 beschaltet.

Die Sollfrequenz fs wird von extern, z. B. von einem Frequenzgenerator oder einem anderen Motor, geliefert. Die Istfrequenz f wird hier von dem Sensor 61 geliefert, welcher eine konstante Anzahl von Impulsen pro Umdrehung liefert.

Als Sensor 61 kann jede bekannte Art von Sensor verwendet werden, z. B. ein Resolver, ein Tachogenerator, welcher an seinem Ausgang eine Wechselspannung liefert, ein Haligenerator, oder ein optischer, induktiver oder sonstiger Sensor. Da bei elektronisch kommutierten Motoren die Rotorstellung gewöhnlich mittels eines oder mehrerer Hallgeneratoren erfasst wird, kann das Ausgangssignal eines solchen Sensors auch als Istfrequenz verwendet werden, da dann Zusatzkosten für einen Tachogenerator entfallen. Die Verwendung eines Tachogenerators kann jedoch dann vorteilhaft sein, wenn man eine hohe Frequenz des Signals f für die Istfrequenz wünscht, z. B. bei niedrigen Drehzahlen, z. B. bei einem Schiffsdiesel mit sehr niedriger Drehzahl.

Die Filter FlLT_s 51 bzw. FILT 57 dienen zur Aufbereitung der Flanken der Sollfrequenz fs bzw. der Istfrequenz f, so dass bei einer Flanke an den interruptfähigen Eingängen B5 42 bzw. B4 43 sicher ein Interrupt ausgelöst wird.

Die Filter FILT s 51 bzw. FILT 57 können z. B. als RC-Glied oder als Schmitt- Trigger ausgebildet sein.

Bei geeigneten Signalen f bzw. fs kann auch eines oder beide der Filter FILT s 51 und FILT 57 entfallen.

Ein Beispiel für die Wirkung der Filter ist in Fig. 4 gezeigt.

Fig. 4A zeigt die Istfrequenz f, bevor sie in das Filter FILT 57 gelangt, und Fig.

4B zeigt die Istfrequenz f, nachdem sie in dem Filter FILT 57 aufbereitet wurde.

Die Istfrequenz f aus Fig. 4A stammt z. B. von einem Hallgenerator, und die Flanken 109 sind weniger steil.

Die Istfrequenz f aus Fig. 4B ist durch das Filter FILT 57 aufbereitet worden. Die Flanken 110 sind steil, und es kann sicher durch die Flanken 110 im RC 23 ein Interrupt ausgelöst werden.

Ein in dem ut 23 berechneter Stei) wert RGLVAL (Fig. 7) wird über den Anschluss C1 41 als pulsweitenmoduliertes Signal (PWM-Signal) PWM_SW <BR> <BR> <BR> <BR> ausgegeben. Das Signal PWM wird über ein aus dem Widerstand 65 und dem Kondensator 67 bestehendes RC-Glied zu einer dem RC-internen Stellwert RGLVAL etwa proportionalen analogen Spannung umgewandelt, welche als Stellwert SW bezeichnet wird und dem Steliglied SG 63 über die Leitung 27 zugeführt wird. Das Stellglied SG 63 steuert die Stromzufuhr für den Motor M 32.

Das Stellglied SG 63 kann z. B. als analoger Längssteller oder als PWM- Stellglied ausgeführt sein, oder in sonstiger Weise.

Fig. 5A zeigt das PWM-Signal PWM_SW von Anschluss C1 41 aus Fig. 3, und Fig. 5B zeigt in idealisierter Form den Stellwert SW, welcher am Punkt 66 aus Fig. 3 durch das aus dem Widerstand 65 und dem Kondensator 67 gebildeten RC-Glied entsteht, wenn das Tastverhältnis von PWM SW abnimmt.

Je nach Tastverhältnis TVSW des PWM-Signals PWMSW aus Fig. 5A hat der Stellwert SW aus Fig. 5B eine bestimmte Spannung U zwischen 0 und MAX.

Das Tastverhältnis TV ist allgemein definiert als TV=ton/T (2) also dem Quotienten aus der Zeit ton (Fig. 5A), die das PWM-Signal auf HIGH ist, hier von 121 bis 123, und aus der Periodendauer T des PWM-Signals, hier von 121 bis 125. Das Tastverhältnis wird in Prozent angegeben, so dass es die Werte 0 Prozent bis 100 Prozent annehmen kann.

In Fig. 5A nimmt das Tastverhältnis von links nach rechts ab, so dass auch das Signal SW in Fig. 5B von links nach rechts abnimmt.

Das Signal SW wird dem Steliglied SG 63 aus Fig. 3 über die Leitung 27 zugeführt, und so kann durch das Tastverhältnis TVSW die Motordrehzahl gesteuert werden.

Fig. 6A zeigt rein beispielhaft ein Ausführungsbeispiel für das Stellglied SG 63 aus Fig. 3, welches zur Steuerung der Drehzahl n eines Motors 137 dient, der hier als Kollektormotor dargestellt ist.

Das Stellglied SG 63 weist einen Komparator 131 mit einem Pluseingang 132 und einem Minuseingang 133, einen Dreiecksgenerator DG 134 und einen npn- Transistor 135 auf.

Von Punkt 66 wird dem Pluseingang 132 des Komparators 131 das Signal SW zugeführt. Das von dem Dreiecksgenerator DG 134 erzeugte Dreieckssignal u_D wird dem Minuseingang 133 des Komparators 131 zugeführt. Am Ausgang des Komparators 131 entsteht ein PWM-Signal PWM_M, welches dem Transistor 135 zugeführt wird. Der Transistor 135 schaltet zwischen der über die Leitung 33 angeschlossenen Betriebsspannung + U_B und dem über die Leitung 35 verbundenen Motor M 137, dem ein Tachogenerator 138 zur Erzeugung einer drehzahlproportionalen Frequenz f zugeordnet ist.

Fig. 6B zeigt einen Beispielverlauf für die Spannungen u_D und SW, und Fig.

6C zeigt ein sich daraus ergebendes Signal PWM_M, mit dem der Transistor 135 ein-und ausgeschaltet wird.

Der Komparator 131 vergleicht die beiden Signale u_D und SW. Ist der Stellwert SW größer als die Dreiecksspannung u_D, so ist das PWM-Signal PWM_M auf HIGH, ansonsten ist es auf LOW. Durch die Höhe des Stellwerts SW wird also das Tastverhältnis des PWM-Signals PWM_M gesteuert. In Fig. 6B nimmt das Signal SW von links nach rechts zu. Dadurch wird auch das Tastverhältnis des Signals PWM_M in Fig. 6C von links nach rechts erhöht.

Da der Motor 137 bei einem höheren Tastverhältnis des Signals PWM_M über den Transistor 135 auch mehr Strom und damit Leistung erhält, kann über die Höhe des Stellwerts SW die Motordrehzahl gesteuert werden.

Fig. 29 zeigt eine Variante zu Fig. 6. Gleiche oder gleich wirkende Teile erhalten deshalb dieselben Bezugszeichen wie in Fig. 6.-Der Motor ist hier als sogenannter zweisträngiger, zweipulsiger elektronisch kommutierter Motor (ECM) 32"dargestellt, der als Beispiel einen zweipoligen permanentmag- netischen Rotor 732 hat. Dieser steuert durch sein Magnetfeld einen Haligenerator 61, welcher das Signal f erzeugt und mit diesem Signal auch die Kommutierung des ECM 32"steuert. Der ECM 32"kann z. B. gemäß der DE 23 46 380 C2 gebaut sein. Naturgemäß ist dies nur ein Beispiel. Die Erfindung eignet sich in gleicher Weise für ECMs mit einer anderen Zahl von Strängen und einer anderen Zahl von Rotorpolen, wie das für den Fachmann selbstverständlich ist.

Die beiden Stränge des ECM 32"sind mit 736 und 738 bezeichnet. Der Strom ii im Strang 736 wird gesteuert von einem npn-Darlingtontransistor 740 mit Freilaufdiode 742, und zur Steuerung des Stromes i2 im Strang 738 dient ein npn-Darlingtontransistor 744 mit Freilaufdiode 746. Die Emitter der Transistoren 740,744 sind miteinander und über einen Widerstand 748 mit GND verbunden.

Der Transistor 740 wird von einem Port OUT1 des u. C 23 über ein UND-Glied 750 gesteuert, dessen anderem Eingang das Signal PWM_M vom PWM-Steller 63 zugeführt wird. Fig. 29 zeigt schematisch die Form dieses Ausgangssignals.

Es handelt sich um Rechteckimpulse mit z. B. 25 kHz. Die Breite dieser Impulse wird durch die Höhe der Spannung am Eingang 132 des Stellers 63 bestimmt.

Der Transistor 740 wird nur leitend gesteuert, wenn sowohl am Ausgang des Stellers 63 wie am Ausgang OUT1 des RC 23 das logische Signal"1" vorhanden ist.

Ebenso wird der Transistor 744 von einem Port OUT2 des FC 23 über ein UND- Glied 752 gesteuert, dessen anderem Eingang das Signal PWM_M vom Steller 63 zugeführt wird. Der Transistor 744 wird also nur leitend gesteuert, wenn sowohl am Ausgang des PWM-Stellers 63 wie am Ausgang OUT2 des gC 23 das logische Signal"1"vorhanden ist.

Zwischen dem Ausgang des UND-Glieds 750 und der Basis des Transistors 740 liegt ein Widerstand 754, und analog beim Transistor 744 ein Widerstand 756.

Wie nachfolgend bei Fig. 13, S310 und S314 beschrieben wird, werden die Ausgänge OUT1 und OUT2 des RC 23 alternierend auf High und Low geschaltet und steuern dadurch, welcher der beiden Stränge 736,738 Strom erhalten soll.

Die Höhe der Ströme i1, i2 wird vom Signal am Punkt 66 bestimmt, welches das Tastverhältnis des Signals PWM- bestimmt, wie bei Fig. 6 ausführlich beschrieben.

Schematische Übersicht über eine bevorzugte Ausführungsform des Programms Fig. 7 zeigt eine Ubersicht über das in dem RC 23 ablaufende Programm. Das Programm weist eine Sollwertmessung"MEAS f_s" 141 und eine Sollwert- berechnung"CALC ns"143, eine Istwertmessung"MEAS f"147 und eine Istwertberechnung"CALC n"149, ein"Getriebe"145 und den Drehzahlregler n- CTRL 35 (Fig. 1) auf. Der digitale Drehzahlregler n-CTRL 35 weist hier einen Regeldifferenzberechner 151, einen PI-Regler"PI-RGL"153 und eine Stellwertausgabe"GEN PWM"155 auf, an deren Ausgang das Signal PWM SW erzeugt wird.

Die Sollfrequenz fs wird in"MEAS f_s" 141 gemessen. Es werden dabei die Anzahl der Flanken (110 in Fig. 4) seit der letzten Messung in einer Variablen INT_MEAS_f_s und der Zeitpunkt der aktuellen Messung in einer Variablen t_MEAS_f_s gemessen.

Die Sollwertberechnung"CALC nu"143 berechnet hieraus die Solldrehzahl n-s. Dies wird nachfolgend anhand von Fig. 15 erläutert.

Die Messung der Istfrequenz f in"MEAS f"147 und die Berechnung der Istdrehzahl n in"CALC n"149 geschieht völlig analog zu der Messung der Sollfrequenz fs in"MEAS fs"141 und die Solldrehzahl ns wird in"CALC ns" 143 berechnet.

Die So) idrehzahi ns wird in"X * ns"145 mit einem Faktor X multipliziert, und dieses Produkt, sowie die Istdrehzahl n, werden dem Regeldifferenzberechner 151 zugeführt. Mit X = 2 wird z. B. erreicht, dass dem Regeldifferenzberechner 151 der doppelte Wert der gemessenen Solldrehzahl zugeführt wird, während z. B. bei X = 1/2 dem Regeldifferenzberechner 151 ein Wert zugeführt wird, welcher der halben Solldrehzahl entspricht. So wird durch"X * ns"145 eine Getriebefunktion erreicht, wobei sehr vorteilhaft ist, dass hierbei auch Faktoren eingestellt werden können wie z. B. X = 1, 733.

Fig. 7 zeigt auch-gestrichelt-eine Variante mit dem Block 145', in dem die Ist- Drehzahl n mit einem Faktor Y multipliziert wird. Im Normalfall wird man die Variante 145 bevorzugen, also X * ns, weit dann alle Motoren eines Systems gleich aufgebaut sein können und man den Getriebefaktor X überall nach denselben Regeln einstellen kann.

Eine in dem Regeldifferenzberechner 151 berechnete Regeldifferenz RGL_DIFF wird der Reglerfunktion"PI-RGL"153 zugeführt, welcher hieraus den Reglerwert RGLVAL berechnet. Wie dies geschieht, wird nachfolgend anhand von Fig. 18 ausführlich beschrieben.

Der Wert RGLVAL wird der Stellwertausgabe"GEN PWM"155 zugeführt, welche ihn bei diesem Beispiel in ein PWM-Signal PWMSW umwandelt, welches am Ausgang C1 des, ut 23 in Fig. 3 ausgegeben wird, und welches in Fig. 5 näher beschrieben ist. Mit Hilfe des Signals PWM_SW wird die Drehzahl des Motors M so gesteuert, dass die Regeldifferenz RGL_DIFF zu Null wird.

Aligemeiner Aufbau des Gesamtprogramms ; Funktionsmanager Im folgenden wird an einem bevorzugten Ausführungsbeispiel die Architektur des in dem ut 23 ablaufenden Gesamtprogramms beschrieben. Anschließend werden die Unterprogramme im einzelnen beschrieben. Diese sind speziell für einen preiswerten Mikrocontroller ausgelegt. Wird ein teurer Prozessor verwendet, so sind im Rahmen der Erfindung auch andere Lösungen möglich, doch hat die beschriebene Version den Vorzug, dass sie sehr kostengünstig realisiert werden kann, so dass sich gegenüber einem mechanischen Getriebe hohe Einsparungen ergeben können.

Fig. 8 zeigt ein Flussdiagramm mit einer bevorzugten Ausführungsform des in dem uC 23 ablaufenden Gesamtprogramms.

Ganz oben stehen drei Interruptroutinen Hall-Interrupt S631 (Fig. 13), fs- Interrupt S635 (Fig. 14) und TIMERO-Interrupt S639 (Fig. 12), welche beim Auftreten des jeweiligen Interrupts 630,634 bzw 638 ausgeführt werden, und welche über 632,636,640 auf das Hauptprogramm einwirken. Dabei nimmt die Priorität, also die Reihenfolge, in der die einzelnen Programmteile ausgeführt werden, von oben nach unten ab. Die Prioritäten sind deshalb auf der rechten Seite mit L1 bis L10 bezeichnet, wobei L1 die höchste Priorität hat.

Unter den Interruptroutinen ist das Hauptprogramm dargestellt. Nach dem Einschalten des Motors 32 wird in dem uC 23 ein interner Reset ausgelöst. In S600 erfolgt die Initialisierung des wC 23. Es werden z. B. Parameter aus dem EEPROM 80 ausgelesen und in das RAM des, ut 23 übertragen.

Nach der Initialisierung erfolgt ein Sprung in einen sogenannten Funktionsmanager 601, der in S602 beginnt. Der Funktionsmanager 601 regelt den Ablauf der einzelnen Unterprogramme.

Als erstes werden die Funktionen abgearbeitet, die zeitkritisch sind und bei jedem Durchlauf ausgeführt werden müssen. Hierzu zählt z. B. eine Kommunikationsfunktion COMM in S604, welche die Datenübertragung zwischen dem RC 23, dem EEPROM 80 und dem externen Busanschluss B durchführt. S606 steht für evtl. vorhandene weitere zeitkritische Funktionen.

Fig. 9 zeigt ein beispielhaftes Funktionsregister 605, in dem für jede weitere Funktion aus Fig. 8 ein Bit reserviert ist.

In diesem Ausführungsbeispiel ist das Funktionregister 605 1 Byte groß, und es sind, von dem niederwertigsten Bit (LSB) beginnend, die folgenden Anforderungsbits für die nachfolgend erklärten anforderbaren Funktionen definiert : -FCTXY für eine beliebige Funktion S612 -FCT_CALC_n für eine Istwertberechnungsfunktion CALC_n S616 (Fig. 15) -FCTCALCns für eine Sollwertberechnungsfunktion CALC n s S620 (Fig. 16) -FCT_RGL_ON für eine Reglerstart-Überprüfungsfunktion RGL ON S624 (Fig. 17) -FCT_RGL für eine Reglerfunktion RGL S628 (Fig. 18).

Die restlichen Bits Bit5 bis Bit7 sind für weitere anforderbare Funktionen reserviert, die gegebenenfalls in den Funktionsmanager 601 integriert werden können.

Die Istwertberechnungsfunktion CALC n S616 (Fig. 15) dient zur Berechnung der Istdrehzahl n, die Sollwertberchnungsfunktion CALC_n_s S620 (Fig. 16) dient zur Berechnung der Solldrehzahl ns, die Reglerstart- Überprüfungsfunktion RGLON S624 (Fig. 17) überprüft, ob die Bedingungen für den Start der folgenden Funktion RGL S628 (Fig. 18) vorliegen, und fordert diese gegebenenfalls an. Die Reglerfunktion RGL S628 schließlich berechnet den neuen Ste) iwert RGLVAL (Fig. 7) und gibt diesen an das Stellglied SG 63 des Motors 32 aus.

Soll eine bestimmte anforderbare Funktion durch eine andere Funktion oder eine Interruptroutine angefordert werden, so wird das Bit der angeforderten Funktion in dem Funktionsregister 605 (Fig. 9) auf 1 gesetzt, z. B. FCTXY = 1.

Wenn der Funktionsmanager 601 bei einem Durchlauf keine andere anforderbare Funktion mit höherer Priorität findet, wird anschließend diese Funktion ausgeführt.

Ist eine angeforderte Funktion abgearbeitet, so setzt sie selbst ihr Anforderungsbit wieder auf 0, also z. B. FCTXY = 0. Dies ermöglicht es, längere Funktionen, die nicht in einem Durchlauf abgearbeitet werden können, weil sie z. B. eine zu lange Zeit benötigen würden, aufzuteilen und in mehreren Aufrufen abzuarbeiten.

In Fig. 8 wird nach S606 in einer vorbestimmten Reihenfolge, von der wichtigsten anforderbaren Funktion ausgehend, jeweils geprüft, ob deren Anforderungsbit gesetzt ist. Ist dies bei einer Funktion der Fall, so wird diese ausgeführt, und daraufhin wird wieder an den Anfang FCT_MAN S602 des Funktionsmanagers 601 gesprungen. Die Reihenfolge der Überprüfung des Funktionsregisters 605 gibt die Prioritierung der anforderbaren Funktionen vor.

Je höher eine solche Funktion in dem Funktionsmanager 601 steht, desto höher ist ihre Priorität.

Anhand eines Beispiels soll die Funktionsweise des Funktionsmanagers FCT_MAN 601 erläutert werden. Springt z. B. das Programm von S610 nach S614, so wird in S614 überprüft, ob das Funktionsregisterbit FCTCALCn = 1 ist, ob also die Istwertberechnung CALC_n S616 angefordert wurde, die in Fig.

15 dargestellt ist. Ist dies der Fall, so wird nach S616 gesprungen, und die Drehzahlberechnung wird durchgeführt. Bei Beendigung setzt die Drehzahlberechnung CALC n S616 das Anforderungsbit FCTCALCn wieder auf 0 zurück, vgl. S374 in Fig. 15, und es wird wieder an den Anfang S602 des Funktionsmanagers 601 gesprungen.

War in keiner der Abfragen bis S626 ein Anforderungsbit gesetzt, so wird ohne eine Aktion nach S602 zurückgesprungen, und die Funktionen S604 und S606, die bei jedem Durchlauf des Funktionsmanagers 601 ausgeführt werden, werden erneut abgearbeitet.

Durch den Funktionsmanager erhält man eine optimale Ausnutzung der Ressourcen des, ut 23.

Ist-und Sollwertmessung Die Messung der Istfrequenz f und der Sollfrequenz f s laufen gleich, aber unabhängig voneinander, ab. Man kann auch sagen, sie laufen quasiparallel ab, wobei quasi dafür steht, dass in diesem Ausführungsbeispiel kein echter Parallelprozessor verwendet wird, was im Rahmen der Erfindung ebenfalls möglich sein wurde. Im folgenden wird zunächst die Istfrequenzmessung betrachtet. Die Istfrequenz ist ein Maß für die Drehzahl des Motors 32 (Fig. 3).

Prinzip der Messung Fig. 22 zeigt einen Rotor 32 mit einer Marke 290, und einen Sensor 61 für die Marke 290, der als Rotorstellungssensor dient. Der Rotor 32 ist gewöhnlich Teil eines Motors M. Sofern es sich um einen elektronisch kommutierten Motor (ECM) handelt, hat dieser gewöhnlich einen Rotorstellungssensor 61, der dann auch für die vorliegende Erfindung verwendet werden kann.

Der Rotorstellungssensor 61 detektiert mit Hilfe der Marke 290 ein Rotorstellungssignal f. Das Rotorstellungssignal f weist Impulse an den Stellen 165,166,167 und 168 etc. auf, wobei zwischen jeweils zwei Impulsen eine Umdrehung des Rotors 32 stattgefunden hat. Die Zeitachse ist mit t bezeichnet.

Diese Impulse stellen"Ereignisse" (events) bei der Drehung des Rotors 32 dar.

Bei Fig. 22 wird pro Rotorumdrehung 1 Ereignis erzeugt, nämlich 1 Impuls.

Mit Hilfe des Rotorstellungssignals f wird wie folgt die Drehzahl des Rotors 32 gemessen. In rege) mäßigen Abständen TA wird ein Startsignal 261,263 etc. erzeugt, mit dem jeweils eine neue Messung angefordert wird.

Auf das Startsignal an der Stelle 261 folgt der Impuls 265, und auf das Startsignal an der Stelle 263 der Impuls 268. Die Messung geschieht zwischen den Stellen 265 und 268. Gemessen werden die Anzahl N der Impulse des Rotorstellungssignals f, welche nach 265 bis einschließlich 268 auftreten, also hier N = 3, und die für diese Impulse benötigte Zeit At (165-268). Hieraus lässt sich die Frequenz des Rotorstellungssignals f und damit die Drehzahl des Rotors 32 bestimmen. An den Stellen 265,268 der Messung wird jeweils eine alte Messung beendet und eine neue Messung gestartet. Man geht also so vor, dass bei dem auf das Startsignal 261,263 folgenden Impuls jeweils eine alte Messung beendet und simultan eine neue Messung begonnen wird.

Die Anzahl N der Impulse kann z. B. in einem Zähler gemessen werden, indem in diesem Zähler der Wert N am Ende jeder Messung auf Null zurückgesetzt wird und anschließend der Zählerwert N bei jedem Impuls um 1 erhöht wird.

Die Zeit At kann z. B. gemessen werden, indem die Differenz zwischen der Zeit des Starts der Messung, z. B. t (265) an der Stelle 265, und der Zeit des Endes der Messung, z. B. t (268) an der Stelle 268, gebildet wird.

Beträgt z. B. t (265) = 17,7 ms und t (268) = 87,7 ms, so ist At (265-268) = 87,7 ms-17,7 ms = 70 ms.

Durch die Startsignale 261,263, welche in festen Abständen TA auftreten, wird ein Messfenster verwirklicht. Die Messungen finden jedoch nicht genau zu dem Zeitpunkt des jeweiligen Startsignals statt, sondern gemessen wird an einer geeigneten, auf das jeweilige Startsignal folgenden Stelle, an der ein Impuls ("Ereignis") des Rotorstellungssignals f auftritt. Bei einer Messung zum Zeitpunkt des jeweiligen Startsignals würden der Anfang und das Ende der Messung in der überwiegenden Anzahl der Fälle an einer Stelle zwischen zwei Impulsen des Rotorstellungssignals stattfinden. Dies würde zu einer Ungenauigkeit der Messung führen. Wartet man jedoch bis zum nächsten Impuls, so werden volle Perioden zwischen den Impulsen gemessen, was zu einer starken Erhöhung der Genauigkeit der Messung führt.

Fig. 23 zeigt schematisch eine Berechnung der Drehzahl n in einer Drehzahlberechnungsfunktion 270. Die Funktion 270 bekommt in zeitlichen Abständen, welche im Mittel die Dauer TA haben, als Eingabe die Anzahl N der Impulse und die für diese Anzahl N benötigte Zeit At. Hieraus berechnet die Funktion 270 eine Drehzahlinformation n als Quotient aus der Anzahl N und der Zeit At n=N/At (3) Die Einbeziehung der Modulo-Funktion in die Messung Fig. 24 zeigt den Rotor 32' (eines Motors M_2) mit zwei Marken 291 und 292 und dem Rotorstellungssensor 61. Die Marken 291 und 292 sind ungefähr 180° mech. versetzt.

Der Rotorstellungssensor 61 erfasst mit Hilfe der Marken 291 und 292 ein Rotorstellungssignal f. Das Rotorstellungssignal f hat aufgrund der Marke 291 Impulse (weiß gefüllt dargestellt) an den Stellen 276,278,280 und 282 und aufgrund der Marke 292 Impulse (schwarz gefüllt dargestellt) an den Stellen 275,277,279 und 281. Zwischen jeweils zwei"weißen"Impulsen bzw. zwischen jeweils zwei"schwarzen"Impulsen hat sich der Rotor 32'einmal gedreht.

Da die Impulse, welche durch die Marken 291 und 292 generiert werden, nicht unterschieden werden können, kann allgemeiner gesagt werden, dass zwischen jedem Impuls und dem übernächsten Impuls, z. B. zwischen N = 1 und N = 3, eine volle Umdrehung des Rotors 32'stattfindet.

Der Messung der Drehzahl n des Rotors 32'liegen bei Fig. 24 folgende Überlegungen zugrunde : Die Marken 291,292 können niemals vollkommen symmetrisch angeordnet werden. Nimmt man an, dass die Marke 291 bei 0° mech. liegt, so müsste die Marke 292 exakt bei 180° mech. liegen. Infolge von mechanischen Fehlern kann sie aber z. B. bei 183° mech. positioniert sein. Hierdurch käme es bei einer Messung, welche an der Stelle 276 (Marke 291) startet und bei der Stelle 281 (Marke 292) endet, zu einem Messfehler, da dann der gemessene Winkelbereich nicht genau ein Vielfaches von 180° mech. ist.

Um diesem Problem zu begegnen, werden in Fig. 24 jeweils nur volle Umdrehungen gemessen, d. h. es wird immer zwischen der gleichen Art von Marke gemessen, und damit wird immer genau ein Vielfaches von 360° mech. gemessen. Die Messung, die bei 276 beginnt, nämlich nach dem Startimpuls 271, endet daher nicht an der Stelle 281, sondern an der Stelle 282, welche die nächste auf das Startsignal 273 folgende Stelle ist, an der, von dem Start der Messung an der Stelle 276 aus betrachtet, wieder eine volle Umdrehung stattgefunden hat.

Diese Bedingung kann mathematisch mit der Funktion MODULO (mod) beschrieben werden, wobei z. B.

N mod 2 = 0 (4) bedeutet, dass bei einer Division des Wertes N durch 2 der Rest 0 übrigbleibt.

So ist z. B. 0 mod 2 = 0, 1 mod2=1, 2mod2=0, 3mod2=1 usw.. Ebenso ist Omod4=0, 1 mod4=1, 2mod4=2, 3mod4=3und4mod4=0, etc.

In Fig. 24 ist bei 283 N mod 2 unter den Impulsen 275 bis 282 eingetragen, und eine Messung endet/startet z. B. nur, wenn durch ein Startsignal 271,273 eine Messung angefordert ist UND zusätzlich die Bedingung N mod 2 = 0 erfüllt ist.

Allgemeiner gesagt, sollte bei Fig. 24 der Wert von N mod 2 bei Start und Stopp der Messung derselbe sein.

Hat ein Rotor eine Zahl von A Marken, so lautet die Bedingung der Gleichung (4) allgemein N modA=0 bzw.

N mod A = const. (5) Im folgenden wird die Grosse A mit MODf bezeichnet, also A = MODf, und Gleichung (5) lautet dann N mod MOD-F = 0 bzw.

N mod MOD-F = const (5a) Die Wahl der ersten Marke kann dabei entweder durch ein besonderes Signal erfolgen, oder es kann das erste gemessene Signal als Impuls mit N = 0 gewählt werden. Aus der Erläuterung zu Fig. 13 wird dies noch deutlicher werden.

Die Messung erfolgt also bei Fig. 24 entweder, wie dargestellt, zwischen "weißen"Impulsen, oder, wie in Fig. 15 rechts dargestellt, zwischen"schwarzen" Impulse. Beim Beispiel der Fig. 24 erfolgt die Messung zwischen den Impulsen 276 und 282. Dort werden N = 6 Impulse gezählt, und der zeitliche Abstand zwischen den Impulsen 276 und 282 wird ermittelt und beträgt At (276-282). Aus diesen beiden Werten wird dann gemäss Gleichung (3) eine Drehzahlinformation n errechnet.

Es wird hervorgehoben, dass es in der Realität keine"weißen"oder"schwarzen" Impulse gibt, sondern dass dies ein didaktisches Hilfsmittel zur Erläuterung eines Aspekts der Erfindung ist.

Was geschieht bei Störimpulsen ? Fig. 25 zeigt einen Rotor 32'mit zwei Marken 781 und 782 und dem Rotorstellungssensor 61 analog zu Fig. 24. Das Rotorstellungssignal f weist Ereignisse in Form von Impulsen an den Stellen 717,718, 719,..., 728 auf. Die Impulse werden abwechselnd von der weissen Marke 781 und der schwarzen Marke 782 erzeugt, wenn diese an dem Rotorstellungssensor 61 vorbeidrehen und sind deshalb-zum besseren Verständnis-weiss und schwarz dargestellt.

Zusätzlich tritt ein Störimpuls S zwischen den Impulsen 720 und 721 auf.

Weiterhin sind Steuersignale 711, 713 und 715 zur Anforderung einer Messung dargestellt.

Unter den Impulsen ist in der Reihe 732 der Wert des Zählers N für die Anzahl der Impulse und in der Reihe 730 das Ergebnis der Berechnung von N mod 2 angegeben.

Eine Messung endet/beginnt im Normalfall immer dann, wenn durch ein Steuersignal 711, 713 bzw. 715 eine Messung angefordert ist und zudem der Wert von N mod 2 gleich Null ist, wenn sich der Rotor 32'also seit der letzten Messung ein ganzzahliges Vielfaches einer Umdrehung gedreht hat.

Der Störimpuls S bewirkt, dass bei der Messung in dem Zeitraum At (718-723) angenommen wird, dass der Rotor 32'zwischen den Impulsen 720 und 721 eine ganze Umdrehung zurückgelegt hat, obwohl er erst eine halbe Umdrehung zurückgelegt hat. Hierdurch wird nach dem Steuersignal 713 anstatt bei dem "weissen"Signal 722 bei dem"schwarzen"Signal 723 gemessen, da N mod 2 nach dem Störimpuls S nicht mehr bei den"weissen"Impulsen den Wert Null hat, sondern bei den"schwarzen"Impulsen.

Schon in dem folgenden Zeitraum At (723-727) funktioniert die Messung jedoch wieder richtig, da jetzt jeweils bei"schwarzen"Impulsen gemessen wird. Es findet also durch den Störimpuls S eine Verschiebung derjenigen Stellung des Rotors 32'statt, an der gemessen wird. Dasselbe würde gelten, wenn ein Impuls fehlen würde. Das Messverfahren arbeitet also nach einem Fehlersignal S richtig weiter und misst weiterhin ein Vielfaches von einer ganzen Umdrehung.

Dies stellt einen wichtigen Vorteil dieser Ausführungsform dar.

Fig. 10 zeigt ein Zustandsdiagramm für die Messung der Istfrequenz. Das Zustandsdiagramm weist vier Zustände S1, S2, S3 und S4 sowie sechs Übergänge T1, T2,..., T6 auf.

Zu jedem Ubergang gehört ein Ereignis und eine Aktion.

Die folgende Tabelle 1 zeigt für jeden Übergang das zugehörige Ereignis und die zugehörige Aktion. Übergang Ereignis Aktion T1 Interrupt durch Flanke des TIMER1 lesen und Signals f speichern, INT_CNT_f erhöhen T2 Interrupt durch TIMER0 nach Istwert-, Sollwertberechnung ZEit T_A und Regler freigeben T3 Interrupt durch flanke des TIMER1 lesen und Signals f speichern, INT_CNT_f T3 TIMER1 lesen und Signals f speichrn, INT_CNT_f erhöhen T4 INT_CONT_f mod MOD_f = 0 t_MEAS_f, INT_MEAS_f berechnen, CALC n starten T5 instantan keine T6 instantan Vorbreitung für neue ! ! Messung Fig. 11 zeigt ein zugehöriges Diagramm mit einem Beispielablauf für die Messung der Sollfrequenz fs und der Istfrequenz f.

Fig. 11A zeigt Interrupts 161,163,165 eines Timers TIMERO (im RC 23), welche jeweils nach einer Zeit TA, z. B. TA = 25 ms, ausgelöst werden.

Fig. 11 B zeigt die Sollfrequenz f_s, welche dem, uC 32 z. B. von dem Frequenzgenerator 20 (Fig. 1) zugeführt wird. An den Stellen 167,169 und 171 werden jeweils die beiden Variablen INT_MEAS_f_s für die Anzahl der Flanken seit der letzten Messung und t_MEAS_f_s mit dem mit Hilfe des Timers TIMER1 bestimmten Zeitpunkt der momentanen Messung an die Sollwertberechnung weitergegeben. Die in Klammern angegebenen Zahlen bezeichnen den jeweiligen Zeitpunkt bzw. Zeitbereich, für den der jeweilige Wert gilt. So wird z. B. zum Zeitpunkt 169 der Wert INT_MEAS_f_s(167-169) der die Anzahl der Flanken in dem Bereich von 167 bis 169 enthält, und der Wert t_MEAS_f_s (169), der den Zeitpunkt der Messung bei 169 enthält, an die Sollwertberechnung CALC-n-s S620 (Fig. 8) weitergegeben.

Fig. 11 C zeigt analog zu Fig. 11 B die Istfrequenz f, welche von dem Rotorstellungssensor 61 detektiert wird. An den Stellen 175,177 und 179 werden INT MEAS f und t MEAS f bestimmt.

Anhand von Fig. 10, der Tabelle 1 und Fig. 11 wird nun die Frequenzmessung erläutert. Die Messungen der Sollfrequenz fs und der Istfrequenz f laufen nach demselben Schema ab. Daher wird das Messprinzip zuerst anhand der Messung der Istfrequenz f erläutert, Messung der Istfrequenz f Zu dem in Fig. 11 beliebig gewählten Zeitpunkt t = 0 befindet sich die Istwertmessung im Zustand S1.

Bei jeder Flanke 110 (Fig. 4B) von f wird ein Hall-Interrupt 630 (Fig. 8) ausgelöst.

Dieser bewirkt folgendes : -Die Routine Hall-Interrupt S631 (Fig. 13) wird durch den Hall-Interrupt 630 ausgelöst, -in der Routine Hall-Interrupt S631 wird der Zähler NTCNTJ für die Anzahl der Flanken um einen Wert NCf, z. B. INC-F = 1, erhöht (S322 in Fig. 13), -in der Routine Hall-Interrupt S631 wird der augenblickliche Wert des Ringzählers TIMER1 gespeichert (S322 in Fig. 13).

Auf dem Zustandsdiagramm (Fig. 10) ist dies dargestellt als Übergang T1 von Zustand S1 zu S1. Das Ereignis ist hier ein durch eine Flanke 110 ausgelöster Hall-Interrupt 630, und die Aktion besteht in der Zählung der Flanke 110 im Flankenzähler INT CNT f, und der Speicherung des augenblicklichen Wertes des Ringzählers TIMER1.

Ein anderes Ereignis lost den Übergang T2 von Zustand S1 nach Zustand S2 aus. Das Ereignis ist ein Auftreten eines durch den Timer TIMER0 ausgelösten TIMERO-Interrupts. TIMERO löst in vorgegebenen Abständen TA (Fig. 11A) einen TIMERO-Interrupt 638 aus, z. B. an den Stellen 161,163, 165. In der zugehörigen Interruptroutine TIMERO-interrupt S639 (Fig. 8 und 12) werden die Istwertberechnung, Sollwertberechnung und der Regler freigegeben. TIMERO definiert aufeinanderfolgende Fenster mit der Breite TA.

Im folgenden soll die eigentliche Messung von INT_MEAS_f, t_MEAS_f stattfinden. Wie an den Stellen 175,177 und 179 zu sehen ist, findet die jeweilige Messung nicht genau zu den Zeitpunkten 161,163 und 165 der Anforderung statt, sondern zu einem geeigneten Zeitpunkt, welcher gewöhnlich zeitlich etwas später liegt als der Zeitpunkt der Anforderung.

Im Zustand S2 werden weiterhin die Flanken 110 des Signals f erfasst, und es findet bei jeder Flanke 110 ein Übergang T3 von S2 nach S2 analog zu T1 statt, in dem der augenblickliche Wert des Ringzählers TIMER1 ausgelesen und gespeichert und der Flankenzähler NTCNTf erhöht wird.

Zu der endgültigen Messung der Werte INT_MEAS f und t_MEAS f muss eine weitere Bedingung erfüllt sein. Die Pole eines permanentmagnetischen, z. B. vierpoligen Rotors haben meistens nicht genau eine Erstreckung (Polbreite) von 90° mech., sondern weichen leicht hiervon ab. Die Winkelsumme aller Polwinkel ergibt jedoch immer 360° mech. Daher ist es vorteilhaft, z. B. bei einer Messung mit Hallsensoren nur jede volle Umdrehung, also bei einem vierpoligen Rotor jede vierte Flanke, zu messen, da man so sicher sein kann, dass immer genau an derselben Stelle des Rotors 32 gemessen wird. Für eine genauere Erklärung wird auf die Beschreibung zu Fig. 24 verwiesen.

Die Anzahl der Flanken 110 des Signals f wird in der Variablen INT CNT f gezählt, und die Bedingung, dass bei einem vierpoligen Rotor immer ein Vielfaches von ganzen Umdrehungen gemessen wird, kann gemäß der Beschreibung zu Fig. 24 und Gleichung (5) mit INT CNT f mod 4 = 0 (5') erreicht werden, oder alternativ mit INT CNT f mod 8 = 0, wobei im letzteren Fall immer frühestens nach zwei vollen Umdrehungen, oder einem Vielfachen hiervon, gemessen wird. Bei INT CNT f mod 12 = 0 würde frühestens nach drei vollen Umdrehungen gemessen, etc. Hierdurch würde jedoch die Dynamik eines Reglers verschlechtert.

Bei einem sechspoligen Rotor würde man dementsprechend z. B. mit INT CNT f mod 6 = 0 arbeiten, oder mit INT CNT f mod 12 = 0.

Falls also die Anzahl der Flanken ein Vielfaches von MODf, hier MODf = 4 ist, findet in Fig. 10 ein Ubergang T4 von S2 nach S3 statt, die Anzahl der erfassten Flanken seit der letzten Messung, welche in INT CNT f gespeichert ist, wird in INT_MEAS_f gespeichert (S330 in Fig. 13), und der Zeitpunkt der aktuellen Messung wird in t_MEAS_f gespeichert. Die Werte INT_MEAS f und t_MEAS_f werden daraufhin der Istdrehzahl-Berechung CALC_n S616 übergeben, die in Fig. 15 dargestellt ist.

Ist z. B. in Fig. 11 nach dem TIMERO-Interrupt 163 bei der Istfrequenz f zum Zeitpunkt 177 ein Vielfaches von MODf = 4 Flanken erfasst worden, also hier z. B. 8 Flanken (8 mod 4 = 0), so wird die Anzahl der Flanken seit der letzten Messung zum Zeitpunkt 177 in INT_MEAS f (175-177) und der Zeitpunkt 177 der aktuellen Messung in t_MEAS f (177) gespeichert.

Aus dem aktuellen Wert t_MEAS f (177) und dem gespeicherten Wert t_MEAS_f (175) der letzten Messung kann die für die in der Variablen INT_MEAS f (175-177) gezählten Flanken benötigte Zeit AtMEASf (175-177) bestimmt werden.

Eine alternative Möglichkeit, die Zeit Ot_MEAS f zu bestimmen, liegt darin, die Zeit jeweils am Anfang einer Messung auf Null zurückzusetzen. Dies kann z. B. durch Setzen des Timers TIMER1 auf Null erfolgen. Am Ende der Messung ent- spricht die Zeit dann dem Wert AtMEASf. Hierdurch liegt an den Stellen 175, 177 und 179 direkt INT MEAS f und AtMEASf vor. Ein Nachteil des Zurück- setzens von TIMER1 liegt darin, dass er dann schlecht gleichzeitig für andere Messungen verwendet werden kann, so dass man ggf. weitere Zähler benötigt, was aber im Rahmen der vorliegenden Erfindung nicht ausgeschlossen ist.

Von Zustand S3, in welchem die letzte Messung abgeschlossen ist, führt ein instantaner Übergang T5 zu dem Zustand S4, in welchem eine neue Messung beginnt.

Vom Zustand S4 führt ein instantaner Übergang T6 zu dem Zustand S1, und die Frequenzmessung ist wieder im Ausgangszustand S1. Während T6 wird die nächste Messung vorbereitet. Es wird z. B. der Zähler NTCNTf (für die Zahl der Flanken 110) wieder auf Null zurückgesetzt.

Messung der Sollfrequenz f s Durch die TIMERO-interrupts 638 an den Stellen 161,163 und 165 werden sowohl die Istfrequenzmessung als auch die Sollfrequenzmessung angefordert.

Die Messung der Sollfrequenz f s läuft übereinstimmend mit der Messung der Istfrequenz ab, was auch aus den folgenden Flussdiagrammen ersichtlich ist.

Die Variablen der Sollwerterfassung sind gleich benannt wie die der Istwerterfassung, sie haben jedoch eine Endung"s"hinzugefügt, z. B.

INT MEAS f s anstelle von INT MEAS f.

Auch bei einer Sollfrequenzvorgabe fs kann es sinnvoll sein, ein Vielfaches einer festen Flankenzahl zu messen. So kann es z. B. innerhalb einer Periode der Sollfrequenz fs zu Abweichungen kommen. Daher kann z. B. eine Messung von jeweils mindestens zwei Flanken vorteilhaft sein. Der Flankenzahler INT CNT f s muss dann mit INT CNT f s mod 2 = 0 überprüft werden.

Die Messung gemäß Fig. 10 und 11 hat mehrere Vorteile.

Bei interruptbasierten Messungen kann man zur Bestimmung der Drehzahl entweder bei jedem Interrupt oder nach einer festen Anzahl von Interrupts die Zeit zum vorherigen Interrupt messen und daraus die Drehzahl berechnen.

Hierdurch kommen bei immer höher werdender Drehzahl immer häufiger neue Messwerte, welche verarbeitet werden müssen. Bei sehr hohen Drehzahlen würde dies zu einer Überlastung des gC 23 und zur Nichtberücksichtigung von einzelnen Messwerten führen.

Bei dem vorliegenden Messverfahren wird in vorgegebenen Abständen TA jeweils eine neue Messung eingeleitet. Der RC 23 wird dadurch bei ai) en Drehzahlen bzw. Frequenzen gleich belastet.

Weiterhin weist das vorliegende Verfahren den Vorteil auf, dass bei der Messung des Signals f bzw. fs mindestens bis zum nächsten Interrupt gemessen wird. So wird nicht zu irgendeinem Zeitpunkt, der z. B. in der Mitte zwischen zwei Flanken liegt, gemessen, sondern es wird immer von Flanke zu Flanke gemessen, was die Genauigkeit der Messung erheblich erhöht.

Eine weitere Erhöhung der Genauigkeit ergibt die Messung von jeweils einem Vielfachen von MODf bzw. MOD f s Flanken, da so z. B. Messfehler durch Magnetisierungsfehler bei einem permanentmagnetischen Rotor bzw. durch Symmetriefehler der Sollfrequenzvorgabe vermieden werden. Dies bedeutet z. B. bei einem vierpoligen Motor, dass eine Messung frühestens bei der vierten, 8. oder 12. etc. Flanke erfolgt, nämlich immer dann, wenn X mod 4 = 0 ist (bei einem vierpoligen Rotor werden pro Umdrehung vier Flanken 110 erzeugt).

Ein weiterer großer Vorteil liegt darin, dass jeweils nach Ablauf einer Zeit T A sowohl die Istwert-als auch die Sollwertmessung gestartet wird, da so die Resultate beider Messungen der Reglerfunktion RGL praktisch gleichzeitig zur Verfügung stehen. Bei einer Messung nach jeder Flanke würde das Signal mit der höheren Frequenz häufiger gemessen werden, was für die Weiterverarbeitung weniger günstig wäre.

Außerordentlich vorteilhaft ist die Verwendung desselben Timers (TIMER 1) für die Messung von f bzw. fs, da eine Ungenauigkeit des Timers keine Ungenauigkeit bei dem Zeitverhältnis der Messung von f bzw. fs bewirkt. Die Frequenzen f und fs werden so mit der gleichen Zeitschiene gemessen. Eine solche Messung ermöglicht in sehr vorteilhafter Weise eine frequenzgesteuerte Drehzahiregelung mit Getriebefunktion. Eine derartige Messung mit demselben Timer wird nachfolgend an einem Beispiel beschrieben.

TIMER1 wird bevorzugt als Ringzähler ausgebildet, der ständig lauft.

Flussdiagramme zur Messung von f und fs Die Fig. 12 bis 14 zeigen Flussdiagramme zu einem Programm für die in Fig. 10 und 11 beschriebene Messung.

Fig. 12 zeigt die Routine TIMERO-Interrupt S639 (Fig. 8), welche jeweils nach der Zeit TA (Fig. 11) die Istwertmessung"MEAS f"147 (Fig. 7), die Sollwertmessung"MEAS f_s" 141 (Fig. 7) und den von RGLON S624 und RGL S628 (jeweils Fig. 8) gebildeten digitalen Drehzahiregler n-CTRL 35 (Fig. 1 und 7) anfordert.

Es werden folgende Variablen benutzt CNT T A Interner Zähler für die Zeit TA T A TIME Grenzwert für neue Messung DO_MEAS_f Flag zum Aufrufen der Istwertmessung DO_MEAS_f_s Flag zum Aufrufen der Sollwertmessung FCTRGLON Funktionsregisterbit der Funktion RGLON S624 (vgl. Fig. 9).

Bei jedem Auftreten eines TIMERO-Interrupts 638 (Fig. 8) wird die TIMERO- lnterruptroutine S639 ausgeführt, die in Fig. 12 dargestellt ist.

In S352 können ggf. zusätzliche, hier nicht ausgeführte Schritte durchlaufen werden, falls durch den TIMERO auch andere Programmteile gesteuert werden sollen.

In S354 beginnt ein Subtimer Subtimer T A. Subtimer bedeutet, dass durch die im folgenden erläuterten Schritte S356, S358 und S362 die eigentliche Aktion in S360 erst nach einer bestimmten Anzahl von TIMER0-interrupts ausgelöst wird.

Dies hat den Vorteil, dass der Timer TIMERO auch für andere Zwecke verwendet werden kann, welche häufiger aufgerufen werden müssen.

In S356 wird der interne Zähler CNTTA um 1 erhöht.

In S358 wird überprüft, ob der Zähler CNTTA größer oder gleich dem-oben definierten-Wert T A TIME ist.

Falls nein, so wird sofort an das Ende S364 gesprungen, und die TIMERO- lnterruptroutine wird mit dem Befehl"RETI"verlassen.

Falls jedoch in S358 der Zähler CNTTA den Wert T A TIME erreicht hat, so werden in S360 DO_MEAS_f_s, DO_MEAS_f und FCTRGLON auf 1 gesetzt.

Mit DO_MEAS f s = 1 wird der Interruptroutine f s-Interrupt S635 (Fig. 14) mitgeteilt, dass eine Messung der Sollfrequenz fs gestartet werden soll. Mit DOMEASf = 1 wird der Interruptroutine Hall-Interrupt S631 (Fig. 13) mitgeteilt, dass eine Messung der Istfrequenz f gestartet werden soll. Mit FCT_RGL = 1 wird die Startfunktion RGLON S624 (Fig. 17) gestartet, welche bestimmt, wann die Reglerfunktion RGL S628 (Fig. 18) gestartet wird.

Ein Beispiel : Wenn der TIMERO-Interrupt alle 10 s ausgelöst wird und der Wert T_A_TIME = 2500 ist, findet der Aufruf in S360 alle 25 ms statt.

Die Zeit TA muss an den jeweiligen Motor angepasst werden. Produziert der Rotorstellungssensor 61 z. B. viele Ereignisse pro Umdrehung des Rotors 32, und dreht der Rotor 32 schnell, so kann TA kürzer gewählt werden. Dreht der Rotor 32 jedoch langsam, so muss T A langer, z. B. TA = 250 ms, gewählt werden. Die Frequenz fs muss in der gleichen Weise berücksichtigt werden.

In S362 wird der Zäh ! er CNTTA wieder auf Null zurückgesetzt, um den Subtimer Subtimer T A neu zu starten.

In Fig. 11 findet der Aufruf von S360 an den Stellen 161,163 und 165 statt.

Fig. 13 zeigt ein Ausführungsbeispiel für die Interruptroutine Hall-lnterrupt S631, welche bei jedem durch das Auftreten einer Flanke 110 (Fig. 4B) des Signals f ausgelösten Interrupt ausgeführt wird. Dieser Interrupt wird so bezeich- net, weil er gewöhnlich durch das Signal eines Hallgenerators 61 ausgelöst wird. Fig. 29 zeigt ein Beispiel hierfür. Selbstverständlich könnte er ebenso durch das Signal eines optischen oder mechanischen Sensors ausgelöst werden, und man könnte ihn auch als sensorgesteuerten Interrupt bezeichnen.

Die Routine Hall-Interrupt S631 sorgt bei diesem Beispiel in den Schritten S304 bis S314 für die Kommutierung eines elektronisch kommutierten Motors 32, und in den Schritten S320 bis S332 für die Messung der Istfrequenz f.

Es werden folgende Variablen benutzt INT CNT f Interruptzähler für die Erfassung der Flanken des Signals f INC f Inkrementwert tENDf Zeitpunkt des letzten Interrupts der Erfassung MOD f Anzahl der Interrupts für mod-Berechnung, vgl. Gleichung (5a) t_MEAS f Gemessene Zeit des letzten Interrupts INT_MEAS_f Zahl der gemessenen Interrupts seit der letzten Messung DO_MEAS_f Flag zum Aufrufen der Istwertmessung FCTCALCn Funktionsregisterbit der Funktion CALC n S616 (Fig. 8 und 9) In S302 können beliebige Schritte ausgeführt werden.

Die Routine Hall-Interrupt S631 sorgt bei einem elektronisch kommutierten Motor (ein solcher ist in Fig. 29 schematisch dargestellt) in COMMUT S304 für die elektronische Kommutierung. Diese entfällt bei einem Kollektormotor, wie er in Fig. 6 dargestellt ist.

In S306 wird mit HALL = 1 überprüft, ob das Signal f (Fig. 4B) auf HIGH ist. Falls ja, so wird in S308 der Anschluss B5 des, uC 23 (Fig. 3) so eingestellt, dass er bei der nächsten Flanke von HIGH nach LOW einen Interrupt auslöst. (Alternativ ist auch ein sogenannter Interrupt on Change möglich, d. h. bei jeder Flanke des Signals HALL am Port B5, egal in welcher Richtung, findet ein Interrupt statt.) In S310 findet schließlich die Kommutierung des Motors M 32 statt, indem OUT1 auf 1 und OUT2 auf 0 gesetzt wird. War in S306 HALL = 0, so wird in S312 der Anschluss B5 auf eine umgekehrte Flanke eingestellt, und in S314 wird OUT1 auf 0 und OUT2 auf 1 gesetzt. Die Kommutierung mit den beiden Signalen OUT1 und OUT2 wurde bereits bei Fig. 29 ausführlich beschrieben.

In MEAS f S320 beginnt die Erfassung und Messung des Signals f. In S322 wird der Interruptzähler INT CNT f, welcher z. B. 1 Byte groß ist, um den Wert INC f, z. B. NCf = 1, erhöht, und der Wert t TIMER1 von TIMER1 wird in tENDf gespeichert. Damit sind sowohl die Anzahl der Interrupts als auch die momentane Zeit erfasst.

In S324 wird mit INT CNT f mod MODJ = 0 überprüft, ob der Wert im Interrupt- zähler INT CNT f ein Vielfaches von MODJ ist. Bei MODJ = 4 ist z. B.

INT CNT f = 20 ein Vielfaches von MOD f, also 20 mod 4 = 0. Falls INT CNT f nicht ein Vielfaches von MODJ ist, so wird an das Ende S334 der Interrupt- routine gesprungen. Falls INT CNT f ein Vielfaches von MODf ist, so wird in S326 überprüft, ob DO_MEAS f = 1 ist, ob also in dem Schritt S360 der Inter- ruptroutine TIMERO-Interrupt S639 (Fig. 12) eine Messung der Istfrequenz f angefordert wurde. Falls nein, soll noch nicht gemessen werden, und es wird an das Ende S334 gesprungen. Falls ja, so wird in S328 anhand des Funktionsre- gisterbits FCT CALC_n überprüft, ob die letzte Drehzahlberechnung bereits abgeschlossen ist. Falls FCTCALCn = 1 ist, so wird an das Ende S334 gesprungen. Dies verhindert, dass Messungen verlorengehen, wenn die Drehzahlberechnung"CALC_n"S616 zu viel Zeit benötigt. Dieser Sonderfall tritt jedoch im normalen Betrieb nicht auf.

In S330 werden die Variablen t_MEAS_f und INT_MEAS_f gesetzt, welche der Drehzahlberechnung CALC_n S616 (Fig. 15) übergeben werden.

Hierzu wird t MEAS f auf den letzten erfassten Timerwert tENDf des Ringzählers TIMER1 gesetzt, INT_MEAS f wird auf den Wert des Interruptzählers INT CNT f gesetzt, und INT CNT f wird auf Null zurückgesetzt.

In S332 wird die Drehzahlberechnung CALC n S616 (Fig. 15) durch Setzen von FCTCALCn auf 1 angefordert, und die Messanforderung wird durch Zurücksetzen von DO_MEAS_f auf Null zurückgesetzt, da die Messung abgeschlossen ist.

Die Routinen TIMERO-Interrupt S639 (Fig. 12) und HALL-Interrupt S631 (Fig. 13) bilden somit zusammen eine Messung der Istfrequenz f gemäß dem Zustandsdiagramm der Fig. 10.

Falls der, ut 23 die Operation mod nicht beherrscht, bestehen andere Möglichkeiten.

Bei vieien Cs ergibt eine ganzzahlige Division mit div als Ergebnis sowohl den ganzzahligen Quotienten als auch den nicht-negativen Rest. So ergibt z. B. 7 div 4 als Ergebnis den Quotienten 1 und den Rest 3. Bei solchen µCs kann die Operation div zur Berechnung des Restes verwendet werden.

Eine weitere Möglichkeit der Berechnung von X mod MODf besteht z. B. in der Verwendung einer weiteren Variablen MOD CNT, welche bei jeder Erhöhung der Variablen X ebenfalls erhöht wird, und welche bei Erreichen von MODf jeweils auf Null zurückgesetzt wird. Die Variab ! e MODCNT enthätt dann das Ergebnis von X mod MOD-F.

Fig. 14 zeigt ein Beispiel für die Interruptroutine f s-Interrupt S635.

Diese ist bis auf das Fehlen des Kommutierungsteils (Schritte S304 bis S314 der Fig. 13) wie die Interruptroutine HALL-Interrupt S631 (Fig. 13) aufgebaut, und sie wird deshalb nicht nochmals beschrieben. Die Bezugszeichen der Schritte sind um 100 erhöht, so dass z. B. der Schritt S332 aus Fig. 13 dem Schritt S432 aus Fig. 14 entspricht.

Es werden folgende Variablen benutzt INT CNT f s Interruptzähler für die Erfassung der Flanken der Sollfrequenz INC_f_s Inkrementwert tENDfs Zeitpunkt des letzten Interrupts der Erfassung MOD f s Anzahl der Interrupts für mod-Berechnung t_MEAS_f_s Gemessene Zeit des letzten Interrupts INT_MEAS_f_s Anzahl der Interrupts seit der letzten Messung DO_MEAS_f_s Flag zum Aufrufen der Sollwertmessung FCT CALC_n s Funktionsregisterbit für die Funktion CALC n s S620 Fig. 15 zeigt die Routine CALC_n S616, welche nach der Messung des Timerwerts t_MEAS_f und der Anzahl der Flanken 110 (Fig. 4) des Signals f in INT_MEAS_f durch die Routine Hall-Interrupt (S332 in Fig. 13) angefordert wird.

Es werden folgende Variablen benutzt AtCALCf Zeitdifferenz zur letzten Messung t OLD f Zeitpunkt der letzten Messung t_MEAS f Zeitpunkt der momentanen Messung INT CALC f Anzahl der Interrupts seit der letzten Messung für die Berechnung INT_MEAS_f Übergebene Anzahl der Interrupts seit der letzten Messung n Drehzahl des Motors M REM n Rest der ganzzahligen Division h Hochzahl für Parametrierung von INT CALC f REM n OLD Rest der ganzzahligen Division der letzten Berechnung In S370 wird die Differenz zwischen dem Timerwert t OLD f der letzten Mes- sung und dem aktuellen Timerwert t_MEAS f berechnet und in der Variablen AtCALCf gespeichert, welche dem Wert AtMEASf aus Fig. 11 entspricht. Die Differenz wird bei einem Ringzähler üblicherweise mit Hilfe des Zweierkomple- ments gebildet. Der aktuelle Timerwert t_MEAS f wird daraufhin für die nächste Messung in t OLD f gespeichert, und die gemessene Anzahl der Interrupts INT_MEAS_f wird in INT_CLAC_f gespeichert.

In S372 geschieht die Berechnung der Drehzahl n. Diese ist proportional zu dem Quotienten aus der Zahl der Interrupts NTCALCf, einem Maß für die Anzahl der Umdrehungen, und der hierfür benötigten Zeit AtCALCf. Es gilt n = const * NTCALCf/AtCALCf (6) const ist eine Proportionalitatskonstante.

Für die Berechnung der Drehzahl n wird eine ganzzahlige Division div verwendet, welche als Ergebnis den ganzzahligen Quotienten n und den positiven Rest REM_n ergibt. Für eine Beschreibung des Operators div siehe Fig. 13.

Weiterhin wird der Interruptzähler INT CALC f, welcher in diesem Ausführungsbeispiel z. B. 4 Byte groß ist, mit einem Faktor 2 ^ h, z. B. h = 24, parametriert. Es kann anstelle von 2 ^ h natürlich jeder andere Faktor gewählt werden. Die Multiplikation mit 2 A h kann jedoch in binärer Darstellung bevorzugt durch eine Verschiebung des Wertes um h Stellen nach links ersetzt werden.

Durch die Parametrierung werden die sich durch die Division ergebenden Drehzahlen n z. B. in 16 Bit gut aufgelöst. Der Exponent h muss hierzu auf den jeweiligen Motor abgestimmt werden.

Als Beispiel folgt die Berechnung der Drehzahl für den Bereich zwischen den Stellen 175 und 177 aus Fig. 11 : INT_MEAS f ist ein Byte groß, INT CALC f vier Byte und AtCALCf zwei Byte.

INT_MEAS_f (175-177) hat hier den Wert 8, es wurden also seit der letzten Messung zum Zeitpunkt tMEASf (175) acht Flanken 110 des Signals f (Fig.

11C) gezählt, INT_CALC_f bekommt in S370 den Wert iNTMEASf (175-177) = 8 zugewiesen. In S372 wird INT CALC f bei h = 19 mit 2 # 19 = 524. 288 parametriert und erhält den Wert 4.194. 304.

AtMEASf (175-177) hat den Wert 26.700, welcher bei einer Auflösung des Ringzählers TIMER1 von 1 µs einer Zeit von 26,7 ms entspricht. AtCALCf bekommt in S370 den Wert 26.700, welcher sich aus der Differenz zwischen alter und momentaner Messung ergibt, zugeordnet.

Die Division von IN CALCIF durch AtCALCf ergibt die Drehzahl n = 157 und den Rest REM n = 2404.

Die physikalische Drehzahl n_phys entspricht der Anzahl der Umdrehungen pro Minute. Aus 8 Hallwechseln geteilt durch 4 Hallwechsel pro Umdrehung (vierpoliger Rotor) ergeben sich 2 Umdrehungen, und die hierfür benötigte Zeit beträgt 0,0267 s. Damit ergibt sich eine physikalische Drehzahl n_phys = 2/ 0,0267 U/s = 74,906 U/s = 4494,4 U/min.

In der Berechnung wird auch der Rest REM n OLD der vorhergehenden Drehzahlberechnung durch Addition zu dem Produkt aus INT CALC f und constf berücksichtigt.

In dem obigen Beispiel weicht z. B. die berechnete Drehzahl n von der tatsächlichen Drehzahl etwas ab, da die Division die ganze Zahl 157 anstelle des eigentlichen Ergebnisses von ca. 157,09 ergibt. Die Differenz geht jedoch nicht verloren, sondern sie wird bei der folgenden Division in S372 durch die Addition des Restes REM n OLD der letzten Division zum Zähler (Englisch : numerator) berücksichtigt.

Durch die Berücksichtigung des Restes REM n OLD wird in vorteilhafter Weise erreicht, dass keine Information verlorengeht, und sie führt zu einer messbaren Verbesserung des Reglers, sofern sie verwendet wird.

Nach der Berechnung von n und REM n wird in S372 der Rest REM_n in REMnOLD für die nächste Berechnung gespeichert.

In S374 wird das Funktionsregisterbit FCTCALCn (Fig. 9 ; Fig. 13, S332) wieder auf Null zurückgesetzt, da die Drehzahlberechnung abgeschlossen ist.

Daraufhin wird an den Anfang S602 des Funktionsmanagers (Fig. 8) gesprungen.

Fig. 16 zeigt ein Flussdiagramm zur Berechnung der Solldrehzahl n-s.

Es werden folgende Variablen benutzt t CALC f s Zeitdifferenz zur letzten Messung t OLD f s Zeitpunkt der letzten Messung t_MEAS_f_s Zeitpunkt der momentanen Messung INT CALC f s Anzahl der Interrupts seit der letzten Messung für die Berechnung INT_MEAS_f_s Übergebene Anzahl der Interrupts seit der letzten Messung n s Solldrehzahl (gewünschte Drehzahl des Motors M) REM n s Rest der ganzzahligen Division h s Hochzahl für Parametrierung von INT CALC f s REM_n s OLD Rest der ganzzahligen Division der letzten Berechnung Die Berechnung der Solldrehzahl ns ist identisch mit der Berechnung der Drehzahl n gemäß Fig. 15. Die Bezugszeichen der Fig. 16 entsprechen den um 100 erhöhten Bezugszeichen der Fig. 15. Der Wert h_s zur Parametrierung von INT CALC f wird im Normalfall gleich dem Wert h aus Fig. 15 gewählt, da die Solldrehzahl und die Istdrehzahl vergleichbar sein sollen. Durch eine Wahl von hs ung ! eich h könnte eine relative Parametrierung stattfinden, welche jedoch im Normalfall nicht gewählt wird.

Die Schritte von Fig. 16 werden nicht nochmals beschrieben, um unnötige Längen zu vermeiden. Auf Fig. 15 und die zugehörige Beschreibung wird verwiesen.

Da die Messung der Sollfrequenz fs und der Istfrequenz f in der gleichen Weise und quasiparallel abläuft, hat man nach jeder durch den TIMERO-Interrupt ausgelösten Messung einen Wert für die Solldrehzahl ns und einen Wert für die Drehzahl n. Die Werte n und ns sind vergleichbar, da die Zeiten mit Hilfe desselben Timers TIMER1 und praktisch gleichzeitig gemessen wurden.

Aufgrund der verwendeten Messmethode sind sie zudem sehr genau.

Gesamtreg ler Start des Reglers durch die Funktion RGL_ON Fig. 17 zeigt ein Flussdiagramm für ein Ausführungsbeispiel der Funktion RGLON S624 der Fig. 8, welche bestimmt, wann die Reglerfunktion RGL S628 (Fig. 18) gestartet wird.

Da die Erfassung und Messung der Istfrequenz f und der Sollfrequenz fs und damit auch die Berechnung der Drehzahl n und Solldrehzahl ns unabhängig voneinander ablaufen und nicht zum gleichen Zeitpunkt enden, muss in der Funktion RGLON S624 bestimmt werden, wann die Reglerfunktion RGL S628 gestartet wird. In diesem Ausführungsbeispiel wird die Reglerfunktion RGL S628 gestartet, wenn sowohl die Istdrehzahlberechnung CALC n S616 als auch die Solldrehzahlberechnung CALC_n s S620 abgeschlossen sind.

Es werden folgende Variablen benutzt FCT CALC_n s Funktionsregisterbit für die Funktion CALC n s S620, vgl.

Fig. 9 FCTCALCn Funktionsregisterbit für die Funktion CALC_n S616, vgl. Fig. 9 FCT_RGL Funktionsregisterbit für die Funktion RGL S628, vgl. Fig. 9 FCTRGLON Funktionsregisterbit für die Funktion RGLON S624, vgl. Fig. 9 In S390 wird anhand des Funktionsregisterbits FCTCALCns überprüft, ob die Solldrehsahlberechnung CALC_n_s S620 fertig ist. Falls nein, so wird zurück zum Anfang S602 des Funktionsmanagers (Fig. 8) gesprungen. Falls ja, so wird in S392 anhand des Funktionsregisterbits FCTCALCn überprüft, ob die Drehzahlberechnung CALC n S616 abgeschlossen ist. Falls nein, so wird zurück zum Anfang S602 des Funktionsmanagers gesprungen. Falls ja, so liegen sowohl die Drehzahl n als auch die Solldrehzahl ns vor, und die Reglerfunktion RGL S628 wird durch Setzen des Funktionsregisterbits FCT_RGL auf 1 angefordert. Das Funktionsregisterbit FCTRGLON wird auf Null zurückgesetzt, da die Funktion RGLON S624 abgearbeitet ist.

Es wird also mit dem Start der Reglerfunktion RGL S628 gewartet, bis die Solldrehzahl n s und die Drehzahl n berechnet sind.

Reglerfunktion RGL mit"elektronischem Getriebe" Fig. 18 zeigt ein Flussdiagramm für eine Ausführungsform der Reglerfunktion RGL S628 (Fig. 8), welche aus der Drehzahl n und der Solldrehzahl n s einen Stellwert RGLVAL berechnet und diesen ausgibt.

Es werden folgende Variablen benutzt RGL_DIFF Regeldifferenz X Getriebefaktor RGLPROP Proportiona ! antei ! RGL_P Proportionalfaktor <BR> <BR> <BR> RGL INT Integralanteil<BR> <BR> <BR> <BR> <BR> RGL I Integralfaktor RGLVAL Vom Regler berechneter Stellwert RGL_MAX Maximaler Stellwert In S530 wird die Regeldifferenz RGL_DIFF als RGL_DIFF : = n-s * X-n (7) berechnet.

Durch die Multiplikation der So) idrehzahi ns mit X wird eine Getriebefunktion verwirklicht. Mit X = 2 wird z. B. erreicht, dass die Solldrehzahl ns der halben gewünschten Drehzahl n des Motors 32 entspricht, oder anders gesagt, dass der Motor M genau doppelt so schnell läuft wie der Sollwert n_s, und mit X = 1/2 wird z. B. erreicht, dass die Solldrehzahl n s der doppelten Drehzahl n entspricht, d. h. der Motor M dreht sich mit dem halben Wert der Drehzahl, die durch ns vorgegeben wird. Dies wird an einem Zahlenbeispiel nachfolgend erlautert.

Die Drehzahl n und die Solldrehzahl ns werden durch diesen Schritt in ein bestimmtes Verhaltnis n/n s=X (8) gesetzt. Für die Istfrequenz f und die Sollfrequenz fs bedeutet dies ebenfalls ein festes Verhältnis, z. B. fs/f=y/z (1) wie in Fig. 1 erläutert.

Wie sich aus S530 direkt ergibt, könnte man die Regeldifferenz auch anders berechnen, z. B. nach der Gleichung RGL_DIFF : =ns-Y*n (7a), wie das in Fig. 7 bei 145'angedeutet ist, oder nach der Gleichung RGL KIFF : = A * ns-B * n (7b), oder unter Verwendung einer geeigneten mathematischen Funktion, z. B.

In (n s), oder einer Funktion der Zeit, z. B.

RGLD) FF : = (ns * sin t)-n (7c), wobei dann die Drehzahl zwischen der positiven Drehzahl ns und der negativen Drehzahl- (n-s) periodisch oszillieren würde. Selbstverständlich setzt dies einen Motor voraus, der in beiden Drehrichtung laufen kann. Ein solcher Motor 32"ist als Beispiel in Fig. 29 dargestellt. Die meisten elektronisch kommutierten Motoren laufen in beiden Drehrichtungen und eignen sich für solche Anwendungen.

Ebenso kann ein Getriebefaktor eingeführt werden, indem man z. B. bei der Sollfrequenz fs nur jedes zweite"Ereignis"zählt, und dasselbe gilt analog für die Istfrequenz f. Da numerische Werte miteinander verglichen werden, ist jede Art von bekannter mathematischer Manipulation dieser numerischen Werte möglich, wobei sich im einzelnen immer wieder besondere Vorteile ergeben werden.

Im folgenden werden einige weitere Möglichkeiten der Ausführung eines "elektronischen Getriebes"dargestellt und erläutert.

Die Multiplikation von ns mit X kann z. B. als Festkomma-Multiplikation ausgeführt werden. Bei der Festkomma-Multiplikation wird bei der Variablen X an einer festen Stelle ein Komma angenommen, so dass die Bits rechts von dem Komma einer Multiplikation mit 1/2,1/4 etc. entsprechen. Der Vorteil der Festkomma-Multiplikation ist, dass keine Nachkommastellen verlorengehen.

Zahlenbeispiel Vom Sollwertgeber 20 (Fig. 1) wird eine Frequenz fs zugeführt, die einer Solidrehzahl von 3000 U/min entspricht. Der Motor 32 soll jedoch mit einem Getriebefaktor X laufen, der 0, 5 beträgt, also mit 1500 U/min.

Aus der Frequenz fs wird in Fig. 7 im Teil 143 (entspricht den Flußdiagrammen der Fig. 14 und 15) eine Solldrehzahl n s von 3000,00 U/min berechnet. Intern wird im Rechner- wegen der höheren Genauigkeit-die Zahl 300.000 verwendet, was hexadezimal der Zahl 493E0 entspricht. Diese Zahl wird mit dem Getriebefaktor X = 0,5 multipliziert, und man erhält folglich als Sollwert X * ns den hexadezimalen Wert 249F0.

Der Motor 32 dreht sich im Augenblick mit 1499,99 U/min. Im Rechner wird-wegen der höheren Genauigkeit-die Zahl 149.999 verwendet, und zwar als hexadezimale Zahl 249EF. Dies entspricht in Fig. 7 der tatsächlichen Drehzahl n.

Im Differenzbildner 151 wird nun gemäß S530 (Fig. 18) die Regeldifferenz RGL_DIFF gebildet, also ns * X-n = 249F0-249EF = 1 [dezimal] (Der Wert 1 ist im Dezimalsystem angegeben, um die Verständlichkeit zu erhöhen).

Da die Werte für X * n-s und n in diesem Beispiel zuvor mit 100 multipliziert worden waren, muss dieser Wert wieder durch 100 dividiert werden, d. h. der tatsächliche Wert der Regeldifferenz beträgt 1/100 = 0,01 U/min.

Dieser numerische Wert wird gemäß S532 (Fig. 18) im PI-Regler weiterverarbeitet, und da die Drehzahl etwas zu niedrig ist, wird die Größe RGLVAL durch den Pl-Regler erhöht, um die Drehzahl auf exakt 1500 U/min zu bringen. Durch die Schritte S534 bis S540 wird die Größe RGLVAL innerhalb der zulässigen Grenzen 0 und RGLMAX gehalten.

Obwohl also als Frequenz fs ein Sollwert von 3000 U/min vorgegeben wird, wird der Motor auf 1500 U/min geregelt, da ein"Getriebefaktor"X von 0,5 eingestellt ist. In der gleichen Weise könnte auch ein anderer Getriebefaktor eingestellt werden, z. B. 0,333, und der Motor würde dann auf 1000 U/min geregelt werden.

Aus dem Beispiel sieht man auch, dass man ebensogut den Wert für ns unverändert lassen könnte, und dafür den Wert für n bei diesem Beispiel mit 2 multiplizieren könnte. Der Wert für die Regeldifferenz würde dann doppelt so groß, aber der Ablauf des Regelvorgangs wäre derselbe.

Das Verhältnis n/n_s kann-zusätzlich oder alternativ-auch bei der Frequenzmessung und Drehzahlberechnung beeinflusst werden, indem z. B. die Variablen h (S372 in Fig. 15) und h_s (S472 in Fig. 16) unterschiedlich gewähit werden.

Auch die Berücksichtigung des Wertes von MODf bei der Messung der Istfrequenz f (S324 in Fig. 13) und des Wertes von MODfs bei der Messung der Sollfrequenz fs (S 424 in Fig. 14) kann eine Änderung des Verhältnisses der Frequenzen f und fs und damit auch der Drehzahlen n und ns bewirken.

Der Ort, an dem das gewünschte Verhältnis der Drehzahlen n und ns bzw. der Frequenzen f und fs gebildet wird, ist für die vorliegende Erfindung nicht von Bedeutung. Das Verhältnis muss aber an einer geeigneten Stelle gebildet werden.

In S352 der Fig. 18 ist ein digitaler PI-Regler dargestellt.

Der Proportionalanteil RGL_PROP wird durch Multiplikation der Regeldifferenz GRGL_DIFF mit dem Proportionalfaktor RGLP berechnet.

Der neue Integralanteil GRL_INT wird durch Addition des vorhergehenden Integralanteils zu der mit dem Integralfaktor GRL_I multiplizierten Regeldifferenz RGL_DIFF berechnet. Bevorzugt steht dem Integralanteil RGL_INT so viel Speicher zur Verfügung, dass keine Information der Regeldifferenz verloren geht.

Der Stellwert RGLVAL ergibt sich aus der Summe des Proportionalanteils RGL_PROP und des Integralanteils RGL_INT.

In den Schritten S534 bis S540 wird eine Bereichsüberprüfung des Stellwerts RGLVAL durchgeführt.

Ist der Stellwert RGLVAL in S534 kleiner als Null, so wird er in S536 auf Null gesetzt.

Ist der Stellwert RGLVAL in S538 größer als der maximal zulässige Wert RGL_MAX, so wird er in S540 auf RGL_MAX gesetzt. Dies dient dazu, beim Hochlauf eines Motors, wo große Regeldifferenzen vorliegen können, den Stellwert RGLVAL auf den Maximalwert RGL_MAX zu begrenzen.

Liegt der Wert von RGLVAL innerhalb eines zulässigen Bereichs, so wird er unverändert verwendet.

In S542 wird das Register PWM_SW des, uC-internen PWM-Generators auf den Stellwert RGLVAL gesetzt, und das PWM-Signal PWM_SW wird, wie bei Fig. 5 beschrieben, ausgegeben.

Die Reglerfunktion S628 ist damit abgearbeitet, und das Funktionsregisterbit FCT_RGL wird in S544 zurückgesetzt.

Daraufhin wird an den Anfang S602 des Funktionsmanagers (Fig. 8) zurückgesprungen.

Statt des beschriebenen PI-Reglers könnte z. B. auch ein PID-Regler oder ein anderer Regler verwendet werden. Vorteilhaft sind digitale Regler, bei denen alle Bits der Regeldifferenz RGL_DIFF berücksichtigt werden, was hier durch den Integralanteil RGL_INT gewährleistet wird. Die Reglerfaktoren RGL_P und RGL_I können getrennt eingestellt werden, um den Regler optimal an die jeweilige Aufgabe anzupassen.

Fig. 19 zeigt ein Zustandsdiagramm, welches die beschriebenen komplexen Funktionsabläufe der vorhergehenden Figuren in einfacher und verständlicher Weise zusammenfasst. Die nachfolgende Tabelle 2 gibt die erforderlichen Erläuterungen zu diesem Zustandsdiagramm und ist weitgehend selbsterklärend. WDT bedeutet Watch Dog Timer. Übergang Ereignis Aktion Von.. nach T20 Hardware-Reset Sprung zur Adresse 00h # M des Programms T21 Watchdog-Timer Reset Sprung zur Adresse 00h # M des Programms T22 Unmittelbarer Keine Aktion M--> N Zustandswechsel ohne Ereignis T23 Unmittelbarer Initialisierung. Ggf. Holen N #O Zustandswechsel von Parametern aus ohne Ereignis EEPROM 80 T24 Berechnung Istwert Berechnung Istwert O--> O gestartet ausführen. Zähler INT_CALC_f rücksetzen. Berechnung Istwert stoppen und sperren. T25 Berechnung Sollwert Berechnung Sollwert O--> O gestartet ausführen. Zähler INT_CALC_f_s rücksetzen. BerechnungSollwert stoppen und sperren. T26 Berechnung von Regler starten O--> O Sollwert und Istweryt gestoppt.Regler freigegeben. T27 Regler gestartet S530 (X* n_s) O#O Regler RGL (Fig. 18) S542(Stellwertausgabe) S544 (Regler stoppen und sperren) Im Zustand O (Idle) ist das Programm aktionsbereit und führt je nach Bedarf verschiedene Aktionen durch. Bei T24 wird z. B. die Berechnung des Istwerts der Frequenz ausgeführt, der Zähler NTCALCf wird rückgesetzt, und anschließend wird die Istwertberechnung so lange gesperrt, bis eine neue Messung durchgeführt worden ist. Beim Übergang T25 werden dieselben Aktionen für den Sollwert ausgeführt.

Bei T26 werden die Berechnungen von Soll-und Istwert gestoppt, und der Regler RGL (Fig. 18) wird gestartet. Bei T27 ist dann der Regler gestartet. Im Schritt S530 wird die Getriebeübersetzung X berücksichtigt. Die Berechnungen im PI-Regler werden ausgeführt, der Stellwert wird in S542 ausgegeben, und in S544 wird der Regler gestoppt und vorläufig gesperrt, bis nach der nächsten Messung neue Werte vorliegen.

Die Zustände M und N werden gewöhnlich nur beim Einschalten durchlaufen, da dann ein Hardware-Reset stattfindet. Wenn der Watchdog (nicht dargestellt) ein unregelmäßiges Verhalten des RC 23 feststellt, werden die Aktionen T21, T22 und T23 abgearbeitet, um den ut 23 wieder in seinen normalen Betriebszustand O zu versetzen.

Beispiel für einen Regler mit möglicher Solidrehzahl n_s = 0 Fig. 20 zeigt ein Zustandsdiagramm für einen Regler, bei welchem auch die Solldrehzahl ns = 0 eingestellt werden kann.

Die Funktion RGLON S624 aus Fig. 17 wartet mit dem Start der Reglerfunktion RGL S628, bis ein Wert sowohl die Solldrehzahl nus ais auch die Drehzahl n vorliegt.

Dies bereitet bei Motoren, welche auch auf die Drehzahl n = 0 heruntergeregelt werden sollen, Schwierigkeiten, da, wenn die Signale f bzw. fs die Frequenz Null haben, keine Interrupts ausgelöst werden, da keine Flanken der Signale f bzw. fs vorliegen.

Der Regler aus Fig. 21 ermöglicht eine Regelung auf die Drehzahl Null, und stellt daher eine bevorzugte Weiterbildung dar.

Das Zustandsdiagramm enthält sechs Zustände S10 bis S15 und neun Übergänge T10 bis T18.

In der folgenden Tabelle 3 sind die Übergänge T10 bis T18 mit den zugehörigen Ereignissen und Aktionen beschrieben. Diese Tabelle ist, ebenso wie die Tabellen 1 und 2, aus sich selbst heraus verständlich. Übergang Ereignis Aktion T10 Der Regler wurder durch RGL_ON wird gestartet, TIMER0-Interrupt gestrtet Sprung zu S11 T11 s liegt vor prung zu S12 T12 Time-Out-Zeit für Messung n_s := O; Sprung zu S12 von n_s wurde überschritten T13 Drehzahl n liegt vor Regler starten ; Stellwert berechnen ; Sprung zu S13 T14 Time-OUt-Zeif für Messung n :=0; Regler starten; vn n wurde wurde Oberschritten Stellwert berechnen ; und n_s-0 Sprung zu S13 T15 instantan Stellwert ausgeben ; Sprung zu S14 T16 instantan Regler beenden ; Sprung zu ! ! S10 T17 Time-Out-Zeit für Messung Maximalen Stellwert von n wurde überschritten ausgeben ; Sprung zu S15 und n_s $<> 0 T18 instantan RGL ON beenden ; Sprung : zu S10 Im Zustand S10 wird auf den Start des Reglers gewartet.

Bei einem Start des Reglers, z. B. durch die Routine TIMERO-Interrupt S639 aus Fig. 12, geschieht ein Sprung zum Zustand S11, und es wird auf die So) ! drehzaht ns gewartet.

Falls ein Wert für die Solldrehzahl n s vorliegt, findet der Übergang T11 zum Zustand S12 statt.

Wird jedoch in S11 eine Time-Out-Zeit überschritten, ohne dass ein Wert für die Solldrehzahl ns vorliegt, so findet der Übergang T12 zum Zustand S12 statt, in welchem Ubergang T12 die Solldrehzahl ns auf Null gesetzt wird.

Im Zustand S12 wird auf die Drehzahl n des Motors M gewartet. Falls ein Wert für n vorliegt, findet der Übergang T13 nach S13 statt, die Reglerfunktion RGL S628 wird gestartet, und ein neuer Stellwert RGLVAL wird berechnet.

Vom Zustand S13 findet ein instantaner Übergang T15 nach S14 statt, und der berechnete Stei) wert RGLVAL wird ausgegeben.

Vom Zustand S14 findet ein instantaner Übergang T16 nach S10 statt, und es wird auf den neuen Start gewartet.

Wird im Zustand S12 eine Time-Out-Zeit überschritten, so hat der Motor die Drehzahl n = 0.

Es werden bei n = 0 zwei Fälle unterschieden. 1st auch die Solldrehzahl n s = 0, so findet der Übergang T14 nach S13 statt, und die Regelung RGL S628 berechnet einen neuen Stellwert RGLVAL.

Ist jedoch die Drehzahl n = 0 und die Solldrehzahl n s ungleich Null, so ist entweder der Motor M blockiert oder er soll gestartet werden. Es findet ein Übergang T17 nach S15 statt, und ein maximaler Stellwert wird ausgegeben.

Vom Zustand S15 findet ein instantaner Übergang T18 zum Zustand S10 statt, und es wird auf den nächsten Start gewartet.

Fig. 21 zeigt ein Flussdiagramm für eine an Fig. 20 angepasste Routine RGLON2 S624', also für den Fall, dass auch ns = 0 berücksichtigt werden soll.

In S500 wird überprüft, ob die Solldrehzahlberechnungsroutine CALC n s S620 (Fig. 16) abgearbeitet ist, ob also eine Solldrehzahl ns vorliegt.

Falls ja, so wird nach S506 gesprungen.

Falls nein, so wird in S502 überprüft, ob seit der letzten Messung eine Time-Out- Zeit tTOs überschritten wurde. Hierzu wird die Differenz zwischen dem Zeitpunkt der letzten Messung t_END_f_s (vgl. Fig. 14) und dem momentanen Zeitpunkt des Timers TIMER1 berechnet und mit der Time-Out-Zeit totos verglichen.

Ist die Time-Out-Zeit totos noch nicht überschritten, so wird zum Anfang S602 des Funktionsmanagers (Fig. 8) gesprungen und weiter auf die So) idrehzahi ns gewartet.

Ist die Time-Out-Zeit totos jedoch überschritten, so wird in S504 die Solldrehzahl ns auf Null gesetzt. Weiterhin wird der Zeitpunkt tENDfs der letzten Messung auf den momentanen Wert t_TIMER1 von TIMER1 gesetzt, damit der TIMER1 nicht den Wert t END f s überrundet. Daraufhin wird zu S506 gesprungen.

In S506 wird analog zu S500 überprüft, ob ein Wert für die Drehzahl n vorliegt.

Falls ja, so wird in S514 die Reglerfunktion RGL S628 (Fig. 18) durch Setzen des Funktionsregisterbits FCT_RGL auf 1 angefordert, und die Routine RGL_ON2 wird durch das Zurücksetzen von FCTRGLON auf Null beendet.

Liegt in S506 ein Wert für die Drehzahl n nicht vor, so wird in S508 analog zu S502 überprüft, ob seit der letzten Messung der Drehzahl n zum Zeitpunkt tENDf die Time-Out-Zeit t TO überschritten wurde.

Falls nein, so wird nach S602 (Fig. 8) gesprungen, und es wird weiter auf einen Wert für die Drehzahl n gewartet.

Bei einer Überschreitung der Time-Out-Zeit t TO wird in S510 überprüft, ob die Sot) drehzahi ns = 0 ist.

Falls ja, so wird nach S514 gesprungen, und die Reglerfunktion RGL S628 wird mit den Werten n = 0 und ns = 0 aufgerufen.

Falls nein, so ist entweder der Motor M blockiert, oder er soll gerade gestartet werden. Daher wird in S512 das Register PWM_SW des PWM-Generators des jj. C23 auf den maximalen Stellwert RGL_MAX gesetzt. Der Wert tENDf wird analog zu S504 auf den momentanen Timerwert t TIMER1 gesetzt, um einen Überlauf zu vermeiden, und die Routine RGLON2 S624'wird durch Setzen von FCTRGLON auf Null und Sprung zu S602 beendet.

An der Reglerfunktion RGL S628 müssen bei dieser Variante keine weiteren Änderungen vorgenommen werden.

Die Time-Out-Zeiten tTOs und tTO müssen entsprechend den Anforderungen des Reglers und des Motors gewählt werden. Z. B. kann man mit einer relativ kurzen Time-Out-Zeit dafür sorgen, dass der Motor unterhalb einer definierten minimalen Drehzahl abgeschaltet wird. Manche Motoren sind bei niedrigen Drehzahlen schwer zu regeln, z. B. Ottomotoren, weil sie dann zum Schwingen neigen, und es kann dann erwünscht sein, diese Drehzahlbereiche nicht zuzulassen.

Ein typischer Wert von tTO ist 100 ms, entsprechend einer Motordrehzahl von ca. 50 U/min. Ein Wert von 1000 ms würde einer Drehzahl von ca 5 U/min entsprechen. Bei einem Elektromotor kann aber ein solch großer Wert zur thermischen Überlastung der Endstufentransistoren (Transistoren 740,744 in Fig. 29) führen.

Parametrierung des Motors Alle bisher erläuterten Variablen können vom Hersteller vorgegeben werden.

Man sagt, dass der Hersteller den Motor"parametriert". Die Variablen können in einem nichtflüchtigen Speicher, z. B. in einem ROM, Flash-ROM oder dem EEPROM 80 der Fig. 3, vorliegen, oder man kann sie z. B. durch Dip-Switches einstellen. Beim Start des Motors werden sie dann z. B. im Schritt INIT S602 (Fig.

8) in das RAM des ut 23 geladen.

Weiterhin können die verwendeten Variablen ggf. über den Bus B (Fig. 3) verändert werden. Über diesen externen Bus B kann ggf. eine Änderung der Variablen im EEPROM 80 durchgeführt werden. Alternativ kann das EEPROM 80 vor seiner Montage vom Hersteller programmiert werden. Dabei können auch andere Variablen programmiert werden, z. B. der Proportionalfaktor RGL_P des Reglers, der Integralfaktor RGL_I, und die Gesamtverstärkung des Reglers (Fig.

18). Bei Verwendung verschiedener Motoren kann das sehr wichtig sein, um einen optimalen Antrieb zu erhalten.

Besonders wichtig ist die Möglichkeit, die Variablen MOD f, MOD f s und X beeinflussen zu können. Mit MODJ und MODfs ist es möglich, den Regler auf verschiedene Polzahlen der verwendeten Rotoren und unterschiedliche Arten von Sollfrequenzgebern 20 einzustellen. Würde z. B. fs von dem zweipoligen Rotor 732 und dem Haligenerator 61 der Fig. 29 erzeugt, so würde man MODfs auf 2 (oder ggf. auch auf 4) einstellen, um ein erstklassiges Resultat des Regelvorgangs zu erhalten.

Auf diese Weise kann dasselbe Programm für unterschiedliche Motortypen verwendet werden, indem die Parameter an den verwendeten Motortyp und den verwendeten Sollwertgeber angepasst werden. Die Verwendung desselben Programms für verschiedene Motortypen spart Produktions-und Entwicklungskosten, und der Hersteller kann sehr flexibel auf Kundenwünsche reagieren. Distributoren oder bevorzugten Kunden kann es auch gestattet werden, das EEPROM 80 selbst zu programmieren, z. B. bei Versuchen zur Optimierung eines Antriebs. Durch eine Kennwortfunktion kann eine unerwünschte Programmierung durch Benutzer verhindert werden.

Die Parametrierung des Getriebefaktors X ermöglicht die Verwendung desselben Sollfrequenzgebers 20 für mehrere Motoren, welche in einem festen Drehzahlverhältnis zueinander laufen müssen, welches jedoch von Motor zu Motor unterschiedlich sein kann. Mit Hilfe des Getriebefaktors X ist z. B. eine andauernde Straffung während des Transports einer Materialbahn (z. B.

Kunststofffolien oder Stoff) möglich, indem bei einem ersten Motor ein Getriebefaktor X = 1,000 und bei einem zweiten, in Bewegungsrichtung vorderen Motor ein Getriebefaktor X = 1,001 gewähtt wird. Hierdurch dreht der zweite Motor minimal schneller, was eine Straffung der transportierten Bahn bewirkt.

Die Regelung mittels der Sollfrequenz fs wird umso dynamischer, je höher diese Frequenz ist. Andererseits wird mit einer höheren Sollfrequenz auch der RC 23 stärker durch Rechenvorgänge belastet. Ein Verhältnis zwischen Sollfrequenz f s und Istfrequenz f von fs/f 5/1 hat sich für Motoren, welche schnell auf Anderungen der Sollfrequenz reagieren sollen, als vorteilhaft erwiesen. Unter Frequenz wird dabei die Anzahl der Ereignisse pro Zeiteinheit verstanden, z. B. bei einem Hallsignal (Fig. 4) die Zahl der Flanken 110 pro Sekunde.

Fig. 26 zeigt ein Beispiel für die Verwendung dreier erfindungsgemäßer Motoren. Eine Sollfrequenz fs von einem Frequenzgenerator 180 wird drei erfindungsgemäßen Motoren 181,183 und 185 über eine Leitung 187 zugeführt.

Der Rotor des Motors 181 ist zweipolig, der des Motors 183 vierpolig und der des Motors 185 sechspolig. Verschiedene Motoren sind z. B. nötig, wenn an verschiedenen Stellen unterschiedlich leistungsstarke Motoren benötigt werden.

In diesem Ausführungsbeispiel sollen alle drei Motoren mit der gleichen, durch die Sollfrequenz vorgegebenen Drehzahl laufen. Hierzu werden z. B. die Getriebefaktoren X (181) des Motors 181, X (183) des Motors 183 und X (185) des Motors 185, auf X (181) = 1, X (183) = 2 und X (185) = 3 gesetzt.

Fig. 27 zeigt schematisch ein Fotokopiergerät mit drei erfindungsgemäßen Motoren M1, M2 und M3, welche über die Leitung 187 von einem Frequenzgenerator 180 eine Sollfrequenz fs vorgegeben bekommen. Falls der Motor M2, welcher z. B. eine Walze antreibt, eine andere Drehzahl als die Motoren M1 und M3 benötigt, so kann dies über einen Getriebefaktor X eingestellt werden.

Für ein solches Gerät ist es vorteilhaft, wenn ein Regler gemäß Fig. 20 verwendet wird, mit dem die Drehzahl der Motoren mittels der Sollfrequenz fs auf Null geregelt werden kann.

Fig. 28 zeigt ein weiteres Ausführungsbeispiel mit drei Motoren M1, M2 und M3. Der Motor M1 gibt hierbei ein sogenanntes Tachosignal aus. Ein Tachosignal kann z. B. erzeugt werden, indem das Signal des Rotorstellungssensors 61 ausgegeben wird. Mit Hilfe des Tachosignals können weitere erfindungsgemäße Motoren M2, M3 in einem festen Verhältnis zu der Drehzahl des Motors M1 geregelt werden. So wird auch ohne einen speziellen Frequenzgenerator erreicht, dass die drei Motoren in einem festen Drehzahlverhältnis zueinander laufen, weil der Motor M1 als Frequenzgenerator dient.

Bei der Erfindung wird also eine Sollwertinformation, welche in der Frequenz eines Sollfrequenzsignals enthalten ist, einem RC zugeführt. Ein Motor, für den dieser Sollwert bestimmt ist, liefert seinerseits ein Frequenzsignal zurück, welches als Information die Istdrehzahl dieses Motors enthält. Dieses Frequenzsignal kann z. B. von einem Tachogenerator kommen, einem Resolver, einem motorinternen Sensor, z. B. einem Hallgenerator für die Steuerung der Kommutierung des Motors, oder anderen Arten von Sensoren.

Sollfrequenz und Istfrequenz werden fortlaufend und annähernd synchron im uC erfasst und in drehzahlproportionale numerische Werte umgerechnet. Diese numerischen Werte können nun mit vorgegebenen Parametern manipuliert werden, gewöhnlich durch Multiplikation oder Division. (Diese Parameter können z. B. in einem EEPROM gespeichert sein.) Man erhält so z. B. ein Vielfaches der erfassten Sollfrequenz, oder einen Bruchteil der erfassten Sollfrequenz, oder ein Vielfaches der erfassten Istfrequenz, oder einen Bruchteil der erfassten Istfrequenz. Diese manipulierten Werte werden einem Drehzahlregler zugeführt, und auf diese Weise kann eine Getriebefunktion realisiert werden. Um die Regeleigenschaften anzupassen oder zu variieren, können außerdem Regelparameter sehr leicht verändert werden, die das Regelverhalten des Systems beeinflussen.

Die manipulierten Werte werden im Drehzahlregler miteinander verglichen, die Regeldifferenz wird aus ihnen gebildet, diese wird in einem PI-Regler, oder einem PID-Regler, verarbeitet, wie das in S532 ausführlich an einem Beispiel dargestellt ist, und der im Regler generierte Stellwert wird z. B. in ein PWM- Register geschrieben. Ein entsprechendes PWM-Signal wird als Stellwert ausgegeben und beim beschriebenen Ausführungsbeispiel über ein RC-Filter 65,67 in ein analoges Gleichspannungssignal umgewandelt. Dieses wird einem Stellglied zugeführt welches die Energiezufuhr des Motors steuert. Der Motor liefert seinerseits eine vorgegebene Zahl von Impulsen oder sonstigen Signalen ("Ereignissen") an den µC zurück, und diese liefern dem Regler eine exakte digitale Information über die aktuelle Drehzahl des Motors.

Naturgemäß sind im Rahmen der vorliegenden Erfindung vielfache Modifikationen möglich. Die Einstellung des Getriebefaktors X ist an vielen Stellen möglich, wie erläutert, und die Istfrequenz (entsprechend der Istdrehzahl) kann auf vielfältige Weise erzeugt werden.