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 une analyse d'ordre, car le spectre de fréquence du signal converti dans le domaine de rotation fournit directement le spectre d'ordre. 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, le Speed, le [ SamplesPerRevolution Variable 0 ], le [ SamplesPerRevolutionLimit Variable 256 ], le [ ResampleMethod Variable REVSYNCSAMPLING_RESAMPLE_LINEAR ], le [ ResampleFactor Variable 2 ] [ , le OutputOptions Variable REVSYNCSAMPLING_OUTPUT_SIGNAL ])
La syntaxe de la fonction RevolutionSyncSampling se compose des éléments suivants :
Section |
Description |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Signal |
Le signal échantillonné en fonction du temps, qui doit être transformé dans la plage de rotation équidistante. L'unité du composant X doit être compatible avec l'unité Secondes (si la surveillance des unités est activée). Si aucune unité du composant X n'est indiquée ou si la surveillance 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, le 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é en fonction du temps, à partir duquel la plage de rotation est déduite. L'unité du composant Y doit être compatible avec l'unité 1/min (ou RPM = tours par minute) (si la surveillance des unités est activée). Si aucune unité du composant Y n'est indiquée ou si la surveillance des unités est désactivée, l'unité est toujours interprétée comme 1/min. L'unité du composant X doit être compatible avec l'unité Secondes (si la surveillance des unités est activée). Si aucune unité du composant X n'est indiquée ou si la surveillance des unités est désactivée, l'unité est toujours interprétée en secondes. Le taux d'échantillonnage ne doit pas nécessairement correspondre au taux d'échantillonnage de Signal correspond à celle de l'image. S'il s'agit d'une valeur unique, on suppose que le signal à transformer a été enregistré à 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, le 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 la plage de rotation (nombre de points de données par rotation). La moitié de la valeur détermine l'ordre maximum qui peut même être calculé par l'analyse de Fourier selon le théorème d'échantillonnage. Il faut fixer une valeur telle qu'au-delà de la moitié de cette valeur, tous les autres ordres sont négligeables. Sinon, il y a aliasing (selon le théorème d'échantillonnage). La valeur par défaut 0 choisit une valeur automatique, de sorte que l'ordre théoriquement le plus grand apparaissant dans le signal peut encore être calculé au moyen d'une analyse de Fourier dans le spectre d'ordre. Pour limiter la taille de l'ensemble de données qui en résulte, 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. Il faut fixer une valeur telle qu'au-delà de la moitié de cette valeur, tous les autres ordres sont négligeables. Sinon, il y a aliasing (selon le théorème d'échantillonnage). L'argument n'est pas pris en compte si SamplesPerRevolution n'est pas calculé automatiquement, c.-à-d. si pour SamplesPerRevolution une valeur supérieure à 0 a été choisie. 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 |
Indique le facteur par lequel la fréquence d'échantillonnage du signal temporel doit être réduite pour les procédures de rééchantillonnage REVSYNCSAMPLING_RESAMPLE_SPLINE et REVSYNCSAMPLING_RESAMPLE_FFT est augmenté. L'argument n'est pas pris en compte si la méthode de rééchantillonnage est REVSYNCSAMPLING_RESAMPLE_LINEAR a été choisie. 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 |
Spécifie les résultats à renvoyer. Les résultats multiples sont présentés sous forme de liste. Si, par exemple, le signal transformé dans la plage de rotation ainsi que les points temporels calculés pour les points d'appui de rotation doivent être édités, l'argument doit avoir la valeur REVSYNCSAMPLING_OUTPUT_SIGNAL + REVSYNCSAMPLING_OUTPUT_TIME contient. 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, le procédé est également appelé Synchronous Angular Sampling, Computed Order Tracking, Synchronous Sampling ou encore Adaptive Resampling, voir [1], [2], [3], [4], [5] et [6]. Il s'agit d'une méthode efficace pour effectuer une analyse d'ordre, car le spectre de fréquence (temporel) ordinaire du signal converti dans le domaine de rotation fournit désormais directement le spectre d'ordre :
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) :
Remarque : L'analyse de l'ordre au moyen du rééchantillonnage synchrone révolutionnaire est très flexible et peut également être effectuée pour des jeux de données de vitesse bruyants et non monotones.
Les résultats sont accessibles en utilisant les noms d'éléments de liste suivants :
Constante |
Signification |
---|---|
.["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 aussi toujours utiliser la syntaxe Formula.ListElementName.
Remarque Selon le théorème d'échantillonnage, tous les ordres jusqu'à orderMax = 0.5*SamplingRate(Signal)/Maximum(Speed) peuvent être détectés et analysés. Ainsi, si SamplesPerRevolution est calculée automatiquement, cette valeur est fixée à une valeur supérieure au double de orderMax est fixée. Cela garantit que tous les ordres jusqu'à orderMax peuvent être calculés dans le spectre d'ordre au moyen d'une analyse de Fourier et les effets d'alias peuvent ainsi être évités autant que possible.
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é en synchronisation avec la vitesse à l'aide du spectre temps-fréquence (STFTSpectrum-Fonction). Le spectre d'ordre est calculé jusqu'à l'ordre 32 (= samplesPerRevolution/2) et possède une résolution d'ordre de 1/8. Remarque : S'il y avait dans le signal d'origine des ordres significatifs en termes de valeur et supérieurs à 32, ceux-ci faussent 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é en synchronisation avec la vitesse 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 présent dans le signal peut donc encore être calculé lors de l'analyse de Fourier qui suit.
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 l'évolution temporelle du troisième ordre (par ex. pour les analyses acoustiques). Le troisième ordre filtré est calculé à l'aide d'un filtre passe-bande IIR ordinaire dans la plage de rotation 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é en synchronisation 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 la plage de rotation 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)
Le signal transformé dans la plage de rotation ainsi que les instants correspondant aux rotations sont retournés.
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
Objet d'analyse Spectre temps-fréquence
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, Isuue 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.