Steuerung von 3 Schrittmotoren - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Steuerung von 3 Schrittmotoren (/Thread-Steuerung-von-3-Schrittmotoren) |
Steuerung von 3 Schrittmotoren - Flocke - 14.06.2007 10:14 [attachment=7097]Hallo, Ich wuerde mich ueber den einen oder anderen Rat freuen. Ich arbeite seit einem halben Jahr mit LabVIEW. Alles was ich bislang gemacht habe, habe ich mir selber beigebracht. Ich bitte also kein Profi, seit also bitte nicht zu hart, wenn meine Angaben etwas unprofessionell klingen. Auch moechte ich nicht, das jemand anders meine Arbeit macht. Ich habe bislang jedes Stueck an meinem Programm selber geschrieben, aber nun bin ich an einen Punkt gekommen wo ich einfach nicht weiter komme :-( Ich verwedende LabVIEW 8.0 und PCI-6024/SC-2075. Ich benutze sechs digital I/O Kanaele, fuer jeden Schrittmotor 2. Ich muss im Rahmen einer Projektarbeit fuers Studium ein Programm schreiben, dass drei Schrittmotoren steuert. Insgesamt laeuft das auf ein 3D drive system hinaus, dass sinusfoermige und andere asymmetrische Bewegungen simulieren soll. Ich habe also zunaechst ein LabVIEW Program fuer eine 1D Bewegung entworfen. Die variierende Geschwindigkeit weit dabei kontrolliert indem das Zeitintervall zwischen zwei Schritten berechnet wird und dann ueber eine for-loop mit „wait until next ms multiple“ gesteuert wird. Fuer die Steuerung eines Schrittmotors hat dies wunderbar funktioniert. Vor zwei Wochen habe ich das ganze nun auf 3D expandiert und das klappt leider immer noch nicht. Solange ich die gleiche Amplitude und Phase fuer alle drei Richtungen habe, funktioniert es. Aber fuer mein Projekt sollen sich die drei Schrittmotoren mit unterschiedlicher Amplitude und Phase bewegen. Und da klappt das mit dem Timing alles nicht mehr und die Bewegung wird ruckartig. Das Programm berechnet fuer alle drei Motoren die Anzahl der Schritte in einem Intervall und dann den Zeitabstand zwischen zwei Schritten, dieser ist unterschiedlich fuer jeden Motor. Von daher habe ich drei for-loops eingebaut, jede for-loop hat einen anderen „wait until next ms multiple“ Wert und generiert die Signale fuer zwei digitale I/O Kanaele. Ich habe mal ein Bild davon eingefuegt. Soweit ich das sehe, ist da nun das Problem, dass die drei for-loops nicht gleichzeitig ausgefuehrt werden, sondern immer eine nach der anderen. Wie kann man das aendern? Sorry, ich habe mit dem ganzen Timing ueberhaupt keine Erfahrung :-( Oder ist der Ansatz komplett falsch und ich muss eine andere Herangehensweise waehlen? Ausserdem bin ich gerade dabei mein Programm etwas zu verkleinern. Da ich wiegesagt vorher noch keine Erfahrung mit LabVIEW hatte, habe ich glaube ich einiges recht umstaendlich gemacht. Ich bin nun gerade dabei Dinge, die sich wiederholen in subVIs zu packen. Wie ist das mit den SubVIs, kann ein SubVI dreimal gleichzeitig ausgefuehrt werden oder geht das nicht? Bitte macht mich jetzt nicht gleich fertig, weil ich Infos vergessen habt, die ihr braucht um die Frage zu beantworten, sondern sagt mir was ihr noch wissen muesst Ich wuerde mich freuen, wenn mir jemand weiterhelfen kann. Vielen Dank! Gruss, Flocke |