51

Re: Программирование CANNY5 DUO

1. Если я правильно понял, диаграмму вы привели не полностью - не вижу конфигурацию драйверов CAN?
2. Отбор сообщений в шлюз осуществляется только по ID, если вам нужно отбирать еще и по данным, то необходимо использовать технику динамического шлюза (см пример 4 отсюда: http://forum.canny.ru/viewtopic.php?id=233 )
3. О назначении регистров маски и замены:

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

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

Подробнее здесь: http://wiki.canny.ru/index.php?title=CA … %D0%B0_CAN

52

Re: Программирование CANNY5 DUO

Спасибо. Вопрос стоит в том чтоб  ловить пакет как по Id так  и по данным d1d0  их определённых значений. А потом слать  другой Id с другими данными.

53

Re: Программирование CANNY5 DUO

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

54 (16-11-2016 23:18:43 отредактировано Dark-angel)

Re: Программирование CANNY5 DUO

кажется где то рядом аленький цветок, но еще недоступен...
1 отбор работает отлично.
со вторым беда

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

Иконка вложения фильтр1.png 143.17 кб, скачивался 179 раз, последний раз 2016-11-16 

55

Re: Программирование CANNY5 DUO

Отбор 0 работает отлично потому, что драйвер шлюза используется в, если так можно сказать, обычном режиме - не меняет ID и работает только с заменой данных по маске.
Не понятно, какого эффекта требуется достичь при использовании отбора 1. Должен ли ID 0х418 ретранслироваться в CAN1 всегда, всегда кроме случая когда D0=0х52, или вообще никогда? Чем должны быть заполнены все остальные байты сообщения с ID 0х365? Копией данных из ID 0х418? Имея ответы на эти вопросы можно было бы попробовать предложить вариант решения данной задачи.

Приведенная диаграмма напоминает попытку использования динамического шлюза с рядом ошибок. Как минимум, не установлены маски отбора для D5:D4 и IDL, не выполняется обновление конфигурации драйвера шлюза после ее изменения, ... (см пример 4 отсюда: http://forum.canny.ru/viewtopic.php?id=233)

56

Re: Программирование CANNY5 DUO

Денис, все верно. спасибо

Поработал, подумал, вот что получилось. Оно работает, но. остался последний штрих. Как остановить отправку 365 пакета в Can1 после того как в диаграмме прекратится выполнятьсЯ условие?

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

Иконка вложения 111.png 147.94 кб, скачивался 206 раз, последний раз 2016-11-17 

57

Re: Программирование CANNY5 DUO

Вернее нужно дополнить теперь схему чтоб при 418 пак-те отличном от d0 52  слался пакет 365 D5 00

58

Re: Программирование CANNY5 DUO

Я бы, вместо 1,9,8,7 и 19, предложил такой вариант (см вложение).
- отправлять ID=0x365 в CAN1 всегда по получению по CAN0 ID=0x418, а посылку формировать в зависимости от полученных в ID=0х418 данных.

Попробуйте такой подход.

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

send_0x365.png, 42.74 кб, 741 x 334
send_0x365.png 42.74 кб, скачивался 368 раз, последний раз 2016-11-17 

59

Re: Программирование CANNY5 DUO

спасибо, я думал про коммутатор, но мысли не сложились в диаграмму так как эта диаграмма была составлена до того как я понял что устройству не нужно постоянное подтвержение 365 пакета в D5=10. Он будет держать клюь в положении до того как придет другой отличный от 10 значения D5. А маска тоже интересна!!! вместо того чтоб заниматься высчитыванием сдвигов.! Спасбио завтра  буду пробовать.

60 (01-05-2017 20:58:54 отредактировано BezzzPaniki)

Re: Программирование CANNY5 DUO

Ребята, выручайте!!!

Контроллер поставлен в разрыв шины.
Подключение:
шина авто -> контроллер CAN0 -> замена данных согласно диаграмме -> контроллер CAN1 -> устройство
Косяков в подключении нет - в разрыв шины вставлял перемычки - всё ок, сам контроллер тоже получает питание.
Цель:
В сообщении и идентом 0x00F8 полностью заменить байт D7 на 0x0A (максимально упростил диаграмму).
Результата нет.

Создаётся впечатление, что по каким-то причинам на интерфейс CAN1 вообще ничего не транслируется. sad
По крайней мере само устройство (конечный получатель) ведёт себя именно так.
Сделал полностью сквозной шлюз, чтобы проверить свои подозрения.
Действительно... ничего в CAN1 не транслируется.

Подскажете в чём может таиться подвох?

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

замена.jpg, 75.5 кб, 467 x 317
замена.jpg 75.5 кб, скачивался 284 раз, последний раз 2017-05-01 

61

Re: Программирование CANNY5 DUO

Правильно же я понимаю реализацию полностью сквозного шлюза?
Так?

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

сквозной шлюз.jpg, 50.02 кб, 533 x 231
сквозной шлюз.jpg 50.02 кб, скачивался 311 раз, последний раз 2017-05-01 

62

Re: Программирование CANNY5 DUO

BezzzPaniki пишет:

Ребята, выручайте!!!
Контроллер поставлен в разрыв шины...

Какой тип контроллера используется? CANNY 5 duo? CANNY 5.2 duo?
При использовании CAN 500k, на интерфейс CAN1 следует установить терминатор 120 Ом. Отрываемое устройство, как правило, не имеет собственного терминирующего сопротивления.
У последних версий контроллеров CANNY 5.2 duo CAN1 уже имеет терминатор. При ипользовании CANNY 5 duo и ранних версий CANNY 5.2 duo, на высоких скоростях обмена данными, терминатор на CAN1 следует установить.

63

Re: Программирование CANNY5 DUO

Денис, CANNY пишет:
BezzzPaniki пишет:

Ребята, выручайте!!!
Контроллер поставлен в разрыв шины...

Какой тип контроллера используется? CANNY 5 duo? CANNY 5.2 duo?
При использовании CAN 500k, на интерфейс CAN1 следует установить терминатор 120 Ом. Отрываемое устройство, как правило, не имеет собственного терминирующего сопротивления.
У последних версий контроллеров CANNY 5.2 duo CAN1 уже имеет терминатор. При ипользовании CANNY 5 duo и ранних версий CANNY 5.2 duo, на высоких скоростях обмена данными, терминатор на CAN1 следует установить.

Огромное спасибо за разъяснения!
У меня 5duo в этом разрыве трудится...
Его как-то прям в контроллере напаять можно?.. есть там посадочное место под это дело?
Если да, то было бы не плохо "ткнуть пальцем"))) ну или ссыль дать на какой-нибудь гайд, если таковой имеется...

64

Re: Программирование CANNY5 DUO

BezzzPaniki пишет:

У меня 5duo в этом разрыве трудится...
Его как-то прям в контроллере напаять можно?.. есть там посадочное место под это дело?
Если да, то было бы не плохо "ткнуть пальцем"))) ну или ссыль дать на какой-нибудь гайд, если таковой имеется...

Специальных посадочных мест в CANNY 5 duo не предусмотрено. Терминатор можно поставить между линиями CAN-L и CAN-H, со стороны оторванного устройства, например, в районе подключения проводов интерфейса CAN1 контроллера к сети CAN автомобиля, или, например внутри контроллера, прямо между контактами 2х контактного разъема (интерфейса CAN1).

65

Re: Программирование CANNY5 DUO

Денис, CANNY пишет:
BezzzPaniki пишет:

У меня 5duo в этом разрыве трудится...
Его как-то прям в контроллере напаять можно?.. есть там посадочное место под это дело?
Если да, то было бы не плохо "ткнуть пальцем"))) ну или ссыль дать на какой-нибудь гайд, если таковой имеется...

Специальных посадочных мест в CANNY 5 duo не предусмотрено. Терминатор можно поставить между линиями CAN-L и CAN-H, со стороны оторванного устройства, например, в районе подключения проводов интерфейса CAN1 контроллера к сети CAN автомобиля, или, например внутри контроллера, прямо между контактами 2х контактного разъема (интерфейса CAN1).

Принято!
Глубокое Вам мерси! ;-)