Расчёт фактора нагрузки на двигатель

Про байтики и логику ЭБУ
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: Расчёт фактора нагрузки на двигатель

Post by nikll »

Мне главное не то чем мерить ) главное что результаты те же, а то что коэфициенты заранее поперемножал так и пофиг. Мерить можно хоть в мм.рт.ст. только смысл? Результат будет тот же, просто в барах как то привычней.
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

nikll wrote:Мне главное не то чем мерить ) главное что результаты те же, а то что коэфициенты заранее поперемножал так и пофиг. Мерить можно хоть в мм.рт.ст. только смысл? Результат будет тот же, просто в барах как то привычней.
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
Вот я че и говорю... не доросли еще до физмоделей. рановато. пока общие знания надо тянуть.
3,482 это подгон под ответ.
все бы ничего, но ответ то не правильный! (100+мс время впрыска - мои глаза, да вы хоть один мотор то по диагностике видели?)..
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: Расчёт фактора нагрузки на двигатель

Post by nikll »

Maxi wrote:
nikll wrote:Мне главное не то чем мерить ) главное что результаты те же, а то что коэфициенты заранее поперемножал так и пофиг. Мерить можно хоть в мм.рт.ст. только смысл? Результат будет тот же, просто в барах как то привычней.
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
Вот я че и говорю... не доросли еще до физмоделей. рановато. пока общие знания надо тянуть.
3,482 это подгон под ответ.
все бы ничего, но ответ то не правильный! (100+мс время впрыска - мои глаза, да вы хоть один мотор то по диагностике видели?)..

к примеру из хелпа по j5spt: 0,473 * АД[kPa]*760/101,3 / (273+Тcharge[C])
зачем переводить в мм.рт.ст. давление? (760 это видимо атмосферное давление), чтобы тут же попытаться его перевести в килопаскали обратно (/101,3)? и без учета газовой постоянной подобрать коэффициент 0,473 как говорится "под ответ" ошибившись при этом на 0,473 * 760 / 101,3 = 3,548667325; 1 - 3,548667325 / 3,482 = 0,019 ~= 2% и эта ошибка будет идти по всем табицам в виде пропорциональной.

P.S. надо бы еще определится с коэффициентом
3,480682214 - по удельной газовой постоянной из вики (1000/287,3)
3,548667325 - вычислил из констант михееникова
3,482 - подобрал реверсом из известных значений плотности воздуха по темпиратуре со стандартным давлением

так же этот коэффициент зависит от влажности воздуха (через газовую постояную), видимо поэтому они и отличаются
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

nikll wrote: к примеру из хелпа по j5spt: 0,473 * АД[kPa]*760/101,3 / (273+Тcharge[C])
зачем переводить в мм.рт.ст. давление?
это не ко мне вопрос а к тому кто это писал - естественно переводить не зачем. и в реальных системах этого бреда нет.
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Расчёт фактора нагрузки на двигатель

Post by AndreyB »

Угол Опережение Зажигания (УОЗ) уехал в тему про УОЗ http://rusefi.com/forum/viewtopic.php?f=6&t=222
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Попробовал при включенном FPU посчитать наполнение. Расчёт занял ~840 нс при частоте 100 МГц.

Code: Select all

#include "cmsis/stm32f4xx.h"

const float R = 0.28705f;
volatile float P;
volatile float T;
volatile float V;
volatile float VE;
volatile float m;
volatile float AFR;
volatile float Inj_flow;
volatile unsigned short Inj_dead;
volatile unsigned int Inj_pw;

void InitVars(void)
{
    P = 30.0f; // kPa
    T = 293.15f; // K
    V = 499.5f; // cm3
    VE = 0.30f;
    AFR = 14.70f;
    Inj_flow = 3.1250f; // g/s
    Inj_dead = 700; // us
}

int main(void)
{
    InitVars();

    for (;;)
    {
        m = (P * V) / (R * T) * VE; // mg/stroke
        Inj_pw = (unsigned int)(m / (AFR * Inj_flow) * 1000.0f) + Inj_dead; // us
    }

    return 0;
}
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Расчёт фактора нагрузки на двигатель

Post by AndreyB »

Sergey89 wrote:Попробовал при включенном FPU посчитать наполнение. Расчёт занял ~840 нс при частоте 100 МГц.
10нс это 1 тик процессора на 100 МГц? Т.е. 84 тика? На пять умножений плюс деление плюс это всё-таки С, а не ассемблер - по-моему вполне себе цифра.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Ага. 84 тика примерно. Но там ещё на этой частоте что-то около 4 wait state при чтении с флеша. Нужно на тему prefetch поинтересоваться, может при 0 wait state будет ещё быстрее.
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: Расчёт фактора нагрузки на двигатель

Post by frig »

Только надо будет брать еще значения из нескольких таблиц, считать температуру и так далее. Тут, в общем то, ничего сложного и не должно было быть.
skype: frig_frig
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

Sergey89 wrote:Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
не пойму какой в этом смысл - все входные и выходные значения все равно целочисленны и их разрядность и точность фиксированна.
float - лишнее звено.
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Расчёт фактора нагрузки на двигатель

Post by AndreyB »

Maxi wrote:
Sergey89 wrote:Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
не пойму какой в этом смысл - все входные и выходные значения все равно целочисленны и их разрядность и точность фиксированна.
float - лишнее звено.
С чего это все входные значение целочисленны? Что мешает карте памяти содержать дробные значения?
Температура ОЖ она что, тоже целочисленна разве?

оффтопик: а ты в какой временной зоне? Уж больно сейчас ночь в РФ.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Да тут имеется ввиду, что с того же АЦП ты всё равно принимаешь данные целочисленные и в таймеры ты загружаешь целочисленные значения.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

russian wrote:
Maxi wrote:
Sergey89 wrote:Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
не пойму какой в этом смысл - все входные и выходные значения все равно целочисленны и их разрядность и точность фиксированна.
float - лишнее звено.
С чего это все входные значение целочисленны? Что мешает карте памяти содержать дробные значения?
с того что карта памяти промежуточное значение а не входное.
а входное это дискретное время и диксретные коды прочитанные с АЦП.
и все они целочисленны.
Температура ОЖ она что, тоже целочисленна разве?
с температурой ож все очень просто. она тоже целочисленная (как кстати и температура воздуха).
среднестатистический автомобильный датчик измеряющий температуру имеет диапазон -40 +150 и относительную погрешность 1.5-2 ГРАДУСА!
добавляем сюда погрешность квантования, погрешность резистора с ним в паре и погрешность опорного источника - и получаем что в реальном мире температуру не возоможно измерить точнее 3-х градусов...
таким образом наиболее выгодное представление температуры 1 БАЙТ! T=X-40
оффтопик: а ты в какой временной зоне? Уж больно сейчас ночь в РФ.
кто в Москве ночью спит ;)
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Расчёт фактора нагрузки на двигатель

Post by XDA »

а чтобы добавить, скажем, 1 знак после запятой - достаточно хранить в целочисленной переменной значение умноженное на 10
в редакторе - просто учитывать это и выводить с соответствующей поправкой.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

XDA wrote:а чтобы добавить, скажем, 1 знак после запятой - достаточно хранить в целочисленной переменной значение умноженное на 10
в редакторе - просто учитывать это и выводить с соответствующей поправкой.
все верно.
Да и вообще любые доли это всего лишь не наблюдаемые абстракции. типа как "полтора землекопа". процессору они не нужны поэтому все эти астракции надо выносить в софт который занимается визуализацией.
не имеет смысла хранить и оперировать 4-х байтными числами где прекрасно хватает и 1 байта. это оверхед по памяти в 4 раза.
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: Расчёт фактора нагрузки на двигатель

Post by nikll »

С float просто удобней ) а т.к. в f4 есть FPU то разница в производительности очень скромная.
Понятно что нет смысла его пихать везде где только можно, но в промежуточных расчетах вполне имеет право присутсвовать. Это упростит написание кода.
Из копеечных оптимизаций еще можно отказаться от деления ) заменив его сдвигами и магическими числами ))) но нафига? у нас тут не c509. Разница в производительности как между кукурузником и миг25.
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Расчёт фактора нагрузки на двигатель

Post by AndreyB »

Завёл простой и практичный топик следующего шага табличного топлива - http://rusefi.com/forum/viewtopic.php?f=6&t=226
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Расчёт фактора нагрузки на двигатель

Post by XDA »

nikll wrote:С float просто удобней ) а т.к. в f4 есть FPU то разница в производительности очень скромная.
Понятно что нет смысла его пихать везде где только можно, но в промежуточных расчетах вполне имеет право присутсвовать. Это упростит написание кода.
Из копеечных оптимизаций еще можно отказаться от деления ) заменив его сдвигами и магическими числами ))) но нафига? у нас тут не c509. Разница в производительности как между кукурузником и миг25.
кроме того добавляется время конвертации из целочисленного в флоат и обратно. оверхид вырастет...
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Расчёт фактора нагрузки на двигатель

Post by AndreyB »

XDA wrote:кроме того добавляется время конвертации из целочисленного в флоат и обратно. оверхид вырастет...
Друзья, вы верно шутите.

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

У меня просто есть опыт перечитывания моего личного кода через пять лет после его написания - у меня волосы дыбом вставали от меня самого, когда уже не помнишь, о чём этот дикий шайтан. Но очевидно дело во мне :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: Расчёт фактора нагрузки на двигатель

Post by nikll »

Ну про перечитывание старого кода все могут рассказать много ужастиков ) и дело тут не в математике с фиксированной точкой ;) просто мы все развиваемся, и те решения что какзались хорошими пять лет назад сейчас кажутся как минимум смешными.
Нам не надо руками конвертировать float в int и обртано, за нас это сделает FPU. Чем спорить о производительнсти стоит взять и провести тестирование, вот когда будут данные о том что вариант с float уступает вот на столько то процентов или точность его сильно ниже вот тогда и стоит поднимать панику.
Признатся честно меня по началу тоже в ступор ввело использования плавающей точки на мк, но протестив я понял что stm32F4 это не тоже самое что старый восьмибитник, тут смысл есть.
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Расчёт фактора нагрузки на двигатель

Post by XDA »

если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: Расчёт фактора нагрузки на двигатель

Post by nikll »

XDA wrote:если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
Ты обсалютно прав, но причем тут это?
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Расчёт фактора нагрузки на двигатель

Post by XDA »

nikll wrote:
XDA wrote:если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
Ты обсалютно прав, но причем тут это?
Просто маленький комментарий :)
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Да это похоже комментарий в эту тему http://rusefi.com/forum/viewtopic.php?f=6&t=225 :)
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: Расчёт фактора нагрузки на двигатель

Post by frig »

Да это похоже комментарий в эту тему
Кстати это было первое, что я заметил и рекомендовал попаравить :D
skype: frig_frig
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

russian wrote:
XDA wrote:кроме того добавляется время конвертации из целочисленного в флоат и обратно. оверхид вырастет...
Друзья, вы верно шутите.

Значит накопление ошибки в арифметике фиксированной точки мы не замечаем, а цену конвертации целого в плавающий видим.
Мы все прекрасно замечаем.
Белый шум от АЦП у нас в 10м разряде а ошибка накапливается в 16м.
т.е. чуть более чем на 6 лишних разрядов..
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Расчёт фактора нагрузки на двигатель

Post by Sergey89 »

Есть ли заметное влияние состава смеси на наполнение от эффекта охлаждения при испарении?
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Расчёт фактора нагрузки на двигатель

Post by Maxi »

Sergey89 wrote:Есть ли заметное влияние состава смеси на наполнение от эффекта охлаждения при испарении?
для любого монотоплива - нет.
для FLEX топлив - да.
Mad Max
Posts: 187
Joined: Wed Nov 13, 2013 12:34 pm
Location: Ukraine, Kharkov

Re: Расчёт фактора нагрузки на двигатель

Post by Mad Max »

Чтобы не было обеднения смеси на турбомоторах с МАФ при нажатии тапки, имеется таблица добавки импулса по открытию дросселя. Иначе и Мицыки и Субари горели как семечки. Причем налив там идет добротный.
Мы эти таблицы тоже корректируем. С завода смеси очень богатые (часто богаче 10,0). после правильной настройки мотор именно при нажатии на газ начинает детонить. Добавляем бенза в "trottle tip enrichment" и проблема решена.

Но всеравно считаю что нужно считать нагрузку тупо по ДАД. А на температуру мотора, воздуха и желательно барометрическое давление делать поправочные таблицы, как это у всех.
Например у Пектелей в ралли именно так и сделано. А во впуске стоит датчик температуры воздуха.
Турба крепко греет воздух, эффективность кулера всегда разная. Поверьте, это сильно влияет на массу заряда.
Кстати по этому ДТ еще и углы корректировать надо.
Skype- max.mad486
Post Reply