Перейти к содержанию
    

Абсолютно одинаковое CAN сообщение

Вопрос заключается в следующем: будут ли ошибки, если на шину будет передаваться одинаковое сообщение с разных узлов одновременно? То есть если с N устройств передается одинаковое сообщение, то оно пройдет как одно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если точно одновременно, то, конечно, никаких ошибок не будет. Но если будут передавать все, то ACK никто не пошлёт.

 

А от чего у вас такие странные вопросы возникают?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как раз все наоборот.

Под "одинаковым" понимается одинаковый ID и, возможно, разные данные?

 

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

 

А вот если верхним протоколом выдача телеграмм с одинаковым ID но с разных узлов четко разнесена по времени - проблем никаких.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одинаковый ID и данные. Спасибо. Скоро проверю в железе, просто интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

даже если и одинаковые, биты могут "разъехаться" по времени к концу телеграммы

Если кварцы одинаковые, то не разъёдутся - всего около 100 бит то, всё сообщение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос заключается в следующем: будут ли ошибки, если на шину будет передаваться одинаковое сообщение с разных узлов одновременно? То есть если с N устройств передается одинаковое сообщение, то оно пройдет как одно?

 

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

Данная ситуация (много слейвов одновременно одинаковое передают) заложена например в CANopen LSS протокол- там такие одинаковые ответы обязательно будут. И ничего, работает :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так ведь неразрушающий арбитраж не распространяется на поле данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так ведь неразрушающий арбитраж не распространяется на поле данных.

 

Ух ты, а я действительно не заметил. Надо будет еще раз более вдумчиво спецификацию почитать, я пробежав по диагонали понял что этот арбитраж работает в течении передачи всего CAN пакета :(

Ну тогда конечно могут коллизии быть, если это действительно так. Я только один проект с кэном делал. в сети было 10 устройств плюс LSS мастерб пользовал LSS fastscan (тож самописный). могу сказать что пакеты принимались четко. битых пакетов в линии не видел (я мониторил CAN шину третьим устройством и скидывал данные в лог). Но тут коллизия факт совпадения факторов, я мог прросто ее не дождаться или не заметить.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот как это сформулировано в спецификациях Боша и CiA : "The ARBITRATION FIELD consists of the IDENTIFIER and the RTR-BIT"

"the bus access conflict is resolved by bitwise arbitration using the IDENTIFIER. ... If a DATA FRAME and a REMOTE FRAME with the same IDENTIFIER are initiated at the same time, the DATA FRAME prevails over the REMOTE FRAME. "

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

If a DATA FRAME and a REMOTE FRAME with the same IDENTIFIER are initiated at the same time, the DATA FRAME prevails over the REMOTE FRAME. "

Так оно и понятно, чего данные просить если они вот уже полезли...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На неделе буду проводить эксперимент, выводить сообщения на дисплей Opel Astra теми же ID что и штатная магнитола, только чаще, заодно и проверим, будут ли коллизии с магнитолой. Только в моем случае поля данных будут отличными от даннх магнитолы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На неделе буду проводить эксперимент, выводить сообщения на дисплей Opel Astra теми же ID что и штатная магнитола, только чаще, заодно и проверим, будут ли коллизии с магнитолой.

А как узнаете что коллизия произошла? я так понимаю некорректное сообщение (плохая CRC) будет похоронено аппаратным кэн-контроллером без участия программиста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как узнаете что коллизия произошла? я так понимаю некорректное сообщение (плохая CRC) будет похоронено аппаратным кэн-контроллером без участия программиста.

Подключаюсь фирменным адаптером от IXXAT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос заключается в следующем: будут ли ошибки, если на шину будет передаваться одинаковое сообщение с разных узлов одновременно? То есть если с N устройств передается одинаковое сообщение, то оно пройдет как одно?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... в фазе арбитража (биты идентификатора+RTR) никто не выиграет арбитраж, передача пакета прекратится всеми узлами и они отпустят шину ...

Это на каком основании?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...