Hva skjer hvis to Node ID-segmenter er de samme?

Apr 04, 2018 Legg igjen en beskjed

Hva skjer hvis to node-ID-segmenter er de samme?




CAN-buss-nettverk tillater ikke to noder å ha samme ID-segment i prinsippet, men hva skjer hvis de to node-ID-segmentene er de samme?

Før forsøket må vi ha en klar forståelse av strukturen til CAN-meldingene og voldgiftsprinsippene.


Først, CAN-meldingsstruktur

Den mest brukte CAN-buss nettverksstandarden er V2.0-versjonen. Denne standarden er videre delt inn i A- og B-deler. Deres viktigste forskjell er ID-kode lengden i voldgiftsområdet. Blant dem CAN2.0A (standard ramme) er 11 bit ID, CAN2.0B (utvide ramme) er 29 bit ID. Tabell 1 nedenfor viser strukturen til CAN-meldingen:

Tabell 1 CAN-meldingsstruktur

Fase navn Fase lengde / bit Beskrivelse
SOF 1 betyr datafase start, og utgjør en enkelt dominerende bit
Abtrisjonsfase Standard ramme 12 Indikerer prioriteten til rammen, utgjør 11 ID-adresser og 1 RTR
utvidet ramme 32 Angir prioritet av rammen, utgjør 29 ID-adresser, 1 bit SRR, IDE utvidet og RTR
Kontrollfase 6 betyr gruppekoden og reserverte biter av datalengdenes datalengde
Datafase 0 ~ 8 datainnhold, kontrollfase kontroller datalengden
CRC 16 sjekk rammeoverføring erro, fra SOF til datafase, alt innhold, unntatt fyllingsbiter
ACK 2 andre node bekrefter at denne rammen er mottatt riktig
Rammeavslutning 7 betyr rammeenden


For det andre, prinsippet om voldgift

KAN-bussarbitrasjon er basert på "linje og prinsipp", som vist på figur 1. Når en transceiver sender signaler fra forskjellige nivåer samtidig, er det recessive nivået alltid dekket av det dominerende nivået. Under sending av meldingen vil CAN-kontrolleren overvåke om busstatusen er den samme som den som sendes av seg selv. Hvis inkonsekvensen oppstår i ID-segmentet, vil voldgift skje. Hvis det oppstår i andre områder, vil den tilsvarende feilen bli utløst.

Følgende er nøkkelpunktet. Hva om de to node-ID-segmentene er de samme? Vi startet eksperimentet med to CAN-kort og en CANScope. CAN-kortet simulerer CAN-standardkoden for å sende og motta meldinger, og CANScope gjør kommunikasjonsovervåking, som vist i figur 2.

                                                           

1.jpg

Fig.2 Eksperiment Platform Konstruksjon


Tredje, eksperiment ett "ID-segmentet er det samme, men dataene er forskjellige"

Et CAN-kort brukes til å sende en CAN-ramme med ID 000H-data til 01020304050607H og et annet CAN-kort for å sende en CAN-ramme med 000H-data til 02020304050607H. Dataene som CANScope lytter på, er vist i figur 3. Det kan observeres at det er et stort antall datafeltfyllingsfeil.


2.jpg

Fig.3 Datafelt fylle erro

Hvorfor er dette slik? Vi oppnår først bølgeformene som svarer til de to CAN-kortoverføringsmeldingene, som vist i figur 4. Fordi to-pin-meldingen er en standard dataramme, og hver ramme inneholder 8 byte data, er bølgeformene som svarer til de to rammene av pakker, akkurat det samme i ID-segmentet, RTR, IDE, R0 og DLC-segmentene. Derfor er voldgiftens rolle ineffektiv, og begge noder anser seg for å ha prioritet og fortsetter å sende data.

3.jpg

Nå fokuserer vi på datasegmentet, de første byte-dataene er de samme, er 00H; Den andre byte-data er forskjellig, henholdsvis 01H, 02H. Pilene i figur 5 indikerer at logikken til de tilsvarende biter er henholdsvis 0 og 1. Tidligere nevnte vi at CAN-noden vil oppdage om bussenivået er det samme som nivået det sendte da meldingen ble sendt. Hvis inkonsekvensen oppstår i ikke-voldgiftsområdet, utløses den tilsvarende feilen, så hvis de to rammene sendes til bussen samtidig, må det oppstå Bitfeil. Fordi bitleveringsfeilen vil føre til at noden sender 6 dominerende biter som bryter fyllingsregelen (den aktive feilen ødelegger rammedataene), oppstår datafeltfyllingsfeilen, som vist på fig. 3.


4.jpg

Fig.5 Datafeltkonflikter


For det fjerde, eksperimentere to "de samme dataene med samme ID"

På samme tid bruker du to CAN-kort til å sende CAN-rammer hvis ID er 000H-data til 01020304050607H, og CANScope gjør kommunikasjonsovervåking. Først og fremst sjekker vi ikke alternativet "Bussrespons" for å få CANScope til å fungere i lyttemodus. De eksperimentelle resultatene er vist i figur 6, og responsavgrenseren er i feil format.

5.jpg

Fig.6 Feilsøkingsbegrensningsformatfeil


Hvorfor skjer dette? Koden som sender meldingen, vil sende to recessive biter i ACK-segmentet. Hvis et dominerende nivå mottas under første bit, anses rammen for å være riktig mottatt. Fordi de to voldgiftsmennene tror at de har fått voldgiftsretten når de har samme voldgiftssegment, venter de på et svar i ACK-segmentet, men det er bare to noder i nettverket. Derfor kan det ikke mottas noe svar i ACK-segmentet, og det oppstår en responsavgrensningsfeil. Enkelt sagt, denne situasjonen ligner det faktum at bare ett knutepunkt i bussen ikke vil kunne sende data. Figur 7 viser bølgeformsammenligningen når det ikke er noe svar i ACK-segmentet.

6.jpg

Fig.7 ACK Svar


Vi kontrollerer bussresponsen og starter forsøket igjen (nå er det 3 noder i bussen). På denne tiden, som vist på fig. 8, blir bussen data overført og mottatt normalt.

7.jpg

Fig.8 Start BUS Svar


Oppsummering: Når to noder sender pakker med samme ID og data samtidig, oppstår en feltfeltfelningsfeil. Når to noder sender pakker med samme ID og de samme dataene, oppstår det ingen feil hvis andre noder reagerer. Andre noder reagerte med en responsfeil. Derfor bør vi unngå samme situasjon i ID-segmentet når du designer CAN-bussen.


Sende bookingforespørsel

whatsapp

Telefon

E-post

Forespørsel