1 (09-06-2020 20:20:01 отредактировано opel009)

Тема: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Здравствуйте. Подскажите, остался последний пункт и что то никак не соображу.
в строке ID 255   60 D0 C3 51 00 02 FE FE   идет управление индикацией АКПП
6й бит 02,01,04 итд индикация положения селектора на приборке рег.уст.CAN D5
5й бит индикация чек акпп, 10 горит, 00 не горит рег.уст.CAN D4
Соответственно нужно чтобы при подачи рег.уст.CAN D5 не было 00 на рег.уст.CAN D4
при подачи рег.уст.CAN D4 не было 00 на рег.уст.CAN D5
Как управлять рег.уст.CAN D4 и рег.уст.CAN D5 независимо друг от друга и чтобы они друг другу не мешали 00?

как реализовать например ID 255   60 D0 C3 51 10 04 FE FE ? Чтобы 10 и 04 присутствовали одновременно с заданной шим частотой и друг друга 00 не перебивали?

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

Иконка вложения положение селектора ком16.cfd 9.47 кб, скачивался 207 раз, последний раз 2020-06-09 

2

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Эта задача решается с помощью побитовых операций: сдвига и побитового или, которое может быть заменено на арифметическое сложение. Пример во вложении. Варианты 1 и 2 отличаются начальным расположением байта D5 (его расположение определяется пользователем, в зависимости от его предпочтений, удобства и конкретной задачи). Важно, чтобы при объединении значений байты находились на своих местах, а место соседнего байта было свободным (т.е. там было значение 0x00).
По приложенной диаграмме, хочу обратить внимание, что рекомендуется после каждого блока Генератор ШИМ дополнительно поставить блок Детектор переднего фронта. Иначе в CAN одно и то же сообщение будет отправляться несколько раз, на каждом проходе диаграммы, пока в регистре начала передачи CAN находится ненулевое значение, которое может сохраняться там до 100мс (время заполнения блоков Генератор ШИМ), тем самым перегружая шину. Проверьте работу своей диаграммы в симуляторе.

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

c7_CAN_byte_ctrl.PNG, 17.29 кб, 670 x 244
c7_CAN_byte_ctrl.PNG 17.29 кб, скачивался 1071 раз, последний раз 2020-06-10 

3 (10-06-2020 16:17:16 отредактировано opel009)

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Спасибо за подсказку с детектором фронта, добавил. Думал почему при просмотре CAN  значения периодов сообщений скачут, сейчас значения в кан четко с заданными шим значениями.

По первой задачи смотрю, наверное я неправильно обозначил саму задачу в первом сообщении, сформулировал неверно в последнем вопросе
ID 255   60 D0 C3 51 10 04 FE FE биты 10 и 04 отправляются оним регистром D5:D4 и задаются в коммутаторе HEX значением
x*0010  и  x*0400
D4 и D5 управляются разными алгоритмами одновременно
D4 управляется КАН сигналом
D5 управляется аналоговыми входами
В диаграмме все работает но значения D5:D4 в кан шине скачут с частотой шимов т.е нужно реализовать выполнение битов D5:D4 в регистре D5:D4 независимо друг от друга и чтобы они не мешали друг другу

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

Иконка вложения положение селектора ком16сдвиги.cfd 10.43 кб, скачивался 206 раз, последний раз 2020-06-10 

4

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Все же, видимо я правильно понял задачу. Значения действительно отправляются в CAN одним регистром, по этом и был предложен алгоритм формирования этого регистра из 2х разных значений, которые могут задаваться любым способом (из CAN, дискретными каналами, константами и т.п.).
Если взять за основу Вариант 1, то сеть "значение D5:D4" нужно подключить к нужному входу коммутатора (блок №5), а вместо констант, подключенных к линиям "значение D5" и "значение D4", подставить нужные значения (байт из регистра CAN, значение из коммутатора и т.п.).

5 (10-06-2020 21:18:49 отредактировано opel009)

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

завел к коммутатору №5 данные блоками побитовое или и сдвигом на два адреса коммутатора, получилось все тоже самое что и в первом сообщении, при приеме кан ID253 данные в шине по D5 D4 так же скачут. Я не понимаю, в блоки побитовое или и сдвигом данные заводятся так же HEX 0*0000 значениями, в итоге получилось то же самое. Так и не понял и в кан не увидел. Не понимаю как задать отдельно D5 0*00 и отдельно D4 0*00?

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

Иконка вложения положение селектора ком16сдвиги.cfd 10.62 кб, скачивался 187 раз, последний раз 2020-06-10 

6

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

вот простенькую схемку собрал, в симуляторе и так и так значения подставляю, все равно значения перебивают друг друга
в этой схеме 4ка скачет, тоже самое и в кан

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

Иконка вложения Безымянный.cfd 2.07 кб, скачивался 196 раз, последний раз 2020-06-10 

7

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Разобрался. Спасибо за подсказки. Коммутаторами на 5й комутатор задал значения

8

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Еще вопрос. Итоговая схема, в основном все хорошо. В симуляторе все работает, на столе кан хаккером смотр и отправляю сигнал, тоже все как задумано. А вот на машине есть глюк.
На одном из аналоговых каналов есть плюсовой сигнал например положительный сигнал на входе 7
в кан авто вижу сигнал по ID 251 00 00 80 00 00 00 этот сигнал должен включать индикатор чек на приборной панели и он включает, только не цикличным миганием. По ID251 00 00 80 00 появляется на 2сек, на приборной панели индикатор чек может несколько раз моргнуть или один раз моргнуть или вообще не загореться, никакой цикличности. Подозреваю что такая реакция связанна с частотами в кан шине,с частотой шима на входе 7, частотой в шине авто по  ID 251 и частотой необходимой ля приборной панели, но как с этим разобраться?

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

Иконка вложения положение селектора ком16сдвиги.cfd 11.12 кб, скачивался 200 раз, последний раз 2020-06-11 

9

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

Причин может быть несколько. Одна из них обсуждалась тут.
Но основная причина, как мне кажется, кроется в неправильности обработки данных, полученных из CAN - не верно организован прием сообщения с ID=0x251. При наличии потока данных в шине, условие отправки корректного значения в CAN будет выполняться на несколько проходов диаграммы, после чего значения в регистрах приема CAN будут замещены данными следующего полученного CAN-сообщения (CAN-фильтры в диаграмме не используются). Примеры приема сообщений рассмотрены в соответствующих разделах wiki.
Исправленная диаграмма во вложении.

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

Иконка вложения c7_положение селектора ком16сдвиги_1.cfd 10.78 кб, скачивался 212 раз, последний раз 2020-06-11 

10

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

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

Причин может быть несколько. Одна из них обсуждалась тут.
Но основная причина, как мне кажется, кроется в неправильности обработки данных, полученных из CAN - не верно организован прием сообщения с ID=0x251. При наличии потока данных в шине, условие отправки корректного значения в CAN будет выполняться на несколько проходов диаграммы, после чего значения в регистрах приема CAN будут замещены данными следующего полученного CAN-сообщения (CAN-фильтры в диаграмме не используются). Примеры приема сообщений рассмотрены в соответствующих разделах wiki.
Исправленная диаграмма во вложении.

Исчерпывающе. Спасибо. На авто все заработало как надо. Я б неделю до этого доходил бы.
А подобное описание автомобильных протоколов есть?
Неплохое описание по J1939 можно найти тут: https://gurtam.com/files/ftp/CAN/j1939-71.pdf

11

Re: рег.уст can d5:d4 управление d5 и d4 независимо друг от друга

opel009 пишет:

...А подобное описание автомобильных протоколов есть?

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