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 

Unstetiger Sinus Verlauf mit Analoger Eingabekarte



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!

08.03.2006, 20:32
Beitrag #1

mAcRiX Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Mar 2006



kA



Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Hallo zusammen!

Ich arbeite mit LabVIEW 7.1 und der analogen Eingabekarte ACPI-3001 von Addi-Data, die maximal 100kS schafft. Der PC läuft mit 3GHz und hat 1GB Ram.

Nun möchte ich kontinuierlich Spannungswerte einlesen, die momentan noch nicht vom Prüfstand, sondern zum Test von einem Funktionsgenerator stammen.
Es sollen Sinus - Signale sein mit einer Frequenz von etwa 30Hz, mit 60 Messwerten pro Periode macht das etwa 2000 Messwerte pro Sekunde.

Momentan benutze ich eine Funktion "Read1AnalogInput", die in einer For-Schleife etwa 10.000 mal ausgeführt wird. Die Messwerte werden in einem Signalverlaufs-Diagramm angezeigt.

Nur weist dieses Diagramm in regelmäßigen Abständen Unstetigkeiten auf, das heißt ich bekomme etwa 100-150 Werte am Stück und dann fehlen einige und die Kurve beginnt am nächsten Messpunkt ein Stück höher oder niedriger, je nachdem in welcher Phase sich der Sinus befindet.

Meine Theorie darüber ist, dass die Karte die Daten im internen Speicher ablegt, LabVIEW die Daten nicht schnell genug ausliest und deswegen der Puffer geleert wird und erst beim Neubeschreiben neue Messwerte in den PC-RAM übermittelt werden

Was gäbe es für möglichste einfache / elegante Varianten, dies zu unterdrücken?

Danke für die Hilfe!

Mfg
mAcRiX
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.03.2006, 22:27
Beitrag #2

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Die Karte sagt mir nichts, jedoch gehe ich davon aus, dass die DMA kann.
Somit ist Sie CPU unabhaengig was die Uebertragung vom FIFO der Karte in den RAM angeht.
Problem besteht nun in LV, dass es sich die Daten vom vordefinierten Bereich im RAM die Werte abholen muss und in den "LV-Speicherbereich im RAM" verschiebt.

Folgende theoretischen Sachen koennten Fruechte tragen:
- Empfangsbuffer um das x-fache erhoehen
- Evtl. mit der Option Defer Front Panel Updates arbeiten

Problem bei Graphen ist, dass das FP komplett neu gezeichnet werden muss - hier solltest dir evtl. ueberlegen, ob es net ausreicht, wenn das FP nur alle 2 oder 3 Iterationen upgedatet wird.
Dazu kommt noch, dass das Diagramm eine "stark" endliche Anzahl an Werte speichern bzw. aufnehmen kann - evtl. waere an dieser Stelle eine offline Datensichtung noch besser.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2006, 22:55
Beitrag #3

mAcRiX Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Mar 2006



kA



Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Danke für die schnelle Antwort!

Ja, die Karte unterstützt DMA.

Zu 2.
Wie könnte ich die Daten möglichst ohne Umwege vom FIFO in eine lesbare Datei schreiben, so dass ich überprüfen kann, ob vielleicht das Diagramm das Problem darstellt?
In LV müsste ich doch dann einen Array verwenden, der wiederum Verschiebungen im Speicher zur Folge hätte.

Zu 1.
Welchen Empfangsbuffer meinst du?
Den im RAM, in dem die Werte vom FIFO kommen? Hat das dann etwas mit DMA zu tun? Und könnte ich die Daten vielleicht packetweise übermitteln, wenn der FIFO voll ist, vielleicht über eine Interruptsteuerung?

Mfg
mAcRiX
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2006, 23:04
Beitrag #4

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
wenn die Karte DMA unterstuetzt, kann sie auch auf alle Faelle IRQ, die Frage ist nur, wie du diesen aktivierst.
Bei NI Karten kannst du relativ einfach die Anzahl der Werte im FIFO abfragen und dann spezifiziert uebertragen...
Die Karte transferiert per DMA die Werte in einen vordefinierten Bereich im RAM, der von LV gelesen wird (aber nicht beschrieben werden kann!)
Du kannst dir relativ einfach per disk-streaming die werte in eine Datei schreiben.
vor der schleife die Referenz auf die Datei oeffnen -> innerhalb der Schleife nur schreiben und nachdem die Schleife feddich ist die Referenz wieder schließen.

Wenn du ein Array vorinitialisierst und immer Teilarrays ersetzt, greifst du immer auf den gleichen Speicherbereich zurueck, sprich du machst keine Spiegelung oder sonstiges...
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2006, 23:13
Beitrag #5

mAcRiX Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Mar 2006



kA



Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Ok, danke!

Dann werde ich es morgen gleich mal ausprobieren, wenn ich wieder in der Uni bin.

Zuerst werde ich versuchen, die Daten ohne Diagramm in eine Datei umzuleiten;
falls das keine Besserung bringt, werde ich mich an die blockweise Übertragung der Daten per DMA ranmachen!

Mfg
mAcRiX
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2006, 07:27
Beitrag #6

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
aem bevor du auf IRQ umsteigst solltest evtl. noch etwas effektiveres ausprobieren -> hol groeßere Pakete im RAM ab, net direkt am FIFO!
Sprich, Emfpangsbuffer im RAM groeßer machen (x-fach der abgeholten Paketgroeßen) und dadurch hoehere Effektivitaet rein zu bringen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.03.2006, 08:12
Beitrag #7

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
wenn ich das in Post Nummer 1 richtig gelesen hab, dann benutzt du eine Funktion "Read1AnalogInput" und die läßt du in einer for Schleife laufen.

es ist nur eine Vermutung, aber ich vermute, dass Read1AnalogInput sowas wie EINEN Messwert erfassen bedeutet. Konkret: die Karte wird initialisiert, der Messwert wird aufgenommen, die Karte wird deinitialisiert. Und das machst du in einer For-Schleife 10.000 mal ... das quasi eine sofware-getimte erfassung, und es wundert mich nicht dass das hakt ...

Ich vermute, dass die Aussetzter daher kommen, dass Windows grade Zeit für irgendetwas anderes beansprucht und dein Programm halt eben mal warten muss.

Ich vermute auch stark, dass du keine "wait for next millisecond multiple" in deiner for-schleife hast? und ich vermute, dass deine Systemlast während der Erfassung auf 100% steht?

Wenn ich mit meiner Vermutung richtig liege, dann gibt es folgendes zur Abhilfe: lies dir das Handbuch deiner Messkarte durch und programmiere eine kontinuierliche Messdatenerfassung. Bei DAQmx ginge das ungefähr so: task anlegen, kanäle hinzufügen, samplerate auf z.B. 2000 Hz, continuierliche Datenerfassung, task starten, in einer while schleife softwaregetaktet die messwerte z.B. in 100 Samples blöcken abholen (= hardware-getimed), irgendwann schleife beenden, erfassung stoppen, task schließen.

vielleicht gibt es ja auf der Homepage des Herstelles ein Beispiel?

Grüße
CB

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2006, 10:37
Beitrag #8

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
das mit 1 wert daacht ich mir am anfang auch, jedoch passt dann diese zeile absolut nicht dazu:

Zitat:Nur weist dieses Diagramm in regelmäßigen Abständen Unstetigkeiten auf, das heißt ich bekomme etwa 100-150 Werte am Stück und dann fehlen einige und die Kurve beginnt am nächsten Messpunkt ein Stück höher oder niedriger, je nachdem in welcher Phase sich der Sinus befindet.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2006, 13:41
Beitrag #9

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
freedive schrieb:das mit 1 wert daacht ich mir am anfang auch, jedoch passt dann diese zeile absolut nicht dazu:

Zitat:Nur weist dieses Diagramm in regelmäßigen Abständen Unstetigkeiten auf, das heißt ich bekomme etwa 100-150 Werte am Stück und dann fehlen einige und die Kurve beginnt am nächsten Messpunkt ein Stück höher oder niedriger, je nachdem in welcher Phase sich der Sinus befindet.

genau deswegen hatte ich die Vermutung: für einen bestimmten Zeitraum hat LabVIEW die höchste Priorität und sampelt mit der SinglePoint funktion, so schnell es kann. Dann gibt Windows einem anderen Thread die Prio und das Sampling wird so lange ausgesetzt, bis LabVIEW wieder Prio 1 hat. Da der reale Sinuns in der Zeit natürlich "weiterläuft", sieht man einen Absatz, weil man quasi eine "Sample-Pause" macht.

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2006, 14:20
Beitrag #10

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
was aber per dma net passieren kann, weil er bei einem overflow sofort meckern wuerde...
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sinus Sweep Auswerten janso 1 2.722 03.11.2020 16:55
Letzter Beitrag: Freddy
  Frequenzermittlung aus digitalem Signal Verlauf MicroScoop 12 7.293 09.10.2019 06:22
Letzter Beitrag: Achim
  Encoder - Sinus / Cosinus auswerten nxitimi 17 15.579 25.01.2018 19:26
Letzter Beitrag: Lucki
  Sinus unterbrechungsfrei ausgeben Chris_EG2 5 5.164 29.07.2015 13:29
Letzter Beitrag: GerdW
  Druckmessung Verlauf in Sekunden cobain2004 8 7.361 10.07.2014 13:26
Letzter Beitrag: cobain2004
  Falsche Werte durch paralleles Einlesen digitaler und analoger Werte daxel 13 13.173 20.08.2013 12:03
Letzter Beitrag: daxel

Gehe zu: