1 (28-04-2017 10:50:16 отредактировано EVK)

Тема: Подскажите где ошибка (прием и передача пакетов в Кан-шину)

Доброго дня!

Задача: Транслировать для магнитолы данные от руля. Более подробно: читаем шину на предмет наличия пакетов с идентификатором IDL=0001 и определенными D1:D0. Встречая пакеты с указанным IDL и D1:D0 формируем пакет с другим IDL (2222) и D1:D0 и отправляем его в шину. Сделал соответственно диаграмму, все работает.

Но иногда по неясной причине магнитола начинает прибавлять громкость (vol +/-) или переключать радиостанцию (up/down), несмотря на то, что кнопки руля не нажимаются. Т.е. в шине по какой-то причине формируются пакеты с IDL = 2222 и соответствующими D1:D0. Как это может быть? В чем моя ошибка?

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

Иконка вложения 123.png 156.24 кб, скачивался 166 раз, последний раз 2017-04-28 

2 (28-04-2017 10:38:18 отредактировано EVK)

Re: Подскажите где ошибка (прием и передача пакетов в Кан-шину)

Добавил диаграмму

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

Иконка вложения 123.cfd 4.4 кб, скачивался 325 раз, последний раз 2017-04-28 

3

Re: Подскажите где ошибка (прием и передача пакетов в Кан-шину)

ID=0х2222 - идентификатор из расширенного диапазона (более 11 бит). Стандартный диапазон: 0х0000...0х07FF.
Если требуется отправлять сообщение с ID из расширенного диапазона, то необходимо правильно указывать значение регистра ERL отправляемого сообщения.
Сейчас, при получении сообщения с ID=0x0001 в CAN отправляется сообщение с ID=0х0222, т.е. в ID остаются только 11 младших бит идентификатора 0х2222. Если диаграмма работает, т.е. магнитола правильно воспринимает отправляемые ей с помощью CANNY7 команды, значит магнитола использует идентификатор 0х0222. Если магнитола меняет режимы своей работы без управления с кнопок руля (через CANNY7), вероятно на шине присутствуют другие устройства-источники сообщений с ID=0х0222. Нужно проверить шину на наличие в ней источников таких же ID.

4 (28-04-2017 12:40:46 отредактировано EVK)

Re: Подскажите где ошибка (прием и передача пакетов в Кан-шину)

Денис, я ошибся с написанием идентификатора при написании диаграммы для форума, првильнее считать, что формируемый пакет в диаграмме имеет IDL=0002. Шину проверял, пакетов с IDL=0002 там нет. Данная проблема появляется только при подключенном Canny7, т.е. можно совершенно точно утверждать, что случайные пакеты формируются с его помощью... Причем пакеты для кнопок up/down появляются достаточно часто, а vol+/- очень редко. Пакет для кнопки mute никогда не появлялся случайным образом.

Диаграмму обновил

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

Иконка вложения 1223.cfd 4.4 кб, скачивался 343 раз, последний раз 2017-04-28 

5

Re: Подскажите где ошибка (прием и передача пакетов в Кан-шину)

При включенном фильтре CAN условия для отправки сообщений контроллером CANNY7 появляются только при приеме ID=0x0001.
Возможно в ID=0x0001, в указанных байтах, помимо информации о нажатых кнопках, присутствуют другие данные (например, какие-либо биты состояния чего-либо). Возможно требуется применять побитный анализ получаемых данных, а не байтовый (сравнения байт данных). Или наоборот.
Если у Вас имеется еще один CANNY7, то подключите его параллельно, в режиме CAN-монитора, к шине в процессе работы Вашей диаграммы, и попробуйте снять лог с шины при возникновении самопроизвольных реакций магнитолы (или используйте для этой цели другое имеющееся оборудование для мониторинга CAN-шины).
Было бы полезно увидеть реальную диаграмму. Пришлите ее нам на почту, убрав из нее элементы, составляющие НОУ-ХАУ, но максимально сохраняющие алгоритм ее работы.