PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Общение с машиной

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2015, 22:16   #11
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Идентификатор 520, байты 0 и 1

C = buf[0];
C = (C*256+buf[1])/8;

Только файлы можно просто прикреплять к сообщению, а не вставлять их в текст
Bersenev вне форума   Ответить с цитированием
Старый 16.07.2015, 23:37   #12
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Bersenev
Как ты это делаешь шаман?
Какой прогой анализируешь?
Спасибо огромное!

Кстати по запросу через OBD II я так ни чего и не понял, но попробую ещё подумать.
Вики я всю пересмотрел.

PS. А что ещё можно извлечь из данного лога?

И проверил ща в машине.
Там опять какая-то каша!
Без запуска двигателя кажет
<CUT>

Скетч приобрёл вид
#include <SPI.h>
#include "mcp_can.h"
MCP_CAN CAN(10);
unsigned char len = 0;
unsigned char buf[8];
unsigned int RPM;
INT32U canId = 0x000; // идентификаторы могут быть 11-ти или 29-битные

void setup()
{
Serial.begin(115200);

START_INIT:

if(CAN_OK == CAN.begin(CAN_500KBPS,MCP_8MHz))
{
Serial.println("Init OK!");
}
else
{
Serial.println("Init fail");
delay(100);
goto START_INIT;
}
}

void loop()
{
if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf);
canId = CAN.getCanId();
if (canId = 520)
{
RPM = buf[0];
RPM = (RPM*256+buf[1])/8;
Serial.print("Engine RPM: ");
Serial.println(RPM);
}
}
}

Последний раз редактировалось T_r_D; 17.07.2015 в 00:31.
T_r_D вне форума   Ответить с цитированием
Старый 17.07.2015, 00:01   #13
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Какой прогой анализируешь?
Своей, так как постоянно приходится вскрывать протоколы разной техники, пришлось написать для себя программку

Цитата:
Сообщение от T_r_D Посмотреть сообщение
PS. А что ещё можно извлечь из данного лога?
Из этого лога только обороты, так как для них он и делался, вроде ещё попалась температура ОЖ, но не факт. Для всего есть своя методика, но меня по работе интересует в основном скорость и уровень топлива
Bersenev вне форума   Ответить с цитированием
Старый 17.07.2015, 00:04   #14
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
if (canId = 520)
А надо

if (canId == 520)
Bersenev вне форума   Ответить с цитированием
Старый 17.07.2015, 00:28   #15
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Bersenev всё- заработало, ещё раз спасибо!
А остальные цифры в 520 что-то значат?
Возможно ли что в одном ID два параметра находятся?

А в принципе видимо из этих данных можно выловить всё о машине что касается двигателя?

Как сделать лог для всего остального?
Ну например той же температуры ОЖ, скорости, напряжения, уровня топлива и самое главное расхода топлива?

И можно ли каким-то стандартным софтом анализировать протокол?
Хочу хоть примерно понять.

PS. Температура ОЖ там врядли была. она ровнялась температуре окружающей среды
T_r_D вне форума   Ответить с цитированием
Старый 17.07.2015, 00:59   #16
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Bersenev всё- заработало, ещё раз спасибо!
А остальные цифры в 520 что-то значат?
Возможно ли что в одном ID два параметра находятся?
Конечно возможно, даже в одном байте разные биты могут отвечать за разные датчики.

Цитата:
Сообщение от T_r_D Посмотреть сообщение
А в принципе видимо из этих данных можно выловить всё о машине что касается двигателя?
Можно, но сложно, если нет описания протокола.

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Как сделать лог для всего остального?
Ну например той же температуры ОЖ, скорости, напряжения, уровня топлива и самое главное расхода топлива?
Для ОЖ просто зависти машину и ждать подъёма температуры градусов на десять. Для скорости равномерно разогнать машину до 40 - 50 км/ч и также спокойно остановиться. Напряжение не искал, но я бы просто померял его с помощью ардуино. Для топлива снимаем протокол, потом заливаем 10-20 литров и снова снимаем, для верности ещё заливаем и ещё раз снимаем протокол, потом анализируем три протокола. Расхода топлива в протоколе нет, его надо рассчитывать на основе других данных.

Цитата:
Сообщение от T_r_D Посмотреть сообщение
И можно ли каким-то стандартным софтом анализировать протокол?
Хочу хоть примерно понять.
я не знаю такого софта, все канхакеры, что находилось в сети, мне не подошли.

Цитата:
Сообщение от T_r_D Посмотреть сообщение
PS. Температура ОЖ там врядли была. она ровнялась температуре окружающей среды
ид 1362 , байт 1 и 2. формула скорее всего такая

(buf[1]*256 + buf[2])/256

то есть в байте 1 температура в градусах, а в байте 2 значение после запятой. У тебя в логе она поднялась с 37.8 до 39.2
Bersenev вне форума   Ответить с цитированием
Старый 17.07.2015, 01:36   #17
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Конечно возможно, даже в одном байте разные биты могут отвечать за разные датчики.
ТОгда нужно будет проконтролить не идёт ли чего нить ещё с оборотами вместе.

Цитата:
ид 1362 , байт 1 и 2. формула скорее всего такая

(buf[1]*256 + buf[2])/256

то есть в байте 1 температура в градусах, а в байте 2 значение после запятой. У тебя в логе она поднялась с 37.8 до 39.2
Завтра проверю.

И если будет время запишу лог разгона и торможения.

По поводу напряжения- хочется всётаки понять где оно там спрятано.

По поводу топлива- алгоритм-то понятен. Надо только лейку найти и доехать в канистру 20л бензина налить, вот только как потом ровно по 10 литров налить?
А второй канистры нету.

По поводу расхода- понятно. Там наверняка берётся из расчёта времени открытия форсунок и может быть давления в рампе.
T_r_D вне форума   Ответить с цитированием
Старый 17.07.2015, 21:11   #18
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Снял лог.
Разгон 0-60 и потом 60-0 с отпущенным газом.
Файл приложил.
В архиве txt

Про температуру.
Вчера ты написал
Цитата:
ид 1362 , байт 1 и 2. формула скорее всего такая

(buf[1]*256 + buf[2])/256

то есть в байте 1 температура в градусах, а в байте 2 значение после запятой. У тебя в логе она поднялась с 37.8 до 39.2
Скорее всего не 37.8, а 18.9 так как тепмература на улице не могла быть 40 градусов
Ща схожу проверю в машине.
Вложения
Тип файла: zip speed.zip (66.1 Кб, 1253 просмотров)
T_r_D вне форума   Ответить с цитированием
Старый 17.07.2015, 23:38   #19
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

ид 1101 скорость в 0 и 1, 2 и 3, 4 и 5, 6 и 7 байтах, но судя по всему в первых трёх парах скорость в милях, а в последней в километрах

Если разгонялся до 60 км/ч, то формула такая

(buf[6]*256 + buf[7])/200

Но это ещё надо разбираться, возможно что скорость в км именно в 0 и 1 байтах, тогда

(buf[0]*256 + buf[1])/100

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

также скорость в ид 909 байт 0 и 1

(buf[0]*256 + buf[1])/100

В моторной шине скорость часто идёт с разными ид.

Но лучше их брать с шины которая идёт на панель приборов., там она всегда одна.

а ид 1362 ночно не температура ОЖ
Bersenev вне форума   Ответить с цитированием
Старый 17.07.2015, 23:49   #20
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Bersenev
1362 это какой-то таймер и обновляется раз в секунду.

По поводу скорости- я примерно до 60 разогнался. Может чуть меньше.

в 909 скорость в милях?

В итоге всётаки выходит что мне проще читать через OBD II данные.
Мне на самом деле нужно просто повторить показания на экране бортового компа.
А всё остальное это уже баловство.
А на экране отображается
1 Расход на 100
2 Моментальный расход
3 Расстояние которое можно проехать до заправки
4 Трип счётчик

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

Так что думаю что сделаю проще.
В диаг разъём вставлю ELM, а с него уже буду брать данные.
Так проще и про ELM всё рассказано уже.

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

То что ты расшифровал в логе по скорости- проверю.
T_r_D вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 21:27.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot