PatentDe  


Dokumentenidentifikation DE19532502A1 14.03.1996
Titel Elektronische Schaltung zum automatischen Restart von Schritt- und Servo-Motoren in Bahn- und Positions-Steuerungen
Anmelder Sakmann, Walter, Dipl.-Ing., 71154 Nufringen, DE
Erfinder Sakmann, Walter, Dipl.-Ing., 71154 Nufringen, DE
DE-Anmeldedatum 02.09.1995
DE-Aktenzeichen 19532502
Offenlegungstag 14.03.1996
Veröffentlichungstag im Patentblatt 14.03.1996
IPC-Hauptklasse G05B 19/19
IPC-Nebenklasse H02P 8/36   
Zusammenfassung Die Erfindung dient der Verbesserung der Präzision von Bahn- oder Kurven-Steuerungen mittels Schritt- oder Servomotoren. Sie erlaubt ein automatisches Starten von Schritt- und Servomotoren, deren momentaner Bewegungsablauf zum Zeitpunkt des Einleitens eines automatischen Neustartes noch nicht abgelaufen ist. Die Daten für den nächsten Bewegungsablauf werden während des Laufes der Motoren in Puffer-Register geschrieben, und der automatische Restart wird per Programm freigegeben. Sobald die Motoren die zuletzt programmierten Positionen erreicht haben und die Run-Latche auf Status AUS gegangen sind, wird per elektronischer Hardware der Restart ausgeführt. Diese Hardware-Lösung ist schneller als jeder vom Programm initiierter Restart. Man vermeidet dadurch Lücken im Frequenzübergang der Schrittmotor-Fortschaltimpulse und bei Servomotoren-Abweichungen von den Soll-Positionen.

Beschreibung[de]
Hardware Beschreibung

Bahn- oder Kurven-Steuerungen mittels Schritt- oder Servomotoren werden vorwiegend über digitale Regler gesteuert. Dabei wird meist in konstanten Zeitintervallen die Ist-Position der Motoren über Drehimpulsgeber oder Resolver gemessen und mit den Sollwerten verglichen. In Abhängigkeit der momentanen Abweichung wird dann bei Schrittmotoren die Pulsfrequenz der Motor- Fortschaltimpulse geändert und bei Servomotoren die analoge Referenz- Spannung über einen DAC (Digital Analog Converter) verändert, um so die Abweichung zu korrigieren. Jede Korrektur eines Reglers hat natürlich zur Folge, daß Abweichungen über und unter die Sollwerte vorkommen. Eine Regelung ist nie 100-prozentig genau, da jeder Regler von der Abweichung "lebt" und nur regeln kann wenn eine Abweichung vorliegt. Andererseits gibt es keinen Regler, der ohne Abweichungen arbeitet.

Schrittmotor-Steuerungen über Regler sind nach dem Stand der Technik mit standardisierten Elektronik-Bausteinen z.B von HP (Hewlett Packard HCTL-1100 General Purpose Motion Control IC), bekannt.

Die folgende Steuerung erzeugt insbesondere bei Schrittmotoren keine signifikanten Abweichungen und benötigt deshalb auch keine Regelung solange die Schrittmotoren den exakt vorgegebenen Frequenzen folgen. Dies ist dann erfüllt, wenn man die kritischen Schrittfrequenz nicht überschreitet. Es werden eine Vielzahl von exakt vorgegebenen Punkten mit genau vorgegebenen Geschwindigkeiten angefahren. Bei Servomotoren kann zwar die Geschwindigkeit während eines Schrittes geringfügig geändert werden, die Präzision wird jedoch auch hier durch das exakte Anfahren von vielen Stützpunkten erreicht.

In Fig. 2 sind die Unterschiede zwischen der Exakt-Bahnsteuerung und der Regulierten-Bahn-Steuerung deutlich zu sehen. Die Exakt-Bahnsteuerung wurde von der IBM Deutschland im August 1990 im IBM Technical Disclosure Bulletin Volume 33 No. 3B veröffentlicht mit dem Titel "Motor Stepping and Advance Frequency Control".

Zeitliche Lücken entstehen bei der bisherigen über die Software gesteuerten Lösung aber dadurch, daß ein Prozessor im INTERRUPT- oder POLLING- Verfahren viele Mikrosekunden braucht, um den Zeitpunkt des Restarts zu ermitteln, den Datentransfer von den Puffer-Registern zu den Arbeits-Registern vorzunehmen und den Restart auszuführen. Dieses Problem macht sich bei höheren Schrittfrequenzen bemerkbar. Die hier beschriebene neue elektronische Hardware-Steuerung zum automatischen Restart von Schritt- und Servomotoren vermeidet diese zeitlichen Lücken; sie erlaubt eine Vielzahl von Motoren exakt synchron laufen zu lassen.

Wie in Fig. 3 gezeigt, hat jeder Schritt- oder Servomotor zur Positionskontrolle einen ladbaren Up/Down Zähler CNTRx (x = Motor Nummer), ein Positions- Puffer-Register PBx und ein Positions-Vergleich-Register PCx sowie ein Run- Latch RLx, das sowohl vom Programm als auch von der Hardware gesetzt werden kann. Wird das Run Latch RLx gesetzt, so wird bei einem Schrittmotor der Frequenzgenerator FGx freigegeben und bei einem Servomotor der Ausgang des Digital-Analog-Converters DACx. Auch der Frequenz-Generator hat ein Puffer-Register BFx und der DAC ein Puffer-Register BAx). Der Motor beginnt, aus Position A in die Position B zu laufen. Die Feedback Impulse des Drehgebers schalten den Zähler weiter, je nach Drehrichtung in Up (CW) oder DOWN (CCW) Richtung. Hat der Zähler CNTRx den im Positions-Vergleich- Register PCx gespeicherten Wert erreicht, so wird über den Komparator COMPx ein Impuls erzeugt, der das Run-Latch RLx auf AUS zurücksetzt (x = Motor Nummer).

Die Entfernung von A nach B wird in Abhängigkeit der Krümmungsänderung der Bahn vom Programm festgelegt, wobei der Vorschub beispielsweise über eine Spindel im Bereich von 0,001 mm, 0,01 mm, 0,1 mm oder 1 mm etc sein kann. Die Motor-Frequenzen, bzw. DAC-Werte werden aus der Steigung der Kurve ermittelt. Während des Laufes von A nach B werden für alle am Laufe beteiligten Motoren die Daten für den nächsten Schritt von B nach C übertragen.

Die Erfindung ergänzt nun die Steuerung gemäß Fig. 4 mit einem Auto-Restart- Register ARR in dem per Software für jeden Motor ein Mx_RESTART-ENABLE Bit gesetzt wird, sofern dieser Motor Mx am Restart beteiligt werden soll. Gleichzeitig wird ein RESTART-PENDlNG_FLAG gesetzt, das besagt, daß der Restart noch nicht ausgeführt wurde. Die Ausgänge +Mx_RESTART_ENABLE des ARR Registers werden nun mit den +Mx_RUN Leitungen mit Oder-Schaltern -OI verbunden, (-OI = minus OR Invert bedeutet, daß der aktive Eingangspegel des Oder-Schalters MINUS ist und daß bei erfüllter Oder-Bedingung der Ausgang invertiert wird auf PLUS). Zum leichteren Verständnis werden Pegel, die aktiv MINUS sind, mit einem Keil gekennzeichnet. Ist also ein Signal +Mx_RESTART_ENABLE aktiv (PLUS), so bestimmt alleine das zugehörige Signal +Mx_RUN den Ausgang des -OI-Schalters. Das inaktive Signal +Mx_RUN trägt also zur nachfolgenden UND-Bedingung des Schalters +A (plus AND) bei. Ist dagegen ein Signal +Mx_RESTART_ENABLE inaktiv (MINUS), so ist der -Ol-Schalters immer erfüllt, d. h der Ausgang ist PLUS und das zugehörige Signal +Mx_RUN trägt nichts zur Und-Bedingung des nachfolgenden UND-Schalters +A bei. Sind nun alle Signale +Mx_RUN inaktiv (MINUS) geworden, so ist der Undschalter +A erfüllt, und mit der positiven Schaltflanke des Ausganges von +A wird nun der Restart eingeleitet.

Der Ausgang des Und-Schalters +A ist mit dem Eingang D0 eines 6 Bit-Daten Register DREG verbunden. Bei aktivem Eingang an D0 wird der zugehörige Ausgang Q0 mit der nächsten positiven Flanke des Taktgebers CLOCK aktiv (PLUS). Bei der nächsten positiven Flanke des Taktgebers wird Q1 aktiv, da der Eingang D1 mit dem Ausgang Q0 verbunden ist. Wie aus Fig. 4 und Fig. 5 ersichtlich, werden so sequentiell mit jedem weiteren Taktimpuls die Ausgänge Q1 bis Q5 aktiv. Der Ausgang Q0 ist außerdem mit einem UND-Schalter +AI verbunden und der Ausgang Q1 über den Inverter N ebenfalls mit den UND-Schalter +AI. Somit läßt sich, wie im Timing Diagramm der Fig. 5 ersichtlich, aus der Sequenz von D0 und D1 ein Impuls ausschneiden mit dem Namen AUTO_XFER_PULSE. Das gleiche Verfahren gilt für das Signal AUTO_RESTART_PULSE und das Signal RESET_AUTO_ RESTART_REG.

Software-Beschreibung

Das nun folgende Beispiel zeigt in der Notation der Programmiersprache "C", eine zweidimensionale Bahnsteuerung. Die Koordinaten und Frequenzen (bzw. DAC Werte) sowie die momentanen Drehrichtungen sind vom Computer vorausberechnet, um einen schnellen tabellengetriebenen Programmablauf zu ermöglichen. Die Tabelle. xy[n] wird über den Index n adressiert.

Fig. 1 zeigt den Programmablauf der Funktion MakeCurve(xy, mcb, M1, M2). Vor jedem Schritt wird durch Aufruf der Funktion Wait4AutoRestartComplete() (zu lesen: wait for auto restart complete) geprüft, ob der letzte automatische Restart ausgeführt wurde, wenn nicht, wird gewartet bis das Hardware-Signal RESTART_PENDING_FLAG auf AUS geht. Danach werden die Daten in ein Array der Struktur mcb (Motor Control Block) übertragen. Der Index in das Array mcb[Mx] entspricht dem Motor-Index Mx. Es folgen nun 3 Funktionen, die die Daten aus dem Motor Control Block in den PC-externen Adapter übertragen. Bei diesen Funktionen WriteNextPos(mcb, M1 ,M2), WriteFreqReg(mcb,M1 ,M2) und der Function WriteCtrlReg(mcb, M1, M2) wird die Adresse (Pointer) des Motor- ControI-Blocks sowie der Motor-Index M1 und M2 übergeben. Nun wird geprüft, ob Fehler vorliegen mit der Funktion Test4Errors() (zu lesen test for errors) Sollte de Return Code diese Funktion ungleich Null sein, so wird die Schleife verlassen. Anschließend wird über den Return Code der Funktion Test4Run(M1, M2) geprüft, ob das Run-Latch eines Motors noch aktiv ist. Wenn ja, wird über die Funktion AutoRestartSet(M1 ,M2) der automatische Restart gesetzt. Wenn nein, wird per Programm über die Funktion XferAll() (zu lesen: transfer all) der Datentransfer aus den Puffer-Registern in die Arbeits-Register durchgeführt und anschließend ebenfalls per Programm über die Funktion StartMotors(M1 ,M2) der Restart durchgeführt.

In der Regel werden zum Zeitpunkt der Abfrage Test4Run(M1 ,M2) die Motoren noch laufen und deren Run-Latche RLx noch aktiv sein. Es kann jedoch bei sehr kurzen Schritten oder umfangreicher anderer Programm-Abläufe vorkommen, daß die Run-Latche RLx bereits aus-gegangen sind; für diesen Fall muß der alternative Pfad (XferAll() und StartMotors( . . )) vorhanden sein.


Anspruch[de]
  1. 1. Elektronische Schaltung zum automatischen Restart von Schritt- und Servomotoren, deren momentaner Bewegungsablauf zum Zeitpunkt des Einleitens des nächsten Bewegungs-ablaufes noch nicht abgeschlossen ist. Sobald die Motoren die zuletzt programmierte Position erreicht haben und die Run-Latche RLx (x = Motor Nummer) auf AUS gegangen sind, werden dann über eine elektronische Schaltung gemäß Fig. 3 und fig. 4 die neuen Daten für die nächste Position, die Schrittfrequenz (bei Schrittmotoren), die Analog-Spannung (bei Servomotoren) und die Drehrichtung CW/CCW (clockwise/ counterclockwise) von Puffer-Register in Arbeits-Register übertragen; und zwar die nächsten Positionen von Positions-Puffern PBx in die Positions-Vergleich- Register PCx, die Drehrichtungen von Kontroll-Puffern CBx in Kontroll-Register CRx, für Schrittmotoren die Frequenzdaten von Frequenz-Puffern FBx in Frequenz-Generatoren FGx, und für Servomotoren die Analog-Spannung von Analog Puffern ABx in die Digital-Analog-Converter DACx. Danach werden die Run-Latche RLx wieder gesetzt, um den Weiterlauf der Motoren zu ermöglichen.
  2. 2. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß für die Motoren, für die der Auto-Restart vorgesehen ist, jeweils ein Enable Bit Mx_RESTART_ENABLE in das Auto-Restart-Register ARR geschrieben wird und gleichzeitig ein weiteres Bit AUTO_RESTART_PENDING_FLAG gesetzt wird. Dieses Flag kann auch durch eine logische ODER-Verknüpfung aller Mx_RESTART_ENABLE Leitungen gebildet werden. d. h. wenn mindestens eine dieser Leitungen aktiv ist, dann wird auch der Ausgang des ODER-Schalters aktiv und kann somit als AUTO_RESTART_PENDING_FLAG benutzt werden.
  3. 3. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß die Leitungen Mx_RESTART_ENABLE zusammen mit den Leitungen +Mx_RUN mit den Eingängen von x 2-Weg-Oder-Schaltern verbunden werden und die Ausgänge dieser Oder-Schalter zusammen mit dem RESTART_PENDING_FLAG einen x+1 Weg-UND-Schalter steuern, so daß das Ausgangssignal des UND- Schalters, genannt ALL_RUN_OFF erst dann aktiv wird, wenn alle Run-Latche RLx zurückgesetzt sind.
  4. 4. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß das Signal ALL_RUN_OFF mit dem Eingang D0 eines 6-Bit-Daten-Registers DREG verbunden wird und der Ausgang Q0 mit dem Eingang D1, sowie Q1 mit D2, Q2 mit D3, Q3 mit D4 und Q4 mid D5 verbunden wird, so daß mit dem CLOCK- Signal (positive Flanke), das dem aktiven Signal ALL_RUN_OFF folgt, der Ausgang Q0 aktiv wird und mit den nachfolgenden CLOCK-Signalen die Ausgänge Q1, Q2, Q3, Q4 und Q5 sequentiell aktiv werden, so daß dann über einen 2fach-UND-Schalter der eine Eingang mit Q0 und der andere mit dem invertierten Q1 verbunden wird und am Ausgang ein Signal AUTO_XFER_PULSE erzeugt wird. Über eine gleiche Anordnung wird mittels Ausgang Q2 und Q3 das Signal AUTO_RESTART_PULSE und mittels Ausgang Q4 und Q5 das Signal RESET_ARR_REG_PULSE erzeugt.
  5. 5. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß das Signal AUTO_XFER_PULSE mit der UND-Bedingung Mx_RESTART_ENABLE Daten von den Puffer-Register in die Arbeits-Register überträgt, und das zeitlich nachfolgende Signal AUTO_RESTART-PULSE ebenfalls in einer UND- Bedingung mit dem Signal Mx_RESTART_ENABLE das Run-Latche RLx des Motors x wieder neu aktiviert und daß das nachfolgende Signal RESET_ARR_REG_PULSE das Auto-Restart-Register ARR löscht um danach das AAR Register per Programm wieder neu laden zu können.
  6. 6. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß die Leitung AUTO_RESTART_PENDING_FLAG vom Programm über eine Polling-Funktion überwacht wird, die erst dann neue Daten in die Puffer-Register lädt, wenn dieses Flag vom dem Signal RESET_ARR_REG_PULSE gelöscht wurde.
  7. 7. Anordnung nach Anspruch 1 dadurch gekennzeichnet, daß das Programm für den Fall, daß bei der Abfrage Test4Run(M1 ,M2, . . Mx) die Motoren bereits ihre nächste Position erreicht haben und die Run-Latche RLx bereits inaktiv sind, eine Verzweigung im Programm den Restart über die Funktion XferAll() und die Funktion StartMotors(M1 ,M2,Mx) übernimmt.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com