Kas notiek, ja divu mezglu ID septiņas ir vienādas?

Apr 04, 2018Atstāj ziņu

Kas notiek, ja divu mezglu ID segmenti ir vienādi?




CAN autobusu tīkli principā neļauj diviem mezgliem būt vienādam ID segmentam, bet kas notiek, ja divu mezglu ID segmenti ir vienādi?

Pirms eksperimenta mums ir jābūt skaidrai izpratnei par CAN vēstījumu struktūru un šķīrējtiesas principiem.


Pirmkārt, CAN ziņu struktūra

Visbiežāk izmantotais CAN-bus tīkla standarts ir V2.0 versija. Šo standartu tālāk iedala A un B daļās. To galvenā atšķirība ir ID koda garums šķīrējtiesas jomā. Starp tiem CAN2.0A (standarta rāmis) ir 11 bitu ID, CAN2.0B (paplašināt kadrs) ir 29 bitu ID. Tālāk 1. tabulā ir parādīta CAN ziņojuma struktūra:

1. tabula CAN ziņu struktūra

Fāzes nosaukums Fāzes garums / bits Apraksts
SOF 1 ir datu fāzes sākums, un veido viens dominējošais bits
Abtrišanas fāze Standarta rāmis 12 Norāda rāmja prioritāti, veido 11 ID adreses un 1 RTR
pagarināts rāmis 32 Norāda rāmja prioritāti, sastāv no 29 ID adresēm, 1 bitu SRR, IDE pagarināts un RTR
Kontroles fāze 6 ir datu segmenta datu garuma grupas kods un rezervētie biti
Datu fāze 0 ~ 8 datu saturs, kontroles posms kontrolē datu garumu
CRC 16 pārbaudiet rāmja transmisijas erro, no SOF uz datu fāzi, visu saturu, izņemot pildīšanas bitus
ACK 2 cits mezgls apstiprina šo rāmi, kas pareizi saņemts
Rāmja beigas 7 ir rāmja gala


Otrkārt, šķīrējtiesas princips

CAN autobusu šķīrējtiesa ir balstīta uz "līniju un principu", kā parādīts 1. attēlā. Kad raiduztvērējs vienlaicīgi emitē dažādu līmeņu signālus, recesīvā līmenī vienmēr ir dominējošais līmenis. Ziņojuma nosūtīšanas laikā CAN kontrolleris uzraudzīs, vai autobusa statuss ir tāds pats kā pats nosūtītais. Ja neatbilstība rodas ID segmentā, šķīrējtiesa notiks. Ja tas notiek citās vietās, tiks aktivizēta atbilstošā kļūda.

Turpmākais ir galvenais jautājums. Ko darīt, ja divu mezglu ID segmenti ir vienādi? Mēs sākām eksperimentu ar divām CAN kartēm un vienu CANScope. CAN karte simulē CAN standarta mezglu, lai nosūtītu un saņemtu ziņas, un CANScope veic komunikāciju uzraudzību, kā parādīts 2. attēlā.

                                                           

1.jpg

2. att. Eksperimenta platformas būvniecība


Treškārt, eksperimentējiet vienu: "ID segments ir vienāds, bet dati atšķiras"

CAN karti izmanto, lai nosūtītu CAN rāmi ar ID 000H datiem uz 01020304050607H un citu CAN karti, lai nosūtītu CAN rāmi ar 000H datiem līdz 02020304050607H. DNS, ko uzklausa CANScope, parādīts 3. attēlā. Var novērot, ka ir daudz datu lauka aizpildīšanas kļūdas.


2.jpg

3. attēls Datu lauka aizpildīšana kļūda

Kāpēc tas tā ir? Mēs vispirms iegūstam viļņu formas, kas atbilst divām CAN kartes pārraides ziņām, kā parādīts 4. attēlā. Tā kā divu spraudņu ziņojums ir standarta datu frames, un katrs rāmis satur 8 bitus datu, viļņu formas, kas atbilst diviem pakešu rāmjiem, ir ID ID segmentā, RTR, IDE, R0 un DLC segmentos. Tāpēc šķīrējtiesas loma nav efektīva, un abi mezgli uzskata sevi par prioritāti un turpina sūtīt datus.

3.jpg

Tagad mēs koncentrējamies uz datu segmentu, pirmie baitu dati ir vienādi, ir 00H; otrais baits ir atšķirīgs, attiecīgi 01H, 02H. 5. attēlā redzamās bultiņas norāda, ka atbilstošo bitu loģika ir attiecīgi 0 un 1. Agrāk mēs minējām, ka CAN mezgls noteiks, vai autobusa līmenis ir tāds pats kā tā sūtījumam nosūtītais līmenis. Ja neatbilstība rodas šķīrējtiesā, kurā nav šķīrējtiesas, tiek aktivizēta atbilstošā kļūda, tādēļ, ja abi rāmji tiek nosūtīti uz autobusu, tajā pašā laikā ir jāparādās bitu kļūdas. Tā kā bitu sūtīšanas kļūda izraisīs mezgla nosūtīšanu 6 dominējošo bitu, kas pārkāpj aizpildīšanas kārtulu (aktīva kļūda iznīcina rāmja datus), parādās datu lauka aizpildīšanas kļūda, kā parādīts attēlā. 3


4.jpg

5. attēls. Datu lauka konflikti


Ceturtkārt, eksperimentējiet divus "vienus un tos pašus datus ar vienu un to pašu ID"

Tajā pašā laikā izmantojiet divas CAN kartes, lai nosūtītu CAN kadrus, kuru ID ir 000H datu 01020304050607H, un CANScope veic komunikāciju uzraudzību. Pirmkārt, mēs nepārbaudām opciju "autobusu atbilde", lai CANScope darbotos tikai klausīšanās režīmā. Eksperimentālie rezultāti ir parādīti 6. attēlā, un atbildes ierobežotājs ir nepareizā formātā.

5.jpg

6.attēls Atbildes noņemšanas formāta kļūda


Kāpēc tas notiek? Mezgls, kas sūta ziņojumu, ACK segmentā nosūtīs divus recesīvos bitus. Ja pirmajā bitē tiek uztverts dominējošais līmenis, rāmis tiek uzskatīts par pareizi saņemtu. Tā kā abie šķīrējtiesneši uzskata, ka viņi ir ieguvuši šķīrējtiesas tiesības, ja tiem ir viens šķīrējtiesas process, viņi gaida atbildi ACK segmentā, bet tīklā ir tikai divi mezgli. Tādēļ ACK segmentā nevar saņemt nekādu atbildi, un tiek konstatēta atbildes noņemšanas kļūda. Vienkārši runājot, šī situācija ir līdzīga tam, ka autobusi nevarēs nosūtīt tikai vienu mezglu. 7. attēlā parādīts vilnim salīdzinājums, ja ACK segmentā nav atbildes.

6.jpg

Att.7 ACK atbilde


Mēs pārbaudām autobusa atbildi un atkal sāk eksperimentu (šajā laikā autobusā ir 3 mezgli). Šajā laikā, kā parādīts fig. 8, autobusu dati tiek nosūtīti un saņemti normāli.

7.jpg

8. attēls. Sāciet BUS atbildi


Kopsavilkums: ja divi mezgli vienlaikus nosūta paketes ar vienu un to pašu ID un datiem, rodas kļūda laukā. Ja divi mezgli sūta paketes ar vienu un to pašu ID un tos pašus datus, kļūda rodas, ja citi mezgli atbild. Citi mezgli atbildēja ar atbildes kļūdu. Tāpēc, projektējot CAN autobusu, mums vajadzētu izvairīties no vienas situācijas ID segmentā.


Nosūtīt pieprasījumu

whatsapp

Telefons

E-pasts

Izmeklēšana