Operazioni di Conversione
Scalatura e Tipi
La conversione dei dati è il ponte tra il mondo fisico e il codice digitale. Padroneggia la scalatura dei segnali analogici e la trasformazione dei tipi di dati.
Cosa sono le operazioni di conversione in TIA Portal?
Le operazioni di conversione consentono di trasformare un valore da un tipo di dati a un altro (es: da Intero a Reale) o di manipolare la precisione dei numeri a virgola mobile. Includono anche strumenti di normalizzazione e scalatura, indispensabili per elaborare i segnali analogici.
TIA Portal offre istruzioni moderne come SCALE_X e NORM_X che sostituiscono vantaggiosamente i vecchi blocchi SCALE/UNSCALE di S7-300, offrendo maggiore flessibilità e precisione.
Conversione di Tipo
Trasformazione e arrotondamento dei formati numerici
CONVERT — Converti valore
CONVCosa fa
Converte un valore da un tipo di dati sorgente a un tipo di dati destinazione. Gestisce conversioni tra interi, reali, caratteri, tempo e stringhe.
Quando usarlo
Preparare un intero per calcoli complessi convertendolo in Real, o convertire un codice errore in String per l'HMI.
Consigli Pro
In LAD, clicca sui tipi di dati del blocco per selezionare sorgente e destinazione.
In SCL: myReal := INT_TO_REAL(myInt);
Attenzione alle perdite di precisione durante la conversione da tipi grandi a tipi piccoli.
ROUND / TRUNC
ROUNDCosa fanno
ROUND arrotonda un numero mobile all'intero più vicino. TRUNC elimina semplicemente la parte decimale (troncamento).
Quando usarlo
Visualizzare una misura fisica come intero semplice o convertire un Real in un indice di array (Int).
Consigli Pro
Se la parte decimale è esattamente .5, ROUND arrotonda all'intero pari più vicino (norma IEC).
TRUNC è preferibile se si desidera solo ignorare i decimali senza arrotondamento.
Entrambi accettano Real/LReal e restituiscono generalmente un DInt.
CEIL / FLOOR
CEILCosa fanno
CEIL (Soffitto) genera l'intero superiore o uguale. FLOOR (Pavimento) genera l'intero inferiore o uguale.
Quando usarlo
Calcolare il numero di contenitori necessari (arrotondare sempre per eccesso con CEIL).
Consigli Pro
CEIL(10.1) = 11 ; FLOOR(10.9) = 10.
Essenziale per algoritmi di logistica.
Utile per assicurarsi che un valore rimanga entro limiti interi stretti.
Scalatura (Scaling)
Elaborazione di segnali analogici
NORM_X — Normalizza
NORM_XCosa fa
Trasforma un valore in un intervallo [MIN..MAX] in un valore normalizzato tra 0.0 e 1.0.
Quando usarlo
Leggere un ingresso analogico grezzo (es: 0-27648) e trasformarlo in percentuale.
Consigli Pro
Generalmente seguito da un blocco SCALE_X.
Se l'ingresso supera i limiti, l'uscita supererà 0.0 o 1.0.
Assicurarsi che MIN sia diverso da MAX.
SCALE_X — Scala
SCALE_XCosa fa
Prende un valore normalizzato [0.0..1.0] e lo proietta su un intervallo fisico (es: 0-100°C).
Quando usarlo
Convertire il risultato di NORM_X in un'unità di misura leggibile.
Consigli Pro
La combinazione NORM_X + SCALE_X è lo standard Siemens moderno.
Permette di cambiare i range dei sensori facilmente.
Può essere usato anche per inviare setpoint fisici a uscite analogiche.
Istruzioni Legacy
Compatibilità S7-300 (FC105 / FC106)
SCALE / UNSCALE
Cosa fa
Vecchi blocchi che eseguono la conversione diretta in un unico passaggio.
Quando usarlo
Manutenzione di programmi migrati da Step 7 Classic.
Consigli Pro
SCALE corrisponde al vecchio FC105.
Usa BIPOLAR per segnali negativi (+/- 10V).
Preferire NORM_X/SCALE_X per nuovi sviluppi.
Confronto dei metodi
Scegliere l'istruzione giusta
| Vuoi... | Consigliata | Esempio |
|---|---|---|
| Cambiare tipo (Int -> Real) | CONVERT | Calcolo preciso |
| Rimuovere decimali | TRUNC | Visualizzazione semplice |
| Arrotondare | ROUND | Statistiche |
| Sensore 4-20mA | NORM_X + SCALE_X | Pressione 0-16 bar |
| Arrotondamento eccesso | CEIL | Calcolo pallet |
| Codice S7-300 | SCALE (FC105) | Migrazione |
Domande Frequenti
Perché usare NORM_X e SCALE_X invece di un blocco unico?
Permette maggiore flessibilità per filtrare o limitare il valore normalizzato prima di scalarlo.
Qual è il valore standard per ingressi analogici Siemens?
Tipicamente 0 a 27648 per segnali unipolari.
Come convertire in String?
CONVERT lo fa nativamente, o usa VAL_STRG per più controllo.
Differenza tra ROUND e TRUNC?
ROUND arrotonda al più vicino, TRUNC taglia semplicemente i decimali.