LabVIEWForum.de
Motorsteuerung Nanotec mittels VCP - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Motorsteuerung Nanotec mittels VCP (/Thread-Motorsteuerung-Nanotec-mittels-VCP)

Seiten: 1 2


Motorsteuerung Nanotec mittels VCP - HansHenning - 08.05.2018 08:57

Sehr geehrtes Forum,

ich habe folgende Fragestellung und hoffe hier eine Antwort zu bekommen. Ich arbeite momentan an der Regelung für ein Laborgerät bei dem ich zwei unterschiedliche Motor für die Druckbeaufschlagung in X und Y auf eine Probe konzipiere.

Nachdem nun die Hardware + Sensoren und Motoren vorhanden sind versuche ich die einzelnen Teile erst einmal einzeln in Labview anzusteuern um dann die Regelung für meine Anwendung zu konzipieren. Hierbei habe ich mich für einen Nanotec Schrittmotor NEMA 24 (https://de.nanotec.com/produkte/541-st6018-schrittmotor-nema-24/ ) mit einem Encoder und einer Steuerung CE5-E-1-09 (https://de.nanotec.com/produkte/1765-c5-e-1-09/ ) entschieden.

Ich habe nun auf dem Motor einen Virtuellen Computer Port (VCP) konfiguiert und den Motor mittels VISA in das Beispiel von Nanotec (vi angehängt) als Visa eingebunden. Ich kann Write und Read befehle ausführen bzw. ich sehe mittels Read dass der ich anscheinend den Motor abfragen kann.

Ich habe nun ein paar Fragen zur weiteren Umsetzung:

1. Wie schaffe ich es, dass die Motoren feste COM-Ports zugewiesen haben? Beim Start des Motors, dazu ist es wichtig zu wissen, dass ich beide Motoren auf einem USB-Hub gebündelt habe.
2. Ich verstehe die Logik der Befehle leider nicht auch wenn diese in dem Handbuch zum Motor aufgeschlüsselt sind (https://de.nanotec.com/produkte/manual/C5E_CAN_USB_DE/-/ ), welchen Befehl muss ich senden um den Motor dazu zubringen sich zu bewegen und wie stelle ich die Geschwindigkeit ein etc. Ich würde dies gerne mit der Standard Vi von Nanotec erstmal tun um die generelle FUnktionsweise zu verstehen, bevor ich dies in meine Regelung einbaue.

Ich hoffe jemand kann mir diesbezüglich weiterhelfen.

Viele Grüße
Hans


RE: Motorsteuerung Nanotec mittels VCP - GerdW - 08.05.2018 11:54

Hallo Hans,

Zitat:1. Wie schaffe ich es, dass die Motoren feste COM-Ports zugewiesen haben? Beim Start des Motors, dazu ist es wichtig zu wissen, dass ich beide Motoren auf einem USB-Hub gebündelt habe.
Das hat nichts mit LabVIEW zu tun, sondern wie Windows (virtuelle) COM-Ports verwaltet.
Es gibt da Tools, die für "immer gleiche" COM-Port-Bezeichnungen sorgen sollen - musst du mal eine Suchmaschine deiner Wahl bemühen…

Zitat:2. Ich verstehe die Logik der Befehle leider nicht auch wenn diese in dem Handbuch zum Motor aufgeschlüsselt sind (https://de.nanotec.com/produkte/manual/C..._USB_DE/-/ ), welchen Befehl muss ich senden um den Motor dazu zubringen sich zu bewegen und wie stelle ich die Geschwindigkeit ein etc.
Die Kommunikation mit dem Motortreiber erfolgt über Register, deren Bedeutung im Manual erläutert wird. Vom Aufbau der Botschaften erinnert mich das an Modbus, diese Registerverwaltung findest du aber auch bei CANopen…

Wenn du also den Motor drehen lassen willst, musst du wahrscheinlich ein Controlword (mit diversen Freigaben etc.) senden als auch eine Solldrehzahl in einem anderen Register vorgeben. Einfach mal das Manual lesen…

Zitat:Ich würde dies gerne mit der Standard Vi von Nanotec erstmal tun um die generelle FUnktionsweise zu verstehen, bevor ich dies in meine Regelung einbaue.
Dann mach das doch einfach!

Zu deinen VIs: Hast du die erstellt - oder Nanotec? Die Cluster gehören auf alle Fälle typedefiniert - und der boolsche Wert darin benötigt dringend ein Label!


RE: Motorsteuerung Nanotec mittels VCP - MaxP - 08.05.2018 14:26

Hallo Hans,

da dein Regler ein CANopen Regler ist, musst du dich (leider) erst mit CANopen und den dazugehörigen Gerätenprofilen beschäftigen. Ein deinem Fall ist das das DS402 Profil.

Für weitere Infos kannst du einfach mal auf der Seite von https://www.can-cia.org schauen oder aber du schaust mal in ein Festo/Metronix Handbuch für deren Servoregler, dort wird das DS402 Profil recht gut erklärt.

Wichtig ist auch die State Machine des DS402 zu beachten, ansonsten läuft da gar nichts. Big Grin

Gruß Max


RE: Motorsteuerung Nanotec mittels VCP - HansHenning - 08.05.2018 20:59

@GerdW:

Die VI´s sind die von der Nanotec Seite. Leider verstehe ich die Befehlslogik hinter den CANOpen Befehlen bisher noch nicht so ganz, dass muss ich mir erst erschließen.
Hast du noch einenTip bezüglich der Zuweisung der ComPorts?

@MaxP:
Ja, das scheint mir leider auch so, und du hast durchaus recht. Es tut sich gar nichts, da ich auf Grund, irgendetwas missverstehe. Die generelle Abfolge um den Motor müsste wie folgt sein (laut Nanotec Support):

Objekt und Wert
0x6060=1
0x6040=6
0x6040=7
0x6040=15
0x607A=2000
0x6040=31

Aber leider gelingt es mir nicht die Befehle mittels der VI zu senden.

Viele Grüße,
Hans Henning


RE: Motorsteuerung Nanotec mittels VCP - GerdW - 08.05.2018 21:54

Hallo Hans,

Mal so aus dem Gedächtnis: 0x6040 ist das ControlWord. Die verschiedenen Werte initialisieren den Motorregler...

Die Bedeutung der Werte wird im Manual erläutert.


RE: Motorsteuerung Nanotec mittels VCP - MaxP - 09.05.2018 06:26

Hallo Hans,

wenn du im Positions Modus bist, musst du dir auch die "Homing Methode" anschauen. Wenn der falsch steht, möchte der Regler erst mal eine Nullposition erfahren bevor da etwas passiert.

Versuch erstmal den Motor drehen zulassen, ohne Positionierung. Danach würde ich mich an die Positionierung machen.
Die State Machine wird hier ab Seite 156 ganz gut beschrieben -> https://www.festo.com/net/SupportPortal/Files/428407/CMMP-AS-M3_M0-C-CO_2015-10b_8046794d1.pdf

Gruß Max


RE: Motorsteuerung Nanotec mittels VCP - GerdW - 09.05.2018 06:59

Hallo Hans,

noch ein Nachtrag zum ControlWord:
[attachment=59104]
So setze ich das ControlWord bei einem Sevcon-Motorregler - ich habe sogar mal einen Kommentar im Blockdiagramm hinterlassen…
(Das ist Teil eines größeren Treiber-VIs, der Verwaltungskram drumherum kann vernachlässigt werden.)

Ich kann Max nur zustimmen: lese dich in die CANopen-Dokumentation zum Motorregler ein. Positiver Effekt: wenn du einen CANopen-Motorregler bedienen kannst, kannst du (quasi) alle bedienen!


RE: Motorsteuerung Nanotec mittels VCP - HansHenning - 15.05.2018 17:00

Hallo GerdW und MaxP,

vielen Dank für eure Anregungen die mir nun weitergeholfen haben. Ich kann den Motor nun ansteuern, nachdem ich einigermaßen die Befehlslogik begriffen habe und was in den Nanotec Vi´s programmiert ist.

Ich hätte noch eine kurze Frage, wie kann ich am besten es verwirklichen, die Befehle welche gebraucht werden nacheinander abzuarbeiten. Ich dachte an eine Flat sequence welche aber jedoch sehr unübersichtlich wird.

Für Anregungen wäre ich sehr dankbar.

Viele Grüße,
Hans


RE: Motorsteuerung Nanotec mittels VCP - GerdW - 15.05.2018 20:31

Hallo Hans,

Zitat:wie kann ich am besten es verwirklichen, die Befehle welche gebraucht werden nacheinander abzuarbeiten.
Das "am besten" musst du genauer definieren! Big Grin
Ich empfehle eine Statemachine, gerne auch mit einem QMH (queue message handler) kombiniert…

Zitat:Ich dachte an eine Flat sequence welche aber jedoch sehr unübersichtlich wird.
Nicht nur unübersichtlich, sondern auch "schlecht" im Sinne von (mangelnder) Skalierbarkeit…


RE: Motorsteuerung Nanotec mittels VCP - HansHenning - 18.05.2018 15:31

Hallo GerdW,

Ich bin nun so halb erfolgreich gewesen, ich habe eine VI geschrieben welche zwei Motoren auf Knopfdruck bewegen kann mit einer definierten Geschwindigkeit. Leider habe ich die CANopen Sache noch nicht ganz durchdrungen. Für den Befehl den Motor den Motor mit der vorgebenen Distanz und Geschwindigkeit laufen zu lassen benutze ich zum Beispiel: 6040:31 dabei ist mir vollkommen unklar wieso 31 = 1F in Hex für Bit 4?
Wie funktioniert die konvertierung von bit zu hex und dec? Wenn ich das noch verstanden habe, bin ich der Lösung ein Großteil meiner Probleme erstmal nah.

Anbei die vi welche ich momentan benutze. Dabei ist moveMotor_v2 die main vi und Stop_motor und shear_displacement Beispiele für die Kommunikation mit den Motoren.

Viele Grüße,
Hans