1

Тема: Шлюз LIN перевирает данные

Сделал я LIN шлюз между блоком управления и блоком подрулевых переключателей. И он отлично работает. При нажатии доп. кнопки добавляет нужный бит в поток.

Также у меня написан код для CAN шлюза. И он тоже отлично работает. Но когда я объединил обе программы в одну, то LIN шлюз начал глючить. А именно время от времени (интервал 10 сек, 20, может через минуту) шлюз отправляет главному блоку неверные данные, хотя получает от подрулевого блока верные.

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

Иконка вложения полный.cfd 20.25 кб, скачивался 64 раз, последний раз 2024-02-14 

2

Re: Шлюз LIN перевирает данные

А вот так он перевирает данные.

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

lin скан.jpg, 185.39 кб, 454 x 743
lin скан.jpg 185.39 кб, скачивался 53 раз, последний раз 2024-02-14 

3

Re: Шлюз LIN перевирает данные

То есть от блока подрулевых переключателей счетчик идет ровно и в остальных байтах ноли. А на выходе с контроллера счетчик 2 раза подряд показывает 1 и рисует 2 в первом байте. Если запускать только программу LIN шлюза, то проблем нет. В чем может быть дело?

4 (14-02-2024 15:34:37 отредактировано Байкалец)

Re: Шлюз LIN перевирает данные

Добавил в диаграмму еще один блок (красный) для проверки входных данных по LIN. Оказывается контроллер считывает пакеты уже с ошибкой (при сбоях моргает диод). Но по канхакеру видно, что они выходят с блока подрулевых выключателей правильные.

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

Иконка вложения полный.cfd 20.87 кб, скачивался 64 раз, последний раз 2024-02-14 

5

Re: Шлюз LIN перевирает данные

Упростил в диаграмме блок LIN шлюза. Функционал не изменился, но и ошибка не пропала.

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

Иконка вложения полный.cfd 19.47 кб, скачивался 70 раз, последний раз 2024-02-14 

6

Re: Шлюз LIN перевирает данные

Байкалец пишет:

Добавил в диаграмму еще один блок (красный) для проверки входных данных по LIN. Оказывается контроллер считывает пакеты уже с ошибкой (при сбоях моргает диод). Но по канхакеру видно, что они выходят с блока подрулевых выключателей правильные.

Данные в регистрах актуальны только в момент прихода сообщения. В любой другой момент времени в регистрах приема может быть всё что угодно. Таким образом, для контроля ошибки следует, как минимум, сделать так (см.изображение)

Упростил в диаграмме блок LIN шлюза. Функционал не изменился, но и ошибка не пропала.

Здесь всё еще хуже. Принцип организации шлюза LIN отличается от принципа организации шлюза CAN. Интерфейсы в LIN шлюзе не следует синхронизировать по времени. Мы с вами всё это уже обсуждали. Почему вы не взяли за основу диаграмму из этого сообщения с независимыми счетчиком и генератором?: https://forum.canny.ru/viewtopic.php?pid=11282#p11282

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

chk.png, 35.05 кб, 708 x 481
chk.png 35.05 кб, скачивался 53 раз, последний раз 2024-02-14 

7

Re: Шлюз LIN перевирает данные

Спасибо за ответ. Вернул предыдущий блок LIN шлюза в диаграмму и заменил блок проверки входных данных на ваш вариант. Диод мигает в момент появления "неправильных" данных.

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

Почему вы не взяли за основу диаграмму из этого сообщения с независимыми счетчиком и генератором?: https://forum.canny.ru/viewtopic.php?pid=11282#p11282

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

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

Иконка вложения полный.cfd 21.21 кб, скачивался 54 раз, последний раз 2024-02-15 

8

Re: Шлюз LIN перевирает данные

Решил проблему! Сместил отправку в LIN2 относительно LIN1 на 1 программный цикл и сбои пропали.

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

Иконка вложения полный.cfd 20.11 кб, скачивался 69 раз, последний раз 2024-02-15