[rusEfi] ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

Юнит тесты ожили! Функциональные пока падают, я могу их чуть позже второй раз пнуть на всякий случай
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
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

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
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:попинал - всё равно падают, видимо всё-таки падают :(
Попробовал запускать автотесты через симулятор.
Выродило мне почти 10 Мб логов, 99% из которых составляет бешено повторяющий ворнинг "WARNING: unrealistic CLT 2147483648.48"... :shock:
В итоге оно запнулось вот на чём:
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
Ради интереса попробовал собрать более раннюю версию, которая вроде как прошла автотесты. Получил уже другой эксепшен, но в том же dodgeneon, просто на пару строчек позже:
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...
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

Тем временем, остаются ещё две бяки:
1) Неправильно работает логика определения isCranking.
Нужно сделать, что если RPM добрался хотя бы раз до порога cranking.rpm, то уже не возвращать cranking==true даже если обороты потом упадут ниже порога. И восстанавливать флаг cranking только при падении оборотов до нуля (или, как вариант, меньше некоего дополнительного порога, примерно равного частоте вращения стартёра - скажем, 300).
А сейчас получается такая ситуация: движок заводится с положением РХХ на cranking, обороты достигают порога, РХХ переключается в положение manual (призакрывается), обороты немного падают ниже порога, опять считается режим cranking, РХХ переключается на положение cranking (приоткрывается), обороты снова растут выше порога, и т.д...
Понятное дело, что это лишь тестовая ситуация, связанная с немного неправильными настройками, но, если подумать, обороты могут упасть по разным причинам. И нужно ли при этом возвращаться в режим cranking (у которого свой впрыск, УОЗ, РХХ - т.е. всё заточено на запуск)?..
В общем, предлагаю изменить это поведение, и сделать режим cranking однократным, и только для запуска двигателя, как в СЕКУ.

2) Блокировка стартёра (баг fsio) - займусь завтра.
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

0)
падает на самом деле тест на настоящем железе - обрати внимание на 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
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

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
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
[java] java.lang.IllegalStateException: rpm change did not happen: 200, actual 0.0
Дело в том, что на эмуляторе тоже была именно эта ошибка, и я смог её устранить у себя с помощью сегодняшнего PR.
Может, нужно снова пнуть блок? :roll: Оно вообще как, автоматически прошивается и перезапускается?
russian wrote:в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться
При обычной городской езде очень даже может быть квазинормальная ситуация: например, при заезде на бровку и неумелой работой с педалью газа, т.е. обороты могут упасть под нагрузкой. В городе, бывает, приходится ездить на одном сцеплении (паркинг и т.п.), двигатель может даже заглохнуть (особенно у новичков-водителей - если думать о будущей широкой аудитории проекта).
Наконец, если мы хотим сделать крутую тройную авторегулировку для ХХ (а мы хотим! ;) ), то ей тоже нужен запас по оборотам, особенно в меньшую сторону, иначе авторегулировка будет то включаться, то выключаться - ведь добиться идеальных параметров авторегулировки сходу не получится почти ни у кого (хотя лично я бы делал её не на ПИД, а на сетях Кохонена :twisted:)...
User avatar
darxfame
contributor
contributor
Posts: 259
Joined: Mon Feb 13, 2017 10:06 pm
Location: Moscow

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by darxfame »

andreika wrote:
russian wrote:падает на самом деле тест на настоящем железе - обрати внимание на RealHwTest:
[java] java.lang.IllegalStateException: rpm change did not happen: 200, actual 0.0
Дело в том, что на эмуляторе тоже была именно эта ошибка, и я смог её устранить у себя с помощью сегодняшнего PR.
Может, нужно снова пнуть блок? :roll: Оно вообще как, автоматически прошивается и перезапускается?
russian wrote:в нормальной ситуации всё-таки не должны мы в cranking mode без причины оказываться
При обычной городской езде очень даже может быть квазинормальная ситуация: например, при заезде на бровку и неумелой работой с педалью газа, т.е. обороты могут упасть под нагрузкой. В городе, бывает, приходится ездить на одном сцеплении (паркинг и т.п.), двигатель может даже заглохнуть (особенно у новичков-водителей - если думать о будущей широкой аудитории проекта).
Наконец, если мы хотим сделать крутую тройную авторегулировку для ХХ (а мы хотим! ;) ), то ей тоже нужен запас по оборотам, особенно в меньшую сторону, иначе авторегулировка будет то включаться, то выключаться - ведь добиться идеальных параметров авторегулировки сходу не получится почти ни у кого (хотя лично я бы делал её не на ПИД, а на сетях Кохонена :twisted:)...
Делайте что нибудь))) я приеду, запаяю hip и cj125 и буду делать проводку новую и пытаться стартовать на прометее. А для этого надо что бы все что отвечает за работу двигателя было и работало хорошо, не хочу дальше сидеть на секу
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

Что касается переменной wasRunning и порогов cranking, то, как вариант, я предлагаю вот что:
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;
в) внутри RpmCalculator::setRpmValue() сделать логику изменения состояния двигателя по гистерезису, используя жёсткую пороговую логику, типа такой:

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;
}
Заодно можно будет поубирать rpm из аргументов всяких getInjectionDuration(), getBaseFuel(), поскольку у нас теперь быстрый getRpm()...
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by puff »

быстрый RPM! а насколько быстрый?
уже когда-то пробовал понять, как часто происходит расчет rpm в других системах (в той же secu) - один раз в оборот, или чаще (количество зубьев же позволяет)
и насколько полезно иметь представление о скорости в течение цикла. можно ли будет после предложенных изменений вычислять пропуски воспламенения по цилиндрам?
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

puff wrote:быстрый RPM!
Не-не, не RPM быстрый, а метод getRpm(). :) Речь идёт о банальном рефакторинге кода с микрооптимизацией, для унификации определения режимов работы двигателя и возможности гистерезиса по оборотам. И если Андрей заинтересуется и реализует 1-й пункт, то я смогу доделать остальное.
ItaloManyak
Posts: 69
Joined: Sun Sep 08, 2013 2:33 pm

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by ItaloManyak »

А можно мне пару вопросов а то я что то много пропустил.
Желтая платка это отдельная разводка платы от автора темы?
Вопрос как она себя ведёт при запуске на подсевшем аккумуляторе?
У франкензо моего проблемы выражаются в том что просто не видит опорные сигналы а точнее VR датчика коленвала, сейчас уже не помню точно но примерно проблема выглядит так когда кручу стартером на подсевшем аккумуляторе и напряжение в момент кручения 11в или ниже то VR импульсы отсутствуют. Так вот почитав тему автора и видя что меняя конденсаторы и кое где код был достигнут хороший результат по rpm, хочется попросить совета как побороть сей недуг иначе зимой просто никак не завестись...
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

Пнул заново - оно автоматические по коммиту и прошивает и запускает, см. например https://github.com/rusefi/rusefi/blob/master/misc/build_current_bundle.bat

отдельный поток для 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
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

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;
	}
Код выполняется при каждом вызове getRpm(). А можно создать поток, который всё время спит, и просыпается 1 раз в секунду. И проверяет все эти stopEngineRequestTimeNt и lastRpmEventTimeNt. Afaik, ChibiOS довольно неплохо оптимизирован для спящих потоков, и должно получиться красивенько! :)
russian wrote:Идеальный для меня вариант - отдельно PR для рефакторинга и отдельно PR для функционального
Отлично! Я подготовлю PR, если ты поможешь с созданием cranking.lowRpm и переименованием cranking.rpm => cranking.highRpm. Сможешь?
russian wrote:А еще надо бы тесты починить всё-таки. Я уже скоро домой.
К сожалению, я у себя не вижу этих ошибок и плохо знаю код триггеров, сорри... :(
ItaloManyak wrote:А можно мне пару вопросов а то я что то много пропустил.
Желтая платка это отдельная разводка платы от автора темы?
Жёлтая платка - это собственная разработка под названием Prometheus. Вот ссылка: http://rusefi.com/forum/viewtopic.php?f=4&t=1215
И схема, и разводка этой платы серьёзно отличается от "официальных" плат rusEFI. Кроме того, это пока лишь первая ревизия, сделанная наспех за пару недель, и неизвестно, какие проблемы ещё могут проявиться...
ItaloManyak wrote:Вопрос как она себя ведёт при запуске на подсевшем аккумуляторе? ...меняя конденсаторы и кое где код был достигнут хороший результат по rpm, хочется попросить совета как побороть сей недуг иначе зимой просто никак не завестись...
Минимальное исходное напряжение аккумулятора, на котором я заводил, было 11.7В, с просадкой при прокручивании до 9.8В.
Тут нужно смотреть, какие обороты при этом даёт стартёр. Сигнал ДПКВ зависит не от напряжения как такового, а от минимальных оборотов. Кроме того, раньше у прошивки было ограничение в 120 оборотов, ниже которого обороты не были видны. Возможно, это как-то поможет?
ItaloManyak
Posts: 69
Joined: Sun Sep 08, 2013 2:33 pm

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by ItaloManyak »

Минимальное исходное напряжение аккумулятора, на котором я заводил, было 11.7В, с просадкой при прокручивании до 9.8В.
Тут нужно смотреть, какие обороты при этом даёт стартёр. Сигнал ДПКВ зависит не от напряжения как такового, а от минимальных оборотов. Кроме того, раньше у прошивки было ограничение в 120 оборотов, ниже которого обороты не были видны. Возможно, это как-то поможет?
То что нужно! Ибо при прокручивании если у меня просаживается до 10.7В (а у автора 9.8В :shock: ) сигналы не видны. Если у меня исходное напряжение ниже 12В можно не пробовать она не заводится.
Пойду покурю схематику Prometheus ибо я раньше грешил на MAX9926 или его обвязку по питанию.

Ещё вопрос а блютус модуль работает/опробован?
Last edited by ItaloManyak on Sat Jul 01, 2017 11:19 am, edited 1 time in total.
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by puff »

а репер какой? а то вот на субаре с редкими зубами, помню, тоже проблема вылезала. если время между зубами слишком большое (а на просаженной батарее стартер крутит медленнее, время увеличивается) - срабатывает хардварный порог в максе.
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

Исследовал проблему fsio и блокировки стартёра.
Посмотрим упрощённый call graph, в порядке вызова функций:

Code: Select all

runRusEfi()
    --> readConfiguration()
        --> applyNonPersistentConfiguration()
            --> applyFsioConfiguration()
    --> initHardware()
        --> readFromFlash()
            --> readConfiguration()
                --> applyNonPersistentConfiguration()
                    --> applyFsioConfiguration()
    --> initEngineContoller()
        --> commonInitEngineController()
            --> initFsioImpl()
Что мы видим? Во-первых, вначале вызывается applyFsioConfiguration(), которая заполняет fsioLogics[], а после этого вызывается initFsioImpl(), которая стирает fsioLogics[]. И поэтому юзерский fsio не работает.
Во-вторых, что чтение конфигурации почему-то вызывается дважды. Что-то в этом есть неправильное... :?
Пока создал PR по поводу фикса fsio, а конфигурацию не трогал - это пусть Андрей решает, нужно ли убирать второе чтение...
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

ItaloManyak wrote:Пойду покурю схематику Prometheus ибо я раньше грешил на MAX9926 или его обвязку по питанию.
В части MAX9926 схема практически идентична Frankenso и референсной схеме производителя. Там особо ничего нового не придумаешь. Разводка платы и обвязка питания, конечно, своя.
ItaloManyak wrote:Ещё вопрос а блютус модуль работает/опробован?
Блютус-модуль опробован и стабильно работает на максимальном битрейте 115200. Также был написан код команды инициализации для Bluetooth.
ItaloManyak wrote:А можно ли приобрести такую платку ?
Если вы из России, то обращайтесь к @darxfame - у него платки. Если из Украины - то ко мне. Для США и остального мира, возможно, @Russian сможет помочь, я ему передавал пару плат.
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

Дополнительный поток - это еще и тополнительный стек, т.е. лишняя память. Мы её не сильно пока экономим, но тут кажется того не стоит. Кажется нам должно хватить 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
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

andreika wrote:Во-вторых, что чтение конфигурации почему-то вызывается дважды. Что-то в этом есть неправильное... :?
https://github.com/rusefi/rusefi/issues/458
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
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:Кажется нам должно хватить slowCallback - да и детерменированность поведения будет чуть выше.
Окей, тогда давай так и сделаем! Я закоммитил пробный ма-аленький PR рефакторинга rpmCalculator. Надеюсь, ничего не сломал... :roll:

P.S. Спасибо за мердж правок fsio!
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

Вести из гаража.

1) Во-первых, залил свежую прошивку с рефакторингом (см. сегодняшний PR) - всё работает, видимых проблем нет. Так что PR вроде безопасный. :roll:

2) Во-вторых, попробовал онлайн-откатку на холостом ходу. Если резко не нажимать газ, то всё ок. Кое-как настроил. А вот как теперь настраивать TPS-TPS и xTau - это большой вопрос... :?:

3) Наконец, перевёл прошивку на фазированный впрыск! Теперь у меня и зажигание, и впрыск фазированные! :D

Правда, фазу впрыска ещё предстоит подбирать. Не совсем понятен её физический смысл: скажем, +100 градусов означает опережение, как УОЗ, или запаздывание?.. В исходники и сниферы ещё не лазил...
Вообще, оно долго не хотело переводиться с одновременного - при смене режима двигатель сразу глох. Тогда я пошёл на хитрость:
1) Добавил оборотов побольше, удерживая педаль газа в районе 1500 об.
2) Включил автотюн в агрессивном режиме. Поставил минимум по оборотам для него около 700, а cranking_rpm, наоборот, пониже (650).
3) Переключил впрыск вначале на batch. Двигатель стало сильно трусить, и обороты начали скакать между cranking и running, но постепенно автотюн подстроил VE, затем я ещё вручную отмасштабировал всю таблицу, немного погазовал, и оно худо-бедно заработало.
4) Затем переключил впрыск на sequential, и повторил процедуру. Вуаля! 8-)
Завожу пока по-прежнему на одновременном.

Из плохого: на фазированном впрыске почему-то сильно увеличился расход по сравнению с одновременным. :( Процентов на 30-40 или больше - сказать трудно (в разных точках по-разному)!
Я понимаю, что фаза впрыска совсем не настроена, но всё же ожидал обратный эффект, что ли... :?
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

Я совсем разобрал твой PR на части - извиняюсь. Готово. Я хочу пока rpmValue чтение оставить всё-таки просиым доступом к переменной, к сожалению как микро-оптимизация цены вызова метода :(

Если ты хочешь, то можно делать 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
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:Я совсем разобрал твой PR на части - извиняюсь. Готово. Я хочу пока rpmValue чтение оставить всё-таки просиым доступом к переменной, к сожалению как микро-оптимизация цены вызова метода :(
Спасибо и за это! Правда, учитывая, сколько сил ты потратил на этот простенький рефакторинг, может, лучше организовать нашу работу как-то по-другому, раз гитовская система PR тебя не устраивает? :? Как вариант, можно вначале написать мне словами наиболее существенные моменты в комментах к PR - и я тут же это исправляю, затем мерджить PR as is, и потом "по горячим следам" ты уже подправляешь что нужно?.. Или дать тебе доступ на запись в мой форк-репозиторий? Или я могу каждый блок кода помечать комментами /*XXX*/, чтобы тебе было легче пробежаться по смердженному коду?.. А то, получается, и я делаю PR впустую, и ты тратишь слишком много времени на воспроизведение этой работы (у нас же не "чистая комната" :lol:)...
russian wrote:Если ты хочешь, то можно делать cranking гистерезис поверх текущей версии.
Я замерджил все изменения в текущий PR по рефакторингу - там остались совсем мелкие моменты, которые ты, возможно, не заметил. И как только ты заапрувишь его (или отклонишь), я выкладываю следующий, хорошо?
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

Чёрт его знает. Мы знаем, в чём именно проблема?

Для меня самый простой вариант - много мелких последовательных 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
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:Замёржил https://github.com/rusefi/rusefi/pull/459
Спасибо! Ты не мог бы помочь вот с этим, пожалуйста:
добавить конфиг-настройку для нижнего порога переключения cranking.lowRpm (пусть будет 0 по умолчанию?), и переименовать верхнюю границу (cranking.rpm => cranking.highRpm).
(Если переименовывать не хочешь, то хотя бы добавь ещё один параметр в rusefi_config).
Полагаю, всё же лучше, чтобы с правками rusefi_config+ini (и запуск соответствующих скриптов) пока имел дело только ты, правильно?
russian wrote:Чёрт его знает. Мы знаем, в чём именно проблема?
Для меня самый простой вариант - много мелких последовательных PR. Но я с другой стороны и понимаю, что это замедлит тебя :(
Нужно будет отдельно это обсудить и вместе подумать в привате, хорошо?
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

А оно точно нужно, 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
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

russian wrote:А оно точно нужно, lowCrankingRpm? давай попробуем как будет работать, если мы остаёмся в running пока не stopped?
Не сильно нужно. Я пока создал простенький PR, без него.
Но, считаю, что он всё же нужен, и вот для какого случая. Когда мы заводимся на одновременном впрыске (который уже настроен и работает для cranking), и переходим на ненастроенный рабочий режим. Скажем, на распределённый впрыск или просто на рабочие карты с неправильным VE, то движок может начать глохнуть на рабочем режиме, обороты упадут - и всё, снова заводи! В таком случае меня выручало то, что снова включался режим cranking, и двигатель не глох, и обороты снова вырастали. Это очень удобно при настройке, тем более что [в моём случае] наполнение (VE) сильно отличалось для режимов simult. и batch/seq. - настолько, что двигатель просто глох, если не менять карту (интересно, кстати, почему?)... Кроме того, этот параметр позволит имитировать текущее поведение прошивки (cranking_low=high). А вдруг для кого-то это важно, чтобы не сломалось текущее поведение?
User avatar
andreika
donator
donator
Posts: 461
Joined: Mon Feb 13, 2017 2:35 pm
Location: Kiev

Re: ВАЗ-2103 "Рыжик" (1977) :: Lada 1500 "Ryzhik" (1977) #37

Post by andreika »

И ещё.
* o2 heater is off during cranking
Считаю это весьма спорным и даже опасным моментом. В случае подключения ШДК по линии o2 heater, как это сделано у меня.
Приведу цитату из руководства по Innovate LC-1:
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.
Там говорится, что ШДК не должен оставаться холодным (с отключенным heater) при работающем двигателе. Возможно, стоит подумать, чтобы вернуть предыдущее поведение:

Code: Select all

enginePins.o2heater.setValue(!engine->rpmCalculator.isStopped());
P.S. Также нам нужно бы рассмотреть возможность добавления ещё одного дополнительного спец.режима spinning_state_e, когда сигналы с триггеров уже поступают, но обороты ещё нулевые (когда ещё нет синхронизации). Это может быть полезным, к примеру, когды мы захотим реализовать предстартовый впрыск "prime pulse" для более быстрого запуска двигателя -- чтобы давать впрыск не при включении зажигания, а в момент начала вращения двигателя.
User avatar
AndreyB
Site Admin
Posts: 14292
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

Post by AndreyB »

andreika wrote:
* o2 heater is off during cranking
Считаю это весьма спорным и даже опасным моментом. В случае подключения ШДК по линии o2 heater, как это сделано у меня.
Я не знаю, как правильнее - мой аргумент помочь стартёру. Всё-таки крутим мы секунду, сомневаюсь что ШДК станет плохо так быстро.
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
Post Reply