Учебное пособие по интерфейсам систем промышленной автоматизации (1015600), страница 27
Текст из файла (страница 27)
Если же при передаче рецессивного бита шинанаходится в доминирующем состоянии, то передатчик должен прекратить передачу (табл. 4.15). Таким образом, право на передачу по шине получает тот узел, который передаёт сообщение с наивысшим приоритетом. Важно понимать, что приоритетным является не передающий или принимающий узел, а сообщение.15.Таблица 4.15.Пример поразрядного арбитражаИдентификаторпередаваемого сообщенияПередаваемыеузлом данныеУзел №1:101101101011011Узел №2:1010110011110101100111 …Узел №3:1010110100010101101Состояние шины10101100111 …136Примечаниеузел №1 проигрывает арбитражи прекращает передачу сообщенияузел №2 выигрывает арбитражи продолжает передачу сообщенияузел №3 проигрывает арбитражи прекращает передачу сообщенияТипы сообщений в CAN-протоколеВ настоящее время в CAN-протоколе используются два различных форматасообщений, которые отличаются длиной поля идентификатора [52, 53]. Сообщения с 11-тибитным полем идентификатора называются стандартными, сообщенияс 29-тибитным полем идентификатора называются расширенными.
Формат расширенных сообщений определён таким образом, чтобы стандартные сообщениявыигрывали арбитраж.Протокол определяет следующие типы сообщений или фреймов (от англ.frame – кадр):• фрейм данных (Data Frame), перемещает данные с передатчика на приёмники;• удалённый фрейм (Remote Frame) запрашивает передачу фрейма данных стаким же как у него идентификатором;• фрейм ошибки (Error Frame) передаётся любым узлом, при обнаруженииошибки CAN-сети;• фрейм перегрузки (Overload Frame) обеспечивает дополнительную задержку между предыдущим фреймом и следующим фреймом данных или удалённымфреймом.Фреймы данных и удалённые фреймы могут передаваться как в стандартном,так и в расширенном форматах.
Каждый фрейм отделяется от предыдущего с помощью межфреймового интервала.Фрейм данных состоит из семи битовых полей (рис. 4.19, табл. 4.0).19.Рис. 4.19. Структура фрейма данныхПоле «Начало фрейма» состоит из одного доминирующего бита. Станцияможет начать передачу, только если шина свободна (Bus Idle). В этом случае онанаходится в рецессивном состоянии, и передний фронт бита используется длясинхронизации приёмников.Поле арбитража и управляющее поле различаются для стандартных и расширенных сообщений (табл. 4.17).В стандартном формате поле арбитража содержит 11-тибитный идентификатор и RTR-бит (Remote Transmission Request, бит удалённого запроса). В расширенном формате поле арбитража содержит 29-ти битный идентификатор, разбитый на две части – 11 бит и 18 бит, базовый идентификатор и расширенный иден-137тификатор соответственно, SSR-бит (Substitute Remote Request, бит замещения),IDE-бит (Identifier Extension bit, бит-признак расширенного формата) и RTR-бит.16.Имя поляSF (Start of Frame)Старт-бит фреймаArbitration FieldПоле арбитражаControl FieldУправляющее полеData FieldПоле данныхCRC FieldКонтрольная суммаAck FieldПоле подтвержденияEF (End of Frame)Стоп-бит фреймаТаблица 4.0.Формат фрейма данныхДлина, битНазначение111+1 или 29+32+4от 0 до 64(кратно 8)15+12Синхронизация приёмника и передатчикаИдентификация сообщений; реализация механизмаарбитража.
Различается для стандартных и расширенных сообщенийСодержит длину поля данных в байтахСодержит передаваемые данныеОбеспечивает механизм контроля передаваемыхданных с помощью циклического избыточного кодаСлужит для подтверждения приёмником корректнойпередачи сообщения717.Таблица 4.17.Поле арбитража и управляющее поле фрейма данныхв стандартном и расширенном форматахУправляющееПоле арбитражаПоле данныхполеСтандартный идентификатор R I r0 DLCT DформатR EДлина, бит111 1 14ЗначениеD D DПоле арбитражабазовыйS Iрасширенныйидентификатор R DидентификаторR EДлина, бит111 118ЗначениеR RD – доминирующий бит, R – рецессивный бит.Расширенный формат138УправляющееполеR r1 r0 DLCTR1 1 14D D D4RTR-бит используется для того, чтобы различать фреймы данных и удалённые фреймы.
RTR-бит фрейма данных имеет доминирующее значение, в то времякак RTR-бит удалённого фрейма – рецессивное. Таким образом, при одновременной передаче фрейма данных и удалённого фрейма с одинаковыми идентификаторами, фрейм данных выиграет арбитраж.Замещающий бит расширенного формата, SSR-бит, имеет рецессивное значение и служит для той же цели: чтобы при одновременной передаче фреймовданных в стандартном и расширенном форматах с одинаковыми базовыми идентификаторами стандартный формат выигрывал бы арбитраж.IDE-бит имеет доминирующее значение для стандартного формата и рецессивное – для расширенного. Благодаря этому удалённые фреймы в стандартномформате будут выигрывать арбитраж у фреймов данных и удалённых фреймов врасширенном формате.
IDE-бит входит в состав управляющего поля фрейма данных стандартного формата и в поле арбитража фрейма данных расширенногоформата.Управляющее поле в обоих форматах имеют длину 6 битов. Бит r0 в стандартном формате и биты r1 и r0 в расширенном формате зарезервированы длядальнейшего использования и имеют доминирующее значение. Таким образом,первые два бита управляющего поля имеют доминирующие значения как в стандартном, так и в расширенном форматах.Оставшиеся четыре бита управляющего поля (DLC, Data Length Code – коддлины поля данных) определяют, сколько байтов будет передано в поле данных.При этом поле DLC может содержать значения в диапазоне от 00002 до 10002, чтосоответствует длине поля данных от нуля до восьми байтов.Поле контрольной суммы имеет длину 16 битов. Первые 15 битов содержатмладшие 15 битов CRC-кода, рассчитанного для последовательности битов первых четырёх полей фрейма: поля начала фрейма, поля арбитража, управляющегополя, поля данных.
Расчёт CRC-кода можно найти, например, в [52]. Последнийбит поля контрольной суммы называется бит-разделитель поля контрольной суммы (CRC Delimiter) и имеет рецессивное значение.Поле подтверждения имеет длину в два бита и состоит из области подтверждения (ACK Slot) и разделителя поля подтверждения (ACK Delimiter).
Передатчик передаёт в этом поле два рецессивных бита, а приёмник, который принял сообщение правильно, устанавливает на шине доминирующее значение во времяпередачи бита ACK Slot, чем подтверждает, что сообщение принято без ошибок.Поле конца фрейма содержит семь рецессивных битов.Удалённый фрейм используется для запроса фрейма данных с требуемымидентификатором. Фрейм может быть передан в стандартном или расширенном139форматах. Удалённый фрейм состоит из шести полей: поле начала фрейма, полеарбитража, управляющее поле, поле контрольной суммы, поле подтверждения,поле конца фрейма.
Фактически он формируется точно так же как и фрейм данных за исключением следующего:1) RTR-бит в поле арбитража принимает рецессивное значение, что являетсяпризнаком удалённого запроса;2) независимо от значения в поле DLC, поле данных отсутствует (имеет нулевую длину). DLC-поле может содержать любое значение из допустимого диапазона, равное длине поля данных соответствующего идентификатора.Каждый фрейм данных или удалённый фрейм отделяется от предыдущегофрейма с помощью специального межфреймового интервала (InterframeSpacing).
Межфреймовый интервал состоит из двух полей: поля паузы (Intermission) и поля «шина свободна» (Bus Idle). Поле паузы состоит из трёх рецессивныхбитов, за которыми следует поле «шина свободна» произвольной длины, котороетакже состоит из рецессивных битов.Межфреймовый интервал используется для того, чтобы обеспечить возможность передачи фрейма перегрузки, который, в случае необходимости, начинаетпередаваться во время передачи первого или второго бита межфреймового интервала.Фрейм ошибки состоит из двух полей: поля флагов ошибки (Error Flags), иполя-разделителя фрейма ошибки (Error Delimiter).Узел обнаруживший ошибку сразу же начинает передавать последовательность из шести доминирующих битов (флаг ошибки, Error Flag).
В итоге сигнал нашине нарушает правило добавочного бита, и все станции понимают, что передачафрейма данных или удалённого фрейма была прервана и также начинают передавать флаг ошибки. В результате поле флагов ошибки представляет собой последовательность из доминирующих битов длиной от шести до двенадцати бит.Каждый узел, передавший флаг ошибки, начинает передавать рецессивныебиты. После того, как шина перейдёт в рецессивное состояние (все узлы завершили передачу флага ошибки), каждый узел передаёт ещё семь рецессивных битов.Таким образом, поле-разделитель фрейма ошибки состоит из восьми рецессивныхбитов.Фрейм перегрузки состоит из двух полей: поля флага перегрузки (OverloadFlag) и поля-разделителя фрейма перегрузки (Overload Delimiter). Необходимостьпередать фрейм перегрузки может возникнуть в трёх случаях:1) по «личным» причинам узла-приёмника, которому требуется задержка перед передачей следующего фрейма данных или удалённого фрейма;1402) при появлении доминирующего значения в первом или втором бите поляпаузы межфреймового интервала (это означает, что другой узел начал передаватьфрейм перегрузки);3) при появлении доминирующего бита в последнем бите поля-разделителяфрейма ошибки или поля-разделителя фрейма перегрузки.Между любыми двумя фреймами данных и/или удалёнными фреймами может быть передано не более двух фреймов перегрузки.Поле флага перегрузки содержит шесть доминирующих битов, благодаря чему, поле паузы разрушается и остальные узлы определяют начало фрейма перегрузки и, в свою очередь, начинают передавать фрейм перегрузки.Поле-разделитель фрейма перегрузки состоит из восьми рецессивных битов.Механизм формирования поля-разделителя фрейма перегрузки полностью совпадает с механизмом формирования поля-разделителя фрейма ошибки.А вот как выглядят описанные четыре типа фреймов, по мнению компанииKVASER-AB.