Как найти лямбда max
Где находится масса от кислородного датчика ⇐ Stepwgn RG1-4
Добрый день.
Не смог ничего похожего найти, поэтому вынужден создать отдельную тему.
Борюсь с ошибкой P0137 - низкий уровень сигнала с кислородного датчика (тот, что ВТОРОЙ после катализатора). Поменял датчик на аналог (Бошевский), но проблема не ушла. Встречал информацию, что данная ошибка иногда вылазит из-за проблем проводкой, а в частности с плохой массой.
От сюда собственно вопрос, где находится эта самая масса от кислородников. Проводка от обоих датчиков одним жгутом уходит куда-то в салон предположительно посередине м/у водителем и передним пассажиром. Уж очень не охота снимать кучу обшивки и шарить под ковролином в поисках счастья. Может кто уже искал ее или есть схема проводки по салону от датчиков.
Я готов сделать смелое заявление — люди совершенно ничего не знают о лямбда-зонде. Половина клиентов сводят все свои неисправности двигателя к датчику кислорода. "Двигатель не держит холостой ход — я думаю глючит лямбда". "Мой двигатель постоянно трясётся — мне сказали это лямбда". "У меня пропала динамика — я грешу на лямбда-зонд" и.т.д. Клиентам позволено быть не образованными, они компенсируют это деньгами. Но проблема затронула и людей, оказывающих услуги компьютерной диагностики BMW. "Я делал диагностику в другом сервисе, мне сказали что лямбда-зонд не меняет показания — значит пора менять датчик". А на деле у двигателя просто сильный подсос воздуха.
В этой статье я попытаюсь научить диагностировать неисправность лямбда-зонда, а дальше диагностировать неисправности двигателя на основе показаний лямбда-зонда.
Первым делом нужно твёрдо для себя понять — лямбда-зонд никогда не оказывает негативного влияния на работу исправного двигателя. Из-за него не будет: стрелять в глушитель, плохо запускаться или работать двигатель, плавать обороты, глохнуть, пропадать динамика и.т.д. Лямбда-зонд — это очень точный датчик финальной корректировки работы двигателя. Если сказать проще, то полностью исправному двигателю он даже не требуется, но это в вакууме.
На деле у любого бензинового двигателя есть различные поломки, износы, процессы старения и.т.д. Всё это приводит к проблеме плохого смесеобразования и дальнейшего сгорания. По сути любая неисправность двигателя — это только неправильное смесеобразование. Ремонт неисправности — возврат смесеобразования к норме. Лямбда-зонд позволяет частично, по уровню кислорода, проанализировать сгоревшую смесь и скорректировать режим работы двигателя. По сути это газоанализатор, который постоянно адаптирует двигатель под меняющуюся окружающую среду и под неисправности самого двигателя. Если появился подсос воздуха — DME узнает об этом и скорректирует подату топлива. Если автомобиль поднялся высоко в горы, где воздух разряжен и содержит меньше кислорода — DME узнает об этом и адаптирует подату топлива. Лямбда-зонд никогда не будет причиной плохой работы двигателя, он наоборот помогает ему, а так же упрощает поиск неисправностей.
Если углубляться в тему, то лямбда-зонд нужен больше для правильной работы катализатора. Катализатор может нейтрализировать количество вредных веществ только в определённом составе выхлопных газах. Сильное отклонение от состава выхлопных газов снижает КПД катализатора или даже может сломать его. Но даже без наличия на автомобиле катализатора, возможность постоянной адаптации двигателя к окружающим условиям перевешивают высокую цену датчика кислорода.
Не прогретый или не рабочий лямбда-зонд
Первым делом нужно определить работоспособность датчика кислорода. В 90% случаях DME может самостоятельно распознать неисправность и сохранить соответствующую ошибку. При отсутствии ошибки требуется самостоятельно проверить работоспособность лямбда-зонда с помощью данных реального времени в DIS.
На системе управления двигаталем DME Bosch, напряжение ещё не прогретого или не рабочего лямбда-зонда всегда будет находиться в пределах 0,45 вольт. Напряжение может постоянно меняться, но не в большом диапазоне, около 0,4 — 0,5 вольт. При этом интегратор лямбда-зонда принимается за единицу, а DME будет ждёт прогрева и включения датчика кислорода.
На системе управления DME Siemens, напряжение ещё не прогретого или не рабочего датчика всегда будет находиться на отметке 0,09 В. Интегратор принимается за единицу, а DME будет ждать прогрева датчика кислорода.
Но если на системе управления двигателем DME Bosch напряжение не рабочего датчика находится между бедной и богатой смесью (в стехиометрическом значении), то на системе управления двигателем DME Siemens напряжение не рабочего датчика будет находиться в зоне максимально богатой смеси. По этому только по одному напряжению не получится точно определить наличие неисправность лямбда-зонда на системе управления двигателем DME Siemens, так как датчик кислорода может работать и сообщать об очень богатой смеси, которую DME просто не может скорректировать.
Нам на помощь приходит параметр реального времени Регулировка состава смеси с лямбда-зондом, который сообщает статус прогрева датчика и его участие в работе двигателя. Этот статус доступен для просмотра во всех системах управления двигателем DME Sienems, но не во всех системах управления двигателем DME Bosch.
Рабочий лямбда-зонд на полностью исправленном двигателе
На системе управления двигателем DME Bosch, напряжение лямбда-зонда постоянно будет меняться в диапазоне 0,1 — 0,9 вольт. По принципу Обеднение смеси — Обогащение смеси .
На системе управления двигателя DME Siemens, напряжение лямбда-зонда так же постоянно будет меняться, но уже в диапазоне 0,1 — 4,9 вольт. По принципу Обогащение смеси — Обеднение смеси .
Почему напряжение лямбда-зонда должно постоянно меняться?
ЭБУ двигателя самостоятельно постоянно изменяет, на небольшое значение, сигнал впрыска. Обычно не больше ± 0.1 мс, а лямбда-зонд фиксирует эти изменения в смесеобразовании. Катализатор имеет способность накапливать кислород. Если кратко — DME сначала делает смесь богатой кислородом (чтобы катализатор его накопил), а после бедной кислородом (чтобы катализатор использовал накопленный кислород для нейтрализации ОГ).
В ЭБУ двигателя есть 2 режима работы. С и Без лямбда-зонда, даже на прошивке подразумевающей использование датчки кислорода.
В первом случае DME будет ждать включения (прогревания) лямбда-зонда, и постоянно менять сигнал впрыска в пределах ± 0.1 мс. Ибо так устроена работа прошивки DME с регулировкой по лямбда-зонду. Лямбда-зонд может быть не рабочим, но если DME об этом не знает то всё равно будет изменять смесь, надеясь что вот-вот датчик прогреется и заработает. До включения датчика DME будет опираться на сохранённые в памяти значения множительной и суммирующей коррекций.
Во втором случае DME знает что лямбда-зонда нет (фишка датчика разъединена) или он неисправен, и уже не будет изменять сигнал впрыска. В этом случае либо будет сохранена ошибка по лямбда-зонду, либо придется сэмитировать её самостоятельно. Чтобы принудительно перевести DME на безлямбдовый режим работы.
По этому если лямбда-зонд не работает, а DME не может самостоятельно идентифицировать неисправность, то можно самостоятельно сэмитировать неисправность — разъединив фишку датчика. DME сразу перейдёт на безлямбдовый режим работы.
У двигателя слабая бедная смесь
Рассмотрим пример когда у двигателя с системой управления DME Bosch обеднённая смесь, например, из-за подсоса воздуха.
95% входящего воздуха проходит через ДМРВ, а 5% через дырку в гофре после расходомера воздуха. В данном случае в двигатель поступает нормальное количество воздуха, но расходомер воздуха сообщает информацию DME о меньшем количестве входящего воздуха. Сигнал впрыска рассчитывается по большей части на основе показаний расходомера. Конечно учитываются и другие факторы, например: температура воздуха и двигателя, но их влияние в разы меньше. Без лямбда-зонда мы получаем обеднённую смесь у двигателя.
Лямбда-зонд информирует DME о неправильной (обеднённой) смеси, и DME начинает добавлять количество топлива (увеличивать время впрыска). У режима работы по лямбда-зонду есть ограничение на максимальную возможную коррекцию, DME может добавить или убавить 0,5 мс сигнала впрыска. По мнению инженеров BMW — это максимальная возможная коррекция для изношенного двигателя, которая не требует ремонта.
Если у DME получилось скорректировать топливную смесь не выходя за это ограничение, то двигатель начинает работать хорошо, а лямбда-зонд начинает информировать DME о правильном смесеобразовании (напряжение датчика будет постоянно меняться между обеднением — обогащением ).
На анмиции видно, что сначала сигнал впрыска находится между 2.7 — 2.8 мс, а лямбда-зонд информирует о бедной смеси. После чего DME увеличивает сигнал впрыска (добавляет количество топлива) до тех пор, пока лямбда-зонд не начнёт сообщать о правильном смесеобразование. В примере правильная смесь находится между сигналом впрыска 3.2 — 3.3 мс. Интегратор лямбда-зонда, становится больше единицы, 1.17 .
У двигателя слабая богатая смесь
Рассмотрим пример когда у двигателя с системой управления DME Siemens обогащённая смесь, например, из-за неисправного датчика температуры охлаждающей жидкости.
Датчик постоянно сообщает DME о 5°С. Хоть все остальные датчики двигателя исправны, DME всё равно будет задавать повышенный сигнал впрыска, для стабильной работы двигателя в фазе прогрева. Хотя на самом деле этого не требуется.
Лямбда-зонд информирует DME о неправильной смеси, и DME начинает уменьшать количество топлива (уменьшать сигнал впрыска). У режима работы по лямбда-зонду есть ограничение на максимальную возможную коррекцию, DME может добавить или убавить 0,5 мс сигнала впрыска. По мнению инженеров BMW — это максимальная возможная коррекция для изношенного двигателя, которая не требует ремонта.
Если у DME получилось скорректировать топливную смесь не выходя за это ограничение, то двигатель начнёт хорошо работать, а лямбда-зонд начинает информировать DME о правильном смесеобразовании (напряжение датчика будет постоянно меняться между обогащением — обеднением ).
На анимации видно, что сначала сигнал впрыска находится между 3.5 — 3.6 мс, а лямбда-зонд информирует о богатой смеси. После чего DME уменьшает сигнал впрыска (уменьшает количество топлива) до тех пор, пока лямбда-зонд не начнёт сообщать о правильном смесеобразовании. В примере правильная смесь находится между сигналом впрыска 3.1 — 3.2 мс. Интегратор лямбда-зонда становится меньше единицы, 0.9 .
Слишком богатая или слишком бедная смесь
Рассмотрим пример когда у двигателя c системой управления DME Bosch слишком богатая смесь.
На анимации видно, что сначала сигнал впрыска находится между 3.1 — 3.2 мс, а лямбда-зонд информирует DME о богатой смеси. После чего DME начинает уменьшать сигнал впрыска (уменьшать количество топлива), в попытках настроить нормальное смесеобразование: 3.0 — 2.9 — 2.7 — 2.6 — 2.5 мс, но лямбда-зонд по прежнему информирует о богатой смеси. DME уже уменьшил сигнал впрыска на допустимые 0.5 мс (интегратор лямбда-зонда равен 0.8 ), по этому сохраняется ошибка.
Ошибка информирует о том, что DME достиг максимальный предел регулирования, а смесь всё равно осталась слишком бедной или слишком богатой. После чего DME переходит на безлямбдовый режим работы, а интегратор принимается за единицу.
Интегратор лямбда-зонда
Зная только напряжение лямбда-зонда невозможно узнать, корректирует ли DME смесь на основе его показаний (имеется ли в двигателе перелив или недолив топлива) или смесь идеальна, а датчик просто информирует о правильного смесеобразования в двигателе (отсутствие неисправностей).
Для этого в DIS отображается корректировочное значение Интегратора. По которому можно узнать, корректируется ли смесь на основе информации от лямбда-зонда, а если корректирует — то в какую сторону и на сколько.
Если описать проще — напряжение лямбда-зонда, даже с подсосом воздуха, будет находиться в правильном диапазоне. Просто благодаря информировании со стороны лямбда-зонда, DME смог скорректировать смесь до правильного значения. Благодаря знанию значения интегратора мы можем узнать о различных неисправностях в двигателе. Которые, по мнению инженеров BMW, не требуют экстрненного устранения. По этому не сохраняются ошибки, хотя небольшая неисправность имеется.
Как это работает?
- На основе входящей в DME, от различных датчиков, информации: расходомера воздуха, датчиков температуры, потенциометра дроссельной заслонки и пр., рассчитывается необходимая порция топлива. Так формируется сигнал впрыска.
- Происходит впрыск топлива и поджигание образованной смеси (работа двигателя).
- Лямбда-зонд анализирует выхлопные газы и информирует DME о количестве в них кислорода.
- DME рассчитывает значение интегратора для дальнейшей коррекции смесеобразования. Если проблем со смесью нет или лямбда-зонд не работает, то интегратор будет равен единицы. Если смесь бедная, то её нужно обогатить и значение интегратора будет больше единицы . Если смесь богатая, то её нужно обеднить и значение интегратора будет меньше единицы .
- DME умножает время впрыска на значение интегратора и получает скорректированный сигнал впрыска. Если интегратор равен 1, то время впрыска не изменяется. Если интегратор меньше 1, то время впрыска уменьшается. Если интегратор больше 1, то время впрыска увеличится.
- Переменные: ` x, y, z `
- Абстракция - декларация функции: ` lambda x.E ` . Определяем функцию с параметром ` x ` и телом ` E `.
- Аппликация - применение функции ` E_1 ` к аргументу ` E_2 ` : ` E_1 E_2`
- Тождественная функция: ` lambda x. x `
- Функция, вычисляющая тождественную функцию: ` lambda x.(lambda y . y) `
- Аппликация лево-ассоциативна. То есть выражение ` x y z ` читается как ` (x y) z `.
- В абстракции группируем скобки вправо. Другими словами, читая абстракцию необходимо распространять ее максимально вправо насколько возможно. Пример: выражение ` lambda x. x \ lambda y . x y z ` эквивалентно ` lambda x. (x \ (lambda y . ((x y) z))) ` , так как абстракция функции с аргументом ` x ` включила в себя все выражение. Следом было проведено включение абстракцией с аргументом ` y ` и ,наконец, в теле этой функции были расставлены скобки для аппликации.
- ` x ` - связанная переменная в выражении .
- ` E ` - область видимости переменной ` x `.
- Переменная свободна в ` E ` , если она не связана в ` E ` . Пример: ` lambda x. x (lambda y. x y z) ` . Cвободная переменная - ` z ` .
- Альфа-преобразование. Переименование связанных переменных в ` E ` и ` E’ ` , чтобы имена стали уникальными.
- Бета-редукция. По сути единственная значимая аксиома исчисления. Подразумевает замену ` x ` на ` E’ ` в ` E ` . Рассмотрим несколько примеров подстановок:
- Преобразование к тождественной функции. ` (lambda f. f (lambda x. x)) (lambda x. x) -> ` (пишем подстановку) ` -> [lambda x. x // f] f ( lambda x. x)) = ` (делаем альфа-преобазование) ` = [(lambda x. x) // f] f (lambda y. y)) = ` (производим бета-редукцию) ` = (lambda x. x) (lambda y. y) -> ` (еще одна подстановка) ` -> [lambda y. y // x] x = lambda y. y `
- Бесконечные вычисления. ` (lambda x. x x)(lambda x. x x) -> [lambda x. x x // x]x x = [lambda y. y y // x] x x = ` ` = (lambda y. y y)(lambda y. y y) -> … `
- Также небольшой пример, почему нельзя пренебрегать альфа-преобразованием. Рассмотрим выражение ` (lambda x. lambda y. x) y ` . Если не выполнить первый шаг, результатом будет тождественная функция ` lambda y. y ` . Однако, после правильного выполнения подстановки с заменой ` y ` на ` z ` мы получим совсем другой результат ` lambda z. y ` , то есть константную функцию.
- Вызов по имени. В вычислении всегда в первую очередь применяются самые внешние подстановки. Другими словами, нужно вычислять аргумент уже после подстановки в функцию. Кроме того нельзя использовать редукцию внутри абстракции. Пример: ` (lambda y. (lambda x. x) y) ((lambda u. u) (lambda v. v)) -> ` (применяем редукцию к внешней функции) ` -> (lambda x. x) ((lambda u. u) (lambda v. v)) -> ` (вновь подставляем, не меняя аргумент) ` -> (lambda u. u) (lambda v. v) = lambda v. v `
- Вызов по значению. В этом способе вычисление проходит ровно наоборот, то есть сначала вычисляется аргумент функции. При этом редукция внутри абстракции также не применяется. Пример: ` (lambda y. (lambda x. x) y) ((lambda u. u) (lambda v. v)) -> ` (вычисляем аргумент функции) ` -> (lambda y. (lambda x. x) y) (lambda v. v) -> (lambda x. x) (lambda v. v) -> lambda v. v `
- Булевые значения. Поведение типа можно описать как функцию, выбирающую одно из двух. Тогда значения выглядят так: ` true = lambda x. lambda y. x ` и ` false = lambda x. lambda y. y `
- Натуральные числа. Каждое натуральное число может быть описано как функция, проитерированная заданное число раз. Выпишем несколько первых чисел ( ` f ` - функция, которую итерируем, а ` s ` - начальное значение):
- ` 0 = lambda f. lambda s. s `
- ` 1 = lambda f. lambda s. f s `
- ` 2 = lambda f. lambda s. f (f s) `
- Операции с натуральными числами.
- Следующее число. ` \s\u\c\c \ n = lambda f. lambda s. f (n f s) ` . Аргумент функции - число ` n ` , которое, будучи так же функцией, принимает еще два аргумента: начальное значение и итерируемую функцию. Для числа ` n ` один раз применяем функцию ` f ` и получаем следующее число.
- Сложение. ` add \ n_1 n_2 = n_1 \ \s\u\c\c \ n_2 ` . Для сложения чисел ` n_1 ` и ` n_2 ` нужно одному из слагаемых передать в параметры функцию ` \s\u\c\c `, как итерруемую функцию, и другое слагаемое, как начальное значение. В результате мы увеличим заданное число на единицу необходимое число раз.
- Умножение. ` \m\u\l\t \ n_1 n_2 = n_1 (add \ n_2) 0 ` . В роли итерируемой функции для множителя ` n_1 ` выступает функция ` \s\u\c\c ` с аргументом ` n_2 ` , а в роли начального значения уже определенное число ` 0 ` . То есть мы определяем умножение как прибавление ` n_2 ` к нулю ` n_1` раз.
Пример: сигнал впрыска 3.55 мс, лямбда-зонд сообщает о богатой смеси. DME рассчитывает на сколько надо обеднить смесь. Получается интегратор равный 0.8895 . DME умножает число 3.55 на 0.8895 и получает скорректированный сигнал впрыска, равный 3.15 мс. Происходит впрыск и поджигание смеси (работа двигателя). Этот процесс продолжается бесконечно и позволяет постоянно поддерживать состав смеси и адаптировать работу двигателя к окружающей среде.
Интегратор работает только в паре с лямбда-зондом. Если лямбда-зонд не работает, то DME не будет рассчитывать интегратор, а примет его за единицу. Умножение числа на единицу не изменяет число. Для коррекции смеси до прогревания лямбда-зонда, DME рассчитывает и сохраняет в память множительную и суммирующую коррекцию.
DME рассчитывает интегратор до миллионных значений, за счёт чего поддерживается очень точная коррекция смеси.
Множительная и суммирующая коррекция рабочей смеси
Для включения лямбда-зонда, датчику требуется прогреться до высокой температуры. Если нагревательный элемент в датчике исправен, то после запуска холодного двигателя лямбда-зонд прогреется минут за 5. В противном случае лямбда будет нагреваться только за счёт выхлопных газов и время увеличивается на 15 минут. Всё это время DME не знает на какой смеси работает двигатель, а не правильная смесь ускоряет деградацию катализатора.
По этому DME заранее рассчитывает (во время работы лямбда-зонда) коррекции и сохраняет их памяти. И на время прогрева лямбда-зонда DME использует сохранённые коррекции для временной регулировки смеси. А после прогревания лямбда-зонда, DME корректирует смесь уже в режиме реального времени, рассчитывая значение интегратора. Одновременно с этим DME постоянно обновляет в памяти множительную и суммирующую коррекцию. На основе этих данных можно так же судить о различных неисправностях двигателя.
Суммирующая — коррекция холостого хода
Количество входящего воздуха, на холостом ходу, оказывает наибольшее влияние на работу двигателя, нежели количество впрыскиваемого топлива. По этому на основе показаний лямбда-зонда, DME может узнать о наличии: подсосов, неисправности расходомера воздуха и.т.д. Коррекция рассчитывается в процентах, максимальное значение коррекции смеси ±20%.
Пример: на холостом ходу сигнал впрыска 4.4 мс. Лямбда зонд сообщает о бедной смеси. DME рассчитывает корректировочное значение равное +4%. Чтобы скорректировать бедную смесь, нужно увеличить время впрыска на 4%. Теперь скорректированное время впрыска составляет 4.57 мс.
Множительная — коррекция при частичной нагрузки
На повышенных оборотах в двигатель поступает настолько много воздуха, что подсосы уже не оказывают сильного влияния. Куда важнее — количество впрыскиваемого топлива. По этому на основе показаний лямбда-зонда, DME может узнать о исправности: форсунок, топливного насоса, топливного фильтра и.т.д. Коррекция рассчитывается в мс, максимальное значение коррекции ±0.5 мс.
Пример: у автомобиля не герметичны топливные трубки, из-за чего в топливной магистрали низкое давление. На 2000 оборотах DME открывает форсунки на 6.3 мс, но лямбда-зонд сообщает о бедной смеси. DME рассчитывает корректировочное значение, равное +0.15 мс. Чтобы скорректировать бедную смесь, нужно увеличить время впрыска на 0.15 мс. Теперь скорректированное время впрыска составляет 6.45 мс.
Не обязательно что суммирующая коррекция распознаёт только подсосы воздуха, а множительная только количество топлива. Неисправностей может быть огромное множество, но именно эти факторы преобладают.
8 лет
Столкнулся с проблемой -полетел этот датчик, начал обзванивать дешевле 7600 руб.. нету не где, мне говорил один знакомый что у него такая фишка на мицухе полетела и он поставил от хундая(за 2500 руб!) и все ок! может кто сталкивался с этим.. или знает где дешевле его купить. обидно же за малюсенькую хрень такие деньжища платить.
датчику кислорода достаточно соответствовать по резьбе и "проводам" (количеству, полярности) сигнал же у них одинаков: 0 - 1В
интересуйтесь в фирменных магазинах производителей (Bosch, NTK (NGK))
20 дек абря 2012
Gригорий
спасибо!! только вот не разу в Москве фирменных магазинов бош и нжк не встречал. сейчас попробую через инет..
20 дек абря 2012
Gригорий
спасибо огромное!! позвонил в первый попавшийся магазин бош - и точно есть такие датчики по 2100 руб. разница ощутима.
12 окт ября 2011
Вот севодня был у дохтора ( поповоду поломки кондея ) Диагноз установле - лопнула трубка высокого давления гибкая, цена ремнота около 5 000руб.
Также вскрытие показало- выход изстроя датчик лямдо занда из 4х штук убитых 3шт. цена вопроса прим 20 000руб.
Есть две проблемы !
1. Где взять денег .
2. Как и где купить по быстрее эти датчики ( нехочется ездить на Окушке 2-3 недели )
датчики кислорода, а не системы кондиционирования. они пошли прицепом - результатом посещения СТОА
Sерёга, я, может, чего упустил, но по каким данным Вам рекомендовали Лямбда-зонды в замену?
12 окт ября 2011
Нашол Бош. намного подешевле, завтра поеду уточнять подойут ли они ( может с проводами проблемы быть.
б/ушный датчик кислорода.
Sерёга, даже новый датчик не даст Вам гарантию того, что его ошибка пропадет. диагносту надо, по-хорошему, не тупо в ошибки тыкать, но и все остальное проверять - от чего эта ошибка возникла
сами датчики запросто могут оказаться исправными
еще: обязательно сохраните бумагу с рекомендацией сервиса о замене КД, документы на их покупку и документы на выполнение и оплату работ по их замене и сопутствующих работ
Люди, а сколько стоит наш дат. кислорода? Я к тому, что когда мучает безденежье, а это в жизни бывает, можно поступить следующим образом: покупается ТАЗовский датчик и перепаевается разъём. Главное условие что бы подходил диаметр резбы. Я поступил такиим образом , когда не смог найти датчик кислорода на" карейца" " КИА СПОРТАЖ" бошевские датчики все одинаковые. З.Ы. если что перепаять помогу.
Вопщем Так ! решил датчики непокупать, поехал к другому дохтору, расказал что сказали официалы ( показал писменный отчёт ), просканировали определили что плохо работают только 2 а не 4 датчика, зделали заключение что возможно что датчики и работают, промыли фарсунки ( 1500 руб) проехол после этого 300 км. проверили ещё раз, оказалось что только 1 датчик глючит тоесть как я понял просто запаздывает с показаниями, но это уже не 4 и 2 датчик а всего лиш 1 .
Вот тепер незнаю что официалы просто пытались развести или кому верить. вот юзаю уже неделю ошибки непоказывает, задумался над покупкой внешнего компа.
А сегодня немного теории. Я не считаю, что лямбда-исчисление является необходимым знанием для любого программиста. Однако, если вам нравится докапываться до истоков, чтобы понять на чем основаны многие языки программирования, вы любознательны и стремитесь познать все в этом мире или просто хотите сдать экзамен по функциональном программированию (как, например, я), то этот пост для вас.
Что это такое
Лямбда-исчисление - это формальная система, то есть набор объектов, формул, аксиом и правил вывода. Благодаря таким системам с помощью абстракций моделируется теория, которую можно использовать в реальном мире, и при этом выводить в ней новые математически доказуемые утверждения. Например, язык запросов SQL основан на реляционном исчислении. Благодаря математической базе, на которой он существует, оптимизаторы запросов могут анализировать алгебраические свойства операций и влиять на скорость работы.
Но речь сегодня не о SQL, а о функциональных языках. Именно для них лямбда-исчисление является основой. Функциональные языки далеко не столь популярны, как, например, объектно-ориентированные, но тем не менее прочно занимают свою нишу. Кроме того, многие идеи из функционального программирования и лямда-исчисления постепенно прокрадываются в другие языки, под видом новых фич.
Если вы изучали формальные языки, то знаете о таком понятии как Машина Тьюринга. Эта вычислительная абстракция определяет класс вычислимых функций. Этот класс столь важен, так как по тезису Черча он эквивалентен понятию алгоритма. Другими словами, любую программу, которую можно запрограммировать на вычислительном устройстве, можно воспроизвести и на машине Тьюринга. А для нас главное то, что лямбда-исчисление по мощности эквивалентно машине Тьюринга и определяет этот же класс функций. Причем создателем лямбда-исчисления является тот самый Алонзо Черч!
Основные понятия
В нотации лямбда-исчисления есть всего три типа выражений:
Сразу пара примеров:
Соглашения
Несколько соглашений для понимания, в каком порядке правильно читать выражения:
Области видимости переменных
Определим контекст переменной, в котором она может быть использована. Абстракция ` lambda x.E ` связывает переменную ` x `. В результате мы получаем следующие понятия:
Взглянем на следующий пример: ` lambda x. x (lambda x. x) x ` .
Понимание лямбда-выражений существенно усложняется, когда переменные с разными значениями и контекстами используют идентичные имена. Поэтому впредь мы будем пользоваться следующим соглашением: связанные переменные необходимо переименовывать для того, чтобы они имели уникальные имена в выражении. Это возможно благодаря концептуально важному утверждению: выражения, которые могут быть получены друг из друга путем переименования связанных переменных, считаются идентичными. Важность этого утверждения в том, что функции в исчислении определяются лишь своим поведением, и имена функций не несут никакого смысла. То есть, функции ` lambda x. x ` , ` lambda y. y ` , ` lambda z. z ` на самом деле одна тождественная функция.
Вычисление лямбда-выражений
Вычисление выражений заключается в последовательном применении подстановок. Подстановкой ` E’ ` вместо ` x ` в ` E \ ` (запись: ` [E’//x]E ` ) называется выполнение двух шагов:
Функции нескольких переменных
Для того чтобы использовать функции нескольких переменных добавим в исчисление новую операцию ` add ` : она применяется к двум аргументам и является синтаксическим сахаром для следующих вычислений: ` (lambda x. lambda y. add \ x y) E_1 E_2 -> ([E_1 // x] lambda y. add \ x y) E_2 = ` ` (lambda y. add \ E_1 y) E_2 -> ` ` [E_2 // y] add \ E_1 y = add \ E_1 E_2 `
Как результат мы получили функцию от одного аргумента, которая возвращает еще одну функцию от одного аргумента. Такое преобразование называется каррирование (в честь Хаскелла Карри назвали и язык программирования, и эту операцию), а функция, возвращающая другую, называется функцией высшего порядка.
Порядок вычислений
Бывают ситуации, когда произвести вычисление можно несколькими способами. Например, в выражении ` (lambda y. (lambda x. x) y) E ` сначала можно подставлять ` y ` вместо ` x ` во внутреннее выражение, либо ` E ` вместо ` y ` во внешнее. Теорема Черча-Рассера говорит о том, что в не зависимости от последовательности операций, если вычисление завершится, результат будет одинаков. Тем не менее, эти два подхода принципиально отличаются. Рассмотрим их подробнее:
Из практических отличий этих двух подходов отметим, то что вычисление по значению более сложно в реализации и редко используется для всех вычислений в неисследовательских языках. Однако, второй подход может не привести к завершению вычисления. Пример: ` (lambda x. lambda z.z) ((lambda y. y y) (lambda u. u u)) ` . При вычислении аргумента мы попадаем в бесконечный цикл, в то время как, проводя вычисления по имени функции, мы сразу получим тождественную функцию.
Кодирование типов
В чистом лямбда-исчислении есть только функции. Однако, программирование трудно представить без различных типов данных. Идея заключается в том, чтобы закодировать поведение конкретных типов в виде функций.
Аналогично, с помощью лямбда-исчисления можно выразить любые конструкции языков программирования, такие как циклы, ветвления, списки и тд.
Заключение
Лямбда-исчисление - очень мощная система, которая позволяет писать любые программы. Однако, непосредственно программирование на лямбда-исчислении получается черезчур громоздким и неудобным. Тем не менее, чистое лямбда-исчисление предназначено вовсе не для программирования на нем, а для изучения существующих и создания новых языков программирования. А следующим шагом на пути к типовым функциональным языкам является типизированное лямбда-исчисление - расширение чистого исчисления типовыми метками.
Читайте также: