1

Тема: Примеры использования CANNY 5 duo

В данной теме приведено несколько простых примеров использования CANNY 5 duo, которые помогут разобраться в особенностях работы и задания алгоритмов для этого типа контроллеров.

Пример 1: Запрет ретрансляции CAN-сообщений с заданным идентификатором (c5duo_example1a.cfd).

http://forum.canny.ru/misc.php?action=pun_attachment&item=283&download=0

Все сообщения, кроме сообщений с ID=0x0123, пришедшие с CAN0 передаются на CAN без изменений и в диаграмму не попадают.
Данные сообщений с ID=0x0123 могут быть доступны в пользовательской диаграмме, но не ретранслируются в интерфейс CAN1.

Все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, в диаграмму не попадают.

Пример 2: Статический шлюз: ретрансляция CAN-сообщения с изменением данных (c5duo_example1b.cfd).

http://forum.canny.ru/misc.php?action=pun_attachment&item=218&download=0

Все сообщения, кроме сообщений с ID=0х0120, пришедшие с CAN0 передаются в CAN1 без изменений и в диаграмму не попадают.
Данные сообщений с ID=0x0120 могут быть доступны в пользовательской диаграмме и ретранслируются в интерфейс CAN1 с учетом заданный маски и замены отбора.

Все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, в диаграмму не попадают.

В процессе работы диаграммы сообщения с IDL=0х0120 будут передаваться в CAN1 с битом 0 байта D0 равным 0.

Пример 3:  Обработка данных полученного CAN-сообщения в пользовательской диаграмме (c5duo_example1с.cfd).

http://forum.canny.ru/misc.php?action=pun_attachment&item=220&download=0

Все сообщения, кроме сообщений с ID=0x01A0, пришедшие из интерфейса CAN0 передаются в CAN1 без изменений и в диаграмму не попадают.
Данные сообщений с ID=0x01A0 могут быть доступны в пользовательской диаграмме, но не ретранслируются в интерфейс CAN1.

Все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, в диаграмму не попадают.

В процессе работы диаграммы все CAN-сообщения из интерфейса CAN0 с идентификатором IDL=0х01A0 будут блокироваться контроллером, т.е. не будут ретранслироваться в интерфейс CAN1, но получаемые в них данные будут доступны в пользовательской диаграмме.
Получаемые сообщения с IDL=0х01A0 обрабатывааются в пользовательской диаграмме.
При получении сообщения с IDL=0х01A0 в интерфейс CAN1 выполняется отправка сообщения с IDL=0x0208 содержащего статические данные, а также несколько байт данных, значение которых рассчитывается в зависти от данных, полученных в сообщении с IDL=0x01A0 из CAN0.
Длина отправляемого в CAN1 сообшения с IDL=0x0208 составляет 8 байт.

Пример 4: Динамический шлюз (c5duo_example2b.cfd).

Пример иллюстрирует принципы работы с контроллерами CANNY 5 duo, оснащенных двумя интерфейсами CAN.

http://forum.canny.ru/files/c5duo_example2b_prev.png

Например, интересующие нас данные передаются в CAN в ID 0х0123, в байте D1.

Управление режимом работы шлюза выполняется с помощью тактовой кнопки (GND), подключенной к каналу №8 контроллера. При включении контроллера маска отбора 0 шлюза D1:D0 установлена равной 0х0000, т.е. поступающие данные драйвером не обрабатываются, изменений в них при ретрансляции не происходит.
При первом нажатии на управляющую кнопку происходит установка маски отбора 0 шлюза D1:D0 для работы с байтом D1, при следующем нажатии - возврат маски отбора 0 шлюза D1:D0 к значению 0х0000, и т.д.

Шлюз неактивен (маска отбора 0 шлюза D1:D0 установлена равной 0х0000).
Фильрация потока данных не выполняется, все сообщения пришедшие с CAN0 передаются на CAN1 без изменений,
все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, данные обоих интерфейсов в диаграмму
не попадают.

Шлюз находится в рабочем режиме (маска отбора 0 шлюза D1:D0 установлена равной 0хFF00).
Все сообщения, кроме сообщений с ID=0x123, пришедшие с CAN0 передаются на CAN1 без изменений и в диаграмму
не попадают.
Данные сообщений с ID=0x123 доступны в пользовательской диаграмме.
Во всех сообщениях с ID=0x123, пришедших с CAN0, если значение байта D1 не равно 0x20,
при передаче их на CAN1, значение байта D1 устанавливается равным 0x10, иначе -  устанавливается
равным 0x20, т.е. передается без изменения.
Все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, в диаграмму не попадают.

ВНИМАНИЕ! Любое изменение настроек шлюза (например, регистров маски отбора или замены отбора) требует обновления конфигурации драйвера с использованием специального регистра.

Пример может быть использован для реализации устройств "картинка в движении" и "подключение нештатного монитора к камере заднего вида" и т.п.

Подробнее о работе с контроллерами CANNY 5 duo читайте на wiki.canny.ru.

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

Иконка вложения c5duo_example1a.cfd 2.37 кб, скачивался 571 раз, последний раз 2016-04-06 

c5duo_example1a.png, 129.07 кб, 600 x 565
c5duo_example1a.png 129.07 кб, скачивался 541 раз, последний раз 2016-10-05 

Иконка вложения c5duo_example1b.cfd 2.03 кб, скачивался 584 раз, последний раз 2016-06-23 

c5duo_example1b.png, 47.6 кб, 628 x 554
c5duo_example1b.png 47.6 кб, скачивался 566 раз, последний раз 2016-06-23 

Иконка вложения c5duo_example1c.cfd 5.25 кб, скачивался 571 раз, последний раз 2016-06-24 

c5duo_example1c.png, 343.35 кб, 650 x 1308
c5duo_example1c.png 343.35 кб, скачивался 603 раз, последний раз 2016-06-24 

Иконка вложения c5duo_example2b.cfd 8.57 кб, скачивался 588 раз, последний раз 2016-06-24 

Иконка вложения c5duo_example2b.png 252.57 кб, скачивался 246 раз, последний раз 2016-06-24 

2

Re: Примеры использования CANNY 5 duo

Первая картинка не отображается, поправьте, пожалуйста, если можно

3

Re: Примеры использования CANNY 5 duo

alex_engine пишет:

Первая картинка не отображается, поправьте, пожалуйста, если можно

Какая конкретно картинка не отображается? Пришлите скриншот.
У нас все картинки отображаются корректно.

4

Re: Примеры использования CANNY 5 duo

Здравствуйте!
Можно ли с помощью CANNY 5 duo заблокировать сигнал, идущий при движении автомобиля на головное устройство и блокирующий экран по внешним видео-входам и при этом не нарушающим все остальные функции экрана, с которого идет управление множеством функций и систем автомобиля? Автомобиль FORD EXPLORER V. Спасибо.

5

Re: Примеры использования CANNY 5 duo

Судя по всему, для данной задачи наиболее близки примеры 2 или 3 ?

6

Re: Примеры использования CANNY 5 duo

Могу предположить, что сработает подход показанный в примере №2

7

Re: Примеры использования CANNY 5 duo

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

Первая картинка не отображается, поправьте, пожалуйста, если можно

Какая конкретно картинка не отображается? Пришлите скриншот.
У нас все картинки отображаются корректно.

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

Иконка вложения screen.JPG 88.35 кб, скачивался 241 раз, последний раз 2016-10-03 

8

Re: Примеры использования CANNY 5 duo

Попробуйте, находясь на странице, нажать в браузере комбинацию клавиш Ctrl+F5

9

Re: Примеры использования CANNY 5 duo

Пробовал. Ничего. Картинку можно сохранить и посмотреть.
Походу хром глючит. Зашел с фаейфокса - все корректно показывает.

10

Re: Примеры использования CANNY 5 duo

Да, увидели проблему в Chrom, попробуем разобраться.

11

Re: Примеры использования CANNY 5 duo

Здравствуйте!
А есть ли способ включить в диаграмму сообщение с определённым id БЕЗ запрета ретрансляции, БЕЗ замены битов, БЕЗ "ручной" ретрансляции... ТОЛЬКО для анализа этого сообщения?
Т.е. мне нужно, чтобы в диаграмму попадало сообщение например с id0123 исключительно для анализа и дальше ретранслировалось без изменений... или же я всё таки попадаю на "рисование лишних кирпичиков"? big_smile
Заранее спасибо!

12 (29-12-2016 14:01:55 отредактировано BezzzPaniki)

Re: Примеры использования CANNY 5 duo

Я же правильно понял?.. это самый простой способ добиться того, чтобы в диаграмму попало сообщение с id 0x0110?
В этом случае нужно просто взять любую пару бит из этого сообщения и задать для них маску 0000.
Сообщение будет продолжать транслироваться в can1 без изменений и одновременно будет доступно в диаграмме.
Всё верно?

UPD: был не внимателен и кажется поторопился с выводами... при нулевой маске сообщение сразу минует диаграмму и передаётся на can1.
В общем, похоже придётся ставить маску и транслировать с заменой на исходное значение(((

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

отбор.jpg, 40.01 кб, 421 x 175
отбор.jpg 40.01 кб, скачивался 499 раз, последний раз 2016-12-29 

13

Re: Примеры использования CANNY 5 duo

BezzzPaniki пишет:

Я же правильно понял?.. это самый простой способ добиться того, чтобы в диаграмму попало сообщение с id 0x0110?...

Правильно. При этом можно маску отбора не указывать совсем. Достаточно указать только значение отбора IDL.

BezzzPaniki пишет:

...UPD: был не внимателен и кажется поторопился с выводами... при нулевой маске сообщение сразу минует диаграмму и передаётся на can1(((...

На основании чего сделан такой вывод? Проверено "на столе". При указанном значении отбора IDL сообщение и его данные доступны в диаграмме для анализа, при этом они параллельно ретранслируются в интерфейс CAN1 без изменений.
Задача так и формулировалась. Или она была описана неправильно?

14

Re: Примеры использования CANNY 5 duo

BezzzPaniki пишет:

...UPD: был не внимателен и кажется поторопился с выводами... при нулевой маске сообщение сразу минует диаграмму и передаётся на can1(((...

На основании чего сделан такой вывод? Проверено "на столе". При указанном значении отбора IDL сообщение и его данные доступны в диаграмме для анализа, при этом они параллельно ретранслируются в интерфейс CAN1 без изменений.
Задача так и формулировалась. Или она была описана неправильно?

Не...не...не... на практике ещё пока ничего не проверялось.
Меня смутила вот эта запись из комментариев к 4му примеру:
"Шлюз неактивен (маска отбора 0 шлюза D1:D0 установлена равной 0х0000).
Фильрация потока данных не выполняется, все сообщения пришедшие с CAN0 передаются на CAN1 без изменений,
все сообщения пришедшие с CAN1 передаются на CAN0 без изменений, данные обоих интерфейсов в диаграмму
не попадают
."

15

Re: Примеры использования CANNY 5 duo

Здравствуйте!
Задача организовать шлюз и по сигналу на канале заменять биты в нескольких идентификаторах. Какой пример подойдет. Чет не могу пока вникнуть в диаграмму...

16

Re: Примеры использования CANNY 5 duo

Если менять всегда на одно и тоже, то второй. Если на разное, то четвертый.
Для замены в сообщениях с нескольким разными ID настраивайте остальные отборы шлюзов, каждый на свой ID, по аналогии с отбором 0. Всего можно настроить до 8 отборов.

17

Re: Примеры использования CANNY 5 duo

документацию изучил. Толком ничего не понял. есть идентификатор 131 00 01 00 00 00 00 00 00 нужно менят на 00 02 00 00 00 00 00 00. как маски с заменами должны выглядить

18

Re: Примеры использования CANNY 5 duo

Что именно вы не поняли?
В значении регистра маски должны быть установлены (равны 1) те биты, которые подлежат замене.

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

Пример замены одного бита:

при регистре маски   = 0x0001 (0b0000000000000001)
при регистре замены = 0x0000 (0b0000000000000000)

Нулевой бит сообщения будет всегда заменятся на ноль при ретрансляции. При этом остальные биты будут ретранслированы без изменений, в том виде в котором они были приняты.

Таким образом:
При приеме значения                   0x0123 (0b0000000100100011)
Будет ретранслировано значение 0x0122 (0b0000000100100010)

При приеме значения                   0x0456 (0b0000010001010110)
Будет ретранслировано значение 0x0456 (0b0000010001010110)


Пример замены нескольких бит:

при регистре маски   = 0x0005 (0b0000000000000101)
при регистре замены = 0x0004 (0b0000000000000100)

Нулевой бит сообщения будет всегда заменятся на ноль при ретрансляции, а второй бит сообщения - всегда на единицу. При этом остальные биты будут ретранслированы без изменений, в том виде в котором они были приняты.

Таким образом:
При приеме значения                   0x0123 (0b0000000100100011)
Будет ретранслировано значение 0x0126 (0b0000000100100110)

При приеме значения                   0x0456 (0b0000010001010110)
Будет ретранслировано значение 0x0456 (0b0000010001010110)

Пример замены БАЙТА:

при регистре маски   = 0xFF00  (0b1111111100000000)
при регистре замены = 0x7800 (0b0111100000000000)

Старший байт сообщения целиком будет всегда заменятся на 0x78 при ретрансляции. При этом младший байт будет ретранслирован без изменений, в том виде в котором он был принят.

Таким образом:
При приеме значения                   0x0123 (0b0000000100100011)
Будет ретранслировано значение 0x7823 (0b0111100000100011)

При приеме значения                   0x0456 (0b0000010001010110)
Будет ретранслировано значение 0x7856 (0b0111100001010110)

19

Re: Примеры использования CANNY 5 duo

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

Что именно вы не поняли?
В значении регистра маски должны быть установлены (равны 1) те биты, которые подлежат замене.

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

Спасибо. вроде разобрался. попробую запилить

20

Re: Примеры использования CANNY 5 duo

Вот набросал диаграмку. Задача следующая: при появлении плюса на входе 8 включить замену байтов в паре ид. также должен появиться плюс на выходе 10.
Проверьте пожалуйста диаграмку

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

Иконка вложения код 07_can5d.cfd 1.51 кб, скачивался 512 раз, последний раз 2017-01-26 

21

Re: Примеры использования CANNY 5 duo

Не уверен, что будет работать так, как вы задумали.
Шлюз у вас динамический, а не статический как вы сказали ранее, а именно: настройка шлюза меняется в процессе работы диаграммы. У статического она задается один раз.

В вашем случае вам нужно руководствоваться примером №4 из первого сообщения темы и устанавливать значение 1 в Регистре обновления драйвера шлюза при каждом изменении значений его регистров.

Из оптимизации: Блоки  Равенство на вашей диаграмме можно опустить, так как кроме значений 0 и 1 в регистрах используемых с этими блоками на вашей диаграмме ничего появиться не может. Прилагаю редакцию.

Так же обратите внимание, что использование канала 10 в качестве выхода имеет свои особенности: он слабо подтянут к GND внутри контроллера при значении выходного регистра = 0, а при =1 включается транзистор 100мА но тоже GND. Поэтому для того чтобы увидеть изменение на этом выходе контроллера нужна нагрузка или внешняя подтяжка к +12В. Каналы 8 и 9 имеют внутреннюю подтяжку к +12В и поэтому не имеют данной особенности.

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

Иконка вложения код 07_can5d_1.cfd 1.57 кб, скачивался 535 раз, последний раз 2017-01-26 

22 (10-02-2017 23:47:16 отредактировано roman_zlo)

Re: Примеры использования CANNY 5 duo

Диаграмма заработала, но не совсем хорошо. Не могу разобраться с задержками.
Задача:
- При Появлении массы на 8 канале вносить изменения в idl 0х4FA и на 10 канале получить массу.(это работает)
- Если в момент, когда 8 канал активен прийдет определенный байт на idl 0х131. Нужно убрать массу с 10 канала.(тоже работает)
А вот дальше никак не могу сообразить как сделать:
- Когда на 8 канале масса пропадает сделать задержку выключения замены байтов.
- Если в момент, когда 8 канал активен прийдет определенный байт на  idl 0х131. Нужно убрать массу с 10 канала с задержкой 1сек.

На 10 канал подключено реле. Если использую задержки включения, то релюха начинает как дерная трещать....
Подскажите куда копать.

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

Иконка вложения SRG M6_Front.cfd 2.08 кб, скачивался 492 раз, последний раз 2017-02-10 

23

Re: Примеры использования CANNY 5 duo

Прием CAN сообщений организуется немного не так. Вот тут практический пример: http://forum.canny.ru/viewtopic.php?pid=5866#p5866

Приложил модификацию вашей диаграммы, если я правильно понял какой байт сообщения вам важен.

И возможно я ошибаюсь, но похоже вы не совсем поняли назначение маски отбора. Мне кажется в вашем случае на Входе 1 блока №2 должна быть константа 0хFFFF

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

Иконка вложения SRG M6_Front_1.cfd 2.73 кб, скачивался 517 раз, последний раз 2017-02-11 

24

Re: Примеры использования CANNY 5 duo

Спасибо, вроде понял. С масками разобрался.