Поточний час: 28 бер 2024, 18:31

Часовий пояс: UTC + 2 години



Почати нову тему Відповісти на тему  [ Повідомлень: 16 ]  На сторінку Пред.  1, 2
Автор Повідомлення
 Заголовок повідомлення: Re: CCS2 для самодельщиков
#126827Повідомлення 23 трав 2022, 11:46 
Власник електромобіля, член клубу
Аватара користувача
Не в мережі

Дякував (ла) 144 Подякували 132
Мій електротранспорт: Renault Zoe
Хочу електротранспорт: Renault Kangoo
Не прошло и года, как снова получилось взяться за тему :lachtot:

В общем опишу прогресс и немного теории, потом красивенько на блог оформлю со схемами и командами.

Купили с Димой Липко 2 модуля на пробу PLC Stamp Mini2 на базе чипа QCA7000, там обвязка с трансформторами, флеш и настройки. Сама контора писала куски драйвера в ядро, хорошие ребята.

Модули работают по SPI, протокол можно подсмотреть как по доке, так и в коде ядра. Есть родная поддержка уже в сборках Raspberry Pi.

Начали со сборки ШИМ-а ±12В, потом методом упрощения макета для разработки именно софта оказалось, что можно ШИМ пока выкинуть и связываться просто по DC и не морочить себе голову пока. Сейчас связываюсь между землей и +5В. Модуль станции имеет отдельный контакт для сигналов о прохождении напряжения в сети через 0, это используется для синхронизации устройств в сети, когда их много. Опытным путем установлено, что для разработки и без него тоже работает.

Итого минимальный стенд получился просто 2 модуля по SPI без ничего лишнего. Пока подкинул их на RaspberryPi, поскольку дрова есть и если бы что не работало, то точно через кривые руки подключения. Выглядит так:
Додаткові файли:
f4c272d3-2a8b-4139-8961-e4e58b8f3cf7.jpeg
f4c272d3-2a8b-4139-8961-e4e58b8f3cf7.jpeg [ 232.93 КБ | Переглядів: 597 ]


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

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

По итогу имеем вот такую сессию соединения через инструмент эмуляции SLAC (сторона машины тут):
Код:
pi@rpi2:~ $ pev
pev: pev_cm_set_key: --> CM_SET_KEY.REQ
pev: pev_cm_set_key: <-- CM_SET_KEY.CNF
pev: DisconnectedState: Probing ...
pev: pev_cm_slac_param: --> CM_SLAC_PARAM.REQ
pev: pev_cm_slac_param: <-- CM_SLAC_PARAM.CNF
pev: UnmatchedState: Sounding ...
pev: pev_cm_start_atten_char: --> CM_START_ATTEN_CHAR.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_mnbc_sound: --> CM_MNBC_SOUND.IND
pev: pev_cm_atten_char: <-- CM_ATTEN_CHAR.IND
pev: pev_cm_atten_char: --> CM_ATTEN_CHAR.RSP
pev: slac_connect: Average attenuation (32) less than limit (40) from 58 groups
pev: slac_connect: 23:20:1F:22:1F:20:25:1F:1F:23:1F:1F:1F:1E:1D:1D:1F:1E:1E:1E:1F:1F:1F:1F:1F:1F:20:1F:20:20:20:20:20:20:22:21:20:21:21:21:21:22:21:21:21:21:21:21:21:25:23:21:23:22:23:24:27:38
pev: UnmatchedState: Matching ...
pev: pev_cm_slac_match: --> CM_SLAC_MATCH.REQ
pev: pev_cm_slac_match: <-- CM_SLAC_MATCH.CNF
pev: MatchedState: Connecting ...
pev: pev_cm_set_key: --> CM_SET_KEY.REQ
pev: pev_cm_set_key: <-- CM_SET_KEY.CNF
pev: MatchedState: Charging (0) ...


pev: MatchedState: Disconnecting ...
pev: pev_cm_set_key: --> CM_SET_KEY.REQ
pev: pev_cm_set_key: <-- CM_SET_KEY.CNF


Дальнейшие шаги такие: продолжаю писать библиотеку для МК (mbed, Arduino, libopencm3) поддержки модулей, сразу же туда пишу пакеты SLAC. После этого этапа у меня исключительно софтовая разработка пойдет, пока Дима занимается железной частью для машины.


Повернутися до початку
 Профіль  
Відповісти цитуючи  
Показати повідомлення за:  Поле сортування  
Почати нову тему Відповісти на тему  [ Повідомлень: 16 ]              На сторінку Пред.  1, 2

Часовий пояс: UTC + 2 години


Хто зараз на конференції

Зараз цей форум переглядають: немає зареєстрованих користувачів і гості: 22


Ви не можете створювати нові теми
Ви не можете відповідати на повідомлення
Ви не можете редагувати свої повідомлення
Ви не можете видаляти свої повідомлення
Ви не можете додавати додаткові файли

Найти:
Створено на основі phpBB® Forum Software © phpBB Group