L’interfaccia dei blocchi in TIA Portal: come usare correttamente Input, Output, InOut, Static, Temp e Constant

33

Quando si programma un PLC Siemens in TIA Portal, uno degli aspetti più importanti — e spesso meno compresi — riguarda la struttura interna dei blocchi.

Molti programmatori si concentrano sulla logica del codice, ma è proprio una corretta progettazione dell’interfaccia del blocco a fare la differenza tra un software improvvisato e un progetto professionale, scalabile e facilmente manutenibile.

In questo articolo vediamo in modo chiaro e pratico come funziona l’interfaccia dei blocchi Siemens e quando utilizzare ciascuna sezione.


I quattro tipi principali di blocchi Siemens

In TIA Portal troviamo quattro categorie fondamentali di blocchi:

1. OB – Organization Block

Gestiscono il flusso di esecuzione del PLC (ad esempio OB1 è il ciclo principale).

2. FC – Function

Blocchi che contengono logica ma non mantengono memoria interna permanente.

3. FB – Function Block

Simili alle FC, ma con memoria persistente tramite DB di istanza.

4. DB – Data Block

Contenitori dati utilizzati per memorizzare variabili e strutture.

Tra questi, solo OB, FC e FB contengono logica eseguibile; i DB servono esclusivamente come memoria dati.


Le due parti fondamentali di un blocco

Ogni FC o FB è composto da:

  • Corpo del blocco (Block Body) → dove si scrive la logica.
  • Interfaccia del blocco (Block Interface) → dove si definiscono parametri e variabili.

È proprio l’interfaccia a determinare come il blocco comunica con l’esterno e come gestisce i dati internamente.


Le 6 sezioni dell’interfaccia blocco

L’interfaccia Siemens può includere fino a sei aree:

  1. Input
  2. Output
  3. InOut
  4. Static
  5. Temp
  6. Constant

Vediamole una per una.


1. Input – Dati in ingresso

Gli Input sono parametri che il blocco riceve dall’esterno.

Esempio:

i_Start : Bool;
i_Setpoint : Real;

Il blocco può leggere questi valori ma non modificarli direttamente all’esterno.

Quando usarli:

  • Pulsanti start/stop
  • Setpoint analogici
  • Sensori letti in ingresso

2. Output – Dati restituiti dal blocco

Gli Output sono i risultati elaborati dal blocco.

Esempio:

q_MotorRun : Bool;
q_ActualSpeed : Real;

Quando usarli:

  • Comandi attuatori
  • Stati macchina
  • Valori calcolati

3. InOut – Parametri letti e scritti

Gli InOut permettono al blocco sia di leggere che modificare direttamente una variabile esterna.

Esempio:

io_Status : UDT_MotorStatus;

Ideali per:

  • Strutture UDT complesse
  • Array
  • Variabili condivise tra blocchi

4. Static – Memoria persistente interna

Disponibili solo negli FB.

Le variabili Static mantengono il valore tra un ciclo PLC e l’altro.

Esempio:

st_Timer : TON;
st_Counter : Int;

Utili per:

  • Timer interni
  • Memorie di stato
  • Sequenze automatiche

5. Temp – Variabili temporanee

Esistono solo durante l’esecuzione del blocco.

Terminata la scansione, vengono perse.

Esempio:

tmp_Result : Real;

Perfette per:

  • Calcoli intermedi
  • Variabili appoggio
  • Conversioni temporanee

6. Constant – Valori fissi interni

Sono costanti definite nel blocco e non modificabili runtime.

Esempio:

c_MaxSpeed : Real := 1500.0;

Vantaggi:

  • Codice più leggibile
  • Parametri documentati
  • Evita numeri “magici” nel programma

Passaggio dati: per valore vs per riferimento

Un concetto fondamentale:

Input e Output → Passaggio per valore

Il dato viene copiato.

✔ Sicuro
✖ Più carico CPU


InOut → Passaggio per riferimento

Il dato non viene copiato: il blocco lavora direttamente sulla variabile originale.

✔ Più efficiente
✔ Ideale per dati grandi


Esempio pratico: controllo inverter

Immagina un FB chiamato:

FB_VFD_Control

Potresti strutturarlo così:

Input

  • Start
  • Reset
  • SpeedSetpoint

Output

  • DriveRunning
  • Faulted
  • ActualSpeed

InOut

  • UDT stato inverter

Static

  • Timer reset fault

Temp

  • Calcoli velocità

Constant

  • Tempo massimo reset = 5s

Questa organizzazione rende il blocco:
✔ Riutilizzabile
✔ Scalabile
✔ Facile da diagnosticare


Errori comuni da evitare

❌ Usare Temp per memorie permanenti

Le Temp si perdono a fine ciclo.

❌ Usare troppe variabili InOut inutilmente

Rischia di rendere il codice poco chiaro.

❌ Mettere valori numerici hardcoded nel codice

Meglio usare Constant.

❌ Confondere Static con DB globali

Le Static appartengono al singolo FB.


Conclusione

Capire davvero l’interfaccia dei blocchi in TIA Portal significa progettare software PLC in modo professionale.

Non basta sapere “dove mettere le variabili”: bisogna sapere perché scegliere una sezione invece di un’altra.

È proprio questa consapevolezza che distingue un programmatore PLC principiante da uno evoluto.


Vuoi imparare TIA Portal in modo professionale?

Se vuoi approfondire programmazione Siemens, SCL, FB modulari e architetture scalabili, continua a seguire i miei contenuti su:

🌐 domenicomadeo.com
🤖 NexDM.ai – Intelligenza Artificiale per l’automazione industriale

Buona programmazione! 🚀


Software necessari:

Download Tia Portal dalla V15 alla V21 tutti i link qui:
👉🏻👉🏻👉🏻 https://www.domenicomadeo.com/?p=7105

trial operativa 21 giorni.

Ricordo che per essere abilitati al download del software è necessaria una registrazione al sito di supporto Siemens (qui) ed una successiva autorizzazione da parte di Siemens, che può richiedere anche diversi giorni.

Scrivi un commento o una richiesta di Info

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.