1 (27-08-2023 15:00:54 отредактировано g.shorin)

Тема: Сдвиг байт данных на выходе CAN

Прошивка 2.22
У меня такая ситуация с несколькими устройствами :
есть диаграмма, принимающая сообщения CAN из одной шины CAN и отправляющая в другую шину CAN новые сообщения, данные в которых сформированы на основе принятых сообщений
входящая шина 500К, нагружена более чем наполовину полосы пропускания

диаграмма стоит на десятке устройств на одинаковой технике.

так вот на некоторых устройствах в исходящей шине происходит смещение байт данных (картинка приложена), будто применили операцию циклического сдвига
на картинке лог приема данных CAN другим устройством (трекер с CAN интерфейсом)

поверьте на слово, что диаграмма написана так, что не может быть подобного сдвига, теоретически может быть перемешивание данных с предыдущим сообщением или пропадание данных, но только не сдвиг
саму диаграмму к сожалению показать не могу по причине прав на данную разработку

что это может быть? может сталкивались с подобным поведением?

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

photo_5426849903763639685_x.jpg, 122.5 кб, 693 x 410
photo_5426849903763639685_x.jpg 122.5 кб, скачивался 56 раз, последний раз 2023-08-27 

2

Re: Сдвиг байт данных на выходе CAN

может сталкивались с подобным поведением?

Не сталкивались.

что это может быть?

Используется ли бесконтактный считыватель в каком либо из сегментов? Его исходящие данные сравнивались со входящими?

так вот на некоторых устройствах в исходящей шине происходит смещение

А входящая при этом контролируется?

3

Re: Сдвиг байт данных на выходе CAN

Константин, CANNY пишет:

может сталкивались с подобным поведением?

Не сталкивались.

что это может быть?

Используется ли бесконтактный считыватель в каком либо из сегментов? Его исходящие данные сравнивались со входящими?

так вот на некоторых устройствах в исходящей шине происходит смещение

А входящая при этом контролируется?

Да. Там стоит бесконтактник на входе и он может выдавать неверные данные, но! как я уже выяснил в дугой ветке - если сообщение CAN будет иметь неверную CRC - его данные не поступят в регистры контроллера
Даже если предположить что какое-то кривое сообщение таки прошло - как оно может так испортить данные в выходных регистрах другой шины CAN, чтобы они циклически сдвигались друг в друга?

Кроме того входящая шина фильтруется по ID

4

Re: Сдвиг байт данных на выходе CAN

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

5

Re: Сдвиг байт данных на выходе CAN

Да. Там стоит бесконтактник на входе и он может выдавать неверные данные, но! как я уже выяснил в дугой ветке - если сообщение CAN будет иметь неверную CRC - его данные не поступят в регистры контроллера

К сожалению, мне неизвестен принцип работы используемого вами бесконтактного считывателя и я вполне могу предположить, что получая на входе зашумленные  данные он вполне может формировать на выходе сообщения с повторно рассчитанным по ним CRC.

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

Но и этого может оказаться недостаточно, так как не имея диаграммы я не могу судить о том, что:

И никак позиция этих битов не может сдвинуться в другие регистры - там все передается однозначно-линейно


Можно предложить и другие методы диагностики, как например:

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

Прошивка 2.22
У меня такая ситуация с несколькими устройствами :

Проблема на одних и тех же объектах и замена устройств  (только контроллеров, бесконтактники не трогаем) не помогла?
При перестановке устройств (только контроллеров, бесконтактники не трогаем) с проблемного объекта на беспроблемный проблема с устройствомами исчезает?