RevolutionSyncSampling (FPScript)

21.09.2021

Transforme un signal échantillonné dans le temps en domaine de révolution, c'est-à-dire que le signal temporel est transformé en une plage de vitesse de rotation échantillonnée de façon équidistante par rééchantillonnage. Méthode efficace pour effectuer le suivi des ordres, puisque le spectre de fréquences du signal converti dans le domaine de la révolution fournit directement le spectre des ordres. De même, le filtrage passe-bande ordinaire dans le domaine de révolution peut être utilisé pour calculer directement les courbes d'ordre (temporelles).

Syntaxe

RevolutionSyncSampling(Signal, Speed, [ SamplesPerRevolution = 0 ], [ SamplesPerRevolutionLimit = 256 ], [ ResampleMethod = REVSYNCSAMPLING_RESAMPLE_LINEAR ], [ ResampleFactor = 2 ] [ , OutputOptions = REVSYNCSAMPLING_OUTPUT_SIGNAL ])

 

La syntaxe de la fonction RevolutionSyncSampling se compose des éléments suivants :

Section

Description

Signal

Le signal échantillonné dans le temps, qui doit être transformé dans le domaine de révolution équidistante. L'unité de la composante X doit être compatible avec l'unité des secondes (avec la gestion des unités activée). Si aucune unité de la composante X n'est spécifiée ou si la gestion des unités est désactivée, l'unité est toujours interprétée en secondes.

Les structures de données autorisées sont Signal. Tous les types de données réels sont autorisés, sauf Valeur booléenne, Temps calendaire et Période de temps.

Les valeurs invalides ne sont pas autorisées dans cet argument.

Des restrictions supplémentaires s'appliquent à la composante X.Les valeurs doivent être monotonement croissantes. Les valeurs invalides ne sont pas autorisées dans cet argument.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Speed

Le signal de vitesse échantillonné dans le temps, à partir duquel le domaine de révolution est dérivé. L'unité de la composante Y doit être compatible avec l'unité 1/min (ou avec RPM = tours par minute) (avec le contrôle des unités activé). Si aucune unité de la composante Y n'est spécifiée ou si le contrôle des unités est désactivé, l'unité est toujours interprétée comme 1/min. L'unité de la composante X doit être compatible avec l'unité des secondes (avec la gestion des unités activée). Si aucune unité de la composante X n'est spécifiée ou si la gestion des unités est désactivée, l'unité est toujours interprétée en secondes. La fréquence d'échantillonnage ne doit pas nécessairement correspondre à la fréquence d'échantillonnage de Signal. S'il s'agit d'une valeur scalaire, on suppose que le signal à transformer a été enregistré à une vitesse constante.

Les structures de données autorisées sont Scalaire et Signal. Tous les types de données réels sont autorisés, sauf Valeur booléenne, Temps calendaire et Période de temps. L'argument est transformé dans l'unité min^-1.

Les valeurs invalides ne sont pas autorisées dans cet argument.

Des restrictions supplémentaires s'appliquent à la composante X.Les valeurs doivent être monotonement croissantes. Les valeurs invalides ne sont pas autorisées dans cet argument.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

SamplesPerRevolution

Détermine l'échantillonnage du signal transformé dans le domaine de révolution (nombre de points de données par révolution). La moitié de la valeur détermine l'ordre maximum qui peut même être calculé à l'aide de l'analyse de Fourier selon le théorème d'échantillonnage. Une valeur devrait être réglée de sorte qu'au-dessus de la moitié de la valeur, tous les autres ordres soient négligeables. Sinon, un repliement se produit (selon le théorème d'échantillonnage). La valeur par défaut 0 sélectionne une valeur automatique de sorte que l'ordre théoriquement le plus grand apparaissant dans le signal puisse toujours être calculé à l'aide de l'analyse de Fourier dans le spectre d'ordre. Pour limiter la taille de l'ensemble de données résultant, la valeur calculée automatiquement est limitée par SamplesPerRevolutionLimit.

Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés.

La valeur doit être supérieure ou égale à 0.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 .

SamplesPerRevolutionLimit

Limite supérieure pour le calcul automatique de SamplesPerRevolution. Une valeur doit être fixée de manière à ce qu'au-dessus de la moitié de la valeur, tous les autres ordres soient négligeables. Sinon, un aliasing se produit (selon le théorème d'échantillonnage). L'argument est ignoré si SamplesPerRevolution n'est pas calculé automatiquement, c'est-à-dire si pour SamplesPerRevolution une valeur supérieure à 0 a été sélectionnée.

Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés.

La valeur doit être supérieure à 0.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 256 .

ResampleMethod

Spécifie la méthode de rééchantillonnage utilisée pour évaluer le signal temporel aux points temporels (non équidistants) des points d'échantillonnage de révolution équidistants avant la transformation dans le domaine de révolution.

L'argument ResampleMethod peut avoir les valeurs suivantes :

Constante

Signification

REVSYNCSAMPLING_RESAMPLE_LINEAR

Le signal temporel est évalué aux points temporels (non équidistants) des points d'échantillonnage équidistants de la révolution au moyen d'une interpolation linéaire avant d'être transformé dans le domaine de la révolution. Cela rend la transformation rapide, mais peut provoquer un aliasing dans le calcul ultérieur du spectre d'ordre.

REVSYNCSAMPLING_RESAMPLE_SPLINE

Le signal temporel est évalué aux points temporels (non équidistants) des points d'échantillonnage de révolution équidistants au moyen d'une interpolation spline avant d'être transformé dans le domaine de révolution. Par rapport au rééchantillonnage linéaire, l'interpolation spline est légèrement plus lente, mais l'aliasing est réduit.

REVSYNCSAMPLING_RESAMPLE_FFT

Le signal temporel est évalué par rééchantillonnage FFT aux points temporels (non équidistants) des points d'échantillonnage de révolution équidistants avant d'être transformé dans le domaine de révolution. Ici, le signal temporel est d'abord transformé dans le domaine fréquentiel, où des zéros sont ajoutés, puis retransformé dans le domaine temporel. Le rééchantillonnage au moyen de la transformée de Fourier conduit à un résultat presque idéal, car il n'ajoute aucune composante de signal à haute fréquence. Les effets d'aliasing dans le calcul du spectre d'ordre sont presque absents, mais le temps de calcul est considérablement augmenté.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut REVSYNCSAMPLING_RESAMPLE_LINEAR .

ResampleFactor

Spécifie le facteur par lequel le taux d'échantillonnage du signal temporel pour les méthodes de rééchantillonnage REVSYNCSAMPLING_RESAMPLE_SPLINE et REVSYNCSAMPLING_RESAMPLE_FFT est augmenté. L'argument continue à être ignoré si REVSYNCSAMPLING_RESAMPLE_LINEAR a été choisie comme méthode de rééchantillonnage.

Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés.

La valeur doit être supérieure ou égale à 2.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 2 .

OutputOptions

Précise les résultats qui doivent être renvoyés. Les résultats multiples sont renvoyés sous forme de liste. Si, par exemple, le signal transformé dans le domaine de révolution ainsi que les points temporels calculés pour les points d'échantillonnage de révolution doivent être renvoyés, l'argument doit contenir la valeur REVSYNCSAMPLING_OUTPUT_SIGNAL + REVSYNCSAMPLING_OUTPUT_TIME.

L'argument OutputOptions peut avoir les valeurs suivantes :

Constante

Signification

+ REVSYNCSAMPLING_OUTPUT_ALL

Tous les résultats disponibles.

+ REVSYNCSAMPLING_OUTPUT_SIGNAL

Le signal transformé dans le domaine de révolution. Le résultat est un signal.

+ REVSYNCSAMPLING_OUTPUT_SPEED

Le signal de vitesse transformé dans le domaine de révolution. Le résultat est un signal.

+ REVSYNCSAMPLING_OUTPUT_TIME

Les points temporels (non équidistants) associés aux points d'échantillonnage de la révolution. Le résultat est un signal.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut REVSYNCSAMPLING_OUTPUT_SIGNAL .

Remarques

L'algorithme du processus de transformation peut être décrit schématiquement comme suit :

Dans la littérature, la méthode est également appelée échantillonnage angulaire synchrone, analyse d'ordre calculé, échantillonnage synchrone ou rééchantillonnage adaptatif ; voir [1], [2], [3], [4], [5] et [6]. C'est une méthode efficace pour effectuer le suivi des ordres, puisque le spectre de fréquence ordinaire (temps) du signal converti dans le domaine de révolution fournit maintenant directement le spectre des ordres :

De la même manière, le filtrage passe-bande ordinaire (par exemple en utilisant un filtre passe-bande IIR approprié) peut être utilisé pour déterminer directement la courbe des ordres individuels dans le domaine de révolution (la courbe RMS par blocs des ordres filtrés est présentée ici) :

Note : L'analyse d'ordre par rééchantillonnage synchrone de révolution est très souple et peut également être effectué pour des ensembles de données de vitesse bruyants ou non monotones.

Les résultats sont accessibles en utilisant les noms d'éléments de liste suivants :

Constante

Description

.["Signal_over_Revolutions"]

Le signal transformé dans le domaine de révolution.

.["Speed_over_Revolutions"]

Le signal de vitesse transformé dans le domaine de révolution.

.["Time_over_Revolutions"]

Les points temporels (non équidistants) associés aux points d'échantillonnage de la révolution.

Vous pouvez également toujours sélectionner le Formulaname.Listelementname.

Remarque        Selon le théorème de l'échantillonnage, théoriquement, tous les ordres jusqu'à orderMax = 0.5*SamplingRate(Signal)/Maximum(Speed) peuvent être détectés et analysés. Donc si SamplesPerRevolution est calculé automatiquement, cette valeur est fixée à une valeur supérieure à deux fois la valeur de orderMax. Cela garantit que tous les ordres jusqu'à orderMax sont effectivement calculés au moyen de l'analyse de Fourier dans le spectre d'ordres, ce qui permet d'éviter autant que possible l'aliasing.

Disponible dans

Option Analyse d'ordre

Exemples

RevolutionSyncSampling(Signal, Speed)

Transforme un signal basé sur le temps dans le domaine de révolution.

Dim samplesPerRevolution = 64
Dim sigOverRev = RevolutionSyncSampling(Signal, Speed, samplesPerRevolution)
STFTSpectrum(sigOverRev, SPECTRUM_RMSAMPLITUDE,,, 8*samplesPerRevolution,,, 0)

Calcule le spectre d'ordre du signal échantillonné de manière synchrone à la vitesse en utilisant le spectre temps-fréquence (STFTSpectrum). Le spectre d'ordre est calculé jusqu'à l'ordre 32 (= samplesPerRevolution/2) et a une résolution d'ordre de 1/8. Note : Si le signal original contenait des ordres de grandeur supérieurs à 32, ceux-ci fausseraient le spectre d'ordre. Il en résulte des effets d'alias.

Dim sigOverRev = RevolutionSyncSampling(Signal, Speed, 0, 256)
STFTSpectrum(sigOverRev, SPECTRUM_RMSAMPLITUDE,,, 16*SamplingRate(sigOverRev),,, 0)

Calcule le spectre d'ordre du signal échantillonné de manière synchrone avec une résolution d'ordre de 1/16. Le nombre de points de données par tour est calculé automatiquement (mais est limité à 256). L'ordre théoriquement le plus grand apparaissant dans le signal peut donc encore être calculé dans l'analyse de Fourier ultérieure.

Dim samplesPerRevolution = 64
Dim sigOverRev = RevolutionSyncSampling(Signal, Speed, samplesPerRevolution)
Dim coeff = IIRPeakFilter(3, 0.5, samplesPerRevolution) // order = 3, bandwidth = 0.5
Dim filteredOrder = Filter(sigOverRev, coeff, TRUE)
Sample(filteredOrder, Signal.X)

Calcule la courbe temporelle du troisième ordre (par exemple pour les analyses acoustiques). Le troisième ordre filtré est calculé à l'aide d'un filtre passe-bande IIR ordinaire dans le domaine de révolution avec une fréquence centrale de bande de 3 et une largeur de bande d'ordre (symétrique) de 0,5. Elle est ensuite transformée pour revenir à la base de temps initiale.

Dim samplesPerRevolution = 64
Dim sigOverRev = RevolutionSyncSampling(Signal, Speed, samplesPerRevolution)
Dim coeff = IIRPeakFilter(3, 0.5, samplesPerRevolution) // order = 3, bandwidth = 0.5
Dim filteredOrder = Filter(sigOverRev, coeff, TRUE)
XOffsetScale(Mean(filteredOrder, MEAN_SQUARE + CALC_BLOCK, 128 * samplesPerRevolution)[0,-2], 128/2.)

Calcule la courbe RMS par bloc du troisième ordre du signal échantillonné de manière synchrone avec la vitesse (taille du bloc = 128 tours). Le troisième ordre filtré est calculé à l'aide d'un filtre passe-bande IIR ordinaire dans le domaine des révolutions avec une fréquence centrale de bande de 3 et une largeur de bande d'ordre (symétrique) de 0,5.

RevolutionSyncSampling(Signal, Speed,,,,, REVSYNCSAMPLING_OUTPUT_SIGNAL + REVSYNCSAMPLING_OUTPUT_TIME)

Renvoie le signal transformé dans le domaine de révolution ainsi que les points temporels associés aux révolutions.

Dim rev = ChangeUnit(Integral(Speed), "1") // Step 1
Dim rev_equid = (rev[-1]*128, 0, 1/128) // Step 2
Dim t_nonequid = Sample(rev.X, rev.Y, rev_equid, true)
Dim sig = Sample(Signal, t_nonequid, true) // Step 3
Signal(sig, rev_equid)

Code FPScript équivalent pour RevolutionSyncResampling(Signal, Speed, 128,,, REVSYNCSAMPLING_RESAMPLE_LINEAR).

Dim rev = ChangeUnit(Integral(Speed), "1") // Step 1
Dim rev_equid = (rev[-1]*128, 0, 1/128) // Step 2
Dim t_nonequid = Sample(rev.X, rev.Y, rev_equid, true)
Dim sig = Sample(Resample(Signal, 4, RESAMPLE_FFT), t_nonequid, true) // Step 3
Signal(sig, rev_equid)

Code FPScript équivalent pour RevolutionSyncResampling(Signal, Speed, 128,,, REVSYNCSAMPLING_RESAMPLE_FFT, 4).

Voir aussi

Fonction HarmonicRemovalFilter

Fonction Sample

Fonction Spline

Fonction Resample

Fonction STFTSpectrum

Fonction OrderCuts

Fonction IIRFilter

Fonction IIRPeakFilter

Fonction Integral

Option Analyse d'ordre

Objet d'analyse Échantillonnage Révolution Synchrone

Objet d'analyse Analyse d'ordre révolution synchrone

Objet d'analyse Filtre d'ordres

Analyse spectrale temps-fréquence - Objet d'analyse

Littérature

[1] K. R. Fyfe, E. D. S. Munck: Analysis of computed order tracking. Dans: Mechanical Systems and Signal Processing, Vol. 11, Issue 2, Pages 187-205. 1997.

[2] Jürgen Helmut Funck: Synchronous data acquisition with wireless sensor networks. Dans: Chichester, UK: John Wiley and Sons. 2011.

[3] Bonnardot, F. et al.: Use of the acceleration signal of a gearbox in order to perform angular resampling (with limited speed fluctuation). Dans: Mechanical Systems and Signal Processing, Vol. 19, Issue 4, Pages 766-785. 2005.

[4] J. Blough: Adaptive Resampling - Transforming from the time to the Angle domain. Dans: 24th Conference and Exposition on Structural Dynamics, IMAC-XXIV. 2006.

[5] J. Blough: A survey of DSP methods for rotating machinery analysis, what is needed, what is available. Dans: Journal of Sound and Vibration, Vol. 262, Issue 3, Pages 707-720. 2003.

[6] A. Brandt: Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Dans: John Wiley and Sons, Ltd., Chichester. 2011.

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :