MIAplc
Prestazioni

Quanto corre un PLC da pochi euro?

Niente promesse: tempi misurati sulle schede vere, e da lì i conti per due impianti concreti, un hotel e un campo irrigato. Dove un numero è una stima lo trovi scritto.

misurato0,79 µsun network ladder «contatto → bobina» su ESP32
misurato0,92 ms1000 network ladder, un giro completo
misurato5,4×più veloce sul P4 col codice macchina, su un programma grande
misurato0,3–0,5 msandata e ritorno di un modulo I/O µLink
La macchina virtuale

Quanto ci mette, funzione per funzione

Il programma ladder diventa bytecode, che la VM esegue a ogni ciclo. Il P4 è un processore più potente e in più può trasformare le parti semplici in codice macchina, che la CPU esegue direttamente. Tempi più bassi = più veloce.

FunzioneESP32-WROOMESP32-P4
Un network contatto → bobina0,79 µs≈ 0,4–0,5 µs
Un network con una somma (ADD)1,4 µs≈ 0,7–0,9 µs
Macchina semplice, ~300 istruzioni0,25 ms≈ 0,15 ms
1000 network contatto → bobina0,92 ms≈ 0,5 ms
Programma con 101 funzioni (14,8 KB)1,44 ms solo senza WiFi≈ 0,7–1 ms
Impianto grande: 129 blocchi, 4,3 MBnon ci sta38,9 ms col codice macchina
209,7 ms con la sola VM

Valori senza «≈»: misurati sulla scheda. Con «≈»: stimati, il P4 da 1,5 a 2,2 volte l'ESP32 con la stessa VM. Il codice macchina conviene sui programmi grandi; su un programma piccolo pieno di cicli e salti è più lento della VM (168 µs contro 136 µs, misurato): per questo sul P4 è una scelta, non un obbligo.

Grandezza del programma

Quanto programma ci sta

Tutti i valori di memoria e di spazio in questa pagina sono quelli della scheda PLC: il programma, i DB e i dati stanno lì. I moduli I/O non tengono il programma e il PC serve solo per scriverlo. La memoria di lavoro è la RAM della scheda dove gira il bytecode; sull'ESP32 la divide con la rete, e il WiFi da solo si prende parecchio.

Scheda PLC ESP32

  • memoria di lavoro, WiFi + Ethernet11,4 KB
  • memoria di lavoro, solo Ethernet~50 KB
  • area dei DB8 KB
  • memoria di caricamento (flash)256 KB

In pratica: 11 KB sono circa 1000 network ladder semplici, già un impianto vero. Con 50 KB ci sta un programma da 100 funzioni.

Scheda PLC ESP32-P4

  • memoria di lavoro (con la PSRAM)~7,6 MB
  • codice del programma, al massimo8 MB
  • area dei DB2 MB

Quanto è grande 4 MB? Un network semplice occupa una decina di byte; uno di un impianto vero, con confronti e box, 30–60 byte. Una macchina automatica ha qualche centinaio di network; una linea di produzione completa qualche migliaio. I 4,3 MB della prova corrispondono a decine di migliaia di network: l'ordine di grandezza di un reparto intero, non di una macchina. Per un programma scritto a mano la memoria del P4 non finisce: il limite diventano gli ingressi e le uscite.

Comunicazione

Un PLC e tre moduli I/O

Prova vera: un PLC ESP32-P4 e tre moduli ESP32 su µLink, con l'editor Online e Download in corso per stressarlo. A ogni giro il PLC manda a ogni modulo lo stato di tutte le uscite e riceve tutti gli ingressi.

Andata e ritorno medio misurato per ogni modulo, scambio ogni 5 ms, con l'editor Online e un Download in corso.

misurato0,31–0,50 msandata e ritorno medio, per modulo
misurato200 al secondoscambi per modulo: 64 uscite e 64 ingressi ogni volta
misurato22.608scambi per modulo durante la prova, tutti validi
misurato< 0,5 %risposte arrivate in ritardo, sotto stress

Un frame perso non fa danni: ogni frame porta lo stato completo, il giro dopo rimette tutto a posto. Il punto peggiore misurato, durante un Download pesante, è stato di 12–15 ms.

In pratica · 1

L'hotel: quante stanze?

Ogni stanza: 10 pulsanti, 10 luci, clima con sonda di temperatura, valvola e ventilatore. Una funzione «Stanza» scritta una volta e chiamata per ogni camera; un modulo µLink da 64 I/O nel quadro di piano serve 5 stanze.

ESP32

ESP32-P4

Un battito di ciglia dura 100–400 ms: sotto i 100 ms dal pulsante alla luce nessun ospite si accorge di niente. Il P4 nella configurazione estesa (in sviluppo) arriva a 1000 schede I/O, 128 kbit di I/O e un'area REAL da 128k valori: è la parte alta del cursore. Con le luci sotto i 100 ms ci stanno circa 1300 stanze; oltre conviene dividere su più bus o più PLC.

In pratica · 2

Irrigazione: quanti ettari prima di finire la RAM?

Ogni ettaro: 2 settori con valvola, tempo di irrigazione e soglia di umidità del terreno, più una sonda. In più una stazione fissa: pompe, pressione, dosatori, stabilizzazione dei fanghi, agitatori, sonde chimiche.

ESP32

ESP32-P4

Un campo non ha fretta: anche un ciclo da mezzo secondo va benissimo. Qui il limite vero sono la memoria e i punti di I/O, non la velocità. Sul P4 le sonde non sono un problema: l'area REAL da 128k valori basta per oltre 100.000 sonde, quindi il tetto resta l'area dei DB. Le sonde analogiche servono moduli con ingressi analogici o sensori in Modbus.

In pratica · 3

Nastri trasportatori per bagagli

Ogni nastro: 4 fotocellule, motore, inseguimento delle valigie (dove si trova ogni collo), intasamenti e deviatori. Qui conta la velocità: a 2 m/s una valigia percorre 4 cm in 20 ms, quindi vogliamo tutti i nastri aggiornati almeno ogni 20 ms. Un modulo µLink da 64 I/O serve 15 nastri.

ESP32

ESP32-P4

Un grande aeroporto non usa un PLC solo: l'impianto è diviso in zone, ognuna col suo PLC. Un ESP32 regge una zona piccola, un P4 una zona di centinaia di nastri, oltre 2000 col codice macchina. Stime: un impianto bagagli vero va progettato e provato sul campo.

Riassunto

Una riga per scheda

SchedaHotel oggi (8 moduli)Hotel al limiteIrrigazione: ettari prima che finisca la RAMNastri bagagli, aggiornati ogni 20 ms

«Al limite»: ESP32 con 15 moduli (tutti gli I/O del programma); P4 nella configurazione estesa, in sviluppo: 1000 schede I/O, 128 kbit di I/O, 128k REAL. Il tempo è quello in cui tutte le stanze vengono aggiornate.

🤓 Per i più curiosi: i numeri grezzi e come abbiamo fatto i conti

Misure (schede vere, firmware 0.3.39–0.3.71, novembre 2026)

CosaValoreDove
Network LD → ST (3 istruzioni VM)788 nsESP32-WROOM 240 MHz
Network con ADD DINT su DB1.364–1.460 nsESP32
Scansione vuota (I/O, SDB, controlli)~0,13 msESP32
carico-100fc: Main + 101 FC, 14,8 KB1,44 msESP32
4,3 MB di codice macchina, 129 blocchi: VM / misto209,7 / 38,9 msESP32-P4, 60 confronti con l'interprete uguali
Programma piccolo con cicli: VM / codice macchina136 / 168 µsESP32-P4
Memoria di lavoro libera, WiFi + Ethernet11.702 byteESP32
Memoria di lavoro libera7.989.150 byteESP32-P4 con PSRAM
µLink, andata e ritorno medio (3 moduli ESP32)309–495 µsPLC P4, periodo 5 ms
µLink, risposte in ritardo sotto stress0,06–0,42 %22.608 scambi per modulo
µLink, modulo ESP32-C3 + W5100 (SPI)4,7–7,3 msil chip SPI è il collo di bottiglia
µLink, 8 moduli~1,3 ms di bus ogni 5 msdocumentazione µLink
µLink, 192 moduli (prova)16 ms per inviare tuttoESP32-P4
Download di 127 KB via USB (cavo seriale, compresi STOP e scrittura in flash)~28 sESP32-P4, misura automatica di MiaConfig
Editor via Ethernet / USB0,7–1,3 s / 33,5 s370 KB, 18 file
Richiesta di stato via Ethernet, PLC in RUN31–40 msESP32 e P4

Stime (da confermare)

  • P4 con la VM interprete: almeno 1,5× l'ESP32 (CPU RISC-V 360–400 MHz; la stima va da 1,5 a 2,2×). Nei calcoli usiamo 1,5×.
  • Chiamata di una FC: ~0,3 µs, più ~0,25 µs per parametro.
  • Stanza: 23 network di bit, 3 box (scala e confronti del clima), 26 parametri → ~29 µs su ESP32, ~19 µs sul P4; 107 byte di chiamata + 24 byte di DB; la FC «Stanza» 600 byte, una volta sola. 12 uscite per stanza: 5 stanze per modulo da 63 uscite utili.
  • Ettaro: 2 settori × (5 network, 4 box con il timer, 12 parametri) → ~26 µs su ESP32; 102 byte di chiamate, 56 byte di DB (due TIMER da 16 byte, tempi, soglie, sonda). Stazione fissa: 4 KB di codice, 1 KB di DB, 0,4 ms.
  • Nastro: 20 network di bit, 10 box (inseguimento, tempi, confronti), 15 parametri → ~34 µs su ESP32, ~23 µs sul P4 con la VM; col codice macchina del P4 5,4× più veloce (il valore misurato sul programma grande). 63 byte di chiamata, 64 byte di DB (coda delle valigie, timer); 4 ingressi per nastro: 15 nastri per modulo. Obiettivo: tutto aggiornato entro 20 ms.
  • Bus: periodo = almeno 5 ms, con il bus occupato al massimo al 60 %; sul P4 0,083 ms per modulo (192 moduli in 16 ms). Reazione al peggio = 2 periodi + 1 ciclo.
  • P4, configurazione estesa (in sviluppo): 1000 schede I/O, aree I/O da 128 kbit, area REAL da 131.072 valori (128k). Una sonda REAL per stanza e per ettaro.

Le formule

ciclo   = 0,13 ms + N × (network × 0,79 + box × 1,4 + 0,3 + parametri × 0,25) µs ÷ velocità
memoria = codice fisso + N × byte di chiamata      ≤ memoria di lavoro
dati    = dati fissi  + N × byte di DB             ≤ area dei DB
periodo = max(5 ms, moduli × tempo per modulo ÷ 0,6)

Il calcolatore è nel file assets/js/prestazioni.js del sito: tutti i numeri di partenza sono in cima, con la loro fonte.