LabVIEWForum.de - Rampe für Schrittmotorsteuerung auf FPGA

LabVIEWForum.de

Normale Version: Rampe für Schrittmotorsteuerung auf FPGA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

Ich programmiere gerade eine Schrittmotorsteuerung - in einer VI werden insgesamt 4 Motoren gesteuert, diese VI soll auf einem cRio-9104 laufen. Die Steuerung ist momentan nach einem NI-Beispiel für 8-Kanal-PWM programmiert: http://zone.ni.com/devzone/cda/epd/p/id/1499 , so dass in einem Memory Block die Frequenz und die geforderte Schrittzahl vom RT-Host geschrieben werden. Die FPGA-VI liest dann die Memory-Angaben und generiert den Schrittmotor-Takt für die vier Motoren.

Das Problem ist nun, dass einer der Motoren mit einer Rampe anfahren muss. Hat jemand eine Idee, wie man so was effizient auf eine FPGA ausführen kann. Ich dachte an ein zweites Memory, in dem die Rampe (z.B. sinusförmig) beschrieben ist und die dann entsprechend der gewünschten Endfrequenz und Schrittanzahl zu skalieren bzw. zu interpolieren (z.B. im Memory befinden sich 20 Punkte, die eine Sinuskurve abbilden - die sollen auf die Frequenz für die erste 500 Schritte interpoliert werden). Wie kann man so eine Interpolation effizient auf der FPGA machen oder sollte man es besser vom RT-Host erledigen lassen? Oder kennt jemand eine elegantere Methode eine Anfahrtrampe zu programmieren?

Ich werde mich auf alle Hinweise freuen, danke im Voraus.

Viele Grüße,
svet77
Also, ich habe schon einige Schrittmotorsteuerungen mit LabVIEW realisiert, aber Dein Problem hatte ich noch nicht. Warum nicht? Weil in den Schrittmatorsteuerungen solche Kommandos schon ingegriert sind, bei der Programmierung geht es dann z.B. nur noch darum, die entprechenden Parameter für die Rampe zu übergeben.

Bei den Schrittmotorsteuerungen, die meist eine serielle Schnittstelle haben, gibt es zwei Stufen des
Komforts.
Bei den einfacheren mußte man selbst die serielle Schnittstelle bedienen
Bei den besseren hast Du eine DLL mit allen Funktionen, und diese DLL beorgt Dir die Kommunikation mit der Schrittmotorsteuerung.
Warum also das Rad neu erfinden, wenn es das alles schon gibt?
Hallo Lucky, danke für dein Hinweis, ich werde jetzt nachschauen, was meine Steuerung so kann.
' schrieb:Also, ich habe schon einige Schrittmotorsteuerungen mit LabVIEW realisiert, aber Dein Problem hatte ich noch nicht. Warum nicht? Weil in den Schrittmatorsteuerungen solche Kommandos schon ingegriert sind, bei der Programmierung geht es dann z.B. nur noch darum, die entprechenden Parameter für die Rampe zu übergeben.

Bei den Schrittmotorsteuerungen, die meist eine serielle Schnittstelle haben, gibt es zwei Stufen des
Komforts.
Bei den einfacheren mußte man selbst die serielle Schnittstelle bedienen
Bei den besseren hast Du eine DLL mit allen Funktionen, und diese DLL beorgt Dir die Kommunikation mit der Schrittmotorsteuerung.
Warum also das Rad neu erfinden, wenn es das alles schon gibt?

Hallo lucky,

ich hab eigentlich nur eine Endstufe, kein Controller, die Steuerung selbst soll über die FPGA des CompactRIO erfolgen.
Der Driver ist TMCM-035 von Trinamic.
' schrieb:ich hab eigentlich nur eine Endstufe, kein Controller, die Steuerung selbst soll über die FPGA des CompactRIO erfolgen.
Der Driver ist TMCM-035 von Trinamic.
Habe mir das mal angeschaut, du hast zwar recht. Der TMCM-035 ist aber nur die Hälte des Ganzen. Dazu passend gibt es den "Control Modul TMCM-100". Der hat dann die serielle Schnittstelle, und man hat u.a. einen Befehl für "Automatic S-shaped and trapazoid ramps". Man kann auch sein eigenes Programm hineinflashen und das Ganze im stand-alone betreiben.
Wenn Du es aber so machen willst wie Du gesagt hast, dann würde ich erst mal recherchieren, ob sich der Zukauf des Motion-AddOns für LabVIEW lohnt. Ich würde davon ausgehen, daß da so ein Rampenprogramm fertig in der Werkzeugkiste liegt. Kann das hier jemand bestätigen?
' schrieb:Habe mir das mal angeschaut, du hast zwar recht. Der TMCM-035 ist aber nur die Hälte des Ganzen. Dazu passend gibt es den "Control Modul TMCM-100". Der hat dann die serielle Schnittstelle, und man hat u.a. einen Befehl für "Automatic S-shaped and trapazoid ramps". Man kann auch sein eigenes Programm hineinflashen und das Ganze im stand-alone betreiben.

Ja, das mit dem TMCM-100 ist mir bekannt, aber wir haben deswegen die NI-Hardware gekauft, damit wir die komplette System-Steuerung über die machen, wird in dem Fall vielleicht komplizierter, aber so sind die Gegebenheiten. Danke trotzdem.
Referenz-URLs