LabVIEWForum.de - Geschwindigkeit GPIB ???

LabVIEWForum.de

Normale Version: Geschwindigkeit GPIB ???
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich arbeite seit ca. 4 Wochen mit LabVIEW 8.5 Meine Anwendung ist eine Ansammlung aus drei Geräten zur Messung von Spannungswerten.
Bestehend aus 1 Netzteil( HP E3632A) 1 Multiplexer (HP 34970A) sowie einem Multimeter (HP 34401A).
Alle Geräte kommunizieren über GPIB. Die Verbindung zum PC (bzw. LabVIEW) erfolgt über einen GPIB/USB Dongle von Agilent.
Soweit so gut, jetzt zu meiner Frage:
Ich würde gerne so viele Messwerte wie möglich innerhalb von ca. 4 sec aufnehmen. Leider ist es so, das sobald ich die Schnittstellen Komunikation aufbaue das Programm sich extrem verlangsamt. Ich habe mal einen Zähler an meine while-Schleife gehängt, der macht das übel sichtbar.
So ist es mir nur möglich ca.3 Messwerte pro sec. aufzunehmen, das müsste doch schneller gehen, oder?

Ich habe mir bei National die entsprechenden Gerätetreiber und VIs für meine Geräte runtergeladen und diese auch verwendet. Ich befürchte nun das ich jeden Messwert einzeln vom Multimeter anfordere und es deshalb so lange dauert. Gibt es keine Möglichkeit das Gerät "anzustossen" das es ständig Messwerte ausgibt bis ich diesen Vorgang abbreche?

Ich habe das Vi ReadMeas vom National-Treiber mal als jpeg angehängt. Wie gesagt, es funktioniert, ist aber elend langsam

[attachment=11761]
' schrieb:Gibt es keine Möglichkeit das Gerät "anzustossen" das es ständig Messwerte ausgibt bis ich diesen Vorgang abbreche?

Ich vermute schon, der entsprechende Befehl sollte aber im Handbuch deines Messgerätes stehen...

Poste doch mal dein komplettes VI, ich vermute u.a., dass du ein bisschen zu oft die Schnittstelle öffnest und jeweils einen einzelnen Lese-Befehl in einer Schleife absetzt!
' schrieb:Ich vermute schon, der entsprechende Befehl sollte aber im Handbuch deines Messgerätes stehen...

Poste doch mal dein komplettes VI, ich vermute u.a., dass du ein bisschen zu oft die Schnittstelle öffnest und jeweils einen einzelnen Lese-Befehl in einer Schleife absetzt!


Hallo ,

ich versuche mal das Vi zu posten.
Nicht erschrecken, es ist noch recht unübersichtlich, trotzdem eine kurze Funktionsbeschreibung:
Das Programm startet im "Hand" Modus. Dort kann mit Hilfe der Kanalauswahl die Anzahl der Messkanäle ausgewählt werden.
Beim klicken auf einen Kanal kann eine Ober und Untergrenze für den Messwert eingegeben werden. Dabei wird der Multiplexer und das DMM über GPIB angesteuert.
Im Auto Modus werden die Messkanalwechsel über einen externen Trigger ausgelöst.

Vielleicht kannst du mir auch gleich ein paar Tips zum strukturierten programmieren geben, da das auf dem LabVIEW Einführungskurs nicht behandelt wurde.

Vielen Dank im voraus.......

Lv85_img
Mal ganz schnell:

Pack doch bitte alle deine Anzeigen (Messwert, Status, Grenzen) in ein Cluster "Kanal" und die Kanäle dann wieder in ein Cluster oder auch ein Array. Dann wirds mal wesentlich übersichtlicher! Und dann kannst du mit nur einem (!) InvokeNode "ReinitializeToDefault" auf's ganze Cluster bzw. Array anwenden!

Weiterhin brauchst du nur ein Event "ValueChange", das auf das ganze Cluster bzw. Array reagiert. Im Eventcase nimmst du NewValue und verarbeitest das weiter!

Mach doch mal die dunkelblaue Oberlfläche heller...Hast du schon mal was von Kontrast und/oder Benutzerfreundlichkeit gehört?

Programmiere bitte nicht größer als eine "normale" Bildschirmgröße, sonst blickt man SEHR schnell nicht mehr durch! 1280x1024 wär ganz angenehm...

Auch hier gilt mal wieder: Eine State Machine (Beispiele im Forum und im LV Example Finder) würde die Übersichtlichkeit und Flexibilität massiv erhöhen!

Warum hast du nach dem Button "Auto/Hand" eine Invertierung eingebaut? Es hätte doch ausgreicht, an der Case-Struktur die Fälle TRUE und FALSE zu tauschen...Tipp: Verwende anstelle der Booleschen Fall-Auswahl ein Enum-Auswahlfeld mit den Einstellungen "Hand" und "Auto", wenn du das direkt an die Case-Struktur anschließt wird der entsprechende Name (Fall) direkt angezeigt!

Deine SubVIs sind nicht dabei, ich kann daher nicht so richtig nachvollziehen, was du machst. Außerdem verlier ich immer die Lust, in BD rumzuscrollen um alles sehen zu können...

Für was ist das Time-Delay?

Zum lesen: So wie ich's sehe, liest du tatsächlich immer nur einen Wert...guck mal, ob du im Handbuch des DMM nicht einen Befehl zum Puffern findest, und einen zum Auslesen des Puffers!

Gruß
Achim
Referenz-URLs