logo

CAN (Controller Area Network) протокол

CAN означава Мрежа на контролера протокол. Това е протокол, разработен от Робърт Бош през около 1986 г. CAN протоколът е стандарт, предназначен да позволи на микроконтролера и други устройства да комуникират помежду си без никакъв хост компютър. Характеристиката, която прави CAN протокола уникален сред другите комуникационни протоколи, е излъчващият тип шина. Тук излъчването означава, че информацията се предава до всички възли. Възелът може да бъде сензор, микроконтролер или шлюз, който позволява на компютъра да комуникира по мрежата чрез USB кабел или Ethernet порт. CAN е протокол, базиран на съобщения, което означава, че съобщението носи идентификатора на съобщението и въз основа на идентификатора се решава приоритетът. Няма нужда от идентификация на възел в CAN мрежата, така че става много лесно да го поставите или изтриете от мрежата. Това е сериен полудуплексен и асинхронен тип комуникационен протокол. CAN е двупроводен комуникационен протокол, тъй като CAN мрежата е свързана чрез двупроводната шина. Проводниците са усукани двойки с характерен импеданс от 120Ω, свързани във всеки край. Първоначално той е предназначен главно за комуникация в превозните средства, но сега се използва в много други контексти. Подобно на UDS и KWP 2000, МОЖЕ да се използва и за бордова диагностика.

Защо МОЖЕ?

Необходимостта от централизиран стандартен комуникационен протокол се появи поради увеличаването на броя на електронните устройства. Например, може да има повече от 7 TCU за различни подсистеми като арматурно табло, управление на трансмисията, блок за управление на двигателя и много други в едно модерно превозно средство. Ако всички възли са свързани едно към едно, тогава скоростта на комуникацията ще бъде много висока, но сложността и цената на проводниците ще бъдат много високи. В горния пример едно табло изисква 8 конектора, така че за да се преодолее този проблем, CAN беше въведен като централизирано решение, което изисква два проводника, т.е. CAN висок и CAN нисък. Решението за използване на CAN протокол е доста ефективно поради неговото приоритизиране на съобщенията и е гъвкаво, тъй като възел може да бъде вмъкнат или премахнат, без да се засяга мрежата.

Приложения на CAN протокол

Първоначално CAN протоколът е проектиран да се насочи към комуникационния проблем, който възниква в превозните средства. Но по-късно, поради функциите, които предлага, се използва в различни други области. Следните са приложенията на CAN протокола:

  • Автомобили (пътнически автомобили, камиони, автобуси)
  • Електронно оборудване за авиацията и навигацията
  • Индустриална автоматизация и механично управление
  • Асансьор и ескалатори
  • Сградна автоматизация
  • Медицински инструменти и оборудване
  • Морски, медицински, индустриални, медицински

CAN многослойна архитектура

Както знаем, че OSI модел разделя комуникационната система на 7 различни слоя. Но CAN многослойната архитектура се състои от два слоя, т.е.

Нека разберем и двата слоя.

  • Слой за връзка към данни: Този слой е отговорен за трансфера на данни от възел до възел. Тя ви позволява да установявате и прекъсвате връзката. Той също така отговаря за откриването и коригирането на грешките, които могат да възникнат на физическия слой. Слоят за връзка с данни е подразделен на два подслоя:
      MAC:MAC означава Media Access Control. Той определя как устройствата в мрежата получават достъп до средата. Той осигурява капсулиране и декапсулиране на данни, откриване на грешки и сигнализиране.
  • LLC:LLC означава Контрол на логическата връзка. Той отговаря за филтрирането на приемането на рамката, известяването за претоварване и управлението на възстановяването.
  • Физически слой: Физическият слой отговаря за предаването на необработени данни. Той определя спецификациите за параметрите като ниво на напрежение, синхронизация, скорости на данни и конектор.

CAN спецификациите определят CAN протокола и CAN физическия слой, които са дефинирани в CAN стандарта ISO 11898. ISO 11898 има три части:

java int като низ
  • ISO 11898-1: Тази част съдържа спецификацията на слоя за връзка с данни и физическата сигнална връзка.
  • ISO 11898-2: Тази част е под CAN физически слой за високоскоростен CAN. Високоскоростният CAN позволява скорост на данни до 1 Mbps, използвана в силовото предаване и зоната за зареждане на превозното средство.
  • ISO 11898-3: Тази част също попада под CAN физически слой за CAN с ниска скорост. Позволява скорост на данни до 125 kbps, а CAN с ниска скорост се използва, когато скоростта на комуникация не е критичен фактор.

CiA DS-102: Пълната форма на CiA е CAN в автоматизацията, която определя спецификациите за CAN конектора.

java сортиране на arraylist

Що се отнася до изпълнението, CAN контролерът и CAN трансивърът са внедрени в софтуера с помощта на приложението, операционната система и функциите за управление на мрежата.

CAN Рамкиране

Нека разберем структурата на CAN рамката.

CAN протокол
    SOF:SOF означава началото на рамката, което показва, че новата рамка е въведена в мрежа. Той е от 1 бит.Идентификатор:Стандартен формат на данни, дефиниран съгласно спецификацията CAN 2.0 A, използва 11-битов идентификатор на съобщение за арбитраж. По принцип този идентификатор на съобщение задава приоритета на рамката с данни.RTR:RTR означава Remote Transmission Request, което определя типа рамка, независимо дали е рамка с данни или отдалечена рамка. Той е 1-битов.Контролно поле:Има дефинирани от потребителя функции.
      ОТИВАМ:IDE бит в контролно поле означава разширение на идентификатора. Доминиращият IDE бит дефинира 11-битовия стандартен идентификатор, докато рецесивният IDE бит дефинира 29-битовия разширен идентификатор.DLC:DLC означава Data Length Code, който определя дължината на данните в поле за данни. Той е от 4 бита.Поле за данни:Полето с данни може да съдържа до 8 байта.
    CRC поле:Рамката с данни също така съдържа 15-битово циклично поле за проверка на излишъка, което се използва за откриване на повреда, ако възникне по време на предаване. Изпращачът ще изчисли CRC преди да изпрати кадъра с данни, а получателят също изчислява CRC и след това сравнява изчисления CRC с CRC, получен от подателя. Ако CRC не съвпада, тогава приемникът ще генерира грешката.ACK поле:Това е потвърждението на получателя. При други протоколи се изпраща отделен пакет за потвърждение след получаване на всички пакети, но в случай на CAN протокол не се изпраща отделен пакет за потвърждение.EOF:EOF означава край на рамката. Съдържа 7 последователни рецесивни бита, известни като край на рамката.

Сега ще видим как данните се предават през CAN мрежата.

CAN протокол

CAN мрежата се състои от множество CAN възли. В горния случай разгледахме три CAN възела и ги нарекохме като възел A, възел B и възел C. CAN възелът се състои от три елемента, които са дадени по-долу:

  • Домакин
    Хостът е микроконтролер или микропроцесор, който изпълнява някакво приложение за извършване на определена работа. Хостът решава какво означава полученото съобщение и какво следва да изпрати.
  • CAN контролер
    CAN контролерът се занимава с комуникационните функции, описани от CAN протокола. Той също така задейства предаването или приемането на CAN съобщения.
  • CAN трансивър
    CAN трансивърът отговаря за предаването или приемането на данни по CAN шината. Той преобразува сигнала за данни в поток от данни, събрани от CAN шината, които CAN контролерът може да разбере.

В горната диаграма неекраниран кабел с усукана двойка се използва за предаване или получаване на данни. Известна е още като CAN шина, а CAN шината се състои от две линии, т.е. CAN ниска линия и CAN висока линия, които също са известни съответно като CANH и CANL. Предаването се осъществява поради диференциалното напрежение, приложено към тези линии. CAN използва кабел с усукана двойка и диференциално напрежение поради околната среда. Например, в кола, двигател, система за запалване и много други устройства могат да причинят загуба на данни и повреда на данни поради шум. Усукването на двете линии също намалява магнитното поле. Шината е терминирана с 120Ω съпротивление във всеки край.

Характеристики на CAN

CAN протокол

С помощта на диференциално напрежение ще определим как 0 и 1 се предават през CAN шината. Горната фигура е графиката на напрежението, която показва нивото на напрежение на CAN low и CAN high. В CAN терминологията се казва, че логика 1 е рецесивна, докато логика 0 е доминираща. Когато CAN висока линия и CAN ниска линия се прилагат с 2,5 волта, тогава действителното диференциално напрежение ще бъде нула волта. Нулев волт на CAN шината се чете от CAN трансивъра като рецесивен или логическа 1. Нулев волт на CAN шината е идеалното състояние на шината. Когато CAN високата линия е изтеглена до 3,5 волта и CAN ниската линия е изтеглена надолу до 1,5 волта, тогава действителното диференциално напрежение на шината ще бъде 2 волта. Той се третира като доминиращ бит или логическа 0 от CAN трансивъра. Ако състоянието на шината е достигнато до доминираща или логическа 0, тогава ще стане невъзможно преминаването към рецесивно състояние от който и да е друг възел.

какво е java стек

Ключови точки, извлечени от характеристиките на CAN

  • Логика 1 е рецесивно състояние. За предаване на 1 по CAN шина, CAN high и CAN low трябва да бъдат приложени с 2,5 V.
  • Логическа 0 е доминиращо състояние. За предаване на 0 по CAN шината, CAN високо трябва да се приложи при 3,5 V, а CAN ниско трябва да се приложи при 1,5 V.
  • Идеалното състояние на шината е рецесивно.
  • Ако възелът достигне доминантното състояние, той не може да се върне обратно към рецесивното състояние от друг възел.

Логика на CAN шината

CAN протокол
CAN протокол

От горния сценарий разбираме, че доминантното състояние презаписва рецесивното състояние. Когато възелът изпраща доминиращия и рецесивния бит едновременно, тогава шината остава доминираща. Рецесивното ниво възниква само когато всички възли изпратят рецесивния бит. Такава логика е известна като И логика и физически тя е реализирана като верига с отворен колектор.

Принцип на комуникация CAN

Както знаем, че съобщението се изпраща въз основа на приоритета, зададен в арбитражното поле. За стандартната рамка идентификаторът на съобщението е 11 бита, докато за разширената рамка идентификаторът на съобщението е 29 бита. Той позволява на дизайнера на системата да проектира идентификатора на съобщението при самия дизайн. Колкото по-малък е идентификаторът на съобщението, толкова по-висок ще бъде приоритетът на съобщението.

Нека разберем как работи арбитражът чрез блок-схема.

CAN (Controller Area Network) протокол

Подателят иска да изпрати съобщението и чака CAN шината да стане неактивна. Ако CAN шината е неактивна, изпращачът изпраща SOF или доминиращия бит за достъп до шината. След това изпраща битовия идентификатор на съобщението в най-значимия бит. Ако възелът открие доминиращия бит в шината, докато е предал рецесивния бит, това означава, че възелът е загубил арбитража и спира да предава допълнителни битове. Подателят ще изчака и ще изпрати отново съобщението, след като автобусът е свободен.

Пример за CAN арбитраж

CAN протокол

Ако разгледаме три възела, т.е. възел 1, възел 2 и възел 3, идентификаторите на съобщенията на тези възли са съответно 0x7F3, 0x6B3 и 0x6D9.

CAN протокол

Предаването на трите възела с най-значимия бит е показано на горната диаграма.

единадесетthбит: Тъй като всичките три бита на възлите са рецесивни, така че шинният бит също ще остане рецесивен.

10thбит: Всички възли имат 10-ти бит като рецесивен, така че автобусът също ще остане рецесивен.

9thбит: Възел 1 има рецесивен бит, докато други възли имат доминиращ бит, така че шината също ще остане доминираща. В този случай възел 1 е загубил арбитража, така че спира да изпраща битове.

списък на java

8thбит: И възел 2, и възел 3 изпращат рецесивен бит, така че състоянието на шината ще остане рецесивно.

7thбит: Възел 2 изпраща доминиращ бит, докато възел 3 е изпратил рецесивен бит, така че състоянието на шината ще остане доминиращо. В този случай възел 3 е загубил арбитража, така че той спира да изпраща съобщението, докато възел 2 е спечелил арбитража, което означава, че той ще продължи да държи шината, докато съобщението бъде получено.