Топология сети CAN.
Каждый узел образован собственно CAN контроллером, который обеспечивает взаимодействие с сетью и реализует протокол, и микропроцессором (CPU). CAN контроллеры соединяются с помощью дифференциальной шины, которая имеет две линии - CAN_H (can-high) и CAN_L (can-low), по которым передаются сигналы. Логический ноль регистрируется, когда на линии CAN_H сигнал выше, чем на линии CAN_L. Логическая единица – когда сигналы CAN_H и CAN_L одинаковы (отличаются менее чем на 0.5 В). Использование дифференциальной схемы передачи делает возможным работу CAN сети в сложных внешних условиях.
Логический ноль – доминантный бит, логическая единица – рецессивный. При одновременной передаче в шину лог. "нуля" и "единицы", на шине будет зарегистрирован логический ноль (доминантный сигнал), а логическая единица будет подавлена (рецессивный сигнал).
Когда шина свободна CAN-сообщение может быть передано любым узлом системы (мультимастерность). Эта особенность позволяет эффективно поддерживать передачу сообщений, ориентируемую на события.
|
|
Данные в CAN передаются короткими сообщениями-кадрами стандартного формата. В CAN существуют четыре типа сообщений:
- Data Frame
- Remote Frame
- Error Frame
· Overload Frame
Data Frame – наиболее часто используемый тип сообщения; состоит из следующих основных частей:
поле арбитража (arbitration field) определяет приоритет сообщения в случае, когда два или более узлов одновременно пытаются передать данные в сеть.
Поле арбитража состоит в свою очередь из:
11-битного идентификатора + 1 бит RTR (retransmit) – для стандарта CAN-2.0A,
29-битного идентификатора + 1 бит RTR (retransmit) – для стандарта CAN-2.0B.
Каждое сообщение снабжается идентификатором, который определяет назначение передаваемых данных, но не адрес приемника. Отметим, что поле идентификатора никак не идентифицирует ни узел в сети, ни содержимое поля данных. Любой приемник может реагировать как на один идентификатор, так и на несколько. На один идентификатор могут реагировать несколько приемников.
- поле данных (data field) содержит от 0 до 8 байт данных
- поле CRC (CRC field) содержит 15-битную контрольную сумму сообщения, которая используется для обнаружения ошибок
- слот подтверждения (Acknowledgement Slot) (1 бит), каждый CAN-контроллер, который правильно принял сообщение посылает бит подтверждения в сеть. Узел, который послал сообщение слушает этот бит, и в случае если подтверждение не пришло, повторяет передачу. В случае приема слота подтверждения передающий узел может быть уверен лишь в том, что хотя бы один из узлов в сети правильно принял его сообщение.