CANopen è un protocollo di comunicazione e una specifica di profilo per dispositivi per sistemi embedded utilizzato in automazione. All'interno del modello OSI, CANopen implementa i livelli a partire dal livello di rete in su (quindi dal 3° in su). Lo standard CANopen consiste in uno schema di indirizzamento, di diversi piccoli protocolli di comunicazione e di un livello applicazione definito da un profilo di dispositivo. I protocolli di comunicazione hanno un supporto per la gestione di rete ("network management"), per il controllo dei dispositivi e delle comunicazioni tra nodi, e includono un semplice livello di trasporto per la segmentazione/desegmentazione dei messaggi. Il protocollo di basso livello, che implementa il livello fisico e il livello datalink, è normalmente il Controller Area Network (CAN), sebbene i profili di dispositivo di CANopen possano essere implementati da dispositivi che utilizzano altri mezzi di comunicazione (come l'Ethernet Powerlink).
I profili di comunicazione e di dispositivo di base di CANopen sono forniti dal CAN in Automation (CiA) draft standard 301. I profili di dispositivi più specializzati sono basati sul profilo di base, e sono specificati in molti altri standard del CiA, come il CiA401 per i moduli di I/O e il CiA402 per il controllo del movimento.
I messaggi CANopen possono essere classificati in base al loro tipo in:
Messaggi di controllo
I messaggi di controllo sono utilizzati per controllare il funzionamento del bus CAN. I tipi più comuni di messaggi di controllo sono:
Messaggi di dati
I messaggi di dati sono utilizzati per trasmettere dati tra i dispositivi. I tipi più comuni di messaggi di dati sono:
Messaggi di servizio
I messaggi di servizio sono utilizzati per fornire servizi di comunicazione specifici. I tipi più comuni di messaggi di servizio sono: