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 möchte mehrere Schrittmotoren über ein Steuermodul mit LabVIEW ansteuern.
Über die Software, die zu dem Modul gehört, ist das gar kein Problem. Mit LabVIEW kann ich bis jetzt einen Motor ansteuern, nur sobald ich mehrere Motoren ansteuern will gibt es Probleme. Die Befehle, die dazu von LabVIEW an das Modul gesendet werden, bestehen jeweils aus 9 Byte. Wenn mehrere Motoren angesteuert werden sollen, werden diese Befehle aber auseinander gerissen und die einzelnen Bytes wild durcheinander gesendet. Was kann ich tun, damit immer jeweils ein Befehl im 9-Byte-Paket gesendet wird?
Wie soll man da jetzt erkennen, was bei mehreren Motoren falsch läuft?
Wie unterscheidest du die Motoren?
...
Noch eine Bemerkung, dein Code schreibt die 9 Bytes einzeln nacheinander und nicht den ganzen 9 Byte-String auf einmal. Falls du das willst, musst du die Wandlung z.B. so machen:
MfG, 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!
Vielen, vielen Dank, Jens! Das war genau das VI, das ich gebraucht habe!
Genau, es ist der Code zur Ansteuerung eines Motors. Wenn ich mehrere Motoren ansteuren will, mache ich dadraus ein neues VI und setze mehrere von diesen VIs untereinander, die natürlich mit verschiedenen Werten (die blauen Dinger ganz vorne) gefüttert werden.
Mein Code sieht mittlerweile so aus (s.Anhang).
Mein neues Problem ist, dass das Programm jetzt nicht immer wartet, bis zu einen Befehl die Antwort vom Steuermodul kommt, sondern es schickt manchmal gleich einen neuen Befehl für einen anderen Motor (manchmal auch nicht), ohne auf die Antwort auf den ersten Befehl zu warten. Deswegen laufen meine Motoren seeeehr unregelmäßig. Gibt es ein VI, dass dafür sorgt, dass zuerst auf die Antwort vom aktuellen Befehl gewartet werden muss, bevor irgendein neuer Befehl gesendet werden darf?
' schrieb:Vielen, vielen Dank, Jens! Das war genau das VI, das ich gebraucht habe!
Genau, es ist der Code zur Ansteuerung eines Motors. Wenn ich mehrere Motoren ansteuren will, mache ich dadraus ein neues VI und setze mehrere von diesen VIs untereinander, die natürlich mit verschiedenen Werten (die blauen Dinger ganz vorne) gefüttert werden.
Mein Code sieht mittlerweile so aus (s.Anhang).
Mein neues Problem ist, dass das Programm jetzt nicht immer wartet, bis zu einen Befehl die Antwort vom Steuermodul kommt, sondern es schickt manchmal gleich einen neuen Befehl für einen anderen Motor (manchmal auch nicht), ohne auf die Antwort auf den ersten Befehl zu warten. Deswegen laufen meine Motoren seeeehr unregelmäßig. Gibt es ein VI, dass dafür sorgt, dass zuerst auf die Antwort vom aktuellen Befehl gewartet werden muss, bevor irgendein neuer Befehl gesendet werden darf?
Du könntest eine While-Schleife nehmen, und darin solange auf die den COM-Port lesen, bis du deine Antwort zusammen hast.
Oder du ermittelst durch Versuche, wie lange in der Regel dein Controller/Steuermodul braucht, bis es eine Antwort sendet.
Dann sorgst du durch saubere Programmierung dafür, dass die Befehle an mehrere Motoren auch wirklich seriell abgearbeitet werden. Keine Ahnung, ob du das nämlich bisher gemacht hast, dafür sind deine Aussagen mal wieder zu dünn.
MfG, 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!