Différentiation et intégration
Calcul infinitésimal (Calculus)
Dérivation « derive »1
La fonction derive() dérive le signal d'entrée par rapport au temps.
Sans configuration JSON, derive() calcule le quotient instantané entre deux instants d'évaluation
consécutifs. Ce mode simple n'a de sens que si le signal d'entrée est effectivement interpolable de manière linéaire, par exemple des valeurs mesurées échantillonnées de manière équidistante avec
#interpolateLin.
Pour les signaux équidistants, le mode grille est recommandé : avec fOut, le signal d'entrée est rééchantillonné sur une grille temporelle
régulière et dérivé avec un filtre différentiateur FIR glissant d'ordre nFilt. Le filtre FIR forme un quotient différentiel pondéré sur les derniers points de la grille et permet ainsi un compromis entre suppression du bruit et retard de phase.
Pour les signaux à plage de valeurs cyclique (par ex. compteur d'angle 0°..360° ou codeur incrémental avec débordement), le paramètre modulo active une correction de débordement. La fonction détecte les débordements à l'aide de la zone de débordement ovflz et corrige le gradient de manière qu'aucun saut de signe n'apparaisse dans le résultat de la dérivation.
y1 = derive(x);
y2 = derive(x, { fOut: <dbl>|'def'
, nFilt: <uint>
, reduction: <uint>
, modulo: <dbl>
, ovflz: <dbl>
});
| Propriété | Valeur | Description |
|---|---|---|
| fOut | def/<dbl> | Fréquence d'échantillonnage de sortie du mode grille en Hz. 'def' utilise le temps d'échantillonnage global (discreteSampleTimeMs). Valeur minimale : 0,1 Hz. |
| nFilt | <uint> | Ordre du filtre différentiateur FIR glissant. Des valeurs plus élevées réduisent le bruit au détriment du retard de phase. Effectif uniquement en mode grille. Par défaut : 2, plage de valeurs : |
| reduction | <uint> | Ne fournit qu'un point de grille calculé sur n. Permet un taux de sortie inférieur à fOut. Les valeurs ≤ 1 sont ignorées. |
| modulo | <dbl> | Active la correction de débordement pour les signaux cycliques. Indique la plage de valeurs complète (par ex. 360.0 pour des angles en degrés, 6.2832 pour des angles en radians). Plage de valeurs : |
| ovflz | <dbl> | Zone de débordement en proportion de modulo. Un débordement est détecté lorsque la nouvelle valeur occupe la zone et la valeur précédente la zone (ou inversement). Par défaut : 0,333, plage de valeurs : |
Comme le smartCORE n'écrit en règle générale les valeurs de signaux non équidistants dans un canal que lorsque la valeur a changé, la valeur entre deux points d'appui explicites doit toujours être supposée constante, et l'information sur le dernier intervalle d'échantillonnage réel fait défaut. Entre les points d'appui, c'est toujours la valeur du signal à gauche qui s'applique (bloqueur d'ordre zéro). Il en résulte une allure de signal en escalier.
Appliquer la dérivation à des signaux non équidistants à allure en escalier n'a aucun sens. Le résultat serait soit , soit
Intégration « integrate »
La fonction integrate() fournit l'intégrale temporelle de la fonction d'entrée x
Comme fournit toujours des points d'appui isolés à des instants non équidistants