1 (14-04-2020 02:14:42 отредактировано Станислав)

Тема: Алгоритм отправки нескольких LIN сообщений

Добрый день! Почти две недели изучаю и стараюсь применить возможности Cannу7(контроллер у меня в наличии) и видимо не обойдусь без помощи, так как никакого IT образования и опыта в создании подобных алгоритмов у меня нет))

В целом задача у меня такая:
1.Выделить CAN сигнал с угла поворота руля, разделить данные на 7 диапазонов (центр +- 15 градусов и далее по три диапазона влево и право) Если затея  будет успешна, возможно будет разбито на большее количество диапазонов.
2. Использовать полученные данные для управления двумя шаговыми моторами(левый и правый) с чипом AMIS-30621 по шине LIN.

Итак
1. данные с машины я получил, примерно разобрался с ними, далее дело анализа и выделения нужных мне диапазонов. Этот вопрос откладываем на потом. Сначала попробуем управлять мотором на столе от +12v по входным каналам 0-7.

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

Прошу помощи правильно создать алгоритм и прописать регистры.
Заранее нашёл тест и изучил принцип работы моторов, если нужно дам ссылку на этот обзор. но его не сложно найти набрав в поиске "Управление корректором фар по шине LIN" (моторы от KIA CEED)


Мне нужно отправлять 12 команд. нумерация команд соответствует номерам входов в приложенной диаграмме на Коммутаторе 16:1. ( ID и данные команд уже предварительно прописаны, в процессе калибровки буду их изменять для получения нужных положений моторов)

1- поддержание постоянной связи с мотором(SLAVE) с периодом не реже чем каждые 999мс, чтобы не дать мотору уснуть на протяжении всего времени работы устройства.
Старт работы будет завязан на включение ближнего и\или дальнего света. сейчас "на столе" это будет +12v на входе канала "0"

После первого старта нужно один раз отправить 4 команды (номер 2,3,4,5 в коммутаторе) для установки начальных параметров (напряжения, тока, и тп) моторов.

Далее мы можем отправлять отправлять команды положения моторов (номер 6,7,8,9,10,11,12 в коммутаторе). В режиме теста "на столе" управлением служат +12v в на входах с 1го по 7ой канал соответственно. После удачной калибровки управлением будут служить углы поворота руля.



Уважаемый администратор, надеюсь достаточно понятно описал ситуацию, если что спрашивайте уточняющие вопросы, прошу посмотреть то что я нарисовал и помочь сдвинуться с мёртвой точки, а в идеале поспособствовать удачному завершению моего эксперимента, заранее спасибо, жду ответа))

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

Иконка вложения LIN.cfd 10.95 кб, скачивался 15 раз, последний раз 2020-04-14 

2

Re: Алгоритм отправки нескольких LIN сообщений

Чтобы полностью разобраться в данным проекте, особенно в части управления двигателем, нужно больше времени, но по отправке сообщений в LIN можно говорить уже сейчас.
Диаграмма составлена в целом хорошо. Есть несколько предложений по ней.
Мне кажется, что было бы лучше инициализацию двигателя выделить отдельно и переместить на сообщения 1,2,3,4. Поддержание связи с двигателем сделать зависимой от того, отправлялись ли какие-либо сообщения в течении последних 900мс. Для экспериментов на столе лучше сделать отправку сообщений управления двигателем по управляющим сигналам с каналов контроллера 1-7 однократными (по детектору переднего фронта). Кроме того, для экспериментов, в зависимости от характеристик оборудования, может понадобиться подтяжка LIN к +5В (может быть включена с помощью константы конфигурации LIN).
Диаграмма с перечисленными выше доработками во вложении.

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

Иконка вложения LIN_1.cfd 12.11 кб, скачивался 16 раз, последний раз 2020-04-15 

3

Re: Алгоритм отправки нескольких LIN сообщений

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

... может понадобиться подтяжка LIN к +5В (может быть включена с помощью константы конфигурации LIN).

Все так, только к +12В. В приложенной вами диаграмме встроенная подтяжка включена программно (см.рисунок)
Но в отдельных редких случаях (большая длина кабеля, большое число устройств на линии, высокий уровень помех), ее можно усилить при помощи внешнего резистора 1 кОм к +12В.

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

pu.png, 2.6 кб, 377 x 57
pu.png 2.6 кб, скачивался 14 раз, последний раз 2020-04-15 

4 (16-04-2020 03:33:17 отредактировано Станислав)

Re: Алгоритм отправки нескольких LIN сообщений

Огромное спасибо что помогли прописать алгоритмы отправки сообщений! Поддержка у вас ТОП!
Сразу не заработало, то в этом мой косяк, чуть не правильно изначально написал последовательность сообщений. денёк поковырявшись всё заработало))
главной ошибкой была отправка 4-х начальных сообщений. По сути, первые два это "GetFullStatus", и после них нужно было отправить "0x07D", чтобы получить ответ от моторов, И потом уже отправлять вторую пачку сообщений с начальными параметрами моторов.

Уточню для тех кому может быть это полезно: Я использую два мотора( движение лево и право) по этому у меня в первой и второй пачке по два сообщения. Если использовать полный набор из всех четырёх моторов (лево-право и вверх-вниз) то этих сообщений будет два раза по четыре .

Прикладываю исправленную диаграмму, в ней учтены четыре мотора, для чистоты эксперимента.  Я соответственно буду её укорачивать до двух моторов. Единственную проблему этой диаграммы вижу в том, если нужно использовать 4 мотора, или задавать много команд положений, то для этого мало входов в коммутаторе 16:1 и количество команд ограничено. Если нужно больше то скорее всего её придётся сильно переделывать, но к счастью для моей сегодняшней задачи это не нужно.)))

в общем всё двигается и работает. теперь откалибрую положения моторов и начну сращивать с CAN данными положения руля. скорее всего ещё обращусь за советом по этому поводу.

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

Иконка вложения отправка LIN_на моторы Kia Ceed AFLS.cfd 12.03 кб, скачивался 13 раз, последний раз 2020-04-16