LabVIEWForum.de
Schrittmotoransteuerung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Schrittmotoransteuerung (/Thread-Schrittmotoransteuerung--12308)



Schrittmotoransteuerung - anur - 05.06.2007 14:39

Hallo!

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?

anur


Schrittmotoransteuerung - Achim - 05.06.2007 16:25

Du solltest mal dein VI oder nen Screenshot posten...geht das über RS232 oder GPIB?

Bei deinen mageren Informationen kann man gar nichts weiter sagen...


Schrittmotoransteuerung - anur - 06.06.2007 07:31

sorry, ich wusste net, wie viel Infos man braucht...

Es geht über RS232.

Im Anhang ist das Teil meines VIs, auf das es ankommt.


Schrittmotoransteuerung - jg - 07.06.2007 20:58

Hallo,

was stellt jetzt dein Screenshot dar?

Nehme an, den Code bei der Ansteuerung 1 Motors.

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:

[attachment=7019]

MfG, Jens


Schrittmotoransteuerung - anur - 08.06.2007 12:51

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?


Schrittmotoransteuerung - jg - 09.06.2007 10:16

' 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