# Positionsregelung bei Motor mit Bremse



## farani (20 Dezember 2011)

Für meine Abschlussarbeit habe ich die Aufgabe eine Achse mit einer S7-300 möglichst exakt zu positionieren.
Ich erhalte von einer übergeordneten Steuerung Sollposition und -geschwindigkeit vorgegeben.
Kurz vor der Zielposition soll der Motor abgebremst werden und langsam auf seine Zielposition einfahren.

Die Bewegung der Achse wird durch einen Drehstrommotor mit Bremse gesteuert.
Die Geschwindigkeit der Drehung des Motors wird über einen Frequenzumrichter vorgegeben.
Die Bremse wird durch einen binären Ausgang der SPS gesteuert.
Die aktuelle Position wird mit einem inkrementellen Geber und einem Zählermodul erfasst.

Die Regelung habe ich wie folgt realisiert:

Aus dem Geschwindigkeitssollwert für die Achse wird ein Vorgabewert für den Frequenzumrichter berechnet.
Parallel dazu wird mit einem P-Regler (aus der Differenz zwischen Soll- und Istposition) ein Vorgabewert für den Frequenzumrichter ermittelt.
Der kleinere der beiden Werte wird auf den Ausgang für den Frequenzumrichter geschrieben.
Dies führt zu einer Bewegung der Achse mit der vorgegebenen Geschwindigkeit und einem Abbremsen in der Nähe der Zielposition.

Für die Steuerung der Bremse hab ich ein Toleranzfenster um die Zielposition definiert. Erreicht die Achse das Toleranzfenster, wird eine Nachlaufzeit gestartet und dann die Bremse des Motors aktiviert.
Durch Experimentieren mit der Verstärkung, dem Toleranzfenster und der Nachlaufzeit habe ich eine relativ genaue Positionierung erreicht.

Gibt es für diese Positionierungsaufgabe v.a. für die Ansteuerung der Bremse eine bessere Methode?


Ich hoffe ich habe mein Problem verständlich geschildert und wäre für Hilfe dankbar.


----------



## M-Ott (20 Dezember 2011)

Mir stellt sich die Frage:
Wenn Du an der Endpostion angekommen bist, gehst Du doch sicherlich auf 0 Hz Sollwert. Warum benötigst Du dann noch eine Nachlaufzeit bis Du die Bremse schließt? Im Prinzip kannst Du die Bremse schließen, sobald 0 Hz Istwert erreicht sind.


----------



## farani (20 Dezember 2011)

Vielen Dank für die Antwort!
Auf die Idee die Bremse abhängig vom Steuerwert für den Frequenzumrichter zu steuern bin ich bisher noch nicht gekommen. Ich werde das morgen mal ausprobieren.
Die Nachlaufzeit habe ich zur genaueren Positionierung definiert. Nach Erreichen des Toleranzfensters muss sich die Achse noch ein bisschen weiter bewegen um genau an der Zielposition zum Stehen zu kommen.


----------



## nico (21 Dezember 2011)

Man könnte die Bremse auch direkt vom Umrichter ansteuern lassen. Der weiß schließlich am besten wann er die Bremse ansteuern soll.


----------



## M-Ott (21 Dezember 2011)

nico schrieb:


> Man könnte die Bremse auch direkt vom Umrichter ansteuern lassen. Der weiß schließlich am besten wann er die Bremse ansteuern soll.


Stimmt, könnte man auch, allerdings ist zu beachten, dass man hier den Schaltpunkt der Bremse auch parametrieren muss.


----------



## Felse (21 Dezember 2011)

Hallo,
ich weiß ja nicht welche Masse dein Motor am Ende  bewegen muss, 
aber das Problem hierbei


> Differenz zwischen Soll- und Istposition


ist doch, dass der Motor ständig langsamer wird und letztendlich nicht mehr genug Kraft hat das "letzte bißchen Weg" zu drehen, bzw. der Motor zuckt sich dann nach längerer Zeit irgendwie auf deine Sollposition, oder innerhalb deines Toleranzfensters (daher sicher auch die Nachlaufzeit der Bremse).
Du könntest eine trapezförmige Abwärtsrampe nutzen. Wenn die Rampe nicht variabel sein muss,
kannst du die Zeit auch direkt am Umrichter einstellen (je nach Typ).


----------



## Felse (21 Dezember 2011)

http://www.sps-forum.de/showthread.php?33426-Geschwindigkeit-und-Beschleunigung&highlight=Trapez


----------



## Aventinus (21 Dezember 2011)

Ich denke auch, dass dein Regler nicht nur ein P-Regler sein sollte sondern ein PID. Ein reiner P-Regler ist nicht in der Lage auf Regeldifferenz gleich 0 auszuregeln. Dafür brauchst du einen I-Anteil.


----------



## farani (21 Dezember 2011)

Vielen Dank für die vielen Hinweise.
Die Möglichkeit die Bremse vom Umrichter steuern zu lassen, hatte ich auch schon überlegt.
Problem dabei ist aber, dass mehrere identische Drehgestelle existieren, die mit meiner Software ohne Änderungen funktionieren sollen. Den Umrichter kann ich also nicht umparametrieren.

Die Freigabe der Bremse habe ich nun so umprogrammiert, dass diese bei Erreichen einer Grenzfrequenz in der Nähe von 0 Hz weggenommen wird. Die Zielposition wird mit dieser Methode für meine Zwecke ausreichend genau erreicht (Abweichung etwa 0,02 Grad). Problem ist aber, dass der vom P-Regler ausgegebene Vorgabewert für den Frequenzumrichter leicht um meinen definierten Grenzwert schwankt und damit die Freigabe der Bremse immer wieder aus- und eingeschaltet wird.
Genau dieses Problem trat auch auf als ich die Freigabe abhängig von der Differenz zwischen Ist- und Sollwert gesteuert hatte. Gelöst hatte ich dies durch eine Nachlaufzeit in der die Achse noch ein kleines Stück weiter verfahren wurde.
Gibt es noch eine andere Möglichkeit den Zeitpunkt der Aktivierung der Bremse zu wählen?


Die Regelung mit dem P-Regler funktioniert abgesehen von dem Problem mit der Bremse ganz gut. Deshalb würde ich gerne auf den Einsatz eines PID-Reglers verzichten.

Die trapezförmige Abwärtsrampe würde meinen Regler komplett überflüssig machen, richtig?
Hab mir hierzu ein paar Gedanken gemacht:
- Die Achse soll bis 2 Grad vor Erreichen der Sollposition mit vorgegebener Geschwindigkeit fahren
- Die Zielposition soll dann innerhalb von einer halben Sekunde (T=500ms) erreicht werden
- Die Geschwindigkeit würde sich mit der Formel vRampe = vVorgabe - a * T berechnen
- Beschleunigung errechnet sich aus a= vVorgabe/T- Für das Aktivieren der Bremse würde ich nach Erreichen der  2 Grad Marke die 500ms abwarten und dann die Bremse einschalten.

Sind meine Überlegungen korrekt?


----------



## Deltal (22 Dezember 2011)

Wichtig ist, dass du eine Haltebremse nicht zum abbremsen des Motors (der Last) benutzt, denn dafür sind sie nicht gebaut.
Da du kein Hubwerk o.Ä. hast, ist es auch nicht notwendig die Bremse über den Umrichter zu steuern, auch wenn ich das genrell immer empfehlen würde.
Da die Bremse nur bei n = 0 einfallen darf, kannst du das ja auch genau so Programmieren. Das ganze mit einem Toleranzfenster für die Istdrehzahl und einer kurzen Zeit + der Rückmeldung vom Fu das er nicht mehr in Regelung ist = Bremse schließen.
Willst du mit deiner Regelung den Motor auf der Position (fest)halten, dann muss die Bremse so lange offen bleiben. Ist halt die Frage ob man für einen Drehtisch eine Lageregelung braucht..

Außerdem stellt sich die Frage warum ein FU + ASM genutzt wird, wenn man auf eine genaue Position erreichen will?


----------



## Dummy (22 Dezember 2011)

Aventinus schrieb:


> Ich denke auch, dass dein Regler nicht nur ein P-Regler sein sollte sondern ein PID. Ein reiner P-Regler ist nicht in der Lage auf Regeldifferenz gleich 0 auszuregeln. Dafür brauchst du einen I-Anteil.



Hallo Aventinus,

ich kann Deine Aussage so leider nicht stehen lassen, da sie falsch ist!
Ob ein Regler einen I-Anteil enthalten muss, liegt in erster Linie daran, ob der Reglkreis selbst Integrales-Verhalten aufweist oder eben nicht.
Ein P-Regler oder ein PD-T1 Regler kann also auch die Regeldifferenz zu null ausregeln, wenn die Strecke Integrales-Verhalten aufweist.

Bei einer Positionsregelung handelt es sich um eine Strecke mit It-n Verhalten!
Ein I-Anteil ist also nicht notwendig.
Wenn eine höhere Dynamik erreicht werden soll, könnte man noch zu einem PD-T1 Regler greifen.
Sollte es nicht notwendig sein, würde ich die Finger davon lassen.

Gruß

dummy


----------



## farani (23 Dezember 2011)

Das Drehgestell mit Motor und Frequenzumrichter sind fest vorgegeben. Wie bereits erwähnt existieren mehrere identische Drehgestelle, die ohne Änderungen mit meiner Software funktionieren sollen.

Laut Schaltplänen ist der Ausgang für die Bremse auch an den Enable-Eingang für den Frequenzumrichter verdrahtet.
Wenn ich also die Freigabe für die Bremse wegnehme wird der Vorgabewert für den Frequenzumrichter automatisch auf 0 gesetzt.

Für die Wegnahme der Freigabe für die Bremse gibt es also keine andere Möglichkeit als eine kurze Zeit zu definieren in der sich die Achse nach Erreichen des Toleranzfensters noch ein Stück weiterdreht. 
Aber ich frage mich was die bessere bzw. elegantere Methode ist:

- Definieren eines Toleranzfensters um die Zielposition, bei Erreichen des Toleranzfensters die Nachlaufzeit starten und nach Ablauf der Zeit die Bremse schließen.

- Definieren eines Toleranzfensters um den Vorgabewert  0 für den Frequenzumrichter. Ansonsten wie oben.


Danke nochmal für die schnellen Antworten und schöne Feiertage und einen guten Rutsch an alle die mir weitergeholfen haben!


----------

