Page 2 of 3

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 04 Sep 2013, 12:32
by STC
При использовании прошивок для синхронизации от ДХ, ДХ можно подключать как на вход PS, так и на вход ДПКВ (нужно поставить галочку "вход ДХ на ДПКВ"). Но текущие прошивки для ДХ (последний релиз) не позволяют использовать датчик скорости даже если ДХ подключен к ДПКВ, а датчик скорости к PS. В будущем я попробую сделать специальные версии прошивок для ДХ с поддержкой датчика скорости.

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 06 Sep 2013, 17:24
by Sergey_A100
Где в коде менеджера зашиты значения по оси Х или У таблиц? Подкинули таблицы на мой мотор, там сетка оборотов другая, в прошивке вроде как нашел где править: файл funconv.c

.......................

//данные массивы констант задают сетку по оси оборотов, для рабочей карты и карты ХХ.
/**Array which contains RPM axis's grid bounds */
PGM_DECLARE(int16_t f_slots_ranges[16]) = {852,987,1120,1400,1590,1850,2070,2360,2800,3100,3528,4092,4535,5000,5583,6345};
/**Array which contains RPM axis's grid sizes */
PGM_DECLARE(int16_t f_slots_length[15]) = {135,133, 280, 190, 260, 220, 290, 440, 300, 428, 564, 443, 465, 583,762};

...................................

Пересобрал прошивку с новыми константами - а в менеджере все по старому - он эти данные берет из прошивки или где-то в исходниках прописаны константы ?

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 06 Sep 2013, 20:05
by STC
Вот тут в менеджере.
https://github.com/ashabelnikov/secu3ma ... /SECU3IO.h

С прошивкой это еще не все. Нужно еще поменять константу в коде функции work_function()
Вот код. Значение 600

Code: Select all

if (f < 0) {f = 0; rpm = 600;}
  fp1 = f + 1;
Аналогично для dling_function(), там тоже вбито значение из 0-й ячейки массива.

Если вас не затруднит, то вы можете выложить кривые для своего мотора тут, а мы добавим их на сайт (и на форум).

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 07 Sep 2013, 13:30
by Sergey_A100
Понял, теперь делаем разную разбивку по оборотам для рабочей карты и карты холостого хода:

PGM_DECLARE(int16_t f_slots_ranges[16]) = {852,987,1120,1400,1590,1850,2070,2360,2800,3100,3528,4092,4535,5000,5583,6345};
PGM_DECLARE(int16_t f_slots_length[15]) = {135,133, 280, 190, 260, 220, 290, 440, 300, 428, 564, 443, 465, 583,762};

//данные массивы констант задают сетку по оси оборотов, для карты ХХ.
PGM_DECLARE(int16_t f_slots_ranges_idle[16]) = {300,700,735,770,800,840,950,1180,1500,1800,2400,3200,4100,4500,5000,6345};
PGM_DECLARE(int16_t f_slots_length_idle[15]) = {400, 35, 35, 30, 40,110,230, 320, 300, 600, 800, 900, 400, 500,1345};

ну и в функциях:

int16_t idling_function(struct ecudata_t* d)
{
int8_t i;
int16_t rpm = d->sens.inst_frq;

//находим узлы интерполяции, вводим ограничение если обороты выходят за пределы
for(i = 14; i >= 0; i--)
if (d->sens.inst_frq >= PGM_GET_WORD(&f_slots_ranges_idle)) break;

if (i < 0) {i = 0; rpm = f_slots_ranges_idle[0];}

return simple_interpolation(rpm,
_GB(&d->fn_dat->f_idl), _GB(&d->fn_dat->f_idl[i+1]),
PGM_GET_WORD(&f_slots_ranges_idle), PGM_GET_WORD(&f_slots_length_idle));
}

и

//находим узлы интерполяции, вводим ограничение если обороты выходят за пределы
for(f = 14; f >= 0; f--)
if (rpm >= PGM_GET_WORD(&f_slots_ranges[f])) break;

//рабочая карта работает на 854-х оборотах и выше
if (f < 0) {f = 0; rpm = f_slots_ranges[0];}
fp1 = f + 1;

return bilinear_interpolation(rpm, discharge,
_GB(&d->fn_dat->f_wrk[l][f]),
_GB(&d->fn_dat->f_wrk[lp1][f]),
_GB(&d->fn_dat->f_wrk[lp1][fp1]),
_GB(&d->fn_dat->f_wrk[l][fp1]),
PGM_GET_WORD(&f_slots_ranges[f]),
(gradient * l),
PGM_GET_WORD(&f_slots_length[f]),
gradient);

а вот с менеджером проблемма - установил боланд компилятор, установил сМаке - но СМаке компилятор не видет - перекомпилировать немогу :( и если для АВР среду настроить - более менее понятно как, то для Боланда - тяжко - где копать?

Понял надо одновременно и студия и боланд и сМаке. Пересобрал поменяв рад в файле. но при запуске все осталось как было :(

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 08 Sep 2013, 23:42
by STC
Borland тебе не нужен для твоей задачи. Borland нужен только чтобы собрать 2 DLL, исходные файлы которых находятся в каталогах Chart2d, Chart3d. В этих каталогах есть Makefile-ы для сборки.
Если в системе установлено несколько разных сред разработки или компиляторов, то они могут друг-другу мешать. Для этого при запуске make нужно либо указывать полный путь к нему, или запускать его из консоли от соответствующей среды разработки/компилятора.

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 11 Sep 2013, 14:58
by Sergey_A100
Сделал указанные изменения - перекомпилировал менеджер - изменения значений сетки оборотов не происходит.

Тоже вроде как понял - в файле ButtonsPanel.cpp есть функция OnViewWorkMap. В ней вызывается окошко рабочей карты. Так вот в параметрах вызова значение сетки оборотов задает функция:

float* CButtonsPanel::GetRPMGrid(void)
{
return m_rpm_grid_values;
}

а где в эту переменную прописывается сетка - ХЗ.

Решилось заменой вызова функции на прямую ссылку на SECU3IO::work_map_rpm_slots.

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 13 Sep 2013, 08:40
by Sergey_A100
Еще вопрос - при редактировании таблиц расположенных в RAM - шкала оборотов определяется константой work_map_rpm_slots из файла SECU3IO.h. А при работе с таблицами на закладке "данные прошивки" - подставляется стандартный ряд от 600 до 7500. Что надо поправить? Эта шкала берется из файла прошивки или еще откуда то?

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 14 Sep 2013, 16:32
by STC
Посмотри в файле FirmwareDataMediator.cpp есть глобальная переменная-массив rpmGrid
Я забыл про него.

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 13 Jan 2014, 12:51
by Sergey_A100
В какую структуру будет грамотно добавить статичную переменную delay из модуля hall.c? Необходимо для реализации формирования задержки искры от любого фронта шторки.

Re: Вопросы по установке SECU на Audi 100 5 цилиндров

Posted: 13 Jan 2014, 13:14
by STC
В файле hall.c есть структура hallstate_t представленная глобальной переменной hall. Эта структура содержит все переменные состояния, используемые в прерываниях. Добавляйте свои переменные в эту структуру.