Amplitude and frequency modulation detection of measured signal using Hilbert Transform.
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I presented a current signal from a dynamic eccentricity experiment on a switched reluctance motor (SRM) after FFT in the frequency domain (Hz). The orange graph shows the operation of the electric motor in a damaged condition (dynamic eccentricity), and the blue graph shows it in a correct operating condition.
I wanted to check whether amplitude (and phase) modulation occurs in the vicinity of the sixth harmonic (the sixth harmonic is a correct phenomenon resulting from the construction of the motor).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1699776/image.png)
First, I filtered out the signal from the remaining harmonics (also eliminating the constant component)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1699781/image.png)
To detect amplitude modulation, I decided to determine the envelope of the current signal using the Hilbert transform on the filtered signal. I determined the FFT from the absolute value of HT and the phase shift as a function of time.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1699786/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1699791/image.png)
In the third figure, two small harmonics can be seen in the damaged state. What do they mean? Do they say that these two harmonics participate in the modulation of the signal (analogously in a proper state, one harmonic?)? Interestingly, despite the lack of a constant component in the signal, it appears after the Hilbert transformation.
How do we interpret phase shift? From what I remember, there was something about the steepness of these runs.
This is a fragment of a code for Hilbert transform:
f=fs*((0:(L-1))/(L-1));
zero=zeros(1,L));
one=ones(1,L));
envelope=abs(hilbert(filtered_signal));
envelope1=abs(hilbert(filtered_signal1));
my_fft=abs(fft(envelope))/L;
my_fft1=abs(fft(envelope1))/L;
figure
plot3(f,zero,my_fft,f,one,my_fft1,'k')
and phase modulation
phase=detrend(unwrap(angle(hilbert(filtered_signal))));
phase1=detrend(unwrap(angle(hilbert(filtered_signal1))));
figure
plot3(t,zero,phase,t,one,phase1,'k')
I realize this is more of a scientific problem than a strictly programming one. Nevertheless, many people have similar issues, and I would be grateful for help explaining them.
4 comentarios
Mathieu NOE
el 21 de Mayo de 2024
well, then if you have been through the litterature, what is the issue you're still facing ?
detecting the modulation presence is easy, interpreting and finding the relationship to each specific motor / drive possible damage cause is more challenging and requires a true in depth know how.
we don't even know what kind of motor / drive you are studying, nor what kind of damage you are dealing with.
hope some specialist could answer your question, but I think you are not asking in the right forum (IMHO)
god luck for the future
Respuestas (1)
Joel Van Sickel
el 28 de Mayo de 2024
I think your not specifying your problem well enough. It is clear enough just from looking at the first plot of frequency data that the 6th harmonics are higher in the faulted state. And you can use more transforms to further isolate these. However, what you haven't shown is how these transforms can be helpful in making a diagnostic. Perhpas the phase shift is something that is a clear indicator. That unfortunatley can't be answered with the data you have. You'd need extensive data cross many similar but not quite exact machines and drives running nominally and with various levels of faults. Only then, in comparing the data, can you start to extract signals and make deteriminations about quantitative flags for a fault that won't be false positives. For instance, can you show there the phase in an unfaulted machine is basically always the same, in which case fluctuations in phase might be an easy way to detect the fault. However, often such simple thresholds aren't robust enough for real world operation of a machine and drive an all of it's slightly varying parameters. This is far from trivial and often not purely quantitative which is why so often poeple are turning to neural networks and AI to solve this type of problem. However, if you have consistent enough performance across machines, you could even skip most of the tranforms and just say, hey, the 6th harmonic is this large, so there is a fault, without doing anything else. It's highly system dependent and probably up to you and your research to figure out what a good potential solution is. This is far from a solved problem and there is a lot work that needs to be done, both in gathering experimental data, as well as finding good ways to consistently use that data to make decisions.
1 comentario
Ver también
Categorías
Más información sobre Switches and Breakers en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!