Istruzioni TIA Portal

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

CALC

Cosa 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

MOD

Cosa 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

ABS

Cosa 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

MIN

Cosa 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

LIMIT

Cosa 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

SQRT

Cosa 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...

SIN

Cosa 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

LN

Cosa 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 calcoloMetodo raccomandatoPerché?
Addizione sempliceBlocco ADD (LAD)Visuale e facile da seguire
Formula complessaBlocco CALCULATECompatto e riduce il numero di segmenti
Algoritmo matematicoLinguaggio SCLSintassi simile a C/Pascal, ideale per le formule
Calcolo trigonometricoSCL o CALCULATEI blocchi individuali sono troppo ingombranti
Limitazione segnaleBlocco LIMITStandard Siemens, molto robusto
Reset indiceIstruzione INC/DECMolto 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.

Semplifica i tuoi calcoli complessi

Descrivi la tua formula fisica o il tuo algoritmo, T-IA Connect genererà il blocco CALCULATE o il codice SCL ottimizzato con validazione dei dati.