Читайте также:
|
|
Арбитраж в CAN. Сеть CAN работает в режиме CSMA. Это означает, что когда имеются данные для передачи, узел CAN «слушает» шину (C S – контроль несущей) и если шина свободна, переходит к передаче сообщения. Множественный доступ (M A) заключается в том, что любой CAN-узел, определив, что шина свободна, может начать передачу своего сообщения. При этом два и более узла, определив, что шина свободна, могут начать передавать свои кадры. Это ведет к конфликтной ситуации на шине. В широко распространенной компьютерной локальной сети Ethernet при столкновении передающие узлы обнаруживают такую ситуацию и прекращают передачу, чтобы позже попытаться снова передать свои сообщения. Это ведет к потере времени и уменьшению пропускной способности сети. CAN такую ситуацию решает по-другому. Когда происходит конфликтная ситуация при обращении к шине, CAN определяет победителя на основе побитного арбитража содержимого поля, то есть идентификаторов. Побеждает узел с наивысшим приоритетом, то есть имеющий идентификатор с наименьшим числовым значением. Только победивший узел продолжает передачу данных, остальные попытаются передать свои сообщения позже. Такой метод определения победителя называется арбитраж столкновений. Данный метод арбитража обеспечивается тем, что все CAN-узлы подключены к шине по схеме «монтажное И», где узел, выставляющий на шину «0» - доминантный уровень, подавляет «1» - рецессивный уровень, выставленный другим узлом. Кроме того, в процессе арбитража при передаче идентификатора узел проверяет действительное состояние шины и сравнивает его с передаваемым значением.
Если при передаче логической 1 с шины принимается доминантный бит (логический 0), то считается, что другой узел передает сообщение с более высоким приоритетом и данный узел прекращает передачу.
Обнаружение и обработка ошибок. CAN протокол имеет мощные средства обнаружения ошибок. В CAN реализовано 5 механизмов проверки на наличие ошибок. Все они реализованы аппаратным способом.
Ошибка контрольной суммы (CRC Error). 15-разрядное значение кода CRC рассчитывается узлом передачи во время формирования сообщения. Все узлы сети принимают это сообщение, вычисляют CRC и сравнивают его с принятым значением. При несовпадении контрольных сумм сообщение считается ошибочным. Если хотя бы один узел не примет данные должным образом, будет сформировано сообщение об ошибке.
Ошибка подтверждения. В поле подтверждения ACK Field передающий узел проверяет наличие доминантного бита (логического 0). Если хотя бы один узел принял сообщение правильно, то доминантный бит будет сформирован в поле подтверждения. Если был получен рецессивный бит (логическая 1), значит ни одно устройство не приняло сообщение, и передающий узел регистрирует ошибку подтверждения.
Ошибка формата (Form Error). Все CAN узлы проверяют соответствие структуры принимаемого сообщения его фиксированному формату и его размеру. Если формат сообщения нарушен, то узлы генерируют ошибку формата.
Ошибка бита (Bit Error). Каждый узел во время передачи битов в сеть сравнивает значение передаваемого им бита со значением бита, которое появляется на шине. Если эти значения не совпадают, то узел генерирует ошибку бита. Естественно, что во время арбитража на шине этот механизм проверки ошибок отключается.
Ошибка битстаффинга. При передаче сообщения в CAN работает механизм битстаффинга – вставка дополнительного бита после пяти подряд идущих бит с одинаковым значением. Принимающий узел этот дополнительный бит удаляет. Если приемник обнаруживает на шине больше 5 последовательных бит с одинаковым значением, то он генерирует ошибку битстаффинга.
Каждый узел CAN имеет два счетчика ошибок:
1) счетчик ошибок при передаче (TEC);
2) счетчик ошибок при приеме (REC).
Каждый узел сети CAN может находиться в одном из трех состояний:
1) активной ошибки; (2) пассивной ошибки; (3) отключен от шины.
Состояние активной ошибки. Когда узел только начинает работу в сети CAN, он находится в состоянии активной ошибки. Узел может принимать активное участие в передаче данных. В случае обнаружения ошибки на шине он передает в сеть флаг. Этот флаг состоит из 6 последовательных доминантных бит, поэтому все узлы его регистрируют. Узел находится в состоянии активной ошибки, пока содержимое любого из счетчиков не превышает предела 127. Состояние активной ошибки – нормальный режим работы узла с возможностью принимать и передавать данные без ограничений.
Состояние пассивной ошибки. Узел приходит в это состояние, когда содержимое одного из счетчиков ошибок превышает значение 127. Узлу в этом состоянии запрещается передавать активное сообщение об ошибке, но вместо этого он передает в сеть флаг. Этот флаг состоит из 6-ти рецессивных битов, поэтому остальные узлы сети его не замечают, а он производит только увеличение счетчика ошибок данного узла.
Состояние – отключение от шины. Узел переходит в это состояние, когда содержимое хотя бы одного из двух счетчиков превышает предел 255. В этом состоянии узел не может передавать или принимать сообщения, выдавать подтверждение или формировать сообщение об ошибке.
Скорость передачи и длина сети. Спецификация CAN исходит из предположения, что все узлы принимают сигналы с шины одновременно, то есть в одно и то же время один и тот же бит принимается всеми узлами в сети. С одной стороны такое положение вещей делает возможным побитовый арбитраж, а с другой стороны ограничивает длину сети. Каждый узел, вовлеченный в арбитраж, должен быть способен осуществлять выборку каждого бита в пределах одного и того же интервала передачи бита. Обычно выборка производится примерно в середине интервала передачи бита. При передаче и приеме сигналов по шине неизбежно появляется задержка распространения tDEL, которая определяется как сумма времени прохождения сигнала по шине tBUS, выходной задержки передатчика tTRANSM и входной задержки приемника tRECEIVE.
Очевидно, что с увеличением скорости передачи интервал передачи бита сокращается, а это может привести к ошибочной выборке действительного значения бита из-за влияния задержки распространения.
Стандарт ISO 11898 определяет, что при максимальной скорости передачи 1 Мбит/с длина кабеля шины CAN не должна превышать 40 метров. При использовании гальванической развязки максимальная протяженность сети при скорости передачи 1 Мбит/с ограничена 9 метрами.
Дата добавления: 2015-12-07; просмотров: 216 | Нарушение авторских прав