1

Тема: Запись в сan шину

Добрый вечер! Пытаюсь записать по нажатию кнопки в кан шину в сообщение с ID 0x118 в D3 значение 0x12 (в D2 значение 0х00), но ничего не получается почему то, хотя использовал разобранные примеры на форуме. Подскажите, пожалуйста, в чем ошибка? Спасибо!

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

Иконка вложения can_write_7_test.cfd 1.21 кб, скачивался 132 раз, последний раз 2021-12-18 

2 (19-12-2021 08:48:16 отредактировано mybisarvl)

Re: Запись в сan шину

Вроде вижу ошибку в константе регистра установки кан erl ,сколь байт посылка для блока, такое и должно быть число ,
к примеру посылка 8 байт, то и числовая константа должна быть 8 , а не 0х0008

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

Иконка вложения can_write_7_test_1.cfd 1.21 кб, скачивался 112 раз, последний раз 2021-12-19 

3

Re: Запись в сan шину

bassomax пишет:

Подскажите, пожалуйста, в чем ошибка?

Данная диаграмма будет по каждому появлению и удержанию отрицательного потенциала на канале №2 на время более 200мс отправлять с CAN одно сообщение следующего содержания:

0x118 00 00 00 12 00 00 00 00

И включать светодиод на время удержания + 200 мс потенциала на канале 2
Сообщение с D3:D2 = 0x1300 никогда не отправится.

Как вы определили что ничего не получается? Если вы не видите сообщения в CAN, то проверьте наличия терминирующего сопротивления в сегменте CAN к которому подключен контроллер: https://forum.canny.ru/viewtopic.php?pid=6434#p6434

mybisarvl пишет:

числовая константа должна быть 8 , а не 0х0008

8 и 0x0008 - это одно и то же значение, записанное в десятичной и шестнадцатеричной системах счисления соответственно. Результат исполнения диаграммы не зависит от системы счисления используемых на ней констант, только от их значений.

4

Re: Запись в сan шину

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

Как вы определили что ничего не получается? Если вы не видите сообщения в CAN, то проверьте наличия терминирующего сопротивления в сегменте CAN к которому подключен контроллер: https://forum.canny.ru/viewtopic.php?pid=6434#p6434

После исполнения диаграммы я подключал кан монитор и смотрел значение d3 для сообщения 118.

5

Re: Запись в сan шину

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

Данная диаграмма будет по каждому появлению и удержанию отрицательного потенциала на канале №2 на время более 200мс отправлять с CAN одно сообщение следующего содержания:

0x118 00 00 00 12 00 00 00 00

И включать светодиод на время удержания + 200 мс потенциала на канале 2
Сообщение с D3:D2 = 0x1300 никогда не отправится

Был не прав - диаграмма работает как раз наоборот, будет всегда отправляться 0x118 00 00 00 13 00 00 00 00

6

Re: Запись в сan шину

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

Как вы определили что ничего не получается? Если вы не видите сообщения в CAN, то проверьте наличия терминирующего сопротивления в сегменте CAN к которому подключен контроллер: https://forum.canny.ru/viewtopic.php?pid=6434#p6434


Контроллер в режиме чтения работает корректно без сопротивления. Правильно я понял, что для записи уже требуется терминирующее сопротивление?

7

Re: Запись в сan шину

Сопротивление требуется по стандарту CAN. При определенных условиях сегмент сети может работать и без него, но для надежной работы следует придерживаться стандарта.

Это касается как приема так и передачи. Однако, если дело в терминаторе, то связь как правило пропадает совсем. Получение в этом случае корректных сообщений, но с измененными помехами некоторыми битами, крайне маловероятна.

8

Re: Запись в сan шину

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

Сопротивление требуется по стандарту CAN. При определенных условиях сегмент сети может работать и без него, но для надежной работы следует придерживаться стандарта.

Это касается как приема так и передачи. Однако, если дело в терминаторе, то связь как правило пропадает совсем. Получение в этом случае корректных сообщений, но с измененными помехами некоторыми битами, крайне маловероятна.

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

9

Re: Запись в сan шину

Все же не понял Ваш комментарий

В сетях CAN со скоростью обмена 500k сопротивления должны быть. Это требование стандарта CAN.

Для случая одного контроллера какая схема добавления сопротивления должна быть?

Сеть CAN состоит как минимум из двух устройств.

10

Re: Запись в сan шину

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

Все же не понял Ваш комментарий

В сетях CAN со скоростью обмена 500k сопротивления должны быть. Это требование стандарта CAN.

Для случая одного контроллера какая схема добавления сопротивления должна быть?

Сеть CAN состоит как минимум из двух устройств.

Я подключаю контроллер к кан-шине автомобиля, там есть master (блок комфорта), мне непонятно как в этом случае сопротивление добавлять и надо ли это делать?

11

Re: Запись в сan шину

Я уверен, что CAN сеть исправного автомобиля построена в соответствии со стандартом и все необходимые сопротивления в ней есть.

12

Re: Запись в сan шину

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

Я уверен, что CAN сеть исправного автомобиля построена в соответствии со стандартом и все необходимые сопротивления в ней есть.

Тогда в чем может быть еще проблема, что запись не происходит?

13

Re: Запись в сan шину

bassomax пишет:

Тогда в чем может быть еще проблема, что запись не происходит?

Как именно вы определили, что запись не происходит?

14

Re: Запись в сan шину

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

Тогда в чем может быть еще проблема, что запись не происходит?

Как именно вы определили, что запись не происходит?

Я выполняю команду на запись, а потом подключаюсь в режиме кан-монитора и проверяю значение и вижу, что оно не изменено.

15

Re: Запись в сan шину

bassomax пишет:

Я выполняю команду на запись, а потом подключаюсь в режиме кан-монитора и проверяю значение и вижу, что оно не изменено.

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

16 (24-12-2021 17:03:17 отредактировано bassomax)

Re: Запись в сan шину

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

Я выполняю команду на запись, а потом подключаюсь в режиме кан-монитора и проверяю значение и вижу, что оно не изменено.

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

Да, я понял в чем сложность, другой штатный блок пишет по этому адресу свое значение и перезаписывает мое. Мне нужно организовать постоянную запись значения по нажатию.
Как в этом случае диаграмма должна выглядеть? Спасибо!

17

Re: Запись в сan шину

bassomax пишет:

Мне нужно организовать постоянную запись значения по нажатию.
Как в этом случае диаграмма должна выглядеть?

Что значит "постоянную запись"?
Примеры периодической отправки сообщений есть в документации: https://canny.ru/docs/c7/can/#sec--c7-c … soobshenij

18

Re: Запись в сan шину

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

Я выполняю команду на запись, а потом подключаюсь в режиме кан-монитора и проверяю значение и вижу, что оно не изменено.

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

Да, я понял в чем сложность, другой штатный блок пишет по этому адресу свое значение и перезаписывает мое. Мне нужно организовать постоянную запись значения по нажатию.
Как в этом случае диаграмма должна выглядеть? Спасибо!

В шине CAN есть "приоритетность " в передачи данных, если ваше устройство имеет низкий приоритет и по этому адресу уже идет передача данных от другого блока, то вы не сможете изменить содержимое пакета.