LabVIEWForum.de - erste Schritte - Schrittmotorsteuerung

LabVIEWForum.de

Normale Version: erste Schritte - Schrittmotorsteuerung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

mal der erste Beitrag in dieser Rubrick.

Also ich soll einen Schrittmotor steuern. Mit dem Schrittmotor wird eine Probe auf Zug beansprucht. Die Kraft soll z.B. konstant gehalten werden. Es soll praktisch eingestellt werden können: 300N, und der Motor soll dann dementsprechend verfahren und diese Kraft konstant halten.

Hat jemand eine Idee wie man das umsetzen sollte?

Habe ein wenig mit dem Motion Assistant herum gespielt. Kann mir jemand erklären wozu man den reference move braucht und was ich dort eisntellen muss?

Bin für jede Antwort mehr als dankbar,
Robin
' schrieb:Hallo,

mal der erste Beitrag in dieser Rubrick.

Also ich soll einen Schrittmotor steuern. Mit dem Schrittmotor wird eine Probe auf Zug beansprucht. Die Kraft soll z.B. konstant gehalten werden. Es soll praktisch eingestellt werden können: 300N, und der Motor soll dann dementsprechend verfahren und diese Kraft konstant halten.

Hat jemand eine Idee wie man das umsetzen sollte?

Habe ein wenig mit dem Motion Assistant herum gespielt. Kann mir jemand erklären wozu man den reference move braucht und was ich dort eisntellen muss?

Bin für jede Antwort mehr als dankbar,
Robin

Ein Reference Move wird benutzt um den Motor in einer festen, bekannten Position zu fahren, zu referenzieren halt. Dazu hat der Motor oder Getriebe usw. meistens einen Schalter/Sensor der die Nullstellung angibt.

VDB
Ich habe mehrere Schrittmotorsteuerungen realisiert und erst kürzlich eine NI-Veranstaltung besucht. Mein Fazit (wohlgemerkt - nicht das von NI): Für 99% aller Aufgabenstellungen braucht man das LabVIEW Motion-Zusatzmodul nicht. Es ist total abschreckend, bis zu welchem Grade ein einfaches Problem, also z.B. eine Bewegung von A nach B mit rampenförmigen Geschwindigkeitsverlauf, mit dem Zusatzmodul aufgebläht wird.

Es ist ja so, daß die Herstellerfirmen selbst Programme, im Idealfall sogar LabVIEW-Treiber-Programme, zu den Schrittmotorsteuerungen mitliefern. Diese verwenden - fertig.

Frage Referenzposition, noch mal mit anderen Worten: Zur Positionsbestimmung werden von der Software die Steps mitgezählt. Beim Abschalten des Systems geht die Position verloren. Die erste Maßnahme beim Wiedereinschalten ist also, das System solange in eine bestimmte Richtung zu einem Mikroschalter hin zu fahren, bis dieser erreicht wird. Das ist dann die Referenzposition, dieser wird man z.B den Positionswert 0 zuordnen.

Bei Dir spielt die Lage keine Rolle, theoretisch brauchst Du keine Referenzposition, praktisch wird es aber sinnvoll sein, die Messung mit einer definierten Ausgangslage zu beginnen.

Dein Problem ist eigentlich einfach: Die Bewegung muß so langsam sein, daß das System ohne rampenmäßige Beschleunigung/Bremsung nach jedem Schritt sofort gestoppt werden kann.(= Start-Stop-Betrieb)

Du solltest ein Toleranzband definieren: also z.B: <298N --> Motor vorwärts, >302N Motor rückwärts, dazwischen: Motor Stop.

Meist haben die Schrittmotoren eine serielle Schnittstelle, und es ist äußerst widerwärtig, sich mit der untersten Ebene der Schnittstellenprogrammierung abgeben zu müssen. Ich würde also unbedingt eine Motorsteuerung mit mitgelieferten LabVIEWtreibern oder wenigstens mit DLL-Funktionsbibliothek aussuchen, damit Dir das erspart bleibt.
Hi!

Ich erzähle jetzt mal aus meiner nicht LV-Erfahrung heraus:

- Benutze auf jeden Fall ein Kraftmesselement, um den Aktualkraftwert zu erfassen - so nahe an der Probe wie möglich!
Hintergrund: Manche theoretiker kommen auf die Idee "Jaaaa, wir können ja den Motorstrom auf die Kraft umrechnen, und der liegt ja der Software vor"...Bull$%/'§!& Das wird sehr ungenau - versprochen, ausserdem ist das nicht der Kraftwert an der Probe, sondern der Umgebungsabhängige direkt an der Motorwelle. Tribologie lässt grüssen, ganz zu schweigen von Verlussten in Getrieben etc....

- Um sauber eine Position (also einen Kraftwert) zu halten, solltest Du dem Servomotor soviel Weg zum "Positionieren" geben, wie Du kannst.
Hintergrund: Z.B. Du fährst auf Block gegen eine Wand. Dann ist der Kraftunterschied zwischen zwei Inkrementen in Zustellrichtung gegen die Wand sehr groß! Da kannst Du dann auch nicht gut regeln, zu wenig "istwert"...Big Grin...Wenn der Motor aber 4000 Inkremente für selbiges "Kraftdelta" zur Verfügung hat, sieht das schon anders aus!

Ich hoffe das hilft Dir auch weiter...
Gruß!

Edit: Und ach...versuche einen Absolutwertgeber zu bekommen, dann hat sich die Referenzpositioniererei ausser bei Erstinbetriebnahme erledigt.
Hallo,
also erstmal vielen Dank für die Antworten!!! Es ist einfach sooo klasse wie einem hier geholfen wird!

Also ich benutze einen Kraftaufnehmer (berechne darüber die Spannung in der Probe) und auf der Probe ist ein DMS aufgebracht.

Da der Motor ja quasi übder die Kraft/Spannung in der Probe gesteuert werden soll, brauch ich doch gar keine Refernezfahrt, richtig? Ich meine ich gucke einfach: vorhandene Spannung kleiner/größer Sollwert, und fahre dann dementsprechend den Motor (wie Lucki schon beschrieben hat), richtig?
Dann brauche ich ja eigentlich nur ne Lineare Fahrt einbauen?
Oder muss ich da noch etwas bedenken?

Werde ein VI posten, sobald ich etwas zusammen gebaut habe....


Etwas Hintergrund-Information:
Folgender Schritmotor wird verwewndet (siehe auch Bild):
Superior Electric
SloSyn Synchronous/Stepping Motor
Type: M062-LE09E
Oz.In.: 100 Hold
RPM: SPEC.BM101029
Steps: 200
1.65 V
4.7 A
65 C

Das folgende 3rd party drive kommt zum einsatz (das wiederum an den Motion Controller von NI angeschlossen wird):
Compumotor
GT(GT6)-L5
siehe auch: http://www.parkermotion.com/products/Stepp..._80_567_29.html
So,

hallo ich bins nochmal. Habe jetzt mal nen VI erstellt das die Kraft und die Dehnung misst. Die Spannung wird berechnet und danach soll der Motor kontrolliert werden. Habe eine Abfrage (mit Addition) eingebaut, so dass alle 3 Fälle abgedekct sind:

maxSollwert + minSollwert < Istwert = Fall 0 (Motor fährt vorwärts, Kraft wird vergrößert)
maxSollwert + minSollwert > Istwert = Fall 2 (Motor fährt rückwärts, Kraft wird reduziert)
maxSollwert > Istwert UND minSollwert < Istwert = Fall 1 (Motor steht; gewünschte Position)


Meine erste Frage: Wird das so funktionieren? Habe leider die Hardware noch nicht (aber das Programm soll laufbereit sein wenn diese ankommt).
Habe mal nur in einem case die Motorsteuerung eingebaut (straight line move). Habe keinerlei erfahrung damit. Wird der Motor sich so bewegen oder muss doch noch zusätzlich was eingestellt werden?

Mein Professor meinte, ich solle zur Regelung des Motors einen PID Regler verwenden. Nun weiss ich zwar was PID Regler bedeutet und was seine Eigenschaften sind. Jedoch weiss ich zum einen nicht wie ich das in dieser Anwendung einbauen soll und zu anderen ob das überhaupt nötig ist? Wenn ich den Bereich groß genug wähle hab und den Motor nicht übermäßig schnell dfahren lasse, dürfte ich eh kein großes Überschwingen erwarten, oder?

Bin für jede Antwort sehr dankabr!
Hoffe das mit den SubVi's die ich angehängt habe, klappt das. Die Funktion müsste aber eh aus dem MainVI hervorgehen.

Danke und Grüße aus Tennesse-werde jetzt mal schlafen gehen...
Robin
Achso, hier das ganze nochmal in LV 8.0 version.
Moin Robin,
Dein Prof hat nicht ganz unrecht, mit einer Regelung hast du die Möglichkeit einer genaueren Einstellung deiner Kraft. Mit dem Kraftsensor in der Rückführung zum PID Regler. Mit der richtigen Einstellung des Reglers kannst du dir auch eine Menge Programmierarbeit sparen, denke ich ;-)
Ich denke mir mal, dass du ein Überschwingen nicht vermeiden kannst auch wenn es sicherlich nicht allzu heftig werden wird.
Gruß
Jenne
' schrieb:Mein Professor meinte, ich solle zur Regelung des Motors einen PID Regler verwenden. Nun weiss ich zwar was PID Regler bedeutet und was seine Eigenschaften sind. Jedoch weiss ich zum einen nicht wie ich das in dieser Anwendung einbauen soll und zu anderen ob das überhaupt nötig ist? Wenn ich den Bereich groß genug wähle hab und den Motor nicht übermäßig schnell dfahren lasse, dürfte ich eh kein großes Überschwingen erwarten, oder?
Ich beantworte jetzt mal nur diesen Punkt:
Ein Regler macht nur Sinn, wenn entweder[list]
[*]Der Sollwert so schnell als möglich überschwingungsfrei angefahren werden soll.<>
[*]Der Sollwert (Führungsgröße) schnellen Schwankungen unterworfen ist und die dynamischen Abweichungen Soll-Ist gering gehalten werden sollen<>
[*]Schnelle sich ändernde Störgrößen einwirken, die sofort auszugleichen sind.<>
[st]In Deinen Postings hast Du nichts von alldem erwähnt, so daß man davon ausgehe muß, daß es sich hier um eine praxisferne professorale Eingebung handelt - oder aber Du hast Wesentliches zur Aufgabenstellung nicht gesagt.
Hi,

danke für die Antworten. Also wie ich mir das vorstelle ist ein Regler nicht nötig. Denke mien Pro hat das mal einfach so in den Raum geworfen, weil es halt ne Regeling ist und sich das Wort PID Regler da immer gut macht Big Grin. Falls der doch unbedingt einen einbauen will, bin ich mir nicht sicher wie iund wo ch den da unterbringen soll....

Kann das ganze ja leider noch nicht ausprobieren, da das PXI System mit Motion Controller noch nicht da ist.


Kann mir evt noch jemand mit den anderen Fragen, bez. der Umsetzung der Motorsteuerung helfen? Macht das so Sinn, bzw. iszt alles was ich machen muss ein "straight line move"?

Danke,
Robin

Edit:
Hab heute nochmal mit ihm darüber gesprochen. Er meint ich solle uaf jeden Fall nen PID Regler einsetzen. Nur um sicher gehen zu können das kein überschwingen auftritt und schneller an die gewünschte Position fahren zu können.
Habe das Addon für PID/Fuzzy auch installiert. Frage mich jedoch gerade wo/und welcher dieser Regler zu platzieren ist. Habe dann ja nen output wert. Was mache ich mit dem? Kann ich die Motorsteuerung mit der Fallunterscheidung so beibehalten, oder macht man das dann ganz anders?
Referenz-URLs