Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe an meinen myRio einen Schrittmotorcontroller angeschlossen, welcher bei jeder steigenden Flanke den Motor um einen Schritt weiter dreht. Bei der Ansteuerung mittels PWM ExpressVI in Labview dreht der Motor auch, diese ist jedoch für meine Zwecke unzureichend. Die PWM Express VI kann nur Werze zwischen 40 Hz und 40 kHz ausgeben, ich benötige jedoch einen größeren Frequenzbereich (ca. 10 Hz bis 50 kHz). Außerdem muss eine genaue Anzahl Schritte an den Motor ausgegeben werden können (in einer bestimmten Frequenz), um Verfahrweg und Verfahrgeschwindigkeit zu bestimmen. Meine Überlegung ist jetzt, ein Step Signal in einer For Schleife auszugeben, welche den Ausgang high und wieder low setzt. Das Step Signal (aus dem Simulation-> Signal Generation Bereich) gibt jedoch einen double-Wert aus. Wie kann ich diesen Wert in einen boolean Wert transformieren? Oder gibt es bereits fertige VIs, welche eine Schrittmotorsteuerung bieten? Bei meiner Recherche konnte ich keine finden.
ich bin mit meinem Problem schon weiter gekommen, jedoch haben sich direkt neue Probleme ergeben:
Ich erzeuge meine steigende Flanke mit Hilfe eines "Timed loop", welche als Timing Source die 1 MHz Clock verwendet. in der Schleife befindet sich ein Negierelement, welches mit einem Schieberegister gekoppelt ist. Bei jedem Durchlauf der Schleife wird nun der Zustand dieses Schieberegisters gewechselt. Die Frequenz dieses Wechsels wird mit dem Periodeneingang der Schleife gesteuert. Bei einer Periode von 1 müsste somit theoretisch eine Frequenz von 500 kHz möglich sein (eine Periode an, eine aus). Die erreichbare Periodendauer beträgt jedoch 80 bis 120 µs, was einer Frequenz von 8,33 bis 12,5 kHz entspricht. Ich benötige für meinen Anwendungsfall eine Frequenz von ca. 40-50 kHz. Weiß jemand, wie ich die Flankenerzeugung beschleunigen kann oder gibt es andere Möglichkeiten, eine bestimmte Anzahl steigender Flanken in diesem Frequenzbereich zu erzeugen?
Die Schritte auf eine andere Art zu erzeugen oder die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Also muss ich im Prinzip das gleiche Programm in Labviev FPGA erstellen und kompilieren? Oder ist der Aufbau ganz anders? Der Rechner und der myRio stehen in der Uni, kann mir das deshalb gerade nicht anschauen.
Vielen Dank für deine Hilfe!
Gruß
Tobias
28.03.2018, 08:33 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2018 08:34 von GerdW.)
Zitat:Die Schritte auf eine andere Art zu erzeugen
Du könntest statt selbst den DO zu togglen eben mit den fertigen PWM-Funktionen arbeiten. Aber die gefallen dir ja nicht…
Zitat:die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Du redest hier von einem myRIO mit begrenzter Rechenkapazität - und willst eine Schleife mit 1MHz Takt laufen lassen und einem Jitter unter 100ns? Ich bin schon erstaunt, dass du überhaupt 40-50kHz hinbekommst! Nein, die TWL wirst du nicht "beschleunigen"…
(Außer natürlich alles unnötige, insbesondere Indicators, aus der Schleife entfernen.)
Zitat:Also muss ich im Prinzip das gleiche Programm in Labviev FPGA erstellen und kompilieren? Oder ist der Aufbau ganz anders? Der Rechner und der myRio stehen in der Uni, kann mir das deshalb gerade nicht anschauen.
LabVIEW bringt Beispiel-Projekte mit, die zeigen, wie man Daten zwischen RT und FPGA austauscht…
Zitat:die timed loop zu beschleunigen ist mit dem "normalen" Labview also nicht möglich?
Du redest hier von einem myRIO mit begrenzter Rechenkapazität - und willst eine Schleife mit 1MHz Takt laufen lassen und einem Jitter unter 100ns? Ich bin schon erstaunt, dass du überhaupt 40-50kHz hinbekommst! Nein, die TWL wirst du nicht "beschleunigen"…
Der OP bekommt ca. 10 kHz hin. Auch das ist schon extrem erstaunlich, je nachdem wie diese MyRIO DIO VIs aufgebaut sind. Wenn da die ScanEngine dahinterliegt, dann wären 10 kHz eine Wahnsinns-Update-Rate, wenn da ein entsprechender FPGA-Code dahinterliegt, dann müssen ja Einzelwerte per "WertSetzen" an den FPGA-Code weitergegeben werden, dann sind die erreichten 10 kHz sicher auch schon extrem gut.
@ Tobias: Ich stimme Gerd zu, Update-Raten des DO von > 1kHz wirst du verlässlich nur bei direkter Umsetzung im FPGA hinbekommen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Zitat:Du könntest statt selbst den DO zu togglen eben mit den fertigen PWM-Funktionen arbeiten. Aber die gefallen dir ja nicht…
Gefallen tut mir die schon, ich muss nur eine definierte Anzahl an Schritten erzeugen können. Ist es wohl möglich, das PWM Signal mit einem Counter zu zählen und bei erreichen der gewünschten Schrittanzahl das PWM Signal "abzuschalten" (mit einem Case oder ähnlichem) oder schafft ein Counter diese Updateraten (40 kHz) auch nicht? Dies würde ich morgen erst probieren, ansonsten muss ich wohl im FPGA programmieren.
Viele Grüße
Tobias
28.03.2018, 17:44 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2018 20:13 von GerdW.)