[rusEfi] ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Юнит тесты ожили! Функциональные пока падают, я могу их чуть позже второй раз пнуть на всякий случай
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
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
попинал - всё равно падают, видимо всё-таки падаютrussian 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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Попробовал запускать автотесты через симулятор.russian wrote:попинал - всё равно падают, видимо всё-таки падают
Выродило мне почти 10 Мб логов, 99% из которых составляет бешено повторяющий ворнинг "WARNING: unrealistic CLT 2147483648.48"...
В итоге оно запнулось вот на чём:
А сам симулятор ругается вот так:java.lang.IllegalStateException: rpm change did not happen: 200, actual 360.0
at com.rusefi.IoUtil.changeRpm(IoUtil.java:91)
at com.rusefi.AutoTest.test2003DodgeNeon(AutoTest.java:154)
at com.rusefi.AutoTest.mainTestBody(AutoTest.java:42)
at com.rusefi.AutoTest.main(AutoTest.java:483)
Code: Select all
sim_warning trigger not happy current %d/%d/%d expected %d/%d/%d
sim_warning trigger decoding issue. expected %d/%d/%d got %d/%d/%d
Так что либо я что-то не то делаю, либо одно из двух...java.lang.IllegalStateException: VBatt Expected 12.0 but got 0.0
at com.rusefi.AutoTest.assertEquals(AutoTest.java:449)
at com.rusefi.AutoTest.assertEquals(AutoTest.java:444)
at com.rusefi.AutoTest.test2003DodgeNeon(AutoTest.java:157)
at com.rusefi.AutoTest.mainTestBody(AutoTest.java:42)
at com.rusefi.AutoTest.main(AutoTest.java:483)
Сейчас ещё один вариантец попробую - может, поможет... См. PR...
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Тем временем, остаются ещё две бяки:
1) Неправильно работает логика определения isCranking.
Нужно сделать, что если RPM добрался хотя бы раз до порога cranking.rpm, то уже не возвращать cranking==true даже если обороты потом упадут ниже порога. И восстанавливать флаг cranking только при падении оборотов до нуля (или, как вариант, меньше некоего дополнительного порога, примерно равного частоте вращения стартёра - скажем, 300).
А сейчас получается такая ситуация: движок заводится с положением РХХ на cranking, обороты достигают порога, РХХ переключается в положение manual (призакрывается), обороты немного падают ниже порога, опять считается режим cranking, РХХ переключается на положение cranking (приоткрывается), обороты снова растут выше порога, и т.д...
Понятное дело, что это лишь тестовая ситуация, связанная с немного неправильными настройками, но, если подумать, обороты могут упасть по разным причинам. И нужно ли при этом возвращаться в режим cranking (у которого свой впрыск, УОЗ, РХХ - т.е. всё заточено на запуск)?..
В общем, предлагаю изменить это поведение, и сделать режим cranking однократным, и только для запуска двигателя, как в СЕКУ.
2) Блокировка стартёра (баг fsio) - займусь завтра.
1) Неправильно работает логика определения isCranking.
Нужно сделать, что если RPM добрался хотя бы раз до порога cranking.rpm, то уже не возвращать cranking==true даже если обороты потом упадут ниже порога. И восстанавливать флаг cranking только при падении оборотов до нуля (или, как вариант, меньше некоего дополнительного порога, примерно равного частоте вращения стартёра - скажем, 300).
А сейчас получается такая ситуация: движок заводится с положением РХХ на cranking, обороты достигают порога, РХХ переключается в положение manual (призакрывается), обороты немного падают ниже порога, опять считается режим cranking, РХХ переключается на положение cranking (приоткрывается), обороты снова растут выше порога, и т.д...
Понятное дело, что это лишь тестовая ситуация, связанная с немного неправильными настройками, но, если подумать, обороты могут упасть по разным причинам. И нужно ли при этом возвращаться в режим cranking (у которого свой впрыск, УОЗ, РХХ - т.е. всё заточено на запуск)?..
В общем, предлагаю изменить это поведение, и сделать режим cranking однократным, и только для запуска двигателя, как в СЕКУ.
2) Блокировка стартёра (баг fsio) - займусь завтра.
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
0)
падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
1) в принципе гистерезис мы любим, но вот именно для cranking мне кажется нужно поступить по другому: во-первых, в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться, факт таких низких оборотов на заведённом двигателе это следствие какого-то другого косяка. Один из косяков - резкий переход между режимами заводки и работы. Я бы чинил причины - например https://github.com/rusefi/rusefi/issues/417
но во-вторых может быть и да, можно и решить что заводка прямо после работы случиться не может и может быть ты и прав и правда нужно оставаться в режиме работы до остановки
2) Блокировка стартёра -это да
падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
слишком сильно не переживай - я вернусь и починю. Как вариант там можно просто из консоли команды попосылать и посмотреть - тест этот в принципе читается. Ну и железо у тебя совсем даже есть[java] postMessage EngineState: 543: gap=1.00/1.00/1.00 @ 14 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=1.00/1.00/1.00 @ 16 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=0.99/1.00/1.00 @ 18 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=1.00/0.99/1.00 @ 20 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=1.00/1.00/0.99 @ 22 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=0.99/1.00/1.00 @ 24 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] postMessage EngineState: 543: gap=1.00/0.99/1.00 @ 26 while expected 1.50/2.50 and 0.00/100000.00 error=1
[java] RPM change [200] executed in 40003
[java] Sending packet 4F 00 00 64 01
[java] Waiting for 2 byte(s): output channels header
[java] java.lang.IllegalStateException: rpm change did not happen: 200, actual 0.0
[java] at com.rusefi.IoUtil.changeRpm(IoUtil.java:91)
[java] at com.rusefi.AutoTest.testBmwE34(AutoTest.java:92)
[java] at com.rusefi.AutoTest.mainTestBody(AutoTest.java:48)
[java] at com.rusefi.RealHwTest.runRealHardwareTest(RealHwTest.java:59)
[java] at com.rusefi.RealHwTest.main(RealHwTest.java:23)
1) в принципе гистерезис мы любим, но вот именно для cranking мне кажется нужно поступить по другому: во-первых, в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться, факт таких низких оборотов на заведённом двигателе это следствие какого-то другого косяка. Один из косяков - резкий переход между режимами заводки и работы. Я бы чинил причины - например https://github.com/rusefi/rusefi/issues/417
но во-вторых может быть и да, можно и решить что заводка прямо после работы случиться не может и может быть ты и прав и правда нужно оставаться в режиме работы до остановки
2) Блокировка стартёра -это да
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
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Дело в том, что на эмуляторе тоже была именно эта ошибка, и я смог её устранить у себя с помощью сегодняшнего PR.russian wrote:падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
[java] java.lang.IllegalStateException: rpm change did not happen: 200, actual 0.0
Может, нужно снова пнуть блок? Оно вообще как, автоматически прошивается и перезапускается?
При обычной городской езде очень даже может быть квазинормальная ситуация: например, при заезде на бровку и неумелой работой с педалью газа, т.е. обороты могут упасть под нагрузкой. В городе, бывает, приходится ездить на одном сцеплении (паркинг и т.п.), двигатель может даже заглохнуть (особенно у новичков-водителей - если думать о будущей широкой аудитории проекта).russian wrote:в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться
Наконец, если мы хотим сделать крутую тройную авторегулировку для ХХ (а мы хотим! ), то ей тоже нужен запас по оборотам, особенно в меньшую сторону, иначе авторегулировка будет то включаться, то выключаться - ведь добиться идеальных параметров авторегулировки сходу не получится почти ни у кого (хотя лично я бы делал её не на ПИД, а на сетях Кохонена )...
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Делайте что нибудь))) я приеду, запаяю hip и cj125 и буду делать проводку новую и пытаться стартовать на прометее. А для этого надо что бы все что отвечает за работу двигателя было и работало хорошо, не хочу дальше сидеть на секуandreika wrote:Дело в том, что на эмуляторе тоже была именно эта ошибка, и я смог её устранить у себя с помощью сегодняшнего PR.russian wrote:падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
[java] java.lang.IllegalStateException: rpm change did not happen: 200, actual 0.0
Может, нужно снова пнуть блок? Оно вообще как, автоматически прошивается и перезапускается?
При обычной городской езде очень даже может быть квазинормальная ситуация: например, при заезде на бровку и неумелой работой с педалью газа, т.е. обороты могут упасть под нагрузкой. В городе, бывает, приходится ездить на одном сцеплении (паркинг и т.п.), двигатель может даже заглохнуть (особенно у новичков-водителей - если думать о будущей широкой аудитории проекта).russian wrote:в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться
Наконец, если мы хотим сделать крутую тройную авторегулировку для ХХ (а мы хотим! ), то ей тоже нужен запас по оборотам, особенно в меньшую сторону, иначе авторегулировка будет то включаться, то выключаться - ведь добиться идеальных параметров авторегулировки сходу не получится почти ни у кого (хотя лично я бы делал её не на ПИД, а на сетях Кохонена )...
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Что касается переменной wasRunning и порогов cranking, то, как вариант, я предлагаю вот что:
1) добавить конфиг-настройку для нижнего порога переключения cranking.lowRpm (пусть будет 0 по умолчанию), и переименовать верхнюю границу (cranking.rpm => cranking.highRpm).
2) всю логику определения cranking и running перенести внутрь RpmCalculator и переделать его.
А именно,
а) вынести тайминговый код из RpmCalculator::isRunning() в отдельный поток, чтобы getRpm() возвращал только текущее значение переменной. (Заодно попробовать избавиться от некрасивой mockRpm, она ещё и без аксессора!);
б) добавить в RpmCalculator состояние двигателя (enum { IDLING, CRANKING, RUNNING }) и инлайн-геттеры для него, и позаменять всякие макросы типа isCrankingR() на геттеры. Т.е. вот такое вот позаменять:
в) внутри RpmCalculator::setRpmValue() сделать логику изменения состояния двигателя по гистерезису, используя жёсткую пороговую логику, типа такой:
Заодно можно будет поубирать rpm из аргументов всяких getInjectionDuration(), getBaseFuel(), поскольку у нас теперь быстрый getRpm()...
1) добавить конфиг-настройку для нижнего порога переключения cranking.lowRpm (пусть будет 0 по умолчанию), и переименовать верхнюю границу (cranking.rpm => cranking.highRpm).
2) всю логику определения cranking и running перенести внутрь RpmCalculator и переделать его.
А именно,
а) вынести тайминговый код из RpmCalculator::isRunning() в отдельный поток, чтобы getRpm() возвращал только текущее значение переменной. (Заодно попробовать избавиться от некрасивой mockRpm, она ещё и без аксессора!);
б) добавить в RpmCalculator состояние двигателя (enum { IDLING, CRANKING, RUNNING }) и инлайн-геттеры для него, и позаменять всякие макросы типа isCrankingR() на геттеры. Т.е. вот такое вот позаменять:
Code: Select all
int rpm = getRpmE(engine);
int is_cranking = isCrankingR(rpm);
int is_running = rpm > 0 && !is_cranking;
Code: Select all
if (rpmValue == 0)
state = IDLING;
else if (rpmValue != NOISY_RPM) {
if (rpmValue < cranking.lowRpm)
state = CRANKING;
else if (rpmValue > cranking.highRpm)
state = RUNNING;
else if (state == IDLING) // robustness!
state = CRANKING;
}
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
быстрый RPM! а насколько быстрый?
уже когда-то пробовал понять, как часто происходит расчет rpm в других системах (в той же secu) - один раз в оборот, или чаще (количество зубьев же позволяет)
и насколько полезно иметь представление о скорости в течение цикла. можно ли будет после предложенных изменений вычислять пропуски воспламенения по цилиндрам?
уже когда-то пробовал понять, как часто происходит расчет rpm в других системах (в той же secu) - один раз в оборот, или чаще (количество зубьев же позволяет)
и насколько полезно иметь представление о скорости в течение цикла. можно ли будет после предложенных изменений вычислять пропуски воспламенения по цилиндрам?
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Не-не, не RPM быстрый, а метод getRpm(). Речь идёт о банальном рефакторинге кода с микрооптимизацией, для унификации определения режимов работы двигателя и возможности гистерезиса по оборотам. И если Андрей заинтересуется и реализует 1-й пункт, то я смогу доделать остальное.puff wrote:быстрый RPM!
-
- Posts: 69
- Joined: Sun Sep 08, 2013 2:33 pm
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
А можно мне пару вопросов а то я что то много пропустил.
Желтая платка это отдельная разводка платы от автора темы?
Вопрос как она себя ведёт при запуске на подсевшем аккумуляторе?
У франкензо моего проблемы выражаются в том что просто не видит опорные сигналы а точнее VR датчика коленвала, сейчас уже не помню точно но примерно проблема выглядит так когда кручу стартером на подсевшем аккумуляторе и напряжение в момент кручения 11в или ниже то VR импульсы отсутствуют. Так вот почитав тему автора и видя что меняя конденсаторы и кое где код был достигнут хороший результат по rpm, хочется попросить совета как побороть сей недуг иначе зимой просто никак не завестись...
Желтая платка это отдельная разводка платы от автора темы?
Вопрос как она себя ведёт при запуске на подсевшем аккумуляторе?
У франкензо моего проблемы выражаются в том что просто не видит опорные сигналы а точнее VR датчика коленвала, сейчас уже не помню точно но примерно проблема выглядит так когда кручу стартером на подсевшем аккумуляторе и напряжение в момент кручения 11в или ниже то VR импульсы отсутствуют. Так вот почитав тему автора и видя что меняя конденсаторы и кое где код был достигнут хороший результат по rpm, хочется попросить совета как побороть сей недуг иначе зимой просто никак не завестись...
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Пнул заново - оно автоматические по коммиту и прошивает и запускает, см. например https://github.com/rusefi/rusefi/blob/master/misc/build_current_bundle.bat
отдельный поток для RPM меня немного испугал, но я читал по-диагонали. Я бы просто обновлял бы какое-то состояние в одном методе, и проверял бы прошлое состояние - небольшая такая микро стейт-машина.
Идеальный для меня вариант - отдельно PR для рефакторинга и отдельно PR для функционального
А еще надо бы тесты починить всё-таки. Я уже скоро домой.
отдельный поток для RPM меня немного испугал, но я читал по-диагонали. Я бы просто обновлял бы какое-то состояние в одном методе, и проверял бы прошлое состояние - небольшая такая микро стейт-машина.
Идеальный для меня вариант - отдельно PR для рефакторинга и отдельно PR для функционального
А еще надо бы тесты починить всё-таки. Я уже скоро домой.
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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Речь идёт о вот этом коде:russian wrote:отдельный поток для RPM меня немного испугал, но я читал по-диагонали.
Code: Select all
efitick_t nowNt = getTimeNowNt();
if (ENGINE(stopEngineRequestTimeNt) != 0) {
if (nowNt - ENGINE(stopEngineRequestTimeNt)< 3 * US2NT(US_PER_SECOND_LL)) {
return false;
}
}
if (lastRpmEventTimeNt == 0) {
return false;
}
bool result = nowNt - lastRpmEventTimeNt < US2NT(2 * US_PER_SECOND_LL); // Anything below 60 rpm is not running
if (!result) {
notRunnintNow = nowNt;
notRunningPrev = lastRpmEventTimeNt;
}
Отлично! Я подготовлю PR, если ты поможешь с созданием cranking.lowRpm и переименованием cranking.rpm => cranking.highRpm. Сможешь?russian wrote:Идеальный для меня вариант - отдельно PR для рефакторинга и отдельно PR для функционального
К сожалению, я у себя не вижу этих ошибок и плохо знаю код триггеров, сорри...russian wrote:А еще надо бы тесты починить всё-таки. Я уже скоро домой.
Жёлтая платка - это собственная разработка под названием Prometheus. Вот ссылка: http://rusefi.com/forum/viewtopic.php?f=4&t=1215ItaloManyak wrote:А можно мне пару вопросов а то я что то много пропустил.
Желтая платка это отдельная разводка платы от автора темы?
И схема, и разводка этой платы серьёзно отличается от "официальных" плат rusEFI. Кроме того, это пока лишь первая ревизия, сделанная наспех за пару недель, и неизвестно, какие проблемы ещё могут проявиться...
Минимальное исходное напряжение аккумулятора, на котором я заводил, было 11.7В, с просадкой при прокручивании до 9.8В.ItaloManyak wrote:Вопрос как она себя ведёт при запуске на подсевшем аккумуляторе? ...меняя конденсаторы и кое где код был достигнут хороший результат по rpm, хочется попросить совета как побороть сей недуг иначе зимой просто никак не завестись...
Тут нужно смотреть, какие обороты при этом даёт стартёр. Сигнал ДПКВ зависит не от напряжения как такового, а от минимальных оборотов. Кроме того, раньше у прошивки было ограничение в 120 оборотов, ниже которого обороты не были видны. Возможно, это как-то поможет?
-
- Posts: 69
- Joined: Sun Sep 08, 2013 2:33 pm
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
То что нужно! Ибо при прокручивании если у меня просаживается до 10.7В (а у автора 9.8В ) сигналы не видны. Если у меня исходное напряжение ниже 12В можно не пробовать она не заводится.Минимальное исходное напряжение аккумулятора, на котором я заводил, было 11.7В, с просадкой при прокручивании до 9.8В.
Тут нужно смотреть, какие обороты при этом даёт стартёр. Сигнал ДПКВ зависит не от напряжения как такового, а от минимальных оборотов. Кроме того, раньше у прошивки было ограничение в 120 оборотов, ниже которого обороты не были видны. Возможно, это как-то поможет?
Пойду покурю схематику Prometheus ибо я раньше грешил на MAX9926 или его обвязку по питанию.
Ещё вопрос а блютус модуль работает/опробован?
Last edited by ItaloManyak on Sat Jul 01, 2017 11:19 am, edited 1 time in total.
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
а репер какой? а то вот на субаре с редкими зубами, помню, тоже проблема вылезала. если время между зубами слишком большое (а на просаженной батарее стартер крутит медленнее, время увеличивается) - срабатывает хардварный порог в максе.
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Исследовал проблему fsio и блокировки стартёра.
Посмотрим упрощённый call graph, в порядке вызова функций:
Что мы видим? Во-первых, вначале вызывается applyFsioConfiguration(), которая заполняет fsioLogics[], а после этого вызывается initFsioImpl(), которая стирает fsioLogics[]. И поэтому юзерский fsio не работает.
Во-вторых, что чтение конфигурации почему-то вызывается дважды. Что-то в этом есть неправильное...
Пока создал PR по поводу фикса fsio, а конфигурацию не трогал - это пусть Андрей решает, нужно ли убирать второе чтение...
Посмотрим упрощённый call graph, в порядке вызова функций:
Code: Select all
runRusEfi()
--> readConfiguration()
--> applyNonPersistentConfiguration()
--> applyFsioConfiguration()
--> initHardware()
--> readFromFlash()
--> readConfiguration()
--> applyNonPersistentConfiguration()
--> applyFsioConfiguration()
--> initEngineContoller()
--> commonInitEngineController()
--> initFsioImpl()
Во-вторых, что чтение конфигурации почему-то вызывается дважды. Что-то в этом есть неправильное...
Пока создал PR по поводу фикса fsio, а конфигурацию не трогал - это пусть Андрей решает, нужно ли убирать второе чтение...
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
В части MAX9926 схема практически идентична Frankenso и референсной схеме производителя. Там особо ничего нового не придумаешь. Разводка платы и обвязка питания, конечно, своя.ItaloManyak wrote:Пойду покурю схематику Prometheus ибо я раньше грешил на MAX9926 или его обвязку по питанию.
Блютус-модуль опробован и стабильно работает на максимальном битрейте 115200. Также был написан код команды инициализации для Bluetooth.ItaloManyak wrote:Ещё вопрос а блютус модуль работает/опробован?
Если вы из России, то обращайтесь к @darxfame - у него платки. Если из Украины - то ко мне. Для США и остального мира, возможно, @Russian сможет помочь, я ему передавал пару плат.ItaloManyak wrote:А можно ли приобрести такую платку ?
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Дополнительный поток - это еще и тополнительный стек, т.е. лишняя память. Мы её не сильно пока экономим, но тут кажется того не стоит. Кажется нам должно хватить fastCallback или slowCallback - да и детерменированность поведения будет чуть выше.
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
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
https://github.com/rusefi/rusefi/issues/458andreika 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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Окей, тогда давай так и сделаем! Я закоммитил пробный ма-аленький PR рефакторинга rpmCalculator. Надеюсь, ничего не сломал...russian wrote:Кажется нам должно хватить slowCallback - да и детерменированность поведения будет чуть выше.
P.S. Спасибо за мердж правок fsio!
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Вести из гаража.
1) Во-первых, залил свежую прошивку с рефакторингом (см. сегодняшний PR) - всё работает, видимых проблем нет. Так что PR вроде безопасный.
2) Во-вторых, попробовал онлайн-откатку на холостом ходу. Если резко не нажимать газ, то всё ок. Кое-как настроил. А вот как теперь настраивать TPS-TPS и xTau - это большой вопрос...
3) Наконец, перевёл прошивку на фазированный впрыск! Теперь у меня и зажигание, и впрыск фазированные!
Правда, фазу впрыска ещё предстоит подбирать. Не совсем понятен её физический смысл: скажем, +100 градусов означает опережение, как УОЗ, или запаздывание?.. В исходники и сниферы ещё не лазил...
Вообще, оно долго не хотело переводиться с одновременного - при смене режима двигатель сразу глох. Тогда я пошёл на хитрость:
1) Добавил оборотов побольше, удерживая педаль газа в районе 1500 об.
2) Включил автотюн в агрессивном режиме. Поставил минимум по оборотам для него около 700, а cranking_rpm, наоборот, пониже (650).
3) Переключил впрыск вначале на batch. Двигатель стало сильно трусить, и обороты начали скакать между cranking и running, но постепенно автотюн подстроил VE, затем я ещё вручную отмасштабировал всю таблицу, немного погазовал, и оно худо-бедно заработало.
4) Затем переключил впрыск на sequential, и повторил процедуру. Вуаля!
Завожу пока по-прежнему на одновременном.
Из плохого: на фазированном впрыске почему-то сильно увеличился расход по сравнению с одновременным. Процентов на 30-40 или больше - сказать трудно (в разных точках по-разному)!
Я понимаю, что фаза впрыска совсем не настроена, но всё же ожидал обратный эффект, что ли...
1) Во-первых, залил свежую прошивку с рефакторингом (см. сегодняшний PR) - всё работает, видимых проблем нет. Так что PR вроде безопасный.
2) Во-вторых, попробовал онлайн-откатку на холостом ходу. Если резко не нажимать газ, то всё ок. Кое-как настроил. А вот как теперь настраивать TPS-TPS и xTau - это большой вопрос...
3) Наконец, перевёл прошивку на фазированный впрыск! Теперь у меня и зажигание, и впрыск фазированные!
Правда, фазу впрыска ещё предстоит подбирать. Не совсем понятен её физический смысл: скажем, +100 градусов означает опережение, как УОЗ, или запаздывание?.. В исходники и сниферы ещё не лазил...
Вообще, оно долго не хотело переводиться с одновременного - при смене режима двигатель сразу глох. Тогда я пошёл на хитрость:
1) Добавил оборотов побольше, удерживая педаль газа в районе 1500 об.
2) Включил автотюн в агрессивном режиме. Поставил минимум по оборотам для него около 700, а cranking_rpm, наоборот, пониже (650).
3) Переключил впрыск вначале на batch. Двигатель стало сильно трусить, и обороты начали скакать между cranking и running, но постепенно автотюн подстроил VE, затем я ещё вручную отмасштабировал всю таблицу, немного погазовал, и оно худо-бедно заработало.
4) Затем переключил впрыск на sequential, и повторил процедуру. Вуаля!
Завожу пока по-прежнему на одновременном.
Из плохого: на фазированном впрыске почему-то сильно увеличился расход по сравнению с одновременным. Процентов на 30-40 или больше - сказать трудно (в разных точках по-разному)!
Я понимаю, что фаза впрыска совсем не настроена, но всё же ожидал обратный эффект, что ли...
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Я совсем разобрал твой PR на части - извиняюсь. Готово. Я хочу пока rpmValue чтение оставить всё-таки просиым доступом к переменной, к сожалению как микро-оптимизация цены вызова метода
Если ты хочешь, то можно делать cranking гистерезис поверх текущей версии.
Если ты хочешь, то можно делать cranking гистерезис поверх текущей версии.
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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Спасибо и за это! Правда, учитывая, сколько сил ты потратил на этот простенький рефакторинг, может, лучше организовать нашу работу как-то по-другому, раз гитовская система PR тебя не устраивает? Как вариант, можно вначале написать мне словами наиболее существенные моменты в комментах к PR - и я тут же это исправляю, затем мерджить PR as is, и потом "по горячим следам" ты уже подправляешь что нужно?.. Или дать тебе доступ на запись в мой форк-репозиторий? Или я могу каждый блок кода помечать комментами /*XXX*/, чтобы тебе было легче пробежаться по смердженному коду?.. А то, получается, и я делаю PR впустую, и ты тратишь слишком много времени на воспроизведение этой работы (у нас же не "чистая комната" )...russian wrote:Я совсем разобрал твой PR на части - извиняюсь. Готово. Я хочу пока rpmValue чтение оставить всё-таки просиым доступом к переменной, к сожалению как микро-оптимизация цены вызова метода
Я замерджил все изменения в текущий PR по рефакторингу - там остались совсем мелкие моменты, которые ты, возможно, не заметил. И как только ты заапрувишь его (или отклонишь), я выкладываю следующий, хорошо?russian wrote:Если ты хочешь, то можно делать cranking гистерезис поверх текущей версии.
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Чёрт его знает. Мы знаем, в чём именно проблема?
Для меня самый простой вариант - много мелких последовательных PR. Но я с другой стороны и понимаю, что это замедлит тебя
Замёржил https://github.com/rusefi/rusefi/pull/459
Для меня самый простой вариант - много мелких последовательных PR. Но я с другой стороны и понимаю, что это замедлит тебя
Замёржил https://github.com/rusefi/rusefi/pull/459
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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Спасибо! Ты не мог бы помочь вот с этим, пожалуйста:russian wrote:Замёржил https://github.com/rusefi/rusefi/pull/459
(Если переименовывать не хочешь, то хотя бы добавь ещё один параметр в rusefi_config).добавить конфиг-настройку для нижнего порога переключения cranking.lowRpm (пусть будет 0 по умолчанию?), и переименовать верхнюю границу (cranking.rpm => cranking.highRpm).
Полагаю, всё же лучше, чтобы с правками rusefi_config+ini (и запуск соответствующих скриптов) пока имел дело только ты, правильно?
Нужно будет отдельно это обсудить и вместе подумать в привате, хорошо?russian wrote:Чёрт его знает. Мы знаем, в чём именно проблема?
Для меня самый простой вариант - много мелких последовательных PR. Но я с другой стороны и понимаю, что это замедлит тебя
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
А оно точно нужно, lowCrankingRpm? давай попробуем как будет работать, если мы остаёмся в running пока не stopped?
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: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Не сильно нужно. Я пока создал простенький PR, без него.russian wrote:А оно точно нужно, lowCrankingRpm? давай попробуем как будет работать, если мы остаёмся в running пока не stopped?
Но, считаю, что он всё же нужен, и вот для какого случая. Когда мы заводимся на одновременном впрыске (который уже настроен и работает для cranking), и переходим на ненастроенный рабочий режим. Скажем, на распределённый впрыск или просто на рабочие карты с неправильным VE, то движок может начать глохнуть на рабочем режиме, обороты упадут - и всё, снова заводи! В таком случае меня выручало то, что снова включался режим cranking, и двигатель не глох, и обороты снова вырастали. Это очень удобно при настройке, тем более что [в моём случае] наполнение (VE) сильно отличалось для режимов simult. и batch/seq. - настолько, что двигатель просто глох, если не менять карту (интересно, кстати, почему?)... Кроме того, этот параметр позволит имитировать текущее поведение прошивки (cranking_low=high). А вдруг для кого-то это важно, чтобы не сломалось текущее поведение?
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
И ещё.
Приведу цитату из руководства по Innovate LC-1:
P.S. Также нам нужно бы рассмотреть возможность добавления ещё одного дополнительного спец.режима spinning_state_e, когда сигналы с триггеров уже поступают, но обороты ещё нулевые (когда ещё нет синхронизации). Это может быть полезным, к примеру, когды мы захотим реализовать предстартовый впрыск "prime pulse" для более быстрого запуска двигателя -- чтобы давать впрыск не при включении зажигания, а в момент начала вращения двигателя.
Считаю это весьма спорным и даже опасным моментом. В случае подключения ШДК по линии o2 heater, как это сделано у меня.* o2 heater is off during cranking
Приведу цитату из руководства по Innovate LC-1:
Там говорится, что ШДК не должен оставаться холодным (с отключенным heater) при работающем двигателе. Возможно, стоит подумать, чтобы вернуть предыдущее поведение:When installed in the exhaust, the oxygen sensor MUST be connected and operating with the LC-1 whenever the car is running. An un-powered oxygen sensor will be quickly damaged when exposed to hot exhaust gases.
Code: Select all
enginePins.o2heater.setValue(!engine->rpmCalculator.isStopped());
- AndreyB
- Site Admin
- Posts: 14360
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37
Я не знаю, как правильнее - мой аргумент помочь стартёру. Всё-таки крутим мы секунду, сомневаюсь что ШДК станет плохо так быстро.andreika wrote:Считаю это весьма спорным и даже опасным моментом. В случае подключения ШДК по линии o2 heater, как это сделано у меня.* o2 heater is off during cranking
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