Расчёт фактора нагрузки на двигатель
Re: Расчёт фактора нагрузки на двигатель
Мне главное не то чем мерить ) главное что результаты те же, а то что коэфициенты заранее поперемножал так и пофиг. Мерить можно хоть в мм.рт.ст. только смысл? Результат будет тот же, просто в барах как то привычней.
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: Расчёт фактора нагрузки на двигатель
Вот я че и говорю... не доросли еще до физмоделей. рановато. пока общие знания надо тянуть.nikll wrote:Мне главное не то чем мерить ) главное что результаты те же, а то что коэфициенты заранее поперемножал так и пофиг. Мерить можно хоть в мм.рт.ст. только смысл? Результат будет тот же, просто в барах как то привычней.
число 3,482 это константа для пересчета обьема воздуха в массу по давлению и обьему при нормальном атмосферном давлении
3,482 это подгон под ответ.
все бы ничего, но ответ то не правильный! (100+мс время впрыска - мои глаза, да вы хоть один мотор то по диагностике видели?)..
Re: Расчёт фактора нагрузки на двигатель
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 - подобрал реверсом из известных значений плотности воздуха по темпиратуре со стандартным давлением
так же этот коэффициент зависит от влажности воздуха (через газовую постояную), видимо поэтому они и отличаются
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: Расчёт фактора нагрузки на двигатель
это не ко мне вопрос а к тому кто это писал - естественно переводить не зачем. и в реальных системах этого бреда нет.nikll wrote: к примеру из хелпа по j5spt: 0,473 * АД[kPa]*760/101,3 / (273+Тcharge[C])
зачем переводить в мм.рт.ст. давление?
- AndreyB
- Site Admin
- Posts: 14333
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Расчёт фактора нагрузки на двигатель
Угол Опережение Зажигания (УОЗ) уехал в тему про УОЗ 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Расчёт фактора нагрузки на двигатель
Попробовал при включенном 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;
}
- AndreyB
- Site Admin
- Posts: 14333
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Расчёт фактора нагрузки на двигатель
10нс это 1 тик процессора на 100 МГц? Т.е. 84 тика? На пять умножений плюс деление плюс это всё-таки С, а не ассемблер - по-моему вполне себе цифра.Sergey89 wrote:Попробовал при включенном FPU посчитать наполнение. Расчёт занял ~840 нс при частоте 100 МГц.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Расчёт фактора нагрузки на двигатель
Ага. 84 тика примерно. Но там ещё на этой частоте что-то около 4 wait state при чтении с флеша. Нужно на тему prefetch поинтересоваться, может при 0 wait state будет ещё быстрее.
Re: Расчёт фактора нагрузки на двигатель
Только надо будет брать еще значения из нескольких таблиц, считать температуру и так далее. Тут, в общем то, ничего сложного и не должно было быть.
skype: frig_frig
Re: Расчёт фактора нагрузки на двигатель
Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
Re: Расчёт фактора нагрузки на двигатель
не пойму какой в этом смысл - все входные и выходные значения все равно целочисленны и их разрядность и точность фиксированна.Sergey89 wrote:Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
float - лишнее звено.
- AndreyB
- Site Admin
- Posts: 14333
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Расчёт фактора нагрузки на двигатель
С чего это все входные значение целочисленны? Что мешает карте памяти содержать дробные значения?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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Расчёт фактора нагрузки на двигатель
Да тут имеется ввиду, что с того же АЦП ты всё равно принимаешь данные целочисленные и в таймеры ты загружаешь целочисленные значения.
Re: Расчёт фактора нагрузки на двигатель
с того что карта памяти промежуточное значение а не входное.russian wrote:С чего это все входные значение целочисленны? Что мешает карте памяти содержать дробные значения?Maxi wrote:не пойму какой в этом смысл - все входные и выходные значения все равно целочисленны и их разрядность и точность фиксированна.Sergey89 wrote:Интересно было с float посмотреть. Теперь понятно, что можно отказываться от целочисленной арифметики во многих местах.
float - лишнее звено.
а входное это дискретное время и диксретные коды прочитанные с АЦП.
и все они целочисленны.
с температурой ож все очень просто. она тоже целочисленная (как кстати и температура воздуха).Температура ОЖ она что, тоже целочисленна разве?
среднестатистический автомобильный датчик измеряющий температуру имеет диапазон -40 +150 и относительную погрешность 1.5-2 ГРАДУСА!
добавляем сюда погрешность квантования, погрешность резистора с ним в паре и погрешность опорного источника - и получаем что в реальном мире температуру не возоможно измерить точнее 3-х градусов...
таким образом наиболее выгодное представление температуры 1 БАЙТ! T=X-40
кто в Москве ночью спитоффтопик: а ты в какой временной зоне? Уж больно сейчас ночь в РФ.
Re: Расчёт фактора нагрузки на двигатель
а чтобы добавить, скажем, 1 знак после запятой - достаточно хранить в целочисленной переменной значение умноженное на 10
в редакторе - просто учитывать это и выводить с соответствующей поправкой.
в редакторе - просто учитывать это и выводить с соответствующей поправкой.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Расчёт фактора нагрузки на двигатель
все верно.XDA wrote:а чтобы добавить, скажем, 1 знак после запятой - достаточно хранить в целочисленной переменной значение умноженное на 10
в редакторе - просто учитывать это и выводить с соответствующей поправкой.
Да и вообще любые доли это всего лишь не наблюдаемые абстракции. типа как "полтора землекопа". процессору они не нужны поэтому все эти астракции надо выносить в софт который занимается визуализацией.
не имеет смысла хранить и оперировать 4-х байтными числами где прекрасно хватает и 1 байта. это оверхед по памяти в 4 раза.
Re: Расчёт фактора нагрузки на двигатель
С float просто удобней ) а т.к. в f4 есть FPU то разница в производительности очень скромная.
Понятно что нет смысла его пихать везде где только можно, но в промежуточных расчетах вполне имеет право присутсвовать. Это упростит написание кода.
Из копеечных оптимизаций еще можно отказаться от деления ) заменив его сдвигами и магическими числами ))) но нафига? у нас тут не c509. Разница в производительности как между кукурузником и миг25.
Понятно что нет смысла его пихать везде где только можно, но в промежуточных расчетах вполне имеет право присутсвовать. Это упростит написание кода.
Из копеечных оптимизаций еще можно отказаться от деления ) заменив его сдвигами и магическими числами ))) но нафига? у нас тут не c509. Разница в производительности как между кукурузником и миг25.
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
- AndreyB
- Site Admin
- Posts: 14333
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Расчёт фактора нагрузки на двигатель
Завёл простой и практичный топик следующего шага табличного топлива - 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Расчёт фактора нагрузки на двигатель
кроме того добавляется время конвертации из целочисленного в флоат и обратно. оверхид вырастет...nikll wrote:С float просто удобней ) а т.к. в f4 есть FPU то разница в производительности очень скромная.
Понятно что нет смысла его пихать везде где только можно, но в промежуточных расчетах вполне имеет право присутсвовать. Это упростит написание кода.
Из копеечных оптимизаций еще можно отказаться от деления ) заменив его сдвигами и магическими числами ))) но нафига? у нас тут не c509. Разница в производительности как между кукурузником и миг25.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
- AndreyB
- Site Admin
- Posts: 14333
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Расчёт фактора нагрузки на двигатель
Друзья, вы верно шутите.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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Расчёт фактора нагрузки на двигатель
Ну про перечитывание старого кода все могут рассказать много ужастиков ) и дело тут не в математике с фиксированной точкой просто мы все развиваемся, и те решения что какзались хорошими пять лет назад сейчас кажутся как минимум смешными.
Нам не надо руками конвертировать float в int и обртано, за нас это сделает FPU. Чем спорить о производительнсти стоит взять и провести тестирование, вот когда будут данные о том что вариант с float уступает вот на столько то процентов или точность его сильно ниже вот тогда и стоит поднимать панику.
Признатся честно меня по началу тоже в ступор ввело использования плавающей точки на мк, но протестив я понял что stm32F4 это не тоже самое что старый восьмибитник, тут смысл есть.
Нам не надо руками конвертировать float в int и обртано, за нас это сделает FPU. Чем спорить о производительнсти стоит взять и провести тестирование, вот когда будут данные о том что вариант с float уступает вот на столько то процентов или точность его сильно ниже вот тогда и стоит поднимать панику.
Признатся честно меня по началу тоже в ступор ввело использования плавающей точки на мк, но протестив я понял что stm32F4 это не тоже самое что старый восьмибитник, тут смысл есть.
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: Расчёт фактора нагрузки на двигатель
если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Расчёт фактора нагрузки на двигатель
Ты обсалютно прав, но причем тут это?XDA wrote:если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: Расчёт фактора нагрузки на двигатель
Просто маленький комментарийnikll wrote:Ты обсалютно прав, но причем тут это?XDA wrote:если при выходе за диапазон карты выдавать ошибку или -1 вы заглохните.
обычно делается таким образом, что при выходе за диапазон выдаётся значение из края таблицы.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Расчёт фактора нагрузки на двигатель
Да это похоже комментарий в эту тему http://rusefi.com/forum/viewtopic.php?f=6&t=225
Re: Расчёт фактора нагрузки на двигатель
Кстати это было первое, что я заметил и рекомендовал попаравитьДа это похоже комментарий в эту тему
skype: frig_frig
Re: Расчёт фактора нагрузки на двигатель
Мы все прекрасно замечаем.russian wrote:Друзья, вы верно шутите.XDA wrote:кроме того добавляется время конвертации из целочисленного в флоат и обратно. оверхид вырастет...
Значит накопление ошибки в арифметике фиксированной точки мы не замечаем, а цену конвертации целого в плавающий видим.
Белый шум от АЦП у нас в 10м разряде а ошибка накапливается в 16м.
т.е. чуть более чем на 6 лишних разрядов..
Re: Расчёт фактора нагрузки на двигатель
Есть ли заметное влияние состава смеси на наполнение от эффекта охлаждения при испарении?
Re: Расчёт фактора нагрузки на двигатель
для любого монотоплива - нет.Sergey89 wrote:Есть ли заметное влияние состава смеси на наполнение от эффекта охлаждения при испарении?
для FLEX топлив - да.
Re: Расчёт фактора нагрузки на двигатель
Чтобы не было обеднения смеси на турбомоторах с МАФ при нажатии тапки, имеется таблица добавки импулса по открытию дросселя. Иначе и Мицыки и Субари горели как семечки. Причем налив там идет добротный.
Мы эти таблицы тоже корректируем. С завода смеси очень богатые (часто богаче 10,0). после правильной настройки мотор именно при нажатии на газ начинает детонить. Добавляем бенза в "trottle tip enrichment" и проблема решена.
Но всеравно считаю что нужно считать нагрузку тупо по ДАД. А на температуру мотора, воздуха и желательно барометрическое давление делать поправочные таблицы, как это у всех.
Например у Пектелей в ралли именно так и сделано. А во впуске стоит датчик температуры воздуха.
Турба крепко греет воздух, эффективность кулера всегда разная. Поверьте, это сильно влияет на массу заряда.
Кстати по этому ДТ еще и углы корректировать надо.
Мы эти таблицы тоже корректируем. С завода смеси очень богатые (часто богаче 10,0). после правильной настройки мотор именно при нажатии на газ начинает детонить. Добавляем бенза в "trottle tip enrichment" и проблема решена.
Но всеравно считаю что нужно считать нагрузку тупо по ДАД. А на температуру мотора, воздуха и желательно барометрическое давление делать поправочные таблицы, как это у всех.
Например у Пектелей в ралли именно так и сделано. А во впуске стоит датчик температуры воздуха.
Турба крепко греет воздух, эффективность кулера всегда разная. Поверьте, это сильно влияет на массу заряда.
Кстати по этому ДТ еще и углы корректировать надо.
Skype- max.mad486