Table of Contents

Operators and mathematical function

Parallèlement aux opérateurs basiques proposés dans DEWESoft (Opérateurs basiques) il existe d’autres fonctions regroupées dans 6 onglets (Autres fonctions Maths).

DEWESoft supporte les voies tableau -> voir -> Formules pour les tableaux.

Pour des informations supplémentaires sur d’autres fonctions mathématiques, voir :

Opérateurs basiques

DEWESoft propose les opérateurs basiques suivants :

Maths général

Fonction Syntaxe Description
+ expression1 + expression2 expression1 plus expression2
- expression1 - expression2 expression1 moins expression2
× expression1 * expression2 multiplie expression1 par expression2
/ expression1 / expression2 divise expression1 par expression2
( ) (expression) paranthèses
^ expression1 ^ expression2 met expression1 à la puissance expression2
DIV expression1 DIV expression2 division entière de expression1 par expression2
MOD expression1 MOD expression2 division avec reste de expression1 par expression2

DIV division entière (Donne la partie entière de la division)

  • 420 DIV 720 = 0
  • 740 DIV 720 = 1

MOD (Donne le reste d’une division) MOD utilise l’équation suivante :

$$ a\ MOD\ b = a - b * trunc\left(\frac{a}{b}\right)$$ ou “trunc” est une fonction de troncature.

Examples:

  • 420 MOD 720 = 420
  • 740 MOD 720 = 20
  • -8 MOD 3 = -2
  • 8 MOD -3 = 2

Types de fonctions mathématiques

Toutes les fonctions ont une petite aide. Lorsque vous passez le pointeur de la souris sur l’une d’elle, une petite bulle d’information apparaitra et vous donnera la syntaxe et l’explication de la fonction.

Fonctions

L’onglet Fonctions contient d’autres fonctions maths.

MATH_other_math_functions

Fonction Syntaxe Description
SQR SQR(expression) carré
SQRT SQRT(expression) racine carrée
ABS ABS(expression) valeur absolue
SGN SGN(expression) expression > 0 : résultat = 1, expression = 0: résultat = 0, expression < 0: résultat = -1
TRUNC TRUNC(expression) tronque à l’entier
ROUND ROUND(expression) arrondi à l’entier le plus proche
RND RND nombre aléatoire entre 0 & 1
LOG2 LOG2(expression) logarithme (base 2)
LOG10 LOG10(expression) logarithme (base 10)
LN LN(expression) logarithme népérien
EXP EXP(expression) exponentiel (expression)
IF IF(expression) créer fonction conditionnelle
NAN NAN not a number
MAX MAX(expression) calcule le max de l’expression
MIN MIN(expresion) calcule le min de l’expression

Exemples et explications de fonctions :

SQR - carré sqr(4)= 16, sqr(-3)= 9 Le carré d’un nombre est le nombre multiplié par lui même. Peu importe que le nombre soit positif ou négatif, le résultat sera toujours positif.
SQRT - racine carrée sqrt(16) = 4, sqrt(9) = 3 La racine carrée d’un nombre (inverse de SQR)

INFO: Dans DEWESoft, le résultat de la racine carrée d’un nombre négatif sera toujours 0 et pas un nombre complexe.

ABS - valeur absolue ABS(45.34) = 45.34, ABS(-33.12) = 33.12, ABS(0) = 0 Calcule la valeur absolue d’un nombre ou d’une voie.
SGN - Sign sgn(-8.124) = -1, sgn(19.345) = 1, sgn(0) = 0 La fonction SIGN renvoie 0 si la voie d’entrée ou le nombre est 0.
TRUNC - fonction de troncature Trunc(1452.457) = 1452, Trunc(-1452.457) = -1452 Convertit un nombre en entier. Un nombre ou une voie convertie par la fonction TRUNC va perdre tout ce qu’il y a derrière sa virgule. Il deviendra un entier. Il n’est pas arrondi : Trunc(86.248) = 86 et aussi Trunc(86.848) va renvoyer 86

Exemple: Convertir les données GPS CAN en deg:min,xxx

MATH_othermathfunctions_SIGNALS

Les données d’un VGPS sont reçues via un bus CAN et il faut les convertir en deg:min,xxx. Elles sont en minutes décimales comme montré ci-dessous. Grâce aux fonctions maths, nous pouvons réaliser cette conversion. Le résultat est affiché ci-dessous.

dws_math_example_trunc_3

MATH: trunc(‘Latitude’/60) diviser par 60 va convertir les données de minutes à degrés et la fonction trunc va supprimer les chiffres après la virgule. -> résultat [°].

((‘Latitude’*100000) mod 6000000) / 100000 va donner la valeur en minutes et le reste de la division.

La fonction mod renvoie seulement la valeur entière du reste de la division, il faut donc multiplier la latitude par 100000 et utiliser la fonction mod sur 60 x 100000 = 6000000 et diviser ce résultat par 100000 pour avoir la bonne valeur.

ROUND - fonction arrondi round(14.43) = 14, round(14.501) = 15, round(-14.492) = -14, round(-14.51) = -15 Arrondi un nombre ou une voie, dépendamment du nombre de chiffres après la virgule, à l’entier le plus proche. 3.xxx si xxx est plus grand ou égal à 0.5, le résultat sera l’arrondi à l’entier supérieur suivant.

Conseil: Si vous voulez arrondir 14.43 à 10, ou 136.3724 à 140 divisez simplement la valeur ou la voie par 10, arrondissez le résultat et multipliez le à nouveau par 10.

round(13.63724)*10 = 140

Si vous voulez arrondir 136.3724 à 136.4 multipliez la valeur ou la voie par 10; arrondissez le résultat et divisez le à nouveau par 10.

round (1363.724)/10 = 136.4

RND - random (aléatoire) RDN Crée un nombre aléatoire entre 0 et 1 à la fréquence d’échantillonnage sélectionnée. Si une fréquence de 1000Hz est sélectionnées, 1000 valeurs par seconde seront créées.
LOG2 - Logarithme base 2 Log2(8) = 3, Log2(a) = b Calcule le logarithme (base 2) d’un nombre ou d’une voie. Le logarithme extrait b d’une équation type 2b = a.
LOG10 - Logarithme base 10 Log10(100) = 2, Log10(a) = b Calcule le logarithme (base 10) d’un nombre ou d’une voie. Le logarithme extrait b d’une équation type 10b = a.
LN- Logarithme Népérien base e LN(100) = 2, LN(a) = b Calcule le logarithme népérien (base e=2.71828…) d’un nombre ou d’une voie. Le logarithme extrait b d’une équation type 2.71828b = a.
EXP - fonction exponentielle EXP(1) = 2.71828, EXP(b) = a Calcule l’exponentiel d’un nombre ou d’une voie.
IF/NAN - Déclaration conditionnelle & fonction “Not A Number” IF(condition,résultat1,résultat2) Renvoie le résultat1 ou le résultat2 selon la condition. La condition attend une entrée vraie ou fausse.

EXEMPLE: (voie >= 12)

Si la voie est supérieure ou égale à 12, la condition est vérifiée et le résultat1 sera alors vrai. Sinon, la condition n’est pas vérifiée et le résultat2 sera vrai.

Exemple: IF(‘ID’>=1,’vitesse’,’déplacement’)

‘ID’, ‘vitesse’, et ‘déplacement’ sont des voies analogiques.

Si la voie ID est supérieur ou égal à 1, la déclaration est vraie et la voie vitesse sera choisie comme sortie, sinon ce sera déplacement. Donc selon le résultat de la déclaration conditionnelle, le résultat sera soit vitesse soit déplacement (impossible d’avoir les deux en même temps).

NAN(not a number)

Exemple: if(‘STWH_ANGLE’>=90,’vitesse’,NAN)

‘STWH_ANGLE’ = voie CAN (asynchrone)

‘vitesse’ \= voie analogique (synchrone)

Le résultat de cette déclaration conditionnelle sera un NAN si STWH_Angle est plus petit que 90° et sera de plus, asynchrone. Sinon, le résultat sera une valeur synchrone (vitesse) et NAN deviendra 0.

dws_math_example_nan

L’image ci-dessus montre les paramètres de la base temporelle d’une voie maths. La voie asynchrone doit être réglée sur “actif” pour pouvoir la sélectionner dans la formule. L’interpolation doit être reglée sur “jamais”.

MAX - Fonction de recherche du maximum entre deux voies MAX(Voie1,Voie2) Compare les deux voies et renvoie la valeur max de l’une des deux voies.

Exemple: max(‘pression1’,’pression2’)

pression1 et pression2 sont deux voies analogiques.

pression1 3 4 6 8
pression2 2 5 4 7
résultat 3 5 6 8

NOTE: Vous pouvez utiliser plus de deux entrées dans la formule.

max(max(‘pression1’,’pression2’),’pression3’)

Trigonometrie

L’onglet Trigonométrie contient toutes les fonctions basiques relatives à des calculs d’angles.

MATH_othermathfunctions_TRIG

Fonction Syntaxe Description
SIN SIN(expression) sinus de l’expression
COS COS(expression) cosinus de l’expression
TAN TAN(expression) tangente de l’expression
PI PI constante pi
ASIN ASIN(expression) arc-sinus de l’expression
ACOS ACOS(expression) arc-cosinus de l’expression
ATAN ATAN(expression) ou ATAN(x,y)arc-cosinus de l’expression arc-tangente de l’expression ou arc-tangente de x/y

Logique

L’onglet Logique contient les fonctions logiques de base. Les opérateurs logiques OR, AND, NOT & XOR ne fonctionnent qu’avec des valeurs digitales pures : 0 et 1. Les voies ou valeurs analogiques doivent être converties en digital avant d’utiliser ces opérateurs (exemple ‘vitesse’<100).

Fonction Syntaxe Description
\< expression1 \< expression2 si expression1 est inférieure à expression2 le résultat est 1, sinon 0
\= expression1 = expression2 si expression1 est égale à expression2 le résultat est 1, sinon 0
> expression1 > expression2 si expression1 est supérieure à expression2 le résultat est 1, sinon 0
\<= expression1 \<= expression2 si expression1 est inférieure ou égale à expression2 le résultat est 1, sinon 0
\<> expression1 \<> expression2 si expression1 est différente de expression2 le résultat est 1, sinon 0
>= expression1 >= expression2 si expression1 est supérieure ou égale à expression2 le résultat est 1, sinon 0
NOT NOT expression négation; expression = 0: 1; expression = 1: 0;
AND expression1 AND expression2 ET logique, 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0
OR expression1 OR expression2 OU logique, 1 OR 1 = 1, 1 OR 0 = 1, 0 OR 1 = 1, 0 OR 0 = 0
XOR expression1 XOR expression2 OU exclusif logique, 1 XOR 1 = 0, 1 XOR 0 = 1, 0 XOR 1 = 1, 0 XOR 0 = 0

Signaux

Selon votre application, différents signaux peuvent être nécessaires. Vous pouvez génerer des signaux basiques dans l’onglet Signaux.

Fonction Syntaxe Description
SCNT SCNT Nombre d’échantillons acquis
SR SR Fréquence d’échantillonnage
TIME TIME Temps écoulé (en secondes)
SINE SINE(f [,ps]) Génère un signal sinusoïdal de fréquence f [Hz] avec phase optionnelle ps [radian]
SQUARE SQUARE(f [,ps ]) Génère un signal carré de fréquence f [Hz] avec phase optionnelle ps [radian]
TRIAN TRIAN(f [,ps]) Génère un signal triangle de fréquence f [Hz] avec phase optionnelle ps [radian]
NOISE NOISE Génère du bruit de mesure (nombre aléatoire entre ±1)

Exemple et explication de signaux:

Compteur d’échantillons - Renvoie le nombre d’échantillons acquis depuis le début de la mesure. Le compteur sera réinitialisé au lancement de l’enregistrement.

dws_math_example_signals_scnt_1

dws_math_example_signals_scnt_2

L’image du dessus montre le résultat et l’image du dessous, la réinitialisation au lancement de l’enregistrement.

Creation signal angulaire

EXEMPLE: Si une horloge externe est utilisée et que le signal doit être affiché dans un graph XY, nous pouvons créer un signal angulaire avec l’aide de la fonction mod.

Supposons que nous utilisons un codeur de 720pulses/rev.

SCNT MOD 720 va renvoyer un signal en dents de scie de 0 à 720. Pour connaitre l’angle, il faut multiplier par 0.5. Nous aurons donc cette formule :

SCNT MOD 720 * 0.5

Cette formule peut être affichée dans un graph XY pour afficher le résultat angulaire.

Le seul inconvénient est que si le codeur renvoie des valeurs erronnées (bruit, spikes) l’angle sera incohérent.

TIME fonction temporelle Renvoie le temps écoulé depuis le début de la mesure en secondes.

Cette fonction est similaire à SCNT. La seule différence est qu’au lieu d’avoir un nombre d’échantillons, on aura le temps en secondes indépendamment de la cadence d’acquisition.

La fonction TIME est également réinitialisée au début de l’enregistrement.

La resolution est liée à la cadence d’échantillonnage.

L’image ci-dessous montre la fonction TIME dans un enrgistreur horizontal. On peut voir que la résolution est de 0,01s et que dt=10ms ce qui découle de la fréquence d’échantillonnage de 100Hz. Donc la fonction TIME va compter toutes les 0,01s à chaque échantillon pour une fréquence de 100Hz et toues les 0.001s pour une fréquence de 1kHz.

dws_math_example_signals_time

EXEMPLE: Affiche les valeurs moyennées toutes les 10s et exporte en Excel.

MATH: (Time MOD 60)

Cette fonction va créer un signal en dent de scie de période 60s. Sur l’image ci-dessous, le signal est utilisé comme voie trigger pour la fonction LATCH (verrouillage de valeur) pour moyenner une voie et l’afficher dans une liste. Les valeurs moyennées pourront être exportées dans Excel ou en fichier .txt en tant que valeurs asynchrones. Pour exporter de manière asynchrone, sélectionnez seulement les voies asynchrones à l’export.

dws_math_example_signals_time_1

dws_math_example_signals_time_2

NOTE: Les signaux générés ne peuvent être utilisés qu’en tant qu’aide pour les voies maths, les afficheurs ou l’enregistrement. Il est impossible de les utiliser comme sorties analogiques !

Si vous avez besoin de sorties analogiques, il faut utiliser l’option DEWESOFT-OPT-FG.

Pour des détails sur le Générateur de Fonctions, voir -> User Guide -> Channel Setup - Function Generator.

Mesure

Dans l’onglet Mesure, il existe différentes fonctions de mesure (temps ou amplitude). Il faut, encore une fois, utiliser des opérateurs logiques. Par exemple, écrire : ECNT(‘Input TTL’) et supposer que le comptage se fera pour chaque niveau haut, ne fonctionnera pas. La formule correcte serait plutôt ECNT(‘Input TTL’>2.5) ou ‘Input TTL’>2.5 renvoie 0 ou 1.

Pour d’autres exemples voir : -> Example of measure functions -> Example of stopwatch

PULSEWIDTH PULSEWIDTH(cond [, rearm ]) Mesure le temps [s] entre deux cond (cond est soit 0 soit 1), avec réarmement (rearm) optionnel
STOPWATCH STOPWATCH(cond1, cond2 ) Mesure le temps [s] entre les conditions cond1 et cond2 (cond est soit 0 soit 1)
MEASDIFF MEASDIFF(valeur, cond1, cond2) Mesure la différence d’amplitude entre cond1 et cond2 (cond est soit 0 soit 1)
EDGE EDGE(cond [, rearm ]) Renvoie 1 lorsque cond passe de 0 à 1 avec option de réarmement optionnelle
ECNT ECNT(cond ) Compte le nombre de fronts selon la condition cond (cond est soit 0 soit 1)
ICNT ICNT(cond ) Compte les échantillons si cond = 1
HOLD HOLD(value, cond [, rearm ]) Affiche et maintient la valeur lorsque cond passe de 0 à 1 avec option de réarmement optionnelle
TRIG TRIG Prend la valeur 1 lorsque le trigger d’enregistrement apparaît

Exemples et explications de formules Mesure :

HOLD - Fonction Hold

Hold(valeur, latch condition,[rearm condition])

La fonction Hold est utilisée pour verrouiller ou maintenir une valeur unique selon une condition.

EXEMPLE 1: **Hold(‘pression’, ‘Température’> 30)

Hold(valeur,latch condition)**

Dans cet exemple, la fonction va maintenir la valeur de pression actuelle si la température est supérieure ou égale à 30°C.

dws_math_example_hold_1

L’image ci-dessus montre la formule dans un enregistreur horizontal. À chaque fois que la température dépasse 30°C, la valeur de pression est verrouillée.

EXEMPLE 2: Hold(‘pression’, ‘Température’> 30, ‘Température’< 28) Hold(valeur, latchcondition, [rearmcondition])

La formule peut être étoffée avec une option de réarmement rearmcondition’. Après que ‘latchcondition’ apparaît, ‘rearmcondition’ doit apparaître en 1er pour qu’une nouvelle ‘latchcondition’ soit prise en compte. C’est utile pour filtrer la ‘latchcondition’. S’il y a du bruit de mesure sur ‘latchcondition’ ou si elle fluctue sur 30°C +-0,2°C cela pourrait causer un verrouillage de valeur non souhaité.

dws_math_example_hold_2

L’image ci-dessus illustre cette fonction :

1. La température passe au dessus de 30°C -> LATCH 1 - flèche verte

2. La température descend en dessous de 30°C et remonte au dessus de 30°C -> pas de LATCH car la température n’a pas baissé jusqu’à 28°C, donc le verrouillage n’a pas eu lieu. - flèche rouge

3. La température descend en dessous de 28°C -> la condition de réarmement est atteinte - flèche bleue

4. La température passe au dessus de 30°C -> Un nouveau verrouillage se déclenche - flèche verte

EXEMPLE 3: Supprimer l’offset d’une voie.

HOLD(voie, condition) va verrouiller la valeur de la voie si la condition est vérifiée.

MATH: ‘pression’-hold(‘pression’,keypressed(49)>0.5)

La valeur verrouillée de la fonction hold est soustraite à la voie pression. LA fonction hold va verrouiller la valeur de pression si la déclaration ‘keypressed(49)>0.5’ devient vraie.

Donc même pendant la mesure, l’offset peut être corrigé sur une simple pression sur une touche du clavier. L’image ci-dessous nous montre l’exemple. La voie ‘keypressed(49)’ indique le moment de la pression de la touche clavier pour plus de compréhension.

dws_math_example_hold_3

Evènements {#Evènements}

L’onglet Évènements permet de définir des touches clavier comme signaux. À chaque pression sur la touche définie, le signal émettra un pic qu’on pourra afficher dans un enregistreur ou dans un scope.

Pour d’autres exemple, voir : -> Example of input events

Fonction Syntaxe Description
KEYPRESSED KEYPRESSED(ASCII code) Génère impulsion (transition de 0 à 1 et retour) si la touche avec le code ASCII correspondant est enfoncée.

EXEMPLE: KEYPRESSED(32) renvoie une impulsion si la touche Espace est enfoncée.

Exemples et explication de fonction Évènements :

keypressed(49) - produit un signal de 0 à 1 d’une durée de 1 échantillon si la touche [1] est enfoncée.

Quelques touches prédéfinie sont présentées dans l’onglet. Donc si vous cliquez sur le bouton [1], la ligne ‘keypressed(49)’ va automatiquement s’ajouter à votre formule.

MATH_othermathfunctions_EVENTS

dws_math_example_keypressed_2_pom

Preque toutes les touches peuvent être utilisées avec la fonction ‘keypressed’. La valeur entre crochets est le code décimale de la touche.

Ci-dessous vous trouverez une liste des touches les plus utilisées. Vous devrez les convertir depuis l’hexadécimal vers décimal. Donc [Key 1] ->31hex -> 49dec. La valeur décimale doit être entrée dans la fonction keypressed -> keypressed(49).

EXEMPLE: Verrouillage de valeur dans une liste

MATH_othermathfunctions_EVENTS

Ikona_Latch

MATH: keypressed(49) produit une impulsion de 0 à 1 avec une durée d’un échantillon si le bouton [1] est enfoncée.

Cela pourrait être utilisé dans une fonction Maths “Verrouillage de valeur” pour verrouiller une valeur moyenne d’une autre voie et la stocker dans une liste.

dws_math_example_keypressed_6