logo

Протокол CAN (Controller Area Network).

CAN означає Мережа контролера протокол. Це протокол, розроблений Роберт Бош приблизно в 1986 році. Протокол CAN — це стандарт, розроблений для того, щоб мікроконтролер та інші пристрої могли спілкуватися один з одним без будь-якого головного комп’ютера. Особливістю, яка робить протокол CAN унікальним серед інших протоколів зв'язку, є широкомовний тип шини. Тут трансляція означає, що інформація передається на всі вузли. Вузол може бути датчиком, мікроконтролером або шлюзом, який дозволяє комп’ютеру спілкуватися через мережу через кабель USB або порт Ethernet. CAN — це протокол на основі повідомлень, що означає, що повідомлення містить ідентифікатор повідомлення, і на основі цього ідентифікатора визначається пріоритет. Немає потреби в ідентифікації вузла в мережі CAN, тому його стає дуже легко вставити або видалити з мережі. Це послідовний напівдуплексний і асинхронний тип протоколу зв'язку. CAN — це двопровідний протокол зв’язку, оскільки мережа CAN підключається через двопровідну шину. Проводи являють собою кручену пару, що має повний опір 120 Ом, з’єднаний на кожному кінці. Спочатку він був розроблений в основному для спілкування в транспортних засобах, але зараз він використовується в багатьох інших контекстах. Як і UDS, і KWP 2000, також МОЖНА використовуватися для бортової діагностики.

Чому МОЖНА?

Потреба в централізованому стандартному протоколі зв'язку виникла через збільшення кількості електронних пристроїв. Наприклад, у сучасному транспортному засобі може бути більше 7 TCU для різних підсистем, таких як панель приладів, керування трансмісією, блок керування двигуном та багато іншого. Якщо всі вузли підключити один до одного, то швидкість зв'язку буде дуже високою, але складність і вартість проводів будуть дуже високими. У наведеному вище прикладі для однієї приладової панелі потрібно 8 роз’ємів, тому, щоб подолати цю проблему, CAN було представлено як централізоване рішення, яке потребує двох проводів, тобто CAN High і CAN Low. Рішення з використанням протоколу CAN є досить ефективним завдяки його пріоритезації повідомлень і гнучким, оскільки вузол можна вставляти або видаляти, не впливаючи на мережу.

Застосування протоколу CAN

Спочатку протокол CAN був розроблений для вирішення проблем із зв’язком, які виникають у автомобілях. Але пізніше, завдяки функціям, які він пропонує, він використовується в різних інших сферах. Нижче наведено приклади застосування протоколу CAN:

  • Автомобільна (легкові, вантажівки, автобуси)
  • Електронне обладнання для авіації та навігації
  • Промислова автоматизація та механічне керування
  • Ліфт і ескалатори
  • Автоматизація будівель
  • Медичні інструменти та обладнання
  • Морські, медичні, промислові, медичні

Багаторівнева архітектура CAN

Як ми знаємо, що Модель OSI Розділяє систему зв'язку на 7 різних рівнів. Але багаторівнева архітектура CAN складається з двох рівнів, тобто

Давайте розберемося з обома шарами.

  • Рівень каналу даних: цей рівень відповідає за передачу даних між вузлами. Він дозволяє встановлювати та розривати з'єднання. Він також відповідає за виявлення та виправлення помилок, які можуть виникнути на фізичному рівні. Рівень каналу даних підрозділяється на два підрівні:
      МАК:MAC розшифровується як Media Access Control. Він визначає, як пристрої в мережі отримують доступ до середовища. Він забезпечує інкапсуляцію та декапсуляцію даних, виявлення помилок і сигналізацію.
  • ТОВ:LLC розшифровується як Logical Link Control. Він відповідає за фільтрацію прийняття кадрів, повідомлення про перевантаження та керування відновленням.
  • Фізичний рівень: фізичний рівень відповідає за передачу необроблених даних. Він визначає специфікації для таких параметрів, як рівень напруги, синхронізація, швидкість передачі даних і роз’єм.

Специфікації CAN визначають протокол CAN і фізичний рівень CAN, які визначені в стандарті CAN ISO 11898. ISO 11898 складається з трьох частин:

регулярний вираз у java
  • ISO 11898-1: Ця частина містить специфікацію рівня каналу даних і фізичного каналу зв’язку.
  • ISO 11898-2: Ця частина відноситься до фізичного рівня CAN для високошвидкісної CAN. Високошвидкісний CAN забезпечує швидкість передачі даних до 1 Мбіт/с, що використовується в силовій системі та зарядній зоні автомобіля.
  • ISO 11898-3: ця частина також відноситься до фізичного рівня CAN для низькошвидкісної CAN. Він забезпечує швидкість передачі даних до 125 Кбіт/с, а низька швидкість CAN використовується там, де швидкість зв’язку не є критичним фактором.

CiA DS-102: повна форма CiA – це CAN в автоматизації, яка визначає специфікації роз’єму CAN.

java string підрядок

Що стосується реалізації, то CAN-контролер і CAN-трансивер реалізовані в програмному забезпеченні за допомогою додатків, операційної системи та функцій керування мережею.

CAN Framing

Давайте розберемося в структурі 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. У термінології CAN логіка 1 називається рецесивною, тоді як логіка 0 є домінантною. Коли лінія високого рівня та лінія низького рівня CAN подаються з напругою 2,5 вольта, тоді фактична диференціальна напруга буде нульовою. Нуль вольт на шині CAN зчитується трансивером CAN як рецесивна або логічна 1. Нуль вольт на шині CAN є ідеальним станом шини. Коли напруга високого рівня CAN підвищується до 3,5 В, а низька лінія CAN знижується до 1,5 В, тоді фактична диференціальна напруга шини становитиме 2 В. Трансивер CAN розглядає його як домінантний біт або логічний 0. Якщо стан шини досягнуто домінантного або логічного 0, тоді неможливо буде перейти до рецесивного стану будь-яким іншим вузлом.

перетворювач рядка в int

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

  • Логіка 1 є рецесивним станом. Щоб передати 1 по шині CAN, CAN високий і низький CAN повинні бути застосовані з 2,5 В.
  • Логічний 0 є домінуючим станом. Щоб передати 0 по шині CAN, високий рівень CAN має бути застосований при 3,5 В, а низький рівень CAN — 1,5 В.
  • Ідеальний стан шини - рецесивний.
  • Якщо вузол досягає домінантного стану, він не може повернутися до рецесивного стану будь-яким іншим вузлом.

Логіка шини CAN

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

З наведеного вище сценарію ми дізнаємося, що домінантний стан перезаписує рецесивний стан. Коли вузол надсилає домінантний і рецесивний біти одночасно, шина залишається домінантною. Рецесивний рівень виникає лише тоді, коли всі вузли посилають рецесивний біт. Така логіка відома як логіка І, і фізично вона реалізована як схема з відкритим колектором.

Принцип зв'язку CAN

Як відомо, повідомлення надсилається на основі пріоритету, встановленого в арбітражному полі. Для стандартного кадру ідентифікатор повідомлення становить 11 біт, тоді як для розширеного кадру ідентифікатор повідомлення становить 29 біт. Це дозволяє розробнику системи розробляти ідентифікатор повідомлення під час самого проектування. Чим менший ідентифікатор повідомлення, тим вищим буде його пріоритет.

Давайте розберемося, як працює арбітраж за допомогою блок-схеми.

Протокол CAN (Controller Area Network).

Відправник хоче надіслати повідомлення та чекає, поки шина CAN перестане працювати. Якщо шина CAN неактивна, то відправник надсилає SOF або домінуючий біт для доступу до шини. Потім він надсилає біт ідентифікатора повідомлення у старшому біті. Якщо вузол виявляє домінантний біт на шині, коли він передав рецесивний біт, це означає, що вузол втратив арбітраж і припиняє передачу подальших бітів. Відправник зачекає та повторно надішле повідомлення, коли автобус звільниться.

Приклад арбітражу CAN

CAN протокол

Якщо ми розглядаємо три вузли, тобто вузол 1, вузол 2 і вузол 3, ідентифікатори повідомлень цих вузлів 0x7F3, 0x6B3 і 0x6D9 відповідно.

CAN протокол

Передача всіх трьох вузлів із старшим бітом показана на схемі вище.

одинадцятьтисбіт: Оскільки всі три біти вузлів є рецесивними, біт шини також залишатиметься рецесивним.

10тисбіт: усі вузли мають 10-й біт як рецесивний, тому шина також залишатиметься рецесивною.

9тисбіт: Вузол 1 має рецесивний біт, тоді як інші вузли мають домінантний біт, тому шина також залишатиметься домінантною. У цьому випадку вузол 1 програв арбітраж, тому він припиняє надсилати біти.

стек в ds

8тисбіт: і вузол 2, і вузол 3 надсилають рецесивний біт, тому стан шини залишатиметься рецесивним.

7тисбіт: вузол 2 надсилає домінантний біт, тоді як вузол 3 надіслав рецесивний біт, тому стан шини залишатиметься домінуючим. У цьому випадку вузол 3 програв арбітраж, тому він припиняє надсилати повідомлення, тоді як вузол 2 виграв арбітраж, що означає, що він продовжуватиме утримувати шину, доки повідомлення не буде отримано.