26 (29-11-2015 12:26:04 отредактировано tim20061)

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

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

Для того, чтобы при появлении логической единицы на входе формировалось на выходе значение 5 а при логическом ноле на входе формировалось на выходе значение 0, используйте, например, блок Умножение, на один из входов подавайте ваш логический вход а на другом установите константу 5.

Спасибо!
Еще одним вариантом нашел триггер TD.
Есть еще один небольшой вопрос....
Как правильно нужно инициировать проверку каналов входа модуля (по коммутатору 11) и отправку сообщений, если нам нужно что бы эти каналы проверялись постоянно с минимальными задержками? С учетом дальнейшего расширения в сторону чтения сообщений и активации выходов по этим сообщениям.
Для более ясной картины - это будет обычный кан модуль.

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

Иконка вложения 123_15.jpg 331.62 кб, скачивался 287 раз, последний раз 2015-11-29 

27

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

проверьте пожалуйста диаграмму, при наличии минуса на восьмом канале происходит отправка 16-ти сообщений.

28

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

проверьте пожалуйста диаграмму, при наличии минуса на восьмом канале происходит отправка 16-ти сообщений.

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

Иконка вложения 16mtocan.cfd 7.12 кб, скачивался 731 раз, последний раз 2015-11-30 

29

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

Игорь:
Диаграмма вполне работоспособная, ее выполнение можно проверить в симуляторе.
Только обратите внимание, что сообщения в CAN будут отправляться по кругу, т.е. 0,1,...,14,15,0,1,... и т.д, пока на входе канала 8 будет висеть отрицательный потенциал, а при пропадании на нем минуса в счетчике сохранится его последнее состояние (номер следующей отправляемой команды) и в случае появления минуса снова, отправка сообщений начнется с той команды, на которой передача была прервана.

30

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

запустил в симуляторе. если на входе шима 0 то стоит на первом сообщении, при изменении на 1 происходит отправка всех. но на выходе регистр старт передачи в кан висит 0. как проверить происходит ли передача в кан?

31

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

tim20061 пишет:

Как правильно нужно инициировать проверку каналов входа модуля (по коммутатору 11) и отправку сообщений, если нам нужно что бы эти каналы проверялись постоянно с минимальными задержками? С учетом дальнейшего расширения в сторону чтения сообщений и активации выходов по этим сообщениям.

Сократить значение константы на входе счетчика (Блок №8) до числа реально задействованных каналов, в вашем случае это 2. Увеличивать это число по мере добавления новых каналов.

Сократить интервал опроса входов/отправки сообщений пропорционально сократив период и заполнение генератора (Блок №15) с 500/250 мс но, для сохранения стабильности работы контроллера, не более чем в 10 раз, до 50/25 мс.

32

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

Игорь пишет:

запустил в симуляторе. если на входе шима 0 то стоит на первом сообщении, при изменении на 1 происходит отправка всех. но на выходе регистр старт передачи в кан висит 0. как проверить происходит ли передача в кан?

Для проверки установки значения "1" в регистр отправки сообщения в CAN используйте установку контрольной точки на данном регистре - выполнение симуляции будет приостановлено в случае, если значение регистра изменится.
Подробнее о работе с симулятором читайте в Руководстве пользователя CannyLab, раздел "Симулятор CannyLab" (стр.31).

33

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

справится ли контроллер, если я добавлю ещё набор коммутаторов для отправки 16 сообщений и одновременно с этим блоком буду их транслировать в шину, или же мне придётся последовательно запускать эти блоки сообщений?

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

Иконка вложения crhbylbfuh.png 433.87 кб, скачивался 370 раз, последний раз 2015-12-01 

34

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

накидал ещё диаграмму. будет ли жить она. в симуляторе она вроде работает. но не понятно идёт ли старт на отправку. как в нём понять идёт ли отправка в кан.

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

Иконка вложения 32mtocan2.cfd 14.72 кб, скачивался 676 раз, последний раз 2015-12-02 

35

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

Игорь пишет:

накидал ещё диаграмму. будет ли жить она. в симуляторе она вроде работает. но не понятно идёт ли старт на отправку. как в нём понять идёт ли отправка в кан.

В диаграмме есть небольшие ошибки, хотя логика перехода ко второй группе CAN-сообщений, в общем, верна.
Для решения задачи в данной формулировке (отправка данных в шину CAN 125, с периодичностью раз в 100мс) можно применить и такой подход, однако правильнее, при передаче данных в буфер отправки CAN, контролировать состояние регистра готовности буфера передачи драйвера.
В исходном варианте диаграммы сообщение №0 из первой группы коммутаторов никогда не будет отправлено в буфер передачи CAN, также будет предприниматься попытка отправки сообщения с порядковым номером 32, что лежит за пределами допустимого диапазона формируемых с помощью коммутаторов сообщений CAN (в 2х коммутаторах возможные значения от 0 до 31).
Во вложении модифицированный вариант предложенной диаграммы.
Исправлено:
- убран коммутатор блок №1 (в данном случае лишний)
- блок №10 детектор заднего фронта, заменен на детектор переднего фронта (для корректного переключения номеров отправляемых сообщений)
- блок №14 сложение заменен на блок вычитание (так логичнее, хотя результат тот же)
- блок №15 коммутатор заменен на блок больше (коммутатор очень ресурсоемкий блок, а значения на входе все равно одинаковые - результат тот же).

Кроме того диаграмме свойственна та же особенность, о которой было написано в ответе №29.

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

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

Иконка вложения 32mtocan2plus.cfd 12.68 кб, скачивался 948 раз, последний раз 2015-12-02 

32mtocan2plus_bp.png, 13.96 кб, 611 x 123
32mtocan2plus_bp.png 13.96 кб, скачивался 599 раз, последний раз 2015-12-02 

36

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

Спасибо. Буду пробовать. Так же интересует вопрос, если мне потребуется отправлять в шину от 60 до 120 сообщений, как быть и справиться ли контроллер?

37

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

Игорь пишет:

Спасибо. Буду пробовать. Так же интересует вопрос, если мне потребуется отправлять в шину от 60 до 120 сообщений, как быть и справиться ли контроллер?

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

38

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

Сейчас мне надо добавить ещё 30 сообщений. И как это сделать не могу понять. На выходы поставить 8в1 вместо 2в1. Но как дать счёт 0-1-2-3, а точнее 2 и 3 на индекс не могу сообразить.

39

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

Игорь пишет:

Сейчас мне надо добавить ещё 30 сообщений. И как это сделать не могу понять. На выходы поставить 8в1 вместо 2в1. Но как дать счёт 0-1-2-3, а точнее 2 и 3 на индекс не могу сообразить.

Можно применить целочисленное деление значения счетчика на 16 (или сдвиг вправо на 4):
{0...15}/16=0; {16...31}/16=1; {32...47}/16=2 и т.д.

40

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

Нет ли возможности добавить коммутатор 4в1. Просто если я поставлю на выходы 8 в1 то они вероятно будут на порядок больше памяти кушать. В следствии чего будет увеличен временной интервал исполнения диаграммы и увеличен объём использованной памяти, которую можно использовать под сообщения. И так же было бы не плохо добавить 32в1, это упростит мою задачу по транслированию 60 сообщений.

41

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

Игорь пишет:

Нет ли возможности добавить коммутатор 4в1. Просто если я поставлю на выходы 8 в1 то они вероятно будут на порядок больше памяти кушать. В следствии чего будет увеличен временной интервал исполнения диаграммы и увеличен объём использованной памяти, которую можно использовать под сообщения. И так же было бы не плохо добавить 32в1, это упростит мою задачу по транслированию 60 сообщений.

В ближайшее время включение блоков таких типов в набор встроенных функциональных блоков CANNY Lab не планируется.

42 (06-12-2015 19:05:29 отредактировано tim20061)

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

Cпасибо за ответ!
Возник еще один вопрос по нормализации вида диаграммы.
Нужно что бы при получении сообщения IDL = 0x0004 и D1;D0 0x0001 или 0x0002 или 0x003 и так далее активировался выход 0.
Cоставил диаграмму с множеством блоков Лог. ИЛИ. Но так как на нем всего 2 входа это получилось не очень красиво. Может есть вариант как то упростить диаграмму?
И печально, что на блоке Лог.Или всего 2 входа. Это чем то обусловлено?

Спасибо!

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

Иконка вложения otpravka.cfd 3.8 кб, скачивался 599 раз, последний раз 2015-12-06 

43

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

tim20061 пишет:

Это чем то обусловлено?

В первоначальном варианте CANNY Lab не было предусмотрено возможности введения функциональных блоков с переменным числом входов/выходов из за относительной сложности их реализации. В дальнейшем они наверняка будут реализованы, во всяком случае в планах стоит.

tim20061 пишет:

Может есть вариант как то упростить диаграмму?

Взгляните на этот:

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

1112.png, 217.32 кб, 795 x 673
1112.png 217.32 кб, скачивался 774 раз, последний раз 2015-12-06 

44

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

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

Это чем то обусловлено?

В первоначальном варианте CANNY Lab не было предусмотрено возможности введения функциональных блоков с переменным числом входов/выходов из за относительной сложности их реализации. В дальнейшем они наверняка будут реализованы, во всяком случае в планах стоит.

tim20061 пишет:

Может есть вариант как то упростить диаграмму?

Взгляните на этот:

Большое спасибо! Конвертер что то я пропустил, попробуем

45

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

Вечер добрый. Проверьте пожалуйста диаграмму.
При наличии положительного сигнала на восьмом входе начинается постоянная отправка сообщений
0b3   0000 0000 0000 0002 и 12A   EA00 0000 0000 4804
При изменении  сообщения в шине автомобиля с 0be   4401 0200 0000 FF00 на 0be   4401 0000 0000 FF00, начинается отправка сообщения 12a   EA00 0002 0000 4806 и появляется минус на 9 выходе.
Так же хотелось бы отправлять контроллер в сон(энергосбережение) при отсутствии положительного сигнала на восьмом входе и просыпаться по появлению плюса на нём же. Подскажите куда и как? СПАСИБО ОГРОМНЕЙШЕЕ.

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

Иконка вложения приёмотправка.cfd 4.83 кб, скачивался 589 раз, последний раз 2016-03-06 

46

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

Игорь пишет:

Проверьте пожалуйста диаграмму

По вашей диаграмме - заменил блок №18 на блок №2, разберетесь почему?

По переходу в режим пониженного энергопотребления см. руководство стр.100. Но форуме тоже есть примеры: http://forum.canny.ru/viewtopic.php?pid=4876#p4876
Для быстрого выхода из сна по активности канала, сконфигурируйте его как "активный канал" см. руководство стр.109

Для новых вопросов создавайте пожалуйста новые темы на форуме!

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

Иконка вложения приёмотправка2.cfd 4.83 кб, скачивался 584 раз, последний раз 2016-03-07 

47

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

Добрый день! Понял ,что уже организован алгоритм получения информации о том ,что приемник к которому было передано сообщение CAN принял его. Только пока не понятно как это реализовать. Или я в чем то не прав?

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

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

Друзья подскажите пожалуйста на примере как можно ограничить кол-во посылок в can. Допустим в кане изменился байт в каком либо id, и он идет в шине постоянно, при его изменении нужно отправить к примеру одно и тоже сообщение с одним и тем же в не более 5 раз? а при обратном изменении другое сообщение, и тоже не более 5 раз
Спасибо

49 (30-01-2017 17:20:56 отредактировано ЭллипсАвто)

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

Вот попробовал по своей задумке выше такой счетчик подойдет?
как считаете? В блоке шим естественно другие значения времени будут стоять. Эти поставил чисто для наглядности.

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

Иконка вложения счетчик.cfd 1.08 кб, скачивался 563 раз, последний раз 2017-01-30 

50

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

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

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

Иконка вложения счетчик1.cfd 1.01 кб, скачивался 686 раз, последний раз 2017-01-30