Remkomplekty.ru

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Коды ошибок c

Обработка ошибок: Защитное программирование

Введение

В любой программе, сложнее чем «Hello, world» , неизбежно будут происходить ошибки и различные сбои. Поэтому если вы хотите писать надежный и стабильный код, то обязаны заботиться обо всем этом. Конечно, в большинстве случаев нет смысла становиться параноиком и проверять абсолютно все. С другой стороны, во многом это зависит от области применения приложения, которое вы разрабатываете. Если это система контроля банковских переводов или управления полетом спутника, то единственная ошибка в коде может обойтись очень дорого. В этом случае вам на помощь приходит «защитное программирование». Одно из лучших описаний этой методики, на мой взгляд, приводится в следующих книгах:

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

Примеры кода я буду приводить на C++, однако это не должно стать для вас серьезной помехой, если вы пишите на Java, C# или каком-нибудь другом языке со схожим синтаксисом, поскольку многие техники обработки ошибок являются универсальными.

Реклама

Коды ошибок

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

Двойная ответственность

Вот как может выглядеть подобная функция:

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

Такой способ применяется довольно часто, но он имеет некоторые очевидные недостатки. Например, когда мы инициализируем переменную userID значением, которое возвращает функция registerUser() , то на самом деле мы врем. Ведь эта переменная хранит идентификатор пользователя ИЛИ код ошибки, то есть должна называться userIDOrErrorCode . Имя получилось длинным и пользоваться им будет неудобно. Но сразу становится понятно, что эта переменная имеет два назначения (выглядит подозрительно, не правда ли?). Однако даже это не является главным недостатком. В какой-то момент требования к типу идентификатора могут измениться. Например, мы можем решить, что лучше использовать беззнаковое целое число:

Обратите внимание, что в первую очередь я добавил определение typedef для типа UserID . Теперь мы сможем менять фактический тип идентификатора всего в одной строке. Для сравнения, когда мы явно пользовались типом int , то в зависимости от объема кода подобная тривиальная операция могла бы занять несколько часов. Поэтому старайтесь не повторяться (см. Принцип DRY в действии).

Кроме того, теперь мы явно указываем, что функция registerUser() возвращает именно идентификатор UserID , а не идентификатор ИЛИ код ошибки. Иначе мы вновь обманываем тех, кто будет вызывать нашу функцию.

Указатель для ошибки

Итак, логику мы подправили, но как теперь сообщить о произошедшей ошибке? Один из часто применяемых подходов заключается в том, чтобы вернуть информацию об ошибке через дополнительный параметр. Например:

Этой функцией мы можем пользоваться следующим образом:

Выглядит неплохо. Но у вас мог возникнуть вопрос: «А какое значение будет у переменной userID , если ok == false «? Можно предположить, что это будет 0 , то есть функция registerUser() должна вернуть некое нейтральное значение. Например, в случае, когда ожидается возврат класса или структуры, это может быть Null -объект или объект с функцией-членом на подобии isValid() , которая возвращает false , если экземпляр класса находится в некорректном состоянии. Кстати, если бы registerUser() была не обычной функцией, а являлась членом класса, то мы бы могли вообще не возвращать никаких признаков ошибки, но добавить в сам класс что-то вроде getLastError() .

Вот это поворот

Рассмотренный подход вполне справляется со своими задачами, но обычно для подобных функций в стиле C используют другую сигнатуру. Она выглядит следующим образом:

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

Однако, как вы можете видеть, принципиально ничего не изменилось. Нам все равно приходится инициализировать идентификатор userID значением по умолчанию, но теперь это происходит не в самой функции, а до ее вызова. Если мы не хотим, чтобы переменная userID имела смысл без явной инициализации (хотя всегда есть возможность добавить в иерархию классов Null -объект), то можно воспользоваться альтернативным решением:

На этот раз registerUser() принимает не просто указатель на UserID , а двойной указатель. То есть память для идентификатора пользователя выделяется внутри функции registerUser() . А чтобы быть последовательными, освобождать память для userID мы будем не оператором delete , а с помощью функции releaseMemory() , которую сами должны предусмотреть.

Подобным образом часто пишутся C-библиотеки, которые представляют собой обертку над ООП-кодом на C++. Это делается для получения высокой совместимости библиотек, что особенно актуально для Windows. Вы не можете подключить библиотеку на C++ к проекту, если версии компиляторов, с которой работаете вы, и с которой была собрана библиотека, отличаются. Поэтому если вы хотите сохранить реализацию своей библиотеки закрытой, то оказываетесь ограничены использованием низкоуровневых типов данных, которые есть в C. Но чтобы не отбрасывать свои наработки и не переписывать весь код заново на чистом C, используется показанная выше методика. При этом в пользовательском коде вся работа ведется не с самими экземплярами классов, а с указателями на них. А для выделения и освобождения памяти используются специально предусмотренные функции, которые предоставляет библиотека. Более того, определений классов в заголовочных файлах библиотеки нет вовсе (для простоты я сделал допущение, что мы можем создать экземпляр класса User , хотя его тоже не было бы). Вам доступно лишь объявление, которого достаточно для определения указателя на класс. Из-за этого все вызовы функций-членов должны осуществляться также с помощью C-функций, которые ожидают получить указатель на объект, а входные и выходные аргументы должны быть представлены с помощью примитивных типов, на подобии int или char . Впрочем, это было небольшое отступление от нашей темы. Однако если у вас есть желание узнать об этом вопросе поподробнее, то пишите свои пожелания в комментариях и я подготовлю соответствующую полноценную заметку.

Кто там?

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

Чтобы избежать проблем с областью видимости при объявлении перечисления ResultCode , мы создали пространство имен RegistrationLib . Использование namespace -ов вообще является хорошей практикой при написании кода, который вы планируете кому-то передавать. Теперь registerUser() не просто говорит о том, что что-то случилось, но и указывает причину. Конечно, в качестве примера я взял простейший набор возможных типов ошибок, которые могли бы случиться. К тому же, они не так детальны, как хотелось бы. Проблем с заполнением структуры User может быть немало, а уж при работе с базами еще больше. Однако я думаю, что суть вы уловили.

Чуть выше

До этого момента мы говорили о различных способах возврата ошибки, когда она уже произошла. Но мы же не можем откладывать момент более тесного знакомства с ней вечно. Поэтому приступим. В коде верхнего уровня нам предстоит сделать выбор, что же делать дальше, и какую стратегию проверки кодов возвращаемых значений использовать. На самом деле, когда мы проектировали нашу функцию registerUser() , то при ее реализации возникнут те же вопросы. Более того, если она будет основана на применении разных библиотек с разными механизмами возврата ошибок, то это еще серьезнее может осложнить нам жизнь.

Читать еще:  Pppoe ошибка 691

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

Я думаю, у вас не вызовет трудностей разобраться с представленным кодом. В целом он основывается на тех принципах, которые мы уже обсудили выше. Но логика работы функции onUserDataReady() выглядит довольно запутанной. Таковой она и является. Это связано с тем, что мы использовали множество вложенных условных конструкций, что осложняет чтение кода. Несколько улучшить ситуацию нам поможет следующий прием:

Получившийся код выглядит несколько проще. Это достигается за счет уменьшения вложенности проверок. Однако обратите внимание, что перед вызовом registerUser() и sendUserIDToRemoteServer() нам приходится проверять результат выполнения предыдущих действий. Такая необходимость появляется по той причине, что если на n -ом шаге что-то случилось, то все оставшиеся шаги уже не имеют смысла. Фактически после ошибки на каком-то из шагов функция onUserDataReady() должна завершаться. Для этого мы бы могли попробовать сделать что-то подобное:

Конечно, код стал еще легче, но теперь мы имеем утечку памяти, ведь возврат из функции при завершении обработки ошибок происходит раньше вызова releaseMemory() . В этом случае у нас есть несколько вариантов. Первый из них заключается в том, чтобы перед каждым return вставить вызов releaseMemory() . Но так мы получим крайне неудачную конструкцию с дублированием кода. Поэтому такой способ сразу отбрасываем. Другой подход многие бы не одобрили, но он вполне того стоит в нашей ситуации. Его суть заключается в использовании goto :

Обычно goto не рекомендуют применять. И это вполне оправдано. Ведь при неумелом использовании код быстро становится хаотичным и запутанным (спагетти-код). Но если вы знаете, что делаете, то почему бы нет? Представленный выше фрагмент программы является хорошим примером, что из каждого правила есть исключения.

Однако есть еще более надежный и качественный вариант. Он заключается в использовании принципа RAII. Наиболее известным примером реализации этого механизма является Умный указатель. Более подробно об этой идиоме я расскажу во второй части, а сейчас посмотрим, как будет выглядеть код функции onUserDataReady() на основе RAII в нашем случае:

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

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

Реклама

Заключение

Наше знакомство с базовыми принципами обработки ошибок закончено. Мы успели рассмотреть основные способы возврата кодов ошибок; коротко вспомнили принцип создания C-оберток над ООП кодом C++ для создания переносимых библиотек; а также разобрались с возможными вариантами реализации функции-обработчика, которая должна проверять коды ошибок. Встретимся во второй части.

Коды ошибок OBD 2

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

Ниже приведены расшифровки большинства ошибок по протоколу OBD 2.

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

Таким образом, при помощи автосканера, у Вас есть возможность подключиться к электронному блоку и проверить неисправный автомобиль на предмет нарушения работы датчиков и системы в целом. При этом, автосканер выдает коды ошибок OBD 2 на свой экран, в том случае если таковые имеются.

Однако, коды OBD сами по себе ничего не говорят и для того, чтобы расшифровать коды OBD необходимо иметь под рукой толстый справочник, в котором подробно изложена расшифровка кодов ошибок OBD 2. Даже если такой справочник каким-то образом окажется в нужное время в нужном месте, поиск необходимой OBD 2 затянется на длительное время. Это не совсем удобно, да и найти коды OBD 2 на русском достаточно проблематично.

На нашем сайте представлены практически все известные коды ошибок OBD, а так же подробная OBD расшифровка кодов. Удобство и простота пользования сервисом позволяет без дополнительных усилий распознать коды ошибок OBD Вашего автомобиля. При этом достаточно задать в поиск по странице код возникшей ошибки OBD 2 и Вас мгновенно переместят к искомому, подробному описанию OBD 2. Прочитать ошибки можно с помощью универсальных адаптеров elm327. С использованием нашего сервиса, процесс определения неисправности Вашего автомобиля значительно упрощается, при этом Вы экономите уйму времени и затрачиваете меньше усилий.

Наиболее часто используемые сокращения по OBDII

  • AFC – Расходомер воздуха
  • ALDL – Диагностический коннектор. Так раньше назывался диагностический коннектор для автомобилей GM, а также разъем для подключения сканнера; также может использоваться как название любых сигналов OBD II
  • CAN — Контроллер
  • CARB – Калифорнийский совет по атмосферным ресурсам
  • CFI – центральный впрыск топлива (TBI)
  • CFI – непрерывный впрыск топлива
  • CO – монооксид углерода
  • DLC – Диагностический коннектор
  • Driving Cycle – Последовательность пуска, прогрева и движения автомобиля, в ходе этого цикла происходит тестирование всех функций OBD II
  • DTC – Код неисправности
  • ECM – Блок управления двигателем
  • EEC – Электронное управление двигателем
  • EEPROM or E2PROM – Программируемая память, доступная только для чтения
  • EFI – электронный впрыск топлива
  • EGR — рециркуляция выхлопных газов
  • EMR – электронный блок уменьшения угла зажигания
  • EPA – Совет по охране окружающей среды
  • ESC – Электронная регулировка зажигания
  • EST – Электронная регулировка момента зажигания
  • Fuel Trim – балансировка состава смеси
  • HC — углеводород
  • HEI — зажигание
  • HO2S – подогрев датчика кислорода
  • ISO 9141 – международный стандарт для разъема OBDII
  • J1850PWM – протокол для разъема OBD II, установленный по стандарту SAE
  • J1850VPW — протокол для разъема OBD II, установленный по стандарту SAE
  • J1962 – стандарт для диагностического коннектора OBD II, установленный по стандарту SAE
  • J1978 – стандарт SAE для сканнеров OBD II
  • J1979 – стандарт SAE для режимов диагностики
  • J2012 – стандарт SAE, одобренный EPA, для сообщений при тестировании системы выхлопных газов
  • MAF – расход воздухаMAP – абсолютное давление во впускном коллекторе
  • MAT – температура воздуха во впускном коллекторе
  • MIL – индикаторная лампа неисправностей. Лампа «Check Engine Light» на панели приборов.
  • NOx – оксид азота
  • O2 — кислород
  • OBD — диагностика
  • OBDII or OBD II – усовершенствованный стандарт для диагностики автомобилей в США после 1-1-96
  • Parameters – Параметры по диагностике OBD II
  • PCM – Блок управления трансмиссией
  • PCV — Картер
  • Proprietary Readings – Параметры бортового компьютера, которые не требуются для диагностики OBD II, но могут использоваться для диагностики неисправностей различных типов автомобилей.
  • PTC – Код неисправности
  • RPM – об/мин
  • Scan Tool — сканнер
  • SES – лампа сервисного обслуживания двигателя на панели приборов
  • SFI – последовательный впрыск топлива
  • Stoichiometric ( Stoy’-kee-o-metric) Ratio – Коэффициент сгорания топлива
  • TPS – Датчик положения дроссельной заслонки
  • VAC — вакуум
  • VCM – центральный блок управления автомобиля
  • VIN – идентификационный номер автомобиля
  • VSS – датчик скорости
  • WOT – открытая дроссельная заслонка

Коды ошибок

Все о кодах ошибок автомобиля, способы их устранение и просто полезная информация

Кто не будь знает, что за ошибка?

Всем привет!
не подскажете , может кто знает!? после небольшого дтп стрельнули подушки фронтальные.и ремни безоп. ти!
сейчас при замене ремней и подушек если я подключу к ним проводку они не стрельнут опять(блок srs или как его там. не менял ).
и возможно ли скинуть ошибки блока подушек не дилерским сканером.
Спасибо!

Читать еще:  Непредвиденная ошибка 0x80070005

ПРИВЕТ ВСЕМ . ПОДСКАЖИТЕ КОДЫ ОШИБОК (НУЖНО СРОЧНО)

DTC#01 C 401_64
DTC#02 C 100_00
DTC#03 C 1607_82
DTC#04 C 422_64
DTC#05 C 121_00

Renat84
с074_88 — это U0074
Определение: Шина передачи данных B модуля управления выключена Байт неисправности кода DTC ID: 88 Описание: Шина выключена
C 401_64 — это U0401
Определение: Недействительные данные, полученные от %%h(ECM)/%%h(PCM) Байт неисправности кода DTC ID: 64
Описание: Сбой характерности сигнала
C 100_00 — это U0100
Определение: Потеря связи с %%h(ECM)/%%h(PCM) A Байт неисправности кода DTC ID: 0
Описание: Нет никакой дополнительной информации о неисправностях для этого %%h(DTC)
C 422_64 — это U0422
Определение: Недействительные данные, полученные от модуля управления кузовом Байт неисправности кода DTC ID: 64
Описание: Сбой характерности сигнала
C 121_00 — это U0121
Определение: Потеря связи с модулем управления %%h(ABS) Байт неисправности кода DTC ID: 0
Описание: Нет никакой дополнительной информации о неисправностях для этого %%h(DTC)

Коды С1607 и С850 не пробились на ford etis

Кстати на заметку тем, у кого подобные ошибки:

DTC#01 C 401_64
DTC#02 C 100_00
DTC#05 C 121_00

Вспомните — не менял ли дилерили еще кто либо вам прошивку на двигатель и коробку до их появления. Если менял — вот возможная причина, откуда они появились.

Всем привет!
Может кто сможет помочь?
Решили «поиграться» с другом с ОБД сканером и обнаружили ошибки , а расшифровать не могу.
Ошибки:
— C3E80 —
— P2430 — Secondary Air Injection System Air Flow/Pressure Sensor Circuit
— Pending: C3E80 —
— Pending: P2470 —

Коды ошибок c

Award BIOS 6.0: полная загрузка

Данная таблица содержит POST-коды, которые отображаются при полной процедуре POST.

  • CF Определяется тип процессора и тестируется чтение/запись CMOS
  • C0 Предварительно инициализируется чипсет и L1-, L2-кэш, программируется контроллер прерываний, DMA, таймер
  • C1 Детектируется тип и объем оперативной памяти
  • C3 Код BIOS распаковывается во временную область оперативной памяти
  • 0С Проверяются контрольные суммы BIOS
  • C5 Код BIOS копируется в теневую память и управление передается модулю Boot Block
  • 01 Модуль XGROUP распаковывается по физическому адресу 1000:0000h
  • 02 Инициализация процессора. Устанавливаются регистры CR и MSR
  • 03 Определяются ресурсы ввода/вывода (Super I/O)
  • 05 Очищается экран и флаг состояния CMOS
  • 06 Проверяется сопроцессор
  • 07 Определяется и тестируется контроллер клавиатуры
  • 08 Определяется интерфейс клавиатуры
  • 09 Инициализация контроллера Serial ATA
  • OA Определяется клавиатура и мышь, которые подключены к портам PS/2
  • 0B Устанавливаются ресурсы звукового контроллера AC97
  • OE Тестируется сегмент памяти F000h
  • 10 Определяется тип flash-памяти
  • 12 Тестируется CMOS
  • 14 Устанавливаются значения для регистров чипсета
  • 16 Первично инициализируется тактовый генератор
  • 18 Определяется тип процессора, его параметры и объемы кэша L1 и L2
  • 1B Инициализируется таблица векторов прерываний
  • 1С Проверяются контрольные суммы CMOS и напряжение питания аккумулятора
  • 1D Определяется система управления питанием Power Management
  • 1F Загружается матрица клавиатуры (для ноутбуков)
  • 21 Инициализируется система Hardware Power Management (для ноутбуков)
  • 23 Тестируется математический сопроцессор, дисковод, инициализация чипсета
  • 24 Обновляется микрокод процессора. Создается карта распределения ресурсов устройств Plug and Play
  • 25 Начальная инициализация PCI: перечисляются устройства, поиск адаптера VGA, запись VGA BIOS по адресу C000:0
  • 26 Устанавливается тактовая частота по CMOS Setup. Отключается синхронизация неиспользуемых слотов DIMM и PCI. Инициализируется система мониторинга (H/W Monitor)
  • 27 Разрешается прерывание INT 09h. Снова инициализируется контроллер клавиатуры
  • 29 Программируются регистры MTRR, инициализируется APIC. Программируется контроллер IDE. Измеряется частота процессора. Вызывается расширение BIOS видеосистемы
  • 2B Поиск BIOS видеоадаптера
  • 2D Отображается заставка Award, информация о типе процессора и его скорости
  • 33 Сбрасывается клавиатура
  • 35 Тестируется первый канал DMA
  • 37 Тестируется второй канал DMA
  • 39 Тестируются страничные регистры DMA
  • 3C Настраивается контроллер 8254 (таймер)
  • 3E Проверка контроллера прерываний 8259
  • 43 Проверяется контроллер прерываний
  • 47 Тестируются шины ISA/EISA
  • 49 Вычисляется объем оперативной памяти. Настраиваются регистры для процессора AMD K5
  • 4E Программируются регистры MTRR для процессоров Syrix. Инициализируются кэш L2 и APIC
  • 50 Определяется шина USB
  • 52 Тестируется ОЗУ с отображением результатов. Очищается расширенная память
  • 53 Если выполнена очистка CMOS, то сбрасывается пароль на вход в систему
  • 55 Отображается количество процессоров (для многопроцессорных платформ)
  • 57 Отображается логотип EPA. Начальная инициализация устройств ISA PnP
  • 59 Определяется система защиты от вирусов
  • 5B Вывод подсказки для запуска обновления BIOS с дискеты
  • 5D Запускается контроллер Super I/O и интегрированный аудиоконтроллер
  • 60 Вход в CMOS Setup, если была нажата клавиша Delete
  • 65 Инициализируется мышь PS/2
  • 69 Включается кэш L2
  • 6B Настраиваются регистры чипсета согласно BIOS Setup
  • 6D Назначаются ресурсы для устройств ISA PnP и COM-порты для интегрированных устройств
  • 6F Инициализируется и настраивается контроллер гибких дисков
  • 75 Детектируются и устанавливаются IDE-устройства: жесткие диски, CD/DVD, LS-120, ZIP и др.
  • 76 Выводится информация об обнаруженных IDE-устройствах
  • 77 Инициализируются последовательные и параллельные порты
  • 7A Сбрасывается и готовится к работе математический сопроцессор
  • 7C Определяется защита от несанкционированной записи на жесткие диски
  • 7F При наличии ошибок выводится сообщение и ожидается нажатие клавиш Delete и F1
  • 82 Выделяется память для управления питанием и заносятся изменения в таблицу ESCD.
  • Убирается заставка с логотипом EPA. Запрашивается пароль, если нужен
  • 83 Все данные сохраняются из временного стека в CMOS
  • 84 Вывод на экран сообщения Initializing Plug and Play Cards
  • 85 Завершается инициализация USB
  • 87 Создаются таблицы SYSID в области DMI
  • 89 Устанавливаются таблицы ACPI. Назначаются прерывания для PCI-устройств
  • 8B Вызывается BIOS дополнительных ISA- или PCI-контроллеров, за исключением видеоадаптера
  • 8D Устанавливаются параметры контроля четности ОЗУ по CMOS Setup. Инициализируется APM
  • 8F IRQ 12 разрешается для «горячего» подключения мыши PS/2
  • 94 Завершение инициализации чипсета. Отображение таблицы распределения ресурсов. Включение кэша L2. Установка режима перехода на летнее/зимнее время
  • 95 Устанавливается частота автоповтора клавиатуры и состояния Num Lock
  • 96 Для многопроцессорных систем настраиваются регистры (для процессоров Cyrix). Создается таблица ESCD. Устанавливается таймер DOS Time по показаниям часов RTC CMOS. Сохраняются разделы загрузочных устройств для использования встроенным антивирусом. Динамик оповещает об окончании POST. Создается таблица MSIRQ FF Выполняется прерывание BIOS INT 19h. Поиск загрузчика в первом секторе загрузочного устройства

Award BIOS 6.0: сокращенная загрузка

Сокращенная процедура выполняется при установке в BIOS параметра Quick Power On Self Test.

  • 65 Сбрасывается видеоадаптер. Инициализируются звуковой контроллер, устройства ввода/вывода,тестируется клавиатура и мышь. Проверяется целостность BIOS
  • 66 Инициализируется кэш-память. Создается таблица векторов прерываний. Инициализируется система управления питанием
  • 67 Проверяется контрольная сумма CMOS и тестируется батарейка питания. Настраивается чипсет на основе параметров CMOS
  • 68 Инициализируется видеоадаптер
  • 69 Настраивается контроллер прерываний
  • 6A Тестируется оперативная память (ускоренно)
  • 6B Отображается логотип EPA, результаты тестов процессора и памяти
  • 70 Отображается подсказка для входа в BIOS Setup. Инициализируется мышь, подключенная к PS/2 или USB
  • 71 Инициализируется контроллер кэш-памяти
  • 72 Настраиваются регистры чипсета. Создается список устройств Plug and Play.& Инициализируется контроллер дисковода
  • 73 Инициализируется контроллер жестких дисков
  • 74 Инициализируется сопроцессор
  • 75 Если нужно, жесткий диск защищается от записи
  • 77 Если нужно, запрашивается пароль и выводятся сообщения Press F1 to continue, DEL to enter Setup
  • 78 Инициализируются платы расширения с собственной BIOS
  • 79 Инициализируются ресурсы платформы
  • 7A Генерируются корневая таблица RSDT, таблицы устройств DSDT, FADT и т. п.
  • 7D Собирается информациия о разделах загрузочных устройств
  • 7E BIOS готовится к загрузке операционной системы
  • 7F Состояние индикатора NumLock устанавливается в соответствии с настройками
  • BIOS Setup
  • 80 Вызывается INT 19 и запускается операционная система
  • FF Загрузка операционной системы

Значение кодов ошибок системы самодиагностики GM OBD-I

Программы для OBD. Американские вэны

Программы для OBD ⇒ Значение кодов ошибок системы самодиагностики GM OBD-I

Модератор: Акулыч

Сообщение Mister » 04 май 2011, 16:48

Как считать коды ошибок?

Читать еще:  Ттк 651 ошибка при подключении

С 1981 года автомобильные компьютерные системы управления имеют возможности самодиагностики. Коды ошибок помогают локализовать неисправности. При обнаружении компьютером неисправности загорается сигнальная лампа Check Engine на приборной панели. Для прочтения кодов ошибок сначала надо найти диагностический разъем. По ссылке: troublecodes(точка)net/GM/ посмотрите на рисунок разъема (12 Pin DLC). На большинстве моделей он расположен под приборной панелью справа или слева от рулевой колонки. Найдите это разъём в салоне автомобиля. По идее, должен быть доступен без снятия каких-либо панелей.

Для считывания кодов при выключенном зажигании замыкают перемычкой контакты А и В 12-ти штырькового диагностического разъема. Дальше производятся следующие операции:

* включают зажигание, лампа Check Engine должна гореть;
* начинают считывать коды ошибок. Сначала проходит код 12 (вспышка, пауза, две вспышки подряд), показывающий, что нет сигнала с датчика положения коленчатого вала. Так как двигатель не запущен, то код 12 просто индицирует исправность диагностической системы;
* после вывода кода 12 трижды, электронный блок управления последовательно выводит коды ошибок, начиная с младших номеров. После окончания трижды выводится код 12 и процесс повторяется.

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

Значения кодов ошибки:

Примечание:
Приводится полная таблица кодов ошибок; некоторые из них могут быть неприменимы к установленному на Вашем автомобиле контроллеру!
Расшифровка аббревиатур приводится после таблицы

Код Значение Что проверять?
13 Лямбда-зонд
(датчик кислорода) Цепи и разъемы лямбда-зонда, заменить лямбда-зонд.
14 Датчик температуры ОЖ — перегрев Если двигатель перегревается, сначала устраните причину перегрева. Проверьте цепи и разъемы датчика температуры охлаждающей жидкости на предмет замыкания на массу, проверьте сопротивление датчика, замените датчик.
15 Датчик температуры ОЖ — переохлаждение Если двигатель недогревается, сначала устраните причину недогрева. Проверьте цепи и разъемы датчика температуры охлаждающей жидкости на предмет обрыва, проверьте сопротивление датчика, замените датчик.
16 Сигнал распределителя зажигания Не поступает НЧ сигнал (4 импульса за 1 оборот) с датчика зажигания.
18 Цепи форсунок Проверьте форсунки и проводку к ним.
21 Сигнал TPS — высокий уровень Проверьте TPS и его регулировку, проводку к TPS. Возможна неисправность TPS.
22 Сигнал TPS — низкий уровень Проверьте TPS и его регулировку, проводку к TPS. Возможна неисправность TPS.
23 Датчик IAT Проверьте цепи и разъемы датчика IAT на предмет обрыва — датчик сигнализирует о низкой температуре.
24 Датчик VSS Проверьте соединения датчика скорости VSS с контроллером.
25 Датчик IAT Проверьте сопротивление датчика IAT, проводку к нему, возможна неисправность датчика.
26 Клапан EVAP Проверьте проводку к клапану на предмет обрыва/короткого замыкания, проверьте сам клапан.
27 Клапан EGR Проверьте проводку к клапану на предмет обрыва/короткого замыкания, проверьте сам клапан.
28 АКПП Выявлена проблема в АКПП при переключении передач — требуется квалифицированная диагностика АКПП.
29 Система подачи воздуха в выпускной коллектор ?
32 Система EGR Проверьте подачу вакуума к этой системе и все вакуумные шланги, электрические соединения. Возможна неисправность клапана EGR и/или контроллера.
33 Сигнал MAP — высокий уровень Проверьте вакуумные шланги к этому датчику, проводку до контроллера. Возможно, датчик неисправен.
34 Сигнал MAP — низкий уровень Проверьте вакуумные шланги к этому датчику, проводку до контроллера. Возможно, датчик неисправен.
36 Сигнал распределителя зажигания Не поступает ВЧ сигнал (180 импульсов за 1 оборот) с датчика зажигания.
37 Выключатель ТСС — обрыв Проверить цепь выключателя ТСС на обрыв, возможна неисправность выключателя.
38 Выключатель ТСС — короткое замыкание Проверить цепь выключателя ТСС на короткое замыкание, возможна неисправность выключателя.
41 Система зажигания — обрыв Проверить проводку и разьемы от контроллера до модуля зажигания. Возможна неисправность модуля зажигания и/или контроллера
42 Неисправность системы зажигания (1991-1993) Обрыв либо замыкание на массу в модуле зажигания. Требуется дополнительная диагностика модуля зажигания.
42 Неисправность системы зажигания (1994-1995) Проверить разъемы и проводку между контроллером и модулем зажигания, возможна неисправность модуля зажигания и/или контроллера.
43 Неисправность системы зажигания (1991-1993) Отсутствует сигнал от датчика детонации — проверить проводку, датчик и модуль зажигания.
43 Датчик детонации (1994-1995) Проверить проводку/разъемы от датчика детонации до контроллера, возможна неисправность датчика.
44 Бедная смесь Проверить проводку от лямбда-зонда до контроллера; массу на контроллере; давление в топливной магистрали. Возможна неисправность лямбда-зонда.
45 Богатая смесь Проверить систему EVAP; давление в топливной магистрали; форсунки на предмет утечки; клапан EGR. Возможна неисправность лямбда-зонда.
46 Сигнализация Если двигатель не удается завести — требуется диагностика заводской системы сигнализации/иммобилайзера.
47 Датчик детонации Проверьте проводку к датчику детонации, возможно, датчик неисправен.
48 Неисправность MAF Датчик MAF подключен, но не вырабатывает сигнал. Возможна неисправность датчика MAF.
50 Напряжение в бортовой сети Напряжение опустилось ниже 8 Вольт, проверить генератор.
51 Неисправность PROM (1991-1993) Ошибка ПЗУ в контроллере — требуется замена ПЗУ.
51 Неисправность EEPROM (1994-19950 Ошибка РПЗУ в контроллере, требуется репрограммирование РПЗУ.
53 Напряжение в бортовой сети Напряжение поднялось выше 17,1 Вольт, проверить генератор.
54 Реле топливного насоса Проверить проводку топливного насоса на замыкание или повреждение.
55 Неисправность контроллера (1991-1993) Проверить питание контроллера и массу на контроллере; возможна неисправность контроллера.
55 Бедная смесь (1994-1995) Смесь обедняется под нагрузкой или при ускорении. Проверьте топливный фильтр и регулятор давления топлива.
58 Температура трансмиссионной жидкости Перегрев трансмиссионной жидкости, требуется диагностика АКПП.
59 Температура трансмиссионной жидкости Недостаточный нагрев трансмиссионной жидкости, требуется диагностика АКПП.
63 Подогрев лямбда-зонда (правая сторона) Обрыв в цепи подогрева зонда, проверьте предохранитель цепи подогрева и сам зонд.
64 Лямбда-зонд (правая сторона) Постоянно низкое напряжение (менее 200мВ — бедная смесь), проверьте зонд.
65 Лямбда-зонд (правая сторона) Постоянно высокое напряжение (более 700мВ — богатая смесь), проверьте зонд.
66 Климат-контроль Давление хладагента ниже 8 psi или выше 448 psi; либо замыкание в цепи датчика давления хладагента.
67 Климат-контроль Постоянный сигнал от датчика давления хладагента, в то время как его показания должны изменяться.
68 Климат контроль Проверьте реле муфты компрессора.
69 Климат контроль Проверьте реле муфты компрессора.
70 Климат-контроль Недопустимое напряжение на выходе контроллера к реле муфты компрессора — требуется проверка контроллера.
72 Датчик скорости Отсутствие сигнала датчика скорости автомобиля — проверить датчик.
73 Цепь электронного регулятора давления Нестабильный ток в цепи регулятора, проверить регулятор.
75 АКПП Некорректная последовательность переключения. Требуется диагностика АКПП.
77 Первый вентилятор охлаждения двигателя Нестабильный ток в цепи вентилятора, проверить реле и вентилятор.
78 Второй вентилятор охлаждения двигателя Нестабильный ток в цепи вентилятора, проверить реле и вентилятор.
79 АКПП Перегрев АКПП, необходима диагностика АКПП.
81 АКПП Некорректное напряжение в цепи соленоида переключения 2-3; необходима диагностика АКПП.
82 АКПП Некорректное напряжение в цепи соленоида переключения 1-2; необходима диагностика АКПП.
83 АКПП Цепь соленоида ТСС — высокое напряжение на соленоиде при активации; необходима диагностика АКПП.
84 АКПП Некорректное напряжение в цепи соленоида переключения 3-2; необходима диагностика АКПП.
85 АКПП Заклинивание соленоида TCC — необходима диагностика АКПП.
90 АКПП Некорректное напряжение в цепи соленоида ТСС; необходима диагностика АКПП.
95 Цепь сигнальной лампы Change Oil Некорректное напряжение в цепи сигнальной лампы замены масла, проверить цепи лампы.
96 Цепь сигнальной лампы Low Oil Некорректное напряжение в цепи сигнальной лампы недостаточного уровня масла, проверить цепи лампы.
97 Датчик VSS Некорректное напряжение на выходе датчика VSS; проверьте датчик.

Расшифровка аббревиатур:
TPS Throttle Position Sensor — датчик положения дроссельной заслонки
IAT Intake Air Temperature — датчик температуры поступающего в двигатель воздуха
VSS Vehicle Speed Sensor — датчик скорости движения автомобиля
EVAP Система улавливания паров бензина
EGR Exhaust Gas Recirculation — подача выхлопного газа во впускной коллектор
MAP Manifold Absolute Pressure — датчик давления во впускном коллекторе
ТСС Torque Converter Clutch — блокировка гидротрансформатора
MAF Mass Air Flow sensor — расходомер

Взято с freedomcars

Ссылка на основную публикацию
Adblock
detector