Concetti di Programmazione nei Sistemi NSC
Logica basata su eventi per automazione distribuita e autonoma
Programmazione Basata su Eventi
I sistemi NSC utilizzano un modello di esecuzione basato su eventi, dove la logica viene attivata da eventi come:
- Cambiamenti di segnale in ingresso (fronti di salita o discesa, variazione di stato)
- Transizioni di uscita
- Scadenze di timer
- Click o pressioni prolungate di pulsanti
- Chiamate RPC remote da altri dispositivi (eventi pubblici)
A differenza dei PLC tradizionali che ciclicamente eseguono il programma, il firmware NSC reagisce solo quando accade qualcosa, risultando in un comportamento più rapido ed efficiente in ambienti distribuiti complessi.

Un Paradigma Diverso
A differenza del PLC non dovresti controllare continuamente lo stato di un contatto/ingresso, ancor meno se non è locale al dispositivo!
Invece usa gli eventi per rilevare quando qualcosa cambia e quindi esegui le azioni richieste di conseguenza. Se devi comunque testare lo stato di un ingresso puoi utilizzare un’espressione Ladder.
Se devi testare lo stato di un ingresso remoto, invece di controllarlo tramite polling remoto usa un flag (merker). Collega l’evento di cambio stato dell’ingresso remoto a un flag (o uscita virtuale) nella unità locale, poi verifica questo flag locale o uscita virtuale nella tua espressione Ladder. In altre parole usi un flag per replicare lo stato di un ingresso o uscita remota, o qualsiasi altro evento.
Multitasking Cooperativo
Il sistema operativo NSC è un sistema di multitasking cooperativo. Questo significa che finché un evento rimane occupato il dispositivo non risponde. Questo si evita facilmente evitando cicli all’interno degli eventi. Usa invece il sistema eventi o i timer.
Alcuni eventi di base sono comunque generati, come eventi basati su interrupt, l’orologio in tempo reale interno e i timer.
Gestione degli Errori
L’interprete incluso nei dispositivi standard NSC può rilevare errori nel programma. Se viene rilevato un errore, viene registrato il codice errore e la posizione nel programma che ha causato l’errore, quindi l’unità viene fermata in modalità protezione. Il dispositivo rimane comunque responsivo e può essere testato, diagnosticato, riavviato o riprogrammato da remoto, garantendo un comportamento sicuro.
Mappatura Ingressi/Uscite
Ogni dispositivo NSC fornisce tipicamente fino a 16 ingressi logici e 16 uscite logiche, oltre a ingressi analogici e supporto one-wire. Ingressi e uscite possono essere direttamente collegati ad eventi logici e azioni tramite i pannelli visivi di MaticStudio.
Quando un ingresso cambia, può attivare direttamente un’azione di uscita, l’attivazione di una funzione, o una chiamata ad un altro dispositivo — tutto senza scrivere codice a basso livello.
Azioni Logiche
Ogni evento nel sistema può attivare una o più delle seguenti azioni:
- Imposta / Reset Uscita — accende o spegne un’uscita digitale
- Commuta Uscita — cambia lo stato di un’uscita
- Attiva Funzione — esegue un componente virtuale (es. contatore o scheduler)
- Avvia / Ferma Timer — esegue compiti ritardati o ripetuti
- Chiamata Remota (RPC) — attiva un evento o azione su un altro dispositivo

Logica Distribuita
Con NSC, la logica può essere distribuita tra i dispositivi come se girasse su un unico controllore. MaticStudio genera e collega automaticamente le necessarie Remote Procedure Call (RPC, o chiamata a procedura remota) per sincronizzare i dispositivi.
Questo permette agli ingressi di un’unità di influenzare direttamente le uscite o funzioni di un’altra — senza bisogno di logica di rete manuale.
Componenti Virtuali
NSC supporta la logica modulare tramite Componenti Virtuali — blocchi logici riutilizzabili distribuiti come file COB. Questi componenti possono implementare:
- Logica interna (es. contatori, timer, flip-flop)
- Interfacce utente personalizzate per pannelli SCADA
- Elementi visivi web e configurazione
I Componenti Virtuali migliorano la chiarezza della logica, promuovono il riuso e supportano scenari complessi senza scripting.
Timer e Compiti
Ogni dispositivo supporta multipli timer che possono essere attivati da eventi e opzionalmente ripetersi a intervalli specificati. I timer possono essere collegati a qualsiasi azione logica o componente.
Il sistema operativo NSC utilizza il multitasking cooperativo per eseguire i compiti in modo deterministico ed efficiente. Questo riduce significativamente il rischio di condizioni di gara rispetto ai sistemi preemptive. Tuttavia, in contesti distribuiti — specialmente quando sono coinvolte chiamate di procedura remote (eventi pubblici) — alcune interazioni temporali possono ancora portare a risultati non deterministici. Gli sviluppatori dovrebbero progettare la logica tenendo conto dei ritardi di propagazione degli eventi e delle possibili sovrapposizioni nell’uso di RPC tra dispositivi, in particolare quando gli eventi pubblici sono concatenati.
Confronto con PLC Tradizionali
| Caratteristica | Sistema NSC | PLC Tipico |
|---|---|---|
| Modello di Esecuzione | Basato su eventi | Ciclo di scansione |
| Architettura | Distribuita (peer-to-peer) | Controllore centralizzato |
| Comunicazione | RPC trasparenti (auto-generati) | Disponibile solo in modelli avanzati; richiede logica personalizzata e moduli opzionali di comunicazione |
| Programmazione | Collegamento visuale evento-azione | Diagrammi Ladder o scripting |
| Estendibilità | Componenti COB modulari | Blocchi funzione specifici del vendor |
| Reattività | Immediata all’evento | Dipende dal tempo di ciclo di scansione |
Passi Successivi
- Caratteristiche di MaticStudio
- Primi passi con MaticStudio