Cosa succede se due segmenti ID di nodo sono uguali?

Apr 04, 2018Lasciate un messaggio

Cosa succede se due segmenti ID del nodo sono uguali?




Le reti CAN-bus non consentono a due nodi di avere lo stesso segmento ID in linea di principio, ma cosa succede se i due segmenti ID del nodo sono uguali?

Prima dell'esperimento, dobbiamo avere una chiara comprensione della struttura dei messaggi CAN e dei principi di arbitrato.


Innanzitutto, struttura dei messaggi CAN

Lo standard di rete CAN-bus più utilizzato è la versione V2.0. Questo standard è ulteriormente suddiviso in parti A e B. La loro principale differenza è la lunghezza del codice ID nell'area arbitrale. Tra questi CAN2.0A (frame standard) è ID 11 bit, CAN2.0B (espansione frame) è 29 bit ID. La seguente tabella 1 mostra la struttura del messaggio CAN:

Tabella 1 Struttura del messaggio CAN

Nome fase Fase di lunghezza / bit Descrizione
SOF 1 significa inizio della fase di dati e make up con un singolo bit dominante
Fase di Abtrition Telaio standard 12 Indica la priorità del frame, costituita da 11 indirizzi ID e 1 RTR
cornice estesa 32 Indica la priorità del frame, la composizione di 29 ID, SRR a 1 bit, IDE esteso e RTR
Fase di controllo 6 indica il codice di gruppo e i bit riservati della lunghezza dei dati del segmento di dati
Data Phase 0 ~ 8 contenuto di dati, la fase di controllo controlla la lunghezza dei dati
CRC 16 controlla frame transimission erro, da SOF a data phase, tutto il contenuto, eccetto il riempimento di bit
ACK 2 altro nodo conferma che questo frame sia ricevuto correttamente
Frame End 7 significa la fine del telaio


In secondo luogo, il principio di arbitrato

L'arbitraggio CAN bus si basa su "linea e principio", come mostrato nella Figura 1. Quando un ricetrasmettitore emette segnali di diversi livelli allo stesso tempo, il livello recessivo è sempre coperto dal livello dominante. Durante l'invio del messaggio, il controller CAN monitorerà se lo stato del bus è uguale a quello inviato da solo. Se l'incoerenza si verifica nel segmento ID, si verificherà l'arbitrato. Se si verifica in altre aree, verrà attivato l'errore corrispondente.

Quello che segue è il punto chiave. Cosa succede se i due segmenti ID del nodo sono uguali? Abbiamo iniziato l'esperimento con due schede CAN e una CANScope. La scheda CAN simula il nodo standard CAN per inviare e ricevere messaggi e CANScope esegue il monitoraggio della comunicazione, come mostrato nella Figura 2.

                                                           

1.jpg

Fig.2 Costruzione della piattaforma di sperimentazione


Terzo, sperimenta uno "Il segmento ID è lo stesso ma i dati sono diversi"

Una scheda CAN viene utilizzata per inviare un frame CAN con dati ID 000H a 01020304050607H e un'altra scheda CAN per inviare un frame CAN con dati 000H a 02020304050607H. I dati che CANScope ascolta sono mostrati in Fig. 3. Si può osservare che ci sono molti errori di compilazione dei campi di dati.


2.jpg

Fig.3 Campo dati fill erro

Perché è così? Prima otteniamo le forme d'onda corrispondenti ai due messaggi di trasmissione della scheda CAN, come mostrato nella Figura 4. Poiché il messaggio a due pin è un frame di dati standard e ogni frame contiene 8 byte di dati, le forme d'onda corrispondenti ai due frame di pacchetti sono esattamente lo stesso nei segmenti ID, RTR, IDE, R0 e DLC. Pertanto, il ruolo dell'arbitrato è inefficace e entrambi i nodi si considerano prioritari e continuano a inviare dati.

3.jpg

Ora ci concentriamo sul segmento di dati, i primi dati di byte sono gli stessi, sono 00H; i dati del secondo byte sono diversi, rispettivamente 01H, 02H. Le frecce in Figura 5 indicano che la logica dei bit corrispondenti è rispettivamente 0 e 1. In precedenza abbiamo menzionato che il nodo CAN rileverà se il livello del bus è uguale al livello inviato al momento dell'invio del messaggio. Se l'incoerenza si verifica nell'area non arbitraria, viene attivato l'errore corrispondente, quindi se i due frame vengono inviati al bus contemporaneamente, devono verificarsi errori di bit. Poiché il bit che invia un errore causerà al nodo di inviare 6 bit dominanti che violano la regola di riempimento (l'errore attivo distrugge i dati del frame), si verifica l'errore di riempimento del campo dati, come mostrato in FIG. 3.


4.jpg

Fig.5 Conflitti campo dati


In quarto luogo, esperimento due "gli stessi dati con lo stesso ID"

Allo stesso tempo, utilizzare due schede CAN per inviare frame CAN il cui ID è 000H su 01020304050607H e CANScope esegue il monitoraggio della comunicazione. Prima di tutto, non controlliamo l'opzione "risposta bus" per far funzionare CANScope in modalità solo ascolto. I risultati sperimentali sono mostrati in Figura 6, e il delimitatore di risposta è nel formato sbagliato.

5.jpg

Fig.6 Errore di formato del delimitatore di risposta


Perché succede? Il nodo che invia il messaggio invierà due bit recessivi nel segmento ACK. Se viene ricevuto un livello dominante durante il primo bit, il frame viene considerato correttamente ricevuto. Poiché i due arbitri pensano di aver ottenuto l'arbitrato giusto quando hanno lo stesso segmento arbitrale, aspettano una risposta nel segmento ACK, ma ci sono solo due nodi nella rete. Pertanto, nessuna risposta può essere ricevuta nel segmento ACK e si verifica un errore delimitatore di risposta. Semplicemente parlando, questa situazione è simile al fatto che solo un nodo nel bus non sarà in grado di inviare dati. La Figura 7 mostra il confronto della forma d'onda quando non c'è risposta nel segmento ACK.

6.jpg

Fig.7 Risposta ACK


Controlliamo la risposta del bus e ricominciamo l'esperimento (in questo momento ci sono 3 nodi nel bus). A questo punto, come mostrato in FIG. 8, i dati del bus vengono trasmessi e ricevuti normalmente.

7.jpg

Fig.8 Avvia risposta BUS


Riepilogo: quando due nodi inviano pacchetti con lo stesso ID e i dati allo stesso tempo, si verifica un errore di riempimento del campo dati. Quando due nodi inviano pacchetti con lo stesso ID e gli stessi dati, non si verifica alcun errore se altri nodi rispondono. Altri nodi hanno risposto con un errore di risposta. Pertanto, dovremmo evitare la stessa situazione nel segmento ID durante la progettazione del bus CAN.


Invia la tua richiesta

whatsapp

Telefono

Posta elettronica

Inchiesta