Как правильно выявлять ошибки в шине CAN-Bus? - PullRequest
0 голосов
/ 13 февраля 2019

Я обмениваюсь информацией с аккумулятором, который отправляет данные по протоколу шины CAN (J1939).Я использую PIC 18F26K83.Моя цель - показать оставшееся состояние заряда на дисплее.Например, у меня есть значение% 99 в 60 массивах и% 1 в 40 из них, тогда я буду отображать% 99).Однако это не похоже на надежное решение, потому что я не знаю, сколько мусорных данных я получаю.Обратите внимание, что я не могу использовать некоторые алгоритмы обнаружения ошибок, такие как контрольная сумма, потому что у меня нет доступа к микроконтроллерам в тесте, я могу использовать только сторону приемника (дисплей).Изменить: я знаю о CRC в CAN Bus, но иногда кажется, что он не работает, так как иногда я получаю мусор.

1 Ответ

0 голосов
/ 13 февраля 2019

Да, вы можете использовать расчет CRC, потому что CRC рассчитывается также на стороне приемника контроллерами связи.Вот как, например, обнаруживается ошибка CRC.Для уточнения:

батарея отправляет полное сообщение;сообщение получает помехи на физическом уровне;получатель (ваш PIC) получает сообщение и рассчитывает CRC на нем; не соответствует с тегом CRC, включенным в сообщение;PIC CC будет иметь ошибку записи +1 и не будет получать сообщение от батареи.

Вы обнаружите каждый тип ошибки сообщения CAN на стороне получателя , за исключением бита Error, который также не имеет значения, поскольку приведет к неполному сообщению.

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

...