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!
Zitat:Aber gehe ich in der Annahme richtig aus, dass ich mit dem heruntergeladenen Gerätetreiber alle Funktionen per LabView steuern kann? Es sieht ja schon nach einem fertigem Programm aus.
Jein. Ein Gerätetreiber bietet erst einmal nur Funktionen, mit denen bestimmte Aspekte des Gerätes fernbedient werden können. Die sinnvolle Verknüpfung dieser Funktionen musst du schon selbst übernehmen. Aber: meist gibt es (mehr oder weniger gute/vollständige) Beispiel-VIs in diesen Treiber-Paketen, die dir wenigstens den Einstieg erleichtern sollen...
Zitat:muss ich mit MAX die Schnittstelle noch installieren oder sowas ähnliches
Ich gehe davon aus, dass du LabVIEW inklusive der DeviceDriver-CD installiert hast. Dann hast du nämlich Zugriff sowohl auf die DAQmx- als auch die VISA-Funktionen von LabVIEW. Mit MAX musst du hier nichts installieren!
Zitat:Und kannst du mir nochmal erklären wo der Unterschied zwischen VISA und DAQmx besteht und warum ich das Gerät dann mit VISA ansteuern soll?
Mittels DAQmx hat man Zugriff auf die NI-Hardware - und auch nur diese!
Geräte/Hardware anderer Hersteller bringen entweder ihren eigenen Treiber mit (ULx bei RedLab und Konsorten) oder sind generell über eine der PC-Schnittstellen (wie RS232, GPIB, LAN, USB, etc.) angebunden. Und für alle diese Schnittstellen ist VISA zuständig!
Mein Problem ist halt, dass ich nicht so recht weiß wie ich anfangen soll. Ich hab schonmal verstanden, dass ich aufgrund meiner Schnittstelle es mit VISA machen muss. Die wichtigsten Befehle hab ich aus dem Manuel vom Gerät. Diese sind aber einfach als Code dargestellt, anbei ist ein Beispiel für c++
Ich verstehe nun nicht wie ich diese Befehle auch in labview angeben kann. Kannst du mit da helfen. Am besten wäre einfach ein Beispielprgramm an dem ich mich orientieren kann, denn das Beispielprogramm vom Gerätetreiber ist so verschachtelt, dass ich als Anfänger einfach nicht verstehe was da gemacht wird
12.11.2012, 13:30 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2012 13:36 von GerdW.)
Zitat:Die wichtigsten Befehle hab ich aus dem Manuel vom Gerät. Diese sind aber einfach als Code dargestellt, anbei ist ein Beispiel für c++
Das Prinzip ist bei LabVIEW aber das gleiche: Befehl (wie im Manual beschrieben) zum Gerät schicken und Antwort (wie im Manual beschrieben) zurückerhalten und auswerten.
Zitat:Ich verstehe nun nicht wie ich diese Befehle auch in labview angeben kann.
VISA arbeitet mit Strings - und genau diese stehen im Manual...
Zitat:das Beispielprogramm vom Gerätetreiber ist so verschachtelt, dass ich als Anfänger einfach nicht verstehe was da gemacht wird
Guck dir die einzelnen VIs an, in denen Befehle zum Gerät geschickt werden und die Antwort ausgewertet wird! Vergleiche das mit den Angaben im Manual, um zu verstehen, was dort warum gemacht wird...
Wenn wir hier beide von dem "Treiber" reden, der weiter oben verlinkt war:
Dies ist ein sehr altes Beispiel - und leider (aus heutiger Sicht) sehr hässlich programmiert.
Die darin enthaltenen SendMessage/ReceiveMessage-VIs sollten durch die entsprechenden VISA-Aufrufe ersetzt werden. Hauptpunkt ist aber: es wird gezeigt, wie man einen Befehl für das Gerät zusammensetzt und abschickt...
Hab mir nun anhand der Beispiele vom Gerätetreiber und der Erklärung zu den Befehlen aus dem manuel ein Programm mit den ganzen Ein- und Ausgaben zusammengestellt.
Ich muss natürlich zugeben, dass ich noch nicht alle Befehle verstehe und mir das Programm noch im Detail anschauen muss.
Ich möchte nur wissen, ob ich die Programmteile richtig zusammengefügt habe und es so funktionieren könnte, wenn ich das Gerät anschließe.
Zur Zeit glaub ich da irgendwie nicht dran, weil die folgenden Fehlermeldungen kommen:
LabVIEW: An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @. ========================= NI-488: Command requires GPIB Controller to be Controller-In-Charge.
VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.
Das Originalprogramm (zip datei) und meine zusammengesetzte Datei hab ich beigefügt.
Wäre super, wenn ihr mal drüberschauen könntet um mir zu sagen wo ich die Fehler habe
Danke!
13.11.2012, 09:01 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2012 11:32 von GerdW.)
1) Es gibt einen Aufräumknopf, den man durchaus benutzen sollte, bevor man VIs postet...
2) Man kann die VISA-Resource durchverdrahten statt Abzweigungen im Draht zu erstellen...
3) Sonst sieht das VI gut aus (ich habe mir nicht die Mühe gemacht, die Befehle zu kontrollieren)
Wichtigster Punkt:
4) Welche VISA Resource hast du denn eingestellt? Gibt es das Gerät überhaupt an dieser Adresse?
@Jens (Beitrag#16):
Lt. (schnell überflogenem) Manual macht das Gerät keine Unterscheidung der Schnittstelle, was die Befehle angeht...
1) Hatte zwar gegoogelt, aber nicht gefunden: wo gibt es den Aufräumknopf?
2) Wie kann ich sehen für welche Schnittstelle der Gerätetreiber ist und wie müsste ich das Programm ändern, wenn ich statt GPIB RS232 nutze?
Wie ich erfahren habe muss ich die RS232 Schnittstelle nutzen. Wie kann ich prüfen, ob ich dieses Programm auch für diese Schnittstelle verwenden kann?
Danke für die Hilfe!
13.11.2012, 11:31 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2012 11:31 von GerdW.)
2) Wie schon geschrieben: Dein Gerät unterscheidet die Befehle nicht nach Schnittstelle. Dementsprechend kannst du für beide Schnittstellen VISA nutzen - du musst nur die richtige Adresse im VISAResource-Control angeben...
Zitat:wie müsste ich das Programm ändern, wenn ich statt GPIB RS232 nutze?
Gar nicht.
Zitat:Wie ich erfahren habe muss ich die RS232 Schnittstelle nutzen.
Wer sagt das?
Zitat:Wie kann ich prüfen, ob ich dieses Programm auch für diese Schnittstelle verwenden kann?
Zitat:wie müsste ich das Programm ändern, wenn ich statt GPIB RS232 nutze?
Gar nicht.
Das ist so ein bischen pauschal wenngleich in vielen Fällen korrekt. Viele Instrumente mit RS232 und GPIB und/oder TCP/IP verwenden zwar grundsätzlich die selben Befehle aber man muss schon gewisse Dinge beachten.
So ist es bei GPIB meist nicht nötig um einen Befehl mit einem bestimmten Character abzuschliessen, da der GPIB Bus eine eigens dafür vorgesehene Handshakeleitung hat, um dem Gerät mitzuteilen dass das letzte Byte einer Message übertragen wird. Bei RS232 und TCP/IP gibt es diese Handshakeleitung prinzipbedingt nicht und muss man andere Methoden wählen. Typischerweise ist das das Anfügen eines bestimmten Characters ans Ende jeder Message, meist <CR> und/oder <LF>. Fast alle Instrumente die neben GPIB auch eine andere Schnittstelle unterstützen akzeptieren aber diesen Ende Character auch bei Kommandos die über GPIB gesendet werden, so dass der Treiber hier keine Unterscheidung zu machen braucht.
Andere Gebiete wo das Prinzip gleiche Befehle für GPIB und andere Interfaces nicht immer aufgeht sind zum Beispiel ServiceRequest (SRQ) Abhandlung. GPIB unterstützt hier mit speziellen Leitungen eine hardwareunterstützte Abhandlung davon, die wie ein richtiger Interrupt funktionieren kann, bei anderen Interfaces muss man das immer mit Polling simulieren. Aber hier handelt es sich um fortgeschrittene Konzepte. ServiceRequest Unterstützung im Treiber is zwar gewaltig wenn man grosse Messsysteme bauen muss, da man damit wirklich sehr schnelle Reaktionszeiten erreichen kann, aber es ist auch sehr komplex um das richtig zum laufen zu bringen.
Für die meisten Versuche mit Instrumenten die nicht für sehr komplexe Messaufbauten gedacht sind, ist aber nur der zuerst angesprochene Endecharacter wirklich etwas das man unbedingt beachten muss.
Vielen dank für die ausführlichen Antworten. Ich hatte das Programm nun getestet und leider funktioniert es nicht. Ich glaube entweder wird das Gerät nicht erkannt oder ich hab Probleme bei Visa write.
Was genau muss ich bei Visa Ressource einstellen? Kann vielleicht einer das VI, das ich vorhin gepostet habe kurz anschauen und mir sagen was ich alles für eine rs232 Schnittstelle ändern muss.