Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая CAN,CAL.doc
Скачиваний:
8
Добавлен:
23.08.2019
Размер:
444.42 Кб
Скачать

1.4 Контроль доступа к шине в can-протоколе (поразрядный арбитраж)

Данные, подлежащие обработке в реальном масштабе времени, должны передаваться быстро. Это требует не только высокой скорости передачи, но и быстрого предоставления шины, когда несколько устройств запрашивают ее для пересылки своих сообщений одновременно.

В системах реального времени срочность пересылаемых по сети сообщений бывает разной. Быстро меняющиеся величины должны передаваться более часто и, следовательно, с меньшей задержкой, чем относительно медленно меняющиеся параметры.

Передающий узел в CAN-протоколе слышат все другие узлы в сети и подтверждают это. Всякий раз, когда шина свободна от передачи, узел может начинать передавать. Если узел передает, эта передача должна быть завершена прежде, чем другой узел может пытаться передавать. Если два или больше узлов начинают передавать в одно и то же время, конфликт решается при помощи неразрушающего (недеструктивного – nondestructive) поразрядного алгоритма арбитража, использующего поле арбитража, в состав которого входит приоритет сообщения.

11(29)-битовое поле идентификатора передается от старшего к младшему значащему биту. Доминирующий уровень – логический 0. Одновременная передача бита с доминирующим уровнем (логический 0) и бита с рецессивным уровнем (логическая 1) дает в результате уровень логического 0.

В течение передачи поля арбитража каждый передатчик контролирует текущий уровень на шине и сравнивает его с битом, который он должен передавать. Если значения равны, узел способен затем продолжить передачу. Если бит с пассивным уровнем (логическая 1) был передан, а активный бит (логический 0) обнаружен на шине, то данный узел теряет право передачи и должен прекратить передачу последующих данных (рисунок 1.4). Узел, который потерял шину, может сделать попытку передачи снова, когда текущая передача завершена.

Рисунок 1.4 – Пример поразрядного арбитража

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

Эффективность сети CAN определяется тем, что шина используется только теми станциями, у которых есть отложенные («повисшие») запросы на передачу. Эти запросы обрабатываются в порядке степени важности сообщений для всей системы. Преимущества этого механизма особенно сказываются при сильной загрузке системы. Так как приоритеты доступа к шине базируются на сообщениях, можно гарантировать малое время задержки в системах реального времени.

1.5 Адресация в can-протоколе

CAN – это протокол, ориентированный на использование в условиях помех. Различные сообщения, передающиеся по сети, имеют идентификатор, и каждая станция решает, основываясь на этом идентификаторе, получать это сообщение или нет. Этот идентификатор определен в поле идентификатора CAN-фрейма.

При этом адрес приемника устанавливается в самом приемнике путем настройки входных фильтров соответствующих микросхем.

Входные фильтры представляют собой решета, или идентификационные экраны. Любое сообщение, которое проходит через входные фильтры, должно быть обработано процессором обслуживания CAN-контроллера. Чем большее количество единиц может быть отфильтровано, тем меньше нагрузка на процессор.

Микросхемы, поддерживающие CAN-протокол, могут иметь одиночный фильтр или многократные фильтры, в зависимости от конкретной реализации. Существуют следующие два типа входных фильтров:

  • фиксированные – фильтры, которые требуют, чтобы биты соответствовали точно один к одному (One-for-One);

  • Mask-and-Match (маскируемые) – фильтры, которые применяют маску к полю идентификатора, прежде чем он сравнивается с приемным регистром кода.

Например, на рисунке 1.5 регистр маски сконфигурирован так, что полученные биты 10-6 идентификатора должны соответствовать битам 10-6 в приемном регистре кода. В этом примере биты 10-6 идентификатора должны быть установлены в 11110, а остальные не имеют значения. Если биты 10-6 установлены в 11110, то эти сообщения принимаются независимо от значений битов 5-0.

Рисунок 1.5 – Пример поразрядного маскирования Mask-and-Match