Описание протокола взаимодействия с ЭБУ Микас 5.4 и 7.1

         

Обмен по последовательному асинхронному полудуплексному


Описание протокола взаимодействия с ЭБУ Микас 5.4 и 7.1. (K-Line).

Версия 0.1. от 27 сентября 2000 года.

Общие сведения.

Обмен по последовательному асинхронному полудуплексному интерфейсу K-Line происходит со скоростью 9600 бит/сек. Формат кадра – 8N1. Для связи с ЭБУ используется 2 провода: K-LINE и GROUND. Физический уровень протокола обмена соответствует рекомендации ISO9141 и реализуется различными K-Line адаптерами типа MC33199, MC33290 (Motorola).

Формат сообщения.

Обмен с ЭБУ происходит путем посылки сообщений следующего формата:

[код команды][параметр(ы)]        [контрольная сумма]                        [0x0D]

        (тело сообщения)             (контрольная информация)         (Конец посылки)

Возможные коды команд приведены в таблице 1. Число байтов в сообщении регламентируется только форматом команды и в заголовке сообщения не отражается.

Ответное сообщение имеет вид:

[возвращаемые параметры или код завершения команды]   [контрольная сумма]                [0x0D]

                        (тело сообщения)                                           (Контрольная информация)  (Конец посылки)

 

В случае двухбайтовых параметров первым передается младший байт.

Расчет контрольной суммы.

Контрольная сумма всегда представляется в виде одного байта. Значение этого байта равно дополнению до 0 суммы всех байт тела сообщения без учета переполнения.

Типичный кадр выглядит следующим образом:  0x01 0xFF 0x0D, что соответствует запросу на доступность ЭБУ.

Особые случаи при передаче байта 0x0D в теле сообщения.

Байт 0x0D служит для окончания сообщения. Если в теле сообщения встречается байт 0x0D, он кодируется последовательностью 0x40 0xCD. В случае если в теле сообщения встречается 0x40, этот байт кодируется последовательностью 0x40 0x00. Таким образом, встречая в сообщении байт 0x40, необходимо просуммировать его и следующий байт, чтобы получить исходное сообщение. При кодировании сообщения необходимо заменять в теле сообщения 0x40 и 0x0D на вышеуказанную последовательность байт.





Коды команд и параметры.
1. Запрос доступности ЭБУ (возвращает код версии ЭБУ).

Команда
Ответ ЭБУ
0x01
0x09, если ЭБУ Микас 5.4
0x0A, если ЭБУ Микас 7.1

2. Запрос на получение параметров из ЭБУ.

Запрашиваемый параметр
Кодированное обозначение
Тип перемен-ной
Тело сообщения
Ответ ЭБУ, тело сообщения
Формула пересчета
Температура охлаждающей жидкости, С
TWAT
uchar
0x61 0x1A
1 байт
Byte1-40
Частота вращения коленвала, с-1
FREQ
uchar
0x61 0x29
1 байт
Byte1*40
Частота вращения коленвала на х.х., с-1
FREQX
uchar
0x61 0x2C
1 байт
Byte1*10
Угол опережения зажигания, град
UOZ
Char
0x61 0x26
1 байт
Byte1/2
Напряжение бортсети, В
UACC
char
0x61 0x1E
1 байт
Byte1/10
Длительность впрыска, мс
INJ
uint
0x61 0x3F
2 байта
(Byte2*256+Byte1)/125
Расход воздуха, кг/час
JAIR
uint
0x61 0x21
2 байта
(Byte2*256+Byte1)/100
Часовой расход топлива, л/ч
JQT
uint
0x61 0x40
2 байта
(Byte2*256+Byte1)/10
Признак детонации
DET
byte
0x61 0x08
1 байт
(Byte1&0x40)!=0 - да
Признак холостого хода
RXX
byte
0x61 0x07
1 байт
(Byte1&0x04)!=0 - да
Признак полной мощности
BITPOW
byte
0x61 0x07
1 байт
(Byte1&0x20)!=0 - да
Признак коррекции УОЗ по детонации
RDET
byte
0x61 0x07
1 байт
(Byte1&0x80)!=0 - да
Состав смеси
VALF
uchar
0x61 0x39
1 байт
0,5+Byte1/256
Положение ДЗ, %
THR
uchar
0x61 0x20
1 байт
Byte1
Коэффициент коррекции топливоподачи
RCOK
uchar
0x61 0x42
1 байт
|(Byte1-128)/256|-0,5
Коэффициент коррекции СО на холостом ходу
RCOD
uchar
0x61 0x41
1 байт
|(Byte1-128)/256|-0,5
Поправка УОЗ, град
UOZOC
char
0x61 0x28
1 байт
Byte1/2
Установка РДВ, шаг
SSM
uchar
0x61 0x5B
1 байт
Byte1
Положение РДВ, шаг
FSM
uchar
0x61 0x5C
1 байт
Byte1
Запрос ошибок. В ответ ЭБУ возвращает первым байтом количество ошибок, а затем четными байтами идут номера ошибок, а нечетными – разделители 0xE0.
uchar
0x02
n байт
[N_ERR][ERRCODE1]0xE0 [ERRCODE2] 0xE0 … [ERRCODEN] 0xE0
Стирание ошибок
Для стирания ошибок выполняют-ся последовательно два запроса. В нормальной ситуации ответом должно быть 0x00.
uchar
1) 0x62 0x0E 0x08
2) 0x62 0x0E 0x00
1) 1 байт
2) 1 байт
Byte1=0x00 – OK
Byte1=0x00 – OK
Минимальный номер неисправности
MINERR
uchar
0x61 0x72
1 байт
Byte1=номер неисправности
Установка расхода воздуха, кг/час
UGB
uint
0x61 0x59
2 байта
(Byte2*256+Byte1)/100
Температура воздуха, 0С
TAIR
uint
0x61 0x1C
1 байт
Byte1-40
Температура охлаждающей жидкости на момент пуска, 0С
TWATI
uchar
0x61 0x19
1 байт
Byte1-40
<


3. Команды работы с памятью ЭБУ

Название команды
Команда
Тело сообщения
Ответ ЭБУ
Чтение байта из RAM ЭБУ [0..FF]
CREADI
0x11 [ADDR]
[ADDR] [BYTE]
Запись байта в RAM ЭБУ [0..FF]
CWRTI
[ADDR] [BYTE]
Чтение байта из XRAM [0..FFFF]
CREADX
0x13[ADDR_L][ADDR_H]
[ADDR_L][ADDR_H][BYTE]
Запись байта в XRAM [0..FFFF]
CWRITX
0x14[ADDR_L][ADDR_H][BYTE]
[ADDR_L][ADDR_H][BYTE]
Чтение байта из CODE [0..FFFF]
CREADC
0x15[ADDR_L][ADDR_H]
[ADDR_L][ADDR_H][BYTE]
Запись байта в CODE [0..FFFF]
CWRITC
0x16[ADDR_L][ADDR_H][BYTE]
[ADDR_L][ADDR_H][BYTE]
Чтение SFR
CREADSFR
0x31[ADDR]
[ADDR][BYTE]
Запись SFR
SWRITSFR
0x32[ADDR][BYTE]
[ADDR][BYTE]
Переход по адресу
CGOTO
0x41[ADDR_L][ADDR_H]
Чтение паспорта программы.
3 последовательных запроса
CPASP
0x51
0x52
0x53
String[16]
String[16]
String[16]
Кодировка DOS, до 16 байт дополненяется нулями
Чтение паспорта данных.
5 последовательных запроса
CPASD
0x54
0x55
0x56
0x57
0x58
String[16]
String[16]
String[16]
String[16]
String[16]
Кодировка DOS, дополняется до 16 байт нулями
Считывание количества параметров
CNUMPAR
0x60
[BYTE]
Чтение параметра.
Возможно чтение нескольких параметров за один раз – при этом передается.
CREADP
0x61[PARCODE1]…[PARCODEN]
[DATA1]…[DATAN]
Запись параметра.
CWRITP
0x62[PARCODE][PARDATA]
0x00 – успешное завершение операции; 0x01 – ошибка.
Чтение нескольких параметров по списку
CREADL
0x63
[DATA1]…[DATAN]
Запись списка параметров
CWRITL
0x64 [PARCODE1]…[PARCODEN]
0x00 – успешное завершение операции; 0x01 – ошибка.
Чтение нескольких байтов RAM
CREADDI
0x21 [ADDR][NUM_OF_BYTES]
[ADDR][NUM_OF_BYTES] [BYTE1]…[BYTEN]
Запись нескольких байтов RAM
CWRITDI
0x22 [ADDR][NUM_OF_BYTES] [BYTE1]…[BYTEN]
0x00 – успешное завершение операции; 0x01 – ошибка.
Чтение нескольких байтов XRAM
CREADDX
0x23 [ADDR_L] [ADDR_H] [NUM_OF_BYTES]
[ADDR_L][ADDR_H][BYTE1] [BYTE2]
Запись нескольких байтов XRAM
CWRITDX
0x24 [ADDR_L] [ADDR_H] [NUM_OF_BYTES]
0x00 – успешное завершение операции; 0x01 – ошибка.
Чтение нескольких байтов CODE
CREADDC
0x25 [ADDR_L] [ADDR_H] [NUM_OF_BYTES]
[ADDR_L][ADDR_H][BYTE1] [BYTE2]
Запись нескольких байтов CODE
CWRITDC
0x26 [ADDR_L] [ADDR_H] [NUM_OF_BYTES]
0x00 – успешное завершение операции; 0x01 – ошибка.
     Многократные команды. В зависимости от способа синхронизации с работой ПО ЭБУ, многократные команды деляться на команды первого и второго уровня.
     Команды первого уровня не синхронизированы с вращением КВ двигателя и посылают данные из блока циклически. Время передачи списка команд определяется количеством  команд и режимом работы двигателя.
     Команды второго уровня синхронизированы с вращением КВ и позволяют получать данные в заданном такте двигателя. Количество параметров в списке ограничено скоростью передачи.
Многократное чтение нескольких параметров. Команда первого уровня.
CREADPF
0x71 [PARCODE1][PARCODEN]
[DATA1]…[DATAN]
Многократное чтение нескольких параметров. Команда второго уровня.
Синхронизация по нулевому, первому, второму, третьему и четвертому тактам двигателя.
CREADPS
0x7F [PARCODE1][PARCODEN]
0x80 [PARCODE1][PARCODEN]
0x81 [PARCODE1][PARCODEN]
0x82 [PARCODE1][PARCODEN]
0x83 [PARCODE1][PARCODEN]
[DATA1]…[DATAN]
[DATA1]…[DATAN]
[DATA1]…[DATAN]
[DATA1]…[DATAN]
[DATA1]…[DATAN]

Примечания.
Любое сообщение к/от ЭБУ обязательно заканчивается последовательностью из контрольной суммы и байта 0x0D.
Команды работы с памятью автором данного описания не проверялись практически и переписаны практически как есть из описания команд блока Январь-4. (Источник - сайт Дударя  http://www.vaz.ru/vaz/dudar/index.htm )
Данный список команд и параметров не полон, всяческие дополнения и исправления приветствуются.
Приведенное описание сделано с учетом удобства пользования – наиболее необходимые и важные для практического использования команды даются полностью, «как есть», команды работы с памятью по причине малоизученности данного вопроса даны в формализованном виде.
Автор данной версии описания – Гуляев Александр aka ASHA
asha@sortos.ru