Описание протокола обмена данными (Application)

Описание протокола обмена данными SECU-3 (Application)

Для обмена данными, SECU-3 (далее просто “SECU”) использует последовательный интерфейс RS-232. Данные передаются в дуплексном режиме (одновременно передача и прием), формат: 8 bit, 1 stop, no parity. Данные передаются в виде Hex-символов, то есть для передачи одного байта используется два ASCII символа. Для представления шестнадцатеричных цифр используются символы верхнего регистра. Например, для передачи байта со значением 94 будет использована последовательность 5E. Посылаемые и принимаемые пакеты могут быть различной длины, каждый пакет, который посылает SECU, начинается с символа ‘@’. Каждый пакет, который посылается в SECU, должен начинаться с символа ‘!’. Все пакеты оканчиваются символом ‘\r’.

SECU посылает пакеты с данными периодически, оно начинает делать это сразу после инициализации. Тип посылаемого пакета определяется текущим контекстом. Список и описание всех контекстов представлены в таблице 1, а ниже представлен общий формат пакета. Символы ‘@’ или ‘!’ при описании формата каждого пакета будут заменены просто символом ‘*’. Символ дескриптора будет обозначаться как d. Контекст определяется так называемым дескриптором посылки (один ASCII символ), который следует сразу за первым символом пакета. Для описания символов дескрипторов, как и в программе, используются не сами символы, а их синонимы. Это улучшает читаемость программы, а главное дает больше гибкости при ее сопровождении. Просмотреть соответствующие символы вы можете в заголовочном файле проекта ufcodes.h.

Таблица 1 – дескрипторы пакета (посылки)

d

Направление Описание
TEMPER_PAR send/receive Параметры температуры
CARBUR_PAR send/receive Параметры карбюратора
IDLREG_PAR send/receive Параметры регулятора холостого хода
ANGLES_PAR send/receive Параметры углов опережения
FUNSET_PAR send/receive Параметры функциональных преобразователей
STARTR_PAR send/receive Параметры старта двигателя
ADCCOR_PAR send/receive Параметры компенсации погрешностей АЦП
CKPS_PAR send/receive Параметры для датчика положения коленвала
KNOCK_PAR send/receive Параметры канала обработки сигнала детонации
MISCEL_PAR send/receive Прочие параметры
FNNAME_DAT send Данные о семействах характеристик
ADCRAW_DAT send Данные “сырых” значенй АЦП
SENSOR_DAT send Данные датчиков системы
FWINFO_DAT send Данные с информацией о прошивке
CE_ERR_CODES send Состояние битов ошибок (Check Engine)
CE_SAVED_ERR send/receive Состояние битов ошибок (Check Engine) сохраненных в EEPROM
CHANGEMODE receive Изменение текущего контекста
BOOTLOADER receive Запуск бутлоадера
OP_COMP_NC send/receive Команда уведомления о завершении или необходимости начала определенного действия
EDITAB_PAR send/receive Используется для передачи данных при редактировании таблиц в реальном времени
DBGVAR_DAT send Отладочная информация. Используется для отладки
DIAGINP_DAT send Для диагностического режима. Состояние входов системы (аналоговых и цифровых)
DIAGOUT_DAT receive Для диагностического режима. Установка состояния выходов системы
ATTTAB_PAR send Передача содержимого таблицы аттенюатора (для настройки ДД)
CHOKE_PAR send/receive Параметры для управления воздушной заслонкой карбюратора (автоподсос)

принимаемый пакет

!

d

Data \r

передаваемый пакет

@

d

Data \r

Некоторые пакеты могут только передаваться, а некоторые только приниматься. По умолчанию SECU производит передачу пакетов в контексте с дескриптором SENSOR_DAT. Подробное описание каждого пакета следует ниже. При описании для указания количества символов выделенных для соответствующего поля используются повторяющиеся символы. Для упрощения интерфейса и увеличения скорости физические величины передаются в таком же формате, в каком они обрабатываются в программе SECU (дискреты АЦП, масштабированные значения и т.д). Эти величины более детально описаны в заголовочных файлах проекта. Смотрите magnitude.h

TEMPER_PAR
* d A P M BBBB CCCC \r

A Признак комплектации ДТОЖ (0,1), если установлен в 0, то ДТОЖ не используется
P Признак использования ШИМ-а для управления вентилятором, если установлен в 0, то ШИМ не используется
M Признак использования таблицы для преобразования значений ДТОЖ, если установлен в 0, то таблица не используется и считается что зависимость напряжения от температуры линейная (LM235)
BBBB Порог включения вентилятора (температура °C * TEMP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
CCCC Порог выключения вентилятора (температура °C * TEMP_PHYSICAL_MAGNITUDE_MULTIPLAYER)

CARBUR_PAR
* d AAAA BBBB С DDDD EEEE FFFF GG HH \r

AAAA Нижний порог ЭПХХ для бензина (обороты, мин-1)
BBBB Верхний порог ЭПХХ для бензина (обороты, мин-1)
C Признак инверсии концевика карбюратора (0,1), если установлен в 1, то инверсия
DDDD Порог включения клапана экономайзера мощностных режимов (разрежение кПа * MAP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
EEEE Нижний порог ЭПХХ для газа (обороты, мин-1)
FFFF Верхний порог ЭПХХ для газа (обороты, мин-1)
GG Задержка выключения клапана ЭПХХ (1 дискрета = 10мс)
HH Порог переключения в рабочий режим по ДПДЗ (значение в %, 1 дискрета = 0.5%). Если значение этого параметра равно 0, то вход ДПДЗ обрабатывается как цифровой (0, 1) и к нему должен быть подключен концевой выключатель.

IDLREG_PAR
* d A BBBB CCCC DDDD EEEE FFFF GGGG HHHH \r

A Признак использования регулятора (0,1), если установлен в 0, то регулятор не используется
BBBB Коэффициент регулятора при положительной ошибке (коэффициент * ANGLE_MULTIPLAYER)
CCCC Коэффициент регулятора при отрицательной ошибке (коэффициент * ANGLE_MULTIPLAYER)
DDDD Зона нечувствительности регулятора (обороты, мин-1)
EEEE Поддерживаемые обороты (обороты, мин-1)
FFFF Минимальный УОЗ разрешенный для регулятора (значение * ANGLE_MULTIPLAYER)
GGGG Максимальный УОЗ разрешенный для регулятора (значение * ANGLE_MULTIPLAYER)
HHHH Температура включения регулятора холостого хода (температура °C * TEMP_PHYSICAL_MAGNITUDE_MULTIPLAYER)

ANGLES_PAR
* d AAAA BBBB CCCC DDDD EEEE Z \r

AAAA Максимальный УОЗ (значение * ANGLE_MULTIPLAYER)
BBBB Минимальный УОЗ (значение * ANGLE_MULTIPLAYER)
CCCC Октан коррекция (значение * ANGLE_MULTIPLAYER)
DDDD Скорость уменьшения УОЗ, град./цикл (значение * ANGLE_MULTIPLAYER)
EEEE Скорость увеличения УОЗ, град./цикл (значение * ANGLE_MULTIPLAYER)
Z Признак 0-го угла опережения (0,1), если установлен в 1 то УОЗ всегда будет равен 0

FUNSET_PAR
* d AA BB СССС DDDD EEEE FFFF GGGG HHHH \r

AA Номер семейства характеристик используемого для бензина
BB Номер семейства характеристик используемого для газа
CCCC Нижнее значение по шкале давлений ДАД (давление кПа * MAP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
DDDD Верхнее значене по шкале давлений ДАД (давление кПа * MAP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
EEEE Смещение кривой ДАД в Вольтах (значение в дискретах АЦП)
FFFF Наклон кривой ДАД (кПа/Вольт, значение * (128 * MAP_PHYSICAL_MAGNITUDE_MULTIPLAYER * дискрета АЦП))
GGGG Смещение кривой ДПДЗ в Вольтах (значение в дискретах АЦП)
HHHH Наклон кривой ДПДЗ (кПа/Вольт, значение * (128 * 64 * TPS_PHYSICAL_MAGNITUDE_MULTIPLAYER * дискрета АЦП))

STARTR_PAR
* d AAAA BBBB \r

AAAA Обороты при которых стартер будет выключен (обороты, мин-1)
BBBB Обороты перехода с пусковой карты (обороты, мин-1)

ADCCOR_PAR
* d AAAA BBBBBBBB CCCC DDDDDDDD EEEE FFFFFFFF GGGG HHHHHHHH IIII JJJJJJJJ KKKK LLLLLLLL\r

AAAA Коэффициент коррекции для канала АЦП обслуживающего ДАД (коэффициент * 16384)
BBBBBBBB Коррекция для канала АЦП обслуживающего ДАД (см. исх. текст прошивки)
CCCC Коэффициент коррекции для канала АЦП измеряющего напряжение бортовой сети (коэффициент * 16384)
DDDDDDDD Коррекция для канала АЦП измеряющего напряжение бортовой сети (см. исх. текст прошивки)
EEEE Коэффициент коррекции для канала АЦП обслуживающего датчик температуры охлаждающей жидкости (коэффициент * 16384)
FFFFFFFF Коррекция для канала АЦП обслуживающего датчик температуры охлаждающей жидкости (см. исх. текст прошивки)
 GGGG Коэффициент коррекции для канала АЦП обслуживающего ДПДЗ (конц. карбюратора)
HHHHHHHH Коррекция для канала АЦП обслуживающего ДПДЗ (см. исх. текст прошивки)
 IIII Коэффициент коррекции для канала АЦП обслуживающего вход ADD_IO1
 JJJJJJJJ Коррекция для канала АЦП обслуживающего вход ADD_IO1 (см. исх. текст прошивки)
 KKKK Коэффициент коррекции для канала АЦП обслуживающего вход ADD_IO2
 LLLLLLLL Коррекция для канала АЦП обслуживающего вход ADD_IO2 (см. исх. текст прошивки)

CKPS_PAR
* d A A BB CC PP M TT UU\r

A Тип фронта датчика положения коленвала (0,1), если значение = 0, то отрицательный(спадающий) фронт
A Тип фронта датчика начала отсчета (0,1), если значение = 0, то отрицательный(спадающий) фронт
BB Количество зубьев от синхрометки до в.м.т
СС Длительность импульса запуска коммутатора в зубьях шкива
PP Количество цилиндров двигателя
M Признак объединения сигналов зажигания на первом выходе (0,1), если установлен в 1, то сигналы объединяются на 1-м выходе
TT Количество зубьев задающего диска (шкива) включая отсутствующие зубья
UU Количество отсутствующих зубьев задающего диска (0, 1, 2)

KNOCK_PAR
* d A BB CCCC DDDD FF GGGG HHHH IIII JJJJ KK\r

A Признак использования канала детонации (0 – неиспользовать, 1 – использовать)
BB Код частоты полосового фильтра (см. спец. HIP9011)
ССCC Начало фазового окна в градусах по коленвалу (значение * ANGLE_MULTIPLAYER)
DDDD Конец фазового окна в градусах по коленвалу (значение * ANGLE_MULTIPLAYER)
FF Код постоянной времени интегрирования (см. спец. HIP9011)
GGGG Шаг смещения (уменьшения) УОЗ при детонации (значение * ANGLE_MULTIPLAYER)
HHHH Шаг восстановления УОЗ после детонации (значение * ANGLE_MULTIPLAYER)
IIII Максимальное смещение УОЗ при детонации (значение * ANGLE_MULTIPLAYER)
JJJJ Абсолютный порог обнаружения детонации (В, значение в дискретах АЦП)
KK Задержка восстановления УОЗ (в циклах)

MISCEL_PAR
* d AAAA BB С DDDD EE FF\r

AAAA Значение делителя частоты для UART (допустимые значения: 0xCF,0x8A,0x67,0x44,0x33,0x22)
BB Период передачи пакетов в десятках миллисекунд (1 дискрета = 10мс)
С Признак использования отсечки зажигания при достижении заданных оборотов (0,1), если установлен в 1, то отсечка используется
DDDD Порог отсечки зажигания (обороты, мин-1)
EE Выход ДХ: Начало импульса в зубьях шкива относительно ВМТ
FF Выход ДХ: Длительность импульса в зубьях шкива

CE_SAVED_ERR
* d AAAA \r

AAAA Биты ошибок для сохранения в EEPROM или считанные из EEPROM (см. исх. текст прошивки)

OP_COMP_NC
* d AAAA \r

AAAA Код команды или действия (см. исх. текст прошивки).
Младший байт – код команды или действия
Старший байт – данные

CE_ERR_CODES
@ d AAAA \r

AAAA Биты ошибок. Для получения более детальной информации смотреть заголовочный файл ce_errors.h

ADCRAW_DAT
@ d AAAA BBBB CCCC DDDD EEEE FFFF GGGG \r

AAAA Сырое значение АЦП для ДАД (значение в дискретах АЦП)
BBBB Сырое значение АЦП для напряжения бортовой сети (значение в дискретах АЦП)
CCCC Сырое значение АЦП для датчика температуры охлаждающей жидкости (значение в дискретах АЦП)
DDDD Сырое значение АЦП для сигнала с датчика(ов) детонации (значение в дискретах АЦП)
EEEE Сырое значение АЦП для ДПДЗ (значение в дискретах АЦП)
FFFF Сырое значение АЦП для входа ADD_IO1 (значение в дискретах АЦП)
GGGG Сырое значение АЦП для входа ADD_IO2 (значение в дискретах АЦП)

FNNAME_DAT
@ d AA BB (name) \r

AA Количество семейств характеристик хранимое в прошивке
BB Номер соответствующего семейства
(name) Имя соответствующего семейства (16 ASCII символов)

FWINFO_DAT
@ d (string) AAAAAAAA \r

(string) Строка содержащая информацию о прошивке
AAAAAAAA Содержит биты описывающие опции с которыми скомпилирована прошивка. Каждой опции соответствует отдельный бит (см. исходный код)

SENSOR_DAT
@ d AAAA BBBB СССС DDDD EEEE KKKK RRRR FF BB GG HHHH IIII JJJJ LL\r

AAAA Частота вращения коленчатого вала (обороты, мин-1)
BBBB Абсолютное давление во впускном коллекторе (давление кПа * MAP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
CCCC Напряжение бортовой сети (Вольты * UBAT_PHYSICAL_MAGNITUDE_MULTIPLAYER)
DDDD Температура охлаждающей жидкости (температура °C * TEMP_PHYSICAL_MAGNITUDE_MULTIPLAYER)
EEEE Текущий УОЗ (значение * ANGLE_MULTIPLAYER)
KKKK Уровень сигнала детонации на выходе HIP9011 измеренный в пределах фазового окна (напряжение в дискретах АЦП)
RRRR Корректировка УОЗ при детонации, равна 0 когда нет детонации (значение * ANGLE_MULTIPLAYER)
FF Расход воздуха (0…16), 0 – дроссель закрыт
BB Байт с битовыми флагами.
0 – Состояние клапана ЭПХХ (1-открыт , 0-закрыт )
1 – Состояние дроссельной заслонки (1-открыта, 0-закрыта)
2 – Состояние газового клапана (1-открыт, 0-закрыт )
3 – Состояние клапана ЭМР (1-открыт, 0-закрыт )
4 – Состояние индикатора СЕ (1-включен, 0-выключен)
5 – Состояние вентилятора (1 – включен, 0 – выключен)
6 – Состояние блокировки стартера (1 – заблокирован, 0 – не заблокирован)
GG Положение дроссельной заслонки по ДПДЗ (значение в % * TPS_PHYSICAL_MAGNITUDE_MULTIPLAYER)
HHHH Напряжение на входе ADD_IO1 (Напряжение (В) в дискретах АЦП)
IIII Напряжение на входе ADD_IO2 (Напряжение (В) в дискретах АЦП)
JJJJ Биты ошибок СЕ, каждой ошибке соответствует отдельный бит (см. исх. текст прошивки)
LL Положение воздушной заслонки карбюратора (значение в %, 1 дискрета = 0.5%). 0% означает что заслонка полностью открыта, 100% означает что полностью закрыта

EDITAB_PAR
* d A B CC (data) \r

A Индекс набора таблиц (тип топлива)
B Код таблицы в наборе
СС Байтовый адрес внутри таблицы для принимаемых и передаваемых данных
(data) Блок данных содержащий не более 16-ти байт

DBGVAR_DAT
@ d AAAA BBBB CCCC DDDD \r

AAAA Значение переменной 1
BBBB Значение переменной 2
CCCC Значение переменной 3
DDDD Значение переменной 4

CHANGEMODE
! d A \r

A Новый дескриптор для контекста

BOOTLOADER
! d l \r

DIAGINP_DAT
@ d AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH JJ\r

AAAA Напряжение бортовой сети (значение в дискретах АЦП без коррекций) (VBAT)
BBBB Датчик абсолютного давления (значение в дискретах АЦП без коррекций) (MAP_S)
CCCC Датчик температуры охлаждающей жидкости (значение в дискретах АЦП без коррекций) (TEMP)
DDDD Дополнительный I/O 1 (значение в дискретах АЦП без коррекций) (ADD_IO1)
EEEE Дополнительный I/O 2 (значение в дискретах АЦП без коррекций) (ADD_IO2)
FFFF Концевик карбюратора или положение дроссельной заслонки ((0,1) или значение в дискретах АЦП без коррекций) (CARB)
GGGG Датчик детонации 1 (значение в дискретах АЦП без коррекций) (KS_1, KS)
HHHH Датчик детонации 2 (значение в дискретах АЦП без коррекций) (KS_2)
JJ Байт с битами описывающими состояние цифровых входов.
0 – Состояние линии порта входа газового клапана (GAS_V)
1 – Состояние линии порта входа ДПКВ (ДУИ) (CKPS)
2 – Состояние линии порта входа индуктивного датчика фаз (ДНО) (REF_S)
3 – Состояние линии порта входа датчика фаз (PS)
4 – Состояние линии порта перемычки “Boot loader”
5 – Состояние линии порта перемычки “Default EEPROM”

DIAGOUT_DAT
! d AAAA \r

AAAA 2 байта с битами описывающими состояние выходов.
0 – Состояние выхода зажигания 1 (1-включен, 0-выключен) (IGN_OUT1)
1 – Состояние выхода зажигания 2 (1-включен, 0-выключен) (IGN_OUT2)
2 – Состояние выхода зажигания 3 (1-включен, 0-выключен) (IGN_OUT3)
3 – Состояние выхода зажигания 4 (1-включен, 0-выключен) (IGN_OUT4)
4 – Состояние дополнительного выхода 1 (выход зажигания 5, 1-включен, 0-выключен) (ADD_IO1)
5 – Состояние дополнительного выхода 2 (выход зажигания 6, 1-включен, 0-выключен) (ADD_IO2)
6 – Состояние выхода ЭПХХ (1-включен, 0-выключен) (IE)
7 – Состояние выхода ЭМР (1-включен, 0-выключен) (FE)
8 – Состояние выхода управления электровентилятором (1-включен, 0-выключен) (ECF)
9 – Состояние выхода Check Engine (1-включен, 0-выключен) (CE)
10 – Состояние выхода блокировки стартера (1-включен, 0-выключен) (ST_BLOCK)

ATTTAB_PAR
@ d AA (data) \r

AA Байтовый адрес внутри таблицы
(data) Блок данных содержащий не более 16-ти байт

CHOKE_PAR
@ d AAAA B CC (data) \r

AAAA Кол-во шагов ШД соответствующее полному ходу воздушной заслонки (полное число шагов)
B Признак активности режима тестирования воздушной заслонки (0, 1), если установлен в 1, то заслонка поочередно открывается и закрывается. Данный параметр не хранится в EEPROM, а используется просто как команда.
CC Кол-во шагов на которое нужно запустить шаговый двигатель. Используется при работе в ручном режиме управления воздушной заслонкой. Как только контроллер принимает пакет со значением этого параметра отличным от 0, он переходит в ручной режим управления. В пакете, который шлет контроллер, значение этого параметра всегда равно 0. Данный параметр не хранится в EEPROM, а используется просто как команда.

Last updated: 07/05/2013
Please, e-mail author if you find some errors or discrepancy