CANopen è un protocollo di comunicazione aperto standard del settore e di specifica del profilo dispositivo (EN 50325-4) basato sul protocollo Controller Area Network (CAN). Il protocollo "Layer 7” è stato sviluppato per le applicazioni di rete integrate e definisce le comunicazioni e le funzioni del dispositivo per sistemi CAN.
CANopen supporta sia le comunicazioni cicliche sia dettate da eventi, consentendo di ridurre al minimo il carico del bus e di mantenere tempi di reazione brevi.
I PDO sono oggetti che forniscono l'interfaccia di comunicazione con i dati di processo, permettendone lo scambio in tempo reale. Il set di PDO di un dispositivo CANopen descrive gli scambi impliciti tra questo dispositivo e i suoi partner di comunicazione sulla rete. Lo scambio dei PDO è autorizzato quando il dispositivo è in modalità "OPERATIONAL".
Sono disponibili due tipi di PDO:
PDO di trasmissione (TPDO): PDO trasmesso dal dispositivo
PDO di ricezione (RPDO): PDO ricevuto dal dispositivo
Il Accoppiatore bus TM3 CANopen supporta tre tipi di modalità di trasmissione PDO:
Tipo codice trasferimento |
Modalità di trasmissione |
Descrizione |
---|---|---|
0 |
Aciclica - Sincrona |
Invio PDO sul primo messaggio a seguito di un evento |
1-240 |
Ciclica - Sincrona |
Invio PDO ogni x messaggi , dove x può essere configurato da 1 a 240 |
255 (Predefinito) |
Asincrona |
Invio PDO su evento |
Ai PDO attivati da evento sono associate due ulteriori opzioni:
Inhibit Time: l'utility Inhibit Time consente di definire un ritardo minimo prima della trasmissione di un nuovo PDO. Si evita così di sovraccaricare il bus laddove si verifica un significativo numero di eventi in rapida successione. L'Inhibit Time viene espresso in multipli di 100 μs.
Questa funzionalità è disponibile per il trasferimento di Tipo 255 (Asincrono).
Questa tabella mostra un esempio di valori:
Valore (dec) |
Tempo (ms) |
---|---|
0 |
0 |
10 |
1 |
100 |
10 |
1000 |
100 |
10000 |
1000 |
65535 |
6553,5 |
il consente di definire una scadenza laddove la trasmissione di un PDO viene forzata, anche in assenza di modifiche di stato. Il è espresso in millisecondi.
Questa funzionalità è disponibile per il trasferimento di Tipo 255 (Asincrono).
Questa tabella mostra un esempio di valori:
Valore (dec) |
Tempo (ms) |
---|---|
0 |
0 (disattiva il temporizzatore) |
10 |
10 |
100 |
100 |
1000 |
1000 |
10000 |
10000 |
65535 |
65535 |
Uno SDO consente di accedere ai dati del dispositivo tramite richieste esplicite. Il servizio SDO è disponibile quando il dispositivo si trova nello stato "OPERATIONAL" o "PRE-OPERATIONAL".
Sono disponibili due tipi di SDO:
SDO di lettura (SDO di download)
SDO di scrittura (SDO di caricamento)
Il protocollo SDO si basa su un modello client/server. Per uno SDO di download, il client (in genere il controller) invia una richiesta che indica l'oggetto da leggere. Il server (in questo caso, l'accoppiatore bus) restituisce i dati contenuti nell'oggetto. Per uno SDO di caricamento, il client (in genere il controller) invia una richiesta che indica l'oggetto in cui scrivere e il valore desiderato. Dopo l'aggiornamento dell'oggetto, il server (in questo caso, l'accoppiatore bus) restituisce un messaggio di conferma.
Se uno SDO non può essere elaborato dal server (accoppiatore bus), il server restituisce un codice di errore (Codice di annullamento). Questa situazione è valida per SDO di download e caricamento. Se il server non risponde entro un periodo di tempo pre-configurato (Timeout SDO), il client emette un codice di annullamento di timeout SDO.
I protocolli di controllo errori consentono di rilevare gli errori di comunicazione sulla rete. Sono disponibili due protocolli: node guarding ed heartbeat. Questi due meccanismi di monitoraggio sono particolarmente importanti nel sistema CANopen. I dispositivi collegati al bus non indicano regolarmente la loro presenza in modalità operativa, in particolare se comandati da .
In questo protocollo, il master NMT (in genere, il controller) interroga ciascun dispositivo NMT (accoppiatore bus, ad esempio) a intervalli di tempo regolari, denominati 1029H e genera un evento life guarding. L'accoppiatore bus, invece, passa allo stato configurato nell'oggetto (se l'oggetto viene lasciato come predefinito), viene attivata la gestione del posizionamento di sicurezza e generato l'evento guarding. è definito come segue: = x . L'oggetto contiene il parametro Guard time espresso in millisecondi. L'oggetto contiene il parametro . e possono essere configurati in modo diverso per dispositivi differenti.
. Il dispositivo risponde con il proprio stato NMT. Il dispositivo, se non riceve un'interrogazione dopo un periodo definito denominato , passa allo stato configurato nell'oggettoQuando uno dei due parametri
o è impostato a 0 (configurazione predefinita), il dispositivo non effettua il monitoraggio. Per attivare il monitoraggio nel tempo, occorre immettere un valore (minimo 2) nell'oggetto e specificare una durata in millisecondi nell'oggetto .I valori tipici del parametro
sono compresi tra 200 ms e 2 s.Per mantenere un funzionamento più affidabile e sicuro, occorre specificare un
(oggetto ) con un valore pari a 2 o superiore. Se si utilizza il valore 1 e si verificasse un ritardo dovuto all'elaborazione di messaggi ad alta priorità o all'elaborazione interna sul master node-guarding, il dispositivo può passare inavvertitamente allo stato configurato nell'oggetto .AVVERTIMENTO | |
---|---|
Il monitoraggio viene effettuato nel modo seguente:
Phase |
Descrizione |
---|---|
1 |
Il master imposta Guarding-CobID dei dispositivi da monitorare. (o messaggi di richiesta ) sul |
2 |
I dispositivi interessati rispondono inviando il messaggio . Questo messaggio contiene lo del dispositivo e il , che cambia dopo ogni messaggio. |
3 |
Il master NMT (Network Management Telegram) confronta le informazioni di e : se non sono nello stato previsto o se non viene ricevuta alcuna risposta, il master NMT considera che sia stato rilevato un errore sul dispositivo. |
Lo stato di rete del dispositivo è indicato nei sette bit residui:
Stato di rete |
Risposta (hex) |
---|---|
‘STOPPED’ |
04H oppure 84H |
‘PRE-OPERATIONAL’ |
7FH oppure FFH |
‘OPERATIONAL’ |
05H oppure 85H |
In questo protocollo, il generatore trasmette periodicamente un messaggio CANopen configurato nell'oggetto 1029H, viene attivata la gestione del posizionamento di sicurezza e generato l'evento .
, in base al parametro (in millisecondi) configurato nell'oggetto . I dispositivi responsabili del monitoraggio di questo messaggio avranno un parametro (in millisecondi), configurato nell'oggetto . Se il messaggio del generatore non viene ricevuto entro il tempo configurato dei dispositivi utilizzatori, i dispositivi generano un evento . Per l'accoppiatore bus, invece, passa allo statoIl messaggio
indica lo stato del dispositivo su un byte, composto da:Il bit più significativo è riservato e sempre a 0
I 7 bit meno significativi forniscono lo stato per il dispositivo che genera il messaggio
I valori possibili sono:
Stato del generatore |
Valore (Decimale) |
---|---|
BOOT-UP |
0 |
STOPPED |
4 |
OPERATIONAL |
5 |
PRE-OPERATIONAL |
127 |