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 

InPort / OutPort zu langsam



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!

04.09.2006, 12:20
Beitrag #1

zhost Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2006

8
2005
kA


Deutschland
InPort / OutPort zu langsam
<div align="left">Hallo,

ich lese per LabVIEW über eine I/O-Karte den Buffer eines Meßgerätes aus. Dieser Buffer besteht aus 65536 Words. Zum Auslesen muß ich an den Control-Port der I/O-Karte (0x282) eine 1 schreiben und unmittelbar danach eine 0, damit vom Meßgerät das nächste Word an die Schnittstelle gesendet wird und dann mittels InPort16 gelesen werden kann.

Um den gesamten Buffer des Meßgerätes zu lesen, muß ich also nacheinander alle 65536 Words sequentiell lesen, was - wie im angehängten Vi ersichtlich - mit einer for-Schleife passiert.

Das Problem ist nur, daß dies unglaublich langsam passiert. Ein einmaliges Einlesen des Buffers dauert größenordnungsmäßig 1-1,5 Sekunden, tolerierbar wären aber höchstens 0,1 Sekunde.

Hat jemand eine gute Idee?

Gruß,
Michael
</div>

<div align="left">Und ich sollte noch erwähnen, daß das ganze auf einem Rechner mit Windows XP passiert und die I/O-Karte eine ISA-Karte ist ...</div>


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.09.2006, 17:44
Beitrag #2

A.Berndsen Offline
LVF-Team
LVF-Team

Beiträge: 2.437
Registriert seit: Feb 2005

8.2.1 - 2011
2004
DE

724xx
Deutschland
InPort / OutPort zu langsam
Hallo Michael,

so wie ich das sehe wird es nicht schneller gehen.
Hast Du mal in den VI-Einstellungen unter "Ausführung" die Priorität des VI's mal verändert?
Ich weiß nicht, ob das helfen könnte.

Gruß
Andreas

Geht nicht, gibts nicht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.09.2006, 17:56
Beitrag #3

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
InPort / OutPort zu langsam
EinVorschlag von mir, eine Wartezeit von 0ms in die For-Schleife zu setzen.

Gruss

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.09.2006, 18:06 (Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2006 18:06 von A.Berndsen.)
Beitrag #4

A.Berndsen Offline
LVF-Team
LVF-Team

Beiträge: 2.437
Registriert seit: Feb 2005

8.2.1 - 2011
2004
DE

724xx
Deutschland
InPort / OutPort zu langsam
Einen ähnlichen Vorschlag wollte ich auch unterbreiten. (hatte mich nur nicht getrautSmile)
Das hatte ich nämlich mal bei NI gesehen.
Wenn ein VI unter Volllast läuft erobert sich Windows ganz rüde die Herrschaft zurück.
Mit dem Timout wird WIN dann vielleicht zufrieden sein.

Gruß
Andreas

Geht nicht, gibts nicht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.09.2006, 18:18
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
InPort / OutPort zu langsam
<div align="left">Hallo, Michael,

was meines Wissens nach doch einiges an Performance kostet, ist das automatische Generieren des "Data"-Array am Ausgang der For-Schleife.

Etwas Zeitgewinn sollte es bringen, vor der For-Schleife ein Array der entsprechenden Größe zu generieren, das Array dann über ein Shift-Register in die For-Schleife zu führen und dann in der Schleife das entsprechende Element jeweils über "Replace-Array-Element" zu ersetzten.

Zumindest ist es mal einen Versuch Wert.

MfG, Jens</div>

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2006, 09:26
Beitrag #6

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
InPort / OutPort zu langsam
Was ist es für eine Karte? Vielleicht gibt es eine Möglichkeit den Takt von dieser Karte abzugreifen und eine Timed-While-Schleife statt For-Schleife zu nehmen,. dann würde eigentlich alles schneller laufen.

Aber wie es genau geht weiss ich nicht.

Gruss, Eugen


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.09.2006, 14:23
Beitrag #7

zhost Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2006

8
2005
kA


Deutschland
InPort / OutPort zu langsam
Hallo zusammen,

vielen Dank für eure Vorschläge. Ich habe alle durchprobiert und es hat leider keiner funktioniert. Es scheinen tatsächlich die VIs InPort und OutPort zu sein (oder auch nur InPort), die so langsam sind, selbst wenn ich die Priorität meiner VI so hoch setze, daß nichts anderes mehr läuft.

Prinzipiell würde ich den Teil als Alternative gerne in C schreiben. Es gab ein in Linux geschriebenes C-Programm, das genau das gleiche machte, aber 10x so schnell. Blöderweise scheint es in Win XP ja nicht mehr möglich zu sein, mit outp etc. auf die Ports direkt zuzugreifen. Naja, dann muß ich halt immer ne Stunde warten, bis das Spektrum aufgenommen istSad

Trotzdem vielen Dank für die Mühe,
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2006, 14:56 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2006 14:57 von Achim.)
Beitrag #8

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
InPort / OutPort zu langsam
Hi,

du könntest mal die "+2" aus der Schleife rausnehmen, es genügt doch, wenn das nur 1x berechnet wird...zumal da auch ne automatische Formatumwandlung stattfindet (sichtbar am grauen "Coercion Dot"), die kostet auch Zeit. Genauso solltest du die zu sendenden Daten (1 und 0) gleich im richtigen Format I32 senden, da wird nämlich auch jedes Mal umgewandelt! Vielleicht bringts ja was...

Du könntest auch noch versuchen, deine Daten mittels eines Schieberegisters zu sammeln (nicht durch "Indexing"), und versuchs mal ohne das Fehlercluster im Schieberegister!

Gruss
Achim

PS: In LV sind Beispiele vorhanden, wie der Port gelesen wird. Dort kann man Update-Raten im ms-Bereich einstellen, d.h. die Lese/Schreib-VIs sind schon für solche schnellen Lesevorgänge geeignet!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2006, 15:45 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2006 15:46 von zhost.)
Beitrag #9

zhost Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2006

8
2005
kA


Deutschland
InPort / OutPort zu langsam
' schrieb:du könntest mal die "+2" aus der Schleife rausnehmen, es genügt doch, wenn das nur 1x berechnet wird...zumal da auch ne automatische Formatumwandlung stattfindet (sichtbar am grauen "Coercion Dot"), die kostet auch Zeit. Genauso solltest du die zu sendenden Daten (1 und 0) gleich im richtigen Format I32 senden, da wird nämlich auch jedes Mal umgewandelt! Vielleicht bringts ja was...

Du könntest auch noch versuchen, deine Daten mittels eines Schieberegisters zu sammeln (nicht durch "Indexing"), und versuchs mal ohne das Fehlercluster im Schieberegister!
Alles sehr gute Ideen (daß die +2 in der Schleife war, ist ja fast schon peinlichRolleyes), aber leider hat es ebenfalls alles nichts an Zeitgewinn gebracht. Trotzdem danke!

Zitat:PS: In LV sind Beispiele vorhanden, wie der Port gelesen wird. Dort kann man Update-Raten im ms-Bereich einstellen, d.h. die Lese/Schreib-VIs sind schon für solche schnellen Lesevorgänge geeignet!
Wo finde ich diese Beispiele genau? Konnte im Ni Example Finder leider nichts passendes finden.

Viele Grüße,
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2006, 16:39
Beitrag #10

zhost Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Sep 2006

8
2005
kA


Deutschland
InPort / OutPort zu langsam
Zitat:PS: In LV sind Beispiele vorhanden, wie der Port gelesen wird. Dort kann man Update-Raten im ms-Bereich einstellen, d.h. die Lese/Schreib-VIs sind schon für solche schnellen Lesevorgänge geeignet!
Mir ist gerade aufgefallen, daß ein Lese-/Schreibvorgang tatsächlich nur 0,02 ms dauern kann (oder habe ich mich verrechnet? Ich habe 65536 Schleifendurchläufe, die insgesamt ca. 1,6 Sekunden dauern. Das macht doch 0,02 ms pro Schleifendurchlauf, oder?). Wenn ich mir diese Zahl ansehe, scheint es mir plausibel, daß es hier nicht schneller geht.

Viele Grüße,
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: