1

Тема: Canny pico 5.3 работа с байтами разных IDL и режим энергосбережения.

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

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

2)Взять зажигание на вход по аналогу. Когда на проводе есть плюс - диаграмма работает, когда нет - режим энергосбережения. может кто нить проверить, правильно ли диаграмму смастерил, подопытной машины уже нет, надо к ее приезду максимально подготовиться. диаграмма цз_зажигание_вход

3)Самый красивый - взять и зажигание из кана. тут у меня не получилось понять, как заставить половину диаграммы смотреть только байт с одним ИД пакетов, а другую половину с другим ИД (соответственно мониторить и зажигу и нажатия). По этому собрал все в кучу, но она не взлетела чего то у меня при модуляции и подаче нужных данных. Посмотрите пожалуйста что я сделал не так. Верхняя часть диаграммы соответственно смотрит зажигание, нижняя кнопки откр/закр. диаграмма цз_зажигание_can

Очень не хватает функции если. (если поймал нужный пакет, то продолжаем движение диаграммы, иначе уходим в режим энергосбережения.) может я туплю и не нашел как это просто реализовать доступными функциями, а может и реализовать просто сложно.
Пытался это реализоваться как то внутренними блоками, но в них оказалось нельзя запихать чтение.

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

Иконка вложения ЦЗ_зажигание_can.cfd 5.45 кб, скачивался 102 раз, последний раз 2022-08-18 

Иконка вложения ЦЗ_зажигание_вход.cfd 3.54 кб, скачивался 143 раз, последний раз 2022-08-18 

2

Re: Canny pico 5.3 работа с байтами разных IDL и режим энергосбережения.

Вариант с CAN следовало строить на основании примеров из документации, в частности полученные данные сохранять в D-триггерах и использовать их в дальнейшем. Драйвер CAN имеет один набор регистров, соответственно при получении следующего сообщения предыдущие значения в регистрах будут заменены на новые. D-триггер позволяет эту проблему решить (см.вложение).
Функция ЕСЛИ может быть реализована на основе Коммутаторов: на вход "Индекс" подается условие, а на других входах и выходах - значения в соответствии с алгоритмом, например так: https://canny.ru/docs/tips_tricks/const … condition/

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

Иконка вложения c53pico_ЦЗ_зажигание_can.cfd 3.93 кб, скачивался 118 раз, последний раз 2022-08-19 

3

Re: Canny pico 5.3 работа с байтами разных IDL и режим энергосбережения.

Спасибо за информацию, пойду дальше разбираться.

4 (20-08-2022 06:55:44 отредактировано single_player)

Re: Canny pico 5.3 работа с байтами разных IDL и режим энергосбережения.

Чуть чуть не могу уловить логику работы д-тригера в данном примере. вернее она не должна тут использоваться...
разберем части диаграммы "зажигание включено"
Имеем пакет с idl 010, биты к примеру 03 02 01 00 00 00 00 00.
на входе в д тригер у нас вход Д будет иметь "0302", вход Е "1" - диаграмма выполнилась и дальше пошло "0302"
потом вы выкл зажигание и у нас больше нет пакетов с idl 010 в шине.
Следуя из описания д тригера рисунок 5, шаг  5 у меня на выходе с тригера у меня так будет висеть "0302" и canny будет думать что зажигание включено и дальше выполнять всю диаграмму.

PS. Проверил, так и есть, зажигание будет для canny включенным пока не придет пакет с id 010 c другими данными.

Нижнюю часть диаграммы от такого спасает то что нужные нам биты имеют 3 варианта, 01/02/12, соответственно открыто/закрыто/нейтраль. но если по какой то причине прервется подача пакета с ид 358 на варианте с битом 01 или 02, то я посажу один из выходов на массу и цз просто залипнет. хорошо если машина откроется и будет стоять открытой, а может же и закрыться и будет давить на закрытие..... но это очень маловероятный расклад.

и да, как в вашем примере обыграть энергосбережение... самый просто способ я как понимаю напрямую завязать
«Регистр контроля активности интерфейсов контроллера»-"Регистр режима пониженного энергопотребления"

в остальном все понятно почему использовалось.

Дополню сразу вопрос, можно как нить использовать светодиод в разных вариациях одновременно. например что бы выдавать состояние прибора в данный момент. мигает редко раз в 2 секунды - энергосбережение, три мырга и пауза - зажигание, сработал выход - затяжной сигнал и прочие варианты. программа не дала оставить светодиод больше одного раза в диаграмме.

5

Re: Canny pico 5.3 работа с байтами разных IDL и режим энергосбережения.

single_player пишет:

Чуть чуть не могу уловить логику работы д-тригера в данном примере...

К сожалению, нам ничего не известно о том, как происходит обмен данными в вашей CAN-шине, в частности, логика и частота следования тех или иных сообщений. На этот вопрос мог бы ответить ЛОГ CAN-шины.

single_player пишет:

Следуя из описания д тригера рисунок 5, шаг  5 у меня на выходе с тригера у меня так будет висеть "0302" и canny будет думать что зажигание включено и дальше выполнять всю диаграмму.
PS. Проверил, так и есть, зажигание будет для canny включенным пока не придет пакет с id 010 c другими данными.

В общем, это логично. Если в отношении зажигания сделана привязка к конкретному значению определенного байта определенного сообщения, можно предположить, что его значение меняется в зависимости от ситуации и, очевидно, сообщения с этим ID в шине, возможно, следуют периодически.
Возможно, если сообщение с ID=0x010 появляется однократно или вообще, обмен данными по шине происходит только при включенном зажигании и есть опасения что это состояние "залипнет", то следует привязаться к чему-нибудь другому. На этот вопрос мог бы ответить ЛОГ CAN-шины.

single_player пишет:

...да, как в вашем примере обыграть энергосбережение... самый просто способ я как понимаю напрямую завязать «Регистр контроля активности интерфейсов контроллера»-"Регистр режима пониженного энергопотребления"...

Это, наверное, самый простой способ. Пример использования энергосбережения приведен в документации: https://canny.ru/docs/c53pico/resources … trebleniya

single_player пишет:

...Дополню сразу вопрос, можно как нить использовать светодиод в разных вариациях одновременно. например что бы выдавать состояние прибора в данный момент. мигает редко раз в 2 секунды - энергосбережение, три мырга и пауза - зажигание, сработал выход - затяжной сигнал и прочие варианты. программа не дала оставить светодиод больше одного раза в диаграмме.

Можно. Регистр записи может присутствовать на диаграмме только в одном экземпляре, но с помощью коммутаторов или их групп (например: https://canny.ru/docs/tips_tricks/const … ondition/) ему можно передавать нужные значения, в зависимости от ситуации.