Perfektes Timing

Ansteuerung von Elektromotoren

Schon die alte TPU war in der Lage, Schrittmotoren anzusteuern – in kürzester Zeit die vorgegebene Position anzufahren, Signale des Quadraturencoders für die Erfassung von Position und Drehzahl auszuwerten und komplementäre PWM-Signale für Leistungsinverter zu erzeugen. Die neue eTPU umfasst zusätzliche Funktionen und bietet eine höhere Rechenleistung. So kann die eTPU als vollwertiger CoProzessor zur Steuerung von Motoren eingesetzt werden. Beispielsweise kommt die eTPU zur Steuerung von DC-, BLDC- (Brushless DC), PMSM- (Permanent Magnet Synchronous Motor) und ACIM-Motoren (AC Induction Motor) zum Einsatz, wobei Strom, Drehzahl und die Position geregelt werden können.

Die eTPU-Funktionsbibliothek bietet darüber hinaus Funktionen für die Vektorsteuerung von PMSM- und ACIM-Motoren. Beim Einsatz der
eTPU als Coprozessor für Motorsteuerungen besteht die einzige Verantwortung der CPU darin, die erforderlichen Vorgaben zu setzen, beispielsweise die Sollwerte für Drehmoment, Drehzahl oder Motorposition. Das eTPU-Modul arbeitet alle vordefinierten Aufgaben ab, ohne dass ein Interrupt erzeugt oder die CPU beansprucht würde. Die eTPU hat keine Möglichkeit, Analogwerte wie Phasenströme oder Spannungen eigenständig zu messen. Stattdessen löst sie einen Triggervorgang für den A/D-Wandler aus und erhält die Abtastwerte per DMA-Transfer. So ist sichergestellt, dass die CPU nicht gestört wird.

Die eTPU – ein Mikrocontroller für sich

Das eTPU-Modul umfasst alle Funktionen (Bild 1), die ein kleiner Mikrocontroller für den Betrieb benötigt: Daten- und Programmspeicher, eine „Micro-Engine“, einen Task-Scheduler und 32 I/O-Kanäle.

  • I/O-Kanäle

„Input-Capture-/Output-Compare“-Prinzip

Herkömmliche Timer basieren auf dem „Input-Capture-/Output-Compare“-Prinzip. Sobald eine Flanke (steigend oder fallend) eines Eingangssignals erkannt wird, wird der aktuelle Wert des Zählers in das Capture-Register geschrieben. Gleichzeitig wird ein Interrupt an die CPU geschickt. Das auf der CPU laufende Hauptprogramm muss den aktuellen Task-Kontext speichern, den Interrupt abarbeiten und schließlich den Kontext wiederherstellen und zum vorherigen Task zurückkehren. Folgen weitere Flanken, bevor der Timer-Interrupt abgearbeitet ist, können diese nicht erkannt werden. Daher ist die Geschwindigkeit, mit der Interrupts abgearbeitet werden, so wichtig.
Soll ein Signal ausgegeben werden, speichert die CPU den Wert des Zählers, bei dem der Zustand des Ausgangs umgeschaltet werden soll, im so genannten Match-Register. Ist dieser Wert erreicht, wird der Ausgangszustand des entsprechenden Anschlusses umgeschaltet und ein Interrupt an die CPU geschickt. Die CPU muss den aktuellen Task-Kontext speichern, um das Match-Register mit einem neuen Wert zu laden, und dann den vorherigen Task-Kontext wiederherstellen. Es ist verhältnismäßig schwierig, einen kurzen Impuls zu erzeugen. Dies hängt wiederum von der Geschwindigkeit der Interrupt-Verarbeitung ab.