Select language:

Протокол обмена данными

<<

alvikagal

Аватара пользователя

Сообщения: 2457

Зарегистрирован: 18 сен 2013, 01:58

Откуда: Украина, Павлоград

Машина: ВАЗ-21099 1,5л.

Версия SECU: самодельная SECU-3T


Благодарил (а): 303 раз.
Поблагодарили: 407 раз.

Сообщение 20 сен 2015, 03:24

Протокол обмена данными

STC, подскажи какой расчёт с полученными данными SENSOR_DAT?
Вот получил я пакет:
  Код:
40 71 00 00 01 CB 00 00 FB CE 00 00 00 00 00 00 00 11 00 00 00 00 00 00 0A 82 C8 00 00 00 00 00 7F FF 00 00 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 0D

40 - @ \\ Начало пакета
71 - q \\ SENSOR_DAT
...
0D - CR \\ Конец пакета

Расписал этот пакет:
  Код:
                                \\ 40    \ Начало пакета
  case SENSOR_DAT:                    \\ 71    \ SENSOR_DAT
   build_i16h(d->sens.frequen);           \\ 00 00 \ 0
   build_i16h(d->sens.map);               \\ 01 CB \ 7,17
   build_i16h(d->sens.voltage);           \\ 00 00 \ 0
   build_i16h(d->sens.temperat);          \\ FB CE \ 16115,5=64462\4
   build_i16h(d->corr.curr_angle);        \\ 00 00 \ 0
   build_i16h(d->sens.knock_k);           \\ 00 00 \ 0
   build_i16h(d->corr.knock_retard);      \\ 00 00 \ 0
   build_i8h(d->airflow);                 \\ 00     \ 0
   build_i8h((d->ie_valve   << 0) |       \\ 11    \ ЭПХХ=1 СЕ=1
             (d->sens.carb  << 1) |       
             (d->sens.gas   << 2) |       
             (d->fe_valve   << 3) |       
             (d->ce_state   << 4) |       
             (d->cool_fan   << 5) |       
             (d->st_block   << 6));       
   build_i8h(d->sens.tps);                \\ 00    \ 0
   build_i16h(d->sens.add_i1);            \\ 00 00 \ 0
   build_i16h(d->sens.add_i2);            \\ 00 00 \ 0
   build_i16h(d->ecuerrors_for_transfer); \\ 00 0A \ 0000000000001010
   build_i8h(d->choke_pos);               \\ 82
   build_i16h(d->sens.speed);             \\ C8 00 \ 0
   build_i24h(d->sens.distance);          \\ 00 00 \ 0
   build_i16h(d->sens.air_temp);        \\ 00 00 \ 0
   build_i16h(d->corr.strt_aalt);         \\ 7F FF \
   build_i16h(d->corr.idle_aalt);         \\ 00 00 \
   build_i16h(d->corr.work_aalt);         \\ 7F FF \
   build_i16h(d->corr.temp_aalt);         \\ 7F FF \
   build_i16h(d->corr.airt_aalt);         \\ 7F FF \
   build_i16h(d->corr.idlreg_aac);        \\ 7F FF \
   build_i16h(d->corr.octan_aac);         \\ 7F FF \
   build_i16h(d->corr.lambda);            \\ 00 00 \
   build_i16h(d->inj_pw);                 \\ 00 00 \
                                 \\ 00 00 \
                                \\ 0D    \ Конец пакета


В конце есть 00 00 , это резервные биты?

Можешь объяснить какие коэффициенты нужно применять и к каким данным?
Например:
  Код:
Абсолютное давление во впускном коллекторе (давление кПа * 64)


Не понятна рассчитаная температура ДТОЖ = FB CE = 64462\4 = 16115,5 и коррекция УОЗ 7FFF.
60-2/SECU/ДКЗ/бенз-газ/ДД/ДТВ/УДК/ШДГ/ВЗ
Отчёт - viewtopic.php?f=6&t=236
Бортовой компьютер 20*04 - viewtopic.php?p=19996#p19996
SD card logger - viewtopic.php?f=12&t=1029
<<

STC

Аватара пользователя

Сообщения: 5768

Зарегистрирован: 30 апр 2013, 23:41

Откуда: Ukraine

Машина: AZLK 2140

Версия SECU: самодельная SECU-3


Благодарил (а): 697 раз.
Поблагодарили: 1135 раз.

Сообщение 20 сен 2015, 19:12

Re: Протокол обмена данными

Прошивка настроена на передачу данных в бинарном виде?
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
<<

alvikagal

Аватара пользователя

Сообщения: 2457

Зарегистрирован: 18 сен 2013, 01:58

Откуда: Украина, Павлоград

Машина: ВАЗ-21099 1,5л.

Версия SECU: самодельная SECU-3T


Благодарил (а): 303 раз.
Поблагодарили: 407 раз.

Сообщение 20 сен 2015, 19:21

Re: Протокол обмена данными

Да, прошивка бинарная, это данные переданные в терминал, только в формате НЕХ.
60-2/SECU/ДКЗ/бенз-газ/ДД/ДТВ/УДК/ШДГ/ВЗ
Отчёт - viewtopic.php?f=6&t=236
Бортовой компьютер 20*04 - viewtopic.php?p=19996#p19996
SD card logger - viewtopic.php?f=12&t=1029
<<

STC

Аватара пользователя

Сообщения: 5768

Зарегистрирован: 30 апр 2013, 23:41

Откуда: Ukraine

Машина: AZLK 2140

Версия SECU: самодельная SECU-3


Благодарил (а): 697 раз.
Поблагодарили: 1135 раз.

Сообщение 20 сен 2015, 21:16

Re: Протокол обмена данными

Есть нюанс. А именно, есть несколько зарезервированных байтов, которые используются для указания начала, конца пакета и для указания замены зарезервированного символа. Если зарезервированный символ встречается в теле пакета, то он заменяется на последовательность байтов. Идея описана тут http://caxapa.ru/lib/wake/

Вот отрывок из кода, где объявляются эти байты:
  Код:
// There are several special reserved symbols in binary mode: 0x21, 0x40, 0x0D, 0x0A
#define FIBEGIN  0x21       //!< '!' indicates beginning of the ingoing packet
#define FOBEGIN  0x40       //!< '@' indicates beginning of the outgoing packet
#define FIOEND   0x0D       //!<'\r' indicates ending of the ingoing/outgoing packet
#define FESC     0x0A       //!<'\n' Packet escape (FESC)
// Following bytes are used only in escape sequeces and may appear in the data without any problems
#define TFIBEGIN 0x81       //!< Transposed FIBEGIN
#define TFOBEGIN 0x82       //!< Transposed FOBEGIN
#define TFIOEND  0x83       //!< Transposed FIOEND
#define TFESC    0x84       //!< Transposed FESC


Ты занимаешься разбором пакета, который пришел от SECU-3. Значит у тебя есть 3 зарезервированных байта: 0x40, 0x0D, 0x0A. Когда SECU-3 формирует пакет для передачи оно проверяет каждый байт в теле пакета и если там например встречается байт со значением 0x40, то он заменяется на 0x0A, 0x82. 0x0D соответственно заменяется на 0x0A, 0x83. 0x0A заменяется соответственно на 0x0A, 0x84.
Если ты встречаешь в данных пакета 0x0A, то значит этот байт и следующий за ним нужно заменить на соответствующее значение (обратно тому, что делает SECU-3 при формировании пакета).
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
<<

STC

Аватара пользователя

Сообщения: 5768

Зарегистрирован: 30 апр 2013, 23:41

Откуда: Ukraine

Машина: AZLK 2140

Версия SECU: самодельная SECU-3


Благодарил (а): 697 раз.
Поблагодарили: 1135 раз.

Сообщение 20 сен 2015, 21:26

Re: Протокол обмена данными

  Код:
build_i16h(d->sens.temperat);          \\ FB CE \ 16115,5=64462\4

Температура это число со знаком и может быть отрицательным (если старший бит равен 1, то число отрицательное). В этом примере как раз отрицательная температура.
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
<<

alvikagal

Аватара пользователя

Сообщения: 2457

Зарегистрирован: 18 сен 2013, 01:58

Откуда: Украина, Павлоград

Машина: ВАЗ-21099 1,5л.

Версия SECU: самодельная SECU-3T


Благодарил (а): 303 раз.
Поблагодарили: 407 раз.

Сообщение 20 сен 2015, 21:30

Re: Протокол обмена данными

Т.е. полученый пакет будет иметь на 16бит (значение 0А убираем) меньше?
  Код:
Приняли:
40 71 00 00 01 CB 00 00 FB CE 00 00 00 00 00 00 00 11 00 00 00 00 00 00 0A 82 C8 00 00 00 00 00 7F FF 00 00 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 0D
Заменили:
40 71 00 00 01 CB 00 00 FB CE 00 00 00 00 00 00 00 11 00 00 00 00 00 00 40 C8 00 00 00 00 00 7F FF 00 00 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 0D

Но ещё остаётся 16 бит в пакете лишних.

  Код:
                                \\ 40    \ Начало пакета
  case SENSOR_DAT:                    \\ 71    \ SENSOR_DAT
   build_i16h(d->sens.frequen);           \\ 00 00 \ 0
   build_i16h(d->sens.map);               \\ 01 CB \ 7,17
   build_i16h(d->sens.voltage);           \\ 00 00 \ 0
   build_i16h(d->sens.temperat);          \\ FB CE \ 16115,5=64462\4
   build_i16h(d->corr.curr_angle);        \\ 00 00 \ 0
   build_i16h(d->sens.knock_k);           \\ 00 00 \ 0
   build_i16h(d->corr.knock_retard);      \\ 00 00 \ 0
   build_i8h(d->airflow);                 \\ 00     \ 0
   build_i8h((d->ie_valve   << 0) |       \\ 11    \ ЭПХХ=1 СЕ=1
             (d->sens.carb  << 1) |       
             (d->sens.gas   << 2) |       
             (d->fe_valve   << 3) |       
             (d->ce_state   << 4) |       
             (d->cool_fan   << 5) |       
             (d->st_block   << 6));       
   build_i8h(d->sens.tps);                \\ 00    \ 0
   build_i16h(d->sens.add_i1);            \\ 00 00 \ 0
   build_i16h(d->sens.add_i2);            \\ 00 00 \ 0
   build_i16h(d->ecuerrors_for_transfer); \\ 00 40 \ 0000000001000000
   build_i8h(d->choke_pos);               \\  C8
   build_i16h(d->sens.speed);             \\ 00 00 \ 0
   build_i24h(d->sens.distance);          \\ 00 00 \ 0
   build_i16h(d->sens.air_temp);        \\ 00 7F \ 0
   build_i16h(d->corr.strt_aalt);         \\  FF 00 \
   build_i16h(d->corr.idle_aalt);         \\ 00 7F \
   build_i16h(d->corr.work_aalt);         \\ FF 7F \
   build_i16h(d->corr.temp_aalt);        \\ FF 7F \
   build_i16h(d->corr.airt_aalt);        \\ FF 7F \
   build_i16h(d->corr.idlreg_aac);        \\ FF 7F \
   build_i16h(d->corr.octan_aac);         \\ FF 00 \
   build_i16h(d->corr.lambda);            \\ 00 00 \
   build_i16h(d->inj_pw);                 \\ 00 00 \
                                 \\ 00  \
                                \\ 0D    \ Конец пакета


Бред какой-то в конце получается
60-2/SECU/ДКЗ/бенз-газ/ДД/ДТВ/УДК/ШДГ/ВЗ
Отчёт - viewtopic.php?f=6&t=236
Бортовой компьютер 20*04 - viewtopic.php?p=19996#p19996
SD card logger - viewtopic.php?f=12&t=1029
<<

alvikagal

Аватара пользователя

Сообщения: 2457

Зарегистрирован: 18 сен 2013, 01:58

Откуда: Украина, Павлоград

Машина: ВАЗ-21099 1,5л.

Версия SECU: самодельная SECU-3T


Благодарил (а): 303 раз.
Поблагодарили: 407 раз.

Сообщение 20 сен 2015, 21:44

Re: Протокол обмена данными

STC писал(а):
  Код:
build_i16h(d->sens.temperat);          \\ FB CE \ 16115,5=64462\4

Температура это число со знаком и может быть отрицательным (если старший бит равен 1, то число отрицательное). В этом примере как раз отрицательная температура.

И как ведётся расчёт, если отрицательная температура? Этот бит нужно игнорировать? Т.е. нужно его нужно отнять и получаем 7BCE?
60-2/SECU/ДКЗ/бенз-газ/ДД/ДТВ/УДК/ШДГ/ВЗ
Отчёт - viewtopic.php?f=6&t=236
Бортовой компьютер 20*04 - viewtopic.php?p=19996#p19996
SD card logger - viewtopic.php?f=12&t=1029
<<

STC

Аватара пользователя

Сообщения: 5768

Зарегистрирован: 30 апр 2013, 23:41

Откуда: Ukraine

Машина: AZLK 2140

Версия SECU: самодельная SECU-3


Благодарил (а): 697 раз.
Поблагодарили: 1135 раз.

Сообщение 20 сен 2015, 22:28

Re: Протокол обмена данными

И как ведётся расчёт, если отрицательная температура? Этот бит нужно игнорировать? Т.е. нужно его нужно отнять и получаем 7BCE?

Нужно сказать компилятору чтобы он считал что это число со знаком. Для этого нужно "кастонуть" uint16_t в int16_t.
int16_t signed_value = (int16_t)unsigned_value;
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
<<

alvikagal

Аватара пользователя

Сообщения: 2457

Зарегистрирован: 18 сен 2013, 01:58

Откуда: Украина, Павлоград

Машина: ВАЗ-21099 1,5л.

Версия SECU: самодельная SECU-3T


Благодарил (а): 303 раз.
Поблагодарили: 407 раз.

Сообщение 20 сен 2015, 23:42

Re: Протокол обмена данными

А что делать с лишним байтом в пакете?
viewtopic.php?p=17733#p17733
60-2/SECU/ДКЗ/бенз-газ/ДД/ДТВ/УДК/ШДГ/ВЗ
Отчёт - viewtopic.php?f=6&t=236
Бортовой компьютер 20*04 - viewtopic.php?p=19996#p19996
SD card logger - viewtopic.php?f=12&t=1029
<<

STC

Аватара пользователя

Сообщения: 5768

Зарегистрирован: 30 апр 2013, 23:41

Откуда: Ukraine

Машина: AZLK 2140

Версия SECU: самодельная SECU-3


Благодарил (а): 697 раз.
Поблагодарили: 1135 раз.

Сообщение 21 сен 2015, 00:36

Re: Протокол обмена данными

А речь идет про какой релиз? Или это девелопмент версия из master?
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
След.

Вернуться в Программное обеспечение для ПК и релизы ПО

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Powered by phpBB® Forum Software © phpBB Group.