Pull to refresh

Comments 8

На странице в википедии куда больше информации и куда лучше все это описано ?

первоисточник статьи — лекция 403 CAN шина- введение.
Лектор допускает фактические ошибки.

Автор статьи дополнительно искажает лекцию. Например, лектор говорит:
приемопередатчики равноправны
Автор пишет
Приемники и передатчики равноправны

Скачивайте спецификации и читайте их.

Обычно не говорят самого главного, что шина CAN задумывалась для передачи значений датчиков. Добавил например термометр на шину и можно показывать температуру, добавил тахометр показываем обороты. И все эти датчики вешаются на одну линию, что бы не тянуть сотни проводов. И они сами могут с заданным темпом вываливать значения. Те что менее приоритетные имеют адрес побольше, по кадру или по адресу можно определять что это. Но на практике используют немного через… не так. Просто нарезают пакеты по 7 байт+номер пакета и передают блоками, как привыкли. В результате превращая хорошую идею в фигню. Так и живём.


Еще с NRZ есть злобный баг. Если этот NRZ приходится на контрольную сумму, а еще лучше на на бит ACK. Тут у разных устройств начинаются разночтения. И такие избранные кадры не возможно передать между ними.


ps: Еще есть возможность временно попросить все устройства не вещать, напихав в линию нулей.

Обычно не говорят самого главного, что шина CAN задумывалась для передачи значений датчиков.

Возможно, не все знают как расшифровывается CAN? Это Controller Area Network. Кстати, английское "can" в одном из распространённых значений "жестяная банка". Совпадение? - Да.

Но на практике используют немного через… не так. Просто нарезают пакеты по 7 байт+номер пакета и передают блоками, как привыкли. В результате превращая хорошую идею в фигню.

Ну, если вам не нравится KWP2000, то зачем вы пользуетесь TCP/IP? Ведь суть та же: придумали отличный вариант Ethernet, с удобными 1500 байтами. А тут на тебе, натянули сверху протоколов-оболочек, которые вынуждены фрагментировать сообщения да ещё и следить за их порядком... Это был сарказм, если что.

Еще с NRZ есть злобный баг.

Вероятно, вы спутали формат/код NRZ (Non Returnt to Zero) с процессом Bit Stuffing, суть которого во вставлении не информационных бит в общий поток для уменьшения постоянной составляющей в сигнале с кучей одинаковых бит. Это же позволяет не потерять синхронизацию приёмнику ведь NRZ не является самосинхронизирующимся кодом, в отличии от, например, манчестера.

По стандарту, кстати, бит стаффинг есть во всех полях кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF. Но практика показывает, что всякие сторонние причины, такие как не полное соответствие стандарту и/или ошибки в реализации блока как раз и приводят к эффектам, описанным вами.

Лучше бы в статье было про что-то новое, например про CAN FD (CAN Flexible Data-Rate).

Шина представляет из себя витую пару разделенную резисторами сопротивлением 120 Ом. Состоит из линии высокого напряжения (H - high) и низкого напряжения (L-low).

Это не так. Витая пара, это один из нескольких возможных физических уровней для шины CAN.

Шина представляет из себя витую пару разделенную резисторами сопротивлением 120 Ом.

Сразу неправильно. Витая пара, это только один из многих вариантов физического уровня для CAN шины.

Sign up to leave a comment.

Articles