Cos’è il Sistema NSC?
Networked Shared Control – un’architettura distribuita per l’automazione autonoma
NSC (Networked Shared Control) è un sistema di automazione distribuita progettato per il controllo in tempo reale su una rete peer-to-peer a basso consumo. Originariamente sviluppato per l’automazione industriale e degli edifici, consente a più dispositivi embedded di collaborare senza un controller centrale.

Ogni nodo NSC esegue un sistema operativo multitasking cooperativo leggero e può eseguire logicamente in modo indipendente la logica guidata da eventi, comunicare con i peer e rispondere a stimoli dall’ambiente. La logica è definita usando un linguaggio intermedio interpretato generato da un ambiente di sviluppo visuale.

Architettura del Sistema
- Rete: I dispositivi sono interconnessi tramite un bus fisico RS485 usando SFPB (Simple Field Bus Protocol), un protocollo minimale, efficiente e peer-to-peer senza rapporto master-slave.
- Nodi: Ogni nodo (unità di controllo) può supportare:
- Fino a 256 ingressi logici
- Fino a 256 uscite logiche
- Ingressi analogici, interfacce one-wire e periferiche seriali
- Ingressi speciali: lettori encoder per controllo motore, ingressi a interrupt veloce, ecc.
- Comunicazione: Tutti i nodi sono uguali — qualsiasi nodo può iniziare la comunicazione con un altro in qualsiasi momento. Il sistema supporta fino a 126 dispositivi indirizzabili per segmento di bus.
- Logica: Il codice funziona con un modello guidato da eventi — nessun ciclo di polling. I dispositivi reagiscono a cambi di ingresso, transizioni di uscita, timeout o eventi remoti.
Nota: Mentre il protocollo consente fino a 256 I/O, i dispositivi disponibili possono supportare meno di 16 ingressi e fino a 16 uscite tra fisiche e virtuali.
Programma ed Esecuzione
Ogni dispositivo NSC esegue un programma compilato in una rappresentazione intermedia. Questo codice viene interpretato dal runtime all’interno del sistema operativo embedded.
A differenza dei PLC tradizionali che si basano su scansioni cicliche, i dispositivi NSC eseguono la logica solo quando attivati da eventi. Ciò migliora la reattività e l’efficienza nei sistemi distribuiti.

Nota: I dispositivi programmati usando il sistema NSC OS sono compilati in codice nativo usando AVR-GCC e il firmware viene eseguito direttamente. Vedi Sviluppo Avanzato.
Comportamento Cooperativo
Grazie al modello di comunicazione peer-to-peer, i dispositivi possono collaborare in modo naturale. Le interazioni tra ingressi, uscite, timer e funzioni possono estendersi tra nodi e sono sincronizzate tramite RPC (Remote Procedure Calls) generati automaticamente.
Gli sviluppatori non devono gestire manualmente il livello di comunicazione — il sistema astrae messaggi e sincronizzazione.

Progettazione con MaticStudio
La logica viene definita visivamente in MaticStudio, l’IDE ufficiale per NSC. I progetti possono includere più dispositivi e collegamenti logici tra di essi. Gli sviluppatori possono configurare eventi come cambio di ingresso, scadenza di timer o pressione di pulsanti, e assegnare risposte come il toggle di uscite o la chiamata di funzioni remote.
Il sistema è modulare ed estendibile tramite Componenti Virtuali, distribuiti come file COB. Questi forniscono logiche avanzate e componenti UI opzionali per l’integrazione SCADA.
👉 Scopri di più su MaticStudio
Esempi di Applicazioni
- Automazione di processi distribuiti
- Sistemi di controllo per edifici
- Coordinamento remoto di ingressi/uscite
- Gestione energetica e contabilizzazione intelligente
Sviluppo Avanzato: NSC AppWizard & SDK
Per utenti avanzati e sviluppatori embedded che cercano il controllo a basso livello sul firmware, il sistema NSC include una toolchain opzionale composta da NSC AppWizard e un completo Software Development Kit (SDK).
NSC AppWizard permette la configurazione a livello di progetto di un sistema distribuito composto da più dispositivi. Gli sviluppatori possono:
- Definire l’intera rete di dispositivi e i ruoli assegnati
- Selezionare quali funzionalità OS e moduli logici includere per ogni dispositivo
- Dichiarare eventi rapidi personalizzati e gestori a interrupt
- Definire interfacce RPC nominate attraverso la rete
- Progettare schermi locali per dispositivi con interfacce grafiche
Una volta configurato, AppWizard genera set separati di file C e header per ogni dispositivo nel progetto, precompilati con tabelle di eventi, stub RPC e codice di inizializzazione. Gli sviluppatori possono quindi implementare comportamenti personalizzati modificando direttamente i file generati.
Lo SDK include il codice sorgente completo del sistema operativo NSC ed è compatibile con le toolchain AVR-GCC, permettendo la completa personalizzazione e compilazione del firmware al di fuori di MaticStudio.
Questo approccio è ideale per utenti avanzati che necessitano di integrazione hardware stretta, ottimizzazioni in tempo reale o accesso a routine a livello di interrupt oltre le capacità dell’IDE grafico.
👉 Scopri di più su NSC OS SDK per AVR-GCC e AppWizard