15.08.2008, 09:55
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
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