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 

zeitbasierte Druckverlaufsmessung



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.05.2014, 11:01
Beitrag #1

jrraid Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012/2013
2011
EN


Deutschland
zeitbasierte Druckverlaufsmessung
Hallo liebe Community,

im Rahmen einer Arbeit an der Uni versuche ich eine zeitbasierte Druckverlaufsmessung eines Verbrennungsmotors zu realisieren. Dazu ist ein Inkrementalgeber zur Kurbelwellenwinkel-Messung und ein Drucksensor im Zylinder verbaut.
Ich versuche nun per DAQmx das Signal des Inkrementalgebers auszulesen und es so zu interpretieren, dass ich es für meine Zwecke nutzen kann. Leider tauschen ständig irgendwelche Fehler auf. Aus diesem Grund wollte ich euch mal fragen welche Art von Messung ich am besten hernehme, um das Signal des Inkrementalgebers für meine Zwecke richig zu interpretieren. Ich hab versucht das Ganze mal auf 2 Bildern darzustellen. Bild 1 unten zeigt das Signal welches von Imkrementalgeber kommt. Bild 2 unten zeigt wie ich den Messwertarray gerne am Schluss des ganzen hätte. Die Frage, die sich mir nun stellt, wie soll ich das Signal des Inkrementalgebers auslesen. Mittels Counter oder Digital IO. Ich würde gerne die Druckmessung (in den Bildern oben zu sehen) gerne mit dem Inkrementalgeber synchronisieren, so dass ich immer eine eindeutige Zuordnun zwischen Druck und Winkel habe. Ich hoffe ihr könnt mir da einen Tip geben, wie ich das Problem angehen soll.

Vielen Dank!


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

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: zeitbasierte Druckverlaufsmessung
Wie viele Inkremente pro Umdrehung hast du? Zur Synchro bietet sich das Encoder-Signal als externes Taktsignal für die AI-Erfassung an - in Abhängigkeit der Möglichkeiten deiner DAQ-Hardware (welche?). Entsprechende Beispiele gibt es im NI Example Finder..

Gruß, Jens

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
08.05.2014, 12:26
Beitrag #3

jrraid Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012/2013
2011
EN


Deutschland
RE: zeitbasierte Druckverlaufsmessung
Also der Inkrementalgeber macht 3600 Inkremente pro Umdrehung. Meine Messkarte ist eine PXIe-6356. Ich hab mir das ganze in etwa wie folgt vorgestellt. (Siehe Bild im Anhang).


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

jrraid Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012/2013
2011
EN


Deutschland
RE: zeitbasierte Druckverlaufsmessung
Zitat:Zur Synchro bietet sich das Encoder-Signal als externes Taktsignal für die AI-Erfassung an

genau das möchte ich eben nicht machen, denn so ist es gerade an den Prüfständen realisiert. Diese Methose lässt eben nur eine Auflösung von 0,1° Kurbelwellenwinkel zu. Ich würde das ganze gerne Zeitbasiert machen. Sprich Druck und Drehzahl zeitbasiert machen, so dass ich auch die Druckwerte erfassen kann, die zwischen 2 Inkrementen liegen. Deshalb würde ich gern wissen wie ich das Drehzahl Signal am besten erfasse um Druckverlauf und Drehzahl (eigentlich: aktueller Kurbelwellenwinkel) übereinander legen kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2014, 18:53 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2014 18:53 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zeitbasierte Druckverlaufsmessung
Hallo jrraid,

wenn du zwischen den 0.1°KW nicht interpolieren willst, musst du eben schneller messen…

Erstelle dir also zwei Tasks für AI und DI und lese sie mit möglichst hoher Samplerate ein. Dann suchst du im DI-Signal nach Flanken, um die Pulse selbst zu bestimmen und ordnest die entsprechenden AI-Werte diesen Pulsen zu. Die Werte dazwischen musst du zeitlich interpolieren…

Du willst dir ehrlich diesen (Rechen-)Aufwand ans Bein binden? Warum nicht mit ensprechenden (Elektronik-)Schaltungen das Signal deines Pulsgebers vervielfachen? Wenn man z.B. sowohl bei fallender als auch bei steigender Flanke triggert, kommst du schon auf 7200 Werte/Umdr. Nutzt du einen Quadraturencoder, kannst du schon auf 14400 Pulse/Umdr kommen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 09:32
Beitrag #6

jrraid Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012/2013
2011
EN


Deutschland
RE: zeitbasierte Druckverlaufsmessung
Hi Gerd,

vielen Dank erst mal für deine Antwort. Genau so wie du das beschrieben hast habe ich mir das auch überlegt. (siehe Anhang). Nur wie du auch schon geschrieben hast scheint der Rechenaufwand dafür viel zu hoch zu sein. Wenn ich das VI laufen lasse, dann kann mein Buffer nicht schnell genug ausgelesen werden, da die Berechnungen in der For Schleife schon so zeitintensiv sind. Wenn ich die Schleife deakiviere und die Werte einfach nur darstellen lasse ist das Ganze kein Problem. Sehe ich das so richtig?
Leider kann ich die SampleRate auch nicht viel niedriger wählen, da mir ansonsten die Auflösung nicht ausreicht um das Encoder Signal richtig darzustellen.

P.s: Ich lese mit 1 MS/s aus.


Angehängte Datei(en)
13.0 .vi  test.vi (Größe: 72,14 KB / Downloads: 190)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.05.2014, 09:36 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2014 09:38 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zeitbasierte Druckverlaufsmessung
Hallo jrraid,

Zitat:Wenn ich das VI laufen lasse, dann kann mein Buffer nicht schnell genug ausgelesen werden, da die Berechnungen in der For Schleife schon so zeitintensiv sind. Wenn ich die Schleife deakiviere und die Werte einfach nur darstellen lasse ist das Ganze kein Problem.
Das hört sich an, als wenn das Producer-Consumer-Schema hier hilfreich werden könnte…

Zitat:Sehe ich das so richtig?
Weiß nicht. Dafür müsstest du das VI nochmal in LV2011 anhängen…
Außerdem: Profil_ergaenzen wenn du jetzt mit LV2013 arbeitest!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 09:54
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zeitbasierte Druckverlaufsmessung
Hallo jrraid,

mit 1MS/s und 3600 Pulsen pro Umdrehung kannst du theoretisch bis zu 1M/2/3600 ~= 139 Umdrehungen/s = 8300 rpm erkennen/messen. Das praktische Limit dürfte eher bei 6000rpm liegen…

Aus dieser Überlegung heraus: warum willst du auf die externe Triggerung durch deinen Drehgeber verzichten?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 11:23
Beitrag #9

jrraid Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012/2013
2011
EN


Deutschland
RE: zeitbasierte Druckverlaufsmessung
Ich will darauf verzichten, da man nicht immer einen Inkrementalgeber mit so einer guten Auflösung zur verfügung hat. Ich aber trotzdem den Druckverlauf so genau wie möglich haben muss.
Würde ich beispielsweise einen 60 Inkremente/Umdrehung Drehgeber verwenden würde ich nur eine Kurbelwellenwinkelauflösung von 360°KW/60 = 6°KW. Das sind eindeutig viel zu wenig Messwerte pro Umdrehung als dass man eine gute Aussage über die Indizierung in einem Verbrennungsmotor treffen könnte. Wenn ich das ganze nun zeitbasiert messe, hab ich nur eine Ungenauigkeit im Drehzahlsignal zwischen 2 Flanken, da ich dort linear interpolieren muss. Der Druckverlauf hingegen is sehr schön aufgelöst.

Tut mir Leid wegen dem Versionschaos. Manche Rechner am Lehrstuhl haben 2013 mache 2012 drauf. Im Anhang nochmal als 2011er Version. Momentan läuft das VI allerdings aber für Verbessrungsvorschläge bin ich sehr offen Smile


Angehängte Datei(en)
11.0 .vi  test_2011.vi (Größe: 55,34 KB / Downloads: 153)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2014, 11:41 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2014 11:45 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zeitbasierte Druckverlaufsmessung
Hallo jrraid,

- wenn du kontinuierlich lesen willst, musst du nur ganz ganz selten wirklich die Buffergröße über "Samples to read" am DAQmxCreateChannel festlegen. Das macht DAQmx schon selbst ganz gut.
- wenn du Daten lesen willst, dann hat es sich bewährt, feste Blockgrößen abzufragen - und nicht wie du "aufwendige" QR-Rechnungen in Statemachines durchzuführen. Einfach Blöcke mit 40k Samples abfragen und gut ist!
- Diese Blöcke dann in einer Producer-Consumer-Struktur an eine zweite Schleife zur Berechnung weiterrreichen.
- Notfalls Queue-Größe überwachen und (falls deine Rechnung nicht hinterherkommt) überzählige Blöcke verwerfen…

Zitat:Ich will darauf verzichten, da man nicht immer einen Inkrementalgeber mit so einer guten Auflösung zur verfügung hat. Ich aber trotzdem den Druckverlauf so genau wie möglich haben muss.
Wenn man eine Druckindizierung durchführen will, muss man sich um entsprechende Messtechnik (im Vorfeld) kümmern. Drehgeber mit nur 60Pulsen sollte man dafür verbieten…

Zitat:Würde ich beispielsweise einen 60 Inkremente/Umdrehung Drehgeber verwenden würde ich nur eine Kurbelwellenwinkelauflösung von 360°KW/60 = 6°KW. Das sind eindeutig viel zu wenig Messwerte pro Umdrehung als dass man eine gute Aussage über die Indizierung in einem Verbrennungsmotor treffen könnte.
Du kannst alternativ auch dein Drucksignal zwischen den Pulsen interpolieren. Ist erheblich weniger Rechenaufwand und funktioniert auch mit jedem Drehgeber!
Wir verwenden an unserem Prüfstand einen Geber mit 360Pulsen/Umdr. Meine Software interpoliert von diesen 1°KW auf <0.1°KW…

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
  Zeitbasierte digitale Ausgabe stainless_steel 2 3.596 06.06.2016 10:41
Letzter Beitrag: stainless_steel

Gehe zu: