04-06-2013 06:59 PM
Hello,
I have been thinking very hard without getting anywhere about a signal processing aspect of a DAQ measurement. I will describe the problem first as below.
Measurement system: a small DC motor driven turbine (24 blades) running up to speeds of several tens of thousands of RPM.
DAQ device: PXI6251 through BNC2120 connector block.
Problem decription: I am acquiring data for passage of each turbine blade past a sensor. I am able to collect a periodic waveform suggesting the rotation of the turbine. This is a noisy signal. I want to perform rotational averaging so that noise can be reduced. There are plenty of exmaples available discussing synchronous averaging which makes sense (recovering noise buried periodic waves such as a sine wave). However, in may case, I must average so that each cycle of averaging line up with the same blade.
[I can do this by collecting a stream of data. slice it into blocks of consecutive 24 peaks corresponding to each blade, and line the sets up to do the averaging. I am struggling to do this in LabVIEW, elegantly. Mind you, if the speed is varied this will be more complex, so I think it will be best to start by considering the turbine is running at constant speed and then think about variable speed situation. ]
Can anyone get me started on this, please? I can try to be more clear if anything requires further clarification.
[I am not familiar with producer-collector loop in LabVIEW, in case this is a standard approach for this type of signal processing task]
04-07-2013 03:51 AM
Hi,
If I've understood, you want to do an ensemble average, that is, in your case, an average among all the values corresponding to the same shaft position ( the same angular position of the turbine's shaft); this for all angular positions. is it riight?
I've attached an example of an ensemble average of the cycles of an i.c. engine. Let me know if i grabbed the concept...
04-08-2013 04:23 AM
Hi c.fish,
You describe the problem better. If I understand correctly, the figure you have attache, suggest averaging being done for a particular shaft at different cycles, and each cycle correspond to 7800 samples?
I was using a USB DAQ (NI-5133) before but I have now chaged to a PXI-6251 device, purely because it has twice as much resolution and more channels (Although it isn't as fast but that's ok for now.)
I have one of the AI configured as voltage input which is contunuously acquiring stream of data. I have to come up with a system that takes 24-consecutive peaks of the streams, align them, average and display/ save.
04-08-2013 05:57 AM
Just to add to my previous post, the waveform I am getting which I would like to average by blad position.
04-08-2013 09:39 AM - edited 04-08-2013 09:43 AM
For blade index: Do you also get a index signal per revolution?
However assuming that you capture n revolutions and the speed isn't changing that much:
Use extract single tone detection to find the actual blade frequency f_b, samplelength per revolution is SPS x <n_blade> / f_b
slice your data and add it up
capture some data (20 revolutions) and post data (array constant) in a vi.
04-08-2013 12:13 PM
Thanks, I will try to implement that in a VI. Although, could you please tell me how do I 'slice' the data? I have been thinking along similar lines but struggling with my graphical programming limitations!
There one more frustrating problem that I am dealing with:
I am having the following problem which is kind of annoying since I am trying to achieve something seemigly simple: save the continuous stream of data at simplest possible manner.
The DAQ is configured as follows: Sample rate: 400KS/s
Mode of acquisition: Continuous
No. of samples: 5k
The VI runs fine when the data saving disabled. As soon I enable the data saving, it crashes with the following error:
Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.
Property: RelativeTo
Corresponding Value: Current Read Position
Property: Offset
Corresponding Value: 0
Task Name: _unnamedTask<116>
Please, lend me a hand understand this. Will be grateful!
04-08-2013 04:10 PM
certaintly, the math described above, with the appropriate lining up of the edges can work.
However, if you are able to use the Sound and Vibration Measurement Suite, it is able to resample the sensory data into angular position. Then, all data is "even-angle" and performing time syncrhonous averaging is easy. The data is already lined up.
04-09-2013 04:16 AM
Hi preston_johnson,
I don't have Sound and Vibration Measurement Suite included in my LabVIEW package.
However, I think there is waveform align and resampling blocks in Signal Processing-> Waveform Conditioning. Will these do similar tricks?
04-10-2013 04:27 AM
Henrik_Volkers wrote:
For blade index: Do you also get a index signal per revolution?
I would like to but I am not getting one right now.
However assuming that you capture n revolutions and the speed isn't changing that much:
Use extract single tone detection to find the actual blade frequency f_b, samplelength per revolution is SPS x <n_blade> / f_b
slice your data and add it up
capture some data (20 revolutions) and post data (array constant) in a vi.
I was thinking along similar lines too. However, if I want to do this on the run, the number of samples per revolution is not a static value. I think this would be a problem? (I might have it in such a way that I see a delayed average by storing few revolution in static variable, possibly).For simplicity, Could you please suggest how best to implement this on a simulated vi, please? For example, if I were to average 'Waveform1' considering 10 peaks to a revolution(see attached VI). My limited LV fluency is getting in my way big time.
04-12-2013 02:30 AM
here is something to play with 😉
It's a crude lock in ...