Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 89 человек погибло с 2000 по 2010.
Тойота: — Да они сами виноваты, путают педали.
Люди: — Хьюстон, у нас проблемы.
NASA: — Ща разберемся, нам надо 10 месяцев и 3 миллиона долларов.
Люди: — На.
Тойота: — 3 миллиона мало, вот вам еще сверху кэшем.
(прошло 10 месяцев)
NASA: — Эй, Тойота, мы у вас пару ошибок в коде нашли, а точнее 7134 нарушения стандартов MISRA, рекурсию, функцию на 740 строк и 9000 глобальных переменных.
Тойота: — А у нас свои стандарты. А вы ваще на Луну летали?
NASA (публично): — Тойота ни в чем не виновата.
(Акции Тойота подскочили на 4,6%)
Люди: — Ну ё-моё.
(спустя 3 года)
Два американских тестировщика (у которых дедушки погибли в Перл-Харбор): — Нет багов? А если найдем?
Национальное управление безопасностью движения на трассах США (NHTSA) подсчитало, что с 2000 года по 2010 год в авариях погибло 89 человек и 57 получили увечья, в связи с неисправностями электроники.
Toyota отрицает вину электроники и считает, на основе собственного расследования, что виновата «залипающая» педаль газа и плохо подогнанные коврики, но отзывает 8,5 млн автомобилей по всему миру.
Жалобы продолжают поступать.
NHTSA начинают собственное расследование, привлекают на помощь NASA.
В ходе десятимесячного расследования спецы NASA выявили, что софт не соответствует стандартам MISRA (Motor Industry Software Reliability Association) и содержит 7134 нарушения. Toyota ответили, что у них свои собственные стандарты.
20 декабря 2010 года Тойота отвергает все обвинения, но выплачивает 16 миллиардов долларов в досудебном порядке по искам и выпускает апдейт софта для некоторых моделей машин и отзывает 5,5 миллиона автомобилей.
После объявления результатов исследования NASA акции Toyota на токийской бирже выросли на 4,6%.
В 2013 году в суд Оклахомы подается иск об аварии 2007 года, в которую попали две девушки на Toyota Camry 2005 года выпуска. Одна из них скончалась, другая провела пять месяцев в больнице с травмами спины и головы. Toyota не признала своей вины. Они заявили, что причиной аварии послужило то, что водитель перепутала педали газа и тормоза, а, когда поняла свою ошибку и начала тормозить, — было уже слишком поздно.
К делу подключаются два инженера: Майкл Барр и Филипп Купман. На 20 месяцев разбирать 280 000 строчек кода, писать отчет на 800 страниц. Каждый.
Адрес был засекречен. Номер отеля, в котором работали инженеры, круглосуточно охранялся — охрана следила, чтобы никто не вносил и не выносил никаких бумаг. Все телефоны и интернет были отключены.
Тойота отзывала более 10 миллионов автомобилей по всему миру. Вину так и не признали.
По словам Майкла Барра, их отчет засекретили. Так же засекретили условия контракта, на условиях которого им предоставили исходный код Тойоты. Но Барр рекомендует погуглить транскрипт материалов слушания.
- TRANSCRIPT OF MORNING TRIAL PROCEEDINGS HAD ON THE 14TH DAY OF OCTOBER, 2013
- BOOKOUT V. TOYOTA 2005 Camry L4 Software Analysis
- KILLER APPS Embedded Software’s Greatest Hit Jobs
Вот в таких условиях работали аналитики:
И вот такой отчет написали:
Как искали и что нашли
Главный подопытный — система электронного управления дроссельной заслонкой (ETCS).
Специалисты NASA сканировали микросхемы рентгеном.
В качестве причин ошибок рассматриваются даже космические лучи.
И код на С чекала:
И тут очередь дошла до кода.
Нарушения стандартов MISRA (и NASA)
По прикидкам, на каждые 30 нарушений стандартов MISRA приводят к одному «серьезному багу».
- В MISRA-C:1998 перечислено 127 правил (93 обязательных и 34 рекомендательных).
- В MISRA-C:2004 141 правило (121 обязательное и 20 рекомендательных). Правила разделены на 21 категорию.
- В MISRA-C:2012 143 правила (каждое из которых может быть проверено статическим анализатором кода) и 16 директив (правил, соответствие которым открыто для интерпретаций или связано с процессами и процедурами). Правила делятся на обязательные, требуемые и рекомендательные; могут распространятся на отдельные единицы трансляции или на всю систему. Также правила разделены на Decidable и Undecidable.
Тойота в свои стандарты позаимствовало только 11 правил MISRA.
Инструменты анализа NASA могли проверить 35 правил MISRA и 14 из них были нарушены.
[Источник — Отчет NASA, приложение А: Software, стр 28]
Итого: 7134 нарушения (по подсчетам NASA) или 81 514 (по подсчетам Майкла Барра).
10 правил NASA
Статья на Хабре — «10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками»
- Restrict to simple control flow constructs.
- Give all loops a fixed upper-bound.
- Do not use dynamic memory allocation after initialization.
- Limit functions to no more than 60 lines of text.
- Use minimally two assertions per function on average.
- Declare data objects at the smallest possible level of scope.
- Check the return value of non-void functions, and check the validity of function parameters.
- Limit the use of the preprocessor to file inclusion and simple macros.
- Limit the use of pointers. Use no more than two levels of dereferencing per expression.
- Compile with all warnings enabled, and use one or more source code analyzers.
[Источник — spinroot.com/p10]
Длина функции ограничивается 60-75 строчками кода, после удаления пустых строк и комментов. Более 200 функций в коде Camry05 превосходили заданную длину. Одна из функций была на 740 строк.
Переменные
31 имя было объявлено несколько раз в различных областях (in different scopes). Самое частое имя — sts_flags1, которая появлялось в 57 различных областях
А вот это стоит показать покрупнее.
Запутанность кода
Граф управления потоком простой программы.
Цикломатическая сложность программы выше 50 — показатель, что программа не поддается тестированию.
У Тойоты в ETCS-коде:
- 67 функций со сложностью over 50
- Сложность Throttle angle function = 146; 1300 строк кода, без плана для unit test
Рекурсия
В коде Тойоты использовалась рекурсия, и каждая проблема с ней приводила к перезагрузке процессора (CPU reset).
Ну и что?
Количество
«Программирование сегодня — это гонка, в которой соревнуются разработчики, стремящиеся построить большие и обладающие защитой от дурака программы, и вселенная, порождающая всё больших и качественных дураков. На данный момент вселенная побеждает.»
— Рич Кук, писатель-фантаст
СМИ
- Власти США оправдали Toyota («Коммерсантъ» от 09.02.2011)
- U.S. Department of Transportation Releases Results from NHTSA-NASA Study of Unintended Acceleration in Toyota Vehicles (February 8, 2011)
- Toyota's runaway-car worries may not stop at floor mats
- NHTSA-NASA Study of Unintended Acceleration in Toyota Vehicles
- Analysis of Toyota ETCS-1 System Hardware and Software
- Toyota Recall Timeline
Отчеты по расследованию
Красочная презентация Филиппа Купмана:
NASA Report on Toyota Unintended Acceleration Investigation
NASA Executive Summary
NASA Full Report
NHTSA Report on Toyota Unintended Acceleration Investigation
P.S.
Куда ни приеду, моя работа заключается в применении одной простой формулы. Я храню тайны.— Чак Паланик «Бойцовский клуб», 1996 год.
Это элементарная арифметика.
Задача из учебника.
Если автомобиль новой модели, изготовленный моей компанией, выехал из Чикаго на запад со скоростью 60 миль в час, — и заклинивает задний мост, машина разбивается и сгорает со всеми, кто попался в ловушку ее салона, — стоит ли моей компании возвращать модель на доработку?
Берем общее количество выпущенных машин данной модели (A), умножаем на вероятное количество машин с неисправностью (B), потом умножаем результат на среднюю стоимость решения вопроса без суда (С). A умножить на B умножить на C. Равняется X. Столько стоит не возвратить модель на доработку.
Если X больше стоимости возврата — мы возвращаем машины, и никто больше не пострадает.
Если X — меньше стоимости возврата — возврата не будет.
— И часто бывают такие аварии?— к\ф «Бойцовский клуб», 1999 год.
— Вы даже не представляете.
— А в какой компании вы работаете?
— В очень крупной.
Комментарии (254)
dymanoid
29.09.2016 10:38+6По работе ковыряюсь иногда в официальных сорцах драйверов для embedded железяк, применяемых в том числе и как авто-компоненты. Но не в шасси, а как мультимедиа и инфотейнмент. Поставщик — серьёзная компания, один из крупнейших игроков на рынке. Так вот, там — тихий ужас. Такое впечатление, что код не только не проверялся статически, но и не тестился вообще…
nerudo
29.09.2016 11:06+6Это общая беда embedded-приложений. Проблема в том, что составить полноценную модель взаимодействия с железякой крайне сложно. Ну а многие производители добавляют радости, создавая даташиты с ошибками и умолчаниями, так что действовать зачастую приходится «методом тыка». Плюс культура самих разработчиков ниже — они больше «железячники», чем программисты.
mikelavr
29.09.2016 12:40+1С последним вынужден согласиться. Но только по той простой причине, что у нас минимум половина рабочего времени тратится на железо.
MacIn
29.09.2016 17:50+10Ничего удивительного. По моим наблюдениям, многие «железячники» (одиночки) считают, что производство устройства — это искусство, подвластное избранным, а вот написать к нему код он сможет сам, так, на коленке. Это ж вообще мелочь. Получается работающий тихий ужас. Они очень обижаются, когда им на пальцах объясняют, почему их код дурно пахнет, потому что… ну… они ж железку сделали, че тут, программа какая-то.
vershov
04.10.2016 23:01Не надо подходы из инфотейнмента проецировать на царство autosar: там все по-другому ))
vitaly_KF
29.09.2016 10:43-3Что там можно было так наговнокодить то? Там же, если я правильно понимаю инжекторная электронника — считал показания датчиков, рассчитал параметры подачи смеси… Ну abs, ну srs, ну… да хоть что угодно, там же нет никакого ИИ, только какие-то базовые алгоритмы + набор обязательных/рекомендательных правил. Бред какой-то… =)
WildRat
29.09.2016 15:33В новых авто (поколения drive by vire) вы не напрямую управляете дроссельной заслонкой, а только подаёте сигнал с датчика педали, а «компьютер» сам решает как и когда на этот запрос реагировать. Тоесть будет ли считан сигнал с датчика, будет ли он правильным и какой будет результат — зависит от программы и ошибок в ней.
vitaly_KF
29.09.2016 19:13+4Я это понимаю. В том и дело — задача компьютера — считать показания со всех датчиков, в данном случае и педаль тоже датчик и скорость движения и перегрузки и все что угодно — все датчики. Надо лишь рассчитать правильно все параметры для дальнейшего движения… Но… 81 514 ошибок в коде, Крал! Да код компьютера управлявшего полетом Апполона наверное меньше чем этот тойотовский изврат.
georgevp
30.09.2016 10:10+1Компьютер, установленный на лунном корабле, имел оперативную память всего около 4 Кбайт (ферритовое ОЗУ на 2048 15 битных слов), ферритовое ПЗУ на 36 864 15 битных слов, состоял из 5000 микросхем, весил 30 кг и стоил 150 тысяч долларов… Но даже маломощный компьютер способен на многое — если не загружать его навороченными пользовательскими интерфейсами. Панель управления компьютером содержала всего 19 клавиш и несколько сигнальных транспарантов и цифровых индикаторов. Поэтому компьютер занимался только прямыми обязанностями, не отвлекаясь на рисование «окон» на экране. И благодаря этому он мог осуществлять управление лунным кораблём в реальном времени. На компьютере могло выполняться параллельно несколько задач, причём управляющая программа учитывала их приоритеты: более важные задачи, такие, как управление кораблём, выполнялись в первую очередь, а, например, выдача информации на индикаторы могла и подождать десяток другой миллисекунд. Сложные расчёты траекторий, требующие большого объёма вычислений, были проделаны на мощных компьютерах на Земле заранее, ещё до полёта, и их результаты были загружены в бортовой компьютер, который «пользовался готовыми ответами (http://www.studfiles.ru/preview/5239420/page:59/)
FForth
30.09.2016 15:29Чужие: странная архитектура инопланетных компьютеров.
http://www.ferra.ru/ru/techlife/review/philae-computer/
vitaly_KF
29.09.2016 19:14-5А вот я если бы минусанул — написал бы почему. Молчуны-минусовщики, чего стесняемся?))
jehy
03.10.2016 19:02+2Минус не ставил, но поясню. Это обывательский комментарий без погружения в проблему, который очень сильно огорчает. Примерный аналог «ну что могло не так пойти с ракетой Маска? Просто взлетел и сел обратно. Причем туда же, откуда взлетел! Чего проще? Считал показания датчиков, рассчитал смеси и всё...»
Ryav
29.09.2016 10:55Если дело в коде ETCS, то в чём именно? Разве нельзя жёстко привязать управление дросселем, основываясь на глубине нажатаия педали газа? Иначе говоря, без измений показаний датчика нажатия педали не производить отклонения дросселя от начального. В этом случае проблема будет заключаться только в аппаратной части, а именно в неисправности датчика. Или же в приводе заслонки. Так что претензии к разработчикам мне неясны.
Tdr
29.09.2016 11:06+1Прямой связи между силой нажатия и углом отклонения нет, так как подобное поведение будет приводить к неэффективной работе двигателя. Учитывается при этом и текущий режим работы — скорость, обороты, состав смеси и т.д. Лучше загуглить, я не профи в этом :)
Ryav
29.09.2016 11:13Это понятно, но почему невозможно прописать жёсткое условие, что любое отклонение недопустимо, если не было изменений по силе нажатия на педаль?
mikelavr
29.09.2016 11:17Потому что внешние условия меняются. Пример. Вы «мгновенно» нажали на педаль до упора и держите. Положение педали не изменяется. Двигатель начал раскручиваться, автомат начал переключение передач. В процессе разгона параметры подачи воздуха и топлива будут изменяться!
Ryav
29.09.2016 11:28В посте речь идёт о том, что 2 девушки разбились на автомобиле из-за того, что автомобиль начал самопроизвольно разгоняться (вместо желаемого торможения). То есть если воздействие на педаль было, то поведение машины верное, если же воздействия на педаль не было, то почему не отселки это жёстким условием в программе?
mikelavr
29.09.2016 11:39Любопытно, что в любой машине с АКПП педаль тормоза сильнее педали газа.
Например для АКПП есть понятие STALL TEST: удерживая машину педалью тормоза, нажать педаль газа до упора, и считать показания тахометра. Это штатный тест, при котором машина стоит на месте. Вопрос — почему девушка не нажала на тормоз до упора?
Если же машина с МКПП — то выключить сцепление, и тяга исчезнет.
То есть водитель на исправной машине в принципе может предотвратить разгон. Тем не менее такие аварии происходят.yshurik
29.09.2016 12:32Большая мощность тормоза чем двигателя при любых условиях работы двигателя это стандарт безопасности которому должны следовать все автопроизводители.
Особенность гибридной Тойоты в том что в трасмиссии совместно с двигателем еще включен через планетарную передачу и электродвигатель/генератор.
Соответственно электродвигатель может добавлять мощности вместо того чтобы крутить двигатель на очень неэфективных режимах (вот в этом и экономичность) или наоборот заряжать батарею отбирая мощность от двигателя.
Тут есть один момент:
Формально Тойота сделал все правильно по стандарту если реализовала большую мощность тормоза чем двигателя.
Но если они не реализовали большую мощность тормоза чем двигатель+электродвигатель, то тогда ошибка в софте которая приведет к работе в режиме максимальной мощности и двигателя и электродвигателя приведет к тому что вы даже не сможете остановить машину тормозом и с большой вероятностью попадете в аварию.mikelavr
29.09.2016 12:39В конце концов, почему бы не нажать на кнопку «Engine off» или выключить замок зажигания?
Ну пусть при этом заблокируется рулевая колонка, но по крайней мере разгона не будет.yshurik
29.09.2016 12:44В тойотах кнопка, но кнопка скорее всего «програмная» а не такая что отключает питание всех систем автомобиля. В современном автомобиле остается еще много систем все еще подключеных к питанию даже с «engine off». Так что опять если ошибка в коде и кнопка…
mikelavr
29.09.2016 12:51Кстати, многие автопроизводители (в Европе — в особенности) делают машины с кнопкой старт-стоп по схеме «добавим кнопку и еще один контроллер с силовыми реле для управления замком зажиания».
Stas911
29.09.2016 21:21+1Двигатель нельзя глушить, т.к. отключится и гидроусилитель руля. У меня на старой Рено однажды из-за проблем с электрикой двигатель на ходу заглох, так я едва не протаранил авто, когда нужно было поворачивать, а усилитель отключился неожиданно (благо скорость была 5 кмч во дворе)
NikitosZs
01.10.2016 02:40Эм… ГУР? Серьёзно вот это? Пишут, что при отключении ГУРа рулить чуть сложнее, чем на машине без ГУРа, ведь привод то всё равно есть.
Лично я бы больше волновался за усилитель тормоза.Meklon
01.10.2016 10:34У меня вообще усилителя нет. Нормально. Видимо, тут проблема в нарушениях рефлексов. Резко изменяется отзывчивость. Рулить можно спокойно, но времени привыкнуть нет.
MacIn
01.10.2016 13:51Это не одно и то же. На машине с ГУР при отключении оного рулить намного тяжелее, чем в машине без ГУР. Даже если взять примерно одинаковые комплектации, но с ГУР и без него. Под усилитель руля ставят редуктор с уменьшенным передаточным отношением.
MacIn
01.10.2016 13:53Вопрос времени. С ГУР ты можешь рулить одним пальцем, без него надо прикладывать усилие, девушкам может даже двумя руками. Пока вспомнишь, как рулить с перехватами — здравствуй, столб.
Muzzy0
05.10.2016 15:37На заборе много чего пишут. У меня есть, с чем сравнить. Когда-то ездил на машине без усилителя руля и тормозов (ВАЗ-21011). Руль на скорости достаточно лёгкий, но на месте… Тормоза тоже значительно тяжелее.
Опять же, это очень легко проверить, если покрутить руль у заглушенной машины на месте от упора до упора: крутить придётся двумя руками и прикладывать ощутимое усилие. Тормозить — то же самое: давить со всей силы, вжимая филейные части в спинку сиденья.MacIn
05.10.2016 15:44Когда-то ездил на машине без усилителя руля и тормозов (ВАЗ-21011).
Опять же — это не то. При отключенном ГУРе рулить еще тяжелее, чем если его вовсе нет. Так же и с тормозами. Продавить ваккумник тяжелее, чем если его вовсе нет.Muzzy0
05.10.2016 16:12Отключенный ГУР крутил и вакуумник продавливал. Не принципиальное отличие :)
А вот для тех, кто всю жизнь ездит с ГУРом и ваккумником — старый жигуль будет луноходом просто :)MacIn
05.10.2016 16:46Не принципиальное отличие :)
Зависит от машины. На старом Мерседесе намного тяжелее руль крутится без ГУР чем на классике, хотя и там и там редуктор и разница по массе не так велика.
jawaharlalnehru
29.09.2016 21:53В моём Вольво, пока не переведёшь рычаг АКПП в режим парковки, кнопка выключения двигателя на нажатие не реагирует.
zBit
30.09.2016 09:43То что на включение не реагирует — логично, но не могу уследить логику почему выключать нельзя…
jawaharlalnehru
30.09.2016 13:09не знаю, но сегодня проверил ещё одну штуку: не обязательно вообще мотор выключать, на скорости АКПП запросто переводится в нейтралку, так что шансы есть.
murzix
29.09.2016 12:48+2Еще есть ручник =) Он в критические моменты может быть полезен.
k102
29.09.2016 14:59Не везде он механический, а электронный, насколько я знаю, не сработает во время движения быстрее чем какой-то порог (5км/ч или типа)
alprokof
29.09.2016 21:53Возможно так не везде, но на VW если нажать электронный ручник и держать, он должен делать экстренное торможение.
zBit
30.09.2016 09:40На некоторых VW с механикой есть такая кнопка и там она срабатывает всегда, даже держать не надо. Читал на форумах истории о том как на ходу при включенной передаче эту кнопку «случайно» нажимали :)
И если нажать эту кнопку, то делается не экстренное торможение, а просто блокируются задние колёса. Я на своей так на нейтралке катился со скоростью 20км/ч (на полигоне), нажал (решил посмотреть что будет), машина с визгом остановилась и было явно, что АБС не сработала. Есть возможность сделать экстренное торможение резким ударом по педали тормоза (впрочем как и у любого другого автомобиля с АБС), тогда и АБС срабатывает и аварийка включается сама.WildRat
30.09.2016 12:45Задние блокировались потому, что привод задний — это не так страшно. В переднеприводном (или полноприводном) автомобиле всё будет опаснее — заблокируются передние колёса и автомобить будет неуправляем.
zBit
30.09.2016 13:46У меня как раз полноприводный, но на МКПП, там всё проще, если вдруг движок заглючит, то можно выключить его или сцепление выжать. Если сцепление заглючит, то можно без него на нейтралку переключиться, мы же не преследуем цель сохранить КП и движок в таких ситуациях. По идее можно и на скорости кнопку парковочного тормаза нажать, только потом, боюсь, КП на капиталку пойдёт :(
Так называемый «ручник» в любой машине блокирует задние колёса, это на сколько мне известно… Не знаю, может и есть автомобили у которых «ручник» блокирует передние колёса, но я такие не видел :)WildRat
30.09.2016 15:08Я подумал, что вы про кнопку отключения двигателя.
zBit
30.09.2016 15:20Если двигатель на ходу заглушить на любой машине со включенной передачей, то будет торможение двигателем, двигатель не сможет заблокировать колёса, если только его не заклинит.
У меня, например, при включенном автохолде при заглушении двигателя (а так же если отстегнуть ремень безопасности или открыть водительскую дверь) автомобиль автоматически встаёт на парковочный тормаз, но если машина будет ехать (проверял) и заглушить двигатель, то парковочный тормаз не включится.
ArmorDarks
01.10.2016 04:03+2Многие авто способы ехать даже с ручником, причем на некоторых авто двигатель настолько мощный, что ручник что есть, что его нет. Я так однажды целый день проездил с ручником, и только вечером заметил, что ручник-то взведен до упора (в моем случае был механический ручник)...
strang3r
29.09.2016 15:34+2Ручник не сдержит разбушевавшийся движок. Бывали даже случаи что люди катались с ручником и удивлялись «а чо эта машина тупит?».
gorbln
29.09.2016 17:19Более того, если тормозить плавно — ручник перегреется и сдохнет. В смысле — перестанет держать. А если машина едет километров так 150 — это случится в течение нескольких секунд. А если резко дёрнуть ручник на 150 км — ну, скорее всего машина перевернётся в результате заноса задней оси.
А по поводу «катались с ручником» — что значит «бывали случаи»? Подозреваю, что такое бывало у всех. У меня так каждую зиму, далеко не по разу. Колодки примерзают и привет. Узнаю, что задние колёса не крутятся, когда поворачивать начинаю, и зад уносит. Дабы скорости маленькие, беды не случается. =)Muzzy0
05.10.2016 15:39У меня за несколько лет колодки не примёрзли ни разу. Ручником пользовался постоянно.
MacIn
05.10.2016 15:44Барабанные примерзают.
Muzzy0
05.10.2016 16:14Именно барабаны ни разу не примёрзли. 5 лет, почти ежедневные поездки, ручник всегда и он реально держит.
MacIn
05.10.2016 16:47У меня примерзали. Вы где живете — какой климат — континентальный? У меня приморский, часто температура через 0 гуляет. Соответственно, конденсат — частое явление и замораживание оного.
Muzzy0
06.10.2016 10:57Дело было на Урале. Воздух весьма влажный. В межсезонье гуляет через ноль постоянно. Многие жалуются, что примерзает, а потому пользуются эпизодически. Я на стояночный тормоз ставил всегда и у меня ни разу ничего не примёрзло.
Собственно, я не вполне понимаю, как конденсат будет проникать между поверхностями колодки и барабана, если они плотно прижаты друг к другу. Вот если между ними есть зазор, то представить можно.
Вообще, в такие глубины вопроса я не вникал — просто ставил и всё. Кстати, у стояночного тормоза есть такая штука, как механизм автоматического подтягивания. Маленький такой храповичок. Как раз, для компенсации износа колодок. Может, потому ничего и не примерзало, что я ставил стояночный тормоз (у меня это был «ножник») после каждой поездки, соответственно, колодки были подтянуты и конденсат между колодкой и барабаном не попадал.Nagh42
06.10.2016 12:13Ларчик открывается просто, чаще примерзают не сами колодки (хотя это тоже имеет место, даже с дисковыми тормозами, но там обычно достаточно покачать вперед-назад и отрываются), а тросик ручника под оплетку которого попадает вода.
MacIn
06.10.2016 19:58как конденсат будет проникать между поверхностями колодки и барабана, если они плотно прижаты друг к другу. Вот если между ними есть зазор, то представить можно.
А он всегда есть. Усилие там не такое большое, как на гидравлике, да и поверхность трения может быть изношена, вплоть до борозд.
Кстати, у стояночного тормоза есть такая штука, как механизм автоматического подтягивания. Маленький такой храповичок. Как раз, для компенсации износа колодок
Это от машины зависит. На классике и Волге, например, есть специальные распорные кольца в тормозных цилиндрах, которые продвигаются вовне по мере износа колодок и не дают им отойти слишком далеко, там ничего регулировать не надо.
Muzzy0
06.10.2016 11:09Вот, нашёл:
Обведённая красным деталь — это и есть храповый механизм, который разводит колодки по мере износа. Полезен ещё и тем, что зазор между барабаном и колодкой не увеличивается по мере износа, а значит, тормоза срабатывают на доли секунды быстрее. Чтоб колодки были подведены, надо просто постоянно пользоваться ручником.
Lyova5
29.09.2016 15:34Там же скорее всего электронный ручник кнопкой с защитой от нажимания на скорости.
SuhoffGV
29.09.2016 15:34Не 100% вариант. Был опыт езды на Ваз 99 по грунтовке после 2-х недельных дождей. Задние арки быстро забивались глиной вперемешку с соломой и колеса переставали крутиться. На скорость это ни влияло никак. Проблема была только тронутся если пришлось остановиться. Тогда приходилось чистить задние арки, трогаться и ехать дальше.
varnav
29.09.2016 13:48У АКПП тоже есть нейтраль, и это — соседнее с D положение!
dimas
29.09.2016 18:26А в него можно переводить на ходу? Например обычно в P и R на ходу переводить запрещено, и если переключатель электрический, его возможно проигнорируют…
Так и нейтраль могли «защитить от случайного выключения на ходу»…MacIn
29.09.2016 18:44P сломает коробку, потому что включает механическую блокировку выходного вала. Реверс тоже, потому что мост и движок будут пытаться «скрутить» коробку винтом. А нейтраль — нет. Но это у старых коробок, как с современными — не знаю.
varnav
29.09.2016 18:52http://www.popularmechanics.com/cars/how-to/a7890/if-you-shift-an-automatic-while-driving-will-you-damage-your-engine-11413677/
braindamagedman
30.09.2016 10:00На моем вариаторе (2007 г) можно, даже случайно рукой задев рычаг на ходу, переключить в N (даже не нужно кнопку жать на рычаге). Сразу размыкается связь коробка-двигатель (просто снимается давление с пакета фрикционов, насколько я понимаю). Ничего критичного для коробки не происходит.
dimas
30.09.2016 12:47В данном случае критичность не для коробки, а для безопасности движения…
ArmorDarks
01.10.2016 04:11В этом нет какой-либо опасности. Машина никак не реагирует, она просто продолжает катиться по инерции, как буд-то вы не держите ногу на педали газа. Разница только в том, что на нейтралке не будет происходить торможения двигателем.
dimas
01.10.2016 04:27Ну, как минимум не рекомендуют обычно двигаться накатом в условиях плохого сцепления с дорогой.
Плюс, в случае необходимости быстро сманеврировать, будет дополнительная задержка на втыкание передачи…
ArmorDarks
01.10.2016 04:37Суть в том, что переключение на нейтралку не приведет к каким-либо катастрофическим последствиям.
ArmorDarks
01.10.2016 04:10На нейтралку на ходу конечно же можно переводить. Во всяком случае, пока что не встречал иномарок с автоматом, где этого сделать было бы нельзя или где коробка игнорировала бы такое переключение. На Тайотах такого точно не замечал.
tearexs
29.09.2016 15:43+1То есть водитель на исправной машине в принципе может предотвратить разгон. Тем не менее такие аварии происходят.
Опытный водитель, понимающий различные события и умеющий на них адекватно реагировать.
EviGL
29.09.2016 21:53Тут надо учитывать, что необходимая мощность тормозов чтобы не дать машине тронуться меньше, чем мощность, необходимая чтобы её остановить во время разгона «газ в пол». Как минимум, торможение в пол в такой ситуации приведёт к неконтролируемому сносу автомобиля.
Но, я так понимаю, по факту, хуже: у жертв говнокода тойоты, как написано в презентации в статье, интенсивное торможение вызвало перегрев тормозной системы, повреждение ротора тормозной системы, как следствие, торможение становится неэффективным и уже не может остановить машину.
Правильное решение — сбросить коробку в N, я так понимаю, это можно сделать на всех автоматах. Но надо понимать, что счёт идёт на секунды, человек находится в состоянии глубокой паники, а есть много людей с водительскими правами, которые не ответят на этот вопрос даже в спокойном состоянии.MacIn
29.09.2016 22:16повреждение ротора тормозной системы
Диски, друзья, тормозные диски.
как следствие, торможение становится неэффективным и уже не может остановить машину.
Нет. Перегревается диск, колодки и жидкость. Жидкость закипает. То, что диск от нагрева потом поведет винтом — дело десятое. На больших скоростях при резком торможении диски очень быстро накаляются докрасна.
Nagh42
29.09.2016 21:53Вполне разумное предположение. Я тоже считал, что выжав тормоз, можно остановить автомобиль даже с полностью открытой дроссельной заслонкой.
Но, обратите внимание на презентацию Ф.Купмана. Оказывается это не всегда так, и на мой взгляд, именно проблема с тормозами является истинным и окончательным виновником тех трагических случаев (видео из презентации — https://www.youtube.com/watch?v=VZZNR9O3xZM). То есть по факту имеем две проблемы — «залипшая» педаль газа и фактически неработающие тормоза.
Почему те водители не предприняли других действий для остановки автомобиля тоже весьма понятно. Ситуация развивается весьма быстро, присутствует паника и шок от осознания того, что водитель все сильнее давит педаль тормоза, а автомобиль продолжает разгоняться (эта же проблема наблюдается, когда просто путают педали). Плюс необходимость крутить рулём, объезжая препятствия. Человек не успевает распознать и осознать в чем проблема и сделать банальную вещь — перевести коробку в нейтраль. Отключение зажигания чревато «потерей» тормозов, без усилителя далеко не все и не на каждой машине смогут создать достаточное усилие на тормозной педали для эффективного торможения.mikelavr
30.09.2016 08:35Очень интересная информация, спасибо!
Дело усложняется тем простым фактом, что положением «N» на АКПП пользоваться приходится крайне редко. По сути в режиме обычных поездок — никогда. Поэтому мышечной памяти перехода D->N банально нет. А вот D->R есть, и на видео в статье это тоже было — человек переключил коробку в «задний ход», после чего совершил вторую аварию.
WildRat
30.09.2016 12:49«Потеря тормозов» будет в случае отключения двигателя только если он разъеденён с коробкой, тоесть нет торможения двигателем. Да и эта потеря будет только если несколько раз нажать и отпустить педаль тормоза.
mSnus
30.09.2016 09:54Скорее всего, водители просто не успевали отреагировать.Те, кто успевали, могли не войти в печальную сводку.
Кстати машина, вдруг заглушенная на полном ходу, становится неуправляемым скользящим по асфальту со всей набранной скоростью двухтонным кирпичом, в котором из средств безопасности — только ремни и немного тормозов без усилителей.
Поэтому естественная реакция — затормозить штатными средствами довольно правильная. А машины с МКПП в США скорее исключение, чем правило.
Выжать педаль до упора быстро и эффективно (ударом) надо тренироваться, иначе эффективность торможения далека от требуемой в таких экстремальных условиях.
В общем, надо быть опытным водителем и быть начеку, чтобы успеть усмтрить взбесившийся автомобиль. Вряд ли девушки на семейном седане Camry из этой категории…gorbln
30.09.2016 23:56Ну, по поводу усилия — не надо недооценивать силу ноги человека. Тем более под адреналином. Где-то читал, что даже в не особо пугающих ситуациях, сила нажатия достигает 200 кг, и охотно в это верю. А 200 кг на педали — это весьма дофига, и хватит, чтобы надёжно заблокировать колёса.
mSnus
02.10.2016 02:14Понимаете, там в трубопроводах масло определенной вязкости, да и нарасширение шлангов часть сил потратится, и чтобы все это сработало экстренно быстро, по педали надо бить резким движением. Разница примерно как рукой «нажать на воду» и «стукнуть по воде».
Иначе давить вы будете слишком долго для эстремальной ситуации, даже если вы очень сильный. Пристегнитемь и попробуйте на пустой прямой дороге, увидите, насколько классные на самом деле тормоза у вашей машины ))
dreamwait
01.10.2016 02:40В положении D — двигатель просто заглохнет при таком тесте. И есть еще ручник и замок зажигания — это просто неготовность к экстремальным ситуациям… Если бы они:
1. Вдавили педать тормоза до упора
2. Дернули ручник до упора
3. Выключили зажигание
при любом из этих действий авто остановится!!!MrShoor
01.10.2016 04:30Про первое действие ничего не могу сказать.
Пункт два — ручник не удержит машину, у которой педаль в пол. Вообще никак не удержит.
Пункт три — современные машины с АКПП не глушат двигатель если рычаг скоростей не стоит в положении P. Т.е. можно завести машину, поставить на D, выключить зажигание и продолжать ездить.
Правильный вариант: выбить коробку передач на N, тормозить хоть педалью тормоза хоть ручником. Но к сожалению этому почему-то никто не учит.
WildRat
29.09.2016 15:36Для «компьютера» воздействие на педаль это (в итоге после считывания с датчика) значение в ячейке памяти, а с ним много чего может случится если в программе есть ошибки. Да и кусок кода, тоже, может неправильно реагировать на это значение, даже если оно соответствует действительности.
А что «отсекать»? Педаль не нажата или педаль вдавлена до упора — это нормальные ситуации, как их «отсекать»?
Tdr
29.09.2016 11:19Условия дорожные меняются. Например, круиз контроль, при котором газ вообще не нажимается. Машина едет в горку и двигатель увеличивает обороты для поддержания скорости.
Но, в целом, я думаю, что если чего-то в коде нет, то на это была причина (или это баг). Все таки не совсем идиоты софт пишут.
mikelavr
29.09.2016 11:21+2Опять же «не было изменений» — педаль у нас аналоговая, а параметр на выходе цифровой. Следовательно, есть АЦП с определенной точностью. Младший бит после оцифровки будет «дрожать». Или не один бит. Усреднять по времени? Появляется время реакции системы на управляющее воздействие — а пользователь жалуется, что машина «тупит».
alltiptop
29.09.2016 11:26Это если 8 уровней нажатия, разве что. Хотя не знаю как там у педали газа/тормоза, может и правда 8 (а не 1024+ как у планшетов/джойстиков/геймпадов и т.д.)
mikelavr
29.09.2016 11:33Посмотрел в OBD2 — все throttle position там 8-bit. Правда внутри ECU может быть и другое значение.
Кстати, в OBD2 положений педали газа несколько. «Просто положение», относительное, и пять абсолютных. Выбирайте на свой вкус :)
Ryav
29.09.2016 11:31Зачем так сложно? Начинайте считать изменение с определённого порога, отсекая тем самым реакцию на дребезг.
mikelavr
29.09.2016 11:34+1Я пытаюсь объяснить, что проблема достаточно сложна, чтобы иметь много простых, но неправильных решений.
Ryav
29.09.2016 12:12Да, но защита должны быть проста и железна: разрыв, жёсткое условие. Если на защиту, влияющую на продолжение жизни пользователя, накладывать много различных условий, вероятность её отработки сокращается. И проектирование системы должно начинаться как раз с защиты.
mikelavr
29.09.2016 11:10Управлять нужно не только количеством воздуха через дроссель, но еще и количеством топлива через форсунки.
Даже в механическом карбюраторе, который вроде бы подходит под ваше описание «прямой связи» педали и заслонки, есть ускорительный насос — конструкция, которая вспрыскивает дополнительное количество топлива, если водитель нажимает на педаль газа быстро. Это показывает, что важно не только положение педали газа, но и скорость/ускорение ее нажатия. Кроме того, есть экологические требования, то есть нужно удерживать стехиометрический состав топливно-воздушной смеси (из за этого первые модели машин с электронной педалью газа были весьма задумчивы). А в современной машине есть еще АКПП, которая работает в связке с двигателем, и они решают общую задачу, следовательно влияют друг на друга.Ryav
29.09.2016 11:14Я говорю не о прямой связи педаль-заслонка, а о жёстком условии, при котором изменение положения дросселя производится только при изменении показаний датчика от педали.
mikelavr
29.09.2016 11:31+1Кроме датчика педали, у ECU есть масса других управляющих параметров:
— датчик положения коленвала
— датчик положения распредвала
— температура входящего воздуха
— давление входящего воздуха
— температура охлаждающей жидкости
— давление топлива
— датчик кислорода в выхлопных газах (или несколько)
— датчик температуры катализатора (или несколько)
— напряжение бортовой сети
И еще аварийные алгоритмы работы в случае, если какой то из датчиков сегодня не работает, а пользователь все таки хочет ехать (возможно на сервис).Ryav
29.09.2016 11:36Почему не берут за основу модель с тросиком? Там дроссель на открытие ну никак не пойдёт без воздействия на педаль. Дроссель не открывается — нет воздуха, значит получается бедная топливная смесь, значит обороты двигатель не развивает, машина быстрее не едет.
mikelavr
29.09.2016 11:41Потому что модель «без тросика» имеет больше мощность, меньше потребление, лучше экологичность. Сплошные потребительские плюсы.
Alexsandr_SE
29.09.2016 12:31+1Я бы предпочел тросик :) как нажал, так и поехал. А автоматика пущай максимально подстраивает остальные параметры. Какой выигрыш сейчас полной автоматики и простого инжектора в одинаковых условиях ускорения?
mikelavr
29.09.2016 12:36По потреблению топлива — раза в полтора при прочих равных условиях.
varnav
29.09.2016 13:52Ну прям уж — хотите сказать что машина становится в полтора раза экономичнее только за счёт электронной педали газа?
mikelavr
29.09.2016 13:58Скорее все же за счет ECU. И наличие электронной педали (и электронного же дросселя) позволяет ECU полностью управлять ситуацией, а не компенсировать то, что пользователь делает с педалью газа и тросиком к дросселю.
InSys
29.09.2016 19:24На самом деле да, уменьшается потребление топлива за счет более точной смеси в каждый момент времени. Но про полтора раза вы сильно погорячились.
Если взять инжектор без электронной педали — то в прошивках закладывают коррекцию на изменения нажатия педали газа на циклы вперед. В двух словах это не объяснишь, но благодаря совокупности этих калибровок итоговая погрешность смеси в любом режиме выходит совсем небольшой.
Электронная педаль лишь позволяет это делать еще более точно. Не берусь сказать точные проценты, но по моему скромному мнению разница в экономичности вряд ли превысит процентов 5, а так, я думаю и того меньше.
Но это опять же если используется адекватные настройки электронной педали. Т.е. в случае «прочих равных условий». А так, ее можно настроить так чтобы она душила двигатель на этапе разгона с той целью чтобы смесь всегда была стехиометрической (что кстати отчасти и делают автопроизводители). Получится очень-очень экологично, и экономично. Но о более-менее приемлемом разгоне можно забыть.mikelavr
30.09.2016 08:41Пожалуй соглашусь про «погорячился» :).
На практике эффект экономии топлива есть, и даже в полтора раза, но он комплексный, от многочисленных изменений в машине. В моем случае:
— появление электронной педали;
— уменьшение объема двигателя (2.0 -> 1.8), при этом мощность двигателя выросла;
— появление плавной регулировки высоты подъема клапанов;
— замена АКПП на вариатор;
— замена ГУР на ЭУР;
— лучшая аэродинамика;
NickyX3
29.09.2016 14:08Нет там давления топлива — не нужно оно там. Количество топлива задается временем работы форсунки
mikelavr
29.09.2016 14:23Это не обязательный параметр, как и многие другие. Но если он есть — ECU может точнее дозировать смесь.
OBD-II, mode 1, pid's: 0xA, 0x22, 0x23, 0x59
ittakir
29.09.2016 14:33А давление топлива обычно регулируется вакуумным регулятором, который берет опору из впускного коллектора. Больше вакуума, больше топлива течет в обратку, меньше давление в рампе, и из-за этого не так критично малое время открытия форсунки на холостых оборотах, когда это время сравнимо с временем срабатывания форсунки (~1 мс.)
NickyX3
29.09.2016 14:39В каком веке вы живете?
Нет никакой обратки в современных инжекторных авто. Насос качает постоянное давление в рампу и уже ECU рулит на какое время открыть форсунку. Дроссельная заслонка не пропускает через себя топливо или ТВС — только воздух. Больше открыли — больше дали воздуха, по показаниям MAP/MAF расчитали сколько топлива лить — на соответствующее время открыли форсы. Все.ittakir
29.09.2016 14:50Все правильно написали, ваши представления не отличаются от моих.
Посмотрел, на 1NZ-FE, например, действительно регулятор давления перенесли в бензонасос. Ну и дураки, как мне кажется, из-за описанных выше причин (время срабатывания форсунки).NickyX3
29.09.2016 14:56Да не только Toyota, у меня вообще Honda и L15A VTEC. Судя по всему практически везде начиная где-то с 2000 года именно так. Нет обратки топлива, давление рулится насосом в баке.
mikelavr
29.09.2016 15:03Две магистрали дороже одной, а клапан давления все равно где ставить — в движок или в насос.
Marsikus
29.09.2016 16:53А если давление после насоса просядет (насос изношен), то ECU не будет компенсировать это другим значением времени открытия форсунки?
NickyX3
29.09.2016 17:08В небольших пределах возможно. Недолив скажется на составе смеси -> детонации к примеру, что ECU увидит на датчиках, недолив как и перелив увидит лямбда как обратная связь в ECU, и вторая лямбда при ее наличии. Как правило простые авто типа Fit или там какой нить Vitz у тойоты так и работают.
ittakir
29.09.2016 18:49На том же 1NZ-FE в ECU заведен датчик давления топлива. Так что компенсирует.
mikelavr
29.09.2016 15:01Интереса ради снял статистику по подконтрольным автомобилям с полной информацией по OBD2.
Машин всего: 267
С датчиком давления топлива: 57 (21%) (3 бензиновые, 54 дизельные)NickyX3
29.09.2016 15:04Внимание! 96% авто с датчиком давления — дизельные. Я так подозреваю что 3 бензиновых это GDI
mikelavr
29.09.2016 15:13Еще хуже, можете считать что дизельных 100% :-)
Те три бензиновых машины, попавших в выборку, выдают Fuel Pressure=0, то есть явный косяк в ECU (выдача пустого параметра). Производитель один — GM (конкретную модель сказать не могу).NickyX3
29.09.2016 15:17+1Вот я про то же. На дизеле понятно зачем давление топлива нужно в мозгах — контроль давления от ТНВД или что там сейчас — иначе можно и недешевые форсы завалить
SawaNsk
29.09.2016 11:10Управление дроселем может быть нужно:
Круиз контроль
Показание лямбд — корректировка смеси
Работа автомата — более плавные переключения
Повышение экологичности, расхода топлива,прохождение дизель теста, но это к VW
Сейчас уже не карбюраторные машины, (но и там был «подсос»), и всякие нормы экологичности за частую душат возможности двигателя очень сильно.ittakir
29.09.2016 14:41Корректировку смеси гораздо проще делать временем впрыска.
Поддержание стабильных оборотов холостого хода делается быстродействующим соленоидом с ШИМ модуляцией и варьированием угла опережения зажигания.
aulandsdalen
29.09.2016 15:13Первые два пункта замечательно работают и без электронной педали газа :-)
WildRat
29.09.2016 15:47Круиз-контроль на автомобилях без электронной педали газа очень похож по конструкции на «электронную педаль газа» (прошу прощения за каламбур). В нём есть привод двигающий дроссельную заслонку, так что, теоретически, с ним также возможна ситуация, когда автомобиль будет неконтролируемо разгонятся.
Forget
29.09.2016 11:31В этом случае никаких особых отличий между «электронным газом» и обычным тросиком не будет.
Управление подачей воздуха осуществляется в соответствии с некоторой таблицей, в зависимости от температуры окружающего воздуха и температуры двигателя (и много чего еще, но пока пусть только три). Степень нажатия и две температуры, целых три параметра, это уже большое пространство для ошибки выхода за границу массива по любому из трех.
Просто все выглядит только когда у нас одна машина, одна педаль газа, один двигатель и постоянные нормальные условия. В реальной жизни так не бывает.Ryav
29.09.2016 12:33+1Все комментарии сводятся к тому, какая степень нажатия на педаль, я же говорю о состоянии педали — нажата или вообще никакого воздействия на неё нет. Если никакого воздействия нет, то и увеличения скорости быть не должно. Грубо говоря, с точки зрения пользователя педаль акселератора выполняет функцию ускорения и поддержания скорости. Какой ещё рычаг/тумблер/механиз управления выполняет эту функцию? Никакой (если никто сзади с горки не толкает, конечно). Так какого хрена автомобиль девушек начал ускорение (я в это, конечно, слабо верю, скорей всего действительно педали перепутали), почему разработчики не прописали жёсткое условие «нет воздействия на педаль — нет увеличения оборотов, отличных от холостых»?
mikelavr
29.09.2016 12:46Пожалуй добавлю, что у меня был случай на ВАЗ-21093 с карбюратором, когда машина начала самопроизвольно разгоняться без нажатия на педаль газа. Банально слетела пружина возврата тросика газа. Так что тросик — тоже не панацея.
Ryav
29.09.2016 12:55Это то, о чём я говорил выше — аппаратная проблема. Вины программистов в этом нет. Пост же написан так, будто все 81 514 ошибок относятся непосредственно к безопасности, из-за этого то девочки и попали в аварию. А вовсе не из-за того, что не контолировали дорожную ситуацию.
mikelavr
29.09.2016 13:00А в случае embedded — программист и инженер-электронщик это или один человек, либо они работают в очень плотном контакте. Не далее как вчера у меня на работе одна из проблем с надежностью в серийном изделии была решена изменением в схеме плюс изменением в коде. И раздельно эти решения не работали.
Forget
29.09.2016 12:55+2Ситуация, которая происходит на видео, в коде может образоваться при выходе за пределы таблицы поправочных коэффициентов и последующем зависании трэда (многопоточность есть и во встраиваемых системах), ответственного за вычисление угла поворота заслонки/оборотов двигателя. О каком простом условии может идти речь, если ответственный за проверку этого условия код попросту завис? Посмотрите на видео в статье — иногда даже удар автомобиля не включает защиту и авто все равно продолжает газовать.
Да, я понимаю что можно просто привязать максимально тупую механическую обратную связь которая будет блокировать разгон авто при отжатой педали акселератора. Но это все-таки автомобиль, а не ракета, производителю проще не дублировать защиту от такой ситуации механически.Ryav
29.09.2016 12:58Не думаю, что установка одного концевика сильно усложнит проектирование, производство и сильно скажется на стоимости автомобиля.
Forget
29.09.2016 13:23+2Не думаю, что установка одного концевика сильно усложнит проектирование
Вы удивитесь…
Вообще электронщики, как вы и говорили изначально, считают что задача плевая и зависнуть там ничего не может. Вот и не добавляют лишних деталей. И проблема действительно простая — если производить тестирование кода и как следует изолировать код от аппаратуры (ибо она, как я уже говорил, меняется со временем. Да и нельзя нормально тестировать код с большим количеством внешних зависимостей). Но, как и во всех программистских областях, заказчики считают что код простой и то, что его надо тестировать и поддерживать во внимание не берут, все нужно доказывать, а большинству разработчиков не хочется бодаться с заказчиком, который с радостью сменит прогера на более сговорчивого. Вот и получаются таки монстры с 81k нарушений…Vjatcheslav3345
29.09.2016 17:05У государства лопнет таки терпение и оно введёт таки спецгосорган для "шмона"-экспертизы кода, введёт штрафы и обязательное доказательное программирование — а за его содержание будут платить производители и потребители.
npechenkin
07.10.2016 13:06Но это все-таки автомобиль, а не ракета, производителю проще не дублировать защиту от такой ситуации механически.
Но автомобили куда как опаснее для всех нас чем ракеты. Ясное дело, что все «фичи» и дублирования будут в конце-концов оплачивать потребители, но судя по тому, что крупные автопроизводители в своих маркетинговых компаниях часто делают упор именно на безопасность — покупатели готовы за это платить.
yshurik
29.09.2016 15:33Я писал выше - вы забываете что проблема неожиданного ускорения присутствует только в гибридных авто Тойоты. В них вместе с двигателем через планетарную передачу ещё подключен электродвигатель/генератор довольно хорошей мощности. Собственно когда педаль акселератора не нажата, двигатель не крутит на холостых а например передаёт мощность на генератор для зарядки батареи, или наоборот электродвигатель может хорошо добавлять мощности вместо того чтобы крутить двигатель на очень неэффективных режимах (вот в этом и экономичность), или (есть и такая опция в приус) ехать только на электромоторе, недолго пару км. Собственно софт управляет двумя двигателями в тандеме и ошибка в софте или неправильный учет особенностей этих двух очень разных двигателей (плюс там может гистерезис или что там) вполне может привести к неожиданному ускорению.
WildRat
29.09.2016 15:51«Компьютер» знает об воздействии на педаль только через датчики наклона этой педали (они обычно задублированы в авто с системой «электронный газ»). И ошибок, теоретически, может быть куча — неправильно прочитано значение датчика, изменено в результате ошибки, в конце-концов может быть неправильно прописано условие, когда не важно это значение вообще.
mblp
30.09.2016 10:10машина едет под горку с отпущенной педалью газа? Скорость и обороты двигателя увеличиваются и это надо компенсировать.
novice2001
30.09.2016 10:10Круиз-контроль. Педаль полностью отпущена — машина едет с заданной скоростью.
Duchus
29.09.2016 11:41К сожалению жестко нельзя. Привод заслонки зависит не только от педали, но и, например, нагрузки (едем в горку, под горку и тд...). А современные модели еще многое другое думаю учитывают при открытии заслонки.
lingvo
29.09.2016 11:19+2Ситуация в принципе такая же, как и в статье о кардиостимуляторах пару месяцев назад — от качества кода все больше зависит жизнь человека, и если это не контролировать, получаем такие бяки.
Вопрос — как это исправить? Наверное заставить всех открывать исходные коды, чтобы они могли проверяться независимыми организациями. Это ударит по производителям, но должно значительно повысить безопасность.alltiptop
29.09.2016 11:22А чем это кардинально ударит по производителям? Для автоконцерна штат программистов для базовых систем мне кажется вообще статистической роли не играет. А так хотя бы перестанут отдавать на аутсорс.
herr_kaizer
29.09.2016 12:55Не нужно никого ничего заставлять. Если багов много и они действительно критичны — то и проблем с автомобилями будет больше, и люди голосовать будут кошельком.
89 смертей за 10 лет — это даже не смешно.
Idot
29.09.2016 11:47В коде Тойоты использовалась рекурсия, и каждая проблема с ней приводила к перезагрузке процессора (CPU reset).
Хотелось бы услышать мнение и рекомендации сторонников Функционального Программирования о том как подобного избежать.mikelavr
29.09.2016 11:49+5Как эмбеддчик (со стажем 17 лет), отвечу: не использовать рекурсию. И не использовать динамическое выделение памяти.
А вот как решать проблемы с избыточной цикломатической сложностью кода — сам хотел бы узнать.FForth
29.09.2016 12:35Полистать такую книгу из топика L.Broudi «Thinking Forth» (Способ мышления — Форт)
http://fforum.winglion.ru/viewtopic.php?f=37&t=2011
в чём то может оказаться полезной любому программисту. :)
P.S. У Купмана тоже были материалы Форт тематики.mikelavr
29.09.2016 12:48Форт — это как то жестко :). Последний раз я его использовал году так в 1985, в институте, на БК-0010 :)
TargetSan
29.09.2016 12:07+1В эмбеде — никак. Потому что подобный эмбед на 99.(9)% — голый C, как я понимаю. Который в принципе не умеет tail call optimization — и даже не понимает, что это такое.
Source
29.09.2016 12:22подобный эмбед на 99.(9)% — голый C
Вот интересно, кстати, почему? Очевидно, что сейчас в мире уже гораздо больше embedded систем, чем программистов, способных написать для них безопасный код на C.
TargetSan
29.09.2016 12:51+2А альтернатив нету особо. Эмбед — ограниченные ресурсы, следовательно GC туда не сильно встаёт. Сейчас языков б/м известных языков без GC — 3 штуки. C, C++, Rust.
С — старичок, относительно прост. Но в плане безопасности программирования почти ничем не отличается от ассемблера.
С++ — на данный момент монструозен в плане поддержки стандарта; в плане отстрела себе ноги по самую шею не сильно далеко ушёл от С
Rust — безопасен, но очень молод
mikelavr
29.09.2016 12:54Неплохо бы еще иметь реализации RTOS на выбранном языке. И тут Си просто таки выделяется.
Halt
29.09.2016 21:26Ну раз уж упомянули Rust, то давайте и упомянем embedded проекты на нем (навскидку):
https://github.com/alexchandel/rust-rtos
https://github.com/hackndev/zinc
https://spin.atomicobject.com/2015/02/20/rust-language-c-embedded/
и т.п.Halt
29.09.2016 21:38Пардон, первая ссылка должна быть https://zinc.rs/, по ошибке вставил полудохлый проект.
Idot
29.09.2016 13:00А что можете сказать про C--?
TargetSan
29.09.2016 13:08А ничего особо. Помню только сам факт его наличия.
Уточняю, что я не эмбедщик, и сужу поверхностно. Просто насколько я помню, ни одна попытка втащить управляемую среду на микроконтроллеры не увенчалась широким успехом — просто из-за толщины рантайма или ограничений по памяти, в которые не влезет никакой GC. А б/м известных языков с управлением ресурсами без рантайм-оверхеда у нас 3 штуки. Их я перечислил выше.
Source
29.09.2016 14:11-1Эмбед — ограниченные ресурсы
Всё очень относительно… сейчас плата, умещающаяся на ладони, может быть в разы мощнее персонального компьютера 10-летней давности.
Тут скорее надо определиться с восприятием, что такое эмбед? Это ограниченные ресурсы или ограниченный размер… Если второе, то ресурсов хватит практически на любой современный ЯП.Forget
29.09.2016 14:35Дело не только в количестве ресурсов, дело в самом определении термина. Встраиваемые системы обычно не контактируют с человеком, работают при минимуме обслуживания, в случаях когда человек просто не в состоянии выполнить задачу (из-за времени реакции или по другим причинам). Именно по этому необходима большая аккуратность при проектировании таких систем.
И сборщики мусора не могут гарантировать что вся не нужная память будет освобождена (достаточно вспомнить про ошибки потери указателя на событие в C# — если забыть отменить делегату подписку то он будет сидеть в списке до скончания времен. Как и вся зависимая от этого делегата память — ссылка-то сохранилась). + они добавляют непредсказуемости — не знаешь когда он запустится и на что он повлияет. Да, есть сборщики мусора реального времени, но когда они выйдут из исследовательских статей в массы одному root-у известно… А с другой стороны — есть ли в этом смысл? Ведь требования аккуратности и обработке ошибок никуда не пропадают.
В общем «встраиваемость» — это раньше было про дефицит ресурсов. Сейчас, кажется, краеугольной частью «встраиваемости» является «необслуживаемость».lingvo
29.09.2016 15:10+1Я думаю, что сейчас многие путают реальное время с эмбеддерством. Или отождествляют. Проблема в том, что это разные вещи, и указанные вещи, типа рекурсивности, динамического программирования — это как раз те вещи, которые нельзя применять в системах реального времени, а не эмбеддерстве.
ECU современного авто — как раз система реального времени.mayorovp
29.09.2016 16:19Что вы понимаете под "динамическим программированием"? Явно что-то отличное от правильного значения...
hardegor
30.09.2016 13:15+1Несомненно плата на ладони сейчас мощнее старого компьютера, но они оба работает в очень приятных условиях и никаких требованиях к надежности.
Встраиваемые системы работают в гораздо более жестких условиях, -40..+85 Industrial, я уж не говорю про +125 Automotive и -60/-55/RadHard у космонавтов/военных — все эти платы на ладони «сдуваются» по параметрам на порядки, а цены растут в обратной пропорции.
csbs
29.09.2016 16:57На Java уже можно писать для эмбеда, например для AVR32, Cortex-M0/M0+/M3/M4/M7 и т.д. JVM портировали на MCU, при этом RTOS поддерживается.
TargetSan
29.09.2016 17:03Я не отрицаю, что это в принципе можно. Был же .NET Core Framework (или как он там назывался). Я только говорю, что оно пока не распространено широко.
csbs
29.09.2016 17:21Про .NET незнаю. Но вот AVR мало ресурсов имеют, по сегодняшним меркам конечно, модели от 16 до 512 КБ и 50-84 МГц. И там Java.
lingvo
29.09.2016 17:35+3Ага.
Попробуйте на Java и виртуальной машине запрограммировать алгоритм, который бы считал нужное время открытия топливной форсунки, основываясь на измерении от десятка датчиков, пары десятков таблиц и гарантированно выполнялся за 10мс — столько времени занимает поворот распредвала на 360° до следующего цикла впрыска.
Это называется выполнение в реальном времени. Увидите, что только голый Си здесь помогает.csbs
29.09.2016 17:54-1Ну так, Java понятно что не все критические участки закроет. Где-то С, а где то Java.
FForth
29.09.2016 19:04-1Для встраивания Java и с такими частотами, то скорее для большой части задач за глаза.
10мс — это вообще огромный интервал времени для микроконтроллеров.
10мс — это период 100 Гц в сравнении с даже тактовой 80 Мгц (80 000 000 Гц) и одно двух тактными
командами ядра процессора можете посчитать сколько процессорных команд можно выполнить.
(даже с java реализацией)
UnixMaster
29.09.2016 20:00На хабре есть куча статей про то, как java на числодробилках (а тут примерно такой же случай), отличается по скорости менее чем на 5%, а то и быстрее расчитает благодаря JIT, если на С криво написан код, то AOT его оптимизирует лишь на стадии компиляцийй, а JIT на JVM его может оптимизировать во время исполнения более эффективно. Вопрос тут в другом, какой там компилятор используется, какая реализация JIT, по какому принципу работает GB, как аллоцирется память и прочее. Так что тут проблема не платформы для реализации, а скорее криворукость, маленькие сроки на разработку и прочее. Выше и ниже все это описали.
Idot
30.09.2016 06:28+2А как в случае Эмбеда решается Проблема Сборки Мусора у Java?
Сборка Мусора — вообще отключаема? И как быть с привычками тех кто привык, что мусор за ними всегда приберут?
Source
29.09.2016 12:12По факту хвостовая рекурсия раскрывается в тот же ассемблерный код, что и обычный цикл.
А в комментарии, видимо, имеется в виду проблема, когда стек заканчивается. Рекурсия, использующая стек, обычно применяется в императивных языках, т.к. там может не быть tail-call optimization. Ну либо в крайне редком подмножестве алгоритмов, где без древовидной рекурсии вообще никак не обойтись.
Varkus
29.09.2016 12:09+2Не пойму, что всем этим пострадавшим мешает зажать тормоз и выключить коробку?
У меня пару раз рычаг АКПП из положения D «щёлкал» в положение N только от того, что случайно рукой зацепил.
А на всех случаях из видео водители героически начинают объезжать всё, что видят лишь бы машина побольше скорость набрала.
Как так?olekl
29.09.2016 13:00+1Популярный автомеханик именно это и писал в своем жж. Более того, он однажды столкнулся с тем, что коврик педаль до упора нажал. На автомате. И именно так, как вы говорите — нажал на тормоз, машина остановилась, перевел в N, мотор раскрутился до отсечки. Выключил зажигание. Все. А когда на видео в этом случае — визг и дворники включаются, то это больше похоже на «педали перепутать», а не на баг ПО.
NickyX3
29.09.2016 14:53Чтобы скинуть с любого положения подразумевающего движение (не паркинг) в N тормоз нажимать вообще не надо.
mikelavr
29.09.2016 14:56После начала неконтролируемого разгона и реакцией водителя проходит некоторое время — машина уже разогналась, и ее надо остановить.
NickyX3
29.09.2016 15:00Последовательность действий должна быть — скинуть в N, потом тормозить. Я прошел похожую ситуацию когда на скорости 70 км/ч у меня распредвал с шестерни сорвало — почти мгновенный останов мотора по ДПРВ
mikelavr
29.09.2016 15:07В теории да, но вы учтите стрессовую ситуацию для водителя. В этой ситуации важнее остановить машину, а с ее неисправностями можно разобраться потом. Свое здоровье важнее, железо можно и новое купить.
lonelymyp
29.09.2016 15:40+2Ничто не мешает, даже больше скажу, все они на 100% были уверены что жмут именно педаль тормоза!
Они все абсолютно точно уверены что жмут именно тормоз и жмут его со всей дури, хотя по факту нога на 15 см правее тормоза.
Нужно определённое время чтобы человек осознал свою ошибку и отпустил одну педаль и нажал другую. В панике осознать ошибку можно и не успеть.
Проблема в человеческом восприятии, закройте глаза, не касаясь клавиатуры руками нажмите пальцем на клавиатуре букву Н.
По прежнему не открывая глаза попробуйте угадать, вы нажали именно ту букву которую хотели или всётаки это другая буква?
В состоянии паники сложно сосредоточиться и сделать разумное действие, а в данном случае надо сознательно отпустить педаль тормоза (мозг ведь думает что нажал тормоз) и нажать левее в пустоту(мозг ведь думает что раз нажал тормоз то слева будет пустота).
olekl
29.09.2016 12:56+4А на видео, на мой взгляд, минимум в половине случаев таки педали перепутали…
ittakir
29.09.2016 14:28-1Как-то слишком много пафоса в статье, секретный бункер, 100500 нарушений MISRA C.
А по факту баг не нашли, из-за которого автомобиль может начать ускоряться.
А ошибки MISRA — ну макросы там всякие используют или указатель без проверки разыменовали. Ну и что? Автомобильный ECU — это довольно простая коробка, она либо работает, либо не работает. Как там наговнокодили — макросами, шаблонной магией или еще чем-то, в сущности не важно. Алгоритмы работы инжекторного двигателя весьма простые и определенные. А вот когда в авто нейросети запихают, вот тогда начнется…
inkvizitor68sl
29.09.2016 14:49Проблема, думаю, не в разработчиках, а в менеджерах, у которых сроки, желание позвать разрабов на бесконечные встречи и прочие чудные идеи.
benyamin
29.09.2016 15:40Я вообще не пониманию, почему автопроизводители к примеру не запартнерятся с крупными компаниями, к примеру, многие уже устали от допотопных навигационных систем, ребята на рынке полно лидеров в этой области, берите их на работки и используйте.
От года в год я наблюдаю ужаснейший не юзабельные интерфейсы ГУ, ребята очнитесь, вы слышали что-то о UI и UX.
Почему на ГУ нельзя вывести элементарные статистические параметры авто, которые будут накапливаться и агрегироваться такие как, средний расход за поездку, пробег поездки и т.д.
Почему нет возможности установить свое приложение на ГУ либо API
Почему нет возможности дать ГУ интернет и не предусмотрено место под сим карту…
А ребята все по прежнему лепят какой-то прошлый век, да еще и убивающий людей!!!k102
29.09.2016 15:44+2Да при чем тут головное устройство то. Оно должно быть физически отделено от систем управления двигателем и прочих ответственных вещей.
benyamin
29.09.2016 15:50это в целом о наболевшем)
k102
29.09.2016 16:10Эх, у меня скорее обратная претензия. Хочу честный тросик, настоящий ручник, гур… А в современных моделях вместо этого более красивый интерфейс ГУ.
aulandsdalen
29.09.2016 19:59Ну так покупайте нормальную машину, а не какой-нибудь убогий риосолярис. Машина не становится хуже от того, что ее больше не выпускают.
k102
30.09.2016 10:26Она становится хуже от того что за ней не следили. А к сожалению у нас многие вообще не особенно запариваются на ТО после того как гарантия кончилась. В новой таких проблем будет скорее всего поменьше
Meklon
30.09.2016 11:02У меня Nexia 2006. Тупая как кирпич. При желании, чинится гвоздями. Хотя от ГУР я бы не отказался. Из плюсов — ломаться особо нечему. А любые ремонты 150-3000 рублей обычно. Но корпус ржавеет, увы. Задние крылья.
lingvo
29.09.2016 16:00Ну, допустим, Вас услышали в каком-нибудь Рено и сделали супер-пупер-навигацию. Добавили кучу фишек и т.д.
Вы из-за этого откажетесь от покупки Мерседеса и купите Рено? Только ради навигации?
Не думаю. Вот и производители авто тоже так думают. Они понимают, что если вы выбрали Мерседес, вы не пересядете на Рено из-за того, что там навигация лучше. И можете позволить купить себе допотопную навигацию за 3к€ в придачу.mikka1
29.09.2016 16:57Ну вообще не совсем так — сравнение автомобилей разного уровня/класса — дело довольно странное. С таким же успехом можно сравнить покупку нового Мерседеса и б/ушных Жигулей
У меня, по крайней мере, было несколько иначе — мы с супругой решили купить / взять в лиз автомобиль по определенным ценовым параметрам (допустим, лизинговый платеж не более $300 / мес) + основным эстетическим и функциональным параметрам (седан, небольшой размер) — уже это позволило отсеять 90% автомобилей на рынке. На выходе, к примеру, у меня осталось штук 5 — Honda Civic, Hyundai Elantra, Chevy Cruze, Subaru Impreza и VW Jetta. Последние три после недолгого анализа тоже отпали по разным субъективным причинам (несговорчивые продавцы в дилершипах, плохая доступность нужных комплектаций и т.д.) — и на выходе остались именно цивик и элантра, которые буквально дышали друг другу в спину — разница в платеже по лизу — около 2-3 долларов в месяц (т.е. по сути нет разницы), функционально всё одинаковое, условия лизинга (мили, срок) одинаковые, разница в стоимости страховки минимальная и т.д.
В итоге выбор в пользу Цивика был сделан супругой именно потому, что при прочих равных условиях ей "экранчик и меню больше понравились", при том, что к Хёндаю изначально подсознательно сердце лежало больше (уже был до этого успешный опыт владения другим Хёндаем) :-)
Т.е. Вы, безусловно, правы, что при выборе между внедорожником Мерседес и малюсенькой Тойотой Ярис наличие любых фишек в последней вряд ли впечатлит будущего владельца чёрного танка, но вот переманить поклонника одного бренда при похожих конфигурациях авто благодаря удобству той же магнитолы / навигации / экранного меню — запросто. Мог бы плюсануть к benyamin, с удовольствием сделал бы это :)springimport
29.09.2016 21:22В таком случае лучше Кэмри взять, имхо.
MrShoor
29.09.2016 21:30Чтобы было как на видео в посте? Чет не, не хочется.
springimport
29.09.2016 21:41Может с кодом и не очень у них (сомневаюсь что у других сильно лучше), но машина вполне добротная и уж точно лучше Цивика.
mikka1
30.09.2016 19:46Ну камрюха это ж уже повыше классом и сильно выше ценником, ее честнее сравнивать с аккордом и сонатой. Но Королла, к примеру, мне чем-то совершенно не понравилась, так что она даже не попала в «лонг-лист»…
Аккорд, как ни странно, тоже был как вариант — но там выбор в этих ценовых пределах был «голый, совершенно голый аккорд» или «нафаршированный всем, чем только можно цивик».
benyamin
29.09.2016 17:26сделаю акцент, что на премиум авто, должно все это уже быть, на тех же Lexus, Mersedes, BMW, но к сожалению штатные балалайки существенно отстают от прогресса, каждый раз пытаясь изобрести велосипед заново, продавая за баснословный деньги опцию типа кругового обзора и т.д.
P.S. мы живем все таки в реальном мире, я сомневаюсь, что рено раньше мерседеса выпустит какое-то классное ГУ.
Вопрос в том, что рынок уже давно хочет этого, а автопроизводители все лепят какой-то смехk102
29.09.2016 17:35Так все просто же — сколько времени разрабатывается модель машины? Явно дольше, чем новый айфон. В результате в момент выхода лексус отстает от айфона графикой и прочим.
dzok
29.09.2016 18:13Это если сначала вместо самого авто, сначала разработать пользовательские прибамбасы, и в ходе дальнейшего проектирования их больше не пересматривать. Тут как по мне проблема в отношении. «Пипл хавает», а раз хавает, то смысл напрягаться.
P.S. Оснащать любую тарантайку нормальной пользовательской электроникой и экранами сейчас нет проблем — её стоимость равна стоимости средней руки планшета или нетбука, в массовом производстве и того меньше. В общей стоимости машины — копейки. Ну и поскольку на неё не завязано ничего жизненно важного, то поменять её в ходе жизни одной модели авто можно сколько угодно раз.dro1d
30.09.2016 12:17ну, судя по всему, тойота так и делает — очень быстро выкатывает обновления электроники (и пользовательской, и системной), к сожалению, без должной степени проверки качества
dzok
30.09.2016 15:45Моя мечта — унифицированные блоки подключения пользовательской электроники как это было с магнитолами и выбор из сотен моделей разных производителей или нормальная электроника позволяющая менять ос как тебе удобно. Но автопромышленники удавятся.
dro1d
30.09.2016 15:56Я думаю, такое будет не скоро. Если представить: поставил новую «железку», а новая ОСь ее не поддерживает. Или начинает безбожно глючить, в итоге водитель больше отвлекается — растет число аварий.
lingvo
29.09.2016 17:42Зря сомневаетесь, ГУ моей Тойоты намного более удобное чем ГУ Лэнд Ровера, выпущенного 3-мя годами позже. Начиная с реакции на нажатие кнопок — у Лендровера все тормозило, а у Тойоты нет, и заканчивая раскладкой клавиатуры — например на Лендровере какой-то умник догадался поставить все буквы от А до К на одной странийе, а остальные — на другой. При этом оба ГУ с винчестером, как положено. Про то, что в Лэндровере просто невозможно просмотреть обзор маршрута я уже умолчу.
С этой точки зрения я уверен, что ГУ какого-нибудь хюндая будет лучше Лендроверовского и рено тоже будет лучше — так как они конкурируют в своих нишах, а вот тот, кто нацелен купить Лэндровер — он в пролете.
dymanoid
29.09.2016 18:27Всё, что вы описали, есть в моей машине 2010 года выпуска. И интернет, и приложения, и борткомпьютер, и красивый GUI, и ещё миллион вещей. Но цикл разработки в автомотиве, действительно, долгий. Два-три года. За три года мобильная отрасль, например, убегает вперёд очень быстро.
benyamin
30.09.2016 11:15о каком авто идет речь?
dymanoid
30.09.2016 12:35BMW 5 F10
benyamin
30.09.2016 12:57в NBT нет возможности проложить маршрут, точность карт явно уступает яндексу, нет информации о пробках и ДТП например. Спрашивается какой толк в штатной навигации, если обыденных и востребованных функций там просто нет…
dymanoid
01.10.2016 15:03Это в России так, возможно. Я живу в Германии, и у меня и пробки, и ДТП и прочая информация (животные на дороге, например) отображаются. Что значит — нет возможности проложить маршрут? А чем навигация тогда вообще занимается? Точность карт зависит от вендора карт, а не от системы. О чём мы вообще спорим?
Louter
29.09.2016 18:17+1Было ба очень круто еслибы подобную проверку прошли _все_ автопроизводители. И публично, с открытыми для изучения публики индексами качества кода (пусть даже не исходниками, ценим ноу-хау и авторские права). Автопроизводители до последнего ничего не признают. А Джон, серийный программист, сидит и пишет дальше бажный код.
IlyaChusov
29.09.2016 19:58+2Тот случай, когда анекдот про серийного программиста отчасти становится правдой…
noodles
30.09.2016 10:09+1На видео, мягко выражаясь, обычные люди, которые с автомобилем на «вы». Почти уверен что просто перепутали педали, я на таких людей насмотрелся в своё время, их просто огромное количество на самом деле; им не то что автомобиль, им велосипед доверить нельзя.
Проблему на самом деле можно решить на корню — ввести обязательную базовую контраварийную подготовку и только потом выдавать права. Человек с такой подготовкой на три головы выше чем шофёр даже с 30-летним стажем (час на курсах = одному году опыта вождения, приблизительно конечно).
понапридумывают всякие гиковские теслы, что у людей складывается отношение к авто как к смартфонам… с ужасом осознаю что мой ребёнок/внук уже может не застать того кайфа бензинового двигателя, механики и заднего привода)
dzikar
30.09.2016 10:09Неконтролируемый разгон машины, должен пресекаться самими системами автомашины. То есть многие параметры должны считываться. Та же педаль газа (электронная), в некоторых машинах связана со своим контроллером который следит за конечными значениями и при выходе за параметры просто глушит движок (либо просто напоминает о неисправности (в ауди дизеле например двигатель начинает «порыкивыть»)). При этом любители крутить руль ногтём мизинца, резко обнаруживают что даже мизинцем трудно провернуть руль (на низких скоростях, на высоких разницу не увидите), а педаль тормоза станет не пуховой подушкой, а из конского волоса, что не ухудшает безопасность однако. Например в электрокаре. Проверяется потребляемый ток, скорость в широкой временной выборкой, ускорение, и многие другие параметры (даже системы типа ESR и ABS оснащаются понять что педаль то не нажата датчиками ускорения), которые обнаружат самопроизвольный разгон если педаль не нажата (в самом простом случае в педали два переменных резистора и их хватает с лихвой). Защитится же от зависания, также позволяют силовые микросхемы с шиной данных и другая мишура.
Например завис центральный процессор, микросхемы не получая обновлений, просто сбросятся в начальное положение. Однако когда в машине множество управляющих блоков, связать их трудно, те же данные сигнала положения педали из блока 1 по пути в блок 2 могут наполниться мусором, либо ещё что. и не важно, есть проверка или нет на валидность. Сам лично видел как пару машин заглохли когда в трёх метрах от них жахнула молния, ну а траллик дальше никуда так и не поехал, хотя новые иномарки уехали, хоть и не сразу. Траллику помогло только отключение питания, после чего техпомощь уехала по своим делам а траллик в парк укатил своим ходом.
rakozawr
30.09.2016 10:10Дважды встречал подобное на Toyota Auris 2008 года, думал педаль подклинило, а оно вот как оказывается. Видимо не такой уж и редкий баг.
ainoneko
30.09.2016 11:48+2Слайд 14: там ещё и чёрный ящик может врать про то, что водитель нажимал. Прелестно.
dro1d
30.09.2016 12:10Просмотрев видео в посте возник вопрос: некоторые проезжали целые кварталы на полном ускорении, прежде чем сталкивались. Неужели никто из них не мог догадаться выключить зажигание?)
fetis26
30.09.2016 12:38Кто пояснит в чем проблема с одинаковыми именами переменных в разных скоупах?
lingvo
30.09.2016 13:51Тут немного преувеличили, сказав, что 81514 нарушений — это ошибки в коде. На самом деле это потенциальные баги, которые, например, при компилировании определенным компилятором могут привести к неправильному исполнению этого кода на конкретной платформе.
Вот и со скоупом переменных — теоретически это не баг, но возможно какой-нибудь компилятор при какой-нибудь опции захочет это дело как-то оптимизировать.fetis26
30.09.2016 14:42Я слабо себе представляю компилятор, котор начхает на скоуп.
lingvo
30.09.2016 15:58+1Ну это может быть и не компилятор, а человек, который вдруг захочет объявить глобальную переменную с данным именем и потом долго удивляться, почему она вдруг в функциях не работает. Насколько я знаю, в Coverity для каждого случая дано описание, на что это может повлиять.
DigMan
30.09.2016 13:14Глубоко убеждён, что 90% этих аварий можно было избежать имей водитель больше опыта,
тормоза способны остановить машину даже на полном газу, даже при полном отключении системы усиления тормозов, вообще давно напрашивается введение в программу подготовки водителей нештатных ситуаций,
а может даже и сдача обязательного экзамена по ним, как например, отказ одной из систем авто, вождение на льду, и.т.д. ведь теория не в состоянии подготовить водителя к этому, многие действия должны быть отработаны рефлекторно, я лично на себе пробовал, первые 2-3 попытки при заносе нога рефлекторно жмёт тормоз… хотя и прекрасно знал, что нужно делать, только после нескольких попыток получается сделать занос управляемым, впоследствии в реальной жизни дважды уходил от столкновения благодаря этому опыту.ArmorDarks
01.10.2016 04:35Писали выше. Проблема в том, что педаль тормоза в это время, скорее всего, не работала, либо не реагировала должным образом.
Interfere
Говорите, при цикломатической сложности выше 50 программа не поддается тестированию? Надо бы сказать нашим QA.
Tdr
Имеется ввиду юнит-тестирование. Скажите об этом своим разработчикам.
Технически, это можно оттестировать, но код юнит-тестов будет ооочень длинный, а значит, может содержать свои ошибки.
MagisterLudi