INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Geschwindigkeitsproblem, VISA Kommunikation mit Messbox U2351A Keysight



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!

18.01.2016, 14:17 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2016 14:38 von m.werle.)
Beitrag #4

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: Geschwindigkeitsproblem, VISA Kommunikation mit Messbox U2351A Keysight
Vielen Dank für die schnelle Rückmeldung. Bin seitdem leider nicht zum Programmieren gekommen.

Kurzinfo zu den VIs:
VISA_Test.vi liest in einer Schleife die AI und DI Daten aus der Messbox aus und liefert die Daten via Notifier an das VI DAQ_Plausi_Add.vi. DAQ_PLausi_Add.vi verarbeitet die Daten nochmals.

(13.01.2016 16:04 )GerdW schrieb:  Hallo m.,
- Deine Messwertabfragen erfolgen seriell (AI & DI). Bei DAQmx erfolgt sowas üblicherweise parallel in zwei DAQmxTasks: wäre das auch bei Agilent möglich? Andererseits wird hier eine VISA-Verbindung genutzt (warscheinlich ein serieller Port?), sodass die Abfragen auch seriell durchgeführt werden müssen…
Mh. Ich weiß nicht genau, ob die DI und AI Datenerfassung in zwei seperaten Tasks parallel möglich ist.

(13.01.2016 16:04 )GerdW schrieb:  - Du machst einige Dinge recht umständlich - und das auch in jeder Iteration! Muss man wirklich Waveforms erstellen, die nur genau ein Sample enthalten (AI_Anpassen_Waveformformat)? Muss man Werte aus einem 2D-Array einzeln mit einer Schleife auslesen, wenn man auch ArraySubset nutzen könnte (gleiches VI)? Hier auch: BuildArray statt InsterIntoArray verwenden…
So, ok, danke. Ein bisschen angepasst und verbessert. Am Ende bleibt jedoch ein Waveform-Format, damit ich neben dem (gemittelten Messwert) auch einen Zeitstempel habe.

(13.01.2016 16:04 )GerdW schrieb:  - Aus dem hier erzeugten Waveform-Array holst du dreimal die gleiche Waveform, um deren Avg, RMS, Peak zu bestimmen. Muss man dafür jedesmal einen eigenen Buffer anlegen? Würde nicht ein Buffer ausreichen und man macht nur die drei unterschiedlichen Berechnungen daran? Außerdem werden diese VIs mit einer Waveform gefüttert, die nur genau ein Sample enthält - sieht für mich nach Overkill aus…
- Aus Avg/RMS/Peak werden wiederum Waveforms erstellt, die nur genau ein Sample enthalten…
- Einen Peakwert könnte man auch mit ArrayMax(Abs(array)) bestimmen…
- Eigentlich zwei unterschiedliche Waveforms, hatte nur den Index noch nicht eingestellt.
Aber du hast Recht, aus den AVG/RMS/Peak-Werten mache ich ebenfalls eine Waveform mit nur einem Sample.
Ich möchte in meiner Anzeige ein Chart mit vielen verschiedenen Plots anzeigen. Deshalb bringe ich all die anzuzeigenden Werte in Waveform Format und bündel diese dann als 1D Array.
- Peak habe ich jetzt mit dem Array Min/Max VI bestimmt.

(13.01.2016 16:04 )GerdW schrieb:  - Das "DI_Anpassen_Boolformat ist auch recht umständlich: ein einfaches UND mit einer passenden numerischen Konstante udn ein nachfolgender Vergleich auf <>0 reicht locker aus. Beispiel für Bit 4: Bit4 := (x AND 16) <> 0…
Danke für den Tipp, wird angepasst.


(13.01.2016 16:04 )GerdW schrieb:  Wie (über welche Schnittstelle) ist das Messgerät angebunden? Wie hoch ist die Datenrate, wie sind die Latenzzeiten des Messgerätes? Das trägt auch zur Schleifenzeit bei…
USB
Max. Samplingrate der Messbox liegt laut Datenblatt bei 250kSamples/s für einen AI-Channel. Bei 3 AI Channel allerdings bei einem drittel davon je Channel.

(13.01.2016 16:04 )GerdW schrieb:  Allgemeiner Tipp: Wenn es Probleme bei der Rechengeschwindigkeit gibt, hat sich die Producer-Consumer-Struktur bewährt! Man trennt Datenerfassung von Datenverarbeitung von Datenspeicherung…

P.S.: es ist immer hilfreich, das HauptVI auch entsprechend zu benennen: man findet es dann auch wesentlich leichter… Wink
Daher VISA_Test.vi für die Datenerfassung. (Daten per Notifier an DAQ_Plausi_Add.vi)
DAQ_Plausi_Add.vi für die Plausiprüfungen und Datenweiterverarbeitung (Daten per Queue an Anzeige.vi)
Anzeige.vi für die Anzeige und die Datenspeicherung (Nicht hochgeladen)

VISA_Test.vi wird wohl noch in DAQ_Main.vi umbenannt.


Das Programm funktioniert schlechter wie letzte Woche. Ahrg1 Irgendwie haben sich so einige Fehler eingeschlichen, die letzte Woche noch nicht da waren. Ich bin etwas am rätseln.
Folgenden 3 Fehler sind aufgetaucht: (Meist ist es der erste aufgelistete Timeoutfehler)
Leider funktioniert die Datenerfassung manchmal, manchmal nicht. Die meisten Schleifeniterationen sind Timeouts und brauchen etwas mehr wie die 10s Timeoutgrenze. Zwischendurch kommt es aber immer wieder zu schnellen, fehlerfreien Schleifendurchläufen.
Das AI-Example VI aus den ExampleVIs der Instrument Library funktioniert auch nicht. :bahnhof:

Edit: Oh, das liegt wohl nicht einfach an LabVIEW. Habe Probleme überhaupt mit der Messbox zu kommunizieren.
Wird nur als unbekanntes USB-Gerät identifiziert. Werde mal den Rechner neustarten und schauen, warum das denn der Fall ist.
Edit2: Hat sich komplett geklärt. War vielleicht ein Wackler im USB-Port oder so etwas. Ahrg1

Die 100ms Grenze bleibt trotzdem erhalten. Ist aber auch so beim Example VI für "continous AI data aquisition" aus der Instrumentdriver library so, dass das nicht schneller geht. (Bzw. minimal schneller auf ca. 60 bis 70ms pro Update)

Dann hat sich das fürs erste mal geklärt.


Fehlerliste:
Zitat:Error -1073807346 occurred at VISA Open in Agilent U2300 Series.lvlib:Initialize.vi->VISA_AI_Initialize.vi->VISA_TEST.vi

Possible reason(s):

VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.

Zitat:Error -1073807339 occurred at VISA Read in Agilent U2300 Series.lvlib:Error Query.vi->Agilent U2300 Series.lvlib:Read (AI Waveform Multiple Channels).vi->Agilent U2300 Series AI Continuous Acquisition.vi

Possible reason(s):

VISA: (Hex 0xBFFF0015) Timeout expired before operation completed.

Zitat:Error -1074000000
Agilent U2300 Series.lvlib:Error Query.vi<ERR>
Instrument reports:
-410,"Query INTERRUPTED"
+0,"No error"

<b>Complete call chain:</b>
Agilent U2300 Series.lvlib:Error Query.vi
Agilent U2300 Series.lvlib:Retrieve Waveform Information.vi
Agilent U2300 Series.lvlib:Read (AI Waveform Multiple Channels).vi
VISA_TEST.vi

Zitat:Error 85 occurred at Scan From String (arg 1) in Agilent U2300 Series.lvlib:Retrieve Waveform Information.vi->Agilent U2300 Series.lvlib:Read (AI Waveform Multiple Channels).vi->VISA_TEST.vi
Possible reason(s):

LabVIEW: Scan failed. The input string does not contain data in the expected format.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: Geschwindigkeitsproblem, VISA Kommunikation mit Messbox U2351A Keysight - m.werle - 18.01.2016 14:17

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  VISA TCP/IP Kommunikation Enrico01 8 7.800 22.10.2019 13:41
Letzter Beitrag: jahu
  Keysight A34980A Infinty Scan Fetch Timeout Wolferl 3 3.881 09.08.2018 10:18
Letzter Beitrag: GerdW
  Keysight 33500B Series Waveform xxokiehxx 5 5.600 08.02.2018 11:33
Letzter Beitrag: xxokiehxx
  Kommunikation zwischen Labview und Bronhorst Massendurchflussregler durch VISA Atlaspremier 7 6.832 14.07.2016 15:51
Letzter Beitrag: Atlaspremier
  Agilent/Keysight N9310A USB Treiber hansi9990 7 7.754 17.02.2016 18:35
Letzter Beitrag: hansi9990
  U2351A VISA Kommunikation 3 Channel AI Reihenfolge random m.werle 1 4.495 20.01.2016 16:10
Letzter Beitrag: m.werle

Gehe zu: