1

Тема: Lin-шлюз

Ребят, можете накидать какую-нибудь простейшую диаграмму для понятия основы программирования контроллера в режиме lin-шлюза?
Нужно оторвать устройство от lin'а, и передавать в него сообщения со всеми идентификаторами без изменения кроме одного.
Само устройство никакой обратной связи не подаёт. Т.е. фильтрация сообщений только в одном направлении.

Например есть 3 идентификатора: 0х0001, 0х0002 и 0х0003
0001 и 0002 передаются без изменений (причём их длина не известна).
0003 обрабатывается в диаграмме и передаётся с изменением какого-нибудь бита (длина этого сообщения известна... пусть будет 32). 

Заранее спасибо!

2

Re: Lin-шлюз

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

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

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

Подробно о работе драйвера LIN в различных режимах: http://wiki.canny.ru/index.php?title=CA … %D1%80_LIN

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

При этом, самым важным для понимания является то, что в отличие от CAN-шлюза, интерфейсы LIN контроллера работающегов режиме LIN-шлюза не должны быть синхронизированы. То есть LIN 2 может и должен периодически посылать запросы и пакеты "оторванному" устройству в своем, независимом от работы LIN1 ритме, задаваемом например ФБ "Генератор ШИМ".

Какие ID запрашивать, какие посылать, с какой периодичностью и на какие отвечать - зависит от конфигурации конкретной LIN-сети которую вы будете "разрывать". Изучить работу LIN сети и получить необходимые для реализации LIN-шлюза данные, можно при помощи утилиты Canny CAN/LIN-монитор: http://wiki.canny.ru/index.php?title=CA … N)_monitor

длина этого сообщения известна... пусть будет 32

Максимальный объем данных передаваемый в одном сообщении LIN составляет восемь байт.

3

Re: Lin-шлюз

А если моё устройство, которое необходимо оторвать, отвечало мастеру по 5-ти ID, то я полагаю, мне придётся задействовать 2 контроллера?)))
Или как-то можно обойтись "малой кровью"?

4

Re: Lin-шлюз

Или как-то можно обойтись "малой кровью"?

Данные передающего LIN буфера (буферОВ в режиме multislave), включая ID, можно динамически менять во время работы диаграммы. Подстроившись под период опроса мастером конкретных slave-ID, если диаграмма не очень большая и продолжительность одного её цикла исполнения невелика, можно в один и тот же передающий буфер, циклически, в разные моменты времени помещать данные с разными ID.