51 (30-01-2017 18:19:28 отредактировано ЭллипсАвто)

Re: Примеры передачи сообщений CAN

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

В принципе да, но с небольшим изменением. Запись в регистр начала передачи CAN следует делать по детектору фронта, иначе, на каждом цикле выполнения диаграммы, пока на выходе счетчика будет находиться ненулевое значение, будет выполняться отправка CAN-сообщений.
Доработанный вариант диаграммы во вложении.

Понял. Спасибо

Я так понял что от 1-до 5 может пройти гораздо большее кол-во сообщений?

52

Re: Примеры передачи сообщений CAN

ЭллипсАвто пишет:

...Я так понял что от 1-до 5 может пройти гораздо большее кол-во сообщений?

Да. 5 циклов по 500мс - 2500мс - все это время в регистре начала передачи сообщения CAN находится "1" и на каждом цикле выполнения диаграммы будет выполняться попытка передачи данных. 1 цикл - ~5мс (допустим). Итого, может получиться 500 сообщений.
Также неправильная отправка данных может привести к переполнению буфера передачи драйвера и часть отправляемых сообщений будет потеряна. В случае необходимости отправки большого количества сообщений с маленькими интервалами между ними, также может потребоваться проверка регистра готовности буфера передачи драйвера к приему нового сообщения и выполнять заполнение буфера передачи только при его готовности к приему данных. При отправке 5 сообщений по Генератору ШИМ и интервалами более 50мс такая проверка, скорее всего, не потребуется.

53

Re: Примеры передачи сообщений CAN

Добрый день! Помогите пожалуйста реализовать казалось бы простой алгоритм. Перечитал несколько раз как отправлять в  CAN и как индексировать коммутаторы на тройку понял. 4-е входа управления. При появлении единицы на трех первых отправляется посылка по одному и тому же id, но с изменением значения в одном байте. Т.е. появляется единица на первом входе начинается посылка с одним значением, появляется единица на втором, но не пропадает на первом значение посылки меняется в одном байте. Появляется на третьем, но не пропадает на первых двух, значение этого байта меняется на другое. При появлении единицы на 4м входе значение посылки по этому id не меняется, но добавляются еще около 15 других посылок с разными id.
Спасибо.

54 (07-03-2017 09:30:36 отредактировано ЭллипсАвто)

Re: Примеры передачи сообщений CAN

grantik.s пишет:

Добрый день! Помогите пожалуйста реализовать казалось бы простой алгоритм. Перечитал несколько раз как отправлять в  CAN и как индексировать коммутаторы на тройку понял. 4-е входа управления. При появлении единицы на трех первых отправляется посылка по одному и тому же id, но с изменением значения в одном байте. Т.е. появляется единица на первом входе начинается посылка с одним значением, появляется единица на втором, но не пропадает на первом значение посылки меняется в одном байте. Появляется на третьем, но не пропадает на первых двух, значение этого байта меняется на другое.
Спасибо.

По этой части вопроса можно так попробовать
https://forum.canny.ru/misc.php?action=pun_attachment&item=411&download=1

grantik.s пишет:

При появлении единицы на 4м входе значение посылки по этому id не меняется, но добавляются еще около 15 других посылок с разными id.

По этому есть пример №4

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

Иконка вложения 1.png 76.46 кб, скачивался 2106 раз, последний раз 2017-03-07 

55

Re: Примеры передачи сообщений CAN

Спасибо за ответ! Есть над чем поразмыслить.

56

Re: Примеры передачи сообщений CAN

ЭллипсАвто пишет:

По этой части вопроса можно так попробовать...

Тут вопрос спорный. Одно и то же сообщение отправится при разных комбинациях активных входов. Например сообщение с индексом 1 отправится как при активном входе 0 и остальных неактивных, так и при активном входе 1 и остальных неактивных и т.д.
Если соответствующие сообщения должны отправляться только при определенных комбинациях активных входов, то можно попробовать такой подход:
https://forum.canny.ru/misc.php?action=pun_attachment&item=412&download=1
Но этот подход не учитывает строгость очередности активации входов. Если требуется отправка сообщения только при активации входов в строгой очередности и сбрасывать последовательность отправки при пропадании сигнала на ранее активированных входах, то можно попробовать так:
https://forum.canny.ru/misc.php?action=pun_attachment&item=413&download=1

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

c7CANdemo1.png, 100.44 кб, 850 x 257
c7CANdemo1.png 100.44 кб, скачивался 2162 раз, последний раз 2017-03-07 

Иконка вложения c7CANdemo2.png 50.5 кб, скачивался 1972 раз, последний раз 2017-03-07 

57

Re: Примеры передачи сообщений CAN

Вы правы. Не учел этого)

58

Re: Примеры передачи сообщений CAN

Денис, спасибо! Разжевали очередной раз. Если мою задачу описать несколько иначе, то получается так- 4 входа, первые три 0, 1, 2 работают с одним и тем же id меняя в нем значение одного байта, но приоритет имеет 1 над 0 или 2 над 1 и 0. А 4й вход дает разрешение на трансляцию еще как минимум 15 id, при этом не оказывает влияния на состояние первых 3х входов. Свой вариант диаграммы выложу чуть позже.
Еще раз спасибо.

59

Re: Примеры передачи сообщений CAN

Добрый день! Уважаемые гуру, проведите плиз работу над ошибками. Мой вариант первой части схемы предполагает пока что изменение 5го разряда в зависимости от входов 5,7,6. Приоритет имеет 7й вход над 5м, 6й над 5м и 7м.
Спасибо.

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

Иконка вложения #1.cfd 5.84 кб, скачивался 309 раз, последний раз 2017-03-12 

60

Re: Примеры передачи сообщений CAN

grantik.s пишет:

Добрый день! Уважаемые гуру, проведите плиз работу над ошибками. Мой вариант первой части схемы предполагает пока что изменение 5го разряда в зависимости от входов 5,7,6. Приоритет имеет 7й вход над 5м, 6й над 5м и 7м.
Спасибо.

1. По данному алгоритму последовательность активации входов не строгая - используется только комбинация активных входов.
2. Комбинация блоков №№1,2,3,4 отправит сообщение в CAN только 1 раз при активации одного, первого (любого) входа. Последующая активация входов, при уже активном хотя бы одном входе, отправку в CAN не выполнит, т.к. на входе блока №4 (детектор переднего фронта) значение не изменится, т.е. будет присутствовать "1" и активация нового входа не вызовет появления переднего фронта на выходе блока №3.
Для проверки работы алгоритмов полезно использовать симулятор CannyLab. Он наглядно иллюстрирует особенности работы пользовательских диаграмм.

61

Re: Примеры передачи сообщений CAN

Добрый день! Денис, скажите пожалуйста в кэнилаб есть ограничение на количество элементов в диаграмме? В мануале к кэнилаб я что то не нашел. Диаграмму я составил по Вашей схеме, только немного доработал, т.к. за месяц экспериментов несколько раз менялось ТЗ и диаграмму пришлось дополнять.
Задача на данный момент немного изменилась. 16 ID, которые изменяют свои значения в зависимости от состояния 4х входов. Всего 7 возможных состояний по входам- 7, 7+6, 7+6+5, 10, 10+7, 10+7+6, 10+7+6+5.
В диаграмме у меня получилось 48 коммутаторов. В симуляторе, когда я проверял по отдельности каждый из блоков, все работало. Теперь, когда я в кучу все собрал нижние 2 ряда коммутаторов с 56го по 71 не работают.
Проверьте пожалуйста, где что не так.

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

Иконка вложения ver4.1.cfd 56.33 кб, скачивался 325 раз, последний раз 2017-04-17 

62

Re: Примеры передачи сообщений CAN

grantik.s пишет:

...Проверьте пожалуйста, где что не так.

На самом деле правильно не работает ни один из рядов коммутаторов (проверьте работу схемы в симуляторе). Причина - использование логического И (блоки №№10, 12, 14, 16, 19, 21, 23), которые на выходе могут выдавать только значения 0 или 1.
Очевидно, если я правильно понимаю логику работы диаграммы, вместо группы блоков №№2, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23 следует использовать коммутатор 1-в-16, на вход которого будет подаваться выходное значение блока №9 (Счетчик), а на Индекс - значение выхода блока №1 (конвертер). На выходы №№1, 3, 7, 8, 9, 11, 15 коммутатора (upd) 1-в-16 нужно будет подключить соответствующие соединительные линии (сети).

63

Re: Примеры передачи сообщений CAN

Как всегда все оперативно! Спасибо огромное!

64

Re: Примеры передачи сообщений CAN

Добрый день !
Хочу разобраться , может ли Canny7 отправлять команды по шине в блок управления например :
при скорости выше 40 км,ч. , происходит закрытие ц.з. . Можете написать пример диаграммы для GM ?

65

Re: Примеры передачи сообщений CAN

umo2008 пишет:

...
Хочу разобраться...


CANNY 7 может отправить любое корректное сообщения CAN. Если вы знаете какое сообщение CAN закроет ЦЗ GM и знаете как получить сведения о скорости автомобиля GM, то диаграмма для решения вашей задачи будет очень похожа на диаграмму приведенную в Примере №2 в первом сообщении данной темы форума.

Если желаете продолжить обсуждение вашего вопроса, то не отвечайте здесь, а создайте, пожалуйста, новую тему на форуме.

66

Re: Примеры передачи сообщений CAN

Добрый день.
Подскажите, в Canny 7 есть возможность  принимать и отправлять данные CAN подключившись одним проводом в OBD2 к разъем CAN силового агрегата.
Интересует возможность снятия данных температуры ОЖ и при определенном условии посылка CAN данных обратно?

67

Re: Примеры передачи сообщений CAN

s.a.gorshenin пишет:

Добрый день.
Подскажите, в Canny 7 есть возможность  принимать и отправлять данные CAN подключившись одним проводом в OBD2 к разъем CAN силового агрегата...

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

68

Re: Примеры передачи сообщений CAN

Денис, CANNY пишет:
s.a.gorshenin пишет:

Добрый день.
Подскажите, в Canny 7 есть возможность  принимать и отправлять данные CAN подключившись одним проводом в OBD2 к разъем CAN силового агрегата...

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

Добрый день.
Денис, с правилами ознакомился, но решил пока отдельную тему не создавать.
Глобально вопрос по CAN на требуемом автомобиле не изучал, по этому не смогу Вам ответить по стандарту.
Для начала хотел бы понять, возможна ли реализация на Canny 7 или Canny 5 nano прием и отправку CAN сообщений использовав один канал на контроллере, подключившись в разъеме OBD2 в CAN линии одним проводом.
Понимаю, что данная передача будет в режиме полудуплекс, это основной фактор который меня смущает, ведь канал будет постоянно в ожидании.
Будет возможность отправить сигнал при определенном условии которое будет  срабатывать в зависимости от температуры ОЖ, или надо использовать второй канал на Canny?

Расписать более подробно пока не могу, из за не хватки данных.
Спасибо.

69

Re: Примеры передачи сообщений CAN

Контроллеры CANNY поддерживают работу с CAN стандарта SAE J2411 (однопроводный CAN).
Если это действительно CAN (в OBDII могут присутствовать и другие шины), то задача приема и передачи данных по одному проводу решается CAN-драйвером контроллера.

70

Re: Примеры передачи сообщений CAN

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

Контроллеры CANNY поддерживают работу с CAN стандарта SAE J2411 (однопроводный CAN).
Если это действительно CAN (в OBDII могут присутствовать и другие шины), то задача приема и передачи данных по одному проводу решается CAN-драйвером контроллера.

Спасибо за разъяснения.
Подскажите, canny 5 nano будет достаточно для работы с can шиной через драйвер?

71

Re: Примеры передачи сообщений CAN

s.a.gorshenin пишет:

...Подскажите, canny 5 nano будет достаточно для работы с can шиной...

CANNY 5 nano поддерживает работу с CAN. Если известны ID CAN-сообщений, содержащих нужную информацию, то его может оказаться достаточно. Если требуется сначала выполнить изучение и анализ представленных в CAN данных, то может потребоваться контроллер CANNY 7, т.к. только он из контроллеров CANNY поддерживает работу с утилитой CAN (LIN) monitor, либо любой другой имеющийся CAN-сканер.
Нужно помнить, что CANNY 5 nano - встраиваемый контроллер, его каналы ввода-вывода рассчитаны на напряжение 5В и не имеют защиты, т.е. подключать к ним напрямую внешние управляющие и исполнительные устройства необходимо с учетом его характеристик.

72

Re: Примеры передачи сообщений CAN

Здравствуйте, подскажите по данному вопросу:
требуется отправлять в CAN шину несколько сообщений одновременно:
Условно опишу:
1 сообщение: ID=001, Message= 11 12 13 14 15 16 17 18, Period = 1000
2 сообщение: ID=002, Message= 21 22 23 24 25 26 27 28, Period = 1000
3 сообщение: ID=003, Message= 31 32 33 34 35 36 37 38, Period = 50
4 сообщение: ID=005, Message= 41 42 43 44 45 46 47 48, Period = 10

То есть разные ID  и сообщения, НО! и в том числе периоды отправки
Уже всю голову сломал
Поставил ШИМ генератор с минимально необходимым периодом - 10 \ 5
после него счетчик и проверка x==y сравнивает выход счетчика с 100 (10х100 = 1000) - период 1000
и если верно - устанавливает через коммутаторы нужный адрес и сообщение и сбрасывает счетчик на 0

с одним сообщением - работает
а вот как добавить еще остальные сообщения,
Если добавляю параллельно еще "x==y" с другим значением, например 5 (10х5 = 50) - период 50, то
при запуске отладки, все время натыкаюсь на ошибку "выход используется более одного раза" или подобную, дословно не помню

73

Re: Примеры передачи сообщений CAN

Alyans пишет:

...требуется отправлять в CAN шину несколько сообщений одновременно...

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

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

Иконка вложения can_multisend.cfd 6.33 кб, скачивался 271 раз, последний раз 2019-04-03 

74

Re: Примеры передачи сообщений CAN

Добрый день!
Подскажите пожалуйста пример для отправки нескольких  сообщений CAN при появлении  минусов на входах контроллера, например появился минус на канале 8 началась передача сообщения 1 в шину CAN, появился минус на канале 9, началась трансляция еще на одном канале одновременно? как это реализовать? как сделать это для трансляции 1 сообщения я разобрался, а для нескольких не догоняю(

75

Re: Примеры передачи сообщений CAN

В общем случае, это можно сделать на базе примера из предыдущего сообщения (сообщения №73). Решений может быть несколько.
Вариант решения (наиболее очевидный) во вложении.

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

Иконка вложения can_multisend_io.cfd 4.33 кб, скачивался 210 раз, последний раз 2019-07-09