RevolutionSyncSampling (FPScript)
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 :
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 :
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
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.