29 сентября 2016 в 09:59

Toyota: 81 514 нарушений в коде



Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 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 миллионов автомобилей по всему миру. Вину так и не признали.


По словам Майкла Барра, их отчет засекретили. Так же засекретили условия контракта, на условиях которого им предоставили исходный код Тойоты. Но Барр рекомендует погуглить транскрипт материалов слушания.


Вот в таких условиях работали аналитики:



И вот такой отчет написали:



Как искали и что нашли


Главный подопытный — система электронного управления дроссельной заслонкой (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 писать миллионы строк кода с минимальными ошибками»
The Power of Ten - 10 Rules for Writing Safety Critical Code
  1. Restrict to simple control flow constructs.
  2. Give all loops a fixed upper-bound.
  3. Do not use dynamic memory allocation after initialization.
  4. Limit functions to no more than 60 lines of text.
  5. Use minimally two assertions per function on average.
  6. Declare data objects at the smallest possible level of scope.
  7. Check the return value of non-void functions, and check the validity of function parameters.
  8. Limit the use of the preprocessor to file inclusion and simple macros.
  9. Limit the use of pointers. Use no more than two levels of dereferencing per expression.
  10. 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).

Ну и что?


Количество говнокода, от которого зависит жизнь людей, растет. Пример с Тойотой показывает, что разработчики систем могут косячить и на элементарном уровне, не говоря уже на уровне принятия этических решений ИИ. Но основная беда не в том, что ошибки есть, а в том, что заинтересованные стороны препятствуют их поиску и исправлению. И эти стороны обладают достаточной мощью, чтобы надавить на NASA.



«Программирование сегодня — это гонка, в которой соревнуются разработчики, стремящиеся построить большие и обладающие защитой от дурака программы, и вселенная, порождающая всё больших и качественных дураков. На данный момент вселенная побеждает.»
— Рич Кук, писатель-фантаст



СМИ




Отчеты по расследованию


Красочная презентация Филиппа Купмана:


NASA Report on Toyota Unintended Acceleration Investigation
NASA Executive Summary
NASA Full Report


NHTSA Report on Toyota Unintended Acceleration Investigation




P.S.


За 4 года до


Куда ни приеду, моя работа заключается в применении одной простой формулы. Я храню тайны.

Это элементарная арифметика.

Задача из учебника.

Если автомобиль новой модели, изготовленный моей компанией, выехал из Чикаго на запад со скоростью 60 миль в час, — и заклинивает задний мост, машина разбивается и сгорает со всеми, кто попался в ловушку ее салона, — стоит ли моей компании возвращать модель на доработку?

Берем общее количество выпущенных машин данной модели (A), умножаем на вероятное количество машин с неисправностью (B), потом умножаем результат на среднюю стоимость решения вопроса без суда (С). A умножить на B умножить на C. Равняется X. Столько стоит не возвратить модель на доработку.

Если X больше стоимости возврата — мы возвращаем машины, и никто больше не пострадает.

Если X — меньше стоимости возврата — возврата не будет.

— Чак Паланик «Бойцовский клуб», 1996 год.

— И часто бывают такие аварии?
— Вы даже не представляете.
— А в какой компании вы работаете?
— В очень крупной.
— к\ф «Бойцовский клуб», 1999 год.
Автор: @MagisterLudi
PVS-Studio
рейтинг 344,06
Ищем ошибки в C, C++ и C# на Windows и Linux

Комментарии (258)

  • –7
    Говорите, при цикломатической сложности выше 50 программа не поддается тестированию? Надо бы сказать нашим QA.
    • +10
      Имеется ввиду юнит-тестирование. Скажите об этом своим разработчикам.
      Технически, это можно оттестировать, но код юнит-тестов будет ооочень длинный, а значит, может содержать свои ошибки.
    • +8
  • +6
    По работе ковыряюсь иногда в официальных сорцах драйверов для embedded железяк, применяемых в том числе и как авто-компоненты. Но не в шасси, а как мультимедиа и инфотейнмент. Поставщик — серьёзная компания, один из крупнейших игроков на рынке. Так вот, там — тихий ужас. Такое впечатление, что код не только не проверялся статически, но и не тестился вообще…
    • +6
      Это общая беда embedded-приложений. Проблема в том, что составить полноценную модель взаимодействия с железякой крайне сложно. Ну а многие производители добавляют радости, создавая даташиты с ошибками и умолчаниями, так что действовать зачастую приходится «методом тыка». Плюс культура самих разработчиков ниже — они больше «железячники», чем программисты.
      • +1
        С последним вынужден согласиться. Но только по той простой причине, что у нас минимум половина рабочего времени тратится на железо.
    • +10
      Ничего удивительного. По моим наблюдениям, многие «железячники» (одиночки) считают, что производство устройства — это искусство, подвластное избранным, а вот написать к нему код он сможет сам, так, на коленке. Это ж вообще мелочь. Получается работающий тихий ужас. Они очень обижаются, когда им на пальцах объясняют, почему их код дурно пахнет, потому что… ну… они ж железку сделали, че тут, программа какая-то.
    • 0
      Не надо подходы из инфотейнмента проецировать на царство autosar: там все по-другому ))
  • –3
    Что там можно было так наговнокодить то? Там же, если я правильно понимаю инжекторная электронника — считал показания датчиков, рассчитал параметры подачи смеси… Ну abs, ну srs, ну… да хоть что угодно, там же нет никакого ИИ, только какие-то базовые алгоритмы + набор обязательных/рекомендательных правил. Бред какой-то… =)
    • 0
      В новых авто (поколения drive by vire) вы не напрямую управляете дроссельной заслонкой, а только подаёте сигнал с датчика педали, а «компьютер» сам решает как и когда на этот запрос реагировать. Тоесть будет ли считан сигнал с датчика, будет ли он правильным и какой будет результат — зависит от программы и ошибок в ней.
      • +4
        Я это понимаю. В том и дело — задача компьютера — считать показания со всех датчиков, в данном случае и педаль тоже датчик и скорость движения и перегрузки и все что угодно — все датчики. Надо лишь рассчитать правильно все параметры для дальнейшего движения… Но… 81 514 ошибок в коде, Крал! Да код компьютера управлявшего полетом Апполона наверное меньше чем этот тойотовский изврат.
        • +1
          Компьютер, установленный на лунном корабле, имел оперативную память всего около 4 Кбайт (ферритовое ОЗУ на 2048 15 битных слов), ферритовое ПЗУ на 36 864 15 битных слов, состоял из 5000 микросхем, весил 30 кг и стоил 150 тысяч долларов… Но даже маломощный компьютер способен на многое — если не загружать его навороченными пользовательскими интерфейсами. Панель управления компьютером содержала всего 19 клавиш и несколько сигнальных транспарантов и цифровых индикаторов. Поэтому компьютер занимался только прямыми обязанностями, не отвлекаясь на рисование «окон» на экране. И благодаря этому он мог осуществлять управление лунным кораблём в реальном времени. На компьютере могло выполняться параллельно несколько задач, причём управляющая программа учитывала их приоритеты: более важные задачи, такие, как управление кораблём, выполнялись в первую очередь, а, например, выдача информации на индикаторы могла и подождать десяток другой миллисекунд. Сложные расчёты траекторий, требующие большого объёма вычислений, были проделаны на мощных компьютерах на Земле заранее, ещё до полёта, и их результаты были загружены в бортовой компьютер, который «пользовался готовыми ответами (http://www.studfiles.ru/preview/5239420/page:59/)
          • 0
            Чужие: странная архитектура инопланетных компьютеров.
            http://www.ferra.ru/ru/techlife/review/philae-computer/
    • –5
      А вот я если бы минусанул — написал бы почему. Молчуны-минусовщики, чего стесняемся?))
      • +2
        Минус не ставил, но поясню. Это обывательский комментарий без погружения в проблему, который очень сильно огорчает. Примерный аналог «ну что могло не так пойти с ракетой Маска? Просто взлетел и сел обратно. Причем туда же, откуда взлетел! Чего проще? Считал показания датчиков, рассчитал смеси и всё...»
    • 0
      Вот оно, направление мыслей разработчиков…
  • 0
    Если дело в коде ETCS, то в чём именно? Разве нельзя жёстко привязать управление дросселем, основываясь на глубине нажатаия педали газа? Иначе говоря, без измений показаний датчика нажатия педали не производить отклонения дросселя от начального. В этом случае проблема будет заключаться только в аппаратной части, а именно в неисправности датчика. Или же в приводе заслонки. Так что претензии к разработчикам мне неясны.
    • +1
      Прямой связи между силой нажатия и углом отклонения нет, так как подобное поведение будет приводить к неэффективной работе двигателя. Учитывается при этом и текущий режим работы — скорость, обороты, состав смеси и т.д. Лучше загуглить, я не профи в этом :)
      • 0
        Это понятно, но почему невозможно прописать жёсткое условие, что любое отклонение недопустимо, если не было изменений по силе нажатия на педаль?
        • 0
          Потому что внешние условия меняются. Пример. Вы «мгновенно» нажали на педаль до упора и держите. Положение педали не изменяется. Двигатель начал раскручиваться, автомат начал переключение передач. В процессе разгона параметры подачи воздуха и топлива будут изменяться!
          • 0
            В посте речь идёт о том, что 2 девушки разбились на автомобиле из-за того, что автомобиль начал самопроизвольно разгоняться (вместо желаемого торможения). То есть если воздействие на педаль было, то поведение машины верное, если же воздействия на педаль не было, то почему не отселки это жёстким условием в программе?
            • 0
              Любопытно, что в любой машине с АКПП педаль тормоза сильнее педали газа.
              Например для АКПП есть понятие STALL TEST: удерживая машину педалью тормоза, нажать педаль газа до упора, и считать показания тахометра. Это штатный тест, при котором машина стоит на месте. Вопрос — почему девушка не нажала на тормоз до упора?

              Если же машина с МКПП — то выключить сцепление, и тяга исчезнет.

              То есть водитель на исправной машине в принципе может предотвратить разгон. Тем не менее такие аварии происходят.
              • 0
                Большая мощность тормоза чем двигателя при любых условиях работы двигателя это стандарт безопасности которому должны следовать все автопроизводители.

                Особенность гибридной Тойоты в том что в трасмиссии совместно с двигателем еще включен через планетарную передачу и электродвигатель/генератор.

                Соответственно электродвигатель может добавлять мощности вместо того чтобы крутить двигатель на очень неэфективных режимах (вот в этом и экономичность) или наоборот заряжать батарею отбирая мощность от двигателя.

                Тут есть один момент:

                Формально Тойота сделал все правильно по стандарту если реализовала большую мощность тормоза чем двигателя.

                Но если они не реализовали большую мощность тормоза чем двигатель+электродвигатель, то тогда ошибка в софте которая приведет к работе в режиме максимальной мощности и двигателя и электродвигателя приведет к тому что вы даже не сможете остановить машину тормозом и с большой вероятностью попадете в аварию.
                • 0
                  В конце концов, почему бы не нажать на кнопку «Engine off» или выключить замок зажигания?
                  Ну пусть при этом заблокируется рулевая колонка, но по крайней мере разгона не будет.
                  • 0
                    В тойотах кнопка, но кнопка скорее всего «програмная» а не такая что отключает питание всех систем автомобиля. В современном автомобиле остается еще много систем все еще подключеных к питанию даже с «engine off». Так что опять если ошибка в коде и кнопка…
                    • 0
                      Кстати, многие автопроизводители (в Европе — в особенности) делают машины с кнопкой старт-стоп по схеме «добавим кнопку и еще один контроллер с силовыми реле для управления замком зажиания».
                  • +1
                    Двигатель нельзя глушить, т.к. отключится и гидроусилитель руля. У меня на старой Рено однажды из-за проблем с электрикой двигатель на ходу заглох, так я едва не протаранил авто, когда нужно было поворачивать, а усилитель отключился неожиданно (благо скорость была 5 кмч во дворе)
                    • 0
                      Эм… ГУР? Серьёзно вот это? Пишут, что при отключении ГУРа рулить чуть сложнее, чем на машине без ГУРа, ведь привод то всё равно есть.
                      Лично я бы больше волновался за усилитель тормоза.
                      • 0
                        У меня вообще усилителя нет. Нормально. Видимо, тут проблема в нарушениях рефлексов. Резко изменяется отзывчивость. Рулить можно спокойно, но времени привыкнуть нет.
                        • 0
                          Это не одно и то же. На машине с ГУР при отключении оного рулить намного тяжелее, чем в машине без ГУР. Даже если взять примерно одинаковые комплектации, но с ГУР и без него. Под усилитель руля ставят редуктор с уменьшенным передаточным отношением.
                        • 0
                          Не совсем так. У меня как-то лопнул ремень ГУра (на малолитражке Мицубиси Кольт Мираж), на скорости 30-40км при входе в поворот. Так я решил, что руль заклинило!!! При весе 120кг и росте 187см я с большим трудом смог вырулить… Кирпичей отложил — на гараж хватит :)
                      • 0
                        Вопрос времени. С ГУР ты можешь рулить одним пальцем, без него надо прикладывать усилие, девушкам может даже двумя руками. Пока вспомнишь, как рулить с перехватами — здравствуй, столб.
                      • 0
                        На заборе много чего пишут. У меня есть, с чем сравнить. Когда-то ездил на машине без усилителя руля и тормозов (ВАЗ-21011). Руль на скорости достаточно лёгкий, но на месте… Тормоза тоже значительно тяжелее.
                        Опять же, это очень легко проверить, если покрутить руль у заглушенной машины на месте от упора до упора: крутить придётся двумя руками и прикладывать ощутимое усилие. Тормозить — то же самое: давить со всей силы, вжимая филейные части в спинку сиденья.
                        • 0
                          Когда-то ездил на машине без усилителя руля и тормозов (ВАЗ-21011).

                          Опять же — это не то. При отключенном ГУРе рулить еще тяжелее, чем если его вовсе нет. Так же и с тормозами. Продавить ваккумник тяжелее, чем если его вовсе нет.
                          • 0
                            Отключенный ГУР крутил и вакуумник продавливал. Не принципиальное отличие :)
                            А вот для тех, кто всю жизнь ездит с ГУРом и ваккумником — старый жигуль будет луноходом просто :)
                            • 0
                              Не принципиальное отличие :)

                              Зависит от машины. На старом Мерседесе намного тяжелее руль крутится без ГУР чем на классике, хотя и там и там редуктор и разница по массе не так велика.
                    • 0
                      Еще и усилитель тормозов :) Вакуумный тоже от двигателя работает.
                      • 0
                        Ну у него есть запас на 2-3 торможения после остановки двигателя.
                  • 0
                    В моём Вольво, пока не переведёшь рычаг АКПП в режим парковки, кнопка выключения двигателя на нажатие не реагирует.
                    • 0
                      То что на включение не реагирует — логично, но не могу уследить логику почему выключать нельзя…
                      • 0
                        не знаю, но сегодня проверил ещё одну штуку: не обязательно вообще мотор выключать, на скорости АКПП запросто переводится в нейтралку, так что шансы есть.
                • +2
                  Еще есть ручник =) Он в критические моменты может быть полезен.
                  • 0
                    Не везде он механический, а электронный, насколько я знаю, не сработает во время движения быстрее чем какой-то порог (5км/ч или типа)
                    • 0
                      Возможно так не везде, но на VW если нажать электронный ручник и держать, он должен делать экстренное торможение.
                      • 0
                        На некоторых VW с механикой есть такая кнопка и там она срабатывает всегда, даже держать не надо. Читал на форумах истории о том как на ходу при включенной передаче эту кнопку «случайно» нажимали :)
                        И если нажать эту кнопку, то делается не экстренное торможение, а просто блокируются задние колёса. Я на своей так на нейтралке катился со скоростью 20км/ч (на полигоне), нажал (решил посмотреть что будет), машина с визгом остановилась и было явно, что АБС не сработала. Есть возможность сделать экстренное торможение резким ударом по педали тормоза (впрочем как и у любого другого автомобиля с АБС), тогда и АБС срабатывает и аварийка включается сама.
                        • 0
                          Задние блокировались потому, что привод задний — это не так страшно. В переднеприводном (или полноприводном) автомобиле всё будет опаснее — заблокируются передние колёса и автомобить будет неуправляем.
                          • 0
                            У меня как раз полноприводный, но на МКПП, там всё проще, если вдруг движок заглючит, то можно выключить его или сцепление выжать. Если сцепление заглючит, то можно без него на нейтралку переключиться, мы же не преследуем цель сохранить КП и движок в таких ситуациях. По идее можно и на скорости кнопку парковочного тормаза нажать, только потом, боюсь, КП на капиталку пойдёт :(
                            Так называемый «ручник» в любой машине блокирует задние колёса, это на сколько мне известно… Не знаю, может и есть автомобили у которых «ручник» блокирует передние колёса, но я такие не видел :)
                            • 0
                              Я подумал, что вы про кнопку отключения двигателя.
                              • 0
                                Если двигатель на ходу заглушить на любой машине со включенной передачей, то будет торможение двигателем, двигатель не сможет заблокировать колёса, если только его не заклинит.
                                У меня, например, при включенном автохолде при заглушении двигателя (а так же если отстегнуть ремень безопасности или открыть водительскую дверь) автомобиль автоматически встаёт на парковочный тормаз, но если машина будет ехать (проверял) и заглушить двигатель, то парковочный тормаз не включится.
                    • +2

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

                      • 0
                        Что это за машина такая?)
                      • 0
                        Тут бывает забавно: если зажать ручник на максимум и ручниковые колодки в порядке, то машина будет ехать с заклиненными задними колесами, с характерным запахом и звуком.
                        Если же ручник не полностью зажат, колодки ушатаны, либо тросик чуть растянулся, то визуально ничего не заметно, лишь тяга станет меньше. Знакомая так на Honda Fit (Jazz) целый день проездила, а движок там не не сравним с вашим Pajero :)
                  • +2
                    Ручник не сдержит разбушевавшийся движок. Бывали даже случаи что люди катались с ручником и удивлялись «а чо эта машина тупит?».
                    • 0
                      Более того, если тормозить плавно — ручник перегреется и сдохнет. В смысле — перестанет держать. А если машина едет километров так 150 — это случится в течение нескольких секунд. А если резко дёрнуть ручник на 150 км — ну, скорее всего машина перевернётся в результате заноса задней оси.

                      А по поводу «катались с ручником» — что значит «бывали случаи»? Подозреваю, что такое бывало у всех. У меня так каждую зиму, далеко не по разу. Колодки примерзают и привет. Узнаю, что задние колёса не крутятся, когда поворачивать начинаю, и зад уносит. Дабы скорости маленькие, беды не случается. =)
                      • 0
                        У меня за несколько лет колодки не примёрзли ни разу. Ручником пользовался постоянно.
                        • 0
                          Барабанные примерзают.
                          • 0
                            Именно барабаны ни разу не примёрзли. 5 лет, почти ежедневные поездки, ручник всегда и он реально держит.
                            • 0
                              У меня примерзали. Вы где живете — какой климат — континентальный? У меня приморский, часто температура через 0 гуляет. Соответственно, конденсат — частое явление и замораживание оного.
                              • 0
                                Дело было на Урале. Воздух весьма влажный. В межсезонье гуляет через ноль постоянно. Многие жалуются, что примерзает, а потому пользуются эпизодически. Я на стояночный тормоз ставил всегда и у меня ни разу ничего не примёрзло.

                                Собственно, я не вполне понимаю, как конденсат будет проникать между поверхностями колодки и барабана, если они плотно прижаты друг к другу. Вот если между ними есть зазор, то представить можно.

                                Вообще, в такие глубины вопроса я не вникал — просто ставил и всё. Кстати, у стояночного тормоза есть такая штука, как механизм автоматического подтягивания. Маленький такой храповичок. Как раз, для компенсации износа колодок. Может, потому ничего и не примерзало, что я ставил стояночный тормоз (у меня это был «ножник») после каждой поездки, соответственно, колодки были подтянуты и конденсат между колодкой и барабаном не попадал.
                                • 0
                                  Ларчик открывается просто, чаще примерзают не сами колодки (хотя это тоже имеет место, даже с дисковыми тормозами, но там обычно достаточно покачать вперед-назад и отрываются), а тросик ручника под оплетку которого попадает вода.
                                • 0
                                  как конденсат будет проникать между поверхностями колодки и барабана, если они плотно прижаты друг к другу. Вот если между ними есть зазор, то представить можно.

                                  А он всегда есть. Усилие там не такое большое, как на гидравлике, да и поверхность трения может быть изношена, вплоть до борозд.

                                  Кстати, у стояночного тормоза есть такая штука, как механизм автоматического подтягивания. Маленький такой храповичок. Как раз, для компенсации износа колодок

                                  Это от машины зависит. На классике и Волге, например, есть специальные распорные кольца в тормозных цилиндрах, которые продвигаются вовне по мере износа колодок и не дают им отойти слишком далеко, там ничего регулировать не надо.
                              • 0
                                Вот, нашёл:
                                image
                                Обведённая красным деталь — это и есть храповый механизм, который разводит колодки по мере износа. Полезен ещё и тем, что зазор между барабаном и колодкой не увеличивается по мере износа, а значит, тормоза срабатывают на доли секунды быстрее. Чтоб колодки были подведены, надо просто постоянно пользоваться ручником.
                  • 0
                    Там же скорее всего электронный ручник кнопкой с защитой от нажимания на скорости.
                  • 0
                    Не 100% вариант. Был опыт езды на Ваз 99 по грунтовке после 2-х недельных дождей. Задние арки быстро забивались глиной вперемешку с соломой и колеса переставали крутиться. На скорость это ни влияло никак. Проблема была только тронутся если пришлось остановиться. Тогда приходилось чистить задние арки, трогаться и ехать дальше.

              • 0
                У АКПП тоже есть нейтраль, и это — соседнее с D положение!
                • 0
                  А в него можно переводить на ходу? Например обычно в P и R на ходу переводить запрещено, и если переключатель электрический, его возможно проигнорируют…

                  Так и нейтраль могли «защитить от случайного выключения на ходу»…
                  • 0
                    P сломает коробку, потому что включает механическую блокировку выходного вала. Реверс тоже, потому что мост и движок будут пытаться «скрутить» коробку винтом. А нейтраль — нет. Но это у старых коробок, как с современными — не знаю.
                  • 0
                    Насколько я понимаю, не только можно, и даже может быть нужно в ситуациях вроде описанной.
                    • 0
                      Вопрос шаблонов поведения и стандартов безопасности…
                      Неожиданно может оказаться что из-за случайно включенной нейтрали будет больше вреда, чем от этих ошибок Тойоты…
                  • 0
                    http://www.popularmechanics.com/cars/how-to/a7890/if-you-shift-an-automatic-while-driving-will-you-damage-your-engine-11413677/
                  • 0
                    На моем вариаторе (2007 г) можно, даже случайно рукой задев рычаг на ходу, переключить в N (даже не нужно кнопку жать на рычаге). Сразу размыкается связь коробка-двигатель (просто снимается давление с пакета фрикционов, насколько я понимаю). Ничего критичного для коробки не происходит.
                    • 0
                      В данном случае критичность не для коробки, а для безопасности движения…
                      • 0

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

                        • 0
                          Ну, как минимум не рекомендуют обычно двигаться накатом в условиях плохого сцепления с дорогой.

                          Плюс, в случае необходимости быстро сманеврировать, будет дополнительная задержка на втыкание передачи…

                          • 0

                            Суть в том, что переключение на нейтралку не приведет к каким-либо катастрофическим последствиям.

                            • 0
                              Не всегда. Представьте что нейтралка случайно включилась в повороте, а дорога мокрая/скользкая… Я вот неуверен, что среднестатистический водитель не улетит…
                              • 0
                                Почему он должен улететь, если тяга стала меньше, снос, соответственно, тоже?
                                • 0
                                  Сбросьте на льду в повороте (только не на дорогах общего пользования) тягу на переднем приводе и посмотрите на поведение машины…
                                  • 0
                                    А, ну на переднем да. Просто никогда не было переднеприводной, даже не задумывался в этом направлении.
                  • 0

                    На нейтралку на ходу конечно же можно переводить. Во всяком случае, пока что не встречал иномарок с автоматом, где этого сделать было бы нельзя или где коробка игнорировала бы такое переключение. На Тайотах такого точно не замечал.

              • +1
                То есть водитель на исправной машине в принципе может предотвратить разгон. Тем не менее такие аварии происходят.

                Опытный водитель, понимающий различные события и умеющий на них адекватно реагировать.
              • 0
                Тут надо учитывать, что необходимая мощность тормозов чтобы не дать машине тронуться меньше, чем мощность, необходимая чтобы её остановить во время разгона «газ в пол». Как минимум, торможение в пол в такой ситуации приведёт к неконтролируемому сносу автомобиля.
                Но, я так понимаю, по факту, хуже: у жертв говнокода тойоты, как написано в презентации в статье, интенсивное торможение вызвало перегрев тормозной системы, повреждение ротора тормозной системы, как следствие, торможение становится неэффективным и уже не может остановить машину.

                Правильное решение — сбросить коробку в N, я так понимаю, это можно сделать на всех автоматах. Но надо понимать, что счёт идёт на секунды, человек находится в состоянии глубокой паники, а есть много людей с водительскими правами, которые не ответят на этот вопрос даже в спокойном состоянии.
                • 0
                  повреждение ротора тормозной системы

                  Диски, друзья, тормозные диски.

                  как следствие, торможение становится неэффективным и уже не может остановить машину.

                  Нет. Перегревается диск, колодки и жидкость. Жидкость закипает. То, что диск от нагрева потом поведет винтом — дело десятое. На больших скоростях при резком торможении диски очень быстро накаляются докрасна.
              • 0
                Вполне разумное предположение. Я тоже считал, что выжав тормоз, можно остановить автомобиль даже с полностью открытой дроссельной заслонкой.
                Но, обратите внимание на презентацию Ф.Купмана. Оказывается это не всегда так, и на мой взгляд, именно проблема с тормозами является истинным и окончательным виновником тех трагических случаев (видео из презентации — https://www.youtube.com/watch?v=VZZNR9O3xZM). То есть по факту имеем две проблемы — «залипшая» педаль газа и фактически неработающие тормоза.

                Почему те водители не предприняли других действий для остановки автомобиля тоже весьма понятно. Ситуация развивается весьма быстро, присутствует паника и шок от осознания того, что водитель все сильнее давит педаль тормоза, а автомобиль продолжает разгоняться (эта же проблема наблюдается, когда просто путают педали). Плюс необходимость крутить рулём, объезжая препятствия. Человек не успевает распознать и осознать в чем проблема и сделать банальную вещь — перевести коробку в нейтраль. Отключение зажигания чревато «потерей» тормозов, без усилителя далеко не все и не на каждой машине смогут создать достаточное усилие на тормозной педали для эффективного торможения.
                • 0
                  Очень интересная информация, спасибо!

                  Дело усложняется тем простым фактом, что положением «N» на АКПП пользоваться приходится крайне редко. По сути в режиме обычных поездок — никогда. Поэтому мышечной памяти перехода D->N банально нет. А вот D->R есть, и на видео в статье это тоже было — человек переключил коробку в «задний ход», после чего совершил вторую аварию.
                • 0
                  «Потеря тормозов» будет в случае отключения двигателя только если он разъеденён с коробкой, тоесть нет торможения двигателем. Да и эта потеря будет только если несколько раз нажать и отпустить педаль тормоза.
              • 0
                Скорее всего, водители просто не успевали отреагировать.Те, кто успевали, могли не войти в печальную сводку.

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

                Поэтому естественная реакция — затормозить штатными средствами довольно правильная. А машины с МКПП в США скорее исключение, чем правило.

                Выжать педаль до упора быстро и эффективно (ударом) надо тренироваться, иначе эффективность торможения далека от требуемой в таких экстремальных условиях.

                В общем, надо быть опытным водителем и быть начеку, чтобы успеть усмтрить взбесившийся автомобиль. Вряд ли девушки на семейном седане Camry из этой категории…
                • 0
                  Ну, по поводу усилия — не надо недооценивать силу ноги человека. Тем более под адреналином. Где-то читал, что даже в не особо пугающих ситуациях, сила нажатия достигает 200 кг, и охотно в это верю. А 200 кг на педали — это весьма дофига, и хватит, чтобы надёжно заблокировать колёса.
                  • 0
                    Понимаете, там в трубопроводах масло определенной вязкости, да и нарасширение шлангов часть сил потратится, и чтобы все это сработало экстренно быстро, по педали надо бить резким движением. Разница примерно как рукой «нажать на воду» и «стукнуть по воде».

                    Иначе давить вы будете слишком долго для эстремальной ситуации, даже если вы очень сильный. Пристегнитемь и попробуйте на пустой прямой дороге, увидите, насколько классные на самом деле тормоза у вашей машины ))
              • 0
                В положении D — двигатель просто заглохнет при таком тесте. И есть еще ручник и замок зажигания — это просто неготовность к экстремальным ситуациям… Если бы они:
                1. Вдавили педать тормоза до упора
                2. Дернули ручник до упора
                3. Выключили зажигание
                при любом из этих действий авто остановится!!!
                • 0
                  Про первое действие ничего не могу сказать.
                  Пункт два — ручник не удержит машину, у которой педаль в пол. Вообще никак не удержит.
                  Пункт три — современные машины с АКПП не глушат двигатель если рычаг скоростей не стоит в положении P. Т.е. можно завести машину, поставить на D, выключить зажигание и продолжать ездить.
                  Правильный вариант: выбить коробку передач на N, тормозить хоть педалью тормоза хоть ручником. Но к сожалению этому почему-то никто не учит.
            • 0
              Для «компьютера» воздействие на педаль это (в итоге после считывания с датчика) значение в ячейке памяти, а с ним много чего может случится если в программе есть ошибки. Да и кусок кода, тоже, может неправильно реагировать на это значение, даже если оно соответствует действительности.

              А что «отсекать»? Педаль не нажата или педаль вдавлена до упора — это нормальные ситуации, как их «отсекать»?
        • 0
          Условия дорожные меняются. Например, круиз контроль, при котором газ вообще не нажимается. Машина едет в горку и двигатель увеличивает обороты для поддержания скорости.
          Но, в целом, я думаю, что если чего-то в коде нет, то на это была причина (или это баг). Все таки не совсем идиоты софт пишут.
        • +2
          Опять же «не было изменений» — педаль у нас аналоговая, а параметр на выходе цифровой. Следовательно, есть АЦП с определенной точностью. Младший бит после оцифровки будет «дрожать». Или не один бит. Усреднять по времени? Появляется время реакции системы на управляющее воздействие — а пользователь жалуется, что машина «тупит».
          • 0
            Это если 8 уровней нажатия, разве что. Хотя не знаю как там у педали газа/тормоза, может и правда 8 (а не 1024+ как у планшетов/джойстиков/геймпадов и т.д.)
            • 0
              Посмотрел в OBD2 — все throttle position там 8-bit. Правда внутри ECU может быть и другое значение.

              Кстати, в OBD2 положений педали газа несколько. «Просто положение», относительное, и пять абсолютных. Выбирайте на свой вкус :)
          • 0
            Зачем так сложно? Начинайте считать изменение с определённого порога, отсекая тем самым реакцию на дребезг.
            • +1
              Я пытаюсь объяснить, что проблема достаточно сложна, чтобы иметь много простых, но неправильных решений.
              • 0
                Да, но защита должны быть проста и железна: разрыв, жёсткое условие. Если на защиту, влияющую на продолжение жизни пользователя, накладывать много различных условий, вероятность её отработки сокращается. И проектирование системы должно начинаться как раз с защиты.
                • 0
                  Резкая остановка двигателя тоже весьма опасна при движении. Возникнет вопрос, как избежать случайных срабатываний данной «защиты».
                  • 0
                    Никто не говорит об отключении двигателя, я говорю о возвраще дросселя к положению «холостые обороты».
    • 0
      Управлять нужно не только количеством воздуха через дроссель, но еще и количеством топлива через форсунки.
      Даже в механическом карбюраторе, который вроде бы подходит под ваше описание «прямой связи» педали и заслонки, есть ускорительный насос — конструкция, которая вспрыскивает дополнительное количество топлива, если водитель нажимает на педаль газа быстро. Это показывает, что важно не только положение педали газа, но и скорость/ускорение ее нажатия. Кроме того, есть экологические требования, то есть нужно удерживать стехиометрический состав топливно-воздушной смеси (из за этого первые модели машин с электронной педалью газа были весьма задумчивы). А в современной машине есть еще АКПП, которая работает в связке с двигателем, и они решают общую задачу, следовательно влияют друг на друга.
      • 0
        Я говорю не о прямой связи педаль-заслонка, а о жёстком условии, при котором изменение положения дросселя производится только при изменении показаний датчика от педали.
        • +1
          Кроме датчика педали, у ECU есть масса других управляющих параметров:
          — датчик положения коленвала
          — датчик положения распредвала
          — температура входящего воздуха
          — давление входящего воздуха
          — температура охлаждающей жидкости
          — давление топлива
          — датчик кислорода в выхлопных газах (или несколько)
          — датчик температуры катализатора (или несколько)
          — напряжение бортовой сети

          И еще аварийные алгоритмы работы в случае, если какой то из датчиков сегодня не работает, а пользователь все таки хочет ехать (возможно на сервис).
          • 0
            Почему не берут за основу модель с тросиком? Там дроссель на открытие ну никак не пойдёт без воздействия на педаль. Дроссель не открывается — нет воздуха, значит получается бедная топливная смесь, значит обороты двигатель не развивает, машина быстрее не едет.
            • 0
              Потому что модель «без тросика» имеет больше мощность, меньше потребление, лучше экологичность. Сплошные потребительские плюсы.
              • +1
                Я бы предпочел тросик :) как нажал, так и поехал. А автоматика пущай максимально подстраивает остальные параметры. Какой выигрыш сейчас полной автоматики и простого инжектора в одинаковых условиях ускорения?
                • 0
                  По потреблению топлива — раза в полтора при прочих равных условиях.
                  • 0
                    Ну прям уж — хотите сказать что машина становится в полтора раза экономичнее только за счёт электронной педали газа?
                    • 0
                      Скорее все же за счет ECU. И наличие электронной педали (и электронного же дросселя) позволяет ECU полностью управлять ситуацией, а не компенсировать то, что пользователь делает с педалью газа и тросиком к дросселю.
                      • 0
                        На самом деле да, уменьшается потребление топлива за счет более точной смеси в каждый момент времени. Но про полтора раза вы сильно погорячились.

                        Если взять инжектор без электронной педали — то в прошивках закладывают коррекцию на изменения нажатия педали газа на циклы вперед. В двух словах это не объяснишь, но благодаря совокупности этих калибровок итоговая погрешность смеси в любом режиме выходит совсем небольшой.

                        Электронная педаль лишь позволяет это делать еще более точно. Не берусь сказать точные проценты, но по моему скромному мнению разница в экономичности вряд ли превысит процентов 5, а так, я думаю и того меньше.

                        Но это опять же если используется адекватные настройки электронной педали. Т.е. в случае «прочих равных условий». А так, ее можно настроить так чтобы она душила двигатель на этапе разгона с той целью чтобы смесь всегда была стехиометрической (что кстати отчасти и делают автопроизводители). Получится очень-очень экологично, и экономично. Но о более-менее приемлемом разгоне можно забыть.
                        • 0
                          Пожалуй соглашусь про «погорячился» :).

                          На практике эффект экономии топлива есть, и даже в полтора раза, но он комплексный, от многочисленных изменений в машине. В моем случае:

                          — появление электронной педали;
                          — уменьшение объема двигателя (2.0 -> 1.8), при этом мощность двигателя выросла;
                          — появление плавной регулировки высоты подъема клапанов;
                          — замена АКПП на вариатор;
                          — замена ГУР на ЭУР;
                          — лучшая аэродинамика;
              • 0
                А больше мощность откуда?
            • 0
              Тросики тоже не идеальны, они могут обрываться (лучший вариант) или заклинивать (хуже).
              • 0
                2 раза сталкивался с обрывом тросика на ВАЗ 21102, вполне спокойная ситуация.
                • 0
                  Но заклинивание троса газа на Явах и Планете-Спорт бывает приводило к печальным последствиям, если водитель терялся в такой ситуации.
          • 0
            Нет там давления топлива — не нужно оно там. Количество топлива задается временем работы форсунки
            • 0
              Это не обязательный параметр, как и многие другие. Но если он есть — ECU может точнее дозировать смесь.

              OBD-II, mode 1, pid's: 0xA, 0x22, 0x23, 0x59
            • 0
              А давление топлива обычно регулируется вакуумным регулятором, который берет опору из впускного коллектора. Больше вакуума, больше топлива течет в обратку, меньше давление в рампе, и из-за этого не так критично малое время открытия форсунки на холостых оборотах, когда это время сравнимо с временем срабатывания форсунки (~1 мс.)
              • 0
                В каком веке вы живете?
                Нет никакой обратки в современных инжекторных авто. Насос качает постоянное давление в рампу и уже ECU рулит на какое время открыть форсунку. Дроссельная заслонка не пропускает через себя топливо или ТВС — только воздух. Больше открыли — больше дали воздуха, по показаниям MAP/MAF расчитали сколько топлива лить — на соответствующее время открыли форсы. Все.
                • 0
                  Все правильно написали, ваши представления не отличаются от моих.
                  Посмотрел, на 1NZ-FE, например, действительно регулятор давления перенесли в бензонасос. Ну и дураки, как мне кажется, из-за описанных выше причин (время срабатывания форсунки).
                  • 0
                    Да не только Toyota, у меня вообще Honda и L15A VTEC. Судя по всему практически везде начиная где-то с 2000 года именно так. Нет обратки топлива, давление рулится насосом в баке.
                    • 0
                      Две магистрали дороже одной, а клапан давления все равно где ставить — в движок или в насос.
                • 0
                  А если давление после насоса просядет (насос изношен), то ECU не будет компенсировать это другим значением времени открытия форсунки?
                  • 0
                    В небольших пределах возможно. Недолив скажется на составе смеси -> детонации к примеру, что ECU увидит на датчиках, недолив как и перелив увидит лямбда как обратная связь в ECU, и вторая лямбда при ее наличии. Как правило простые авто типа Fit или там какой нить Vitz у тойоты так и работают.
                  • 0
                    На том же 1NZ-FE в ECU заведен датчик давления топлива. Так что компенсирует.
            • 0
              Интереса ради снял статистику по подконтрольным автомобилям с полной информацией по OBD2.

              Машин всего: 267
              С датчиком давления топлива: 57 (21%) (3 бензиновые, 54 дизельные)
              • 0
                Внимание! 96% авто с датчиком давления — дизельные. Я так подозреваю что 3 бензиновых это GDI
                • 0
                  Еще хуже, можете считать что дизельных 100% :-)

                  Те три бензиновых машины, попавших в выборку, выдают Fuel Pressure=0, то есть явный косяк в ECU (выдача пустого параметра). Производитель один — GM (конкретную модель сказать не могу).
                  • +1
                    Вот я про то же. На дизеле понятно зачем давление топлива нужно в мозгах — контроль давления от ТНВД или что там сейчас — иначе можно и недешевые форсы завалить
    • 0
      Управление дроселем может быть нужно:
      Круиз контроль
      Показание лямбд — корректировка смеси
      Работа автомата — более плавные переключения
      Повышение экологичности, расхода топлива, прохождение дизель теста, но это к VW
      Сейчас уже не карбюраторные машины, (но и там был «подсос»), и всякие нормы экологичности за частую душат возможности двигателя очень сильно.
      • 0
        Корректировку смеси гораздо проще делать временем впрыска.
        Поддержание стабильных оборотов холостого хода делается быстродействующим соленоидом с ШИМ модуляцией и варьированием угла опережения зажигания.
      • 0
        Первые два пункта замечательно работают и без электронной педали газа :-)
        • 0
          Круиз-контроль на автомобилях без электронной педали газа очень похож по конструкции на «электронную педаль газа» (прошу прощения за каламбур). В нём есть привод двигающий дроссельную заслонку, так что, теоретически, с ним также возможна ситуация, когда автомобиль будет неконтролируемо разгонятся.
          • 0
            Не совсем — обычно он не двигает заслонку напрямую — а тянет или блокирует сам тросик, по крайней мере в тех, с которыми я сталкивался
            • 0
              Какая разница? Точно так же натянет тросик до упора и привет.
              • 0
                Любое натяжение троса газа или торможение — отпускает тросик круиза — механически
                • 0
                  Это смотря какая машина.
                  • 0
                    Да кто спорит — я же сказал — те, которые видел.
                    В универсальных на трос — параллельный тросик с мотором и концевики на медалях
    • 0
      В этом случае никаких особых отличий между «электронным газом» и обычным тросиком не будет.
      Управление подачей воздуха осуществляется в соответствии с некоторой таблицей, в зависимости от температуры окружающего воздуха и температуры двигателя (и много чего еще, но пока пусть только три). Степень нажатия и две температуры, целых три параметра, это уже большое пространство для ошибки выхода за границу массива по любому из трех.
      Просто все выглядит только когда у нас одна машина, одна педаль газа, один двигатель и постоянные нормальные условия. В реальной жизни так не бывает.
      • +1
        Все комментарии сводятся к тому, какая степень нажатия на педаль, я же говорю о состоянии педали — нажата или вообще никакого воздействия на неё нет. Если никакого воздействия нет, то и увеличения скорости быть не должно. Грубо говоря, с точки зрения пользователя педаль акселератора выполняет функцию ускорения и поддержания скорости. Какой ещё рычаг/тумблер/механиз управления выполняет эту функцию? Никакой (если никто сзади с горки не толкает, конечно). Так какого хрена автомобиль девушек начал ускорение (я в это, конечно, слабо верю, скорей всего действительно педали перепутали), почему разработчики не прописали жёсткое условие «нет воздействия на педаль — нет увеличения оборотов, отличных от холостых»?
        • 0
          Пожалуй добавлю, что у меня был случай на ВАЗ-21093 с карбюратором, когда машина начала самопроизвольно разгоняться без нажатия на педаль газа. Банально слетела пружина возврата тросика газа. Так что тросик — тоже не панацея.
          • 0
            Это то, о чём я говорил выше — аппаратная проблема. Вины программистов в этом нет. Пост же написан так, будто все 81 514 ошибок относятся непосредственно к безопасности, из-за этого то девочки и попали в аварию. А вовсе не из-за того, что не контолировали дорожную ситуацию.
            • 0
              А в случае embedded — программист и инженер-электронщик это или один человек, либо они работают в очень плотном контакте. Не далее как вчера у меня на работе одна из проблем с надежностью в серийном изделии была решена изменением в схеме плюс изменением в коде. И раздельно эти решения не работали.
        • +2
          Ситуация, которая происходит на видео, в коде может образоваться при выходе за пределы таблицы поправочных коэффициентов и последующем зависании трэда (многопоточность есть и во встраиваемых системах), ответственного за вычисление угла поворота заслонки/оборотов двигателя. О каком простом условии может идти речь, если ответственный за проверку этого условия код попросту завис? Посмотрите на видео в статье — иногда даже удар автомобиля не включает защиту и авто все равно продолжает газовать.
          Да, я понимаю что можно просто привязать максимально тупую механическую обратную связь которая будет блокировать разгон авто при отжатой педали акселератора. Но это все-таки автомобиль, а не ракета, производителю проще не дублировать защиту от такой ситуации механически.
          • 0
            Не думаю, что установка одного концевика сильно усложнит проектирование, производство и сильно скажется на стоимости автомобиля.
            • +2
              Не думаю, что установка одного концевика сильно усложнит проектирование

              Вы удивитесь…
              Вообще электронщики, как вы и говорили изначально, считают что задача плевая и зависнуть там ничего не может. Вот и не добавляют лишних деталей. И проблема действительно простая — если производить тестирование кода и как следует изолировать код от аппаратуры (ибо она, как я уже говорил, меняется со временем. Да и нельзя нормально тестировать код с большим количеством внешних зависимостей). Но, как и во всех программистских областях, заказчики считают что код простой и то, что его надо тестировать и поддерживать во внимание не берут, все нужно доказывать, а большинству разработчиков не хочется бодаться с заказчиком, который с радостью сменит прогера на более сговорчивого. Вот и получаются таки монстры с 81k нарушений…
              • 0

                У государства лопнет таки терпение и оно введёт таки спецгосорган для "шмона"-экспертизы кода, введёт штрафы и обязательное доказательное программирование — а за его содержание будут платить производители и потребители.

          • 0
            Но это все-таки автомобиль, а не ракета, производителю проще не дублировать защиту от такой ситуации механически.

            Но автомобили куда как опаснее для всех нас чем ракеты. Ясное дело, что все «фичи» и дублирования будут в конце-концов оплачивать потребители, но судя по тому, что крупные автопроизводители в своих маркетинговых компаниях часто делают упор именно на безопасность — покупатели готовы за это платить.
        • 0
          Я писал выше - вы забываете что проблема неожиданного ускорения присутствует только в гибридных авто Тойоты. В них вместе с двигателем через планетарную передачу ещё подключен электродвигатель/генератор довольно хорошей мощности. Собственно когда педаль акселератора не нажата, двигатель не крутит на холостых а например передаёт мощность на генератор для зарядки батареи, или наоборот электродвигатель может хорошо добавлять мощности вместо того чтобы крутить двигатель на очень неэффективных режимах (вот в этом и экономичность), или (есть и такая опция в приус) ехать только на электромоторе, недолго пару км. Собственно софт управляет двумя двигателями в тандеме и ошибка в софте или неправильный учет особенностей этих двух очень разных двигателей (плюс там может гистерезис или что там) вполне может привести к неожиданному ускорению.
        • 0
          «Компьютер» знает об воздействии на педаль только через датчики наклона этой педали (они обычно задублированы в авто с системой «электронный газ»). И ошибок, теоретически, может быть куча — неправильно прочитано значение датчика, изменено в результате ошибки, в конце-концов может быть неправильно прописано условие, когда не важно это значение вообще.
        • 0
          машина едет под горку с отпущенной педалью газа? Скорость и обороты двигателя увеличиваются и это надо компенсировать.
        • 0
          Круиз-контроль. Педаль полностью отпущена — машина едет с заданной скоростью.
    • 0
      К сожалению жестко нельзя. Привод заслонки зависит не только от педали, но и, например, нагрузки (едем в горку, под горку и тд...). А современные модели еще многое другое думаю учитывают при открытии заслонки.
  • +2
    Ситуация в принципе такая же, как и в статье о кардиостимуляторах пару месяцев назад — от качества кода все больше зависит жизнь человека, и если это не контролировать, получаем такие бяки.
    Вопрос — как это исправить? Наверное заставить всех открывать исходные коды, чтобы они могли проверяться независимыми организациями. Это ударит по производителям, но должно значительно повысить безопасность.
    • 0
      А чем это кардинально ударит по производителям? Для автоконцерна штат программистов для базовых систем мне кажется вообще статистической роли не играет. А так хотя бы перестанут отдавать на аутсорс.
    • 0
      Не нужно никого ничего заставлять. Если багов много и они действительно критичны — то и проблем с автомобилями будет больше, и люди голосовать будут кошельком.

      89 смертей за 10 лет — это даже не смешно.
      • 0
        Доказанных смертей? Про признанные я вообще молчу.
  • 0
    В коде Тойоты использовалась рекурсия, и каждая проблема с ней приводила к перезагрузке процессора (CPU reset).
    Хотелось бы услышать мнение и рекомендации сторонников Функционального Программирования о том как подобного избежать.
    • +5
      Как эмбеддчик (со стажем 17 лет), отвечу: не использовать рекурсию. И не использовать динамическое выделение памяти.

      А вот как решать проблемы с избыточной цикломатической сложностью кода — сам хотел бы узнать.
      • 0
        Полистать такую книгу из топика L.Broudi «Thinking Forth» (Способ мышления — Форт)
        http://fforum.winglion.ru/viewtopic.php?f=37&t=2011
        в чём то может оказаться полезной любому программисту. :)

        P.S. У Купмана тоже были материалы Форт тематики.
        • 0
          Форт — это как то жестко :). Последний раз я его использовал году так в 1985, в институте, на БК-0010 :)
    • +1

      В эмбеде — никак. Потому что подобный эмбед на 99.(9)% — голый C, как я понимаю. Который в принципе не умеет tail call optimization — и даже не понимает, что это такое.

      • 0
        подобный эмбед на 99.(9)% — голый C

        Вот интересно, кстати, почему? Очевидно, что сейчас в мире уже гораздо больше embedded систем, чем программистов, способных написать для них безопасный код на C.

        • +2

          А альтернатив нету особо. Эмбед — ограниченные ресурсы, следовательно GC туда не сильно встаёт. Сейчас языков б/м известных языков без GC — 3 штуки. C, C++, Rust.


          С — старичок, относительно прост. Но в плане безопасности программирования почти ничем не отличается от ассемблера.


          С++ — на данный момент монструозен в плане поддержки стандарта; в плане отстрела себе ноги по самую шею не сильно далеко ушёл от С


          Rust — безопасен, но очень молод

          • 0
            Неплохо бы еще иметь реализации RTOS на выбранном языке. И тут Си просто таки выделяется.
          • 0
            А что можете сказать про C--?
            • 0

              А ничего особо. Помню только сам факт его наличия.


              Уточняю, что я не эмбедщик, и сужу поверхностно. Просто насколько я помню, ни одна попытка втащить управляемую среду на микроконтроллеры не увенчалась широким успехом — просто из-за толщины рантайма или ограничений по памяти, в которые не влезет никакой GC. А б/м известных языков с управлением ресурсами без рантайм-оверхеда у нас 3 штуки. Их я перечислил выше.

            • 0
              Сложнее придумать и обеспечить формальный контроль по MISRA правилам.
          • –1
            Эмбед — ограниченные ресурсы

            Всё очень относительно… сейчас плата, умещающаяся на ладони, может быть в разы мощнее персонального компьютера 10-летней давности.
            Тут скорее надо определиться с восприятием, что такое эмбед? Это ограниченные ресурсы или ограниченный размер… Если второе, то ресурсов хватит практически на любой современный ЯП.

            • 0
              Дело не только в количестве ресурсов, дело в самом определении термина. Встраиваемые системы обычно не контактируют с человеком, работают при минимуме обслуживания, в случаях когда человек просто не в состоянии выполнить задачу (из-за времени реакции или по другим причинам). Именно по этому необходима большая аккуратность при проектировании таких систем.
              И сборщики мусора не могут гарантировать что вся не нужная память будет освобождена (достаточно вспомнить про ошибки потери указателя на событие в C# — если забыть отменить делегату подписку то он будет сидеть в списке до скончания времен. Как и вся зависимая от этого делегата память — ссылка-то сохранилась). + они добавляют непредсказуемости — не знаешь когда он запустится и на что он повлияет. Да, есть сборщики мусора реального времени, но когда они выйдут из исследовательских статей в массы одному root-у известно… А с другой стороны — есть ли в этом смысл? Ведь требования аккуратности и обработке ошибок никуда не пропадают.
              В общем «встраиваемость» — это раньше было про дефицит ресурсов. Сейчас, кажется, краеугольной частью «встраиваемости» является «необслуживаемость».
              • +1
                Я думаю, что сейчас многие путают реальное время с эмбеддерством. Или отождествляют. Проблема в том, что это разные вещи, и указанные вещи, типа рекурсивности, динамического программирования — это как раз те вещи, которые нельзя применять в системах реального времени, а не эмбеддерстве.
                ECU современного авто — как раз система реального времени.
                • 0

                  Что вы понимаете под "динамическим программированием"? Явно что-то отличное от правильного значения...

                  • 0
                    Сорри опечатался, имеется ввиду динамическое распределение памяти.
            • +1
              Несомненно плата на ладони сейчас мощнее старого компьютера, но они оба работает в очень приятных условиях и никаких требованиях к надежности.
              Встраиваемые системы работают в гораздо более жестких условиях, -40..+85 Industrial, я уж не говорю про +125 Automotive и -60/-55/RadHard у космонавтов/военных — все эти платы на ладони «сдуваются» по параметрам на порядки, а цены растут в обратной пропорции.
      • 0
        На Java уже можно писать для эмбеда, например для AVR32, Cortex-M0/M0+/M3/M4/M7 и т.д. JVM портировали на MCU, при этом RTOS поддерживается.
        • 0

          Я не отрицаю, что это в принципе можно. Был же .NET Core Framework (или как он там назывался). Я только говорю, что оно пока не распространено широко.

          • 0
            Про .NET незнаю. Но вот AVR мало ресурсов имеют, по сегодняшним меркам конечно, модели от 16 до 512 КБ и 50-84 МГц. И там Java.
            • 0
              Где вы видели AVR с такими частотами и 512Кб памяти? (и рабочей Java)
              Может всё таки ARM архитектура.
              • 0
                Ну вот, например — http://www.atmel.com/devices/AT32UC3A364.aspx
                • 0
                  Не путайте AVR и AVR32
                  • 0
                    Вот мой комментарий https://habrahabr.ru/company/pvs-studio/blog/310862/#comment_9834020
                    никто и не путает. Речь шла про AVR32.
              • 0
                А вот Java для AVR32 и не только — https://www.micrium.com/rtos/microej/
                На базе rtos ядра.
        • +3
          Ага.
          Попробуйте на Java и виртуальной машине запрограммировать алгоритм, который бы считал нужное время открытия топливной форсунки, основываясь на измерении от десятка датчиков, пары десятков таблиц и гарантированно выполнялся за 10мс — столько времени занимает поворот распредвала на 360° до следующего цикла впрыска.
          Это называется выполнение в реальном времени. Увидите, что только голый Си здесь помогает.
          • –1
            Ну так, Java понятно что не все критические участки закроет. Где-то С, а где то Java.
            • –1
              Для встраивания Java и с такими частотами, то скорее для большой части задач за глаза.
              10мс — это вообще огромный интервал времени для микроконтроллеров.
              10мс — это период 100 Гц в сравнении с даже тактовой 80 Мгц (80 000 000 Гц) и одно двух тактными
              командами ядра процессора можете посчитать сколько процессорных команд можно выполнить.
              (даже с java реализацией)
            • 0
              На хабре есть куча статей про то, как java на числодробилках (а тут примерно такой же случай), отличается по скорости менее чем на 5%, а то и быстрее расчитает благодаря JIT, если на С криво написан код, то AOT его оптимизирует лишь на стадии компиляцийй, а JIT на JVM его может оптимизировать во время исполнения более эффективно. Вопрос тут в другом, какой там компилятор используется, какая реализация JIT, по какому принципу работает GB, как аллоцирется память и прочее. Так что тут проблема не платформы для реализации, а скорее криворукость, маленькие сроки на разработку и прочее. Выше и ниже все это описали.
        • +2
          А как в случае Эмбеда решается Проблема Сборки Мусора у Java?
          Сборка Мусора — вообще отключаема? И как быть с привычками тех кто привык, что мусор за ними всегда приберут?
          • 0

            Очень просто: запрещается создавать объекты кроме как во время инициализации.

            • 0
              В интерпретаторе (компиляторе?) Джавы можно запретить? Или программист сам должен помнить, и нечаянно (неявно?) не создать?
    • 0

      По факту хвостовая рекурсия раскрывается в тот же ассемблерный код, что и обычный цикл.
      А в комментарии, видимо, имеется в виду проблема, когда стек заканчивается. Рекурсия, использующая стек, обычно применяется в императивных языках, т.к. там может не быть tail-call optimization. Ну либо в крайне редком подмножестве алгоритмов, где без древовидной рекурсии вообще никак не обойтись.

  • +2
    Не пойму, что всем этим пострадавшим мешает зажать тормоз и выключить коробку?

    У меня пару раз рычаг АКПП из положения D «щёлкал» в положение N только от того, что случайно рукой зацепил.

    А на всех случаях из видео водители героически начинают объезжать всё, что видят лишь бы машина побольше скорость набрала.
    Как так?
    • +8
      Ошибка вида «дельфины всегда толкают людей к берегу».
      Те, кто нажал на тормоз, выключил коробку, выключил зажигание — не выкладывают это в интернет…
      • 0
        Полностью с Вами согласен, жаль плюсовать не могу.
    • +1
      Популярный автомеханик именно это и писал в своем жж. Более того, он однажды столкнулся с тем, что коврик педаль до упора нажал. На автомате. И именно так, как вы говорите — нажал на тормоз, машина остановилась, перевел в N, мотор раскрутился до отсечки. Выключил зажигание. Все. А когда на видео в этом случае — визг и дворники включаются, то это больше похоже на «педали перепутать», а не на баг ПО.
    • 0
      Чтобы скинуть с любого положения подразумевающего движение (не паркинг) в N тормоз нажимать вообще не надо.
      • 0
        После начала неконтролируемого разгона и реакцией водителя проходит некоторое время — машина уже разогналась, и ее надо остановить.
        • 0
          Последовательность действий должна быть — скинуть в N, потом тормозить. Я прошел похожую ситуацию когда на скорости 70 км/ч у меня распредвал с шестерни сорвало — почти мгновенный останов мотора по ДПРВ
          • 0
            В теории да, но вы учтите стрессовую ситуацию для водителя. В этой ситуации важнее остановить машину, а с ее неисправностями можно разобраться потом. Свое здоровье важнее, железо можно и новое купить.
    • +2
      Ничто не мешает, даже больше скажу, все они на 100% были уверены что жмут именно педаль тормоза!
      Они все абсолютно точно уверены что жмут именно тормоз и жмут его со всей дури, хотя по факту нога на 15 см правее тормоза.
      Нужно определённое время чтобы человек осознал свою ошибку и отпустил одну педаль и нажал другую. В панике осознать ошибку можно и не успеть.

      Проблема в человеческом восприятии, закройте глаза, не касаясь клавиатуры руками нажмите пальцем на клавиатуре букву Н.
      По прежнему не открывая глаза попробуйте угадать, вы нажали именно ту букву которую хотели или всётаки это другая буква?

      В состоянии паники сложно сосредоточиться и сделать разумное действие, а в данном случае надо сознательно отпустить педаль тормоза (мозг ведь думает что нажал тормоз) и нажать левее в пустоту(мозг ведь думает что раз нажал тормоз то слева будет пустота).
  • +4
    А на видео, на мой взгляд, минимум в половине случаев таки педали перепутали…
  • –1
    Как-то слишком много пафоса в статье, секретный бункер, 100500 нарушений MISRA C.
    А по факту баг не нашли, из-за которого автомобиль может начать ускоряться.
    А ошибки MISRA — ну макросы там всякие используют или указатель без проверки разыменовали. Ну и что? Автомобильный ECU — это довольно простая коробка, она либо работает, либо не работает. Как там наговнокодили — макросами, шаблонной магией или еще чем-то, в сущности не важно. Алгоритмы работы инжекторного двигателя весьма простые и определенные. А вот когда в авто нейросети запихают, вот тогда начнется…
  • 0
    Проблема, думаю, не в разработчиках, а в менеджерах, у которых сроки, желание позвать разрабов на бесконечные встречи и прочие чудные идеи.
  • 0
    Я вообще не пониманию, почему автопроизводители к примеру не запартнерятся с крупными компаниями, к примеру, многие уже устали от допотопных навигационных систем, ребята на рынке полно лидеров в этой области, берите их на работки и используйте.
    От года в год я наблюдаю ужаснейший не юзабельные интерфейсы ГУ, ребята очнитесь, вы слышали что-то о UI и UX.
    Почему на ГУ нельзя вывести элементарные статистические параметры авто, которые будут накапливаться и агрегироваться такие как, средний расход за поездку, пробег поездки и т.д.
    Почему нет возможности установить свое приложение на ГУ либо API
    Почему нет возможности дать ГУ интернет и не предусмотрено место под сим карту…
    А ребята все по прежнему лепят какой-то прошлый век, да еще и убивающий людей!!!
    • +2
      Да при чем тут головное устройство то. Оно должно быть физически отделено от систем управления двигателем и прочих ответственных вещей.
      • 0
        это в целом о наболевшем)
        • 0
          Эх, у меня скорее обратная претензия. Хочу честный тросик, настоящий ручник, гур… А в современных моделях вместо этого более красивый интерфейс ГУ.
          • 0
            Ну так покупайте нормальную машину, а не какой-нибудь убогий риосолярис. Машина не становится хуже от того, что ее больше не выпускают.
            • +1
              К сожалению становится — железо не вечное.
              • 0
                Да ладно? Своевременная и регулярная обработка продлевает его срок. А когда прогниет и переварить можно.
            • 0
              Она становится хуже от того что за ней не следили. А к сожалению у нас многие вообще не особенно запариваются на ТО после того как гарантия кончилась. В новой таких проблем будет скорее всего поменьше
          • 0
            У меня Nexia 2006. Тупая как кирпич. При желании, чинится гвоздями. Хотя от ГУР я бы не отказался. Из плюсов — ломаться особо нечему. А любые ремонты 150-3000 рублей обычно. Но корпус ржавеет, увы. Задние крылья.
    • 0
      Ну, допустим, Вас услышали в каком-нибудь Рено и сделали супер-пупер-навигацию. Добавили кучу фишек и т.д.
      Вы из-за этого откажетесь от покупки Мерседеса и купите Рено? Только ради навигации?
      Не думаю. Вот и производители авто тоже так думают. Они понимают, что если вы выбрали Мерседес, вы не пересядете на Рено из-за того, что там навигация лучше. И можете позволить купить себе допотопную навигацию за 3к€ в придачу.
      • 0
        Ну вообще не совсем так — сравнение автомобилей разного уровня/класса — дело довольно странное. С таким же успехом можно сравнить покупку нового Мерседеса и б/ушных Жигулей

        У меня, по крайней мере, было несколько иначе — мы с супругой решили купить / взять в лиз автомобиль по определенным ценовым параметрам (допустим, лизинговый платеж не более $300 / мес) + основным эстетическим и функциональным параметрам (седан, небольшой размер) — уже это позволило отсеять 90% автомобилей на рынке. На выходе, к примеру, у меня осталось штук 5 — Honda Civic, Hyundai Elantra, Chevy Cruze, Subaru Impreza и VW Jetta. Последние три после недолгого анализа тоже отпали по разным субъективным причинам (несговорчивые продавцы в дилершипах, плохая доступность нужных комплектаций и т.д.) — и на выходе остались именно цивик и элантра, которые буквально дышали друг другу в спину — разница в платеже по лизу — около 2-3 долларов в месяц (т.е. по сути нет разницы), функционально всё одинаковое, условия лизинга (мили, срок) одинаковые, разница в стоимости страховки минимальная и т.д.

        В итоге выбор в пользу Цивика был сделан супругой именно потому, что при прочих равных условиях ей "экранчик и меню больше понравились", при том, что к Хёндаю изначально подсознательно сердце лежало больше (уже был до этого успешный опыт владения другим Хёндаем) :-)

        Т.е. Вы, безусловно, правы, что при выборе между внедорожником Мерседес и малюсенькой Тойотой Ярис наличие любых фишек в последней вряд ли впечатлит будущего владельца чёрного танка, но вот переманить поклонника одного бренда при похожих конфигурациях авто благодаря удобству той же магнитолы / навигации / экранного меню — запросто. Мог бы плюсануть к benyamin, с удовольствием сделал бы это :)
        • 0
          В таком случае лучше Кэмри взять, имхо.
          • 0
            Чтобы было как на видео в посте? Чет не, не хочется.
            • 0
              Может с кодом и не очень у них (сомневаюсь что у других сильно лучше), но машина вполне добротная и уж точно лучше Цивика.
          • 0
            Ну камрюха это ж уже повыше классом и сильно выше ценником, ее честнее сравнивать с аккордом и сонатой. Но Королла, к примеру, мне чем-то совершенно не понравилась, так что она даже не попала в «лонг-лист»…

            Аккорд, как ни странно, тоже был как вариант — но там выбор в этих ценовых пределах был «голый, совершенно голый аккорд» или «нафаршированный всем, чем только можно цивик».
            • 0
              Есть такое. Как вариант, взять немного БУ, ценник выйдет неплохо ниже.
      • 0
        сделаю акцент, что на премиум авто, должно все это уже быть, на тех же Lexus, Mersedes, BMW, но к сожалению штатные балалайки существенно отстают от прогресса, каждый раз пытаясь изобрести велосипед заново, продавая за баснословный деньги опцию типа кругового обзора и т.д.

        P.S. мы живем все таки в реальном мире, я сомневаюсь, что рено раньше мерседеса выпустит какое-то классное ГУ.
        Вопрос в том, что рынок уже давно хочет этого, а автопроизводители все лепят какой-то смех
        • 0
          Так все просто же — сколько времени разрабатывается модель машины? Явно дольше, чем новый айфон. В результате в момент выхода лексус отстает от айфона графикой и прочим.
          • 0
            Это если сначала вместо самого авто, сначала разработать пользовательские прибамбасы, и в ходе дальнейшего проектирования их больше не пересматривать. Тут как по мне проблема в отношении. «Пипл хавает», а раз хавает, то смысл напрягаться.

            P.S. Оснащать любую тарантайку нормальной пользовательской электроникой и экранами сейчас нет проблем — её стоимость равна стоимости средней руки планшета или нетбука, в массовом производстве и того меньше. В общей стоимости машины — копейки. Ну и поскольку на неё не завязано ничего жизненно важного, то поменять её в ходе жизни одной модели авто можно сколько угодно раз.
            • 0
              ну, судя по всему, тойота так и делает — очень быстро выкатывает обновления электроники (и пользовательской, и системной), к сожалению, без должной степени проверки качества
              • 0
                Моя мечта — унифицированные блоки подключения пользовательской электроники как это было с магнитолами и выбор из сотен моделей разных производителей или нормальная электроника позволяющая менять ос как тебе удобно. Но автопромышленники удавятся.
                • 0
                  Я думаю, такое будет не скоро. Если представить: поставил новую «железку», а новая ОСь ее не поддерживает. Или начинает безбожно глючить, в итоге водитель больше отвлекается — растет число аварий.
        • 0
          Зря сомневаетесь, ГУ моей Тойоты намного более удобное чем ГУ Лэнд Ровера, выпущенного 3-мя годами позже. Начиная с реакции на нажатие кнопок — у Лендровера все тормозило, а у Тойоты нет, и заканчивая раскладкой клавиатуры — например на Лендровере какой-то умник догадался поставить все буквы от А до К на одной странийе, а остальные — на другой. При этом оба ГУ с винчестером, как положено. Про то, что в Лэндровере просто невозможно просмотреть обзор маршрута я уже умолчу.
          С этой точки зрения я уверен, что ГУ какого-нибудь хюндая будет лучше Лендроверовского и рено тоже будет лучше — так как они конкурируют в своих нишах, а вот тот, кто нацелен купить Лэндровер — он в пролете.
    • 0
      Всё, что вы описали, есть в моей машине 2010 года выпуска. И интернет, и приложения, и борткомпьютер, и красивый GUI, и ещё миллион вещей. Но цикл разработки в автомотиве, действительно, долгий. Два-три года. За три года мобильная отрасль, например, убегает вперёд очень быстро.
      • 0
        о каком авто идет речь?
        • 0
          BMW 5 F10
          • 0
            в NBT нет возможности проложить маршрут, точность карт явно уступает яндексу, нет информации о пробках и ДТП например. Спрашивается какой толк в штатной навигации, если обыденных и востребованных функций там просто нет…
            • 0
              Это в России так, возможно. Я живу в Германии, и у меня и пробки, и ДТП и прочая информация (животные на дороге, например) отображаются. Что значит — нет возможности проложить маршрут? А чем навигация тогда вообще занимается? Точность карт зависит от вендора карт, а не от системы. О чём мы вообще спорим?
  • +3

    У меня вот в микроконтроллере стек uIP крутится, там есть функция uip_process — 1118 строк + 69 goto, а тут какие-то жалкие тойотовские 740 строк.

    • +2
      Светильником управляешь?
  • +1
    Было ба очень круто еслибы подобную проверку прошли _все_ автопроизводители. И публично, с открытыми для изучения публики индексами качества кода (пусть даже не исходниками, ценим ноу-хау и авторские права). Автопроизводители до последнего ничего не признают. А Джон, серийный программист, сидит и пишет дальше бажный код.
    • 0
      Не выгодно так делать, поэтому и не делают.
  • 0
    Возможно, старт производства Toyota Mirai — не самая лучшая идея.
  • +2
    Тот случай, когда анекдот про серийного программиста отчасти становится правдой…
  • +1
    На видео, мягко выражаясь, обычные люди, которые с автомобилем на «вы». Почти уверен что просто перепутали педали, я на таких людей насмотрелся в своё время, их просто огромное количество на самом деле; им не то что автомобиль, им велосипед доверить нельзя.
    Проблему на самом деле можно решить на корню — ввести обязательную базовую контраварийную подготовку и только потом выдавать права. Человек с такой подготовкой на три головы выше чем шофёр даже с 30-летним стажем (час на курсах = одному году опыта вождения, приблизительно конечно).
    понапридумывают всякие гиковские теслы, что у людей складывается отношение к авто как к смартфонам… с ужасом осознаю что мой ребёнок/внук уже может не застать того кайфа бензинового двигателя, механики и заднего привода)
  • 0
    Неконтролируемый разгон машины, должен пресекаться самими системами автомашины. То есть многие параметры должны считываться. Та же педаль газа (электронная), в некоторых машинах связана со своим контроллером который следит за конечными значениями и при выходе за параметры просто глушит движок (либо просто напоминает о неисправности (в ауди дизеле например двигатель начинает «порыкивыть»)). При этом любители крутить руль ногтём мизинца, резко обнаруживают что даже мизинцем трудно провернуть руль (на низких скоростях, на высоких разницу не увидите), а педаль тормоза станет не пуховой подушкой, а из конского волоса, что не ухудшает безопасность однако. Например в электрокаре. Проверяется потребляемый ток, скорость в широкой временной выборкой, ускорение, и многие другие параметры (даже системы типа ESR и ABS оснащаются понять что педаль то не нажата датчиками ускорения), которые обнаружат самопроизвольный разгон если педаль не нажата (в самом простом случае в педали два переменных резистора и их хватает с лихвой). Защитится же от зависания, также позволяют силовые микросхемы с шиной данных и другая мишура.
    Например завис центральный процессор, микросхемы не получая обновлений, просто сбросятся в начальное положение. Однако когда в машине множество управляющих блоков, связать их трудно, те же данные сигнала положения педали из блока 1 по пути в блок 2 могут наполниться мусором, либо ещё что. и не важно, есть проверка или нет на валидность. Сам лично видел как пару машин заглохли когда в трёх метрах от них жахнула молния, ну а траллик дальше никуда так и не поехал, хотя новые иномарки уехали, хоть и не сразу. Траллику помогло только отключение питания, после чего техпомощь уехала по своим делам а траллик в парк укатил своим ходом.
  • 0
    Дважды встречал подобное на Toyota Auris 2008 года, думал педаль подклинило, а оно вот как оказывается. Видимо не такой уж и редкий баг.
  • +2
    Слайд 14: там ещё и чёрный ящик может врать про то, что водитель нажимал. Прелестно.
  • –1
    Программисты разрушат мир.
  • 0
    Просмотрев видео в посте возник вопрос: некоторые проезжали целые кварталы на полном ускорении, прежде чем сталкивались. Неужели никто из них не мог догадаться выключить зажигание?)
  • 0

    Кто пояснит в чем проблема с одинаковыми именами переменных в разных скоупах?

    • 0
      Тут немного преувеличили, сказав, что 81514 нарушений — это ошибки в коде. На самом деле это потенциальные баги, которые, например, при компилировании определенным компилятором могут привести к неправильному исполнению этого кода на конкретной платформе.
      Вот и со скоупом переменных — теоретически это не баг, но возможно какой-нибудь компилятор при какой-нибудь опции захочет это дело как-то оптимизировать.
      • 0

        Я слабо себе представляю компилятор, котор начхает на скоуп.

        • +1
          Ну это может быть и не компилятор, а человек, который вдруг захочет объявить глобальную переменную с данным именем и потом долго удивляться, почему она вдруг в функциях не работает. Насколько я знаю, в Coverity для каждого случая дано описание, на что это может повлиять.
  • 0
    Глубоко убеждён, что 90% этих аварий можно было избежать имей водитель больше опыта,
    тормоза способны остановить машину даже на полном газу, даже при полном отключении системы усиления тормозов, вообще давно напрашивается введение в программу подготовки водителей нештатных ситуаций,
    а может даже и сдача обязательного экзамена по ним, как например, отказ одной из систем авто, вождение на льду, и.т.д. ведь теория не в состоянии подготовить водителя к этому, многие действия должны быть отработаны рефлекторно, я лично на себе пробовал, первые 2-3 попытки при заносе нога рефлекторно жмёт тормоз… хотя и прекрасно знал, что нужно делать, только после нескольких попыток получается сделать занос управляемым, впоследствии в реальной жизни дважды уходил от столкновения благодаря этому опыту.
    • 0

      Писали выше. Проблема в том, что педаль тормоза в это время, скорее всего, не работала, либо не реагировала должным образом.

    • 0
      интересно, если процессор топит на газ, а педаль тормоза и ручник уже не работают, спасёт ли заглушить машину?
  • 0
    «Рич Кук, писатель-фантаст»
    что он написал?
  • +1
    Господа, прошлый исполнитель подвёл, нужно за пару недель написать систему защиты реактора, кто возьмётся?
    • +1
      Если на VBScript, то я могу.
      • +1
        Без разницы на чём, хоть на брейнфаке, лишь бы к дцатому числу было готово.
  • 0
    Во всей этой истории мне нравится единственный момент-всё же история получила огласку, привлекли независимых (и известных эмбеддед-публике) экспертов, обнародовали выводы. А у нас, упадёт какой-нибудь Фобос-Грунт, всё спишут на космические лучи, и на этом всё.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка