Datenkomunikation mittels USB - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: Datenkomunikation mittels USB (/Thread-Datenkomunikation-mittels-USB) |
Datenkomunikation mittels USB - Takuro - 24.05.2011 11:21 Hallo, ich soll an der Uni für einen Messstand eine VI schreiben um einen automatischen Messdurchlauf durchzuführen. Ich habe dafür ganz neu mit Labview angefangen. Um einzusteigen habe ich das ganze in drei Abschnitte geteilt: allgemeine Einarbeitung, Datens speichern und laden sowie Kommunikation mit externer Hardware. Die ersten beiden Punkte habe ich inzwischen erfolgreich angelernt. Aber beim dritten hapert es gewaltig. Es sind noch nicht alle Messgeräte geliefert worden, allerdings habe ich schon einen kleinen Datenlogger. Dieser wird über die USB Schnittstelle verbunden und kann dann mittels einer mitgelieferten Software gesteuert werden. Aber die Treibersuche in Labview findet nichts. (Ich vermute das bei den großen Geräten in LabView treiber vorliegen) In der mitgelieferten Software kann man die Datenaufzeichnung starten und Messintervalle festlegen. Danach wird das Gerät dann vom PC getrennt, misst die Daten und legt diese im internen Speicher ab. Nach der Messung wird es wieder mit dem PC verbunden und dort können dann Messwerte ausgelesen werden und sowohl grafisch dargestellt als auch als Tabelle abgespeichert werden. Nun versuche ich also innerhalb von Labview eine Kommunikation zu erreichen. Ich habe allerdings keine Gerätespeziefischen Sub-VIs. In diesem Thread wurde eine DLL vorgeschlagen, ich habe einige Zeit mit diesen Beispielen gewütet, allerdings erziehle ich mit diesen keine Kommunikation mit meinem Datenlogger (FT_INVALID_HANDLE). Der Datenlogger ist von Conrad, die bieten keine weiteren Treiber für LabView an, den direkte Hersteller konnte ich im Netz nicht finden. Inzwischen bin ich ratlos, wo ich noch weiter suchen soll. Vielleicht kann jemand von euch mir einen Tipp geben, wie ich weiter vorgehen soll. Da dies mein erstes Projekt ist, was externe Geräte miteinbezieht, fehlt mir Erfahrung in der Vorgehensweise. Ich bedanke mich schonmal fürs lesen und für jede Hilfe. Beste Grüße, Takuro Edit: Der Datenlogger ist im Gerätemanager auch komplett richtig erkannt, hängt am Anschluß "Port_#0001.Hub_#0001". Das sollte also kein physikalisches Verbindungsproblem sein. RE: Datenkomunikation mittels USB - snuz - 24.05.2011 12:32 Hallo Takuro, schon den Driver Wizard von National Instruments ausprobiert? Start -> Programme -> National Instruments -> Visa -> Driver Wizard Nach dem korrekten Ausführen des Driver Wizard, muss das Gerät im Geräte Mangager unter NI-VISA USB Devices gelistet sein, ebenso im MAX. Dann hast Du direkten Zugriff darauf, welchen Befehl Du dann senden musst um an die Daten zu gelangen ist dann nur die Frage. Versuch, wenn Du dich für diesen Weg entscheidest, die Befehle aus der Hilfe. Die haben bei mir jedenfalls funktioniert. Evtl. hilft dir auch das Bild, das gehört aber zu einem AVR der über USB angeschlossen wird und als Messgerät dient. Den habe ich so eingebunden wie ich es geschrieben habe und es funktioniert. Viel Glück, snuz P.S. die genaue Artikelbeschreibung deines Datenloggers könnte vielleicht noch hilfreich sein RE: Datenkomunikation mittels USB - Takuro - 25.05.2011 11:42 Hallo, danke für die Antwort. Sie hat mich schon ein Stück weiter gebracht. Ich habe mit dem Wizard die Treiber installiert, im Gerätemanager taucht es jetzt unter NI-VISA USB Devices auf, was mit MAK hab ich allerdings nicht gefunden. Dann habe ich versucht, deine VI nachzubauen. Wenn ich das richtig verstanden habe, ist der Ablauf folgender: USB-Verbindung öffnen -> Ereigniss "Verbindungsabbruch" definieren -> 5 s auf den Abbruch warten -> Falls kein Abbruch war, übergibt "VISA: USB-Interruptdaten abfragen" die Ausgelesenen Daten als Array -> in Cluster umwandeln -> Daten auswerten Wenn ich das versuche nachzubauen, dann kriegt ich keine Verbindung zwischen dem Warten aufs Ereigniss und der Datenabfrage. Es erscheint "Verbindung: Klassenkonflikt" (VI siehe erster anhang) Dann habe ich versucht, selber das ganze mit der Hilfe zu machen.(zweiter Anhang) Ich erhalte auch eine Ausgabe, auch wenn die nur aus zwei Leerzeichen besteht. Jetzt müsste ich irgendwelche Steuerbefehle an den Datenlogger schicken. Doch wie finde ich raus, welche das sind? Ich habe nochmal gesucht, das Gerät ist von der Firma ELV, Bezeichnung ist TFD 128. Ich habe dazu auf der CD auch die FTD2XX.dll gefunden, ebenso im Netz die Dokumentation dazu. Muss ich jetzt mit diesen Befehlen arbeiten, um eine Kommunikation zu erreichen? Oder wie geht man weiter vor? Das Lehrbuch aus der Bibliothek hilft an dieser Stelle leider nicht weiter. Beste Grüße, Takuro RE: Datenkomunikation mittels USB - snuz - 25.05.2011 12:50 Hallo Takuro, im MAX (Measurement & Automation Explorer) muss das Gerät angezeigt werden, unter Geräte Schnittstellen -> USB Devices -> "Dein Gerät". Hier kannst Du auch direkt auf das Gerät zugreifen. Wähle das Gerät aus und oben "Open VISA Test Panel". Dort kannst Du auch schon Befehle senden (ohne dein VI) oder auch einwenig rumspielen, ist manchmal ganz interessant. Im ersten Bild scheint noch etwas falsch zu sein (der rote Punkt) am "VISA:Ereignistyp aktivieren" in meinem Beispiel ist es einfach ein Wert "3FFF2037" (U32). Nun die Steuerbefehle kann dir nur der Hersteller sagen oder Du probierst einfach welche aus. Hier wäre damals für mich Schluss gewesen, ich hatte aber Glück und es funktioniert mit dem oben stehenden Befehl. Sollte dies bei dir scheitern gibt es noch eine zweite Möglichkeit. Die *.dll Datei, kannst Du über Werkzeuge -> Importieren -> DLL... (hier bei musst Du das Gerät aus dem Hardwaremanager wieder löschen und das Gerät wieder Windows "überlassen" ) Das ist aber nicht ganz so einfach, könnte aber auch gehen. Hier musst Du dich einwenig selbst durchfummeln. Von der Logik her passiert folgendes. Du gibst die DLL Datei an und LabView schaut welche Werte die Datei so zurück liefern kann. Wenn alles gut geht, kannst Du dann verschiedene Befehle abfragen - nur die Frage ob das gewünschte Ergebnis dabei heraus kommt. Kurz und bündig alles ausprobieren. So jetzt kommt was Lustiges, der Dateiname den deine DLL hat, erschien plötzlich bei mir in LabView (bei DLL Importieren) und ich fragte mich wtf? Nach ein paar Nachforschung, ist mir schnell klar geworden, wo die Zusammenhänge sind. Also klar ist das ich den Treiber schon genutzt habe, explizit diese FTD2XX.dll. In deinem Datenlogger ist ein Chip drin, von der Firma FTDI Chip. Der Chip stellt eine USB Verbindung für USB 2 Serial her und jetzt rate mal welcher Chip Hersteller auch LabView versucht zu unterstützen? Genau... So aber noch keine Luftsprünge machen, da steckt noch Arbeit dahinter, sieh dir die Seite mal an vielleicht findest Du was Brauchbares. Ich nutze diesen Chip und Treiber für eine USB 2 RS485 Schnittstelle und das gute für dich ist, dass das funktioniert. Gruß snuz P.S. Screenshot ist das VI meines USB2RS485 Konverters (Gerät normal unter Windows installiert) RE: Datenkomunikation mittels USB - Takuro - 25.05.2011 15:50 Hallo, nochmal danke für die Antwort. MAX kannte ich als Abkürzung nicht, dort taucht mein Gerät aber auf und ich kann es auch ansteuern. Leider kann ich nach dem Wizard nun nicht mehr mit der mitgelieferten Software auf das Gerät zugreifen, da dieses nicht mehr unter "USB-Devices" auftaucht. Das Programm beendet sich weil das Gerät angeblich nicht angeschloßen ist. Wenn ich das Problem lösen könnte, kann ich vielleicht durch unterschiedliche Einstellungen erkennen, welche Werte im Logger was auslösen. Was in dem oberen Bild falsch ist, weiß ich leider nicht. Ich habe eine numerische Konstante genommen und dabei den Typ sich an den Wert anpassen lassen. Dabei ist dann das rausgekommen. Steuerbefehle vom Hersteller müsste ich doch hier von ELV wenn bekommen, nicht vom Chip-Hersteller, richtig? Importieren der .dll ging nur Teilweise. Er hat irgendwie 12 von 72 Funktionen implementieren können. Bei den anderen fehlen ihm im Header immer Definitionen, z.B. ftHandle. Daraufhin hab ich mich mit dem Header auseinander gesetzt, hab versucht herauszufinden, was die Funktionen(übernehmbare und die anderen) unterscheidet. Ich krieg es aber leider nicht raus. Ich habe auch den neuesten Treiber nochmal gedownloaded, aber dabei hatte ich das gleiche Ergebniss. Es fehlen halt auch so elementare Funktionen wie FT_Open und FT_Close. Ich habe mir dein VI angeschaut. Wenn ich bei mir den Seriellen Knoten nehme, dann meckert er mit der angezeigten USB Adresse. Beim stöbern im Internet hab ich gesehen, dass wenn mein Port mit "raw" endet, ich dann auf ganz niedrigem level das anspechen muss. Stimmt das so? Und gibt es vielleicht eine gute Idee, was ich weiter machen kann? Wie kann bei dir der Treiber in LabView funktionieren, wenn der Assistent den bei mir großteils ablehnt? Ich meine, du bist wesentlich besser, aber der Assistent ist doch der gleiche. Oder hast du was am Treiber geändert? Ich dachte mir, dass der ja so bei vielen Leuten funktioniert, da ist ändern wohl keine gute Idee. Ich hoffe auf weiteren Input. Beste Grüße, Takuro RE: Datenkomunikation mittels USB - jg - 25.05.2011 21:02 Also für die D2XX-DLL von FTDI gibt es hier auch LabVIEW-VIs. Ein Problem bleibt aber: Ohne Doku ist es sehr schwer herauszufinden, wie und was du an dein Gerät schicken musst, damit es das tut, was du gerne hättest. Gruß, Jens RE: Datenkomunikation mittels USB - snuz - 26.05.2011 07:23 Hallo Takuro, (25.05.2011 15:50 )Takuro schrieb: nochmal danke für die Antwort. MAX kannte ich als Abkürzung nicht, dort taucht mein Gerät aber auf und ich kann es auch ansteuern. Leider kann ich nach dem Wizard nun nicht mehr mit der mitgelieferten Software auf das Gerät zugreifen, da dieses nicht mehr unter "USB-Devices" auftaucht. Das Programm beendet sich weil das Gerät angeblich nicht angeschloßen ist. Wenn ich das Problem lösen könnte, kann ich vielleicht durch unterschiedliche Einstellungen erkennen, welche Werte im Logger was auslösen.Ja das ist leider so, wenn Du das Gerät in LabView auf diese Art einbindest. (25.05.2011 15:50 )Takuro schrieb: Was in dem oberen Bild falsch ist, weiß ich leider nicht. Ich habe eine numerische Konstante genommen und dabei den Typ sich an den Wert anpassen lassen. Dabei ist dann das rausgekommen.Nimm hier mal nur eine numerische Konstante und probiere es aus vielleicht ist hier schon die Lösung. (25.05.2011 15:50 )Takuro schrieb: Steuerbefehle vom Hersteller müsste ich doch hier von ELV wenn bekommen, nicht vom Chip-Hersteller, richtig?Jaein, Du kommunizierst mit dem Chip von FTDI dieser gibt an sich nur die Daten weiter die "er" wiederum bekommt. Aber bei deinem Datenlogger gibt es ja auch die Software (ich vermute jetzt mal das die ELV geschrieben hat) und somit müsste auch ELV wissen welche Befehle Du senden musst. Es ist nicht immer einfach vom Hersteller (ELV) an solche Befehle heranzukommen - ein Versuch ist es aber immer Wert. Kannst Du erkennen welche Bezeichnung der Chip von FTDI hat? Ist es der FT232BL? Oder ein anderer - über datasheet.com kannst Du dir das Datenblatt des Chips anschauen, vielleicht findest Du da Befehle (beim FT232BL sind keine da). (25.05.2011 15:50 )Takuro schrieb: Importieren der .dll ging nur Teilweise. Er hat irgendwie 12 von 72 Funktionen implementieren können. Bei den anderen fehlen ihm im Header immer Definitionen, z.B. ftHandle. Daraufhin hab ich mich mit dem Header auseinander gesetzt, hab versucht herauszufinden, was die Funktionen(übernehmbare und die anderen) unterscheidet. Ich krieg es aber leider nicht raus. Ich habe auch den neuesten Treiber nochmal gedownloaded, aber dabei hatte ich das gleiche Ergebniss. Es fehlen halt auch so elementare Funktionen wie FT_Open und FT_Close.Gut, dann ist das vermutlich eine Sackgasse. (25.05.2011 15:50 )Takuro schrieb: Ich habe mir dein VI angeschaut. Wenn ich bei mir den Seriellen Knoten nehme, dann meckert er mit der angezeigten USB Adresse. Beim stöbern im Internet hab ich gesehen, dass wenn mein Port mit "raw" endet, ich dann auf ganz niedrigem level das anspechen muss. Stimmt das so? Und gibt es vielleicht eine gute Idee, was ich weiter machen kann? Wie kann bei dir der Treiber in LabView funktionieren, wenn der Assistent den bei mir großteils ablehnt? Ich meine, du bist wesentlich besser, aber der Assistent ist doch der gleiche. Oder hast du was am Treiber geändert? Ich dachte mir, dass der ja so bei vielen Leuten funktioniert, da ist ändern wohl keine gute Idee.Ok, also am Treiber habe ich nichts geändert. Ich habe das Gerät normal eingebunden über Windows mit dem dazu gelieferten Treiber (s.B. Nr.1), das Gerät erscheint als USB Serial Port (Com21). Danach habe ich das Gerät einfach in LabView eingebunden. Als "VISA-Ressourcenname" gibst Du nicht USB0::0x4242::0x0002::NI-VISA-0::RAW ein, Du erstellst dafür einfach ein Bedienelement. Das hat den Vorteil, dass LabView automatisch nach Geräten sucht und dir zur Verfügung stellt und dann wählst Du das Gerät aus - natürlich vergewissern das Du im Gerätemanager das Richtige kennst. Ich benutze den FT232BL, zur Kommunikation für RS485 ich brauche also nur mir das Gerät in LabView zu öffnen und Daten "drauf" zuschreiben und diese werden dann auch von dem Gerät / Schnittstelle gesendet, umgekehrt (lesen) geht genauso. Du müsstest jetzt erstmal den schon bereits erwähnten roten Punkt wegbekommen und eine normale numerische Konstante (U32) nehmen und diese Möglichkeit überprüfen. Wenn das nicht klappt, entferne das Gerät aus dem Geräte Manager und installiere es neu über Windows. Greife darauf zu wie im zweiten Bild, und erstelle an "VISA-Ressourcenname" ein Bedienelement und wähle das Gerät aus (s.B. drei). Dann versuch einfach von dem Gerät zu lesen (wie im Bild zwei). Nach dem Bild von ELV zu urteilen, ist der Chip FT232BM, also der gleiche Chip den ich benutze (BM / BL ist dabei nicht relavant). Gruß snuz P.S. als was wird dein Datenlogger im Gerätemanager angezeigt wird wäre evtl. noch hilfreich P.S.S. was steht auf dem größeren Chip der über dem FT232BM ist? Das ist der Mikrocontroller, und "unser" Chip kommuniziert mit diesem. Da das ein Mikrocontroller ist kann man über datasheet.com dort Befehle nach gucken. Die Beiden kommunizieren über die RS232 Schnittstelle. RE: Datenkomunikation mittels USB - Takuro - 31.05.2011 13:17 Hallo, das Teil wiedersetzt sich allen Versuchen. Es wurde nun beschloßen, da auch keine genauen Befehle für die Box aufzutreiben waren, einen neuen Sensor zu integrieren. Damit muss diese Box nicht mehr eingebunden werden. Ich bedanke mich für die viele Hilfe, wenn ich Zeit hab werde ich mich weiter damit auseinandersetzten. den es kratzt ja am Stolz, wenn sowas partu nicht reagieren will. Grüße, Takuro |