Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Priis_lkc3a.doc
Скачиваний:
350
Добавлен:
20.04.2015
Размер:
631.81 Кб
Скачать

Однопроводной интерфейс can

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

Специфика автомобилестроения определила принятие основополагающих решений формирования стандарта. Необходимость минимизации кабельного хозяйства обусловила выбор последовательного метода передачи – автомобильный кабель должен быть стойким к истиранию, автомобильный разъем должен быть стойким к вибрации, прочным, недорогим и малогабаритным. Высокий уровень помех обусловил низкоомность линии обмена данными.

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

Другой уровень характеризуется низким напряжением, высоким током, низким сопротивлением выходного каскада. Он назван «dominant» (господствующий; главный, основной, доминирующий, превалирующий, преобладающий; наиболее влиятельный).

Будем считать recessive уровнем логической «1», a dominant – уровнем логического «0» (рис. 3.12).

Рис. 3.12. Реализация линии передачи данных в CAN

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

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

Упрощенная схема выходных каскадов двух узлов и линии обмена данными CAN представлена на рис. 3.13, где показаны эквивалентное сопротивление нагрузки линии и выходные каскады двух узлов, построенные по схеме с открытым коллектором. Нагрузкой являются согласующие сопротивления линии.

Рис. 3.13. Упрощенная модель работы линии обмена данными интерфейса CAN

Из таблицы истинности (рис. 3.13) видно, что уровень логической «1» формируется на линии (UBЫХ) только тогда, когда присутствуют уровни логической «1» на всех входах. Линия представляет собой логический элемент «монтажное И».

Таким образом, уровень логического «0» на любом входе имеет однозначный приоритет, формируется из уровня логического «0» на любом из входов (не зря он называется «dominant»).

В каждый момент времени любой узел может выставить на линии уровень логического «0», что не приводит к образованию опасных сквозных токов и других конфликтов линии.

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

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

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

Рис. 3.14. Арбитраж сообщений в интерфейсе CAN

Заняв таким образом линию, узел начинает передавать идентификатор со старшего бита. В нашем случае это делают одновременно 2 узла. Пока идентификаторы побитно совпадают, это остается незамеченным для обоих передающих и всех других узлов сети.

Наконец наступает момент, когда один из узлов передает уровень логической «1», другой – уровень логического «0». Как рассматривалось выше, на линии при этом формируется уровень логического «0».

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

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

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

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

За счет этого возрастает живучесть системы: будучи разрубленной на 2 части, она сохраняет жизнеспособность их обеих. Обе подсистемы смогут функционировать независимо. Другим следствием равноправности всех узлов является экономия времени на доставку сообщения до адресата за счет децентрализации.

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

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

Рис. 3.15. Широковещательная передача сообщений в CAN

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

В ответ узел-держатель данных передает соответствующее сообщение. Событие, вызвавшее необходимость в данных, инициирует их доставку.

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

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

Эти свойства интерфейса CAN особенно важны в приложениях промышленной автоматизации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]