Funzioni Matematiche
Calcoli e Algoritmi
Dalle semplici addizioni alle equazioni complesse, le funzioni matematiche trasformano i dati grezzi in informazioni utili per il controllo dei processi.
Cosa sono le funzioni matematiche in TIA Portal?
Le funzioni matematiche in TIA Portal consentono di eseguire calcoli aritmetici, trigonometrici e logaritmici su diversi tipi di dati (Interi, Reali). Sono essenziali per la scalatura dei sensori, il calcolo delle traiettorie o la regolazione dei loop PID.
TIA Portal si distingue per l'istruzione CALCULATE, che permette di scrivere un'espressione complessa (es: (in1 + in2) * in3 / in4) in un unico blocco, migliorando la leggibilità rispetto a una catena di blocchi individuali ADD/MUL.
Aritmetica di Base
Operazioni fondamentali per l'elaborazione dei dati
CALCULATE — Calcola
CALCCosa fa
Consente di definire un'espressione matematica libera combinando diversi ingressi (IN1...INn). Si inserisce la formula e TIA Portal genera i pin corrispondenti.
Quando usarlo
Non appena un calcolo richiede più di due passaggi. Ideale per calcoli di portata, volume o qualsiasi formula fisica complessa.
Consigli Pro
È possibile utilizzare funzioni come ABS, SQRT o SIN direttamente all'interno dell'espressione CALCULATE.
Verificare sempre il tipo di dati in uscita (OUT) per evitare overflow.
In SCL, è l'equivalente naturale di un'assegnazione diretta: out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+Cosa fanno
Istruzioni aritmetiche standard: Addizione, Sottrazione, Moltiplicazione e Divisione.
Quando usarle
Per operazioni semplici e veloci tra due valori.
Consigli Pro
Nella divisione (DIV), usare sempre il test |OK| o verificare che il divisore non sia zero per evitare l'arresto della CPU.
L'istruzione ADD può accettare più di due ingressi facendo clic sull'icona gialla del blocco.
Per gli interi, DIV restituisce il quoziente intero. Usare MOD per il resto.
MOD — Modulo
MODCosa fa
Restituisce il resto della divisione intera tra IN1 e IN2.
Quando usarlo
Gestione di buffer circolari, alternanza di cicli (es: pompe 1 e 2) o conversione di unità (es: secondi in minuti/secondi).
Consigli Pro
Molto utile per attivare un'azione ogni 'N' cicli.
Disponibile solo per tipi di dati interi (Int, DInt, ecc.).
SCL: remainder := value1 MOD value2;
Segno e Incremento
Gestione del segno e operazioni unitarie veloci
INC / DEC — Incrementa / Decrementa
++Cosa fa
Aggiunge o sottrae 1 dalla variabile specificata (in InOut).
Quando usarlo
Semplici contatori di pezzi, indici di loop, gestione code.
Consigli Pro
Più veloce da scrivere rispetto a un blocco ADD o SUB completo.
Attenzione al tipo di dati: un incremento su un Int a 32767 passerà a -32768.
In SCL: i := i + 1; o INC(i);
ABS — Valore Assoluto
ABSCosa fa
Restituisce il valore positivo di un numero, indipendentemente dal fatto che fosse inizialmente positivo o negativo.
Quando usarlo
Calcolo dello scostamento tra una misura e un setpoint, misurazione della distanza, calcolo dell'errore PID.
Consigli Pro
Essenziale per calcolare l'errore assoluto (|setpoint - misura|).
Supporta sia interi che reali.
SCL: positiveVal := ABS(originalVal);
Min / Max / Limite
Selezione e limitazione dei valori
MIN / MAX — Minimo / Massimo
MINCosa fa
Confronta N valori e restituisce il più piccolo (MIN) o il più grande (MAX).
Quando usarlo
Selezione della temperatura più alta tra diverse sonde, determinazione della velocità minima consentita.
Consigli Pro
È possibile aggiungere tutti gli ingressi necessari al blocco.
Molto utile per la diagnostica multi-sensore.
SCL: peakValue := MAX(val1, val2, val3);
LIMIT — Limita
LIMITCosa fa
Limita (clamp) un valore di ingresso (IN) tra un minimo (MN) e un massimo (MX).
Quando usarlo
Sicurezza sulle uscite analogiche (es: impedire l'apertura di una valvola oltre l'80%), limitazione dei setpoint utente.
Consigli Pro
Sostituisce vantaggiosamente una combinazione di MIN e MAX.
Se MN > MX, l'uscita dipende dal tipo di CPU, ma solitamente viene preso MX.
SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
Potenze e Radici
Calcoli esponenziali e radicali
SQRT / SQR / EXPT
SQRTCosa fanno
SQRT (Radice quadrata), SQR (Quadrato), EXPT (Potenza personalizzata).
Quando usarle
Calcoli geometrici, conversione di segnali non lineari, fisica dei fluidi.
Consigli Pro
La SQRT di un numero negativo dà NaN. Testare sempre l'ingresso o usare ABS.
EXPT richiede molti cicli CPU, usare SQR per i quadrati semplici.
SCL: area := 3.14 * SQR(radius);
Trigonometria
Calcoli di angoli e rotazioni
SIN / COS / TAN / ASIN...
SINCosa fanno
Calcoli trigonometrici standard e i loro inversi (arcsin, arccos, arctan). Gli angoli sono sempre in RADIANTI.
Quando usarle
Cinematica dei robot, calcoli di posizionamento angolare, elaborazione di segnali oscillanti.
Consigli Pro
Per convertire gradi in radianti: Radianti = Gradi * (PI / 180).
TAN(PI/2) tende all'infinito, monitorare gli ingressi.
Usare le costanti di sistema per PI per garantire la precisione.
Funzioni Avanzate
Logaritmi e parti frazionarie
LN / EXP / FRAC
LNCosa fanno
LN (Log naturale), EXP (Esponenziale e^x), FRAC (Estrae la parte decimale).
Quando usarle
Modellazione di processi chimici, crescita esponenziale o separazione di unità (FRAC).
Consigli Pro
FRAC(12.34) restituisce 0.34. Molto pratico per calcoli di precisione temporale.
EXP è l'esatto inverso di LN.
SCL: fraction := FRAC(totalValue);
Confronto degli approcci di calcolo
LAD vs SCL — Quale metodo scegliere?
| Tipo di calcolo | Metodo raccomandato | Perché? |
|---|---|---|
| Addizione semplice | Blocco ADD (LAD) | Visuale e facile da seguire |
| Formula complessa | Blocco CALCULATE | Compatto e riduce il numero di segmenti |
| Algoritmo matematico | Linguaggio SCL | Sintassi simile a C/Pascal, ideale per le formule |
| Calcolo trigonometrico | SCL o CALCULATE | I blocchi individuali sono troppo ingombranti |
| Limitazione segnale | Blocco LIMIT | Standard Siemens, molto robusto |
| Reset indice | Istruzione INC/DEC | Molto veloce da implementare |
Domande Frequenti
Qual è il vantaggio di CALCULATE rispetto a più blocchi ADD/MUL?
CALCULATE riduce notevolmente lo spazio occupato nel programma. Invece di 5 segmenti con variabili temporanee intermedie, si ha un unico blocco con una formula leggibile. È anche più facile da mantenere se la formula cambia.
Come gestisce TIA Portal gli errori di calcolo (es: divisione per zero)?
Su S7-1200/1500, un errore matematico non arresta necessariamente la CPU (a seconda della config), ma il risultato diventa NaN. È CRITICO usare l'istruzione |OK| dopo un calcolo sensibile per validare il risultato prima di usarlo.
Le funzioni trigonometriche usano gradi o radianti?
Tutte le funzioni (SIN, COS, TAN, ecc.) usano esclusivamente RADIANTI. Se l'HMI fornisce gradi, è necessario moltiplicare il valore per 0.01745329 (PI/180) prima di iniettarlo nel blocco.
Posso eseguire calcoli a 64 bit (LReal)?
Sì, gli S7-1500 supportano nativamente il tipo LReal (Long Real) per una maggiore precisione. La maggior parte delle funzioni matematiche accetta questo tipo.