Канальний рівень can мережі, роблю все своїми руками

Алгоритми управління CAN протоколу реалізуються спеціальними апаратними засобами - CAN контролерами. Ці контролери випускаються або у вигляді окремих інтегральних схем (ІС), або є вбудованими елементами більш складних пристроїв. CAN контролер в комплекті з ІС CAN трансивера забезпечує роботу мережі, реалізуючи всі необхідні функції: від управління доступом до середовища передачі даних (MAC - процедури) до передачі сигналів по лінії зв'язку. Для HLP протоколів залишаються тільки функції настройки мережі: автоматичний вибір і завдання швидкості передачі, підтримка алгоритмів контролю повідомлень, передача повідомлень великого обсягу, автоматичний розподіл ідентифікаторів в мережі і т. П. Ці завдання можуть бути вирішені і без HLP протоколів, при проектуванні мережі можна вручну задати всі необхідні параметри і режими і зробити налаштування CAN контролерів. HLP протоколи дозволяють автоматизувати настройку мережі та, в ряді випадків, змінювати налаштування в процесі роботи.

При спробі одночасної передачі кадрів декількома вузлами працює механізм поразрядного неруйнівного арбітражу, що забезпечує першочерговий доступ повідомленнями з високим рівнем пріоритету (Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority - CSMA / CD + AMP).

Передача пріоритетного повідомлення буде продовжена, а інші вузли повинні перервати передачу до звільнення шини. Рівень пріоритету визначається станом і кількістю домінантних біт в поле арбітражу, в якому передається ідентифікатор повідомлення. Меншому значенню ідентифікатора відповідає більш високий рівень пріоритету.

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

CAN протокол передбачає два алгоритму передачі даних:

• передавальний вузол самостійно передає кадр даних, інші вузли його приймають і обробляють;

• вузол може надіслати запит на необхідні дані, на цей запит вузол-джерело даних передає повідомлення, яке, як і в першому випадку, приймається і обробляється.

Дані передаються в кадрі даних (data frame), а для запиту даних передбачений кадр запиту (remote frame), що має подібну структуру. Кадр для передачі по шині складається з семи основних полів (рис. 4.2). CAN протокол підтримує два формати кадрів (стандартний і розширений), які розрізняються лише довжиною ідентифікатора (ID).

Кадр стандартного формату починається домінантним (0) стартовим бітом "початок кадру" (SOF - Start of Frame). За ним слідує поле арбітражу, що містить 11-розрядний ідентифікатор і біт RTR запиту передачі (Remote Transmission Request). Цей біт вказує, чи передається кадр даних (біт RTR - 0) або кадр запиту (біт RTR - 1), в якому відсутня поле даних.

Мал. 4.2. CAN кадр

Управляє полі містить біт розширення ідентифікатора (IDE - identifier extension), який вказує тип формату кадру: стандартний (0) або розширений (1). У цьому полі також знаходяться чотири біта DLC для вказівки довжини поля даних і зарезервований для майбутнього застосування біт R0. У розширеному форматі після біта IDE слідують 18 додаткових біт ідентифікатора (подовження поля Arbitration Field до 32 біт). За керуючим полем йдуть поле даних (0-8 байт) і поле циклічного контролю CRC довжиною 15 біт плюс рецесивний біт обмежувача цього поля. Утворює поліном CRC для контролю кадру - (x 15 + x 14 + x 10 + x 8 + x 7 + x 4 + x 3 + 1).

Поле підтвердження (АСК) складається з області АСК довжиною в 1 біт і обмежувача поля АСК. АСК-біт поміщається на шину передавачем як рецесивний (логічна 1). Приймачі, коректно прийняли ці дані, перетворять його в логічний 0, роблячи його домінантним. Таким чином, передавальний вузол отримує підтвердження, що хоча б один приймач правильно прийняв його повідомлення. Повідомлення підтверджуються приймачами незалежно від результату тестування даних при прийомі.

Кінець повідомлення вказується EOF (7 рецесивних біт), після якого йде пауза. Довжина паузи дорівнює мінімальній кількості бітів (3 біта), що відокремлюють послідовні повідомлення.

У CAN протоколі не використовується підтвердження повідомлень. Замість цього сигнализируется про виниклі помилки передачі. Всього в CAN- протоколі реалізовано п'ять механізмів перевірки на наявність помилок. Прапор помилки - це повідомлення, що містить 6 домінантних біт поспіль. Інші вузли, прийнявши таку послідовність, також можуть передати прапор помилки.

Перші три алгоритму контролю реалізовані на рівні повідомлень: • Циклічний контроль. Контрольовані поля кадру від SOF до CRC.

При використанні цього методу в кінці передачі додаються біти циклічного надлишкового коду. Після отримання повідомлення відбувається його повторне обчислення і порівняння з отриманим кодом циклічного контролю. Якщо ці два значення не збігаються, то виявляється помилка CRC.

• Контроль кадру. Перевіряється відповідність структури переданого

кадру його фіксованому формату і розміру. Помилки, які можуть виникнути під час перевірки кадру, отримали назву "помилки формату".

• Помилки підтвердження. Як вже раніше було сказано, прийняті кадри

підтверджуються всіма приймачами. Якщо передавач не отримав жодного підтвердження, то це може означати, що приймачі виявили помилку (спотворене поле АСК), або приймачі взагалі відсутні в мережі.

Наступні два алгоритму визначення помилок реалізовані в протоколі CAN на битовом рівні:

• Моніторинг шини. Одна з особливостей CAN мережі полягає в тому, що

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

• Заповнення битами. У CAN використовується сигнальний код NRZ. при

довгих послідовностях бітів з одним і тим же значенням можливий збій синхронізації. Якщо в повідомленні поспіль йдуть п'ять бітів з однаковим значенням, то передавач автоматично вставляє додатковий біт. Цей біт автоматично видаляється з повідомлення приймачами. Якщо буде отримано шість і більше послідовних бітів з одним і тим же значенням, це вважається помилкою.

Якщо протягом передачі кадру хоча б один вузол знайде помилку (локальна помилка), то він передає кадр помилки, який аварійно завершує поточну передачу. В цьому випадку всі вузли мережі не обробляють прийняте повідомлення, чим досягається несуперечливість даних у всій мережі. Вузли мережі, які не виявили помилку, після прийому кадру помилки повинні повторити передачу кадру помилки (глобалізація помилки), тому максимальна довжина цього поля може досягати 12 домінантних біт. Завершується кадр помилки обмежувачем прапора помилки з 8 рецесивних біт. Після стандартної паузи (3 біта), перервана кадром помилки передача повинна бути повторена. Як правило, повторна передача починається протягом періоду часу, відповідного передачі 23 бітів, який починається з моменту виявлення помилки.

Для реалізації процедур самоконтролю кожен вузол CAN мережі містить два лічильники: лічильник помилок прийому (REC) і лічильник помилок передачі (TEC). Лічильники автоматично инкрементируются після виявлення кожної помилки і декрементируется після коректної передачі або прийому кадру. Залежно від стану лічильників помилок вузол може перебувати в одному з трьох станів: активної помилки, пасивної помилки, відключений від шини.

Стан активної помилки є основним для вузла CAN мережі і передбачає його нормальне функціонування. При виявленні помилки в цьому стані вузол посилає кадр активної помилки (6 домінантних біт). Стан активної помилки триватиме до тих пір, поки число помилок в будь-якому з лічильників не перевищує 127. Якщо число помилок перевищує 96, микроконтроллеру вузла передається повідомлення про критичний числі помилок. При числі помилок більше 127, але менше 256 вузол переходить в стан пасивної помилки.

Стан пасивної помилки свідчить про часто повторюваних помилках. Вузол з цього стану може самостійно повернутися до активної помилку, якщо число помилок в лічильниках стане менше 128. При виявленні чергової помилки вузол має право передати тільки кадр пасивної помилки (6 рецесивних біт), який не може змінити поточну передачу будь-якого іншого вузла. При повторенні перерваної передачі цього вузла повинна бути зроблена додаткова пауза (8 рецесивних біт) для того, щоб не заважати передачі кадрів інших вузлів.

Якщо число помилок в будь-якому з лічильників перевищить 255, вузол повинен відключитися від шини (на практиці REC містить тільки 8 двійкових розрядів і тому число помилок прийому не може перевищити цей поріг). Самостійно CAN контролер вузла не може повернутися в робочий стан. Якщо проведений зовнішній скидання, CAN контролер повертається в стан активної помилки і після паузи 128х11 (1408) може передавати повідомлення.

CAN протокол визначає правила накопичення числа помилок в лічильниках REC і TEC. Залежно від виду помилки збільшення числа помилок в лічильниках може бути від 1 до 8 при виявленні одноразової помилки. Декремент вмісту лічильників в стані активної помилки проводиться завжди тільки на 1. Це дозволяє привласнювати різні ваги різних помилок.

Наприклад, виявлення помилки при прийомі збільшує REC на одиницю одночасно з відправкою кадру активної помилки; якщо приймається домінантний біт після відправки вузлом кадру активної помилки, REC збільшується на 8, тому що це означає, що тільки цей вузол виявив помилку. TEC збільшується на 8 при передачі кадру помилки. Успішна передача кадру зменшує TEC на 1 (якщо значення НЕ 0). Успішний прийом кадру вузлом зменшує REC (якщо він був не 0) на 1 в стані активної помилки; якщо вузол був в стані пасивної помилки, в REC встановлюється величина від 119 до 127 (тобто при TEC менше 128 вузол перейде в стан активної помилки).

Будь-вузол може також послати кадр перевантаження (overload frame), якщо, по-перше, він не встигає обробляти повідомлення і не може забезпечити прийом наступного повідомлення, по-друге, при прийомі домінантних біт в паузі між кадрами (це може означати втрату синхронізації при прийомі). Кадр перевантаження має такий же формат, як і кадр помилки, але передається завжди тільки після завершення прийому кадру. А кадр помилки може бути переданий тільки в процесі передачі кадру. Кадр перевантаження не збільшує стан лічильників помилок і не призводить до повторної передачі кадрів. Допускається передача вузлом не більше 2 кадрів перевантаження поспіль.

У відповідності з усіма процедурами контролю:

• передача кадру вважається успішною, якщо не виявлено помилок до кінця поля EOF;

• прийом кадру вважається успішним, якщо не виявлено помилок та протягом межкадрового інтервалу (3 біта після EOF).

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

В даний час випускають CAN контролери, які підтримують одну з трьох версій протоколу. Версія CAN 2.0A підтримує роботу тільки з кадрами стандартного формату, що мають 11-бітний ідентифікатор. CAN 2.0B passive забезпечує передачу кадрів стандартного формату, а прийом і обробку кадрів і стандартного формату, і розширеного формату з 29-бітовим ідентифікатором. CAN 2.0B active забезпечує обробку кадрів обох форматів.

Стандартна структура CAN контролера приведена на рис. 4.3. Очевидно, що CAN контролер повинен містити буферні ЗУ і для переданих даних, і для отриманих даних. Реалізація процедур CAN протоколу, як правило, проводиться апаратно з передачею через трансивер вихідних сигналів вузла (Tx) і вхідних сигналів з шини (Rx). Приймальний фільтр аппа- ратно виробляє селективну запис прийнятих кадрів по їх ідентифікаторів в буферне ЗУ. Передбачається, що буфер передачі повинен забезпечувати зберігання, по крайней мере, одного повідомлення, а буфер прийому - не менше двох повідомлень. Найчастіше CAN контролери мають більший обсяг буферних ЗУ. Доступ до даних в буферних

Мал. 4.3. Структура CAN контролера

ЗУ може проводитися за алгоритмом FIFO або в більш складних реалізаціях з урахуванням рівня пріоритету, який визначається ідентифікатором. Інтерфейс CAN контролера з керуючим мікро контролером вузла - стандартний. Через цей інтерфейс проводиться настройка параметрів, режимів, приймального фільтра і т.п. а також обмін даними з CAN шиною. В даний час проводиться досить велика кількість керуючих мікроконтролерів, які містять вбудовані засоби для обміну даними по CAN мережі.

У зв'язку з тим, що CAN протокол визначає тільки процедури фізичного і MAC рівнів, а побудова мережі вимагає розв'язання й інших завдань, пов'язаних, наприклад, з процедурами LLC, процедурами вибору параметрів і режимів при ініціалізації роботи вузлів, розроблені так звані CAN HLP протоколи.

ПЕРЕТВОРЮВАЧ ІНТЕРФЕЙСУ RS-422 B RS-232

B пристрої (рис. 18.2) застосовуються два світлодіодних індикатора для відображення статусу лінії зв'язку, а також кінцеві резистори (при необхідності). Резистори опором 220 Ом і стабілітрони з напругою стабілізації 5 B .......

Ізолятори з трансформаторної зв'язком

Ізолятори з ємнісний зв'язком

Компоненти з конденсаторним каналом зв'язку виготовляє фірма Burr- Brown (Texas Instruments). Для ізоляції використовуються спеціальні високовольтні керамічні конденсатори ємністю всього 0.4 пФ, що вже створює захист від відносно повільно змінюються .......

Компоненти гальванічної ізоляції

У ряді випадків інтерфейси повинні передавати сигнали між пристроями, що працюють в різних умовах і тому не допускають безпосереднього з'єднання електричних ланцюгів. У цих умовах необхідно передавати сигнали, одночасно забезпечуючи повну .......

Схожі статті