mc 33290 и k-line адаптер ??? Вопрос

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Доброго времени суток. Подскажите, кто-нить собирал связку Arduino UNO+mc33290?? Получалось ли собрать k-line адаптер??? И как  mc33290 проверить на работоспособность?? есть сомнения в работоспособности    

MaksVV
Offline
Зарегистрирован: 06.08.2015

Собирайте эту схему, она рабочая, к тому же копеечная и доступчная по сравнению с дорогой и деффицитной  mc33290

MaksVV
Offline
Зарегистрирован: 06.08.2015

работоспособность проверяется с помощью ещё одного к-лайн адаптера. 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Вот ответ на вопроса заголовка темы :) Данное сообщение (3)подправлено, для того чтобы люди могли сразу найти ответ не перечитывая сообщения. На руках у меня 4-ре рабочих микросхемы mc33290 и 4-ре рабочих схемы L9637D. Проверил их через модуль FTDI заказанный из Китая. Вместо постоянного сопротивления стояли подстроечные резаки номиналом 10К. Сопротивление выставлял на угад, потом замерял :) на L9637D было 900R, на mc33290 было 2,2K. А вот с ардуинкой и софтсериалом еще не подружил.  На картинке сопротивление между ногами !!рабочих микросхем, между остальными глухо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Желтый-черный - это 12 Вольт. 5 Вольт - красный-черный. Вы уверены, что ничего не перепутали?

MaksVV
Offline
Зарегистрирован: 06.08.2015

покажите схему как соединили. В ком порту логика совсем не такая, которая нужна.  Т.е. нужна TTL (0, 5V), 

а в вашем случае, в ком порту  (-12V, +12V), так и дуню спалить не долго

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

покажите схему как соединили. В ком порту логика совсем не такая, которая нужна.  Т.е. нужна TTL (0, 5V), 

а в вашем случае, в ком порту  (-12V, +12V), так и дуню спалить не долго

В самодельном шнурке выход компорта-мама. Беру проводок папа-папа и соеденяю дуню с ком-портом. Пробую запустить тест в программе Vag-com.... Что-то стал ей не доверять.. У меня два сомодельных шнурка и оба рабочие, но один перестал видеться  Vag-com. Но через другую программу делает диагностики Eberschpecher. Как-то пару раз даже писал, что адаптер исправен когда соеденил дуню и ком-порт.

А вот, что интересное.. На одном шнуре стоят диоды на RX и TX. В исходном положении они не горят, как только делаешь запрос(через встроеный ком-порт ноута) начинают моргать..... Когда же соеденил проводками RX,TX,GND и дуню на теже выходы,  RX,TX горят постоянно...не зависимо подано питание на шнур или нет.. и когда делаешь запрос то моргают... значит линии работают, только где-то затираются данные....

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

 

По поводу mc33290. Наверное Китаец мне не рабочую прислал. Так как ставлю одну ногу на GND, вторую на ноги с противоположной стороны... все четыре показывают полностью одинаковое сопротивление. 

Есть еще один вариант... у меня есть китайский синий шнурок.. может найти и туда подпоять проводки на rx и tx  

MaksVV
Offline
Зарегистрирован: 06.08.2015

Не понятно цели подключения ардуино к к-лайн. Если вы хотите подключить ваш ком-К-лайн адаптер к компу в юсб порт через ардуино, то нужно подключаться к Тх Rx вашего к-лайн адаптера до! микросхемы max232. При этом ее нужно выпаять или убрать.

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:
Не понятно цели подключения ардуино к к-лайн. Если вы хотите подключить ваш ком-К-лайн адаптер к компу в юсб порт через ардуино, то нужно подключаться к Тх Rx вашего к-лайн адаптера до! микросхемы max232. При этом ее нужно выпаять или убрать.

Понял Вас. Но на следуеще недель товарищ запаяет мне схему которую вы сбросили. Говорит, что раньше паял такие. очень хорошая. Если в друг что-то пойдет не так, то возьмем синий калайн шнурок выведем tx,rx, дорожки перережем от общей схемы шнурка. Ну точнее сказать сделаем через кнопку что бы было все, как у людей )))

Цель всего этого сыр-бора вы уже знаете, что бы делать и обрабатывать запросы адруинкой. Готов на это потратить время и силы. Как Вы мне и говорили главное законнектиться ))) 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Запаял мне товарищ такую схему, только на микросхеме 293. По даташит смотрели, что отличаются они только температурным режимом работы. Как и всегда подсоеденился к UNO. Самые распространенные программы диагностики типа vcds, vag-com это чудо не видят. Когда подсоеденил к машине RX и TX моргают постоянно.  Получилось сделать запросы через такую программу к Eberschpecher:
  

Появились какие-то данные. На что программа отриагировала ответом, что не может распознать их. Потом после некоторго времени колдования получилось сделать еще раз запрос, тот же результат. Закономерность пока не нашел, когда выходит блок на связь. я так понимаю надо попытаться найти какую самую простую прогу для диагностики, что работает с com-портом..или как я и писал выше вывести RX и TX с шнурка vag409. Тогда можно будет убедиться на 100% над  чем колдовать, над самой ардуино или собранной схемой.

Вот такой ёжик получился:

MaksVV
Offline
Зарегистрирован: 06.08.2015

подключаете vag 409 какой нибудь программой к автомобилю чтобы диагностика работала! Параллельно подсоединяете к контакту 7  vag409 (и массу не забываем!!!)   свой собранный адаптер и смотрете идут ли байты на линии К-лайн чтобы проверить работоспособность вашего адаптера. тут скетч и как подключить собранный адаптер к ардуино

MaksVV
Offline
Зарегистрирован: 06.08.2015

taha17 пишет:

Запаял мне товарищ такую схему, только на микросхеме 293. По даташит смотрели, что отличаются они только температурным режимом работы. Как и всегда подсоеденился к UNO. Самые распространенные программы диагностики типа vcds, vag-com это чудо не видят. Когда подсоеденил к машине RX и TX моргают постоянно.  Получилось сделать запросы через такую программу к Eberschpecher:
  

Появились какие-то данные. На что программа отриагировала ответом, что не может распознать их. Потом после некоторго времени колдования получилось сделать еще раз запрос, тот же результат. Закономерность пока не нашел, когда выходит блок на связь. я так понимаю надо попытаться найти какую самую простую прогу для диагностики, что работает с com-портом..или как я и писал выше вывести RX и TX с шнурка vag409. Тогда можно будет убедиться на 100% над  чем колдовать, над самой ардуино или собранной схемой.

Вот такой ёжик получился:

а какой скетч вы использовали при этом?

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

поверх физического, прописал еще программный. 

Попробую еще скетч, что вы мне сбросили. Еще такой вопрос: Если придется к  409 подсоедениться, то 12V не подсоеденяю, подсоеденяю только k-line и GND ??
 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(0,1); // RX, TX

void setup()
{
// Инициализируем последовательный интерфейс и ждем открытия порта:
Serial.begin(9600);
//while (!Serial){}

Serial.println("Goodnight moon!");

// устанавливаем скорость передачи данных для последовательного порта, созданного
// библиотекой SoftwareSerial
mySerial.begin(9600);
mySerial.println("Hello, !!!!!");
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

taha17 пишет:

поверх физического, прописал еще программный. 

Попробую еще скетч, что вы мне сбросили. Еще такой вопрос: Если придется к  409 подсоедениться, то 12V не подсоеденяю, подсоеденяю только k-line и GND ??

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

да +12В тоже надо. И этот скетч используется с монитором порта , а не с другими программами. Заметьте Tx и Rx адаптера сидят на 10 и 11 пинах, и ардуино подключено к компу юсб проводом. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

или если вы хотите всё же к программе какой нибудь подключить ваш адаптер (ну например программа eberspacher), соединяете Tx Rx на 0 и 1, при этом RST ардуино соединить с GND,  и скетч не важен какой, т.к. МК ардуино в этот момент не будет использоваться, а будет работать только переходник USB-UART встроенный в ардуино. 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

или если вы хотите всё же к программе какой нибудь подключить ваш адаптер (ну например программа eberspacher), соединяете Tx Rx на 0 и 1, при этом RST ардуино соединить с GND,  и скетч не важен какой, т.к. МК ардуино в этот момент не будет использоваться, а будет работать только переходник USB-UART встроенный в ардуино. 

Подъеду домой, то попробую ))) И еще...., по поводу 409 вместе в ардуиной. .... В терминале ардуины, я так понимаю, должны дублироваться  все запросы и ответы от 409 шнурка ??? 

MaksVV
Offline
Зарегистрирован: 06.08.2015

да должны

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Заюзал вот. Ответ таков:

1. Вариант Rx(0)Tx(1), при RESET+GND/// Не заработал.

2. Вариант с Rx(10)Tx(11)+Код который вы мне подогнали+шнур 409+схема с 293 - РАБОТАЕТ. Скорость я выставил на 9600. Завтра попробую и с другими скоростями. Можно в скетч кидать на 0 и 1 пины, он тоже работает если отсоеденить ножку TX. Если не отсоеденять, то получиться бесконечность квадратиков.

Удивило то, что данные посыпались как бесконечность. Одну проблему можно сказать решили... на половину.. осталось избавиться от шнурка 409.. скоро должны придти mc33290... и пока они идут надо плавно переходить к  написанию запросов в нужные блоки. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

taha17 пишет:
Удивило то, что данные посыпались как бесконечность. 

дак когда сеанс связи идёт так и должно быть

taha17 пишет:

осталось избавиться от шнурка 409

ещё рано, вы ещё не разобрали протокол обмена, а это самое сложное. 

taha17 пишет:

скоро должны придти mc33290... 

лучше уж L9637D. Просто если LM393 работает, зачем ждать эти дорогие микрухи? 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

На драйв2 у одно умельца есть исходники с разведенной платой под mc33290. Мож обвязвать меньше надо.
Тут вот часть информации по протоколу:
http://obdcon.sourceforge.net/2010/06/obd-ii-pids/

Буду еще в нете копать.

еще пару страниц, вроде везде одинаково все.

https://github.com/digitalbond/canbus-utils/blob/master/obdii-pids.json
https://ru.wikipedia.org/wiki/OBD-II_PIDs

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

Сложности вы нашли не там где они есть. Преобразование уровней сигнала как раз сложностей не вызывает, нормально работают с большинством блоков схемы вообще на трех транзисторах. Сложности начнутся когда захотите связаться с блоком. И узнаете, что большинство блоков работает на нестандартной для СОМ-порта скорости 10400. Физический СОМ-порт легко настраивается на работу с такой скорость, а вот виртуальные порты usb-com с такой скоростью "из коробки" работать не умеют. Некоторые можно научить редактированием драйверов, внесением изменений в прошивку чипа и т.п. Другие не способны работать со скоростью 10400. И к последним как раз относится широко распространенный в китайских клонах Ардуин CH340. Большинство FT232 умеют при выставленной скорости 9600 подтягивать ее до нужной, но это не гарантируется, тем более для китайских копий этого чипа. Вот когда разберетесь со скоростью, тогда уже беритесь за протоколы, синхронизации, тайминги и прочие прелести обмена.

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Alex_Sk пишет:
Сложности вы нашли не там где они есть. Преобразование уровней сигнала как раз сложностей не вызывает, нормально работают с большинством блоков схемы вообще на трех транзисторах. Сложности начнутся когда захотите связаться с блоком. И узнаете, что большинство блоков работает на нестандартной для СОМ-порта скорости 10400. Физический СОМ-порт легко настраивается на работу с такой скорость, а вот виртуальные порты usb-com с такой скоростью "из коробки" работать не умеют. Некоторые можно научить редактированием драйверов, внесением изменений в прошивку чипа и т.п. Другие не способны работать со скоростью 10400. И к последним как раз относится широко распространенный в китайских клонах Ардуин CH340. Большинство FT232 умеют при выставленной скорости 9600 подтягивать ее до нужной, но это не гарантируется, тем более для китайских копий этого чипа. Вот когда разберетесь со скоростью, тогда уже беритесь за протоколы, синхронизации, тайминги и прочие прелести обмена.

Несомненно все косяки впереди.  Уйдет много времени и сил. Но не хочется финишировать на старте ))) Буду пытаться идти мелкими, пусть даже очень мелкими шагами вперед. Уж сильно хочется видеть в своей тачке бортовик. 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Alex_Sk пишет:
Сложности вы нашли не там где они есть. Преобразование уровней сигнала как раз сложностей не вызывает, нормально работают с большинством блоков схемы вообще на трех транзисторах. Сложности начнутся когда захотите связаться с блоком. И узнаете, что большинство блоков работает на нестандартной для СОМ-порта скорости 10400. Физический СОМ-порт легко настраивается на работу с такой скорость, а вот виртуальные порты usb-com с такой скоростью "из коробки" работать не умеют. Некоторые можно научить редактированием драйверов, внесением изменений в прошивку чипа и т.п. Другие не способны работать со скоростью 10400. И к последним как раз относится широко распространенный в китайских клонах Ардуин CH340. Большинство FT232 умеют при выставленной скорости 9600 подтягивать ее до нужной, но это не гарантируется, тем более для китайских копий этого чипа. Вот когда разберетесь со скоростью, тогда уже беритесь за протоколы, синхронизации, тайминги и прочие прелести обмена.

не всегда связь обмена с ЭБУ идёт на скорости 10400. Но даже если это так, тот К-лайн сниффер, который ТС уже использует, не имеет прямого USB-UART переходника. Ардуино подключается к к-лайн на скорости 10400 софтсериал соединением, а дальше данные перебрасываются уже на стандартный хардовый сериал и по юсб проводу идут на монитор порта на какой хочешь стандартной скорости (см . скетч сниффера).  

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

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

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Начал вот читать тему где вы с товарищем БК для зафиры делалии. Остановился на 10 сообщении в теме.

http://arduino.ru/forum/proekty/bortovoi-kompyuter-dlya-opel-zafira#comment-285048

Там вот сказано про программу FindECU, которая помогает найти адрес ЭБУ и Адаптера. НЕ могу найти эту прогу.

Я вот попытался обратиться к нескольким блокам и сравнить запросы. В начале есть кое-какие повторения. Может отсюда что можно извлечь ??? Буду благодарен за любую помощь... Нопомню, что все делается через программу дианостики и k-line шнур, а ардуинка все(или не все) перехватывает.

 

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

судя по обмену первое сообщение начинается с байта 75h. и далее идет байт и за ним инвертируемый байт пока не появится байт 03h.

Далее сообщения начинаются уже не с 75, а с 03h. Т.е. байт 03h это начало и конец сообщения. Всё имхо. 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

кстати чтобы узнать инвертированное значение байта, Нужно в виндовом калькулятое открыть режим программист, сделать 16 ричное исчисление (HEX), вводить значение байта и нажимать кнопку XOR и даллее байт FF и нажимаем равно - получим инвертированный байт

MaksVV
Offline
Зарегистрирован: 06.08.2015

Судя по всему 55 01 8A это запрос инициализации от диагностики. Далее ЭБУ отвечает  байтом 75 , после чего диагностика посылает адрес блока , если нам нужен двигатель, то можно предположить что это 1B. А для остальных блоков этот байт 0F. Далее видимо ЭБУ шлёт начальные идентификационные данные, а диагностика отвечает инвертированными байтами на каждый байт ЭБУБайт 03 это конец сообщения. 

Вот перевел в ASCII кодировке ваш представленный ответ от ЭБУ двигателя:   ​028906021GT 1,9l EDC 

есть знакомые символы? если посмотреть на картинку #17 то есть))

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

Судя по всему 55 01 8A это запрос инициализации. Далее ЭБУ отвечает  байтом 75 , после чего диагностика посылает адрес блока , если нам нужен двигатель, то можно предположить что это 1B. А для остальных блоков этот байт 0F. Далее видимо ЭБУ шлёт начальные идентификационные данные, а диагностика отвечает инвертированными байтами на каждый байт ЭБУБайт 03 это конец сообщения. 

Вот перевел в ASCII кодировке ваш представленный ответ от ЭБУ двигателя:   ​028906021GT 1,9l EDC 

есть знакомые символы? если посмотреть на картинку #17 то есть))

Я тут еще перевариваю информацию, что вы мне написали ))))) Вот картинка моего ЭБУ, он же и есть блок управления двигателем 

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот еще что есть в ответном сообщении G41SG  1906. Эти символы тоже есть в программе Vag

MaksVV
Offline
Зарегистрирован: 06.08.2015

Скиньте потом сюда сниф обмена с ЭБУ двигателя всё с таймштампами. Только  как скетч и сверните (там во вкладе галочку нужно поставить)

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

Скиньте потом сюда сниф обмена с ЭБУ двигателя всё с таймштампами. Только  как скетч и сверните (там во вкладе галочку нужно поставить)

 
Через программу Vag-com:

28693ms
 FC
311ms
 F1 F0 FC FD
876ms
 D D 41
805ms
 54 D
127ms
 0
1156ms
 0
399ms
 0
1808ms
 55 1 8A
290ms
 55 1 8A
290ms
 55 1 8A
483ms
 0
398ms
 0
1805ms
 55 1 8A
67ms
 75 1B E4 1 FE
59ms
 F6 9 30 CF 32 CD 38
54ms
 C7
2888ms
 0
399ms
 0
1806ms
 55 1 8A
66ms
 75 1B E4 1 FE
59ms
 F6 9 30 CF 32 CD 38 C7
65ms
 39 C6 30 CF 36 C9 30
52ms
 CF 32 CD 31 CE 47 B8
58ms
 54 AB 20 DF 31 CE 2C D3
64ms
 39 C6 6C 93 20 DF 52
52ms
 AD 34 CB 20 DF 45 BA
59ms
 44 BB 43 BC 20 DF 3
119ms
 3 FC 2 FD 9 F6 3
73ms
 7 F8 3 FC F6 9 20
53ms
 DF 47 B8 34 CB 31 CE
60ms
 3
60ms
 3 FC 4 FB 9 F6
57ms
 3 B F4 5 FA
59ms
 F6 9 53 AC 47 B8 20
53ms
 DF 20 DF 31 CE 39 C6
58ms
 30 CF 36 C9 3
105ms
 3 FC 6 F9 9 F6 3
71ms
 8 F7 7 F8 F6 9 0
54ms
 FF 0 FF 4 FB 0 FF
58ms
 14 EB 3
156ms
 3 FC 8 F7 9
54ms
 F6 3 3 FC 9 F6
61ms
 9 F6 3
88ms
 3 FC A F5 9 F6 3
72ms
 3 FC B F4 9 F6 3
118ms
 3 FC C F3 9 F6 3
75ms
 3 FC D F2 9 F6 3
114ms
 3 FC E F1 9 F6 3
77ms
 3 FC F F0 9 F6 3
106ms
 3 FC 10 EF 9 F6 3
70ms
 3 FC 11 EE 9 F6 3
116ms
 3 FC 12 ED 9 F6 3
77ms
 3 FC 13 EC 9 F6 3
110ms
 3 FC 14 EB 9 F6
55ms
 3 3 FC 15 EA
56ms
 9 F6 3
75ms
 3 FC 16 E9 9
54ms
 F6 3 3 FC 17 E8
62ms
 9 F6 3
89ms
 3 FC 18 E7 9 F6 3
73ms
 3 FC 19 E6 9 F6 3
114ms
 3 FC 1A E5 9 F6 3
79ms
 3 FC 1B E4 9 F6 3
106ms
 3 FC 1C E3 9
54ms
 F6 3 3 FC 1D E2
61ms
 9 F6 3
71ms
 3 FC 1E E1 9 F6 3
74ms
 3 FC 1F E0 9 F6 3
113ms
 3 FC 20 DF 9 F6
53ms
 3 3 FC 21 DE
57ms
 9 F6 3
78ms
 3 FC 22 DD 9 F6
57ms
 3 3 FC 23 DC
56ms
 9 F6 3
80ms
 3 FC 24 DB 9 F6
56ms
 3 3 FC 25 DA
57ms
 9 F6 3
89ms
 3 FC 26 D9 9 F6 3
72ms
 3 FC 27 D8 9 F6 3
110ms
 3 FC 28 D7 9 F6
56ms
 3 3 FC 29 D6
57ms
 9 F6 3
79ms
 3 FC 2A D5 9 F6
56ms
 3 3 FC 2B D4
56ms
 9 F6 3
86ms
 3 FC 2C D3 9 F6 3
76ms
 3 FC 2D D2 9 F6 3
113ms
 3 FC 2E D1 9 F6 3
78ms
 3 FC 2F D0 9 F6 3
106ms
 3 FC 30 CF 9
54ms
 F6 3 3 FC 31
53ms
 CE 9 F6 3
102ms
 3 FC 32 CD 9
54ms
 F6 3 3 FC 33 CC
61ms
 9 F6 3
86ms
 3 FC 34 CB 9 F6 3
76ms
 3 FC 35 CA 9 F6 3
112ms
 3 FC 36 C9 9 F6
54ms
 3 3 FC 37 C8
56ms
 9 F6 3
72ms
 3 FC 38 C7 9 F6 3
75ms
 3 FC 39 C6 9 F6 3
115ms
 3 FC 3A C5 9 F6 3
76ms
 3 FC 3B C4 9 F6 3
110ms
 3 FC 3C C3 9 F6
56ms
 3 3 FC 3D C2
57ms
 9 F6 3
75ms
 3 FC 3E C1 9
55ms
 F6 3 3 FC 3F C0
61ms
 9 F6 3
84ms
 3 FC 40 BF 9 F6 3
78ms
 3 FC 41 BE 9 F6 3
112ms
 3 FC 42 BD 9 F6
54ms
 3 3 FC 43 BC
56ms
 9 F6 3
76ms
 3 FC 44 BB 9
52ms
 F6 3 3 FC 45
52ms
 BA 9 F6 3
98ms
 3 FC 46 B9 9 F6 3
73ms
 3 FC 47 B8 9 F6 3
111ms
 3 FC 48 B7 9 F6
54ms
 3 3 FC 49 B6
57ms
 9 F6 3
75ms
 3 FC 4A B5 9
55ms
 F6 3 3 FC 4B
53ms
 B4 9 F6 3
96ms
 3 FC 4C B3 9 F6 3
75ms
 3 FC 4D B2 9 F6 3
115ms
 3 FC 4E B1 9 F6 3
76ms
 3 FC 4F B0 9 F6 3
110ms
 3 FC 50 AF 9 F6
55ms
 3 3 FC 51 AE
58ms
 9 F6 3
71ms
 3 FC 52 AD 9 F6 3
73ms
 3 FC 53 AC 9 F6 3
117ms
 3 FC 54 AB 9 F6 3
74ms
 3 FC 55 AA 9 F6 3
116ms
 3 FC 56 A9 9 F6 3
76ms
 3 FC 57 A8 9 F6 3
111ms
 3 FC 58 A7 9 F6
56ms
 3 3 FC 59 A6
57ms
 9 F6 3
89ms
 3 FC 5A A5 9 F6 3
72ms
 3 FC 5B A4 9 F6 3
149ms
 3 FC 5C A3 9 F6 3
72ms
 3 FC 5D A2 9 F6 3
107ms
 3 FC 5E A1 9
56ms
 F6 3 3 FC 5F A0
60ms
 9 F6 3
85ms
 3 FC 60 9F 9 F6 3
76ms
 3 FC 61 9E 9 F6 3
114ms
 3 FC 62 9D 9 F6 3
78ms
 3 FC 63 9C 9 F6 3
108ms
 3 FC 64 9B 9 F6
56ms
 3 3 FC 65 9A
57ms
 9 F6 3
73ms
 3 FC 66 99 9 F6 3
72ms
 3 FC 67 98 9 F6 3
114ms
 3 FC 68 97 9 F6 3
78ms
 3 FC 69 96 9 F6 3
108ms
 3 FC 6A 95 9 F6
56ms
 3 3 FC 6B 94
57ms
 9 F6 3
73ms
 3 FC 6C 93 9 F6 3
73ms
 3 FC 6D 92 9 F6 3
114ms
 3 FC 6E 91 9 F6 3
78ms
 3 FC 6F 90 9 F6 3
112ms
 3 FC 70 8F 9 F6
53ms
 3 3 FC 71 8E
57ms
 9 F6 3
74ms
 3 FC 72 8D 9
56ms
 F6 3 3 FC 73 8C
61ms
 9 F6 3
86ms
 3 FC 74 8B 9 F6 3
76ms
 3 FC 75 8A 9 F6 3
113ms
 4 FB 76 89 29 D6 1
62ms
 FE 3 F F0
62ms
 77 88 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
58ms
 15 EA 15 EA 14 EB 4E
54ms
 B1 5 FA 9 F6 87 78
58ms
 3
71ms
 4 FB 78 87 29 D6 1
59ms
 FE 3 F F0 79 86
61ms
 E7 18 1 FE 69 96 28
54ms
 D7 27 D8 33 CC 15 EA
57ms
 15 EA 14 EB 4E B1 5
53ms
 FA 9 F6 87 78 3
102ms
 4 FB 7A 85 29 D6
58ms
 1 FE 3 F F0
56ms
 7B 84 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
57ms
 15 EA 15 EA 14 EB 4D
53ms
 B2 5 FA 9 F6 87 78
57ms
 3
65ms
 4 FB 7C 83 29 D6
54ms
 1 FE 3 F F0
57ms
 7D 82 E7 18 1 FE 69
55ms
 96 28 D7 27 D8 33 CC
57ms
 15 EA 15 EA 14 EB 53
54ms
 AC 5 FA 9 F6 87 78
57ms
 3
59ms
 4 FB 7E 81 29
54ms
 D6 1 FE 3 F F0
62ms
 7F 80 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
57ms
 16 E9 15 EA 14 EB 53
55ms
 AC 5 FA 9 F6 87 78
57ms
 3
64ms
 4 FB 80 7F 29 D6
55ms
 1 FE 3 F F0
56ms
 81 7E E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
58ms
 16 E9 15 EA 14 EB 53
54ms
 AC 5 FA 9 F6 87 78
57ms
 3
69ms
 4 FB 82 7D 29 D6 1
59ms
 FE 3 F F0 83
53ms
 7C E7 18 1 FE 69 96
59ms
 28 D7 27 D8 33 CC 16
53ms
 E9 15 EA 14 EB 4E B1
60ms
 5 FA 9 F6 87 78 3
104ms
 4 FB 84 7B 29
55ms
 D6 1 FE 3 F
53ms
 F0 85 7A E7 18 1 FE
59ms
 69 96 29 D6 27 D8 33
53ms
 CC 15 EA 15 EA 14 EB
59ms
 4D B2 5 FA 9 F6 87
53ms
 78 3
73ms
 4 FB 86 79 29 D6
56ms
 1 FE 3 F F0
57ms
 87 78 E7 18 1 FE 69
53ms
 96 28 D7 27 D8 33 CC
59ms
 16 E9 15 EA 14 EB 54
54ms
 AB 5 FA 9 F6 87 78
58ms
 3
70ms
 4 FB 88 77 29 D6 1
58ms
 FE 3 F F0 89
54ms
 76 E7 18 1 FE 69 96
58ms
 29 D6 27 D8 33 CC 15
53ms
 EA 15 EA 14 EB 55 AA
59ms
 5 FA 9 F6 87 78 3
109ms
 4 FB 8A 75 29 D6
57ms
 2 FD 3 F F0
57ms
 8B 74 E7 18 1 FE 69
53ms
 96 28 D7 21 DE FF 0
59ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 87 78
58ms
 3
64ms
 4 FB 8C 73 29 D6
55ms
 2 FD 3 F F0
57ms
 8D 72 E7 18 1 FE 69
53ms
 96 28 D7 21 DE FF 0
59ms
 0 FF 10 EF 49 B6 8
54ms
 F7 5 FA 9 F6 87 78
59ms
 3
57ms
 4 FB 8E 71 29
54ms
 D6 2 FD 3 F
53ms
 F0 8F 70 E7 18 1 FE
59ms
 69 96 28 D7 21 DE FF
53ms
 0 0 FF 10 EF 49 B6
58ms
 8 F7 5 FA 9 F6 87
54ms
 78 3
74ms
 4 FB 90 6F 29 D6
55ms
 2 FD 3 F F0
57ms
 91 6E E7 18 1 FE 69
54ms
 96 28 D7 21 DE FF 0
59ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 87 78
58ms
 3
70ms
 4 FB 92 6D 29 D6 2
58ms
 FD 3 F F0 93
55ms
 6C E7 18 1 FE 69 96
57ms
 28 D7 21 DE FF 0 0
54ms
 FF 10 EF 49 B6 8 F7
59ms
 5 FA 9 F6 87 78 3
105ms
 4 FB 94 6B 29
54ms
 D6 2 FD 3 F
53ms
 F0 95 6A E7 18 1 FE
57ms
 69 96 28 D7 21 DE FF
54ms
 0 0 FF 10 EF 49 B6
59ms
 8 F7 5 FA 9 F6 87
53ms
 78 3
72ms
 4 FB 96 69 29 D6
57ms
 2 FD 3 F F0
57ms
 97 68 E7 18 1 FE 69
54ms
 96 28 D7 21 DE FF 0
59ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 87 78
58ms
 3
71ms
 4 FB 98 67 29 D6 2
57ms
 FD 3 F F0 99
54ms
 66 E7 18 1 FE 69 96
57ms
 28 D7 21 DE FF 0 0
54ms
 FF 10 EF 49 B6 8 F7
59ms
 5 FA 9 F6 87 78 3
109ms
 4 FB 9A 65 29 D6
58ms
 2 FD 3 F F0
56ms
 9B 64 E7 18 1 FE 69
53ms
 96 28 D7 21 DE FF 0
59ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 87 78
58ms
 3
66ms
 4 FB 9C 63 29 D6
52ms
 2 FD 3 F F0
57ms
 9D 62 E7 18 1 FE 69
55ms
 96 29 D6 21 DE FF 0
57ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 87 78
59ms
 3
67ms
 4 FB 9E 61 29 D6 2
64ms
 FD 3 F F0 9F 60
60ms
 E7 18 1 FE 69 96 29
53ms
 D6 21 DE FF 0 0 FF
59ms
 10 EF 49 B6 8 F7 5
53ms
 FA 9 F6 87 78 3
100ms
 4 FB A0 5F 29
55ms
 D6 2 FD 3 F
53ms
 F0 A1 5E E7 18 1 FE
58ms
 69 96 28 D7 21 DE FF 0
65ms
 0 FF 10 EF 49 B6 8 F7
63ms
 5 FA 9 F6 87 78 3
113ms
 4 FB A2 5D 29 D6
53ms
 2 FD 3 F F0
58ms
 A3 5C E7 18 1 FE 69 96
65ms
 28 D7 21 DE FF 0 0 FF
63ms
 10 EF 49 B6 8 F7 5
54ms
 FA 9 F6 87 78 3
112ms
 4 FB A4 5B 29 D6 2
59ms
 FD 3 F F0 A5
52ms
 5A E7 18 1 FE 69 96
58ms
 28 D7 21 DE FF 0 0
53ms
 FF 10 EF 49 B6 8 F7
60ms
 5 FA 9 F6 87 78 3
109ms
 4 FB A6 59 29 D6
57ms
 2 FD 3 F F0
57ms
 A7 58 E7 18 1 FE 69
53ms
 96 29 D6 21 DE FF 0
60ms
 0 FF 10 EF 49 B6 8
52ms
 F7 5 FA 9 F6 87 78
58ms
 3
65ms
 4 FB A8 57 29 D6
53ms
 3 FC 3 F F0
58ms
 A9 56 E7 18 1 FE 69
53ms
 96 28 D7 31 CE C8 37
58ms
 4D B2 31 CE C8 37 6B 94
64ms
 17 E8 66 99 C F3 3
103ms
 4 FB AA 55 29 D6 3
56ms
 FC 3 F F0 AB
54ms
 54 E7 18 1 FE 69 96
59ms
 28 D7 31 CE C8 37 4D
52ms
 B2 31 CE C8 37 69 96
59ms
 17 E8 66 99 C F3 3
113ms
 4 FB AC 53 29 D6 3
63ms
 FC 3 F F0 AD
53ms
 52 E7 18 1 FE 69 96
58ms
 28 D7 31 CE C8 37 4D
54ms
 B2 31 CE C8 37 6B 94
59ms
 17 E8 66 99 C F3 3
116ms
 4 FB AE 51 29 D6 3
59ms
 FC 3 F F0 AF
52ms
 50 E7 18 1 FE 69 96
60ms
 28 D7 31 CE C8 37 4D
53ms
 B2 31 CE C8 37 69 96
58ms
 17 E8 66 99 C F3 3
105ms
 4 FB B0 4F 29 D6 3
55ms
 FC 3 F F0 B1
52ms
 4E E7 18 1 FE 69 96
60ms
 28 D7 31 CE C8 37 4D
53ms
 B2 31 CE C8 37 6B 94
58ms
 17 E8 66 99 C F3 3
117ms
 4 FB B2 4D 29 D6 3
60ms
 FC 3 F F0 B3
53ms
 4C E7 18 1 FE 69 96
58ms
 28 D7 31 CE C8 37 4D
52ms
 B2 31 CE C8 37 69 96
59ms
 17 E8 66 99 C F3 3
116ms
 4 FB B4 4B 29 D6 3
60ms
 FC 3 F F0 B5
53ms
 4A E7 18 1 FE 69 96
59ms
 28 D7 31 CE C8 37 4D
53ms
 B2 31 CE C8 37 6A 95
58ms
 17 E8 66 99 C F3 3
111ms
 4 FB B6 49 29 D6
55ms
 3 FC 3 F F0
57ms
 B7 48 E7 18 1 FE 69
54ms
 96 28 D7 31 CE C8 37
59ms
 4D B2 31 CE C8 37 69
53ms
 96 17 E8 66 99 C F3
59ms
 3
68ms
 4 FB B8 47 29 D6 3
60ms
 FC 3 F F0 B9
53ms
 46 E7 18 1 FE 69 96
58ms
 28 D7 31 CE C8 37 4D
52ms
 B2 31 CE C8 37 6C 93
58ms
 17 E8 66 99 C F3 3
121ms
 4 FB BA 45 29 D6 4
55ms
 FB 3 F
53ms
 F0 BB 44 E7 18 1 FE
59ms
 69 96 28 D7 1B E4 16
53ms
 E9 8C 73 1B E4 16 E9
58ms
 8F 70 17 E8 66 99 7
54ms
 F8 3
69ms
 4 FB BC 43 29 D6
60ms
 4 FB 3 F F0
57ms
 BD 42 E7 18 1 FE 69
53ms
 96 28 D7 1B E4 16 E9
59ms
 8C 73 1B E4 16 E9 8F
53ms
 70 17 E8 66 99 7 F8
58ms
 3
67ms
 4 FB BE 41 29 D6 4
61ms
 FB 3 F F0 BF 40
62ms
 E7 18 1 FE 69 96 28
54ms
 D7 1B E4 16 E9 8C 73
57ms
 1B E4 16 E9 8F 70 17
54ms
 E8 66 99 7 F8 3
104ms
 4 FB C0 3F 29 D6
56ms
 4 FB 3 F F0
57ms
 C1 3E E7 18 1 FE 69
54ms
 96 28 D7 1B E4 16 E9
57ms
 8C 73 1B E4 16 E9 8E
54ms
 71 17 E8 66 99 7 F8
58ms
 3
64ms
 4 FB C2 3D 29 D6
55ms
 4 FB 3 F F0
56ms
 C3 3C E7 18 1 FE 69
54ms
 96 28 D7 1B E4 16 E9
58ms
 8C 73 1B E4 16 E9 8F
54ms
 70 17 E8 66 99 7 F8
56ms
 3
73ms
 4 FB C4 3B 29 D6 4
57ms
 FB 3 F F0 C5 3A
62ms
 E7 18 1 FE 69 96 28
54ms
 D7 1B E4 16 E9 8C 73
56ms
 1B E4 16 E9 8F 70 17
55ms
 E8 66 99 7 F8 3
104ms
 4 FB C6 39 29 D6
56ms
 4 FB 3 F F0
57ms
 C7 38 E7 18 1 FE 69
54ms
 96 28 D7 1B E4 16 E9
56ms
 8C 73 1B E4 16 E9 8F
55ms
 70 17 E8 66 99 7 F8
57ms
 3
67ms
 4 FB C8 37 29 D6
53ms
 4 FB 3 F F0
56ms
 C9 36 E7 18 1 FE 69
54ms
 96 28 D7 1B E4 16 E9
58ms
 8C 73 1B E4 16 E9 8F
54ms
 70 17 E8 66 99 7 F8
56ms
 3
72ms
 4 FB CA 35 29 D6 5
57ms
 FA 3 F
53ms
 F0 CB 34 E7 18 1 FE
57ms
 69 96 28 D7 27 D8 33
54ms
 CC 8F 70 1B E4 16 E9
58ms
 8E 71 5 FA 9 F6 88
55ms
 77 3
72ms
 4 FB CC 33 29 D6
57ms
 5 FA 3 F F0
56ms
 CD 32 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
58ms
 8F 70 1B E4 16 E9 8E
54ms
 71 5 FA 9 F6 88 77
56ms
 3
66ms
 4 FB CE 31 29 D6
52ms
 5 FA 3 F F0
57ms
 CF 30 E7 18 1 FE 69
55ms
 96 28 D7 27 D8 33 CC
57ms
 8F 70 1B E4 16 E9 8F
54ms
 70 5 FA 9 F6 88 77
58ms
 3
72ms
 4 FB D0 2F 29 D6 5
58ms
 FA 3 F F0 D1
53ms
 2E E7 18 1 FE 69 96
59ms
 28 D7 27 D8 33 CC 8F 70
61ms
 1B E4 16 E9 8F 70 5
54ms
 FA 9 F6 88 77 3
105ms
 4 FB D2 2D 29 D6
56ms
 5 FA 3 F F0
56ms
 D3 2C E7 18 1 FE 69
55ms
 96 28 D7 27 D8 33 CC
57ms
 8F 70 1B E4 16 E9 8F
55ms
 70 5 FA 9 F6 88 77
57ms
 3
72ms
 4 FB D4 2B 29 D6 6
58ms
 F9 3 F
53ms
 F0 D5 2A E7 18 7 F8
57ms
 64 9B 0 FF 10 EF 49
54ms
 B6 40 BF 10 EF 3F C0
60ms
 23 DC 8 F7 A F5 1 FE
62ms
 3
56ms
 4 FB D6 29 29 D6 6
58ms
 F9 3 F F0 D7
53ms
 28 E7 18 7 F8 64 9B
59ms
 0 FF 10 EF 49 B6 40 BF
64ms
 10 EF 3F C0 23 DC 8 F7
64ms
 A F5 1 FE 3
99ms
 4 FB D8 27 29 D6 6
61ms
 F9 3 F F0 D9
53ms
 26 E7 18 7 F8 64 9B
59ms
 0 FF 10 EF 49 B6 40 BF
62ms
 10 EF 3F C0 23 DC 8
55ms
 F7 A F5 1 FE 3
114ms
 4 FB DA 25 29 D6 6
56ms
 F9 3 F F0 DB
53ms
 24 E7 18 7 F8 64 9B
59ms
 0 FF 10 EF 49 B6 40 BF
64ms
 10 EF 3F C0 23 DC 8
53ms
 F7 A F5 1 FE 3
105ms
 4 FB DC 23 29 D6
54ms
 6 F9 3 F F0
57ms
 DD 22 E7 18 7 F8 64
53ms
 9B 0 FF 10 EF 49 B6
58ms
 40 BF 10 EF 3F C0 23
54ms
 DC 8 F7 A F5 1 FE
58ms
 3
65ms
 4 FB DE 21 29 D6
54ms
 6 F9 3 F F0
57ms
 DF 20 E7 18 7 F8 64
53ms
 9B 0 FF 10 EF 49 B6
58ms
 40 BF 10 EF 3F C0 23
54ms
 DC 8 F7 A F5 1 FE
58ms
 3
72ms
 4 FB E0 1F 29 D6 6
58ms
 F9 3 F F0 E1 1E
61ms
 E7 18 7 F8 64 9B 0
55ms
 FF 10 EF 49 B6 40 BF
57ms
 10 EF 3F C0 23 DC 8
54ms
 F7 A F5 1 FE 3
102ms
 4 FB E2 1D 29
54ms
 D6 7 F8 3 F F0
61ms
 E3 1C E7 18 5 FA 9
55ms
 F6 78 87 11 EE 20 DF
57ms
 20 DF 5 FA 9 F6 6B
54ms
 94 5 FA 9 F6 88 77
59ms
 3
65ms
 4 FB E4 1B 29 D6 7
64ms
 F8 3 F F0 E5 1A
60ms
 E7 18 5 FA 9 F6 78
54ms
 87 11 EE 20 DF 20 DF
58ms
 5 FA 9 F6 6B 94 5
53ms
 FA 9 F6 88 77 3
113ms
 4 FB E6 19 29 D6 7
59ms
 F8 3 F F0 E7 18
62ms
 E7 18 5 FA 9 F6 78
55ms
 87 11 EE 20 DF 20 DF
57ms
 5 FA 9 F6 6B 94 5
54ms
 FA 9 F6 88 77 3
108ms
 4 FB E8 17 29 D6
52ms
 7 F8 3 F F0
57ms
 E9 16 E7 18 5 FA 9
55ms
 F6 78 87 11 EE 20 DF
57ms
 20 DF 5 FA 9 F6 6B
54ms
 94 5 FA 9 F6 88 77
58ms
 3
69ms
 4 FB EA 15 29 D6 7
60ms
 F8 3 F F0 EB 14
61ms
 E7 18 5 FA 9 F6 78
54ms
 87 11 EE 20 DF 20 DF
58ms
 5 FA 9 F6 6B 94 5
54ms
 FA 9 F6 88 77 3
98ms
 4 FB EC 13 29 D6 8
57ms
 F7 3 F F0
61ms
 ED 12 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
58ms
 0 FF 27 D8 33 CC 98
54ms
 67 27 D8 33 CC 8C 73
57ms
 3
64ms
 4 FB EE 11 29 D6
55ms
 8 F7 3 F F0
58ms
 EF 10 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
57ms
 0 FF 27 D8 33 CC 98
54ms
 67 27 D8 33 CC 8D 72
58ms
 3
69ms
 4 FB F0 F 29 D6 8
61ms
 F7 3 F F0 F1 E
62ms
 E7 18 1 FE 69 96 28
55ms
 D7 27 D8 33 CC 0 FF
57ms
 27 D8 33 CC 98 67 27
54ms
 D8 33 CC 8D 72 3
100ms
 4 FB F2 D 29 D6 8
55ms
 F7 3 F F0 F3 C
61ms
 E7 18 1 FE 69 96 28
55ms
 D7 27 D8 33 CC 0 FF
57ms
 27 D8 33 CC 98 67 27
54ms
 D8 33 CC 8D 72 3
110ms
 4 FB F4 B 29 D6 8
61ms
 F7 3 F F0 F5 A
63ms
 E7 18 1 FE 69 96 28
54ms
 D7 27 D8 33 CC 0 FF
57ms
 27 D8 33 CC 99 66 27
55ms
 D8 33 CC 8E 71 3
111ms
 4 FB F6 9 29 D6 9
61ms
 F6 3 F
52ms
 F0 F7 8 E7 18 1 FE
57ms
 69 96 28 D7 27 D8 33
54ms
 CC 0 FF 27 D8 33 CC
58ms
 FF 0 11 EE 20 DF 20
54ms
 DF 3
73ms
 4 FB F8 7 29 D6
55ms
 9 F6 3 F F0
56ms
 F9 6 E7 18 1 FE 69
55ms
 96 28 D7 27 D8 33 CC
57ms
 0 FF 27 D8 33 CC FF
55ms
 0 11 EE 20 DF 20 DF
58ms
 3
69ms
 4 FB FA 5 29 D6 9
61ms
 F6 3 F F0 FB 4
61ms
 E7 18 1 FE 69 96 28
53ms
 D7 27 D8 33 CC 0 FF
58ms
 27 D8 33 CC FF 0 11
53ms
 EE 20 DF 20 DF 3
119ms
 4 FB FC 3 29 D6
57ms
 9 F6 3 F F0
58ms
 FD 2 E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
57ms
 0 FF 27 D8 33 CC FF
54ms
 0 11 EE 20 DF 20 DF
59ms
 3
62ms
 4 FB FE 1 29 D6
56ms
 9 F6 3 F F0
56ms
 FF 0 E7 18 1 FE 69
53ms
 96 28 D7 27 D8 33 CC
59ms
 0 FF 27 D8 33 CC FF
53ms
 0 11 EE 20 DF 20 DF
58ms
 3
73ms
 4 FB 0 FF 29 D6 9
55ms
 F6 3 F F0 1
54ms
 FE E7 18 1 FE 69 96
59ms
 28 D7 27 D8 33 CC 0
53ms
 FF 27 D8 33 CC FF 0
58ms
 11 EE 20 DF 20 DF 3
106ms
 4 FB 2 FD 29
55ms
 D6 A F5 3 F
69ms
 F0 3 FC E7 18 31 CE
58ms
 C8 37 69 96 12 ED FF
54ms
 0 62 9D 12 ED FF 0
59ms
 5E A1 21 DE FF 0 0
53ms
 FF 3
72ms
 4 FB 4 FB 29 D6
57ms
 A F5 3 F F0
57ms
 5 FA E7 18 31 CE C8
54ms
 37 69 96 12 ED FF 0
57ms
 62 9D 12 ED FF 0 5E
53ms
 A1 21 DE FF 0 0 FF
59ms
 3
70ms
 4 FB 6 F9 29 D6 A
58ms
 F5 3 F F0 7
53ms
 F8 E7 18 31 CE C8 37
58ms
 6B 94 12 ED FF 0 62
55ms
 9D 12 ED FF 0 5E A1
58ms
 21 DE FF 0 0 FF 3
109ms
 4 FB 8 F7 29 D6
56ms
 A F5 3 F F0
56ms
 9 F6 E7 18 31 CE C8
54ms
 37 69 96 12 ED FF 0
59ms
 62 9D 12 ED FF 0 5E
53ms
 A1 21 DE FF 0 0 FF
58ms
 3
62ms
 4 FB A F5 29 D6
57ms
 A F5 3 F F0
58ms
 B F4 E7 18 31 CE C8
54ms
 37 69 96 12 ED FF 0
57ms
 62 9D 12 ED FF 0 5E
54ms
 A1 21 DE FF 0 0 FF
59ms
 3
68ms
 4 FB C F3 29 D6 A
63ms
 F5 3 F F0 D F2
60ms
 E7 18 31 CE C8 37 6B
55ms
 94 12 ED FF 0 62 9D
58ms
 12 ED FF 0 5E A1 21
53ms
 DE FF 0 0 FF 3
106ms
 4 FB E F1 29 D6
54ms
 A F5 3 F F0
56ms
 F F0 E7 18 31 CE C8
55ms
 37 6A 95 12 ED FF 0
58ms
 62 9D 12 ED FF 0 5E
53ms
 A1 21 DE FF 0 0 FF
59ms
 3
62ms
 4 FB 10 EF 29 D6
55ms
 B F4 3 F
63ms
 F0 11 EE E7 18 1 FE
57ms
 69 96 28 D7 12 ED FF
54ms
 0 62 9D 12 ED FF 0
59ms
 5E A1 17 E8 66 99 3E
53ms
 C1 3
82ms
 4 FB 12 ED 29
57ms
 D6 B F4 3 F F0
62ms
 13 EC E7 18 1 FE 69
54ms
 96 28 D7 12 ED FF 0
57ms
 62 9D 12 ED FF 0 5E
55ms
 A1 17 E8 66 99 3E C1
58ms
 3
62ms
 4 FB 14 EB 29 D6
56ms
 B F4 3 F F0
56ms
 15 EA E7 18 1 FE 69
53ms
 96 28 D7 12 ED FF 0
59ms
 62 9D 12 ED FF 0 5E
54ms
 A1 17 E8 66 99 3E C1
57ms
 3
66ms
 4 FB 16 E9 29 D6
54ms
 B F4 3 F F0
57ms
 17 E8 E7 18 1 FE 69
54ms
 96 28 D7 12 ED FF 0
57ms
 62 9D 12 ED FF 0 5E
53ms
 A1 17 E8 66 99 3E C1
59ms
 3
55ms
 4 FB 18 E7 29 D6 B
56ms
 F4 3 F F0 19
54ms
 E6 E7 18 1 FE 69 96
59ms
 28 D7 12 ED FF 0 62
52ms
 9D 12 ED FF 0 5E A1
59ms
 17 E8 66 99 3E C1 3
112ms
 4 FB 1A E5 29 D6
53ms
 B F4 3 F F0
58ms
 1B E4 E7 18 1 FE 69
53ms
 96 28 D7 12 ED FF 0
59ms
 62 9D 12 ED FF 0 5E
53ms
 A1 17 E8 66 99 3E C1
58ms
 3
72ms
 4 FB 1C E3 29 D6 B
55ms
 F4 3 F F0 1D
52ms
 E2 E7 18 1 FE 69 96
59ms
 28 D7 12 ED FF 0 62
53ms
 9D 12 ED FF 0 5E A1
58ms
 17 E8 66 99 3E C1 3
104ms
 4 FB 1E E1 29 D6 C
57ms
 F3 3 F
53ms
 F0 1F E0 E7 18 10 EF
59ms
 FF 0 FF 0 1F E0 C7
53ms
 38 0 FF 6 F9 4C B3
58ms
 B9 46 5 FA 9 F6 88
54ms
 77 3
78ms
 4 FB 20 DF 29 D6 C
60ms
 F3 3 F F0 21
53ms
 DE E7 18 10 EF FF 0
59ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 B9 46
59ms
 5 FA 9 F6 88 77 3
121ms
 4 FB 22 DD 29
54ms
 D6 C F3 3 F
53ms
 F0 23 DC E7 18 10 EF
58ms
 FF 0 FF 0 1F E0 C7
53ms
 38 0 FF 6 F9 4C B3
59ms
 B9 46 5 FA 9 F6 88
53ms
 77 3
67ms
 4 FB 24 DB 29 D6 C
56ms
 F3 3 F F0 25
53ms
 DA E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
112ms
 4 FB 26 D9 29 D6
54ms
 C F3 3 F F0
58ms
 27 D8 E7 18 10 EF FF
53ms
 0 FF 0 1F E0 C7 38
59ms
 0 FF 6 F9 4C B3 B9
53ms
 46 5 FA 9 F6 88 77
58ms
 3
70ms
 4 FB 28 D7 29 D6 C
58ms
 F3 3 F F0 29
53ms
 D6 E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 BA 45
59ms
 5 FA 9 F6 88 77 3
113ms
 4 FB 2A D5 29 D6 C
63ms
 F3 3 F F0 2B
53ms
 D4 E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
114ms
 4 FB 2C D3 29 D6 C
62ms
 F3 3 F F0 2D
53ms
 D2 E7 18 10 EF FF 0
59ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
120ms
 4 FB 2E D1 29
54ms
 D6 C F3 3 F
53ms
 F0 2F D0 E7 18 10 EF
58ms
 FF 0 FF 0 1F E0 C7
53ms
 38 0 FF 6 F9 4C B3
59ms
 B9 46 5 FA 9 F6 88
53ms
 77 3
72ms
 4 FB 30 CF 29 D6
57ms
 C F3 3 F F0
59ms
 31 CE E7 18 10 EF FF
53ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
53ms
 46 5 FA 9 F6 88 77
59ms
 3
67ms
 4 FB 32 CD 29 D6 C
61ms
 F3 3 F F0 33
54ms
 CC E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
103ms
 4 FB 34 CB 29 D6 C
56ms
 F3 3 F F0 35
54ms
 CA E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
112ms
 4 FB 36 C9 29 D6
53ms
 C F3 3 F F0
56ms
 37 C8 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
55ms
 46 5 FA 9 F6 88 77
57ms
 3
69ms
 4 FB 38 C7 29 D6 C
62ms
 F3 3 F F0 39 C6
61ms
 E7 18 10 EF FF 0 FF
55ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 88 77 3
105ms
 4 FB 3A C5 29 D6
56ms
 C F3 3 F F0
56ms
 3B C4 E7 18 10 EF FF
55ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
54ms
 46 5 FA 9 F6 88 77
57ms
 3
71ms
 4 FB 3C C3 29 D6 C
58ms
 F3 3 F F0 3D C2
62ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
57ms
 6 F9 4C B3 B9 46 5
55ms
 FA 9 F6 88 77 3
111ms
 4 FB 3E C1 29 D6 C
59ms
 F3 3 F F0 3F
52ms
 C0 E7 18 10 EF FF 0
57ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
57ms
 5 FA 9 F6 88 77 3
107ms
 4 FB 40 BF 29
55ms
 D6 C F3 3 F
52ms
 F0 41 BE E7 18 10 EF
57ms
 FF 0 FF 0 1F E0 C7
54ms
 38 0 FF 6 F9 4C B3
57ms
 B9 46 5 FA 9 F6 88
55ms
 77 3
80ms
 4 FB 42 BD 29 D6 C
59ms
 F3 3 F F0 43
53ms
 BC E7 18 10 EF FF 0
56ms
 FF 0 1F E0 C7 38 0
55ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
119ms
 4 FB 44 BB 29 D6 C
58ms
 F3 3 F F0 45
52ms
 BA E7 18 10 EF FF 0
57ms
 FF 0 1F E0 C7 38 0
55ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
112ms
 4 FB 46 B9 29 D6
54ms
 C F3 3 F F0
58ms
 47 B8 E7 18 10 EF FF
53ms
 0 FF 0 1F E0 C7 38
59ms
 0 FF 6 F9 4C B3 B9 46
64ms
 5 FA 9 F6 88 77 3
115ms
 4 FB 48 B7 29 D6 C
62ms
 F3 3 F F0 49
53ms
 B6 E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0 FF
63ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 88 77 3
102ms
 4 FB 4A B5 29 D6
59ms
 C F3 3 F F0
57ms
 4B B4 E7 18 10 EF FF 0
65ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 88 77 3
110ms
 4 FB 4C B3 29 D6
56ms
 C F3 3 F F0
58ms
 4D B2 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
53ms
 46 5 FA 9 F6 88 77
60ms
 3
66ms
 4 FB 4E B1 29 D6 C
62ms
 F3 3 F F0 4F
53ms
 B0 E7 18 10 EF FF 0
58ms
 FF 0 1F E0 C7 38 0
53ms
 FF 6 F9 4C B3 BA 45
59ms
 5 FA 9 F6 88 77 3
105ms
 4 FB 50 AF 29
55ms
 D6 C F3 3 F
53ms
 F0 51 AE E7 18 10 EF
58ms
 FF 0 FF 0 1F E0 C7
53ms
 38 0 FF 6 F9 4C B3
59ms
 B9 46 5 FA 9 F6 88
52ms
 77 3
75ms
 4 FB 52 AD 29 D6
54ms
 C F3 3 F F0
58ms
 53 AC E7 18 10 EF FF
53ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
53ms
 46 5 FA 9 F6 88 77
60ms
 3
70ms
 4 FB 54 AB 29 D6 C
58ms
 F3 3 F F0 55 AA
61ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
59ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
107ms
 4 FB 56 A9 29 D6
54ms
 C F3 3 F F0
56ms
 57 A8 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
59ms
 0 FF 6 F9 4C B3 B9
54ms
 46 5 FA 9 F6 89 76
57ms
 3
69ms
 4 FB 58 A7 29 D6 C
62ms
 F3 3 F F0 59 A6
61ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
118ms
 4 FB 5A A5 29
53ms
 D6 C F3 3 F F0
61ms
 5B A4 E7 18 10 EF FF
55ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 B9
54ms
 46 5 FA 9 F6 89 76
58ms
 3
63ms
 4 FB 5C A3 29 D6
55ms
 C F3 3 F F0
57ms
 5D A2 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 BA
55ms
 45 5 FA 9 F6 89 76
57ms
 3
73ms
 4 FB 5E A1 29 D6 C
56ms
 F3 3 F F0 5F A0
61ms
 E7 18 10 EF FF 0 FF
55ms
 0 1F E0 C7 38 0 FF
57ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
100ms
 4 FB 60 9F 29 D6 C
55ms
 F3 3 F F0 61 9E
61ms
 E7 18 10 EF FF 0 FF
55ms
 0 1F E0 C7 38 0 FF
57ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
110ms
 4 FB 62 9D 29 D6 C
61ms
 F3 3 F F0 63 9C
63ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
57ms
 6 F9 4C B3 B9 46 5
55ms
 FA 9 F6 89 76 3
113ms
 4 FB 64 9B 29 D6 C
58ms
 F3 3 F F0 65 9A
61ms
 E7 18 10 EF FF 0 FF
55ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
103ms
 4 FB 66 99 29
53ms
 D6 C F3 3 F F0
61ms
 67 98 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 B9
54ms
 46 5 FA 9 F6 89 76
57ms
 3
71ms
 4 FB 68 97 29 D6 C
59ms
 F3 3 F F0 69 96
62ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
110ms
 4 FB 6A 95 29 D6 C
61ms
 F3 3 F F0 6B
52ms
 94 E7 18 10 EF FF 0
57ms
 FF 0 1F E0 C7 38 0
56ms
 FF 6 F9 4C B3 B9 46
57ms
 5 FA 9 F6 89 76 3
111ms
 4 FB 6C 93 29 D6
56ms
 C F3 3 F F0
56ms
 6D 92 E7 18 10 EF FF
56ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 BA
54ms
 45 5 FA 9 F6 89 76
58ms
 3
67ms
 4 FB 6E 91 29 D6 C
63ms
 F3 3 F F0 6F
53ms
 90 E7 18 10 EF FF 0
56ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
58ms
 5 FA 9 F6 89 76 3
124ms
 4 FB 70 8F 29
54ms
 D6 C F3 3 F
52ms
 F0 71 8E E7 18 10 EF
58ms
 FF 0 FF 0 1F E0 C7
55ms
 38 0 FF 6 F9 4C B3
56ms
 B9 46 5 FA 9 F6 89
53ms
 76 3
73ms
 4 FB 72 8D 29 D6
55ms
 C F3 3 F F0
58ms
 73 8C E7 18 10 EF FF
53ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 B9
55ms
 46 5 FA 9 F6 89 76
58ms
 3
67ms
 4 FB 74 8B 29 D6 C
61ms
 F3 3 F F0 75
53ms
 8A E7 18 10 EF FF 0
59ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
57ms
 5 FA 9 F6 89 76 3
105ms
 4 FB 76 89 29 D6 C
55ms
 F3 3 F F0 77
53ms
 88 E7 18 10 EF FF 0
59ms
 FF 0 1F E0 C7 38 0
54ms
 FF 6 F9 4C B3 B9 46
57ms
 5 FA 9 F6 89 76 3
110ms
 4 FB 78 87 29 D6
56ms
 C F3 3 F F0
57ms
 79 86 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 B9
53ms
 46 5 FA 9 F6 89 76
59ms
 3
67ms
 4 FB 7A 85 29 D6 C
64ms
 F3 3 F F0 7B 84
60ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
53ms
 FA 9 F6 89 76 3
105ms
 4 FB 7C 83 29 D6
56ms
 C F3 3 F F0
56ms
 7D 82 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
58ms
 0 FF 6 F9 4C B3 BA
53ms
 45 5 FA 9 F6 89 76
58ms
 3
65ms
 4 FB 7E 81 29 D6
54ms
 C F3 3 F F0
57ms
 7F 80 E7 18 10 EF FF
54ms
 0 FF 0 1F E0 C7 38
57ms
 0 FF 6 F9 4C B3 B9
54ms
 46 5 FA 9 F6 89 76
57ms
 3
74ms
 4 FB 80 7F 29 D6 C
56ms
 F3 3 F F0 81 7E
60ms
 E7 18 10 EF FF 0 FF
54ms
 0 1F E0 C7 38 0 FF
58ms
 6 F9 4C B3 B9 46 5
54ms
 FA 9 F6 89 76 3
106ms
 3 FC 82 7D 9 F6
55ms
 3 3 FC 83 7C
56ms
 9 F6 3
86ms
 3 FC 84 7B 9 F6 3
76ms
 3 FC 85 7A 9 F6 3
113ms
 3 FC 86 79 9 F6 3
78ms
 3 FC 87 78 9 F6 3
109ms
 3 FC 88 77 9 F6
56ms
 3 3 FC 89 76
56ms
 9 F6 3
74ms
 3 FC 8A 75 9
56ms
 F6 3 3 FC 8B 74
60ms
 9 F6 3
89ms
 3 FC 8C 73 9
56ms
 F6 3 3 FC 8D 72
62ms
 9 F6 3
79ms
 3 FC 8E 71 9 F6
57ms
 3 3 FC 8F 70
56ms
 9 F6 3
73ms
 3 FC 90 6F 9
56ms
 F6 3 3 FC 91 6E
62ms
 9 F6 3
66ms
 3 FC 92 6D 6 F9
53ms
 3

 

 
Через программу Вася диагност:

8726ms
 9A
65ms
 49
91ms
 C5 0
139ms
 CA FF 95 80 C0
65ms
 8C
116ms
 80 81 82 83
65ms
 84 85 86 87
64ms
 88 89 8A 8B
64ms
 8C 8D 8E 8F
64ms
 90 91 92 93
64ms
 94 95 96 97
64ms
 98 99 9A 9B
64ms
 9C 9D 9E 9F
64ms
 80 81 82 83
64ms
 84 85 86 87
64ms
 88 89 8A 8B
64ms
 8C 8D 8E 8F
64ms
 90 91 92 93
64ms
 94 95 96 97
64ms
 98 99 9A 9B
64ms
 9C 9D 9E 9F
64ms
 80 81 82 83
64ms
 84 85 86 87
64ms
 88 89 8A 8B
64ms
 8C 8D 8E 8F
64ms
 90 91 92 93
64ms
 94 95 96 97
64ms
 98 99 9A 9B
63ms
 9C 9D 9E 9F
64ms
 A0 A1 A2 A3
63ms
 A4 A5 A6 A7
64ms
 A8 A9 AA AB
63ms
 AC AD AE AF
64ms
 B0 B1 B2 B3
63ms
 B4 B5 B6 B7
64ms
 B8 B9 BA BB
63ms
 BC BD BE BF
64ms
 C0 C1 C2 C3
63ms
 C4 C5 C6 C7
65ms
 C8 C9 CA CB
64ms
 CC CD CE CF
64ms
 D0 D1 D2 D3
63ms
 D4 D5 D6 D7
64ms
 D8 D9 DA DB
63ms
 DC DD DE DF
65ms
 C0 C1 C2 C3
63ms
 C4 C5 C6 C7
65ms
 C8 C9 CA CB
63ms
 CC CD CE CF
65ms
 D0 D1 D2 D3
63ms
 D4 D5 D6 D7
65ms
 D8 D9 DA DB
63ms
 DC DD DE DF
65ms
 C0 C1 C2 C3
63ms
 C4 C5 C6 C7
65ms
 C8 C9 CA CB
63ms
 CC CD CE CF
65ms
 D0 D1 D2 D3
63ms
 D4 D5 D6 D7
65ms
 D8 D9 DA DB
63ms
 DC DD DE DF
65ms
 E0 E1 E2 E3
63ms
 E4 E5 E6 E7
65ms
 E8 E9 EA EB
63ms
 EC ED EE EF
65ms
 F0 F1 F2 F3
63ms
 F4 F5 F6 F7
65ms
 F8 F9 FA FB
63ms
 FC FD FE
149ms
 80 81 82 83
59ms
 84 85 86 87
64ms
 88 89 8A 8B
63ms
 8C 8D 8E 8F
63ms
 90 91 92 93
64ms
 94 95 96 97
64ms
 98 99 9A 9B
63ms
 9C 9D 9E 9F
64ms
 80 81 82 83
63ms
 84 85 86 87
64ms
 88 89 8A 8B
63ms
 8C 8D 8E 8F
64ms
 90 91 92 93
63ms
 94 95 96 97
64ms
 98 99 9A 9B
64ms
 9C 9D 9E 9F
64ms
 80 81 82 83
63ms
 84 85 86 87
64ms
 88 89 8A 8B
64ms
 8C 8D 8E 8F
64ms
 90 91 92 93
64ms
 94 95 96 97
64ms
 98 99 9A 9B
64ms
 9C 9D 9E 9F
64ms
 A0 A1 A2 A3
64ms
 A4 A5 A6 A7
64ms
 A8 A9 AA AB
64ms
 AC AD AE AF
64ms
 B0 B1 B2 B3
64ms
 B4 B5 B6 B7
64ms
 B8 B9 BA BB
64ms
 BC BD BE BF
64ms
 C0 C1 C2 C3
64ms
 C4 C5 C6 C7
64ms
 C8 C9 CA CB
64ms
 CC CD CE CF
64ms
 D0 D1 D2 D3
64ms
 D4 D5 D6 D7
64ms
 D8 D9 DA DB
64ms
 DC DD DE DF
64ms
 C0 C1 C2 C3
64ms
 C4 C5 C6 C7
64ms
 C8 C9 CA CB
64ms
 CC CD CE CF
64ms
 D0 D1 D2 D3
64ms
 D4 D5 D6 D7
64ms
 D8 D9 DA DB
64ms
 DC DD DE DF
64ms
 C0 C1 C2 C3
64ms
 C4 C5 C6 C7
64ms
 C8 C9 CA CB
64ms
 CC CD CE CF
64ms
 D0 D1 D2 D3
63ms
 D4 D5 D6 D7
64ms
 D8 D9 DA DB
63ms
 DC DD DE DF
64ms
 E0 E1 E2 E3
63ms
 E4 E5 E6 E7
64ms
 E8 E9 EA EB
63ms
 EC ED EE EF
64ms
 F0 F1 F2 F3
63ms
 F4 F5 F6 F7
64ms
 F8 F9 FA FB
63ms
 FC FD FE
7062ms
 9A
63ms
 49
91ms
 C5 0
1149ms
 0
399ms
 0
1806ms
 55 1 8A
290ms
 55 1 8A
290ms
 55 1 8A
505ms
 0
400ms
 0
1804ms
 55 1 8A
67ms
 75 1B E4 1 FE
58ms
 F6 9 30 CF 32 CD 38
54ms
 C7 39 C6 30 CF 36 C9
60ms
 30 CF 32 CD 31 CE 47 B8
61ms
 54 AB 20 DF 31 CE 2C
54ms
 D3 39 C6 6C 93 20 DF
59ms
 52 AD 34 CB 20 DF 45
53ms
 BA 44 BB 43 BC 20 DF
58ms
 3
67ms
 3 FC 2 FD 9 F6 3
80ms
 7 F8 3 FC F6 9 20 DF
60ms
 47 B8 34 CB 31 CE 3
112ms
 3 FC 4 FB 9 F6
55ms
 3 B F4 5 FA
58ms
 F6 9 53 AC 47 B8 20
54ms
 DF 20 DF 31 CE 39 C6
57ms
 30 CF 36 C9 3
101ms
 3 FC 6 F9 9 F6 3
76ms
 8 F7 7 F8 F6 9 0 FF
62ms
 0 FF 4 FB 0 FF 14
53ms
 EB 3
151ms
 3 FC 8 F7 9
55ms
 F6 3 3 FC 9 F6
60ms
 9 F6 3
88ms
 3 FC A F5 9 F6 3
74ms
 3 FC B F4 9 F6 3
113ms
 3 FC C F3 9 F6 3
79ms
 3 FC D F2 9 F6 3
108ms
 3 FC E F1 9 F6
56ms
 3 3 FC F F0
58ms
 9 F6 3
73ms
 3 FC 10 EF 9 F6 3
72ms
 3 FC 11 EE 9 F6 3
114ms
 3 FC 12 ED 9 F6 3
77ms
 3 FC 13 EC 9 F6 3
107ms
 3 FC 14 EB 9 F6
58ms
 3 3 FC 15 EA
57ms
 9 F6 3
75ms
 3 FC 16 E9 9
55ms
 F6 3 3 FC 17 E8
60ms
 9 F6 3
84ms
 3 FC 18 E7 9 F6 3
78ms
 3 FC 19 E6 9 F6 3
111ms
 3 FC 1A E5 9 F6
55ms
 3 3 FC 1B E4
56ms
 9 F6 3
77ms
 3 FC 1C E3 9
54ms
 F6 3 3 FC 1D E2
62ms
 9 F6 3
88ms
 3 FC 1E E1 9 F6 3
74ms
 3 FC 1F E0 9 F6 3
110ms
 3 FC 20 DF 9 F6
54ms
 3 3 FC 21 DE
57ms
 9 F6 3
79ms
 3 FC 22 DD 9 F6
56ms
 3 3 FC 23 DC
56ms
 9 F6 3
94ms
 3 FC 24 DB 9
53ms
 F6 3 3 FC 25 DA
61ms
 9 F6 3
89ms
 3 FC 26 D9 9 F6 3
74ms
 3 FC 27 D8 9 F6 3
112ms
 3 FC 28 D7 9 F6
53ms
 3 3 FC 29 D6
56ms
 9 F6 3
78ms
 3 FC 2A D5 9
52ms
 F6 3 3 FC 2B D4
63ms
 9 F6 3
85ms
 3 FC 2C D3 9 F6 3
77ms
 3 FC 2D D2 9 F6 3
110ms
 3 FC 2E D1 9 F6
54ms
 3 3 FC 2F D0
56ms
 9 F6 3
74ms
 3 FC 30 CF 9 F6 3
70ms
 3 FC 31 CE 9 F6 3
114ms
 3 FC 32 CD 9 F6 3
78ms
 3 FC 33 CC 9 F6 3
112ms
 3 FC 34 CB 9 F6
54ms
 3 3 FC 35 CA
56ms
 9 F6 3
79ms
 3 FC 36 C9 9 F6
56ms
 3 3 FC 37 C8
56ms
 9 F6 3
89ms
 3 FC 38 C7 9 F6 3
74ms
 3 FC 39 C6 9 F6 3
112ms
 3 FC 3A C5 9 F6 3
78ms
 3 FC 3B C4 9 F6 3
109ms
 3 FC 3C C3 9 F6
58ms
 3 3 FC 3D C2
57ms
 9 F6 3
72ms
 3 FC 3E C1 9 F6 3
71ms
 3 FC 3F C0 9 F6 3
115ms
 3 FC 40 BF 9 F6 3
77ms
 3 FC 41 BE 9 F6 3
111ms
 3 FC 42 BD 9 F6
56ms
 3 3 FC 43 BC
57ms
 9 F6 3
76ms
 3 FC 44 BB 7 F8
58ms
 3 6 F9 45 BA
58ms
 FC 3 FF 0 FF 0 88
53ms
 77 3
82ms
 3 FC 46 B9 9 F6 3
71ms
 3 FC 47 B8 9 F6 3
111ms
 3 FC 48 B7 9 F6
54ms
 3 3 FC 49 B6
58ms
 9 F6 3
74ms
 3 FC 4A B5 9
57ms
 F6 3 3 FC 4B B4
61ms
 9 F6 3
85ms
 3 FC 4C B3 9 F6 3
75ms
 3 FC 4D B2 9 F6 3
117ms
 3 FC 4E B1 9 F6 3
74ms
 3 FC 4F B0 9 F6 3
109ms
 3 FC 50 AF 9 F6
57ms
 3 3 FC 51 AE
58ms
 9 F6 3
91ms
 3 FC 52 AD 9
53ms
 F6 3 3 FC 53
53ms
 AC 9 F6 3
90ms
 3 FC 54 AB 9 F6
55ms
 3 3 FC 55 AA
57ms
 9 F6 3
84ms
 3 FC 56 A9 9 F6 3
76ms
 3 FC 57 A8 9 F6 3
103ms
 3 FC 58 A7 9 F6 3
73ms
 3 FC 59 A6 9 F6 3
114ms
 3 FC 5A A5 9 F6 3
78ms
 3 FC 5B A4 9 F6 3
111ms
 3 FC 5C A3 9 F6
55ms
 3 3 FC 5D A2
57ms
 9 F6 3
72ms
 3 FC 5E A1 9 F6 3
72ms
 3 FC 5F A0 9 F6 3
126ms
 3 FC 60 9F 9 F6
56ms
 3 3 FC 61 9E
57ms
 9 F6 3
81ms
 3 FC 62 9D 9 F6
54ms
 3 3 FC 63 9C
57ms
 9 F6 3
76ms
 3 FC 64 9B 9 F6
58ms
 3 3 FC 65 9A
57ms
 9 F6 3
85ms
 3 FC 66 99 9 F6 3
75ms
 3 FC 67 98 9 F6 3
114ms
 3 FC 68 97 9 F6 3
78ms
 3 FC 69 96 9 F6 3
109ms
 3 FC 6A 95 9
54ms
 F6 3 3 FC 6B 94
61ms
 9 F6 3
86ms
 3 FC 6C 93 9 F6 3
73ms
 3 FC 6D 92 9 F6 3
116ms
 3 FC 6E 91 9 F6 3
76ms
 3 FC 6F 90 9 F6 3
109ms
 3 FC 70 8F 9 F6
58ms
 3 3 FC 71 8E
57ms
 9 F6 3
72ms
 3 FC 72 8D 9
58ms
 F6 3 3 FC 73 8C
61ms
 9 F6 3
83ms
 4 FB 74 8B 29 D6 1
63ms
 FE 3 F F0
61ms
 75 8A E7 18 1 FE 69
54ms
 96 28 D7 27 D8 33 CC
58ms
 14 EB 15 EA 14 EB 52
53ms
 AD 5 FA 9 F6 8D 72
58ms
 3
57ms
 4 FB 76 89 29 D6 1
55ms
 FE 3 F F0 77
53ms
 88 E7 18 1 FE 69 96
60ms
 28 D7 27 D8 33 CC 14 EB
63ms
 15 EA 14 EB 4E B1 5
53ms
 FA 9 F6 8D 72 3
110ms
 4 FB 78 87 29 D6 1
61ms
 FE 3 F F0 79
54ms
 86 E7 18 1 FE 69 96
58ms
 28 D7 27 D8 33 CC 13 EC
64ms
 15 EA 14 EB 4D B2 5 FA
64ms
 9 F6 8D 72 3
100ms
 4 FB 7A 85 29 D6 1
60ms
 FE 3 F F0 7B
52ms
 84 E7 18 1 FE 69 96
59ms
 28 D7 27 D8 33 CC 14
54ms
 EB 15 EA 14 EB 4C B3
58ms
 5 FA 9 F6 8D 72 3
110ms
 4 FB 7C 83 29 D6
56ms
 2 FD 3
57ms
 F F0 7D 82 E7 18 1
53ms
 FE 69 96 28 D7 21 DE
59ms
 FF 0 0 FF 10 EF 49
53ms
 B6 8 F7 5 FA 9 F6
59ms
 8D 72 3
81ms
 4 FB 7E 81 29 D6
54ms
 2 FD 3 F F0
57ms
 7F 80 E7 18 1 FE 69
53ms
 96 28 D7 21 DE FF 0
60ms
 0 FF 10 EF 49 B6 8
53ms
 F7 5 FA 9 F6 8D 72
58ms
 3
73ms
 4 FB 80 7F 29 D6 2
55ms
 FD 3 F F0 81
53ms
 7E E7 18 1 FE 69 96
59ms
 28 D7 21 DE FF 0 0
53ms
 FF 10 EF 49 B6 8 F7
59ms
 5 FA 9 F6 8D 72 3
109ms
 4 FB 82 7D 29 D6
57ms
 2 FD 3 F F0
59ms
 83 7C E7 18 1 FE 69
53ms
 96 28 D7 21 DE FF 0
58ms
 0 FF 10 EF 49 B6 8
54ms
 F7 5 FA 9 F6 8D 72
58ms
 3
64ms
 4 FB 84 7B 29 D6
55ms
 3 FC 3 F F0
57ms
 85 7A E7 18 1 FE 69
53ms
 96 28 D7 31 CE C8 37
60ms
 4D B2 31 CE C8 37 6A
53ms
 95 17 E8 66 99 C F3
58ms
 3
75ms
 4 FB 86 79 29
53ms
 D6 3 FC 3 F
54ms
 F0 87 78 E7 18 1 FE
58ms
 69 96 28 D7 31 CE C8
52ms
 37 4C B3 31 CE C8 37
60ms
 69 96 17 E8 66 99 C
53ms
 F3 3
73ms
 4 FB 88 77 29 D6
55ms
 3 FC 3 F F0
57ms
 89 76 E7 18 1 FE 69
53ms
 96 28 D7 31 CE C8 37
60ms
 4C B3 31 CE C8 37 6C
53ms
 93 17 E8 66 99 C F3
58ms
 3
71ms
 4 FB 8A 75 29 D6 4
56ms
 FB 3 F
54ms
 F0 8B 74 E7 18 1 FE
58ms
 69 96 28 D7 1B E4 16
53ms
 E9 8B 74 1B E4 16 E9
60ms
 8E 71 17 E8 66 99 7
53ms
 F8 3
72ms
 4 FB 8C 73 29 D6
57ms
 4 FB 3 F F0
57ms
 8D 72 E7 18 1 FE 69
54ms
 96 28 D7 1B E4 16 E9
57ms
 8B 74 1B E4 16 E9 8E
53ms
 71 17 E8 66 99 7 F8
59ms
 3
64ms
 4 FB 8E 71 29 D6
52ms
 4 FB 3 F F0
58ms
 8F 70 E7 18 1 FE 69
53ms
 96 28 D7 1B E4 16 E9
58ms
 8B 74 1B E4 16 E9 8F
54ms
 70 17 E8 66 99 7 F8
58ms
 3
68ms
 4 FB 90 6F 29 D6 4
58ms
 FB 3 F F0 91
53ms
 6E E7 18 1 FE 69 96
59ms
 28 D7 1B E4 16 E9 8B
53ms
 74 1B E4 16 E9 8F 70
58ms
 17 E8 66 99 7 F8 3
111ms
 3 FC 92 6D 9 F6
56ms
 3 3 FC 93 6C
55ms
 9 F6 3
90ms
 3 FC 94 6B 9 F6 3
72ms
 3 FC 95 6A 9 F6 3
113ms
 3 FC 96 69 9 F6
54ms
 3 3 FC 97 68
55ms
 9 F6 3
81ms
 3 FC 98 67 9 F6
55ms
 3 3 FC 99 66
56ms
 9 F6 3
91ms
 3 FC 9A 65 9
54ms
 F6 3 3 FC 9B 64
63ms
 9 F6 3
80ms
 3 FC 9C 63 9 F6
55ms
 3 3 FC 9D 62
56ms
 9 F6 3 3 FC 9E 61
56ms
 6 F9 3

Тут видео для наглядности:

https://www.youtube.com/channel/UCTAwPGDTbTITuTNUS3ZhwQw/videos?view_as=subscriber
 

Мож сюда что попробовать вбить ????

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

дак пробуйте вручную адрес блока вбивать, на каком соединение установится, такой и есть адрес ЭБУ

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

дак пробуйте вручную адрес блока вбивать, на каком соединение установится, такой и есть адрес ЭБУ

Вот попробовал. Тоже самое. Вот еще интересная фишка. Просто проверка блоков на отзыв.

У меня блоков 2,4,5,6,7 нет. естественно получаем пустоту.

Если блоки 1,2,8,9 отзываются то получаем в ответ 55 1 8A.. потом полетели данные.


312ms
 F1 F0 FC FF
876ms
 D D 41
806ms
 54 D
127ms
 0
1147ms
 0
398ms
 0
1808ms
 55 1 8A
290ms
 55 1 8A
290ms
 55 1 8A
506ms
 0
399ms
 0
1805ms
 55 1 8A
68ms
 75 1B E4 1 FE
58ms
 F6 9 30 CF 32 CD 38
55ms
 C7 39 C6 30 CF 36 C9
56ms
 30 CF 32 CD 31 CE 47
55ms
 B8 54 AB 20 DF 31 CE
57ms
 2C D3 39 C6 6C 93 20
54ms
 DF 52 AD 34 CB 20 DF
57ms
 45 BA 44 BB 43 BC 20
55ms
 DF 3
75ms
 3 FC 2 FD 9 F6
54ms
 3 7 F8 3 FC
56ms
 F6 9 20 DF 47 B8 34
55ms
 CB 31 CE 3
85ms
 3 FC 4 FB 9
54ms
 F6 3 B F4 5
53ms
 FA F6 9 53 AC 47 B8
57ms
 20 DF 20 DF 31 CE 39
55ms
 C6 30 CF 36 C9 3
107ms
 3 FC 6 F9 9 F6 3
76ms
 8 F7 7 F8 F6 9 0
54ms
 FF 0 FF 4 FB 0 FF
58ms
 14 EB 3
140ms
 3 FC 8 F7 9 F6
58ms
 3 3 FC 9 F6
57ms
 9 F6 3 3 FC A F5
55ms
 6 F9 3
1746ms
 FC
311ms
 F1 F0 FC FD
878ms
 D D 41
805ms
 54 D
127ms
 0
1135ms
 0
599ms
 0
3959ms
 0
599ms
 0
4960ms
 0
599ms
 0
5962ms
 0
599ms
 0
3183ms
 FC
310ms
 F1 F0 FC FD
877ms
 D D 41
805ms
 54 D
127ms
 0
1153ms
 0
599ms
 0
1537ms
 55 1 8A
1069ms
 0
599ms
 0
1534ms
 55 1 8A
65ms
 75 F
65ms
 F0 1 FE F6 9 31 CE
59ms
 4A B5 30 CF 39 C6
64ms
 30 CF 37 C8 33
52ms
 CC 37 C8 39 C6 20
63ms
 DF 47 B8 20 DF 3
110ms
 3 FC 2 FD 9
62ms
 F6 3 F F0 3 FC F6
68ms
 9 41 BE 42 BD
59ms
 53 AC 20 DF 20 DF
64ms
 20 DF 20 DF 20
53ms
 DF 32 CD 30 CF 20
64ms
 DF 49 B6 3
113ms
 3 FC 4 FB 9
60ms
 F6 3 E F1 5 FA F6
67ms
 9 45 BA 20 DF
60ms
 43 BC 41 BE 4E
52ms
 B1 20 DF 20 DF 30
64ms
 CF 30 CF 30 CF 31
64ms
 CE 3
72ms
 3 FC 6 F9 9 F6
56ms
 3 8 F7 7 F8
58ms
 F6 9 0 FF 64 9B 18 E7
64ms
 0 FF 14 EB 3
164ms
 3 FC 8 F7 9
62ms
 F6 3 3 FC 9 F6 9 F6
62ms
 3 3 FC A F5
53ms
 6 F9 3
1771ms
 FC
312ms
 F1 F0 FC FD
876ms
 D D 41
806ms
 54 D
127ms
 0
1158ms
 0
799ms
 0
3759ms
 0
799ms
 0
4760ms
 0
799ms
 0
5762ms
 0
799ms
 0
2970ms
 FC
313ms
 F1 F0 FC FD
876ms
 D D 41
805ms
 54 D
128ms
 0
1132ms
 0
399ms
 0
399ms
 0
3759ms
 0
399ms
 0
399ms
 0
4760ms
 0
399ms
 0
400ms
 0
5764ms
 0
398ms
 0
400ms
 0
2971ms
 FC
311ms
 F0 F0 FC FF
878ms
 D D 41
805ms
 54 D
127ms
 0
1132ms
 0
799ms
 0
3757ms
 0
799ms
 0
4759ms
 0
799ms
 0
5761ms
 0
800ms
 0
2966ms
 FC
311ms
 F1 80 FD
877ms
 D D 41
805ms
 54 D
128ms
 0
1152ms
 0
799ms
 0
3759ms
 0
799ms
 0
4759ms
 0
800ms
 0
5762ms
 0
799ms
 0
2983ms
 FC
310ms
 F1 F0 FC FD
879ms
 D D 41
804ms
 54 D
128ms
 0
1145ms
 0
1000ms
 0
1133ms
 55 1 8A
200ms
 55 1 8A
884ms
 0
999ms
 0
1119ms
 55 1 8A 75
81ms
 F F0 1 FE F6 9
65ms
 37 C8 4D B2
60ms
 30 CF 39 C6 30
68ms
 CF 37 C8 30 CF
62ms
 34 CB 30 CF 42
66ms
 BD 43 BC 20 DF
63ms
 3
74ms
 3 FC 2 FD
54ms
 9 F6 3 F
64ms
 F0 3 FC F6 9 43
63ms
 BC 4C B3 49 B6
65ms
 4D B2 41 BE
60ms
 54 AB 52 AD 4F
68ms
 B0 4E B1 49 B6
62ms
 43 BC 20 DF 3
122ms
 3 FC 4 FB
56ms
 9 F6 3 E
63ms
 F1 5 FA F6 9 4D
63ms
 B2 50 AF 56 A9
65ms
 20 DF 20 DF
60ms
 20 DF 20 DF 56
68ms
 A9 31 CE 31 CE
61ms
 31 CE 3
92ms
 3 FC 6 F9
55ms
 9 F6 3 8
62ms
 F7 7 F8 F6 9
60ms
 0 FF 0 FF 1A
67ms
 E5 0 FF 14 EB
62ms
 3
146ms
 3 FC 8 F7
65ms
 9 F6 3
79ms
 3 FC 9 F6
61ms
 9 F6 3 3 FC A
63ms
 F5 6 F9 3
75ms
 4
115ms
 4
1571ms
 FC
311ms
 F1 F0 FC FD
878ms
 D D 41
806ms
 54 D
128ms
 0
1148ms
 0
399ms
 0
599ms
 0
947ms
 95 81 CA
77ms
 B5 8F F0 81 FE F6
63ms
 89 B7 C8 8D D2 B0 CF B9
64ms
 C6 B6 C9 B2 CD B2 CD B5
64ms
 CA B8 C7 8A D5 A0 DF A0
64ms
 DF 83
77ms
 83 FC 82 FD 89 F6 83
92ms
 8F F0 83 FC F6 89 8D
54ms
 D2 B5 CA AC D3 B4 CB
53ms
 A9 D6 A6 D9 B5 CA AE
60ms
 D1 AB D4 B4 CB AE D1 85
63ms
 DA 83
72ms
 83 FC 84 FB 89 F6
57ms
 83 8E F1 85
63ms
 FA F6 89 A9 D6 AE D1 A8
63ms
 D7 A5 DA A9 D6 B4 CB A0
63ms
 DF B0 CF B0 CF B0 CF B1
64ms
 CE 83
78ms
 83 FC 86 F9 89 F6 83
75ms
 88 F7 88
127ms
 88 F7 88
134ms
 88 F7 88
122ms
 88 F7 88
130ms
 88 F7 88
128ms
 88 F7 88
128ms
 88 F7 88
131ms
 88 F7 88
124ms
 88 F7 88
130ms
 88 F7 88
125ms
 88 F7 88
133ms
 88 F7 88
123ms
 88 F7 88
134ms
 88
1050ms
 0
398ms
 0
600ms
 0
947ms
 95 81 CA
64ms
 B5 8F F0 81
63ms
 FE F6 89 B7 C8 8D D2 B0
64ms
 CF B9 C6 B6 C9 B2 CD B2
64ms
 CD B5 CA B8 C7 8A D5
53ms
 A0 DF A0 DF 83
98ms
 83 FC 82 FD 89 F6 83 8F
57ms
 F0 83 FC F6 89 8D D2 B5
65ms
 CA AC D3 B4 CB A9 D6 A6
63ms
 D9 B5 CA AE D1 AB D4 B4
63ms
 CB AE D1 85 DA 83
113ms
 83 FC 84 FB 89 F6 83
87ms
 8E F1 85 FA F6 89 A9
57ms
 D6 AE D1 A8 D7 A5 DA A9
63ms
 D6 B4 CB A0 DF B0 CF B0
63ms
 CF B0 CF B1 CE 83
98ms
 83 FC 86 F9 89 F6 83
81ms
 88 F7 88
130ms
 88 F7 88
131ms
 88 F7 88
125ms
 88 F7 88
128ms
 88 F7 88
130ms
 88 F7 88
125ms
 88 F7 88
133ms
 88 F7 88
126ms
 88 F7 88
129ms
 88 F7 88
125ms
 88 F7 88
131ms
 88 F7 88
125ms
 88 F7 88
130ms
 88
1068ms
 0
399ms
 0
600ms
 0
927ms
 95 81 CA
66ms
 B5 8F F0
54ms
 81 FE F6 89 B7 C8 8D
59ms
 D2 B0 CF B9 C6 B6 C9 B2
64ms
 CD B2 CD B5 CA B8 C7 8A
63ms
 D5 A0 DF A0 DF 83
111ms
 83 FC 82 FD 89 F6 83
87ms
 8F F0 83 FC F6 89 8D
58ms
 D2 B5 CA AC D3 B4 CB A9
65ms
 D6 A6 D9 B5 CA AE D1 AB
64ms
 D4 B4 CB AE D1 85 DA 83
116ms
 83 FC 84 FB 89 F6 83 8E
59ms
 F1 85 FA F6 89 A9 D6 AE
65ms
 D1 A8 D7 A5 DA A9 D6 B4
64ms
 CB A0 DF B0 CF B0 CF B0
64ms
 CF B1 CE 83
95ms
 83 FC 86 F9 89 F6 83
118ms
 88 F7 88
132ms
 88 F7 88
129ms
 88 F7 88
128ms
 88 F7 88
127ms
 88 F7 88
131ms
 88 F7 88
125ms
 88 F7 88
131ms
 88 F7 88
125ms
 88 F7 88
130ms
 88 F7 88
125ms
 88 F7 88
130ms
 88 F7 88
125ms
 88 F7 88
131ms
 88
1057ms
 0
398ms
 0
600ms
 0
939ms
 95 81 CA
69ms
 B5 8F F0
54ms
 81 FE F6 89 B7 C8 8D
61ms
 D2 90 CF B9 C6 B6 C9 B2
62ms
 CD B2 CD B5 CA B8 C7 8A
64ms
 D5 A0 DF A0 DF 83
103ms
 83 FC 82 FD 89 F6 83
89ms
 8F F0 83 FC F6 89
55ms
 8D D2 B5 CA AC D3 B4
56ms
 CB A9 D6 A6 D9 B5 CA AE
63ms
 D1 AB D4 B4 CB AE D1 85
65ms
 DA 83
72ms
 83 FC 84 FB 89 F6 83
91ms
 8E F1 85 FA F6 89 A9
61ms
 D6 AE D1 A8 D7 A5 DA A9
63ms
 D6 B4 CB A0 DF B0 CF B0
65ms
 CF B0 CF B1 CE 83
117ms
 83 FC 86 F9 89 F6 83
109ms
 88 F7 88
136ms
 88 F7 88
125ms
 88 F7 88
133ms
 88 F7 88
123ms
 88 F7 88
133ms
 88 F7 88
124ms
 88 F7 88
130ms
 88 F7 88
125ms
 88 F7 88
134ms
 88 F7 88
122ms
 88 F7 88
132ms
 88 F7 88
123ms
 88 F7 88
130ms
 88
1062ms
 0
399ms
 0
600ms
 0
933ms
 95 81 CA
75ms
 B5 8F F0
54ms
 81 FE F6 89 B7 C8 8D
60ms
 D2 B0 CF B9 C6 B6 C9 B2
64ms
 CD B2 CD B5 CA B8 C7
54ms
 8A D5 A0 DF A0 DF 83
122ms
 83 FC 82 FD 89 F6 83
73ms
 8F F0 83 FC F6 89 8D
54ms
 D2 B5 CA AC D3 B4 CB
53ms
 A9 D6 A6 D9 B5 CA AE
57ms
 D1 AB D4 B4 CB AE D1 85
65ms
 DA 83
78ms
 83 FC 84 FB 89 F6 83
95ms
 8E F1 85 FA F6 89 A9 D6
56ms
 AE D1 A8 D7 A5 DA A9
59ms
 D6 B4 CB A0 DF B0 CF B0
63ms
 CF B0 CF B1 CE 83
115ms
 83 FC 86 F9 89 F6 83
71ms
 88 F7 88
127ms
 88 F7 88
133ms
 88 F7 88
144ms
 88 F7 88
143ms
 88 F7 88
122ms
 88 F7 88
132ms
 88 F7 88
124ms
 88 F7 88
133ms
 88 F7 88
123ms
 88 F7 88
131ms
 88 F7 88
125ms
 88 F7 88
131ms
 88 F7 88
126ms
 88
1260ms
 FC
311ms
 F1 F0 FC FD
876ms
 D D 41
803ms
 54 D
128ms
 0
1145ms
 0
599ms
 0
401ms
 0
3571ms
 0
598ms
 0
400ms
 0
4559ms
 0
598ms
 0
399ms
 0

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Попробуйте в сниффере скорость сериал соединения (которое к клайну) поставить сначала 5 бод, потом 200бод. Только задержку (delay) нужно гораздо больше сделать. 1000 например, поиграться ей нужно. Запускайте опять оба раза данный тест. Теперь понятно что адрес блока ДВС это 0х01. Просто мы его в сниффе не видим, т.к он посылается диагностикой на малой скорости, и мы видим набор других байтов, т.к. у нас скорость не соотвествует и установлена 9600.

MaksVV
Offline
Зарегистрирован: 06.08.2015

я оказывается повторяюсь. мы это уже проходили и дальше тоже читать!!! Всё сходится 55 1 8A

0x55 это синхробайт - ответ ЭБУ на запрос адреса (запрос адреса  посылает VAG com на малой скорости)

далее ЭБУ посылает два keyword:

keyword#1 0x01 и  keyword#2 0x8A

после чего VAG com отвечает инвертированным байтом  keyword#2, т.е. 0x75. Вот  тут инициализация закончена, 

далее, судя по всему , ЭБУ шлёт идентификационные данные. Толи сам каждый байт инвертирует, толи это Vag com на каждый байт отвечает инверсией. 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот вам два скетча. Подключаете свзяку ардуино-kline к ЭБУ уже БЕЗ! диагностики. И пробуете разговорить блок (повторяем действия Vag Com)

Оба скетча шлют блоку адрес 0x01 на малой скорости, потом переключаемся на стандартную 9600.  Смотрим в мониторе порта, ответит ли блок синхробайтом и keyword-ами , т.е. 55 1 8A

Первый скетч это если инит у данного ЭБУ на скорости 5 бод. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;
void setup() {

Serial.begin (115200);

delay (500);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH); // BUS IDLE
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (200);
digitalWrite (TX, 1);// 7 бит адреса
delay (200);
digitalWrite (TX, 0);// 6 бит адреса
delay (200);
digitalWrite (TX, 0);// 5 бит адреса
delay (200);
digitalWrite (TX, 0);// 4 бит адреса
delay (200);
digitalWrite (TX, 0);// 3 бит адреса
delay (200);
digitalWrite (TX, 0);// 2 бит адреса
delay (200);
digitalWrite (TX, 0);// 1 бит адреса
delay (200);
digitalWrite (TX, 0);// 0 бит адреса
delay (200);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 5 бод закончена

// далее уже через mySerial работаем 


mySerial.begin (9600);


}

void loop() {

if (mySerial.available()) {
delay (51);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}




Второй скетч, это если инит у данного ЭБУ на скорости 200 бод. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;
void setup() {

Serial.begin (115200);

delay (500);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH); // BUS IDLE
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (5);
digitalWrite (TX, 1);// 7 бит адреса
delay (5);
digitalWrite (TX, 0);// 6 бит адреса
delay (5);
digitalWrite (TX, 0);// 5 бит адреса
delay (5);
digitalWrite (TX, 0);// 4 бит адреса
delay (5);
digitalWrite (TX, 0);// 3 бит адреса
delay (5);
digitalWrite (TX, 0);// 2 бит адреса
delay (5);
digitalWrite (TX, 0);// 1 бит адреса
delay (5);
digitalWrite (TX, 0);// 0 бит адреса
delay (5);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 200 бод закончена

// далее уже через mySerial работаем 


mySerial.begin (9600);


}

void loop() {

if (mySerial.available()) {
delay (51);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}




 

MaksVV
Offline
Зарегистрирован: 06.08.2015

почитал, что на VAG используется скорее всего такой инит.

Т.е. отправка адреса блоку должна быть на скорости 5 бод причем с настройками UART 1 старт бит, 7 бит данных, бит проверки четности odd, 1 стоп бит.

Поэтому вот ещё третий скетч, скорее всего он из заставит блок говорить)) Ждем ответа от блока 55 01 8A и далее должны пойти данные

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;


byte ECUaddress = 0x01;   // адрес блока двигателя, можно попробовать с другими адресами

void setup() 
{
Serial.begin (115200);
Serial.println(F("---KWP 5 baud init"));
delay (500);
pinMode (TX, OUTPUT);
digitalWrite (TX, HIGH); // BUS IDLE
delay (500);


send5baud(ECUaddress); // функция отправки адреса блоку
mySerial.begin (9600);

}


void loop() {

if (mySerial.available()) {
  
delay (51);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    if (inByte == 0x8A) mySerial.write (0x75);
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}




//ниже отправка блоку байта адреса на 5бод  1 стартбит, 7бит данных, 1 бит проверки четности odd, 1 стоп бит

void send5baud(uint8_t data){              
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(TX, HIGH);
    } else {
      // low
      digitalWrite(TX, LOW);
    }
  }
  mySerial.flush();
}


 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Дал ответ только третий скетч.

---KWP 5 baud init
bit0=0 startbit
bit1=1
bit2=0
bit3=0
bit4=0
bit5=0
bit6=0
bit7=0
bit8=0 parity
bit9=1 stopbit

3261ms
 55 1 8A
78ms
 1B
115ms
 1B
115ms
 1B

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

Вот чел сделал то что мы когда то с опелем. Только он программирует намного круче. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

Запрос параметров делается такими байтами. 0x04 далее байт-счетчик порядкового номера сообщения 0x29 0x01 (01 это страница параметров, в каждой странице блок ответиит четырьмя параметрами)

MaksVV
Offline
Зарегистрирован: 06.08.2015

с этим байтом счетчиком не так всё просто - он должен с каждым следующим запросом прибавляться на 1. 

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

0x03 далее байт-счетчик порядкового номера сообщения  0x09 0x03

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

Вот чел сделал то что мы когда то с опелем. Только он программирует намного круче. 

Натыкался на эту страницу не однократно, но непредовал этому БК значения... а зря..

в коментарии скетча дана ссылка на весь протокол

https://www.blafusel.de/obd/obd2_kw1281.html

тут вот еще человек поднял этот же проект(интересные у него идеи кстате возникали):

https://www.drive2.ru/l/490647993997853063/

еще в нете где то раньше я находил (и скачал)библиотеку OBD.h

/*************************************************************************
* Arduino Library for OBD-II UART/I2C Adapter
* Distributed under BSD License
* Visit http://freematics.com for more information
* (C)2012-2016 Stanley Huang <stanleyhuangyc@gmail.com>
*************************************************************************/

#include <Arduino.h>

#define OBD_MODEL_UART 0
#define OBD_MODEL_I2C 1

#define OBD_TIMEOUT_SHORT 1000 /* ms */
#define OBD_TIMEOUT_LONG 15000 /* ms */
#define OBD_TIMEOUT_GPS 200 /* ms */
#define OBD_SERIAL_BAUDRATE 9600

#ifndef OBDUART
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168P__)
#define OBDUART Serial
#else
#define OBDUART Serial1
#endif
#endif

// Mode 1 PIDs
#define PID_FUEL_SYSTEM_STATUS 0x03
#define PID_ENGINE_LOAD 0x04
#define PID_COOLANT_TEMP 0x05
#define PID_SHORT_TERM_FUEL_TRIM_1 0x06
#define PID_LONG_TERM_FUEL_TRIM_1 0x07
#define PID_SHORT_TERM_FUEL_TRIM_2 0x08
#define PID_LONG_TERM_FUEL_TRIM_2 0x09
#define PID_FUEL_PRESSURE 0x0A
#define PID_INTAKE_MAP 0x0B
#define PID_RPM 0x0C
#define PID_SPEED 0x0D
#define PID_TIMING_ADVANCE 0x0E
#define PID_INTAKE_TEMP 0x0F
#define PID_MAF_FLOW 0x10
#define PID_THROTTLE 0x11
#define PID_AUX_INPUT 0x1E
#define PID_RUNTIME 0x1F
#define PID_DISTANCE_WITH_MIL 0x21
#define PID_COMMANDED_EGR 0x2C
#define PID_EGR_ERROR 0x2D
#define PID_COMMANDED_EVAPORATIVE_PURGE 0x2E
#define PID_FUEL_LEVEL 0x2F
#define PID_WARMS_UPS 0x30
#define PID_DISTANCE 0x31
#define PID_EVAP_SYS_VAPOR_PRESSURE 0x32
#define PID_BAROMETRIC 0x33
#define PID_CATALYST_TEMP_B1S1 0x3C
#define PID_CATALYST_TEMP_B2S1 0x3D
#define PID_CATALYST_TEMP_B1S2 0x3E
#define PID_CATALYST_TEMP_B2S2 0x3F
#define PID_CONTROL_MODULE_VOLTAGE 0x42
#define PID_ABSOLUTE_ENGINE_LOAD 0x43
#define PID_AIR_FUEL_EQUIV_RATIO 0x44
#define PID_RELATIVE_THROTTLE_POS 0x45
#define PID_AMBIENT_TEMP 0x46
#define PID_ABSOLUTE_THROTTLE_POS_B 0x47
#define PID_ABSOLUTE_THROTTLE_POS_C 0x48
#define PID_ACC_PEDAL_POS_D 0x49
#define PID_ACC_PEDAL_POS_E 0x4A
#define PID_ACC_PEDAL_POS_F 0x4B
#define PID_COMMANDED_THROTTLE_ACTUATOR 0x4C
#define PID_TIME_WITH_MIL 0x4D
#define PID_TIME_SINCE_CODES_CLEARED 0x4E
#define PID_ETHANOL_FUEL 0x52
#define PID_FUEL_RAIL_PRESSURE 0x59
#define PID_HYBRID_BATTERY_PERCENTAGE 0x5B
#define PID_ENGINE_OIL_TEMP 0x5C
#define PID_FUEL_INJECTION_TIMING 0x5D
#define PID_ENGINE_FUEL_RATE 0x5E
#define PID_ENGINE_TORQUE_DEMANDED 0x61
#define PID_ENGINE_TORQUE_PERCENTAGE 0x62
#define PID_ENGINE_REF_TORQUE 0x63

typedef enum {
    PROTO_AUTO = 0,
    PROTO_ISO_9141_2 = 3,
    PROTO_KWP2000_5KBPS = 4,
    PROTO_KWP2000_FAST = 5,
    PROTO_CAN_11B_500K = 6,
    PROTO_CAN_29B_500K = 7,
    PROTO_CAN_29B_250K = 8,
    PROTO_CAN_11B_250K = 9,
} OBD_PROTOCOLS;

// states
typedef enum {
    OBD_DISCONNECTED = 0,
    OBD_CONNECTING = 1,
    OBD_CONNECTED = 2,
	OBD_FAILED = 3
} OBD_STATES;

uint16_t hex2uint16(const char *p);
uint8_t hex2uint8(const char *p);

class COBD
{
public:
	COBD():dataMode(1),errors(0),m_state(OBD_DISCONNECTED) {}
	// begin serial UART
	virtual void begin();
	// initialize OBD-II connection
	virtual bool init(OBD_PROTOCOLS protocol = PROTO_AUTO);
	// un-initialize OBD-II connection
	virtual void end();
	// set serial baud rate
	virtual bool setBaudRate(unsigned long baudrate);
	// get connection state
	virtual OBD_STATES getState() { return m_state; }
	// read specified OBD-II PID value
	virtual bool readPID(byte pid, int& result);
	// read multiple (up to 8) OBD-II PID values, return number of values obtained
	virtual byte readPID(const byte pid[], byte count, int result[]);
	// set device into
	virtual void sleep();
	// set working protocol (default auto)
	virtual bool setProtocol(OBD_PROTOCOLS h = PROTO_AUTO);
	// send AT command and receive response
	virtual byte sendCommand(const char* cmd, char* buf, byte bufsize, int timeout = OBD_TIMEOUT_LONG);
	// clear diagnostic trouble code
	virtual void clearDTC();
	// get battery voltage (works without ECU)
	virtual float getVoltage();
	// get VIN as a string, buffer length should be >= OBD_RECV_BUF_SIZE
	virtual bool getVIN(char* buffer, byte bufsize);
	// get device temperature
	virtual float getTemperature();
	// get accelerometer data
	virtual bool readAccel(int& x, int& y, int& z);
	// get gyroscope data
	virtual bool readGyro(int& x, int& y, int& z);
	// send query for specified PID
	virtual void sendQuery(byte pid);
	// retrive and parse the response of specifie PID
	virtual bool getResult(byte& pid, int& result);
	// determine if the PID is supported
	virtual bool isValidPID(byte pid);
	// init GPS module
	// parse GPS data
	// set current PID mode
	byte dataMode;
	// occurrence of errors
	byte errors;
	// bit map of supported PIDs
	byte pidmap[4 * 4];
	// adapter version
	byte version;
protected:
	virtual char* getResponse(byte& pid, char* buffer, byte bufsize);
	virtual byte receive(char* buffer, byte bufsize, int timeout = OBD_TIMEOUT_SHORT);
	virtual void write(const char* s);
	virtual void dataIdleLoop() {}
	void recover();
	void debugOutput(const char* s);
	int normalizeData(byte pid, char* data);
	OBD_STATES m_state;
private:
	virtual uint8_t getPercentageValue(char* data)
	{
		return (uint16_t)hex2uint8(data) * 100 / 255;
	}
	virtual uint16_t getLargeValue(char* data)
	{
		return hex2uint16(data);
	}
	virtual uint8_t getSmallValue(char* data)
	{
		return hex2uint8(data);
	}
	virtual int16_t getTemperatureValue(char* data)
	{
		return (int)hex2uint8(data) - 40;
	}
	char* getResultValue(char* buf);
};

#define I2C_ADDR 0x62

#define MAX_PAYLOAD_SIZE 32
#define MAX_PIDS 8

#define CMD_QUERY_STATUS 0x10
#define CMD_SEND_AT_COMMAND 0x11
#define CMD_APPLY_OBD_PIDS 0x12
#define CMD_LOAD_OBD_DATA 0x13
#define CMD_GPS_SETUP 0x14
#define CMD_GPS_QUERY 0x15

typedef struct {
    uint16_t age;
    uint16_t value;
} PID_INFO;

typedef struct {
    uint16_t time;
    uint8_t message;
    uint8_t data;
} COMMAND_BLOCK;

class COBDI2C : public COBD {
public:
	void begin();
	void end();
	bool readPID(byte pid, int& result);
	byte readPID(const byte pid[], byte count, int result[]);
	void write(const char* s);
	// API not applicable
	bool setBaudRate(unsigned long baudrate) { return false; }
	// Asynchronized access API
	void setQueryPID(byte pid, byte obdPid[]);
	void applyQueryPIDs(byte obdPid[]);
	void loadQueryData(PID_INFO obdInfo[]);
protected:
	byte receive(char* buffer, byte bufsize, int timeout = OBD_TIMEOUT_SHORT);
	bool sendCommandBlock(byte cmd, uint8_t data = 0, byte* payload = 0, byte payloadBytes = 0);
};
/*************************************************************************
* Arduino Library for OBD-II UART/I2C Adapter
* Distributed under BSD License
* Visit http://freematics.com for more information
* (C)2012-2016 Stanley Huang <stanleyhuangyc@gmail.com>
*************************************************************************/

#include <Arduino.h>
#include <Wire.h>
#include "OBD.h"

//#define DEBUG Serial

uint16_t hex2uint16(const char *p)
{
	char c = *p;
	uint16_t i = 0;
	for (char n = 0; c && n < 4; c = *(++p)) {
		if (c >= 'A' && c <= 'F') {
			c -= 7;
		} else if (c>='a' && c<='f') {
			c -= 39;
        } else if (c == ' ') {
            continue;
        } else if (c < '0' || c > '9') {
			break;
        }
		i = (i << 4) | (c & 0xF);
		n++;
	}
	return i;
}

byte hex2uint8(const char *p)
{
	byte c1 = *p;
	byte c2 = *(p + 1);
	if (c1 >= 'A' && c1 <= 'F')
		c1 -= 7;
	else if (c1 >='a' && c1 <= 'f')
	    c1 -= 39;
	else if (c1 < '0' || c1 > '9')
		return 0;

	if (c2 >= 'A' && c2 <= 'F')
		c2 -= 7;
	else if (c2 >= 'a' && c2 <= 'f')
	    c2 -= 39;
	else if (c2 < '0' || c2 > '9')
		return 0;

	return c1 << 4 | (c2 & 0xf);
}

/*************************************************************************
* OBD-II UART Adapter
*************************************************************************/

byte COBD::sendCommand(const char* cmd, char* buf, byte bufsize, int timeout)
{
	write(cmd);
	dataIdleLoop();
	return receive(buf, bufsize, timeout);
}

void COBD::sendQuery(byte pid)
{
	char cmd[8];
	sprintf(cmd, "%02X%02X\r", dataMode, pid);
#ifdef DEBUG
	debugOutput(cmd);
#endif
	write(cmd);
}

bool COBD::readPID(byte pid, int& result)
{
	// send a query command
	sendQuery(pid);
	// receive and parse the response
	return getResult(pid, result);
}

byte COBD::readPID(const byte pid[], byte count, int result[])
{
	// send a multiple query command
	char buffer[128];
	char *p = buffer;
	byte results = 0;
	for (byte n = 0; n < count; n++) {
		p += sprintf(p, "%02X%02X\r", dataMode, pid[n]);		
	}
	write(buffer);
	// receive and parse the response
	for (byte n = 0; n < count; n++) {
		byte curpid = pid[n];
		if (getResult(curpid, result[n]))
			results++;
	}
	return results;
}

void COBD::clearDTC()
{
	char buffer[32];
	write("04\r");
	receive(buffer, sizeof(buffer));
}

void COBD::write(const char* s)
{
	OBDUART.write(s);
}

int COBD::normalizeData(byte pid, char* data)
{
	int result;
	switch (pid) {
	case PID_RPM:
	case PID_EVAP_SYS_VAPOR_PRESSURE: // kPa
		result = getLargeValue(data) >> 2;
		break;
	case PID_FUEL_PRESSURE: // kPa
		result = getSmallValue(data) * 3;
		break;
	case PID_COOLANT_TEMP:
	case PID_INTAKE_TEMP:
	case PID_AMBIENT_TEMP:
	case PID_ENGINE_OIL_TEMP:
		result = getTemperatureValue(data);
		break;
	case PID_THROTTLE:
	case PID_COMMANDED_EGR:
	case PID_COMMANDED_EVAPORATIVE_PURGE:
	case PID_FUEL_LEVEL:
	case PID_RELATIVE_THROTTLE_POS:
	case PID_ABSOLUTE_THROTTLE_POS_B:
	case PID_ABSOLUTE_THROTTLE_POS_C:
	case PID_ACC_PEDAL_POS_D:
	case PID_ACC_PEDAL_POS_E:
	case PID_ACC_PEDAL_POS_F:
	case PID_COMMANDED_THROTTLE_ACTUATOR:
	case PID_ENGINE_LOAD:
	case PID_ABSOLUTE_ENGINE_LOAD:
	case PID_ETHANOL_FUEL:
	case PID_HYBRID_BATTERY_PERCENTAGE:
		result = getPercentageValue(data);
		break;
	case PID_MAF_FLOW: // grams/sec
		result = getLargeValue(data) / 100;
		break;
	case PID_TIMING_ADVANCE:
		result = (int)(getSmallValue(data) / 2) - 64;
		break;
	case PID_DISTANCE: // km
	case PID_DISTANCE_WITH_MIL: // km
	case PID_TIME_WITH_MIL: // minute
	case PID_TIME_SINCE_CODES_CLEARED: // minute
	case PID_RUNTIME: // second
	case PID_FUEL_RAIL_PRESSURE: // kPa
	case PID_ENGINE_REF_TORQUE: // Nm
		result = getLargeValue(data);
		break;
	case PID_CONTROL_MODULE_VOLTAGE: // V
		result = getLargeValue(data) / 1000;
		break;
	case PID_ENGINE_FUEL_RATE: // L/h
		result = getLargeValue(data) / 20;
		break;
	case PID_ENGINE_TORQUE_DEMANDED: // %
	case PID_ENGINE_TORQUE_PERCENTAGE: // %
		result = (int)getSmallValue(data) - 125;
		break;
	case PID_SHORT_TERM_FUEL_TRIM_1:
	case PID_LONG_TERM_FUEL_TRIM_1:
	case PID_SHORT_TERM_FUEL_TRIM_2:
	case PID_LONG_TERM_FUEL_TRIM_2:
	case PID_EGR_ERROR:
		result = ((int)getSmallValue(data) - 128) * 100 / 128;
		break;
	case PID_FUEL_INJECTION_TIMING:
		result = ((int32_t)getLargeValue(data) - 26880) / 128;
		break;
	case PID_CATALYST_TEMP_B1S1:
	case PID_CATALYST_TEMP_B2S1:
	case PID_CATALYST_TEMP_B1S2:
	case PID_CATALYST_TEMP_B2S2:
		result = getLargeValue(data) / 10 - 40;
		break;
	case PID_AIR_FUEL_EQUIV_RATIO: // 0~200
		result = (long)getLargeValue(data) * 200 / 65536;
		break;
	default:
		result = getSmallValue(data);
	}
	return result;
}

char* COBD::getResponse(byte& pid, char* buffer, byte bufsize)
{
	while (receive(buffer, bufsize) > 0) {
		char *p = buffer;
		while ((p = strstr(p, "41 "))) {
		    p += 3;
		    byte curpid = hex2uint8(p);
		    if (pid == 0) pid = curpid;
		    if (curpid == pid) {
		        errors = 0;
		        p += 2;
		        if (*p == ' ')
		            return p + 1;
		    }
		}
	}
	return 0;
}

bool COBD::getResult(byte& pid, int& result)
{
	char buffer[64];
	char* data = getResponse(pid, buffer, sizeof(buffer));
	if (!data) {
		recover();
		errors++;
		return false;
	}
	result = normalizeData(pid, data);
	return true;
}

bool COBD::setProtocol(OBD_PROTOCOLS h)
{
    char buf[32];
	if (h == PROTO_AUTO) {
		write("ATSP00\r");
	} else {
		sprintf(buf, "ATSP%d\r", h);
		write(buf);
	}
	if (receive(buf, sizeof(buf), OBD_TIMEOUT_LONG) > 0 && strstr(buf, "OK"))
        return true;
    else
        return false;
}

void COBD::sleep()
{
  	char buf[32];
	sendCommand("ATLP\r", buf, sizeof(buf));
}

char* COBD::getResultValue(char* buf)
{
	char* p = buf;
	for (;;) {
		if (isdigit(*p) || *p == '-') {
			return p;
		}
		p = strchr(p, '\r');
		if (!p) break;
		if (*(++p) == '\n') p++;
	}
	return 0;
}

float COBD::getVoltage()
{
    char buf[32];
	if (sendCommand("ATRV\r", buf, sizeof(buf)) > 0) {
		char* p = getResultValue(buf);
		if (p) return atof(p);
    }
    return 0;
}

bool COBD::getVIN(char* buffer, byte bufsize)
{
	if (sendCommand("0902\r", buffer, bufsize)) {
        char *p = strstr(buffer, "0: 49 02");
        if (p) {
            char *q = buffer;
            p += 10;
            do {
                for (++p; *p == ' '; p += 3) {
                    if (*q = hex2uint8(p + 1)) q++;
                }
                p = strchr(p, ':');
            } while(p);
            *q = 0;
            return true;
        }
    }
    return false;
}

bool COBD::isValidPID(byte pid)
{
	if (pid >= 0x7f)
		return true;
	pid--;
	byte i = pid >> 3;
	byte b = 0x80 >> (pid & 0x7);
	return pidmap[i] & b;
}

void COBD::begin()
{
	OBDUART.begin(OBD_SERIAL_BAUDRATE);
#ifdef DEBUG
	DEBUG.begin(115200);
#endif
	recover();

	char buffer[32];
	version = 0;
	if (sendCommand("ATI\r", buffer, sizeof(buffer), 200)) {
		char *p = strstr(buffer, "OBDUART");
		if (p) {
			p += 9;
			version = (*p - '0') * 10 + (*(p + 2) - '0');
		}
	}
}

byte COBD::receive(char* buffer, byte bufsize, int timeout)
{
	unsigned char n = 0;
	unsigned long startTime = millis();
	for (;;) {
		if (OBDUART.available()) {
			char c = OBDUART.read();
			if (n > 2 && c == '>') {
				// prompt char received
				break;
			} else if (!buffer) {
			       n++;
			} else if (n < bufsize - 1) {
				if (c == '.' && n > 2 && buffer[n - 1] == '.' && buffer[n - 2] == '.') {
					// waiting siginal
					n = 0;
					timeout = OBD_TIMEOUT_LONG;
				} else {
					buffer[n++] = c;
				}
			}
		} else {
			if (millis() - startTime > timeout) {
			    // timeout
			    break;
			}
			dataIdleLoop();
		}
	}
	if (buffer) buffer[n] = 0;
	return n;
}

void COBD::recover()
{
	char buf[16];
	sendCommand("AT\r", buf, sizeof(buf));
}

bool COBD::init(OBD_PROTOCOLS protocol)
{
	const char *initcmd[] = {"ATZ\r","ATE0\r","ATL1\r","0100\r"};
	char buffer[64];

	m_state = OBD_CONNECTING;

	for (unsigned char i = 0; i < sizeof(initcmd) / sizeof(initcmd[0]); i++) {
#ifdef DEBUG
		debugOutput(initcmd[i]);
#endif
		write(initcmd[i]);
		if (receive(buffer, sizeof(buffer), OBD_TIMEOUT_LONG) == 0) {
			m_state = OBD_DISCONNECTED;
			return false;
		}
		delay(50);
	}

	if (protocol != PROTO_AUTO) {
		setProtocol(protocol);
	}

	// load pid map
	memset(pidmap, 0, sizeof(pidmap));
	for (byte i = 0; i < 4; i++) {
		byte pid = i * 0x20;
		sendQuery(pid);
		char* data = getResponse(pid, buffer, sizeof(buffer));
		if (!data) break;
		data--;
		for (byte n = 0; n < 4; n++) {
			if (data[n * 3] != ' ')
				break;
			pidmap[i * 4 + n] = hex2uint8(data + n * 3 + 1);
		}
		delay(100);
	}

	m_state = OBD_CONNECTED;
	errors = 0;
	return true;
}

void COBD::end()
{
	m_state = OBD_DISCONNECTED;
	OBDUART.end();
}

bool COBD::setBaudRate(unsigned long baudrate)
{
    OBDUART.print("ATBR1 ");
    OBDUART.print(baudrate);
    OBDUART.print('\r');
    delay(50);
    OBDUART.end();
    OBDUART.begin(baudrate);
    recover();
    return true;
}


float COBD::getTemperature()
{
	char buf[32];
	if (sendCommand("ATTEMP\r", buf, sizeof(buf)) > 0) {
		char* p = getResultValue(buf);
		if (p) return (float)(atoi(p) + 12412) / 340;
	}
	else {
		return -1000;
	}
}

bool COBD::readAccel(int& x, int& y, int& z)
{
	char buf[32];
	if (sendCommand("ATACL\r", buf, sizeof(buf)) > 0) do {
		char* p = getResultValue(buf);
		if (!p) break;
		x = atoi(p++);
		if (!(p = strchr(p, ','))) break;
		y = atoi(++p);
		if (!(p = strchr(p, ','))) break;
		z = atoi(++p);
		return true;
	} while (0);
	return false;
}

bool COBD::readGyro(int& x, int& y, int& z)
{
	char buf[32];
	if (sendCommand("ATGYRO\r", buf, sizeof(buf)) > 0) do {
		char* p = getResultValue(buf);
		if (!p) break;
		x = atoi(p++);
		if (!(p = strchr(p, ','))) break;
		y = atoi(++p);
		if (!(p = strchr(p, ','))) break;
		z = atoi(++p);
		return true;
	} while (0);
	return false;
}

#ifdef DEBUG
void COBD::debugOutput(const char *s)
{
	DEBUG.print('[');
	DEBUG.print(millis());
	DEBUG.print(']');
	DEBUG.println(s);
}
#endif

/*************************************************************************
* OBD-II I2C Adapter
*************************************************************************/

void COBDI2C::begin()
{
	Wire.begin();
#ifdef DEBUG
	DEBUG.begin(115200);
#endif
	recover();

	char buffer[32];
	version = 0;
	if (sendCommand("ATI\r", buffer, sizeof(buffer), 200)) {
		char *p = strstr(buffer, "OBDUART");
		if (p) {
			p += 9;
			version = (*p - '0') * 10 + (*(p + 2) - '0');
		}
	}
}

void COBDI2C::end()
{
	m_state = OBD_DISCONNECTED;
}

bool COBDI2C::readPID(byte pid, int& result)
{
	sendQuery(pid);
	dataIdleLoop();
	return getResult(pid, result);
}

void COBDI2C::write(const char* s)
{
	COMMAND_BLOCK cmdblock = {millis(), CMD_SEND_AT_COMMAND};
	Wire.beginTransmission(I2C_ADDR);
	Wire.write((byte*)&cmdblock, sizeof(cmdblock));
	Wire.write(s);
	Wire.endTransmission();
}

bool COBDI2C::sendCommandBlock(byte cmd, uint8_t data, byte* payload, byte payloadBytes)
{
	COMMAND_BLOCK cmdblock = {millis(), cmd, data};
	Wire.beginTransmission(I2C_ADDR);
	bool success = Wire.write((byte*)&cmdblock, sizeof(COMMAND_BLOCK)) == sizeof(COMMAND_BLOCK);
	if (payload) Wire.write(payload, payloadBytes);
	Wire.endTransmission();
	return success;
}

byte COBDI2C::receive(char* buffer, byte bufsize, int timeout)
{
	uint32_t start = millis();
	byte offset = 0;
	do {
		Wire.requestFrom((byte)I2C_ADDR, (byte)MAX_PAYLOAD_SIZE, (byte)1);
		int c = Wire.read();
		if (offset == 0 && c < 0xa) {
			 // data not ready
			dataIdleLoop();
			continue; 
		}
		if (buffer) buffer[offset++] = c;
		for (byte i = 1; i < MAX_PAYLOAD_SIZE && Wire.available(); i++) {
			char c = Wire.read();
			if (c == '.' && offset > 2 && buffer[offset - 1] == '.' && buffer[offset - 2] == '.') {
				// waiting signal
				offset = 0;
				timeout = OBD_TIMEOUT_LONG;
			} else if (c == 0 || offset == bufsize - 1) {
				// string terminator encountered or buffer full
				if (buffer) buffer[offset] = 0;
				// discard the remaining data
				while (Wire.available()) Wire.read();
				return offset;
			} else {
				if (buffer) buffer[offset++] = c;
			}
		}
	} while(millis() - start < timeout);
	if (buffer) buffer[offset] = 0;
	return 0;
}

byte COBDI2C::readPID(const byte pid[], byte count, int result[])
{
	byte results = 0; 
	for (byte n = 0; n < count; n++) {
		if (readPID(pid[n], result[n])) {
			results++;
		}
	}
	return results;
}

void COBDI2C::setQueryPID(byte pid, byte obdPid[])
{
	byte n = 0;
	for (; n < MAX_PIDS && obdPid[n]; n++) {
		if (obdPid[n] == pid)
			return;
	}
	if (n == MAX_PIDS) {
		memmove(obdPid, obdPid + 1, sizeof(obdPid[0]) * (MAX_PIDS - 1));
		n = MAX_PIDS - 1;
	}
	obdPid[n] = pid;
}

void COBDI2C::applyQueryPIDs(byte obdPid[])
{
	sendCommandBlock(CMD_APPLY_OBD_PIDS, 0, (byte*)obdPid, sizeof(obdPid[0])* MAX_PIDS);
	delay(200);
}

void COBDI2C::loadQueryData(PID_INFO obdInfo[])
{
	sendCommandBlock(CMD_LOAD_OBD_DATA);
	dataIdleLoop();
	Wire.requestFrom((byte)I2C_ADDR, (byte)MAX_PAYLOAD_SIZE, (byte)0);
	Wire.readBytes((char*)obdInfo, sizeof(obdInfo[0]) * MAX_PIDS);
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

taha17 пишет:
еще в нете где то раньше я находил (и скачал)библиотеку OBD.h

а по поводу этого я вам уже отвечал в теме про опель:

MaksVV пишет:
То что вы привели по ссылке это просто диагностика авто при помощи универсального адаптера elm327. Т.е. всю «грязную» работу делает он. И в ардуино уже идут готовенькие данные. Таким путем проще идти. Дак берите и делайте как там написано, где проблема? Если же идти путем соединения обычным к-лайн адаптером, то весь протокол нужно самому изучать. Для этого я и говорю вам нужна рабочая диагностика, хотябы при помощи того же елм.берете и подсматриваете байты. А так самое трудно блок разговорить, т.е инит пройти. А запросы то че, они стандартные

MaksVV
Offline
Зарегистрирован: 06.08.2015

Вот скетч на скорую руку набрасал. Вдруг заработает. Скетч вытягивает от ECU обороты и шлёт их в сериал порт. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11


byte ECUaddress = 0x01;   // адрес блока двигателя, можно попробовать с другими адресами


bool Init = 0;

byte Parameter;           //номер передаваемого параметра от ECU
byte a;
byte b;
uint8_t number = 0;
byte counter = 0x01; 
byte countPID = 0; 

int RPM = 0;             // переменная оборотов





void setup() 
{
Serial.begin (115200);
Serial.println(F("---KWP 5 baud init"));
delay (500);
pinMode (TX, OUTPUT);
digitalWrite (TX, HIGH); // BUS IDLE
delay (500);



send5baud(ECUaddress); // функция отправки адреса блоку
mySerial.begin (9600);

}


void loop() {


  

while( mySerial.available()) {
    byte inByte = mySerial.read();
    if (!Init && inByte == 0x8A && number==0){ mySerial.write (0x75); number++;}
    if (!Init && inByte == 0x1B && number==1){ mySerial.write (0xE4); delay (2); number=0; Init = 1;}
    
    
    if (Init){
    if (number ==0){ mySerial.write (0x04); number++;}
    else if (number ==1 && inByte == 0xFB){ mySerial.write (counter);  number++; }
    else if (number ==2 && inByte == (counter ^ 0xFF)) {counter++; mySerial.write (0x29);number++;  }
    else if (number ==3 && inByte == 0xD6) {mySerial.write (0x01);number++;  }
    else if (number ==4 && inByte == 0xFE) {mySerial.write (0x03);number++;  }
    else if (number ==5 && inByte == 0x0F) {mySerial.write (0xF0);number++;  }
    else if (number ==6 && inByte == counter) {mySerial.write (inByte^0xFF);number++; counter++; }
    else if (number ==7 && inByte == 0xE7) {mySerial.write (inByte^0xFF);number++;  }
    else if (number ==8) {Parameter=inByte; mySerial.write (inByte^0xFF);number++;  }
    else if (number ==9) {a=inByte; mySerial.write (inByte^0xFF); number++;}
    else if (number ==10) {b=inByte; mySerial.write (inByte^0xFF);  
          
        if (Parameter == 0x01)  RPM = 0.2*a*b;
    
    countPID++;
    if (countPID>=4) {mySerial.write (0x03); countPID=0; number = 0; Serial.print(" RPM = "); Serial.println(RPM); delay (20);}
    else number = 8;
    }
   
    
      }


    
    Serial.print(" ");
    Serial.print(inByte,HEX);
             }
   
   
     
    }





//ниже отправка блоку байта адреса на 5бод  1 стартбит, 7бит данных, 1 бит проверки четности odd, 1 стоп бит

void send5baud(uint8_t data){              
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(TX, HIGH);
    } else {
      // low
      digitalWrite(TX, LOW);
    }
  }
  mySerial.flush();
}


 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Расписал ваш снифф с блоком, чтобы было понятнее что к чему. Собственно, походу, сдался протокол KW1281

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

MaksVV пишет:

Вот скетч на скорую руку набрасал. Вдруг заработает. Скетч вытягивает от ECU обороты и шлёт их в сериал порт. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11


byte ECUaddress = 0x01;   // адрес блока двигателя, можно попробовать с другими адресами


bool Init = 0;

byte Parameter;           //номер передаваемого параметра от ECU
byte a;
byte b;
uint8_t number = 0;
byte counter = 0x01; 
byte countPID = 0; 

int RPM = 0;             // переменная оборотов





void setup() 
{
Serial.begin (115200);
Serial.println(F("---KWP 5 baud init"));
delay (500);
pinMode (TX, OUTPUT);
digitalWrite (TX, HIGH); // BUS IDLE
delay (500);



send5baud(ECUaddress); // функция отправки адреса блоку
mySerial.begin (9600);

}


void loop() {


  

while( mySerial.available()) {
    byte inByte = mySerial.read();
    if (!Init && inByte == 0x8A && number==0){ mySerial.write (0x75); number++;}
    if (!Init && inByte == 0x1B && number==1){ mySerial.write (0xE4); delay (2); number=0; Init = 1;}
    
    
    if (Init){
    if (number ==0){ mySerial.write (0x04); number++;}
    else if (number ==1 && inByte == 0xFB){ mySerial.write (counter);  number++; }
    else if (number ==2 && inByte == (counter ^ 0xFF)) {counter++; mySerial.write (0x29);number++;  }
    else if (number ==3 && inByte == 0xD6) {mySerial.write (0x01);number++;  }
    else if (number ==4 && inByte == 0xFE) {mySerial.write (0x03);number++;  }
    else if (number ==5 && inByte == 0x0F) {mySerial.write (0xF0);number++;  }
    else if (number ==6 && inByte == counter) {mySerial.write (inByte^0xFF);number++; counter++; }
    else if (number ==7 && inByte == 0xE7) {mySerial.write (inByte^0xFF);number++;  }
    else if (number ==8) {Parameter=inByte; mySerial.write (inByte^0xFF);number++;  }
    else if (number ==9) {a=inByte; mySerial.write (inByte^0xFF); number++;}
    else if (number ==10) {b=inByte; mySerial.write (inByte^0xFF);  
          
        if (Parameter == 0x01)  RPM = 0.2*a*b;
    
    countPID++;
    if (countPID>=4) {mySerial.write (0x03); countPID=0; number = 0; Serial.print(" RPM = "); Serial.println(RPM); delay (20);}
    else number = 8;
    }
   
    
      }


    
    Serial.print(" ");
    Serial.print(inByte,HEX);
             }
   
   
     
    }





//ниже отправка блоку байта адреса на 5бод  1 стартбит, 7бит данных, 1 бит проверки четности odd, 1 стоп бит

void send5baud(uint8_t data){              
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(TX, HIGH);
    } else {
      // low
      digitalWrite(TX, LOW);
    }
  }
  mySerial.flush();
}


 

Во результат по скетчу, наверное что-то идет не так.

---KWP 5 baud init
bit0=0 startbit
bit1=1
bit2=0
bit3=0
bit4=0
bit5=0
bit6=0
bit7=0
bit8=0 parity
bit9=1 stopbit
 55 1 8A 1B 1B 1B
 \\если пере открыть окно терминала, то сообщения эти чередуются... сначала одно, потом второе. 
 55 1 8A 55 1 8A 55 1 8A

Кстате, весьма благодарен вам за помощь )))) 

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

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