← Toute la documentation

Signaux calculés

Panneau Signaux calculés définissant un nouveau signal nommé power à partir de l'expression torque multiplié par motor_speed

Un signal calculé est un nouveau canal dérivé d'un ou plusieurs canaux existants au moyen d'une formule, plutôt qu'un canal réellement enregistré par votre enregistreur de données - la même idée qu'un canal math/virtuel dans un outil comme ETAS MDA. Les formules s'écrivent en syntaxe mathjs, et les boutons d'insertion rapide de l'éditeur (abs, sqrt, min, max, round, sin, cos, log, les opérateurs binaires, et les opérateurs de comparaison/logiques) sont des raccourcis, pas une liste restreinte - n'importe quelle fonction mathjs est disponible même sans bouton dédié.

Référencer des signaux

Un signal est référencé en tapant son nom exact comme identifiant nu dans l'expression, ou en faisant glisser son nom depuis la liste des signaux. Une formule peut référencer un autre signal calculé, pas seulement des canaux réels, de sorte qu'une formule peut être construite en couches : une conversion d'unité, un calcul physique construit sur cette valeur convertie, et un signal de seuil ou de classification construit sur ce calcul physique - chacun étant son propre signal nommé et réutilisable indépendamment, plutôt qu'une seule expression de plus en plus illisible.

Comment et quand une formule s'évalue réellement

C'est le point qui surprend les personnes venant d'une logique de tableur : un signal calculé est évalué une seule fois, immédiatement, au moment où vous le créez ou le modifiez - point par point sur chaque échantillon de la mesure actuellement chargée, et non comme une seule opération vectorisée sur un tableau. C'est un instantané, pas un recalcul en direct et réactif. Si vous revenez modifier un signal antérieur dont dépend un signal ultérieur, ce dernier conserve ses anciennes valeurs déjà calculées ; il ne se réexécute pas automatiquement simplement parce que quelque chose qu'il référence a changé. Pour récupérer les nouvelles valeurs, rouvrez et réenregistrez vous-même le signal dépendant.

Comme chaque canal d'une mesure chargée partage déjà une même grille temporelle rééchantillonnée (voir Premiers pas ci-dessus), le moteur de formules n'a jamais besoin d'interpoler ou d'aligner les entrées avant l'évaluation - il peut supposer une grille commune par construction.

Ce qui est réellement enregistré

Un fichier de configuration de session enregistre la formule de chaque signal calculé, pas les valeurs calculées qu'elle a produites. Rouvrir cette configuration - que ce soit sur le même fichier ou sur un fichier différent - réévalue chaque formule à neuf, par rapport à la mesure chargée à ce moment-là, dans l'ordre où elles ont été enregistrées à l'origine (de sorte qu'un signal enchaîné à partir d'un autre se résout toujours correctement). Si une formule enregistrée référence un canal absent du fichier nouvellement chargé, ce signal est silencieusement ignoré plutôt que de faire échouer le chargement complet.

Exemple concret. Avec les canaux réels torque (N·m) et motor_speed (rad/s), un signal calculé nommé power avec l'expression torque * motor_speed et l'unité W calcule la puissance mécanique à chaque échantillon. Un second signal calculé nommé power_kw, d'expression power / 1000, d'unité kW, référence le premier signal calculé par son nom pour le réexprimer dans une unité plus lisible - deux signaux nommés et visibles indépendamment plutôt qu'une seule formule difficile à vérifier.

Unités et nommage

Le champ unité d'un signal calculé est une étiquette en texte libre - aucune analyse dimensionnelle ne vérifie que le résultat réel d'une formule correspond à l'unité que vous avez saisie, de sorte que torque * motor_speed étiqueté m/s se calculerait sans protester, même si c'est la mauvaise unité. Chaque nom de signal, réel ou calculé, doit être unique au sein de sa mesure ; l'application impose cette règle dès que vous tentez d'enregistrer un signal calculé sous un nom déjà utilisé par un canal réel ou un autre signal calculé.

Erreurs

Une formule mal formée - une expression vide, des parenthèses non équilibrées, un opérateur en début ou fin d'expression, ou une syntaxe que mathjs lui-même rejette - est détectée au moment où vous enregistrez le signal, pas en continu pendant la saisie, et s'affiche sous forme d'erreur intégrée expliquant le problème.