как поженить ежа и ужа

Это оффтопик или флудилка или курилка
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

как поженить ежа и ужа

Post by AndreyB »

Предлагаю обсудить возможные форматы совместной работы.

Монолитный вариант: единый репозиторий, единая точка входа - дальше при необходимостии код разделяется в некоторых местах на уровне директив препроцессора и раздельных файлов конкретных имплементаций различающихся вещей. Проблема: я принципиально хочу писать в рамках chibios, из которой при желании естественно можно получить любой прямо доступ к оборудованию. Самые высокие затраты на первоначальную интеграцию, потенциально максимальная выгода от полной унификации сорцов.

Промежуточный вариант: индивидуальные проекты с индивидуальными точками входа в исходники, но соглашение о едином API каких-то подсистем - чтоб конкретные реализации алгоритмов можно было разделять простым полным копированием файла. Меньшие затраты на первоначальную интеграцию, но повыщенные постоянные затраты на поддержание универсального API для различных систем.
Разные проекты всё равно выигрывают.

Несвязанный вариант: никакого совместного кода.

У кого какие мысли?

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

Update: как верно товарищи заметили, где-то в одном месте должно быть озвучено видение проекта. Напишу своё видение тезисно, попробую тезисы отсортировать по порядку важности.

0) в коде системы мне важна читаемость и расширяемость. хотелось бы остаться невинной незабудкой, которую всегда можно будет относительно перенести на следующее поколения железа, плюс не хотелось бы никакое архитектурное решение делать незыблемой догмой. Хотелось бы код оставлять достаточно модифицируемым на случай поворота линии партии.

1) практичный подход к планировани: текущая цель - построить базовый фундамент функционала, на базе которого был бы в будущем возможен этам приближения к счастью. Например, для начала нужна система возможно с пониженной степенью электрической защиты, но работающая при правильном подключении устройств. Текущая цель - проехать от пунка А в пункт Б, не заглохнув и не стукнув мотор. Можно испускать клубы дыма.

2) по факту, целевая аудитория проекта - нестандартные конфигурации двигателей, не обслуживаемые стандартными блоками управления. Обычно это что-то в сторону автоспорта. Следствия из этого: акцент на двигателях из 90ых и нулевых просто из-за цены, экология не на первом месте.

Текущая фаза проекта - фаза 0:
1) мягкое ограничение - четырёх цилиндровые поршневые бензиновые нетурбированные двигатели
2) целевая точость: 1 угловой градус до 8000 оборотов (сократим до "1@8000")
3) минимальный полный функционал: запуск, управление топливом и зажиганием, бензонасом. Вероятно, управление холостым ходом. Видимо, без явного управления прогревом.
4) цель - проехать в этой конфигурации из точки А в точку Б полностью отключив стандартный блок управления

Вещи, которые будут ждать следующих фаз:
1) свой контроллер широкополосного датчика кислорода
2) турбо нюансы
3) точность выше 1@8000
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
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: как поженить ежа и ужа

Post by AndreyB »

У меня уже есть какие-то имплементации в наличии - конкретно есть https://subversion.assembla.com/svn/rusefi/trunk/firmware/controllers/idle_thread.c через https://subversion.assembla.com/svn/rusefi/trunk/firmware/controllers/engine_controller.c (выделенный абстрактный алгоритм) и в другом направлении есть https://subversion.assembla.com/svn/rusefi/trunk/firmware/console/tunerstudio.c - их обсуждать поздно, их использовать можно как они есть.

Меня сейчас больше интересует установить какое-то практическое сотрудничество, конкретные алгоритмы это уже рабочий вопрос внутри процесса сотрудничества.
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
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: как поженить ежа и ужа

Post by AndreyB »

Sergey89 wrote:Что в твоём понимании практическое сотрудничество? Это когда все вместе пишут реализацию? :)
Не знаю, поэтому и обсуждаю этот вопрос здесь. Я знаю, чего бы мне хотелось:
1) хотелось бы, чтоб кто-то мой код читал - так я могу его выверить и улучшить
2) хотелось бы, чтоб какой-то мой код кто-то запускал - аналогично, чтоб протестировать и улучшить
3) в мечтах хотелось бы, чтоб какой-то код я мог не писать сам - а взять чужой. или какое-то улучшение делать не самому.

Добиться этого можно двумя способами - или полностью централизованный код, или совместное использование каких-то файлов. С этого места я открыт к предложениям :)
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 »

Первый вариант по мне не вариант (от так скаламбурил).
Кому то нравятся rtos, кому то не очень, мне нравится недо-rtos через деспетчер и конечные автоматы с ручным разделением потоков, ктото предпочитает работать сугубо на уровне прерываний и регистров.
По хорошему надо просто отделять математику от логики и логику от апи железа (ну всякие там абстракции типа cmsis или ChibiOS).
Так же было бы отличным вариантом сначала документировать и детализировать логику, трудоемкось конечно возрастет но зато прозрачность улудшится и уровень вхождения в код снизится.

Как я вижу некоторые части кода.

1. Математические библиотеки
Не привязанная к железу математика, функции у которых результат работы неизменен при неизменности входных параметров (иначе говоря не зависящие от различных состояний всякой шняги), например билинейная интерполяция или расчет наполенния из известных давления оборотов и темпиратур. Сюда же отнести всю работу с картами кроме непосредсвенной реализации работы с флешем для загрузки сохранения при онлайн редактированнии или автоподстройке.

2. Логика
кучка взаимосвязанных файликов с логикой, вызывают как апи железа так и математику, так же высокоуровневая обработка событий.

3. прослойка апи железа
Набор функций либо макросов типа "взвести таймер такойто на такое то время" или "поднять/опустить ногу восьмой форсунки" итд итп.
Обработка прерываний, вызов из прерываний функций логики.
Тут же первоначальная инициализация железа либо rtos

4. таймеры прерывания регистры rtos - каждый дрочит кто как хочит


Ну вот как то так. Это позволит:
1. абстрогироватся большей части кода от железа и даже от RTOS.
2. легкую переносимость на другие камни/архетиктуры всей математики и большей части логики
3. возможность паралелить разработку многих довольно трудоемких частей кода (те же алгоритмы расчета впрыска по темпиратуре заряда, алгоритмы самонастройки по ШДК, алгоритмы автоподстройки УОЗ по ускорению коленвала)

В данный момент код к сожалению сильно спутанный, я когда читал буквально прорывался сквозь дебри чиби чтобы понять как оно работает и куда после чего попадает. Ощущения от RTOS как от езды на в хлам разолбанной подвеске, ты вроде бы и рулиш машиной но по факту она едет куда хочет а ты ее только успевай лови пока не улетел в кювет.
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: как поженить ежа и ужа

Post by AndreyB »

nikll wrote:=В данный момент код к сожалению сильно спутанный, я когда читал буквально прорывался сквозь дебри чиби чтобы понять как оно работает и куда после чего попадает. Ощущения от RTOS как от езды на в хлам разолбанной подвеске, ты вроде бы и рулиш машиной но по факту она едет куда хочет а ты ее только успевай лови пока не улетел в кювет.
Я верю, что год спутанный - помоги мне пожалуйста более конкретными замечаниями сделать его лучше.

На самом деле, в какой-то момент я писал логику так, чтоб один и тот же класс компилировался и в составе ChibiOS/ARM проекта, и в plain win32 проекте - я таким образом писал подобие юнит-тестов. Например, уже упомянутый мной https://subversion.assembla.com/svn/rusefi/trunk/firmware/controllers/algo/idle_controller.c - в нём нет НИКАКОЙ зависимости от внешних файлов, его можно как он есть копировать и тестировать в win32. Соответсвенно, в пару к алгоритму algo/idle_controller.c идёт файл фасада в конкрутную систему - https://subversion.assembla.com/svn/rusefi/trunk/firmware/controllers/idle_thread.c - этот файл содержит поток, который делает while(true) {idle_controller();}

Аналогично уже есть файлы логики термисторов или интерполяции - так что понимаение у нас схожее :) Нужно просто теперь довести код или структуру кода до состояния, чтоб он был понятен не только мне.

Давай попробуем поработать с этими двумя конкретными файлами. Есть ли шанс сделать их понятнее? Чуть-чуть документации я добавил, но добавить нужно еще. Что еще можно или нужно улучшить?

Жду более конкретный конструктив :)
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 »

разработка сводится не только к написанию кода. так как мы разрабатываем физмодель, предлагаю такой вариант:
итерация 1. коллективное обсуждение математики с предложением в виде таблиц, фрагменты в условном коде и т.д.
итерация 2. принятие алгоритмов на следующую версию.
итерация 3. распределение по исполнителям.
итерация 4. коммит и отладка на железе.
го ту 1
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
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: как поженить ежа и ужа

Post by AndreyB »

XDA wrote:разработка сводится не только к написанию кода. так как мы разрабатываем физмодель, предлагаю такой вариант:
итерация 1. коллективное обсуждение математики с предложением в виде таблиц, фрагменты в условном коде и т.д.
итерация 2. принятие алгоритмов на следующую версию.
итерация 3. распределение по исполнителям.
итерация 4. коммит и отладка на железе.
го ту 1
Да, но есть нюансы :)
Слишком большое поле вариантов - поэтому есть большой риск погрязнуть в обсуждении. Чтоб не обсуждать всё вечно, я предлагаю итеративный подход улучшения работающего минимума, т.е.

шаг 0: минимально функционирующий программно-аппаратный комплекс
шаг 1: принятие решение, что на текущий момент является самой большой проблемой
iаг 2: улучшение ситуации с проблемой из шага 1
go to шаг 1.

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

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

Выиграет тот из ныне трёх репозиториев, который качественно вырвется вперёд. Когда и за счёт чего это произойдёт - не знаю :(

Со своей стороны могу предложить желающим участвовать в программировании моей редакции заимлементировать тикет номер 1 - это хороший способ ознакомиться с исходниками и попробовать процесс совместной работы. Итак, https://sourceforge.net/p/rusefi/tickets/1/ & http://rusefi.com/forum/viewtopic.php?f=5&t=211
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
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: как поженить ежа и ужа

Post by Maxi »

XDA wrote:разработка сводится не только к написанию кода. так как мы разрабатываем физмодель, предлагаю такой вариант:
для начала - то что вы разрабатываете называется эвристическая модель. физмоделью тут пока не пахнет..

в конечном счете любое решение которое вы нагуглите в интернете будет являться эвристической моделью (цепью подгонов под ответ)... для разработки физмодели нужен серьезный набор знаний и опыта. этого всего у вас нет. и это уже stage2.
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: как поженить ежа и ужа

Post by Sergey89 »

Это печально. Я для начала достал основные алгоритмы и калибровки путём реверсинжиниринга из блока управления Nissan 98 года. Но там всё на эвристических моделях с кучей таблиц и констант. Как отправная точка пойдёт.
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 »

Сейчас ситуация такая. Есть несколько людей, которые хотят сделать эбу на stm32, мотивированные какими-то своими причинами. У них уже есть какие-то свои попытки реализации. У кого-то уже в железе, у кого-то на уровне софта. И я догадываюсь, что цели у каждого свои. Андрей предложил объединить усилия. И сейчас как раз и стоит вопрос как наиболее эффективно начать работать вместе.
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

Тогда стоит начать с выработки целей разработки ЭБУ вообще. Сначала в общем, потом конкретизировать до более точных характеристик.
Зачем вообще разрабатывать ЭБУ? Для гражданского применения, для спорта? И для того и для другого? Универсальные для максимально широкого круга задач? Насколько широкий круг должен быть?
skype: frig_frig
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: как поженить ежа и ужа

Post by Maxi »

Sergey89 wrote:Это печально. Я для начала достал основные алгоритмы и калибровки путём реверсинжиниринга из блока управления Nissan 98 года. Но там всё на эвристических моделях с кучей таблиц и констант. Как отправная точка пойдёт.
Это нормально. В заводских ЭБУ физические модели появились только в середине 1990-х. Лидером как всегда был бош.
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: как поженить ежа и ужа

Post by Sergey89 »

Тогда стоит начать с выработки целей разработки ЭБУ вообще. Сначала в общем, потом конкретизировать до более точных характеристик.
Зачем вообще разрабатывать ЭБУ? Для гражданского применения, для спорта? И для того и для другого? Универсальные для максимально широкого круга задач? Насколько широкий круг должен быть?
Когда речь идёт об открытой системе, то нужно решать в итоге максимально широкий круг задач, иначе вроде и смысла затевать всё это нет. По моему мнению, планы надо ставить грандиозные, но решать задачи по мере поступления.
Это нормально. В заводских ЭБУ физические модели появились только в середине 1990-х. Лидером как всегда был бош.
А насколько хорошо эти модели поддаются, скажем так, гаражно/дорожным настройкам, когда на двигатель нет никаких исходных калибровок?
Last edited by Sergey89 on Thu Oct 24, 2013 10:08 am, edited 1 time in total.
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

Я с этим согласен, но планы надо описать, описать ограничения, зафиксировать это все "на бумаге", чтобы при возникновении каких-то спорных вопросов потом было на что опереться.
Понятно, что реализовывать надо постепенно, но без порядка реализации, без явно указанных приоритетов будет сложно или даже невозможно работать совместно.
skype: frig_frig
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: как поженить ежа и ужа

Post by AndreyB »

frig wrote:Я с этим согласен, но планы надо описать, описать ограничения, зафиксировать это все "на бумаге"...
Я добавил немного лиричное своё видение в первый пост этого топика. Готов уточнять какие-то моменты в случае комментариев :)

Тут еще elephant in the room - совместная работа сразу же заблокировалась разным мнением о целесообразности использования в проекте rtos. Моё мнение - польза от rtos есть и вреда нет, но пока как минимум я не могу убедить людей потратить время и попробовать с rtos, чтоб перестать её бояться.
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
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

совместная работа сразу же заблокировалась разным мнением о целесообразности использования в проекте rtos
Полагаю правильная документация и нормальная организация облегчат принятие каких-то решений.

Собственно общее видение понятно, ближайшие цели тоже, было бы здорово разработать подробный план. Я так понял, что это вариант, котоый эвристический, "подгон под результат".
Нечто вроде ответов на вопросы:
- типы двигателей. 2Т, 4Т, роторные?
- количество цилиндров
- максимальная частота вращения
- точность расчета и дозирования топлива
- тоже самое касательно уоз
- количество карт и переключение между ними
- лямбда на своем контроллере или внешнем
- управление наддувом
... много много других вещей, можно часть из списка у Maxi со странички http://rotorman.dtt-motorsport.ru/j5-sport/j5vsmotec.htm вплоть до раздельного управления топливом и уоз поцилиндрово.

Это установит рамки, позволит оперировать аргументами. Сейчас видно, что кого-то устраивает точность установки уоз в два градуса, кого-то в 0.1. Многие из этих решений и конкретно установленных значений в итоге окажут влияние на проектирование и разработку.

Дальше хорошо бы расширить список "доехать пуская клубы дыма" уже подсистемами. Запуск, прогрев, управление зажиганием, топливом - раскрыть каждый, там тоже выставить приоритеты.
Все это к тому, что нет смысл урывками говорить обо всем, если нет основного необходимого для работы мотора.
skype: frig_frig
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: как поженить ежа и ужа

Post by AndreyB »

frig wrote:... было бы здорово разработать подробный план...
Описал более чётко фазу 0 в первом посте этого топика - http://rusefi.com/forum/viewtopic.php?f=6&t=205
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
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

Вот допустим появляется некий сферический программист, который желает приложить руку и помочь. Как понять что делать? Как понять, что уже сделано?
Текущая фаза проекта - фаза 0:
1) мягкое ограничение - четырёх цилиндровые поршневые бензиновые нетурбированные двигатели
2) целевая точость: 1 угловой градус до 8000 оборотов (сократим до "1@8000")
3) минимальный полный функционал: запуск, управление топливом и зажиганием, бензонасом. Вероятно, управление холостым ходом. Видимо, без явного управления прогревом.
4) цель - проехать в этой конфигурации из точки А в точку Б полностью отключив стандартный блок управления
Из минимального функционала что уже есть, на каком уровне? Что трубется дорабатывать/расширять? До какого уровня?
Я думаю можно в багтреккере просто завести побольше тикетов, чтобы было понятно что планируется делать и в какой последовательности.
skype: frig_frig
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: как поженить ежа и ужа

Post by AndreyB »

frig wrote:Как понять что делать? Как понять, что уже сделано?
В трекере появился первый тикет https://sourceforge.net/p/rusefi/tickets/1/ - я его сознательно не буду его делать, оставлю его для первого сферического программиста. Будет сделан этот - закрою первый и сделаю второй. Шаг за шагом :)

Кстати второй я могу уже сделать и так... Сделал второй по поводу одной жалобы Дениса. Но с другой стороны увлекаться этим слишком пока не буду - сам себе наверное пока тикеты писать не буду.
Текущая фаза проекта - фаза 0:
1) мягкое ограничение - четырёх цилиндровые поршневые бензиновые нетурбированные двигатели
2) целевая точость: 1 угловой градус до 8000 оборотов (сократим до "1@8000")
3) минимальный полный функционал: запуск, управление топливом и зажиганием, бензонасом. Вероятно, управление холостым ходом. Видимо, без явного управления прогревом.
4) цель - проехать в этой конфигурации из точки А в точку Б полностью отключив стандартный блок управления
Уже есть подача топлива и интеграция с настройщиком. Нужно заново сделать зажигание - в прошлых редакциях была имплементация, сейчас она временно выключена.

Сейчас используется планировщих сигналов на базе chThdSleep - его точность вероятно ниже 1@8000. Нужно заинтегрировать програмный ШИМ на базе fastIrqHandler - блин, нужно завести тикет попозже. Нужно для фанатов аппаратных таймером заинтегрировать отдельный модуль планировщика сигналов через аппаратные таймеры - блин, нужно завести тикет.

О, нужно сделать управление бензонасосом - завёл тикет номер три. https://sourceforge.net/p/rusefi/tickets/3/

В принципе, с програмной точки зрения мы достаточно близки к завершению фазы 0 - я просто жду плату аналоговых входов, чтоб собрать в более приличной форме железо.
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
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

сам себе наверное пока тикеты писать не буду
Удобно это, почему бы и нет?
Уже есть подача топлива и интеграция с настройщиком. Нужно заново сделать зажигание - в прошлых редакциях была имплементация, сейчас она временно выключена.
Отлично.
Подача топлива что учитывает, а что нет? Температура входящего воздуха, температура двигателя, лаг форсунок и коррекция лага по напряжению есть? Или просто по карте льет и все?
блин, нужно завести тикет
А там приоритетов нет? Может стоит поставить багтреккер посерьезнее, чтобы поделить тикеты по компонентам, создать на будущее с низким приоритетом?
skype: frig_frig
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: как поженить ежа и ужа

Post by AndreyB »

frig wrote: Подача топлива что учитывает, а что нет? Температура входящего воздуха, температура двигателя, лаг форсунок и коррекция лага по напряжению есть? Или просто по карте льет и все?
Просто по карте в зависимости от оборотов и одного датчика по выбору. Зато с интерполяцией :)
Да, трекер там наивный - good enough для первых десяти тикетов, потом наверное и правда нужно будет переехать на что-то взрослее.
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 »

На мой взгляд для нулевой фазы требуется:
1. точность по углам 1 градус
2. точность времени впрыска десятые милисекунд
3. минимальная событейная модель типа очереди на выполнение по достижению нужных углов
4. тупой расчет уоз и времени впрыска по картам от дросселя-оборотов-темпиратуры
5. на РХХ можно забить, тупо захардкодив, стабилизацию ХХ сделать через кривую УОЗ как у последних карбовых мотоциклов бмв, на оборотах ХХ уоз позднее оптимального на 10гр, с понижением на 50 об график выгибается до оптимального, таким образом обороты хоть частично самостабилизируются в районе требуемых.

Этого хватит чтобы машина при условии хотябы приблезительно адекватных калибровок поехала.

А вот дальше следует хорошо задокументировать код и аппаратную часть, создать тикеты и раздать их выполнение желающим. У меня скоро снизится нагрузка по работе и смогу уделять проекту десяток часов в неделю.
Первое что я планирую сделать это аппаратный логгер, чтобы снять заводские калибровки 1uz-fe т.к. вручную калибровать 280сильный виэйт с VVTI и АКПП как то не хочется )
Снимать данные прямо с проводов через буферные операционники, подключатся втыкая иголки в разьемы и проводку, писать лог в бинарном виде на SD карточку. Это позволит собрать статистику по времени впрыска и углам сдвига фаз по всем режимам с учетом темпиратурных поправок. Соответсвенно полученные данные можно будет обработать и в полуручном режиме построить любые карты под любой алгоритм расчета впрыска - хоть по дросселю хоть по даду хоть по дмрв.
Следующим шагом будет реализация алгоритма расчета наполенния по темпиратуре заряда как это сделанно у Maxi. На мой взгляд в данный момент для наших целей это наиболее подходящий алгоритм, второй вариант это табличынй впрыск по дросселю.
Ну а дальше уже по мере необходимости всякие хотелки типа регуляции ХХ управление АКПП итд итп.

По ШДК предлагаю все же делать отдельную железку или юзать уже готовый, смысла в постоянной езде с ШДК не вижу да и дорого это получается т.к. датчики долго не живут особенно если движок не новый и жрет масло.
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: как поженить ежа и ужа

Post by XDA »

Maxi wrote:
XDA wrote:разработка сводится не только к написанию кода. так как мы разрабатываем физмодель, предлагаю такой вариант:
для начала - то что вы разрабатываете называется эвристическая модель. физмоделью тут пока не пахнет..

в конечном счете любое решение которое вы нагуглите в интернете будет являться эвристической моделью (цепью подгонов под ответ)... для разработки физмодели нужен серьезный набор знаний и опыта. этого всего у вас нет. и это уже stage2.
Вы обладаете даром телепатии, если можете настолько категорично делать такие заявления :)
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
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: как поженить ежа и ужа

Post by AndreyB »

XDA wrote:Вы обладаете даром телепатии, если можете настолько категорично делать такие заявления :)
Полной модели у нас и правда скорее нет, чем есть. Еще есть подозрение, чтот именно товарищ Maxi знает обо всём этом сильно больше нас всех вместе взятых.

Буковками разговаривать вообще непросто и не очень эффективно, надо быть терпеливыми друг к другу.
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 »

russian wrote:
XDA wrote:разработка сводится не только к написанию кода. так как мы разрабатываем физмодель, предлагаю такой вариант:
итерация 1. коллективное обсуждение математики с предложением в виде таблиц, фрагменты в условном коде и т.д.
итерация 2. принятие алгоритмов на следующую версию.
итерация 3. распределение по исполнителям.
итерация 4. коммит и отладка на железе.
го ту 1
Да, но есть нюансы :)
Слишком большое поле вариантов - поэтому есть большой риск погрязнуть в обсуждении. Чтоб не обсуждать всё вечно, я предлагаю итеративный подход улучшения работающего минимума, т.е.

шаг 0: минимально функционирующий программно-аппаратный комплекс
шаг 1: принятие решение, что на текущий момент является самой большой проблемой
iаг 2: улучшение ситуации с проблемой из шага 1
go to шаг 1.

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

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

Выиграет тот из ныне трёх репозиториев, который качественно вырвется вперёд. Когда и за счёт чего это произойдёт - не знаю :(

Со своей стороны могу предложить желающим участвовать в программировании моей редакции заимлементировать тикет номер 1 - это хороший способ ознакомиться с исходниками и попробовать процесс совместной работы. Итак, https://sourceforge.net/p/rusefi/tickets/1/ & http://rusefi.com/forum/viewtopic.php?f=5&t=211
я имел в виду процесс разработки, а не набор стадий :)

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

точность всех процессов, завязанных на углы должна быть до 0.1 градуса. поясню почему: на режимах максимальной мощности УОЗ может составлять 6-10 градусов и десятая доля градуса уже имеет достаточный вес для ликвидации детонации.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
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: как поженить ежа и ужа

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
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: как поженить ежа и ужа

Post by XDA »

russian wrote:
XDA wrote:Вы обладаете даром телепатии, если можете настолько категорично делать такие заявления :)
Полной модели у нас и правда скорее нет, чем есть. Еще есть подозрение, чтот именно товарищ Maxi знает обо всём этом сильно больше нас всех вместе взятых.

Буковками разговаривать вообще непросто и не очень эффективно, надо быть терпеливыми друг к другу.
возможно, не спорю :)
подозрение верно если это MAXI RPD - то да, он знает достаточно много :)
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Post Reply