Opérations de Conversion
Mise à l'échelle & Types
La conversion de données est le pont entre le monde physique et le code numérique. Maîtrisez la mise à l'échelle des signaux analogiques et la transformation des types de données.
Que sont les opérations de conversion dans TIA Portal ?
Les opérations de conversion permettent de transformer une valeur d'un type de données vers un autre (ex: un Entier vers un Réel) ou de manipuler la précision des nombres flottants. Elles incluent également les outils de normalisation et de mise à l'échelle, indispensables pour traiter les signaux analogiques des capteurs industriels.
TIA Portal propose des instructions modernes et performantes comme SCALE_X et NORM_X qui remplacent avantageusement les anciens blocs SCALE/UNSCALE des systèmes S7-300, offrant une plus grande flexibilité et une meilleure précision mathématique.
Conversion de Type
Transformation et arrondi des formats numériques
CONVERT — Convertir valeur
CONVCe qu'il fait
Convertit une valeur d'un type de données source vers un type de données destination. Gère les conversions entre entiers, réels, caractères, et même les formats de temps ou de chaînes.
Quand l'utiliser
Préparer un entier pour un calcul mathématique complexe en le passant en Real, ou convertir un code d'erreur en String pour l'affichage IHM.
Conseils Pro
En LAD, cliquez sur les types de données du bloc pour sélectionner la source et la cible.
En SCL, utilisez simplement le nom du type destination comme fonction : myReal := INT_TO_REAL(myInt);
Attention aux pertes de précision lors de la conversion de types larges vers des types plus courts.
ROUND / TRUNC
ROUNDCe qu'ils font
ROUND arrondit un nombre flottant à l'entier le plus proche. TRUNC supprime simplement la partie décimale (troncature).
Quand l'utiliser
Afficher une mesure physique sous forme d'entier simple, ou convertir un résultat de calcul Real vers un index de tableau (Int).
Conseils Pro
Si la partie décimale est exactement .5, ROUND arrondit à l'entier pair le plus proche (norme IEC).
TRUNC est préférable si vous souhaitez uniquement ignorer les décimales sans calcul d'arrondi.
Les deux acceptent Real/LReal en entrée et retournent généralement un DInt.
CEIL / FLOOR
CEILCe qu'ils font
CEIL (Plafond) génère l'entier supérieur ou égal. FLOOR (Plancher) génère l'entier inférieur ou égal.
Quand l'utiliser
Calculer le nombre de bacs nécessaires (toujours arrondir au supérieur avec CEIL), ou déterminer des limites de sécurité.
Conseils Pro
CEIL(10.1) = 11 ; FLOOR(10.9) = 10.
Indispensable pour les algorithmes de colisage et de logistique.
Très utile pour s'assurer qu'une valeur reste dans des bornes entières strictes.
Mise à l'échelle (Scaling)
Traitement des signaux analogiques et grandeurs physiques
NORM_X — Normaliser
NORM_XCe qu'il fait
Transforme une valeur située dans une plage [MIN..MAX] vers une valeur normalisée entre 0.0 et 1.0. C'est la première étape du traitement analogique.
Quand l'utiliser
Lire une entrée analogique brute (ex: 0-27648) et la transformer en un pourcentage (0.0-1.0).
Conseils Pro
Généralement suivi immédiatement d'un bloc SCALE_X.
Si l'entrée dépasse les bornes MIN/MAX, la sortie dépassera 0.0 ou 1.0 (linéarité conservée).
Assurez-vous que MIN est différent de MAX pour éviter une division par zéro.
SCALE_X — Mettre à l'échelle
SCALE_XCe qu'il fait
Prend une valeur normalisée [0.0..1.0] et la projette sur une plage physique définie par MIN et MAX (ex: 0-100°C ou 0-10 bars).
Quand l'utiliser
Convertir le résultat d'un NORM_X en une unité d'ingénierie lisible par l'opérateur.
Conseils Pro
La combinaison NORM_X + SCALE_X est la méthode standard Siemens pour le scaling analogique moderne.
Permet de changer facilement de gamme de capteur sans modifier tout le programme.
Peut aussi être utilisé pour l'inverse : envoyer une consigne physique vers une sortie analogique.
Instructions Legacy
Compatibilité avec S7-300 (FC105 / FC106)
SCALE / UNSCALE
Ce qu'il fait
Anciens blocs (Legacy) qui effectuent la conversion directe entre valeur entière analogique et valeur réelle physique en une seule étape.
Quand l'utiliser
Uniquement lors de la maintenance de programmes migrés depuis Step 7 Classic.
Conseils Pro
SCALE correspond au FC105 de l'ancienne bibliothèque.
Utilise un paramètre BIPOLAR pour gérer les signaux négatifs (ex: +/- 10V).
Préférer systématiquement NORM_X/SCALE_X pour les nouveaux développements sur S7-1200/1500.
Comparaison des méthodes de conversion
Choisir la bonne instruction selon votre besoin
| Vous voulez... | Instruction recommandée | Exemple |
|---|---|---|
| Changer le type (Int -> Real) | CONVERT | Calcul précis avec un compteur |
| Supprimer les décimales | TRUNC | Affichage température simplifiée |
| Arrondir mathématiquement | ROUND | Calcul de pièces statistiques |
| Traiter un capteur 4-20mA | NORM_X + SCALE_X | Capteur de pression 0-16 bar |
| Arrondi de sécurité haut | CEIL | Calcul du nombre de palettes |
| Ancien code S7-300 | SCALE (FC105) | Migration de projet machine |
Foire Aux Questions
Pourquoi utiliser NORM_X et SCALE_X au lieu d'un seul bloc ?
Cette séparation en deux étapes permet une plus grande flexibilité. Vous pouvez par exemple filtrer ou limiter la valeur normalisée (0.0-1.0) avant de la mettre à l'échelle, ou utiliser la même valeur normalisée pour plusieurs échelles différentes.
Quelle est la valeur d'entrée standard pour une entrée analogique Siemens ?
Pour la plupart des modules Siemens (S7-1200/1500), la plage numérique est de 0 à 27648 pour un signal unipolaire (0-10V ou 4-20mA). C'est cette valeur que vous injectez dans le paramètre VALUE de NORM_X.
Comment convertir un nombre en chaîne de caractères (String) ?
L'instruction CONVERT gère nativement la conversion vers String. Pour plus de contrôle sur le formatage (nombre de décimales), utilisez l'instruction VAL_STRG.
Quelle est la différence entre ROUND et TRUNC ?
ROUND arrondit à l'entier le plus proche (10.6 devient 11), tandis que TRUNC coupe les décimales sans regarder leur valeur (10.6 devient 10).