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 

DAQmx Signalerfassung mit 36kHz



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.06.2009, 17:11 (Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2009 17:17 von Kerl.)
Beitrag #1

Kerl Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: May 2009

8.6
-
de

40595
Deutschland
DAQmx Signalerfassung mit 36kHz
Hallo liebe LabVIEW-Gemeinde!

Ich arbeite jetzt seit geraumer Zeit an meinem ersten LabVIEW Programm und möchte mich als erstes mal bei allen Beteiligten für dieses tolle Forum bedanken!!! Habe bereits viele viele Anfängerproblemchen durch die Suche lösen können! Nun stecke ich aber leider fest! Ich habe hier gepostet, da ich davon ausgehe, dass das Problem mit der DAQmx Datenerfassung zusammenhängt. Da dieses Programm mein erster Kontakt zu LabVIEW ist, kann ich aber auch einen Programmfehler net ausschließen... sorry!

Zum Programm:
Über einen xy-Graph soll das pV-Diagramm eines Verbrennungsmotors dargestellt werden. Das heißt, der Druck in einer Brennkammer soll über dem Hubvolumen des Zylinders dargestellt werden.
Dazu wird analog der Druck, und digital ein Nockenwellen- und Kurbelwellen-Signal erfasst.

Die Nockenwelle erzeugt einen Impuls alle zwei Umdrehungen des Motors und startet die Messung.
Die Kurbelwelle liefert über einen Drehwinkelgeber 360 Impulse pro Umdrehung.

In der "Messschleife" des Programms schiebe ich bei jedem Impuls der Kurbelwelle den aktuellen Winkel und den dazugehörigen Druck jeweils in einen 1D-Array. Nach zwei Umdrehungen des Motors (= 720 Signale der Kurbelwelle) wird die Messung beendet, und aus dem Winkel-Array wird der Hubvolumen-Array berechnet. Anschließend wartet das Programm auf das Nockenwellensignal, um erneut zu starten.

Das Problem:
Das pV-Diagramm wird zwar dargestellt, aber es "steht" nicht, sonders es sieht so aus, als ob es rotiert (um eine Achse, die in der Mitte des pV-Diagramms senkrecht verläuft). Ich vermute, dass es daran liegt, dass immer mal wieder Impulse der Kurbelwelle nicht erfasst werden. Es ist aber wichtig, dass jeder Impuls sofort erfasst wird!!! Fällt da vielleicht jemandem was zu ein!?
Ach ja, bei 6000 U/min des Motors liegt das Digitalsignal der Kurbelwelle mit 36kHz an. Die Karte kann digitale Signale bis 1MHz erfassen. Ich weiß net, wo da das Problem liegt!

Hardware:
NI PCI-6220

Würde mich freuen, wenn mir da jemand weiter helfen könnte!

Gruß,
der Kerl

Lv86_img


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .zip  pV_Diagramm.llb.lv86.zip (Größe: 40,76 KB / Downloads: 259)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.06.2009, 19:41
Beitrag #2

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
DAQmx Signalerfassung mit 36kHz
Du machst es dir da etwas einfach.

Nimm als Vorlage die Art und Weise wie das kommerzielle Tool erledigen, zB Indicom. Die erfasst kontinierlich die Daten und schreibt sie in einen Puffer, dessen Größe der Benutzer einstellen kann. Tritt jetzt ein Ereignis ein, kann ich die letzten Daten im Puffer und die noch kommenden Daten verwerten. Für dich wahrscheinlich nicht so interessant, aber die Erfassung des Drucks etc. wird durch den Kurbelwellenwinkel getriggert. Dadurch wird die zeitliche Differenz zwischen Kurbelwellenwinkel und Druck minimiert. Da das alles auf im Messsystem und nicht im OS abläuft geht das natürlich wesentlich schneller als bei dir Weiterhin kann ich sagen, ob die vollständige Messdatenerfassung mit evtl anschließender Speicherung getriggert oder von Hand geschehen soll. Jedenfalls muss ich sagen, dass bspw. 500 Zyklen aufgezeichnet werden sollen.


Ich kenn mich mit dem DAQmx nicht so gut aus, aber ich skizzier hier einfach, wie ichs mir vorstelle. Du müsstest die Analoge Erfassung mit dem Kurbelwinkel triggern (und zwar direkt auf der Karte) und immer 720 Werte oder besser ein Vielfaches davon auf einmal von DAQ übernehmen. Ob das mit DAQmx und deiner Karte geht, das weiß ich nicht. Bei der Auswertung kannst du ja dann immer die Daten +-360 Werte vom Nockenwellensignal nehmen. Die Datenerfassungund -Darstellung gehören dabei in 2 separate Schleifen. Wenn du Speichern willst natürlich noch eine dritte Schliefe.

So wie du es jetzt machst kannst du im besten Fall jede zweite Umdrehung aufzeichnen. Vielleicht langt dir das ja, aber dann musst du trotzem besser triggern. Und zwar einfach mit dem Nockenwellensignal triggern (auch hier auf der Karte) und dann stoppen wenn es nochmal vorbeikommt. So ähnlich wie du jetzt schon hast. Aber du darft nicht einfach nach 720 mit der Erfassung aufhören, wenn du auf Basis der Zeit misst, denn woher weißt du, dass der Zyklus schon abgeschlossen ist. Um so weniger Zylinder dein Motor hat, um so größer ist die Drehunförmigkeit. Bei einem Einzylinder beträgt sie bei 6000 U/min bis 20U/min zwischen 1 °KW.
Am einfachsten wäre es natürlich, du nimmst einfach alle X Sekunden 1440 Werte auf, dann hast du sicher einen Zyklus im Kasten. Brauchst ihn nur noch anhand des Nochwellensignal rausschneiden.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.06.2009, 17:39
Beitrag #3

Kerl Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: May 2009

8.6
-
de

40595
Deutschland
DAQmx Signalerfassung mit 36kHz
Vielen Dank für die Antwort schrotti!

Hab also heute mal versucht die ganze Erfassung über DAQmx laufen zu lassen. Leider ohne Erfolg! Rolleyes
Wenn ich alles richtig verstanden habe, sollte da jetzt ein 1D-Array mit 720 Werten (Druck) herauskommen.
Der Array mit den Winkeln ist ja immer gleich und wird jetzt in der For-Schleife geschrieben.

Was ich nicht verstehe ist, wo ich da jetzt noch das Nockenwellensignal zum start der Messung dran tüddeln muss!?
Bin ich mit diesem Aufbau denn jetzt auf dem richtigen Weg? Finde das alles noch etwas verwirrend! Rolleyes

Gruß
der Kerl

Lv86_img


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .zip  ReTriggerVI_lv861.zip (Größe: 34,09 KB / Downloads: 218)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.06.2009, 20:41
Beitrag #4

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
DAQmx Signalerfassung mit 36kHz
Wie du das mit DAQ und deiner Karte am besten hinbekommst kann ich dir leider nicht sagen. Müsste dazu auch erst herumprobieren. Allerdings bin ich mir sicher, dass du mit LabVIEW und DAQ ausreichende genaue Schleifen hinbekommst. Ein Heizverlauf oder ähnliches lässt sich damit wahrscheinlich nicht rechnen, aber man sieht etwas :-) . Mit was kompensierst du eigentlich den Nullpunktdrift? Machts der Verstärker oder hast dus bis jetzt gar nicht berücksichtigt?

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.06.2009, 15:35
Beitrag #5

Kerl Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: May 2009

8.6
-
de

40595
Deutschland
DAQmx Signalerfassung mit 36kHz
Was genau meinst Du mit Nullpunktdrift? Ich habe einen Piezo-Drucksensor der über einen Verstärker an der PCI-Karte hängt. Mit dem Drucksignal habe ich mich an sonsten noch nicht weiter befasst. Versuche erst mal die Signale in den Rechner zu bekommen.

Gruß,
der Kerl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.06.2009, 19:53
Beitrag #6

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
DAQmx Signalerfassung mit 36kHz
Das ist prinzpbedingt. Außerdem driftet der Nullpunkt abhängig von der Temperatur des Sensors.

Siehe auch PDF im angehängten Link. Insebesondere Seite 59.

http://bib1lp1.rz.tu-bs.de/docportal/servl...Ufz?hosts=local

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.11.2009, 11:51
Beitrag #7

Kerl Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: May 2009

8.6
-
de

40595
Deutschland
DAQmx Signalerfassung mit 36kHz
Hallo zusammen!

Stelle gerade überrascht fest, dass ich mich noch gar net so richtig beim Schrotti für die tolle Hilfe bedankt habe...
Ist wohl irgend wie untergegangen, sorry!
Das hole ich hiermit nach! Vielen Dank! Gerade der letzte Link war sehr hilfreich!!!

Inzwischen ist meine Diplomarbeit fertig... Big Grin

Auf Grund einer kürzlichen Nachfrage poste ich hier mal die Lösung, die meine Probleme mit der Datenerfassung mit DAQmx gelöst hat.

   

Der Block 1 definiert einen Task zur Messung einer analogen Spannung an der PCI-Karte (Device1) und einem analogen Eingang (ai4).

Es soll immer dann ein Analogwert eingelesen werden, wenn das Kurbelwellensignal (PFI3) auftritt. Dies wird durch Block 2 definiert.

Die gemessenen Werte sollen in einem Zwischenspeicher hinterlegt werden. Block 3

Anschließend definiert Block 4 einen Trigger . Dieser sorgt dafür, dass die Messung erst beim Auftreten des Nockenwellensignals (PFI5) beginnt.

Tritt jetzt besagtes Nockenwellensignal auf, wird der Task gestartet. Alle gemessenen Druckwerte werden in den Speicher geschrieben. Der Block 5 gibt die Anzahl der gemessenen Werte an den Vergleicher, der sobald alle 720 Werte vorhanden sind die Case-Struktur und somit die Bearbeitung der Messwerte (hier symbolisch mit der Array-Anzeige dargestellt) startet.

Die Probleme mit der Geschwindigeit der Datenerfassung sind mit diesem Programm erledigt. Die gesamte Datenerfassung wird hier von der PCI-Karte erledigt. Erst wenn alle 720 Werte erfasst wurden, erfolgt eine Bearbeitung innerhalb der Software. Lediglich der Speicher muss größer als 720 Messwerte sein, da es eine Weile dauern kann, bis die Software das Vorhandensein der Messwerte erkennt. Als Folge bekommt man immer einen Array mit mehr Werte als man eigentlich braucht. Diese können aber problemlos in der Software "abgeschnitten" werden.

Ist die Bearbeitung der Software abgeschlossen, wird die Case-Struktur beendet und der Task erneut vorbereitet. In Folge dieser Vorgehensweise kann man allerdings nicht jedes Arbeitsspiel eine Messung durchführen. Wärend die Bearbeitung innerhalb der Software läuft, vergehen ein paar Umdrehungen des Motors, ohne das diese Erfasst werden können. Bei mir war das egal.... Wink

Hoffe dass das für den ein oder anderen hilfreich war!

Grüße und nochmal vielen Dank an Schrotti!

Dipl. Ing. (FH) Kerl Big Grin
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
  Signalerfassung unter 0,1ms. HuFe95 4 5.221 30.01.2017 08:53
Letzter Beitrag: BNT
  Analoge Signalerfassung (Trigger) Sabrina1987 1 3.547 23.09.2013 09:51
Letzter Beitrag: Kasi
  DAQmx Signalerfassung klappt --> Darstellung / Weiterverarbeitung man1acc 2 4.166 10.09.2013 11:26
Letzter Beitrag: man1acc
  Analoge Signalerfassung. wittandr 8 6.556 05.12.2012 19:46
Letzter Beitrag: wittandr
  A/I Signalerfassung Hobbes 5 6.505 12.07.2011 18:02
Letzter Beitrag: Lucki
  Frage zu Geschwindigkeit/Signalerfassung Filozof83 2 3.799 21.05.2011 14:55
Letzter Beitrag: macmarvin

Gehe zu: