1

Тема: LIN ретранслятор

Здравствуйте. Никак не получается корректно врезаться в шину Lin
От устройства Master к Slave отправляются две строки нулевой длинны с адресами 009 и 00С
В ответ к мастеру уходит уже 2 байта с адреса 009 и 8 байт с адреса 00С
У меня получается так, что поочередно, через раз, то с 009, то с 00С уходит ноль байт.
В мониторе это выглядит как моргание строк. Если в диаграмме отключаю один из адресов, то второй уже возвращает ответ мастеру корректно.
Подскажите пожалуйста, где надо искать ошибку?

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

Иконка вложения lin1-lin2.cfd 15.12 кб, скачивался 324 раз, последний раз 2019-06-13 

2

Re: LIN ретранслятор

Если контроллер должен выступать в качестве нескольких Slave-узлов, т.е. отвечать на запросы MASTERa по нескольким ID, то для корректной работы устройства следует использовать режим MULTISLAVE.

3

Re: LIN ретранслятор

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

4

Re: LIN ретранслятор

niko пишет:

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

В приведенной в сообщении №1 диаграмме режим MULTISLAVE не использован.
Приведите диаграмму, использующую режим MULTISLAVE, с которой возникают трудности.

5

Re: LIN ретранслятор

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

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

Иконка вложения L1L2M.cfd 13.58 кб, скачивался 304 раз, последний раз 2019-06-13 

6

Re: LIN ретранслятор

Продолжаю разбираться дальше. Поэтапно. Если я подставляю статичные данные на отправку, то у меня режим multislave работает нормально. Практически. Иногда проскакивает отправка с адресов 009 и 00С без данных. Примерно один раз на 15 - 20. Эту диаграмму приложил. Соответственно я либо не правильно считываю данные, отправляемые подчиненным устройством, либо неправильно подставляю их на отправку Мастеру

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

Иконка вложения L1L2M_V2.cfd 12.12 кб, скачивался 305 раз, последний раз 2019-06-14 

7

Re: LIN ретранслятор

Вариант решения во вложении (сокращенный, для демонстрации).
Особенность LIN в том, что там очень строгие временные интервалы при запросе MASTERом данных от SLAVE. Данные должны быть готовы к передаче в момент поступления запроса, т.е. заранее.
В приложенной диаграмме контроллер сам, самостоятельно, с определенным интервалом опрашивает SLAVE и размещает полученные данные в слоты MULTISLAVE, подготавливая данные для забора MASTERом. Эти данные постоянно обновляются и MASTER, забирая их будет всегда получать самую последнюю информацию.

UPD: Заменил диаграмму на немного доработанную.

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

Иконка вложения L1L2M+.cfd 7 кб, скачивался 410 раз, последний раз 2019-06-14 

8

Re: LIN ретранслятор

Денис, спасибо за пример! Некоторые моменты не понятны. Буду разбираться.

9

Re: LIN ретранслятор

niko пишет:

Денис, спасибо за пример! Некоторые моменты не понятны. Буду разбираться.

Добрый день! Получилось разобраться? У меня один в один такая же задача. Видимо это климат мерседеса?

10 (24-11-2019 20:50:38 отредактировано tank095)

Re: LIN ретранслятор

Добрый день! Проверил диаграмму, все отлично работает, но столкнулся с проблемой перевода canny в режим энергопотребления.
Отказывается засыпать, видимо из-за единицы в старте ШИМ.
Если единицу в ШИМе менять на регистры чтения, активности на шине Lin или активности интерфейсов, то засыпает хорошо, но просыпаться или не хочет или уже диаграмма работает не стабильно, видимо для ШИМ нужен стабильная 1, а из регистров чтения значение скачет от 0 до 1.  Что можете посоветовать?!

11

Re: LIN ретранслятор

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

12

Re: LIN ретранслятор

Сделал 2 варианты. есть ли смысл еще добавить задержку вкл?

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

Иконка вложения выкл и вкл.png 45.29 кб, скачивался 86 раз, последний раз 2019-11-25 

Иконка вложения выкл.png 39.63 кб, скачивался 88 раз, последний раз 2019-11-25 

13

Re: LIN ретранслятор

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

14

Re: LIN ретранслятор

Мне кажется я вчера так пробовал, не помогало, но я ставил задержку меньше

15

Re: LIN ретранслятор

tank095 пишет:

Мне кажется я вчера так пробовал, не помогало, но я ставил задержку меньше

Удалось ли решить проблему с работой режима пониженного энергопотребления?

16

Re: LIN ретранслятор

Денис, добрый день! Приболел, попробовать не успел, напишу после праздников!

17

Re: LIN ретранслятор

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

Вариант решения во вложении (сокращенный, для демонстрации).
Особенность LIN в том, что там очень строгие временные интервалы при запросе MASTERом данных от SLAVE. Данные должны быть готовы к передаче в момент поступления запроса, т.е. заранее.
В приложенной диаграмме контроллер сам, самостоятельно, с определенным интервалом опрашивает SLAVE и размещает полученные данные в слоты MULTISLAVE, подготавливая данные для забора MASTERом. Эти данные постоянно обновляются и MASTER, забирая их будет всегда получать самую последнюю информацию.

UPD: Заменил диаграмму на немного доработанную.

Денис, подскажите пожалуйста, в приложенной вами диаграмме другие ID кроме 0x0009 и 0x000C передаются от мастеру к слейву ? Или обмен идёт только по этим двум ID ?

18

Re: LIN ретранслятор

pro-1 пишет:

...другие ID кроме 0x0009 и 0x000C передаются от мастеру к слейву ?

Все сообщения от Master передаются Slave, в том числе и с ID, отличными от 0x0009 и 0x000C.