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

Обсуждаем все что касается программ для персонального компьютера:
менеджер, логгер, автопостроитель кривых УОЗ и т.д.
Post Reply
alvikagal
Posts: 4657
Joined: 18 Sep 2013, 01:58
Your CAR: ВАЗ-21099 1,5л.
SECU version: official SECU-3i TBZ
Location: Украина, Павлоград
Has thanked: 624 times
Been thanked: 1020 times
Contact:

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

Post by alvikagal »

STC, подскажи какой расчёт с полученными данными SENSOR_DAT?
Вот получил я пакет:

Code: Select all

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 \\ Конец пакета

Расписал этот пакет:

Code: Select all

										  \\ 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 , это резервные биты?

Можешь объяснить какие коэффициенты нужно применять и к каким данным?
Например:

Code: Select all

Абсолютное давление во впускном коллекторе (давление кПа * 64)
Не понятна рассчитаная температура ДТОЖ = FB CE = 64462\4 = 16115,5 и коррекция УОЗ 7FFF.
60-2/SECU-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

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

Post by STC »

Прошивка настроена на передачу данных в бинарном виде?
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
Posts: 4657
Joined: 18 Sep 2013, 01:58
Your CAR: ВАЗ-21099 1,5л.
SECU version: official SECU-3i TBZ
Location: Украина, Павлоград
Has thanked: 624 times
Been thanked: 1020 times
Contact:

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

Post by alvikagal »

Да, прошивка бинарная, это данные переданные в терминал, только в формате НЕХ.
60-2/SECU-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

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

Post by STC »

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

Вот отрывок из кода, где объявляются эти байты:

Code: Select all

// 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 (вступаем!)
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

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

Post by STC »

Code: Select all

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
Posts: 4657
Joined: 18 Sep 2013, 01:58
Your CAR: ВАЗ-21099 1,5л.
SECU version: official SECU-3i TBZ
Location: Украина, Павлоград
Has thanked: 624 times
Been thanked: 1020 times
Contact:

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

Post by alvikagal »

Т.е. полученый пакет будет иметь на 16бит (значение 0А убираем) меньше?

Code: Select all

Приняли:
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 бит в пакете лишних.

Code: Select all

                                \\ 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-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
alvikagal
Posts: 4657
Joined: 18 Sep 2013, 01:58
Your CAR: ВАЗ-21099 1,5л.
SECU version: official SECU-3i TBZ
Location: Украина, Павлоград
Has thanked: 624 times
Been thanked: 1020 times
Contact:

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

Post by alvikagal »

STC wrote:

Code: Select all

build_i16h(d->sens.temperat);          \\ FB CE \ 16115,5=64462\4
Температура это число со знаком и может быть отрицательным (если старший бит равен 1, то число отрицательное). В этом примере как раз отрицательная температура.
И как ведётся расчёт, если отрицательная температура? Этот бит нужно игнорировать? Т.е. нужно его нужно отнять и получаем 7BCE?
60-2/SECU-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

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

Post by STC »

И как ведётся расчёт, если отрицательная температура? Этот бит нужно игнорировать? Т.е. нужно его нужно отнять и получаем 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
Posts: 4657
Joined: 18 Sep 2013, 01:58
Your CAR: ВАЗ-21099 1,5л.
SECU version: official SECU-3i TBZ
Location: Украина, Павлоград
Has thanked: 624 times
Been thanked: 1020 times
Contact:

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

Post by alvikagal »

А что делать с лишним байтом в пакете?
http://secu-3.org/forum/viewtopic.php?p=17733#p17733
60-2/SECU-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
User avatar
STC
Posts: 13843
Joined: 30 Apr 2013, 23:41
Your CAR: AZLK 2140
SECU version: DIY SECU-3
Location: North Korea
Has thanked: 2160 times
Been thanked: 4335 times
Contact:

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

Post by STC »

А речь идет про какой релиз? Или это девелопмент версия из 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 (вступаем!)
Post Reply

Return to “Программное обеспечение для ПК и релизы ПО”