GSI Helmholtzzentrum für Schwerionenforschung
Schrittmotorsteuerung: COM-port- Kommunikation
Hallo, da ich noch ein LABVIEW-Newbie bin, erscheint mein Problem hier doch ein wenig trivial... Info zum Meßaufbau: Ich möchte Messdaten in Abhängigkeit des Winkels zwischen 0° und 360° (in veränderbaren Winkelintervallen) erfassen. Hier soll sich der Rotor eines Motors in n-Schritten nur einmal um die eigene Achse drehen. Nach jedem Schritt sollen Messdaten erfasst und in einer Excel-Tabelle abgespeichert werden. (Schrittweitenauflösung: 0,18°) Dazu habe ich einen maxon EC-Motor, welchen ich über einen Servoverstärker mittels RS232 ansteuern möchte (vom Rechner ausgehend über "USB to RS232-Adapter" an COM5). Im EC-motor sind HAll-Sensoren welche die genaue Positon des Läufers zurückgeben. Mein erstes Problem: So, da ich mir eingebildet habe, dies mit Labview realisieren zu können, stehe ich schon vor dem ersten Problem: Wie kann ich den/die Port/s "ansprechen"?- Ich benötige doch irgendein VI das mir meine DLL-Datei aufruft um so den Port ansprechen zu können. Wie kann ich dann die Kommunikation überprüfen? Danke im Voraus! Natürlich habe ich noch viel mehr weitere Fragen, die ich jedoch vorerst mal selbst zu beantworten versuche.
Re: Schrittmotorsteuerung: COM-port- Kommunikation
Hi Matthias, zur Kommunikation mit einen COM-Port solltest Du die VISA-VIs benutzen. Du findest die Beispiele dazu in der LabVIEW-Hilfe (Find Examples ... -> und dort das Stichwort VISA eingeben). In einem ersten Schritt würde ich aber die Kommunikation interaktiv mittels Hyperterm ausprobieren, um sicherzustellen, dass die Schnittstellenparameter funktionieren und wenigstens einige Kommandos erfolgreich ausgeführt werden können. Auf dem NI-Web, http://www.ni.com/devzone/idnet/, findest Du die Richtlinien zur Entwicklung von Gerätetreibern. In diesen Beschreibungen und den Templates, die zum Download zu Verfügung stehen, findest Du alles wissenswerte, um Deinen Motor anzusteuern. Du mußt ja nicht notwendig alle Funktionen implementieren, aber die vorgeschlagenen Templates sind durchaus sinnvoll. Ich persönlich benutze sie jedenfalls sehr erfolgreich. Es gibt nur eine Änderung meinerseits: Die Kommunikationsdetails, VISA Read und VISA Write sowie die Kommandoformatierung mit <CR><LF> o.Ä., sollten in einem Transaktions-VI gekapselt werden und von den eigenlichen Funktions-VIs benutze werden. Das hat diverse Vorteile, die zu beschreiben, hier zuviel Platz einnähme. Gruß Holger
Hallo Holger, Erstmal sanke für deine schnelle Hilfe. Ich hab da was passendes im Internet gefunden (siehe ZIP im Anhang,) mit dem ich die Lösumg für mein erstes Problem schon überwunden habe. Leider bin ich schon beim nächsten Problem: Ich erhalte zwar eine Rückmeldung über den Status der Hall-Sensoren und der Rotor-Position, jedoch kann ich diese nicht weiterverarbeiten um die Position des Rotors anzeigen lassen bzw. definiert anzusteuern? Ich habe schon einige Ansätze ausprobiert, aber leider ohne Erfolg. Irgendwie finde ich keine passendes Sub-VI in der DesCmd.llb. Wie kann ich mir nun ein entsprechendes VI selbst erstellen. Mehrere Versuche mit Hilfe der "Call Library Function Node" ein eigenes VI zu basteln schlugen fehl. Vorbild waren Sub-VIs wie z.B. das SetVelocity.vi (siehe zip) usw. Denn,da ich Labview-Anfänger (Grundkurs Herbert Pichlik ) bin versuche ich meist vorhandene VIs zu suchen, zu verstehen und anschließend zu modifizeren, was auch bisher ganz gut geklappt hat. Kannst du mir da einen Tipp geben wie ich das ganze anpacken soll? Besten Dank! Gruß, Matthias
Hi Matthias, ich habe mal kurz in Dein zip-file reingeschaut. Leider habe ich nicht die Zeit mich durch eine solche VI-Sammlung und ohne das zugehörige Gerät durchzuwühlen. Du müsstes das Problem/Projekt schon auf wenige VIs zusammenstreichen. Ich denke aber, das meine vorherigen Hinweise zur Instrumententreiberentwicklung genügend Informationen beinhalten, um Dir den Start zu ermöglichen. Bei Problemen mit der DLL oder fehlender Funktionalität solltest Du Dich an den DLL-Hersteller wenden. Gruß Holger
Danke Holger, hast mir sehr geholfen! Dein Tipp mit den VISAs waren Gold wert, langsam wirds. Alles habe ich noch nicht zum laufen bekommen, aber ich konnte schon einige Teilerfolge erzielen. Gruß, Matthias
kurze Zwischenfrage: Gibt es ein Tastenkürzel, welches die Leitungen begradigt? Ich hab da was dunkel in Erinnerung... Die Ansteuerung des Motors klappt jetzt schon ganz gut, nur habe ich einen Wust an Leitungen den ich etwas ausrichten möchte, zur besseren Übersicht.
Hi Matthias, mit <Strg>b werden kaputte Drähte entfernt. Den Trick zum Begradingen von Drähten kenne ich leider nicht. Gruß Holger
Das hab ich mir fast gedacht, da ich in der Hilfe auch nichts gefunden habe... ..man sollte von Anfang an gleich ordenlich arbeiten... Mal was anderes: Ich bin zwar noch nicht ganz soweit, da ich das ganze nur nebenbei mache, aber schon mal vorab: Ich möchte über einer weiteren COM-Schnitstelle analoge Daten einlesen. Diese Daten möchte ich im Excel-auslesbaren Format abspeichern. Wie speicher ich in Labview die eingehende analogen Daten ab? Kann ich in der Funktion "Express Table" die Daten ablegen? Natürlich muss ich vorher das analoge Signal diskretisieren um es in ein Excel_sheet abspeichern zu können, was aber nicht weiter schwer sein dürfte. Gruß, Matthias PS: Danke Holger, für deinen großartigen Support und deiner Geduld!
Hi Matthias, im LV-Menü -> Help -> Find Examples findest Du zu den Themen Excel/Tabellen/Spreadsheet viele Beispiele. Analoge Daten über COM-Schnittstelle einlesen? Du musst mir dringend verraten, wie Du analoge Signale mit der digitalen COM-Schnittstelle messen willst? Pulsweitenmodulation mit Hilfe der Handshake-Leitungen? Im übrigen bleibt das Forum übersichtlicher, wenn thematisch neue Fragen nicht als Antwort gestellt werden, sondern als neuer Beitrag mit passenden Titel. Dann können die Antworten auch von anderen Lesern besser gefunden werden. Gruß Holger
oh, ich Unwissender...