Oem протокол производителя что это

от admin

Протоколы стандарта OBD2

1. OEM (протокол производителя).
Коммутация +12в. при включении зажигания.
2. Шина + (Bus positive Line). SAE-J1850 PWM, SAE-1850 VPW.
3. —
4. Заземление кузова.
5. Сигнальное заземление.
6. Линия CAN-High высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).
7. K-Line (ISO 9141-2 и ISO 14230).
8. —
9. Линия CAN-Low, низкоскоростной шины CAN Lowspeed.
10. Шина — (Bus negative Line). SAE-J1850 PWM, SAE −1850 VPW.
11. —
12. —
13. —
14. Линия CAN-Low высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).
15. L-Line (ISO 9141-2 и ISO 14230).
16. Питание +12в от АКБ.

SAE J1850 PWM

Существует два типа протокола J1850. PWM является высокоскоростным и обеспечивает передачу информации со скоростью 41,6 Кбайт/с. Он применяется в автомобилях марок Ford, Jaguar и Mazda. В протоколе PWM сигналы передаются по двум проводам, подсоединенным к 2 и 10 контакту диагностического разъема.

SAE J1850 VPW

Протокол VPW осуществляет передачу данных со скоростью 10,4 Кбайт/с, что существенно медленнее, чем у протокола PWM. Формат данного протокола идентичен SAE J1850 PWM . Данный протокол используется на автомобилях General Motors (GM) и Chrysler. VPW предусматривает обмен данными по одному проводу, подсоединенному ко 2 контакту диагностического разъема. Длина шины может достигать 35 метров.

Данный протокол разработан компанией ISO. Он не такой сложный, как протоколы J1850 и не требует в использовании специальных коммуникационных микропроцессоров, но, с другой стороны, обеспечивает довольно медленную передачу данных со скоростью 10 Кбайт/c. Протоколы ISO 9141 и ISO 14230 схожи по физической реализации обмена информацией, но различаются ее использованием. Поэтому сканер ISO 9141, обычно может работать и с ISO 14230, но не наоборот.

В протоколе ISO 9141-2 сигналы передаются по 7 контакту (К-линия) и опционально по 15 контакту (L-линия). К-линия является двунаправленной (т.е. передает данные в обе стороны), L-линия однонаправленная и используется лишь для соединения ЭБУ и сканера, после чего линия L переходит в состояние логической единицы.

Физический уровень передачи информации в протоколах ISO 9141 и ISO 14230 заключается в одновременной передачи ЭБУ специального 8-битного кода по К- и L-линиям со скоростью 5Б/сек. Если код правильный, то ЭБУ посылает сканеру 8-битный код со скоростью последующего соединения. Затем передается еще два кода с информацией о последующем соединении и расположении К- и L-линий. Сканер возвращает отражение этих кодов в ЭБУ. На этом процесс распознавания окончен.

ISO 14230-4 (др. название Keyword Protocol 2000)

На физическом уровне данный протокол идентичен ISO 9141, но является еще более медленным (скорость передачи данных от 1,2 до 10 Кбайт/c в быстрой версии).

ISO 15765 CAN

CAN-протокол был разработан компанией Bosch для автомобильного и промышленного применения. В рамках стандарта OBD2 протокол использует линии CAN High и CAN Low, т.е. 2 контакта для обмена сигналом: 6 и 14. Является самым скоростным и совершенным. Сейчас данный протокол используется на большинстве современных автомобилях. Стандарт CAN не регламентирует определенной скорости работы для каждой шины в автомобиле. С помощью отдельных и встроенных микроконтроллеров есть возможность менять ее от 20 Кбит/c до 1 Мбит/с.

Стандарты интерфейсов диагностики автомобиля

Системы OBD внедряются с 1980-х годов, OBD-2 — с 1996 года. Современные варианты используют стандартизованные цифровые порты для предоставления текущих данных и выдачи ряда стандартных кодов ошибок DTC (diagnostic trouble code).

История
  • 1980: General Motors реализовала фирменный интерфейс ALDL (Assembly Line Diagnostic Link) и протокол для тестирования модулей управления двигателей (ECM). ALDL протокол взаимодействует при 160 бит/с, и следит за системами автомобиля.
  • 1984: Крупнейшие страны производители автомобилей начали активно внедрять процесс компьютеризации автомобилей. Основной задачей данного процесса являлось повышение уровня безопасности водителя и пассажиров, снижение количества токсичных выбросов в окружающую среду, повышение уровня комфорта, и кардинальная модернизация самого автомобиля в целом.
  • 1986: Обновленная версия протокола ALDL на скорости 8192 бит/с, с полудуплексной реализацией [UART] (Universal Asynchronous Receiver-Transmitter). Этот протокол определён в спецификации GM XDE-5024B.
  • 1991: California Air Resources Board (CARB) регламентировало, чтобы все новые автомобили, проданные в Калифорнии начиная с 1991 года, соответствовали требованиям OBD-I. Разъёмы линии передачи данных и его положение не стандартизированы, равно как и данные протокола.
  • 1996: OBD-II (On-Board Diagnostic) протокол Бортовой диагностики сделан обязательным для всех автомобилей, проданных в Соединенных Штатах.
  • 2000: EOBD (European Union On-Board Diagnostic) — версия OBD-II, расширенная Controller Area Network, требуемая в Европе. Европейский союз делает EOBD обязательным для всех бензиновых автомобилей, проданных в Европейском Союзе, начиная с 2001 модельного года (см. европейские нормы выбросов Директивы 98/69/ЕС).
  • 2003: JOBD (Japan On-Board Diagnostic) — Япония вводит версию OBD-II для автомобилей, проданных в Японии с 2003 г.
  • 2004: Европейский Союз делает EOBD обязательным для всех дизельных автомобилей, проданных в Европейском Союзе.
  • 2008: Все автомобили, продаваемые в Соединенных Штатах обязаны использовать ISO 15765-4 шину обмена Controller Area Network (CAN) bus.
Стандарты интерфейсов

ALDL (Assembly Line Diagnostic Link) — диагностическая система автомобилей, разработанная фирмой General Motors и предшедствующая стандарту OBD-I.
ALDL до того как претерпела незначительные изменения называлась Assembly Line Communications Link или ALCL. Два этих термина синонимы. Эта система представляла собой не чёткий стандарт и поэтому была допущена как спецификация обеспечения связи с транспортным средством.
Существует три разных разъёма ALDL: 5-контактный разъем, 10-контактный и 12-контакный, — последний имеет более широкое распространение на автомашинах GM. Более ранние версии использовали скорость передачи 160 бит/с, в то время как более поздние — 8192 бит/с и использовали двунаправленную связь с Power-train Control Module (PCM).

OBD-I

OBD-I (On-Board Diagnostic) — Бортовая диагностика, регулирующая намерения побудить автопроизводителей, разрабатывать надежные системы контроля за выбросами Emission control system.

OBD-1,5

OBD 1.5 является частичной реализацией OBD-II, которую General Motors использовал на некоторых автомобилях в 1994 и 1995 годах (General Motors не использовал термин OBD 1.5 в документации на эти автомобили, они просто назывались OBD и OBD-II секции в инструкции по эксплуатации).

OBD-II

OBD-II (On-board diagnostics) — бортовая диагностика, стандарт разработанный в середине 90-х, предоставляет полный контроль над двигателем. Позволяет проводить мониторинг частей кузова и дополнительных устройств, а также диагностирует сеть управления автомобилем. В данном стандарте производители применяют различные протоколы соединения с автомобилем.

  1. ISO 9141-2
  2. ISO 14230 Keyword Protocol 2000
  3. SAE J1850 VPW
  4. SAE J1850 PWM
  5. ISO 15765-4 CAN (Controller Area Network)

GM: J2411 GMLAN/SWC/Single-Wire CAN. VW / Audi: Коммутация +12в. при включении зажигания.

auto12v.ru

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

Все электронные системы управления современного автомобиля имеют функцию самодиагностики, которая информирует водителя о возникающих неисправностях. По сути, получается, что бортовые компьютеры отслеживают не только ситуацию на дороге, но и практически все внутренние процессы, которые происходят в авто. Такие системы управления и диагностики могут отличаться даже в автомобилях одной марки. Однако сам принцип диагностирования остаётся неизменным: происходит непрерывное считывание сигналов от нескольких десятков датчиков, сверка получаемых результатов с заданными значениями и, самое главное, при обнаружении ошибки сохранение её кода в памяти компьютера.
Диагностические коды ошибок (DTC) накапливаются в электронных блоках управления (ЭБУ, ECU) при возникновении неисправностей различных систем автомобиля и позволяют раскрыть причины неполадок.

Сам по себе код состоит 5-ти символов: одной заглавной латинской буквы и четырёхзначного числа.
  • P00xx — Контроль системы смесеобразования и системы доп. снижения токсичности выхлопа.
  • P01xx — Контроль системы смесеобразования.
  • P02xx — Контроль системы смесеобразования.
  • P03xx — Система зажигания и система контроля пропусков воспламенения.
  • P04xx — Вспомогательные системы контроля эмиссии.
  • P05xx — Контроль скорости автомобиля, системы холостого хода и других систем.
  • P06xx — Блоки управления ECM / PCM / TCM и другие системы
  • P07xx — Трансмиссия.
  • P08xx — Трансмиссия.
  • P09xx — Трансмиссия.
  • P10xx — Коды устанавливаемые производителем. Зависят от марки авто.
  • P20xx — Коды устанавливаемые производителем. Зависят от марки авто.
  • B00xx — Кузов (подушки безопасности, центральный замок, электростекло-подъемники).
  • C00xx — Шасси (ABS противопробуксовочная система, ESP, TCS-Traction Control System Система курсовой устойчивости).
  • U10xx — Межблочная шина обмена данных (CAN-bus) (CAN-II).
  • U25xx — Межблочная шина обмена данных (CAN-bus) (CAN-II).

Буква означает:

– P – Powertrain codes — код связан с работой двигателя и/или автоматической коробки передач, (ЭСУД), КПП. P 0 XXX — Generic trouble code P 1 XXX — Manufacturer controlled P 2 XXX — SAE controlled DTC’s P 3 XXX — Manufacturer controlled and SAE reserved.
Подсистема, к которой относится код (для кодов P0 X XX).
1 — Fuel and Air Metering — Ошибка вызвана системой регулирования топливно-воздушной смеси
2 — Fuel and Air Metering (Injector circuit) — Ошибка вызвана системой регулирования топливно-воздушной смеси (только по подсистеме подачи топлива)
3 — Ignition Systems or Misfire — Ошибка системы зажигания (в том числе — пропуски зажигания)
4 — Auxiliary Emission Controls — Ошибка дополнительной системы контроля за выбросами
5 — Vehicle Speed Control and Idle Control System — Ошибка системы контроля скорости и управления холостым ходом
6 — Computer Output Circuit — Неисправности контроллера или его выходных цепей
7, 8 — Transmission — Ошибки в работе трансмиссии

– B – Body codes — код связан с работой кузовных систем (подушки безопасности, центральный замок, стеклоподъемники и др.). B0XXX, B3XXX — SAE Codes — основной (generic) код B1XXX, B2XXX — MFG — код, определенный производителем (extended).

– C – Chassis codes — код относится к системе шасси (ходовой части)(подвеска). C0XXX, C3XXX — SAE Codes — основной (generic) код C1XXX, C2XXX — MFG — код, определенный производителем (extended)

– U – Network codes — код относится к системе взаимодействия между электронными блоками (например, к шине CAN). U0XXX, U3XXX — SAE Codes — основной (generic) код U1XXX, U2XXX — MFG — код, определенный производителем (extended)

Powertrain codes
Первая цифра кода:

– 0 – стандартный (SAE);

– 1, 2 – позиции для кода производителя (OEM);

Вторая цифра:

– 1, 2 – смесеобразование;

– 3 – элементы системы зажигания;

– 4 – дополнительные системы;

– 5 – контроль систем, обеспечивающих стабильность холостого хода;

– 6 – неисправность в блоке управления;

– 7, 8, 9 – контроль трансмиссии;

– 10, 20 – коды установленные производителем, зависящие от марки автомобиля.

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

  • 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 – открытая дроссельная заслонка.

CAN BUS – это автомобильная шина, разработанная Робертом Бошем, которая преимущественно принята в автомобильной и авиакосмической индустрии. CAN это серийный протокол шины, с подключением отдельных систем и датчиков как альтернатива обычному много-проводному пучку. Позволяет связать автомобильные компоненты в один или двойной провод называемый сетью шины данных на скорости более 1 Мегабита. До того как была выпушена CAN шина, автомобили имели большое количество проводки которая была необходима для соединения различных электронных компонентов.
Первый автомобиль с шиной CAN был представлен в 1986 году – это BMW 850 купе. За счет использование данной шины в автомобиле было использовано меньше проводки на 2 километра, общий сброшенный вес составил 50 кг. Впервые, каждый из автомобильных систем и датчиков где способность соединения на очень высокой скорости (25КБ/c – 1Мегабит) на одинарном или сдвоенном проводе линии соединения противоположенная предыдущей мультипроводной проводке.

Kоды ошибок OBD II По производителям

описание для кодов ошибок obd II, является общим для всех автомобилей, конкретного производителя.

auto12v.ru

Следующие страницы, таблицы кодов ошибок по производителям автомбилей; Volkswagen Group, Citroën∕Peugeot, Nissan-Renault, BMW AG, Daimler AG, Hyundai KIA Automotive Group, Toyota Motor Corporation, Geely Automobile Holdings Limited∕Volvo.
Коды ошибок Volkswagen (VW), Audi, Seat и Skoda;…⇒
Коды ошибок Daimler AG — Mercedes ;…⇒
Коды ошибок, Peugeot, Citroën;…⇒
Коды ошибок BMW AG;…⇒
Коды ошибок Nissan-Renault;…⇒
Коды ошибок Toyota Motor Corporation;…⇒
Коды ошибок Hyundai KIA Automotive Group;…⇒
Коды ошибок Geely Automobile Holdings Limited∕Volvo.;…⇒

как узнать протокол эбу автомобиля

traffic 2251530 1920

1. OEM (протокол производителя).
Коммутация +12в. при включении зажигания.
2. Шина + (Bus positive Line). SAE-J1850 PWM, SAE-1850 VPW.
3. —
4. Заземление кузова.
5. Сигнальное заземление.
6. Линия CAN-High высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).
7. K-Line (ISO 9141-2 и ISO 14230).
8. —
9. Линия CAN-Low, низкоскоростной шины CAN Lowspeed.
10. Шина — (Bus negative Line). SAE-J1850 PWM, SAE −1850 VPW.
11. —
12. —
13. —
14. Линия CAN-Low высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).
15. L-Line (ISO 9141-2 и ISO 14230).
16. Питание +12в от АКБ.

Существует два типа протокола J1850. PWM является высокоскоростным и обеспечивает передачу информации со скоростью 41,6 Кбайт/с. Он применяется в автомобилях марок Ford, Jaguar и Mazda. В протоколе PWM сигналы передаются по двум проводам, подсоединенным к 2 и 10 контакту диагностического разъема.

Данный протокол разработан компанией ISO. Он не такой сложный, как протоколы J1850 и не требует в использовании специальных коммуникационных микропроцессоров, но, с другой стороны, обеспечивает довольно медленную передачу данных со скоростью 10 Кбайт/c. Протоколы ISO 9141 и ISO 14230 схожи по физической реализации обмена информацией, но различаются ее использованием. Поэтому сканер ISO 9141, обычно может работать и с ISO 14230, но не наоборот.

В протоколе ISO 9141-2 сигналы передаются по 7 контакту (К-линия) и опционально по 15 контакту (L-линия). К-линия является двунаправленной (т.е. передает данные в обе стороны), L-линия однонаправленная и используется лишь для соединения ЭБУ и сканера, после чего линия L переходит в состояние логической единицы.

Физический уровень передачи информации в протоколах ISO 9141 и ISO 14230 заключается в одновременной передачи ЭБУ специального 8-битного кода по К- и L-линиям со скоростью 5Б/сек. Если код правильный, то ЭБУ посылает сканеру 8-битный код со скоростью последующего соединения. Затем передается еще два кода с информацией о последующем соединении и расположении К- и L-линий. Сканер возвращает отражение этих кодов в ЭБУ. На этом процесс распознавания окончен.

ISO 14230-4 (др. название Keyword Protocol 2000)

На физическом уровне данный протокол идентичен ISO 9141, но является еще более медленным (скорость передачи данных от 1,2 до 10 Кбайт/c в быстрой версии).

CAN-протокол был разработан компанией Bosch для автомобильного и промышленного применения. В рамках стандарта OBD2 протокол использует линии CAN High и CAN Low, т.е. 2 контакта для обмена сигналом: 6 и 14. Является самым скоростным и совершенным. Сейчас данный протокол используется на большинстве современных автомобилях. Стандарт CAN не регламентирует определенной скорости работы для каждой шины в автомобиле. С помощью отдельных и встроенных микроконтроллеров есть возможность менять ее от 20 Кбит/c до 1 Мбит/с.

K-LINE, OBD2, ELM327 — разбор протокола

8716d6ds 100

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

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

K0AAAgJLduA 960

В шину диагностики втыкается адаптер ЕЛМ327 и по воздуху он соединяется с планшетом, телефоном, смартом, где установлена и запущена программа TorquePro

Для того, что бы понять что на картинке, нужно знать следующие вещи:
Протокол ОБД2 из википедии. ru.wikipedia.org/wiki/OBD-II_PIDs
Протокол ОБД2 из википедии, более подробный en.wikipedia.org/wiki/OBD-II_PIDs
Протокол ISO9141-2 embeddedsystem.ru/index.p…=protokoly-standarta-obd2
С поиском протколов уже гораздо все хуже. Так как у меня этот протокол, так и буду описывать только его.
OBD2 распиновка — prohelps.ru/raspinovka-obd2-razema/
ELM327, описание АТ команд — www.sparkfun.com/datashee…ts/ELM327_AT_Commands.pdf

А теперь подключаем анализатор к тестовому компьютеру двигателя Toyota 2ZZ-GE, и «разбираем» по полочкам данные. Они такие:

MiAAAgF7duA 960

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

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

4. — Пример запроса «Температура охлаждающей жидкости» Первый отправляется хeдер. Это значение, которое в Torque указано командой ATSH. Далее, согласно стандарту ОДБ передается 0x01. Show current data — Считывание текущих параметров работы системы управления. После него идет сам пид датчика. Для запроса температуры ОЖ он имеет значение 0х05 Завершает запрос байт контрольной суммы. Если запрос был успешным, то ECU ответит. Если что то в запросе будет не то, то ECU просто промолчит. Ответ:

5. — Ответ начинается с хeдера ECU. Для режима опроса датчиков он всегда один и тот же, для других режимов (чтение ошибок и т.п.) он другой. После этого следует номер запрашиваемого пида для проверки и значение показания датчика. Завершает ответ байт контрольной суммы. Все.

Формула расчета показания датчика есть в таблице описания протокола ОБД на Википедии.

Данные ответа могут быть различной длинны, например в два байта, или как запрос на активные пиды у меня дает ответ в 10 байт.

Таблица пидов не всегда соответствует тому, что там написано. Производители могут что то сами мутить с адресами и отходить от стандартов. К примеру, на моторах 1ZZ-FE пид данных температуры АКПП имеет значение 0хВ4 с ответом в два байта с формулой расчета (А/256)-40, он не виден в запросе списка пидов и не выделяется цветом активного датчика в Torque

Подсчет контрольной суммы обычный классический, пример:
0х82+0х13+0хF1+0x01+0x05=0x 01 8C
Все данные запроса или приема суммируются и в итоге подсчета отсекается все, кроме первых двух бит

Ради интереса, срисовал передающую часть K-Line шины электросхемы ECU 2ZZ-GE:

28AAAgJrduA 960

Можно сказать, что схема имеет вид «открытый коллектор» с цепями защиты и легкой подтяжкой к шине питания.

OBD2 читаем и запоминаем.

b93d16s 100

m.habr.com/ru/post/444726/
Статья не моя, но коротко и ясно дана почти вся информация по обд. Советую к прочтению и сохраню для истории.

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

Изначально необходимо пояснить что для подключения к авто будет использоваться ELM327 адаптер. ELM327 – это микросхема, которая позволяет преобразовать протоколы, используемые в диагностических шинах автомобилей в протокол RS232, которым мы и будем передавать данные. За счет того что передача данных по протоколу RS232 происходит последовательно возникает первая проблема – скорости передачи данных, которую мы постараемся обойти в одном из следующих пунктов.

Читать:
Moza aircross как пользоваться

Существует несколько вариаций адаптера ELM327, которые классифицируются по способу передачи данных – Bluetooth, WIFI, USB. Исходя из того что целью разработки является мобильное устройство под операционной системой Android можно подобрать две наиболее подходящие версии ELM327, такие как Bluetooth и WIFI. Так как способ получения и обработки данных один, а отличаются они всего лишь вариантами подключения к адаптеру, то можно выбрать всего один, организовать при помощи него диалог, а после добавить остальные варианты подключения.

ELM327 1.5 vs ELM327 2.1

Одной из первых проблем, с которыми можно столкнуться стала проблема выбора непосредственно адаптера, в нашем случае Bluetooth. Оказывается если вам необходимо поддерживать все (по крайней мере большинство) автомобилей необходимо выбирать версию v1.5 вместо v2.1, что на самом то деле необходимо несколько раз уточнить при покупке адаптера, потому как продавцы пытаются выдать версию адаптера не за ту, которая есть на самом деле, т.к. они особо ничем не отличаются. На деле же в версии v2.1 отсутствует поддержка протоколов J1850 PWM и J1850 VPW, что говорит о том, что у вас не получится подключиться к автомобилям, которые используют эти протоколы.

Подключение к адаптеру происходит в несколько этапов:

Подключение к адаптеру (Bluetooth, WIFI)
Отправка инициализационных команд (инициализационной строки)

Если с организацией подключения все понятно. Принцип работы такой же как и у любого Bluetooth/WIFI чата. То для того чтоб понять как отправлять инициализационную строку, необходимо изучить какие команды существуют, а также какие функции они выполняют.

AT Z [reset all]
Сброс настроек адаптера до заводского состояния.
AT L1-0
Включить/Отключить символы перевода строки.
AT E1-0
Echo on – off
AT H1-0
Headers on – off
AT AT0-1-2
Adaptive Timing Off — adaptive Timing Auto1 — adaptive Timing Auto2
AT ST FF
Установить таймаут на максимум.
AT D [set all to Default]
Сброс настроек в исходное, настроенное пользователем состояние.
AT DP [Describe the current Protocol]
Сканер способен самостоятельно определять протокол автомобиля, к которому он подключен.
AT IB10 [set the ISO Baud rate to 10400]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 10400
AT IB96 [ set the ISO Baud rate to 9600]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 9600 для протоколов 3,4,5.
AT SP h [ Set Protocol h]
Команда выбора протокола h, где h:

0 – Automatic;
1 — SAE J1850 PWM (41.6 Kbaud);
2 — SAE J1850 VPW (10.4 Kbaud);
3 — ISO 9141-2 (5 baud init, 10.4 Kbaud);
4 — ISO 14230-4 KWP (5 baud init, 10.4 Kbaud);
5 — ISO 14230-4 KWP (fast init, 10.4 Kbaud);
6 — ISO 15765-4 CAN (11 bit ID, 500 Kbaud);
7 — ISO 15765-4 CAN (29 bit ID, 500 Kbaud);
8 — ISO 15765-4 CAN (11 bit ID, 250 Kbaud);
9 — ISO 15765-4 CAN (29 bit ID, 250 Kbaud);
AT SP Ah [Set Protocol h with Auto]

Команда устанавливает по умолчанию протокол h, если подключение по протоколу h не удалось, тогда адаптер начинает автоматический подбор протокола.

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

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

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

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

Считывание диагностических данных

Для считывания диагностических данных используются специальные команды PID’s.
PID (Parameter id’s — Бортовые диагностические идентификаторы параметров) – коды, которые используются для запроса показателей определенных датчиков автомобиля.

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

Также есть возможность получать текущие данные от автомобиля при этом команда получения данных от авто будет иметь вначале 01, указывая на то что мы хотим получить real data. Если же мы хотим получить сохраненные данные автомобиля, то вначале команды необходимо указать 02. Например, команда для получения текущей скорости автомобиля – 010D, а для получения сохраненной скорости – 020D.

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

0100 – PIDs supported [01 — 20]
0120 – PIDs supported [21 — 40]
0140 – PIDs supported [41 — 60]
0160 – PIDs supported [61 — 80]
0180 – PIDs supported [81 – A0]
01A0 – PIDs supported [A1 — C0]

Я продемонстрирую как определить какие датчики присутствуют в автомобиле при помощи одного из пидов. Например:

0100 \\ запрос
BB1E3211 \\ ответ от авто

Переводим ответ от автомобиля в двоичную систему счисления

Используя следующую табличку можем определить какие пиды поддерживаются нашим автомобилем, начиная от 01 до 20:

Исходя из получившихся данных можем определить, что наш автомобиль поддерживает следующие пиды:

01, 03, 04, 05, 07, 08, 0C, 0D, 0E, 0F, 13, 14, 17, 1C, 20

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

Считывание и расшифровка ошибок автомобиля

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

03 – Для отображения сохраненных кодов ошибок
0A – Для отображения постоянных кодов ошибок.

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

private final static char[] dtcLetters = ;
private final static char[] hexArray = «0123456789ABCDEF».toCharArray();

private void performCalculations(String fault) else if (result.contains(«47»))
for(int begin=startIndex; begin > 6);
int ch2 = ((b1 & 0x30) >> 4);
dtc += dtcLetters[ch1];
dtc += hexArray[ch2];
dtc += workingData.substring(begin + 1, begin + 4);

if (dtc.equals(«P0000»))
troubleCodesArray.add(dtc);
>
> catch (Exception e)
>

А теперь пояснение.

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

3, 4, 5 символы формируются по этой таблице:

Исходя из этого можем попробовать разобрать следующий ответ 0001000000111110

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

Самостоятельная диагностика и прошивка ЭБУ. На примере Январь 5.1

1b1f0b2s 100

Для самостоятельной диагностики сейчас стали популярны K-Line, Wi-Fi и Bluetooth адаптеры. Последние могут только диагностировать ЭБУ. Для программирования используется K-Line адаптеры.

f8b9396s 960

b6a5396s 960

2865396s 960

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

77e5396s 960

Прошивка ЭБУ.
Для этого потребуется:
— K-line адаптер
— Программа для прошивки (я пользуюсь CombiLoader_2.1.8 )
— Шнур для подключения адаптера к ЭБУ (не обязательно)
— Аккумулятор или преобразователь на 12V (не обязательно)
— Так же если что то хотите поменять в прошивке нужна программа редактирования (я пользуюсь CTP 3.21 ) (не обязательно)
Весь софт бесплатен и свободном доступе в интернете.

95ccb96s 960

Для его изготовления шнура использовал колодку 16 Pin OBD II, тумблер, клеммы 2.8мм, термоусадка, крокодилы и пару метров проводов.

5f8d396s 960

47cd396s 960

242d396s 960

ОСТОРОЖНО: при попытке установить связь с ЭБУ, в котором находится прошивка, защищенная от считывания, содержимое этой прошивки будет потеряно! Восстановить исходную прошивку будет невозможно. У меня как раз была залита такая прошивка и она стерлась при попытке подключения. Пришлось заливать заводскую серийную прошивку.

de7d396s 960

c8fd396s 960

c883396s 960

1fdd396s 960

Комментарии 18

d83d564s 60

Подскажи на счет самообучения. В установках прошивки количество циклов самообучения что написано, сколько их? И после завершения этого периода самообучения он начнется заново, или процесс самообучения завершится?

1b1f0b2s 60

Существуют 2 таблицы памяти обучения:

TABKF — используется в том случае, если нет продувки адсорбера
TABKFADS — используется в режиме продувки адсорбера

Коэффициент регулирования запоминается в таблице, если система зафиксировала 4 устойчивых переключения уровня сигнала ДК при изменении текущего KP на величину +/- Шага изменения KP при переходе.

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

(FREQ +/- Допуск на стационарность для обучения; GBC +/- Допуск на стационарность для обучения)

где:
FREQ — квантование оборотов на 16
GBC — квантование расхода воздуха на 16

в течение времени Число стабильных циклов для обучения.

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

TABKF = TABKF + KP
TABKFADS = TABKFADS + KP

в других точках также производится коррекция:

TABKF[i, j] = TABKF + KP * KLAM / MAX

где:
TABKF[i, j] — соседняя ячейка в таблице (по оборотам)
TABKF — текущая ячейка
KP — текущий коэффициент регулирования
KLAM — Градиент таблицы обучения
MAX — максимальное отклонение режимной точки, для которой просчитывается новое значение от текущей

Новая коррекция таблиц TABKF и TKFADS запрещается, пока не прошла текущая коррекция. Время коррекции составляет 256 ячеек * 20мс = 5.12 cек.
Градиент таблицы обучения – определяет степень изменения соседних точек в памяти обучения. от него зависит на сколько далеко точки соседние будут корректироваться.

Как узнать протокол эбу автомобиля

Диагностика бортового оборудования OBD-II

Назначение выводов разьема приведено в таблице. Использование контактов 1, 3, 8, 9, 11-13 стандартом SAE не определо и производили могут использовать их по своему усмотрению.

Контакт Назначение
1 Не определен
2 Положительня линия SAE J1850
3 Не определен
4 Корпус
5 Общий
6 CAN(H)ISO 15765
7 K линия ISO 9141/14230
8 Не определен
9 Не определен
10 Отрицательная линия SAE J1850
11 Не определен
12 Не определен
13 Не определен
14 CAN(L) ISO 15765
15 L линия ISO9141/142300
16 +12 вольт батареи

Что может дать OBD-II? Достаточно много, он позволяет определять и стирать коды неисправности, контролировать параметры работы двигателя в реальном времени, считывать информацию о серийном номере автомобиля и пр. Однако для чип-тюнинга производители используют собственные нестандартные проколы достула к ЭБУ, совместимые по электрических параметрам с ISO 9141/14230, например KW1281 (Audi, Volkswagen, Seat, Skoda), KW71 (BMW), KW82 (Opel). В новых автомобилях используется CAN протокол как для OBD-II так и для чип-тюнинга.

Выводы разъемы для Toyota/Lexus, источник pinoutsguide.com

Поддерживает ли мой автомобиль OBD-II?

Как определить какой протокол поддерживает электронным блоком управления автомобиля? Первое – можно поискать информацию в Инернете, хотя там много неточной и непроверенной информации. К тому же, многие автомобили выпускаются для разных рынков с различными протоколами диагностики. Второе – найти разьем и посмотреть какие контакты в нем присуствуют. Разьем обычно находистя под приборной панелью со стороны водителя. Протокол ISO 914-2 или ISO 14230-4 определяется наличием контакта 7 и отсуствием контактов 2 и 10, как показано в таблице. Замечу, что контакта 15 скорее всего не будет, так как L линия сегодня почти не используется.

Протокол Pin 2 Pin 6 Pin 7 Pin 10 Pin 14
ISO 9141/14230 +
J1850 PWM + +
J1850 VPW +
ISO 15765 CAN + +

EOBD стал стандартом в Европе начиная с 2001 года, а для дизельных двигателей начиная с 2004. Если ваш автомобиль выпущен до 2001 года то он может вообще не поддерживать OBD даже при наличии соответсвуещего разьема! Евросоюз даже оштрафовал Peugeot за не соответвие EOBD стандарту и после 2001 года. Например, Renault Kangoo 99 года не поддерживает EOBD, а Renault Twingo поддерживает! Те же самые автомобили сделанные для других рынков, например Турции, могут тоже не быть совместимыми с OBD протоколом. Вот далеко не полный список ЭБУ до 2001 года которые могут не поддерживать OBD:

OBD II Руководство пользователя

$02 (Freeze Frame)

$03 (Read Stored DTC)

Сканер производит запрос на считывание кодов неисправностей из памяти блока управления, а блок соответственно эти коды либо выдает, либо пишет, что их нет. Вполне традиционная и наиболее употребляемая диагностами всего мира процедура. Для кодов стандарта OBD II была разработана удобная и информативная система обозначений – буква и четыре цифры (см. рис 1). Эту систему безоговорочно приняло большинство автопроизводителей, причем не только для OBD II, но и для ОЕМ-протоколов. Первая позиция (то есть буква) обозначает тип системы – P (Powertrain), C (Chassis), B (Body) и U (Network). На рынке пока не так много автомобилей, у которых токсичность зависит от работы, например кузовных систем (хотя это абсолютно реально!). Как уже говорилось выше, практическое использование протокола OBD II пока в большей степени ориентировано на силовой агрегат, поэтому речь пойдет о кодах группы Р. Вторая позиция отвечает за степень «крутизны» кода. Все коды с нулевым расширением (Р0) являются базовыми (их еще называют Generic). Один и тот же базовый код описывает одинаковую неисправность, вне зависимости, с какого автомобиля производится считывание. Например, код Р0102 означает одну и ту же проблему для любого автомобиля, поддерживающего требования OBD II / EOBD – низкий уровень сигнала датчика расхода воздуха. Сканер уровня GST может считывать и расшифровывать только коды группы P0. Расширенные коды (Р1ххх, Р2ххх и т.п.), даже если имеют одинаковый номер, имеют разную расшифровку для разных производителей. Например, для Mazda код P1101 означает отклонения от нормы уровня сигнала датчика расхода воздуха, а аналогичный код для Mitsubishi – наличие проблем в цепи вакуумного соленоида противо-буксовочной системы. Пока такие коды являются привилегией производителей автомобилей и это, конечно, создает проблемы для независимых СТО. Расшифровка ОЕМ-кодов под силу только весьма продвинутым OBD-II приборам, хотя следует признать, что даже хорошие универсальные сканеры, работающие по заводским протоколам с этой задачей справляются далеко не всегда (дилерские приборы естественно не в счет). Однако постепенно ситуация меняется в лучшую сторону. Третья позиция (или вторая цифра) в обозначении кода призвана идентифицировать определенную функцию, выполняемую блоком управления, либо подсистему блока, а именно: 1 – измерение нагрузки и дозирование топлива; 2 – подача топлива, система наддува; 3 – система зажигания и регистрация пропусков воспламенения смеси; 4 – системы уменьшения токсичности; 5 – система холостого хода, круиз-контроль, система кондиционирования; 6 – внутренние цепи и выходные каскады блока управления; 7 и 8 – трансмиссия (АКП, сцепление и т.п.) Ну и, наконец, четвертая и пятая позиции – это собственно номер кода, идентифицирующий цепь или компонент.

$04 (Clear/information)

$05 (O 2 monitoring test results)

$06 (Monitoring test results for noncontinuously monitored systems)

$07 (Monitoring test results for continuously monitored systems)

$08 (Bidirectional controls)

$09 (Vehicle information)

Описание интерфейса универсального сканера ELM327.
Схема подключения сканера ELM327.
PID’ы Toyota/Lexus.

Протоколы стандарта OBD2

В рамках диагностического стандарта OBDII существует 5 основных протоколов обмена данными между электронным блоком управления (ЭБУ) и диагностическим сканером. Физически подключение автосканера к ЭБУ производится через разъем DLC (Diagnostic Link Connector), который соответствует стандарту SAE J1962 и имеет 16 контактов (2×8). Ниже представлена схема расположения контактов в разъеме DLC (рисунок 1), а также назначение каждого из них.

Рисунок 1 – Расположение контактов в разъеме DLC (Diagnostic Link Connector)

1. OEM (протокол производителя).

Коммутация +12в. при включении зажигания.

9. Линия CAN-Low, низкоскоростной шины CAN Lowspeed.

2. Шина + (Bus positive Line). SAE-J1850 PWM, SAE-1850 VPW.

10. Шина — (Bus negative Line). SAE-J1850 PWM, SAE −1850 VPW.

4. Заземление кузова.

5. Сигнальное заземление.

6. Линия CAN-High высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).

14. Линия CAN-Low высокоскоростной шины CAN Highspeed (ISO 15765-4, SAE-J2284).

7. K-Line (ISO 9141-2 и ISO 14230).

15. L-Line (ISO 9141-2 и ISO 14230).

16. Питание +12в от АКБ.

Назначение неопределенных контактов выбирается на усмотрение производителя автомобиля. Разъем должен быть расположен не далее, чем в 2 футах (0.61 метра) от рулевого колеса.

Иногда разъем OBD-II устанавливается на автомобили, которые в принципе не поддерживают ни один из OBD-II-протоколов. В таких случаях необходимо использовать специальный сканер, рассчитанный на работу с заводскими протоколами конкретной марки автомобиля — например, это касается Opel Vectra и некоторых автомобилей европейского рынка 1996-1997 гг.

Также бывают обратные ситуации, когда на автомобиле установлен нестандартный разъем, но при этом автомобиль поддерживает один из диагностических протоколов OBD-II.

Далее подробно рассмотрим формат и физический уровень каждого протокола связи в рамках стандарта OBDII.

SAE J1850 PWM

Существует два типа протокола J1850. PWM является высокоскоростным и обеспечивает передачу информации со скоростью 41,6 Кбайт/с. Он применяется в автомобилях марок Ford, Jaguar и Mazda. В протоколе PWM сигналы передаются по двум проводам, подсоединенным к 2 и 10 контакту диагностического разъема.

Формат сигнала протокола J1850 включает:

SOF — Start of Frame (начало кадра, высокий импульс на 200uS);

Header — заголовок длиной 1 байт;

CRC — Cyclic Redundancy Check (циклический избыточный код, 1 байт);

EOD — End Of Data (окончание данных, низкий импульс на 200uS).

Формат сигнала протокола J1850

Если рассматривать формат протокола более подробно по битам, то он примет следующий вид:

Формат сигнала протокола J1850 по битам

Реальный пример сигнала SAE J1850 выгладит следующим образом:

Реальный пример сигнала SAE J1850

SAE J1850 VPW

Протокол VPW осуществляет передачу данных со скоростью 10,4 Кбайт/с, что существенно медленнее, чем у протокола PWM. Формат данного протокола идентичен SAE J1850 PWM . Данный протокол используется на автомобилях General Motors (GM) и Chrysler. VPW предусматривает обмен данными по одному проводу, подсоединенному ко 2 контакту диагностического разъема. Длина шины может достигать 35 метров.

ISO 9141-2

Данный протокол разработан компанией ISO. Он не такой сложный, как протоколы J1850 и не требует в использовании специальных коммуникационных микропроцессоров, но, с другой стороны, обеспечивает довольно медленную передачу данных со скоростью 10 Кбайт/c. Протоколы ISO 9141 и ISO 14230 схожи по физической реализации обмена информацией, но различаются ее использованием. Поэтому сканер ISO 9141, обычно может работать и с ISO 14230, но не наоборот.

В протоколе ISO 9141-2 сигналы передаются по 7 контакту (К-линия) и опционально по 15 контакту (L-линия). К-линия является двунаправленной (т.е. передает данные в обе стороны), L-линия однонаправленная и используется лишь для соединения ЭБУ и сканера, после чего линия L переходит в состояние логической единицы.

Физический уровень передачи информации в протоколах ISO 9141 и ISO 14230 заключается в одновременной передачи ЭБУ специального 8-битного кода по К- и L-линиям со скоростью 5Б/сек. Если код правильный, то ЭБУ посылает сканеру 8-битный код со скоростью последующего соединения. Затем передается еще два кода с информацией о последующем соединении и расположении К- и L-линий. Сканер возвращает отражение этих кодов в ЭБУ. На этом процесс распознавания окончен.

В общем виде процесс инициализации сигнала в протоколах ISO 9141 и ISO 14230 выглядит следующим образом:

Настройка скорости обмена данными в протоколе ISO 9141

Передача данных в протоколе осуществляется по следующей схеме:

Передача данных в протоколе ISO 9141

ISO 14230-4 (др. название Keyword Protocol 2000)

На физическом уровне данный протокол идентичен ISO 9141, но является еще более медленным (скорость передачи данных от 1,2 до 10 Кбайт/c в быстрой версии).

ISO 15765 CAN

CAN-протокол был разработан компанией Bosch для автомобильного и промышленного применения. В рамках стандарта OBD2 протокол использует линии CAN High и CAN Low, т.е. 2 контакта для обмена сигналом: 6 и 14. Является самым скоростным и совершенным. Сейчас данный протокол используется на большинстве современных автомобилях. Стандарт CAN не регламентирует определенной скорости работы для каждой шины в автомобиле. С помощью отдельных и встроенных микроконтроллеров есть возможность менять ее от 20 Кбит/c до 1 Мбит/с. Более подробно CAN рассмотрен в статье CAN-шина и CAN-интерфейс.

Команда EmbeddedSystem занимается разработкой широкого спектра электронной продукции, включая разработку и производство электроники для автомобилей, автобусов и грузовиков. Возможна разработка и поставка электроники, как на коммерческих, так и на партнерских условиях. Звоните! Примеры проектов.

Похожие публикации