Вопросы по реализации алгоритма ДПКВ

Обсуждаем прошивки, алгоритмы работы в разных режимах (например, алгоритм работы автоподсоса).
Наборы тюнингованых прошивок МПСЗ SECU (заточенных под конкретную конфигурацию двигателя)
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Разбираюсь с исходником ckps.c
Условия: ДПКВ60-2, DWELL_CONTROL
Есть вопросы:
1. Насколько точно алгоритм способен поддерживать установленный УОЗ? Понятно, что в установившемся режиме на постоянных оборотах можно ожидать высокой точности. А как это выглядит в динамике? Например, разгон или остановка авто.

Было бы замечательно, если кто-то смог выложить запись сигналов ДПКВ+каналы зажигания от старта до остановки ДВС хотя бы на холостом ходу в формате анализатора Saleae Logic.
2. Я так понимаю, что сигналы включения катушек формируются с минимальным неперекрытием каналов зажигания в 2 зуба? Это означает, что в любой момент времени может работать на накопление только 1 канал?
3. Точность окончания накопления без DWELL_CONTROL будет выше?
4. С какой целью восстанавливаются пропущенные зубья? Т.е. программно формируются 59-й и 60-й зуб? Если да, то почему нельзя рассмотреть выбитые зубы просто как один длинный?
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

Re: Вопросы по реализации алгоритма ДПКВ

Post by STC »

Для обеспечения максимальной точности в динамике, алгоритм опирается на зубья, а для этого как раз и восстанавливаются пропущенные.
p.s. Код для ДПКВ, который сейчас лежит в репозитории уже устарел и я его весной-летом почти полностью переписал.
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

В момент пропущенных зубов если изменяется скорость(ускорение), то восстанавливай-не восстанавливай, об ошибке узнаем только на первом реальном зубе. Или я что-то недопонимаю?

Мне важно понять не только как устроено, но и почему так.
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Удалось записать сигнал с ДПКВ. Увидел много нового и интересного.
Attachments
ДПКВ запись.zip
Saleae logic 1.2.10
(48.95 KiB) Downloaded 221 times
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Отвечу на свои вопросы.
На примере Января ошибку синхронизации можно получить около 0.2-0.3 угловых градуса. Предполагаю, что это без учёта аномалий.
Алгоритм с восстановлением выбитых зубов получается компактный(следовательно быстрый) и имеет меньше веток с условиями.
При восстановлении углового счётчика по межзубным интервалам вычислительные затраты меньше чем если считать в иных единицах измерения. Фактически для принятия решения требуется только операция сравнения (>=).
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Имитатор ДПКВ 60-2 реального двигателя.

Сигнал с датчика автомобиля записан логическим анализатором, данные импортированы в программу микроконтроллера. По ним синтезируется логический сигнал.
Имитируются следующие события: запуск двигателя, срыв синхронизации ДПКВ(примерно через 2,8 сек от начала), остановка двигателя.
Можно использовать для отладки алгоритмов на столе.

Контроллер Atmega328
Кварц 20МГц
Выходной сигнал снимается с вывода D2.
Attachments
dpkv_simu.zip
(161.76 KiB) Downloaded 169 times
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

В исходнике ckps.c перезагрузка актуальных значений в буфер происходит за 66 градусов перед ВМТ. Чем объясняется выбор именно такого угла, а скажем не 60 или 90 градусов?
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

Re: Вопросы по реализации алгоритма ДПКВ

Post by STC »

sergeyk wrote:В исходнике ckps.c перезагрузка актуальных значений в буфер происходит за 66 градусов перед ВМТ. Чем объясняется выбор именно такого угла, а скажем не 60 или 90 градусов?
Объясняется максимально возможным требуемым УОЗ 60°.
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Сколько времени уходит на обработчик прерывания по захвату(вычисления и прочее)?
sergeyk
Posts: 20
Joined: 12 Aug 2017, 19:35
Your CAR: ВАЗ2110 бензиновый
SECU version: official SECU-3L
Been thanked: 4 times

Re: Вопросы по реализации алгоритма ДПКВ

Post by sergeyk »

Ковырялся в исходнике интересного проекта Megasquirt, нашёл непонятные режимы зажигания:
--------------------------------------------------------
// User inputs - 1 set in flash, 1 in ram
typedef struct {
unsigned char no_cyl,no_skip_pulses, // skip >= n pulses at startup
ICIgnOption, // Bit 0: Input capture: 0 = falling edge, 1 rising
// Bit 1: 1= trigger return mode in cranking; for this
// mode, set bit 0 to normal edge, then opp.edge used in cranking.
// trigger return not applicable to EDIS
// Bits 2-3: spare
// Bits 4-7: 0 = standard - charge coil, spark
// 1 = Ford EDIS option
// 2 = EDIS with multispark

spkout_hi_lo, // Ign Output compare: 0 = spark low (gnd)
max_coil_dur,max_spk_dur,DurAcc; // ms x 10
--------------------------------------------------------
Кто-нибудь может пояснить чем эти режимы между собой различаются?
Post Reply

Return to “Прошивки”