Fonctions Mathématiques
Calculs & Algorithmes
De la simple addition aux équations complexes, les fonctions mathématiques transforment vos données brutes en informations exploitables pour le pilotage de vos process.
Que sont les fonctions mathématiques dans TIA Portal ?
Les fonctions mathématiques dans TIA Portal permettent d'effectuer des calculs arithmétiques, trigonométriques et logarithmiques sur différents types de données (Entiers, Réels). Elles sont essentielles pour la mise à l'échelle de capteurs, le calcul de trajectoires ou la régulation de boucle PID.
TIA Portal se distingue par l'instruction CALCULATE, qui permet d'écrire une expression complexe (ex: (in1 + in2) * in3 / in4) en un seul bloc, améliorant ainsi la lisibilité par rapport à un enchaînement de boîtes individuelles ADD/MUL.
Arithmétique de Base
Les opérations fondamentales pour le traitement de données
CALCULATE — Calculer
CALCCe qu'il fait
Permet de définir une expression mathématique libre combinant plusieurs entrées (IN1...INn). Vous saisissez la formule et TIA Portal génère les pins correspondants.
Quand l'utiliser
Dès qu'un calcul nécessite plus de deux étapes. Idéal pour les calculs de débit, de volume ou toute formule physique complexe.
Conseils Pro
Vous pouvez utiliser des fonctions comme ABS, SQRT ou SIN directement dans l'expression CALCULATE.
Vérifiez toujours le type de données de sortie (OUT) pour éviter les débordements (Overflow).
En SCL, c'est l'équivalent naturel d'une affectation directe : out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+Ce qu'ils font
Instructions arithmétiques standard : Addition, Soustraction, Multiplication et Division.
Quand les utiliser
Pour des opérations simples et rapides entre deux valeurs.
Conseils Pro
En division (DIV), utilisez toujours le test |OK| ou vérifiez que le diviseur n'est pas nul pour éviter un arrêt du CPU.
L'instruction ADD peut accepter plus de deux entrées en cliquant sur l'icône jaune du bloc.
Pour les entiers, DIV retourne le quotient entier. Utilisez MOD pour le reste.
MOD — Modulo
MODCe qu'il fait
Retourne le reste de la division entière entre IN1 et IN2.
Quand l'utiliser
Gestion de tampons circulaires (ring buffers), alternance de cycles (ex: pompes 1 et 2), ou conversion d'unités (ex: secondes vers minutes/secondes).
Conseils Pro
Très utile pour déclencher une action tous les 'N' cycles.
Seulement disponible pour les types de données entiers (Int, DInt, etc.).
SCL : remainder := value1 MOD value2;
Signe & Incrémentation
Gestion du signe et opérations unitaires rapides
INC / DEC — Incrémenter / Décrémenter
++Ce qu'il fait
Ajoute ou soustrait 1 à la variable spécifiée (en InOut).
Quand l'utiliser
Compteurs de pièces simples, index de boucles, gestion de files d'attente.
Conseils Pro
Plus rapide à écrire qu'un bloc ADD ou SUB complet.
Attention au type de données : un incrément sur un Int à 32767 passera à -32768.
En SCL : i := i + 1; ou INC(i);
ABS — Valeur Absolue
ABSCe qu'il fait
Retourne la valeur positive d'un nombre, qu'il soit positif ou négatif au départ.
Quand l'utiliser
Calcul d'écart entre une mesure et une consigne, mesure de distance, calcul d'erreur PID.
Conseils Pro
Indispensable pour calculer une erreur absolue (|consigne - mesure|).
Supporte les entiers et les réels.
SCL : positiveVal := ABS(originalVal);
Min / Max / Limite
Sélection et bornage de valeurs
MIN / MAX — Minimum / Maximum
MINCe qu'il fait
Compare N valeurs et retourne la plus petite (MIN) ou la plus grande (MAX).
Quand l'utiliser
Sélection de la température la plus haute parmi plusieurs sondes, détermination de la vitesse minimale autorisée.
Conseils Pro
Vous pouvez ajouter autant d'entrées que nécessaire au bloc.
Très utile pour les diagnostics multi-capteurs.
SCL : peakValue := MAX(val1, val2, val3);
LIMIT — Limiter
LIMITCe qu'il fait
Borne (clamp) une valeur d'entrée (IN) entre un minimum (MN) et un maximum (MX).
Quand l'utiliser
Sécurité sur les sorties analogiques (ex: empêcher une vanne de s'ouvrir à plus de 80%), bridage de consignes utilisateur.
Conseils Pro
Remplace avantageusement une combinaison de MIN et MAX.
Si MN > MX, la sortie dépend du type de CPU, mais généralement c'est MX qui est pris.
SCL : safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
Puissances & Racines
Calculs exponentiels et radicaux
SQRT / SQR / EXPT
SQRTCe qu'ils font
SQRT (Racine carrée), SQR (Carré), EXPT (Puissance personnalisée).
Quand les utiliser
Calculs de géométrie, conversion de signaux non-linéaires, physique des fluides.
Conseils Pro
SQRT d'un nombre négatif donne NaN. Testez toujours l'entrée ou utilisez ABS.
EXPT est gourmand en cycles CPU, utilisez SQR pour les carrés simples.
SCL : area := 3.14 * SQR(radius);
Trigonométrie
Calculs d'angles et de rotations
SIN / COS / TAN / ASIN...
SINCe qu'ils font
Calculs trigonométriques standard et leurs inverses (arcsin, arccos, arctan). Les angles sont toujours en RADIANS.
Quand les utiliser
Cinématique de robots, calculs de positionnement angulaire, traitement de signaux oscillants.
Conseils Pro
Pour convertir des degrés en radians : Radians = Degrés * (PI / 180).
TAN(PI/2) tend vers l'infini, surveillez vos entrées.
Utilisez les constantes système pour PI afin de garantir la précision.
Fonctions Avancées
Logarithmes et parties fractionnaires
LN / EXP / FRAC
LNCe qu'ils font
LN (Log naturel), EXP (Exponentielle e^x), FRAC (Extrait la partie décimale).
Quand les utiliser
Modélisation de processus chimiques, croissance exponentielle, ou séparation d'unités (FRAC).
Conseils Pro
FRAC(12.34) retourne 0.34. Très pratique pour les calculs de précision temporelle.
EXP est l'inverse exact de LN.
SCL : fraction := FRAC(totalValue);
Comparaison des approches de calcul
LAD vs SCL — Quelle méthode choisir ?
| Type de calcul | Méthode recommandée | Pourquoi ? |
|---|---|---|
| Addition simple | Bloc ADD (LAD) | Visuel et facile à suivre |
| Formule complexe | Bloc CALCULATE | Compact et réduit le nombre de réseaux |
| Algorithme mathématique | Langage SCL | Syntaxe proche du C/Pascal, idéal pour les formules |
| Calcul trigonométrique | SCL ou CALCULATE | Les boîtes individuelles sont trop encombrantes |
| Bornage de signal | Bloc LIMIT | Standard Siemens, très robuste |
| Remise à zéro d'index | Instruction INC/DEC | Très rapide à implémenter |
Foire Aux Questions
Quel est l'avantage de CALCULATE par rapport à plusieurs blocs ADD/MUL ?
CALCULATE réduit considérablement l'espace occupé dans le programme. Au lieu de 5 réseaux avec des variables temporaires intermédiaires, vous avez un seul bloc avec une formule lisible. C'est aussi plus facile à maintenir si la formule change.
Comment TIA Portal gère-t-il les erreurs de calcul (ex: division par zéro) ?
Sur S7-1200/1500, une erreur mathématique ne stoppe pas forcément le CPU (selon config), mais le résultat devient NaN. Il est CRITIQUE d'utiliser l'instruction |OK| après un calcul sensible pour valider le résultat avant de l'utiliser.
Les fonctions trigonométriques utilisent-elles des degrés ou des radians ?
Toutes les fonctions (SIN, COS, TAN, etc.) utilisent exclusivement des RADIANS. Si votre IHM fournit des degrés, vous devez multiplier la valeur par 0.01745329 (PI/180) avant de l'injecter dans le bloc.
Puis-je faire des calculs sur 64 bits (LReal) ?
Oui, les S7-1500 supportent nativement le type LReal (Long Real) pour une précision accrue. La plupart des fonctions mathématiques acceptent ce type.