LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

order analysis toolkit. Problem converting to even angle signal

Hello,
 
I want to build the order spectrum of a vibration signal from a rotating machin by using the vi's of the OA Toolkit from LV. Therefore I am measuring the vibration signal and the pulses (1 per revolution) synchronously. Attached you can find the vi with some sample signals (althoug the vibration signal is just noise in this case, but for the problem, is the same).
 
I have tested the vi with the simulated signals that are embeded in the toolkit, and it had worked. But when I use it with the real signals I get the following error:
 
Error -21408 occurred at oa_Check Spectrum Settings [OPS] (1 Channel).vi in
oa_Data Check [OPS] (1 Channel).vi:2 in
OAT Order Power Spectrum (1 Channel).vi:1 in
OA_TOP_OSToolkit_LV8.2.vi
Possible reason(s):
Sound & Vibration:  The spectrum block size must be greater than zero.
 
This error is from the OAT Order Power Spectrum (1 Channel).vi, but is actually caused because the Convert to even angle signal.vi delivers an array with no values (i.e. the Y array of even-angle signal is empty). I don't think the problem relays on detecting the pulses, otherwise there would be no speed profile.
 
One more thing, the problem arises when I use the accurate analysis method; when this is set to fast, there is no error code, however the result is not so good in my opinion.
 
Note: As the measured vibration signal has no relation with the pulse signal, you can also try use the pulse signal for the two inputs (i.e. building the order spectrum of the pulse signal).
 
Thanking in advance,
 
CJMV
0 Kudos
Message 1 of 16
(3,412 Views)
So far I have found that the problem is indeed with the pulses, not with the time detection of them (pulse positions [s]), but with an interpolation which is performed on "oa_Interpolate Tach Pulses.vi"
 
On this vi, if the analysis method is set to "accurate", then the resolution input of this vi will be "high" and the second case will have a value of 1.  "pulse positions [s]" is wired to "oa_Multistage Interpolation Filter.vi". The problem seems to be here, as the output array "x[n] out" is, with this signal, an empty array.
 
If anyone knows what I am doing wrong or how to fix the problem, please let me know.
 
 
0 Kudos
Message 2 of 16
(3,401 Views)
Hi crimolvic,
 

Firstly, I think the block size input of your OAT Order Power Spectrum VI is not connecting correctly. It specifies how many points you want to use to calculate the spectrum. But it is now connected to the size output of the whole even-angle signal. I think you can use the unbundled output of the 'Spectrumeinstellungen' or a constant. Please refer to the attached screenshot.

 

Secondly, after you re-link the block size input, you may find a 21400 warning. It says 'The input signal is empty'. This warning message is output by the Order Power Spectrum VI because the the OAT Convert to Even Angle Signal VI's output is empty. Since there are multiple digital filters used for re-sampling inside the OAT Convert to Even Angle Signal VI, there will be a filter delay. The delay is measured in the tachometer counts but not the time waveform signal length. The 'accurate' method asks for more tachometer counters (more rotations) than the 'fast' method. So if you change the analysis method to 'fast', you will find the output result. If you want to use the accurate method, you need to acquire a signal which includes more rotations.

 

regards,

 

Billy

 


Message Edited by SH.Billy on 02-20-2008 01:07 AM
0 Kudos
Message 3 of 16
(3,364 Views)

Hi SH.Billy,

thanks for reply. I an connecting the size output of the whole even-angle signal to the "block size" parameter of OAT Order Power Spectrum VI, because I want it to use the hole signal for calculating the FFT, not just a portion of it. However, in order to test, I have made the change that you say and I've got the 21400 warning.

I am attaching an example whith measured signals wit more rotations of the shaft (40). When you run the vi you will be promt to select two files, please choose first the one called "Vibration_25KSs" and secondly the one called "Pulses_25,0kSs".

If you don't make the change you suggest you will receive the same error code (-21408).

If you do make the change, you will still receive the warning 21400.

In both cases you will have no order spectrum.

There are three posibilities to have the spectrum: a) as you say, use the fast method. b) set the "zero delay?" parameter to TRUE. c) a) and b) togheter.

These three posibilities also hold if you don't make the change you suggest.

It would be nice to have more information on what the vi's from the toolkit do, As I can't build an order spectrum just by setting the parameters so that the vi "works". I have found no documentation related to it other than the user manual, where there is no information of this kind.

0 Kudos
Message 4 of 16
(3,351 Views)

Hi crimolvic,

Let me introduce the accurate/fast approach in more detail.

 

As the context help of the OAT Convert to Even Angle Signal VI mentions, 'The accurate method can generate more accurate results than the fast method, especially if you are performing run-up or run-down tests with high speed transition rates. However, the accurate method requires an accurate tachometer pulse measurement to generate accurate results. Typically, using a counter to acquire digital tachometer signals yields an accurate tachometer pulse position. '.

 

The accurate method uses a much longer filter than the fast method so that it can obtain extra accuracy to calculate the speed profile especially for the speed which changes rapidly. However, the cost is that there will be a much longer filter delay because of the extra filter operations. For most cases, the fast method is good enough. That is why the fast method is the recommended default value of the method input. For instance, in your case, the speed is slow and quite stable; the fast approach should be a good choice.

 

For some online applications, they require an immediate output without any filter delay, this requirement results in the 'zero delay?' option. Actually, several early cycles of the output data will be incorrect because the internal digital filters are not fully initialized.

 

In a word, the VI has long filters that initialize before calculation, which result in the incorrectness of the initial part of the output data. The length of the incorrect part of the output data depends on the analysis mode you select. Using 'accurate' mode is much longer than 'fast'. If zero delay?=FALSE, the incorrect initial part of the output data will be chopped and abandoned. This mechanism guarantees the accuracy of the output data. However, if you set zero delay?=TURE, the initial part will not be dropped, but you must pay attention that maybe the first few cycles of the output result is not correct.

 

For your VI, I think you can use 'fast' mode with zero delay? = FALSE. I've tried your VIs without any changes besides setting analysis mode to fast. It looks fine.

 

regards,

 

Billy

 

 

0 Kudos
Message 5 of 16
(3,326 Views)

Thank you again for helping me clarify the procedure.

One question related to the filters, as you said, the accurate method uses a longer filter through the use of a filtering previous the CIC Filter. Which type of filter is used in this previous stage? is a FIR Filter? what is its purpose?

Let me put you on the following case: you want to use the accurate or fast method to build (one time, not in a while loop) an order spectrum with a given maximum order and a given spectral resolution. How can you calculate how long (how many shaft revolutions) the measurement should be? To avoid incorrectness we will set zero delay?=FALSE.

Lets analyse first the maximum order: if I set the parameter "max order (auto)"  to a given number, lets say 100, then the "oa Get Actual Order.vi" will calculate an interpolation factor. In this case the interpolation factor will be 256 and therefore the maximum order on the spectrum will be of 256/2=128 (and not 100 as desired!). This is independant of the method, fast or accurate. The question is why?

Lets analyse now the resolution item, which is obviously related with the signal length (the nmber of revolutions of the shaft). First I have noticed that the "oa_Calculate Angular Speed" always delete the last 3 (three) pulses, which makes the signal shorter and therefore has an implicance on the resolution. Do you know why it does that?

Secondly, ss you mentioned, there is a filter delay. Due to this, one has to delete the first portion of the signal and only take the values from this delay. For the fast method, the delay is dependanto on the interpolation factor; for the accurate method is dependant also on the interpolation factor but also on the coefficients of the filter before the CIC filter. The result is a longer filter delay for the accurate method.

Well what I want is to have a spectrum with a given resolution. Therefore, I should calculate the time of the (n-3) pulse, n being the number of pulses, and also the filter delay (which by the way is expressed on number of the interpolated pulses) to determine the number of revolutions that are needed for the spectrum. In order to know how long must be the measurement, I should sum this value with the number of revolutions that the filter delay implies and also sum the three pulses that are deleted at the beginning.

This sound complicated but maybe could be done. The problem however, is that the "Y" array which comes out from "oa_CIC Interpolation Filter" does not include all the pulses to the (n-3) pulse. It contains less than that, but I am not able to calculate how many it includes because the operations inside are performed through a dll or something like that. Do you know what determines the length of the signal to be resampled. (is clear to me that the first element is given by the filter delay, but the last element??)

The result: I cannot determine how should I make the acquisition in order to obtain a given spectrum; I can only acquire and then let the vi's to build a order spectrum with characteristics that I can't modify.

Best regards,

CJMV

0 Kudos
Message 6 of 16
(3,315 Views)
On a telephone conference with NI technicians, they explained me that the three last elements deleted from the "pulse positions [s]" array on "oa_Calculate Angular Speed.vi" are necesary because there is a smoothing filter which needs these last three values to be used as initial conditions for the next iteration (i.e. the three elements are buffered for the next set of data).

Similarely, the interpolation filter(s) used on "oa_Interpolatie Tach Pulses.vi" need to retain some elements of the interpolated pulses (output array "Y" on "OA CIC Interpolation Filter") to be used on the next iteration. As the interpolation filter used for the accurate method is different as the one used for the fast method, the number of elements to be hold on a buffer are different depending on the method.

I have tried to break up the number of samples to be hold on the buffer for the interpolation filters on both cases (accurate and fast), but I am not sure of is possible to know. With an interpolation factor of 168, my calculation say that for the accurate method (FIR? filter + CIC filter) the number of elements to be deleted is between 3988 and 4031; and for the fast method it seems to be just 167.

Q: Does anyone know the number of elements that the interpolation filters need to hold in the buffer?

If I don't want to use the vi's for succesive set of data, but for a single measurement, then I don't need the filters to hold this data on the buffers (becasue there is not next set of data).
Q: Is  it possible to perform a single order spectrum without buffering the last part of the data?


Message Edited by crimolvic on 02-22-2008 08:21 AM
0 Kudos
Message 7 of 16
(3,300 Views)
more generally,

- for the accurate method the number of elements of the interpolated array (output array "Y" on "OA CIC Interpolation Filter.vi") which are used for the buffer of the interpolation filter array seems to be given by (23.75*IF-2), IF being the "interpolation factor". This means that the elements of the interpolated pulses which are contained between the last (original) 23 pulses plus (3*IF/4-2) elements.

- for the fast method, the number of elements used for the buffer seems to be given by (IF-1).

Can anyone confirm/correct this?

I am convinced that only by knowing the following parameters:

- the number of elements  of the interpolated pulses that are used for the buffer of the interpolation filter (this question)
- the number of elementos of the original pulses that are used for the smoothing filter (3 pulses as stated above)
- the length of the filter delay (also mentioned previously)

I could be able to calculate how long has to be the signal that I need to acquire in order to obtain the order spectrum that I want (i.e. with a given resolution and a given order max).
I need the desired order spectrum to determine the characteristics of the acquisition, not the other way.

greetings,
CJMV



0 Kudos
Message 8 of 16
(3,294 Views)
crimolvic,
 
If you select fast method, in a one-shot run, you will get n-7 revolution samples (n is the input revolution) after resampling. If you select accurate method, you will get n-53 revolution samples after resampling. (The actual output is slightly more than n-7 or n-53, but to make it simple you can just use n-7 or n-53). The order resolution is determined by 1/revolution. So all the samples you need to get a order spectrum is (7+1/order resolution) revolutions for fast or (53+1/order resolution) revolutions for accurate.
 
Note that the block size input of OAT Order Power Spectrum VI should be (actual max order*2/order resolution). With all the information above, you should be able to get a order spectrum with specified max order and order resolution in one-shot running mode.
 
Let me know if this can work for you.
 
Chen
Message 9 of 16
(3,281 Views)
Thank you Chen for the magic numbers! I think NI should include this important information on the manual.
 
I also tried to insert false pulses to the measurement (26 at the beginning and 27 at the end for the accurate method; and 3 and 4 respectively for the fast method) in order to avoid a loner acquisition. However, this seems not to function, I believe because of the causality/non-causality characteristics of the filters (am I right?).
 
Finally, I think it would be a good idea that the developer engineers of NI release a set of VI's for single-shot application. This it would be not neccesary to aquire the pulses at the end (27 pulses for the accurate method; 3 for the fast method), which would lead to a shorter acquisition time with the same results.
 
Once again, thank you very much to all the people who helped me.
 
Best regards,
crimolvic
0 Kudos
Message 10 of 16
(3,250 Views)