1

Тема: Переполнение буфера CAN

Добрый день.
Прикрепил диаграмму. Сама по себе она работает как надо, кроме одного НО. Периодически происходит переполнение буфера, в диаграмме индикатор прикрутил. И в это же время в автомобиле вываливается ошибка по кан шине. причём визуально всё работает,но ошибка вываливается, ну и герлянда на приборке. Возможно что то не так сделано в диаграмме?

Подобная ситуация была на другой машине, но там наполнение диаграммы было другое, но симптомы такие же.

Вложений в сообщении

Иконка вложения Canny 7.2.cfd 3.36 кб, скачивался 129 раз, последний раз 2022-01-30 

2

Re: Переполнение буфера CAN

Удержание значения "1" в регистрах обновления конфигурации драйверов - крайне порочная практика. Данные регистры присутствуют в драйвере именно для того, чтобы иметь возможность обновлять конфигурацию драйвера только в те моменты времени, когда ее действительно необходимо изменить, когда изменились входные данные, условия, а не на каждом проходе диаграммы, что существенно сказывается на производительности контроллера.

Кроме того не вполне понятно как вы используете здесь ДАП CAN1. Использование драйвера ДАП CAN1 совместно с драйвером шлюза CAN при высокой нагрузке на какой либо из них, может так же вызывать переполнение.

Вложений в сообщении

1.png, 6.18 кб, 362 x 152
1.png 6.18 кб, скачивался 120 раз, последний раз 2022-01-30 

3 (30-01-2022 18:52:07 отредактировано wertyh2003)

Re: Переполнение буфера CAN

ДАЦ используется для передачи пакета в шину. просто в прикреплённой диаграмме это уже в процессе экспериментов было практически полностью уменьшен функционал.
Попробую поиграться с регистром обновления. Без него совсем пробовал, что там тоже не так работало если память не изменяет мне.
В другой диаграмме где ДАЦ нет, то же такие же подвисания шины были.

4

Re: Переполнение буфера CAN

При поиске причин неисправности CAN основными инструментами являются осциллограф и инструменты мониторинга CAN на ПК, такие как CANNY CAN/LIN Monitor либо сторонних производителей.

Типовыми проблемами при работе работе шлюза являются:
- отсутствие терминирующих сопротивлений при работе с высокоскоростной CAN в одном из сегментов сети. Решается установкой терминирующих сопротивлений.
- отсутствие приемника / наличие фильтра сообщений с определенным ID ретранслируемым из одного сегмента CAN в другом сегменте CAN. В этом случае, согласно стандарту, происходит автоматическая многократная повторная передача сообщения. Решается использованием "Регистра запрета автоматической повторной отправки сообщения CAN" соответствующего интерфейса.

5 (31-01-2022 16:07:52 отредактировано wertyh2003)

Re: Переполнение буфера CAN

Увы так ничего и не вышло. "Регистр запрета автоматической повторной отправки сообщения CAN" результата не дал. Резисторы все подпаяны на контроллере. Всё так же появляется перегрузка. С одним тем же отбором что и впервой диаграмме. Так же удалил ДАП полностью под корень.
Может ли питание от ЮСБ влиять на это?

6

Re: Переполнение буфера CAN

Попробую поиграться с регистром обновления.

Что в итоге получилось? Приложите пожалуйста диаграмму.

Шлюз CANNY 7.2 при правильном использовании способен выдерживать значительные нагрузки без какого-либо переполнения.


Может ли питание от ЮСБ влиять на это?

При штатной эксплуатации, основное питание контроллера должно быть подключено.

7 (31-01-2022 16:28:36 отредактировано wertyh2003)

Re: Переполнение буфера CAN

Вот такая, это прям самый минимум, без дополнительно нагрузки

Вложений в сообщении

Иконка вложения Canny 7.2.cfd 3.33 кб, скачивался 115 раз, последний раз 2022-01-31 

8

Re: Переполнение буфера CAN

Попробуйте диаграмму из вложения.

У вас есть второй любой контроллер CANNY поддерживающий работу в режиме CANNY CAN/LIN Monitor либо какие-либо инструменты мониторинга CAN сторонних производителей?

Вложений в сообщении

Иконка вложения 1.cfd 963 б, скачивался 119 раз, последний раз 2022-01-31 

9 (31-01-2022 17:20:51 отредактировано wertyh2003)

Re: Переполнение буфера CAN

кан хаккер. Но в нём вроде отображаются все пакеты визуально.
Диаграмму по пробую.

10 (01-02-2022 11:09:39 отредактировано wertyh2003)

Re: Переполнение буфера CAN

С такой диаграмкмкой тоже вываливается в ошибку, ну и индикатор перегруза так же проскакивает. Пакеты в шине вижу стабильно от всех 3 блоков
Ещё момент один обнаружил. Если прозванивать каналы КАН0 по сопротивлению с землёй, то показывает около 6,3 МОм, при прозвонке канала КАН1, не звонится никак. При размыкании терминирующего резистора около 4 МОм звонится КАН0 и Земля

11

Re: Переполнение буфера CAN

wertyh2003 пишет:

Пакеты в шине вижу стабильно от всех 3 блоков

Что из себя представляет ваша сеть CAN? Это штатная сеть автомобиля или набор блоков подключенных друг к другу вне автомобиля?

Есть ли возможность нарисовать топологию (схему шины и подключения к ней устройств) вашей сети CAN с указанием расположения на ней подключенных узлов, включая CANNY 7.2 Duo. Будет достаточно фотографии выполненного от руки эскиза. Кроме того, есть ли возможность приложить log-файлы сообщений записанные при подключении к интерфейсам CAN0 и CAN1 CANNY 7.2 Duo?

wertyh2003 пишет:

Если прозванивать каналы КАН0...

Не вполне понятно, с какой именно целью это стоило бы делать в данном случае.

12 (02-02-2022 10:00:24 отредактировано wertyh2003)

Re: Переполнение буфера CAN

Сеть да ,полностью штатная. Причём аналогичная на двух автомобилях с одинаковыми блоками. На рисунке указал место врезки фильтра.

Замер сопротивления это уж просто попутно, решил перепроверить, качество пайки перемычки терминирующего резистора. Ну и заодно на землю, т.к. показалось расплывшейся в стороны чутка. Но тут оказалось всё нормально. Попробовал даже убрать перемычки и в таком режиме подключить. Всё полностью повторяется, только показалось что даже быстрее вываливается в ошибку.

Логи сделаю в ближайший день

Вложений в сообщении

Иконка вложения Система КАН+.jpg 159.53 кб, скачивался 52 раз, последний раз 2022-02-02 

13

Re: Переполнение буфера CAN

Спасибо за рисунок. Несколько комментариев:
- на рисунке лучше пользоваться реальными цветами проводов или не пользоваться цветами вообще.
- обозначение контактов и разъемов на CANNY не менее важно чем на остальных блоках. Ну или хотя бы номера интерфейсов CAN - какой из них к какому сегменту сети подключен.
- вставать в разрыв сегмента CAN соединяющего блок управления двигателя и весь остальной автомобиль - не самая хорошая идея с технической точки зрения. Не говоря о том, что это просто опасно для вас и окружающих. Как правило, через один или несколько шлюзов подключают не весь блок управления двигателем, а отдельные периферийные узлы сети, не имеющие критического влияния на безопасность.
- ошибки в данном случае скорее всего связаны с некоторыми неизбежно возможными задержками в ретрансляции сообщений шлюзом, которые возможно превышают допустимый для ECM порог.
- при данной топологии запрет повторной передачи CAN включать скорее всего не следует.
- не уверен, что log в этой ситуации чем-либо поможет.


Ну и заодно на землю,

В этом случае связи бы не было вообще.

14

Re: Переполнение буфера CAN

Спасибо за развёрнутый ответ.
Рисунок по сути это я из мануала прям выдернул и добавил канни. Со стороны мозга КАН0, со стороны остальных блоков КАН1. Что парадоксально ,но в данном случае наоборот стараюсь повысить безопасность smile Блок абс не видит педаль сцепления, т.к. мозг движка не кидает в шину (прошивка от другого мотора). Там в каких то пакетах действительно есть счётчики, возможно по ним и происходит некая синхронизация. Попробую тогда чуть по другому пути пойти.

15

Re: Переполнение буфера CAN

Снова немного подниму тему переполнения. Опять столкнулся с тем что при большом количестве пакетом, диаграмма замедляется. Пробовал и шлюзом и просто принимать пакеты одним каналом, отправлять в другой. Единственный шустрый вариант оказался с регистрами установки фильтра приёма, всё летает, но отобрать допускается только 16 пакетов (т.к. 16 регистров). Можно ли добавить в 7.2 дополнительно штук 5 (лучше 10) "Регистр установки фильтра приема"?

16

Re: Переполнение буфера CAN

Увы, у всего есть предел.
Могу лишь рекомендовать подключиться одновременно двумя интерфейсами CAN к одной шине, либо увеличивать число контроллеров, подключая их параллельно к одной шине, либо ждать выхода новой модели контроллера.