УДК 621.396.6.О19.3
АНАЛИЗ ИНТЕРФЕЙСА ШИНЫ CAN ДЛЯ ПЕРЕДАЧИ СИГНАЛОВ В СУПЕРКОНДЕНСАТОРНЫХ НАКОПИТЕЛЯХ
М.Ю. Чайка, В.С. Горшков, Д.Е. Силютин, В.А. Небольсин
Выполнен анализ работы шины CAN, который позволяет получить представление о взаимодействии устройств с интерфейсом CAN. Показана реализация связи на физическом уровне (уровне электрических соединений), настройка механизма синхронизации приёмопередатчиков, механизм арбитража и структура сообщений
Ключевые слова: суперконденсатор, ионистор, интерфейс, шина CAN
Введение
Суперконденсаторные накопители, применяемые в гибридном транспорте, имеют цифровой интерфейс CAN. Данный интерфейс обеспечивает передачу данных о текущем состоянии суперконден-саторного накопителя: рабочее напряжение накопителя, рабочее напряжение суперконденсаторных элементов, температура накопителя и др. Цифровой интерфейс CAN представляет собой локальную сеть контроллеров (Controller Area Network), разработанный компанией BOSCH и обеспечивающий скорость передачи данных до 1 Мбит/c. В работе изучены основные вопросы организации сети на физическом и логическом уровнях, способы передачи сигналов и структура сообщений.
Представление бит на физическом уровне
В CAN сигналы передаются по дифференциальной линии CANL и CANH, причём одна и та же линия работает на передачу и приём, как изображено на рис. 1. Линия должна быть с обоих концов нагружена на сопротивление 120 Ом и иметь такое же волновое сопротивление. Каждое устройство, подключаемое к шине, должно иметь схему приёмопередатчика CAN-Transceiver, которая формирует и считывает напряжения шины, а также обычно имеет защиту от перенапряжений, и CAN-контроллер, который формирует и фильтрует сообщения с заданными идентификаторами.
В пассивном состоянии шины напряжения сигналов CANL и CANH равны обычно половине напряжения питания 2.5 В. Логические «0» и «1» определяются дифференциальным напряжением, т.е. разностью напряжений VCANH - VCANL, как показано на рис. 2. Логическая «1» соответствует малой разности напряжений VCANH - VCANL ~ 0 и является рецессивной, в то время как логический «0» опреде-
Чайка Михаил Юрьевич - ОАО ВСКБ «Рикон», канд. хим. наук, начальник НИЛ, тел. (473) 246-35-60, e-mail: [email protected]
Горшков Владислав Сергеевич - ВГУ, аспирант, тел. (473) 246-35-60, e-mail: vgorsh88@gmail .com Силютин Дмитрий Евгеньевич - ОАО ВСКБ «Рикон», инженер-конструктор НИЛ, тел. (473) 246-35-60, e-mail: dsilvutin@vandex. ru
Небольсин Валерий Александрович - ВГТУ, д-р техн. наук, профессор, тел. (473) 235-61-01, e-mail:
ляется положительной разностью Усакн - Усам. > 0 и является доминантным. Когда к линии подключено несколько передатчиков, они могут одновременно пытаться выставить значение бита на шине, но рецессивная единица уступает доминантному нолю и если один передатчик пытается установить «1», а другой «0», то на шине устанавливается «0».
Рис. 1. Подключение устройств к шине CAN
Рис. 2. Представление бит в виде электрических сигналов CAN
Введение рецессивных и доминантных бит позволило организовать на физическом уровне арбитраж сигналов, т.е. приоритетность передачи, которая контролируется не центральным процессором, а самими приёмопередатчиками, подключёнными к шине. Каждый передатчик одновременно с передачей данных осуществляет и чтение данных, реально передаваемых в шине. Если значение считанного бита не совпадает с переданным, это может означать, что шина занята более приоритетным передатчиком, и передатчики, обнаружившие несоответствие бит прекращают передачу до тех пор, пока шина не освободится.
Каждое сообщение в шине CAN начинается со стартового доминантного бита («0»), за которым следует идентификатор сообщения. Идентификатор сообщения является своего рода адресом отправителя. Точнее, один и тот же передатчик может отправлять сообщения с различными идентификаторами, и
в
правильнее считать, что идентификатор обозначает скорее не адрес, а тип сообщения. Это может быть сообщение о состоянии модуля: напряжении и температуры, а может быть сообщение о перегрузке какого-то конкретного модуля или любого модуля, неважно какого, тогда идентификатор будет относиться не к конкретному модулю, а к сообщению, относящемуся к определённому событию. Идентификатор представляет собой некоторый номер, набор бит. Биты передаются от старшего к младшему. Поскольку «0» является доминантным, более высокий приоритет будут иметь те сообщения, идентификатор которых имеет меньшее значение. Например, два передатчика начинают одновременную передачу сообщений: у первого передатчика идентификатор сообщения равен 10 (001010 в двоичном коде), а у другого 23 (010111 в двоичном коде). Первый старший бит у обоих идентификаторов одинаковы и они беспрепятственно передадутся по шине, но второй старший бит первого идентификатора является доминантным, поэтому передачу сообщения продолжит первый передатчик, а второй будет ожидать завершения этой передачи, чтобы попытаться отправить своё сообщение снова, как показано на рис. 3.
Структура сообщений CAN
В настоящее время используются две версии интерфейса CAN: CAN 2.0a и CAN 2.0b. Основное отличие версий - количество бит идентификатора. В версии 2.0a идентификаторы 11-разрядные, а в версии 2.0б идентификаторы 29-разрядные. Для обмена данными используется два основных типа сообщений: сообщение данных и сообщение запроса данных. Все узлы сети считывают все сообщения в шине, но реагируют только на сообщения с определёнными идентификаторами. На запрос данных модуль (если он «знает», что ответить должен он), посылает данные с тем же идентификатором, что имело сообщение запроса данных.
Рис. 3. Принцип механизма реализации приоритетности сообщений
Например, возможна такая ситуация: в сети работает датчик движения конвейера, он периодически посылает сообщения о том, в штатном режиме работает конвейер или нет. В сети также имеются датчики, контролирующие прохождение деталей через различные участки конвейера, но они работа-
ют в пассивном режиме, чтобы не перегружать сеть лишними сообщениями. Если основной датчик обнаруживает, что конвейер застопорило, он посылает запрос данных по своему же идентификатору, который приписан сообщению о состоянии конвейера. Остальные датчики, получив запрос, передают по шине свои показания.
Структура сообщения по стандарту CAN 2.0a изображена на рис. 4. Структура имеет следующие битовые поля:
1. SOF (Start Of Frame) - один доминантный бит «0», служащий для синхронизации тактовых генераторов передатчика и приёмников.
2. 11-bit Identifier - 11-разрядный идентификатор сообщения.
3. RTR (Remote Transfer Request) - доминантный бит «0», если сообщение является сообщением запроса данных, или «1», если это сообщение данных.
4. IDE (IDentifier Extension) - доминантный бит «0», означающий, что идентификатор не имеет расширения до 29 бит (обеспечивает совместимость со стандартом CAN 2.0b).
5. r0 - доминантный бит «0», зарезервированный для последующих версий стандарта.
6. DLC (Data Length Code) - 4-х разрядное поле, содержащее число байт данных в сообщении: от 0 до 8 байт.
7. Bytes Data - поле данных 0..8 байт. Отсутствует в сообщениях запроса данных.
8. CRC (Cyclical Redundancy Check) - 16битное поле контроля правильности передачи данных с помощью циклического избыточного кода (15 бит - контрольная сумма и один дополнительный рецессивный бит «1» в конце последовательности)
9. ACK (ACKnowledgement) - рецессивный бит «1», плюс дополнительный рецессивный бит -разделитель (всего 2 бита в поле). Каждый приёмник, считывая сообщения и убеждаясь в правильности их передачи перезаписывает этот бит в исходном сообщении (вклинивается в передачу) доминантным битом «0». Передатчик должен проконтролировать, перезаписался ли этот бит в передаваемом сообщении и в противном случае повторить передачу сообщения.
10. EOF (End Of Frame) - 7-битное поле, состоящее из один только рецессивных бит «1» и означающее окончание сообщения. Наличие доминантного бита «0» в этом поле означает, что сообщение содержит ошибку и должно быть отправлено заново (проверяется передатчиком как и для бита ACK).
IFS (InterFrame Space) - 7 рецессивных бит «1», отделяющих одно сообщение от другого.
S 11-bit R I E 1
и F Identifier 1 R D E rl> DLC 0...8 Bytes Data CRC ACK О F t S
Рис. 4. Структура сообщения CAN2.0a
Ко всем битам сообщения кроме поля EOF применяется операция под названием Bit-Stuffing, сущность которой состоит в следующем: если 5 по-
следовательно идущих бит имеют одинаковое логическое состояние, то к последовательности добавляется (вставляется) дополнительный бит, имеющий противоположное логическое значение. Так, например, последовательность «11111 11111 100000 0000» преобразуется в последовательность
«11111011111010000010000». Поле EOF содержит 7 «1» и вызывает ошибку Bit-Stuffing.
Структура сообщения стандарта CAN2.0b представлена на рис. 5 и отличается от сообщений стандарта CAN2.0a следующими полями:
• SRR (Substitute Remote Request) - дублирует бит RTR.
• IDE (IDentifier Extension) - рецессивный бит «1», означающий, что идентификатор имеет расширение до 29 бит.
• r1 и r2 - доминантные биты «00», зарезервированные для последующих версий стандарта.
S 11-bit S I 18-bit R E 1
о Identifier r 1 HI DLC 0 ...8 Bytes Data CRC ACK К
F К Е Identifier R Iі s
Рис. 5. Структура сообщения CAN2.0b
CAN позволяет предавать данные со скоростью от 1 кбит/с и менее до 1 Мбит/c. Подключаемые к шине устройства имеют генераторы тактовых импульсов, частоты которых имеют некоторый разброс и нестабильность. Для компенсации фазовых сдвигов CAN предусматривает механизм синхронизации.
Время, соответствующее передаче одного бита, делится на 4 сегмента, как показано на рис. 6: сегмент синхронизации Sync_Seg, сегмент распространения Prop_Seg и два сегмента фазовых сегмента Phase_Seg1 и Phase_Seg2. Каждый сегмент состоит из заданного, программируемого количества квантов времени Time Quantum (tq). Обычно квант времени равен периоду или двум периодам тактового сигнала приёмопередатчика.
--------------------Nominal CAN Bit Time----------------------►
................
Sync Prop Seg Phase Seg I Phase Seg 2
Seg
V 1 Time Quantum <v L Sample Point
Рис. 6. Временные сегменты синхронизации
Сегмент синхронизации определяет интервал времени, на который приходится фронт сигнала в шине CAN. Если фронт не попадает в сегмент синхронизации, то временной интервал между началом фронта и верхней границей сегмента синхронизации называется фазовой ошибкой. Сегмент распространения вводится для компенсации физических задержек сигналов при распространении по протяжённым линиям связи. Между первым и вторым фазовыми сегментами осуществляется защёлкива-
ние состояния сигнала (Sampling Point). Величина синхронизирующего сдвига (SJW - Synchronization Jump Width) определяет, насколько Sampling Point при синхронизации может сдвинуться в границах фазовых сегментов, чтобы скомпенсировать фазовую ошибку. Диапазоны задания временных параметров приведены в таблице.
Диапазоны задания длительности временных _________________интервалов__________________
Параметр Диапазон, tq Примечание
Sync_Seg 1 Фиксированное время синхронизации тактового генератора с фронтом сигнала шины CAN
Prop_Seg 1..8 Компенсация задержки распространения в линии
Phase_Seg1 1..8 Сегмент может быть временно удлинён при синхронизации на величину SJW
Phase_Seg2 1..8 Сегмент может быть временно укорочен при синхронизации на величину SJW
SJW 1..4 Не может превышать длину фазовых сегментов
Приведённые в таблице параметры задаются при настройке контроллеров CAN (рис. 1). Принцип синхронизации иллюстрирует рис. 7.
Е53 Sync_Seg I I Prop_Seg К\l Phase_Seg1 Y/\ Phase_Seg2
n\\" '//№ 1 l;n
t
□elay A_to_B Delay B_to_A^
& 1 \->ш 1 V//M
Рис. 7. Принцип синхронизации
В примере рис. 7 узлы A и B начинают передавать данные по шине CAN. Узел A отправил стартовый бит несколько раньше узла B, поэтому узел B синхронизируется по принятому импульсу и его временные сегменты оказываются сдвинуты относительно сегментов узла А на величину задержки Delay_A_to_B. Узел B посылает идентификатор с более высоким приоритетом, чем у сообщения узла А и бит доходит до узла А с задержкой De-lay_B_to_A. Импульс должен придти до начала фазового сегмента узла A, в крайнем случае, за некоторое время до его окончания, иначе узел A может считать предыдущее состояние шины и это приведёт к ошибке. Поэтому сегмент распространения Prop_Seg должен быть достаточно большим. Фазовые сегменты при синхронизации могут быть удлинены или укорочены на величину SJW для того, чтобы момент защёлкивания состояния шины Sam-
pling Point следовал за фронтом примерно через одинаковое время.
Работа выполнена в рамках государственного контракта №16.552.11.7О48.
Литература
1. CAN Specification 2.0. // Robert BOSCH GmbH, 1991. URL: http://www.semiconductors.bosch.de/media/pdf/
canliteratur/can2spec.pdf (дата обращения 30.09.2011)
2. Corrigan S. Introduction to the Controller Area Network (CAN) Industrial Interface / Corrigan S. // Texas Instruments. Application Report SLOA101A - August 2002-Revised July 2008. URL: http://www.ti.com/lit/an/sloa101a/sloa101a. pdf (дата обращения 30.09.2011)
3. Hartwich F. The configuration of the CAN Bit Timing / Hartwich F., Bassmir A. // Robert BOSCH GmbH. URL: www.can.bosch.com (дата обращения 30.09.2011).
Воронежский государственный технический университет
Воронежский государственный университет
ОАО Воронежское специальное конструкторское бюро «Рикон»
ANALYSIS OF CAN BUS INTERFACE FOR SIGNAL TRANSFER IN SUPERCAPACITOR
STORAGE DEVICES
M.Yu. Chayka, V.S. Gorshkov, D.E. Silyutin, V.A. Nebolsin
It is analyzed the operation of CAN bus which allows to receive idea of interac-tion of devices with the CAN interface. Communication realization at physical level (level of electric connections), setup of the mechanism of synchronization of trans-ceivers, the mechanism of arbitration and structure of messages is shown
Key words: supercapacitor, ionistor, interface, CAN bus