# Описание интерфейса SigmaBUS ### Принятые сокращения **Модуль** — модуль Сигма 10/15. **Оборудование** — стороннее оборудование, осуществляющее обмен с модулем по линии UART. **Кадр** — фрагмент данных протокола, передаваемый по линии UART. ### Общее описание протокола Протокол SigmaBUS предназначен для формирования и выдачи данных внешнему устройству, полученных модулем по цифровым шинам CAN и LIN автомобиля, а также формирования команд управления модулем. Предусматривается использование дуплексного асинхронного протокола в топологии соединения точка-точка. Канальный уровень интерфейса: UART, 8N1, 9600 Baud, двухпроводная линия, уровень сигнала 5В. ### Описание физического уровня интерфейса UART #### Канал TX [![image.png](/uploads/images/gallery/2024-07/scaled-1680-/Lprimage.png)](/uploads/images/gallery/2024-07/Lprimage.png) **Электрические характеристики**
КаналХарактеристикаЗначение
Выход TXвыходное сопротивление, кОм1±10%
напряжение, логический «0» при токе 100 мкА, В<0,2
напряжение, логический «0» при токе 1000 мкА, В<1,4
напряжение, логическая «1» при токе 100 мкА, В>4,5
напряжение, логическая «1» при токе 1000 мкА, В>3,6
максимально допустимое напряжение, В–12....+12
#### Канал RX [![image.png](/uploads/images/gallery/2024-07/scaled-1680-/10jimage.png)](/uploads/images/gallery/2024-07/10jimage.png) **Электрические характеристики**
КаналХарактеристикаЗначение
Выход TXвыходное сопротивление, кОм1±10%
напряжение, логический «0» при токе 100 мкА, В<0,2
напряжение, логический «0» при токе 1000 мкА, В<1,4
напряжение, логическая «1» при токе 100 мкА, В>4,5
напряжение, логическая «1» при токе 1000 мкА, В>3,6
максимально допустимое напряжение, В–12....+12
### Описание программного уровня Протокол реализует последовательный битовый интерфейс. Каждый бит представляется одним из двух возможных потенциальных уровней линии: «0» и «1». Каждый байт передается в виде последовательности битов, выдаваемых в линию без перерыва, младшими битами вперед (LSB first): - - Старт-бит. Всегда «0». - Биты 0-7 байта данных. - Стоп бит. Всегда «1». Время передачи каждого бита `Tbit` = 1 / f* ± 5% = 104,2 ±5% µS. Время передачи 1 байта `Tbyte` = `Tbit` × 10 ±5% = 1042 ±5% µS. Данные передаются кадрами. Для разделения кадров используется байт `0xAA` (далее — разделитель кадров). Разделитель кадров помогает отказаться от контроля пауз между кадрами для их корректного разделения, также отпадает необходимость подсчета количества байт для поиска конца кадра. Внутри кадра запрещено использование байта `0xAA`. Для передачи внутри кадра байта с значением `0xAA` используется экранирующий байт `0xA8`. Если в исходном кадре используются байты `0xAA` или `0xA8`, они должны быть заменены на кодирующие их значения. Для кодировки байта `0xAA` используется последовательность `0xA8AB`, для байта `0xA8` — `0xA8A9`. [![image.png](/uploads/images/gallery/2024-07/scaled-1680-/D8pimage.png)](/uploads/images/gallery/2024-07/D8pimage.png) В протоколе предусмотрено несколько типов кадра: - **Кадр статусов** — содержит параметры системы (статусы). Передаются в линию периодически; - **Кадр команд управления** — запрос на выполнение команд управления. Передаются асинхронно в произвольные моменты времени; - **Кадр ответов на команды управления** — подтверждающие прием команды. Передаются в ответ на успешно принятые командные кадры. - **Кадр эксплуатационных параметров** - содержит эксплуатационные параметры автомобиля: скорость, пробег, уровень топлива, обороты. Передаются в линию периодически; - **Кадр запроса идентификационных параметров** - запрос идентификационных параметров системы: версия ПО, серийный номер Модуля, версия CAN библиотеки, версия протокола. Передаются асинхронно в произвольные моменты времени; - **Кадр ответа на запрос идентификационных параметров** - содержит запрошенный идентификационный параметр системы. Формат зависит от запрошенного параметра; Каждый кадр передается последовательностью байт, начиная с поля «Идентификатор протокола» длинной 1 байт и заканчивая полем контрольной суммы длинной 1 байт. Кадр с неверной контрольной суммой при приеме игнорируется. При обмене между модулем и оборудованием приняты следующие правила: 1. Кадр статусов выдается в физический канал связи на регулярной основе. Частота выдачи кадров Fdf = 16,67 Гц (период выдачи кадров Tdf = 60 мс). 2. Кадры команд управления могут выдаваться модулю в произвольные моменты времени. В качестве подтверждения приема командных посылок модуль должен выдать оборудованию кадр ответов на команды управления. Значение поля `Frame_ID` подтверждающего кадра должно содержать номер только что принятой команды. Время в течении которого модуль должен ответить Tresptout = 100 мс. Если в течении Tresptout ответ от модуля не получен, команда считается не принятой. 3. Кадр эксплуатационных параметров передается в физический канал связи на регулярной основе. Частота выдачи кадров Fdf = 2 Гц (период выдачи кадров Tdf = 500 мс). 4. Модуль выключает передачу кадра статусов и эксплуатационных параметров в режиме пониженного энергопотребления (Sleep). Модуль выйдет из режима пониженного энергопотребления при получении команды `SleepOut` или при появлении активности на цифровых шинах CAN и LIN. Следующий кадр команды управления, предназначенный для выполнения Модулем, должна следовать после `SleepOut` не ранее чем через 5 мс. Команда `SleepOut` определена посылкой длинной 1 байт, значение которого – DataSleepOut = `0x00`. #### Структура кадра протокола
ПолеОписаниеРазмер, байт
Protocol\_IDИдентификатор протокола.1
Frame\_IDИдентификатор кадра. Определяет размер и структуру поля Data.1
DataПередаваемые данные32
CRC8 Контрольная сумма1
[![image.png](/uploads/images/gallery/2024-07/scaled-1680-/Ghkimage.png)](/uploads/images/gallery/2024-07/Ghkimage.png) #### Расчет контрольной суммы Для расчета контрольной суммы используется полином x8 +x5 +x4 +1, с начальным значением `0x5A`. Экранированные последовательности (`0xA80xA9` и `0xA80xAB`) должны быть декодированы *перед* расчетом контрольной суммы. #### Описание типов кадров ##### Кадр команд управления
Protocol\_ID Frame\_IDDataCRC8
0x020x01Data CRC8
**Data**
СмещениеРазмерДанные
0x001 байтНомер кадра. Должен быть уникальным. Используется для подтверждения приема команды Модулем в подтверждающем кадре.
0x012 байтаНомер команды (см. Команды управления).
0x032 байтаКод автомобиля. Используется только при передаче команды установки номера автомобиля.
**Команды управления**
Номер командыОписание
0x0001 закрыть ЦЗ
0x0002открыть ЦЗ
0x0004запирание а/м с включением штатной сигнализации
0x0044запирание а/м с включением штатной сигнализации и функцией «Комфорт»
0x0005запирание а/м без включения штатной сигнализации
0x0045запирание а/м без включения штатной сигнализации с функцией «Комфорт»
0x0008отпирание а/м с выключением штатной сигнализации
0x000Aотпирание а/м без выключения штатной сигнализации
0x000Cотпирание двери водителя с выключением штатной сигнализации а/м
0x0046отпирание двери водителя без выключения штатной сигнализации а/м
0x0010открыть багажник
0x0020мигнуть лампами указателей поворота
0x0040запустить функцию «Комфорт»
0x0080остановить функцию «Комфорт»
0x1000
имитировать открытие/закрытие двери водителя. На время выполнения команды информация о двери водителя, поступающая от а/м, игнорируется.
0x0130сброс модуля к заводским установкам. После установки заводских настроек производится программный сброс модуля
0x0200установить код автомобиля. После установки производится сброс модуля. Код автомобиля передается в байтах D3 - D4.
0x0400
сброс модуля. На сброс контроллера может потребоваться до 2 с. В течение этого времени останавливается прием и передача всех пакетов.
0x0800
запуск/остановка двигателя
0x0801запуск двигателя
0x0802остановка двигателя
0x0900заблокировать Keyless
0x0901разблокировать Keyless
0x0A00запустить обучение обходчика штатного иммобилайзера
0x0A01запустить обход штатного иммобилайзера
0x0B00запустить блокировку двигателя
0x0B01отменить блокировку двигателя
0x8000запустить предпусковой подогреватель
0x9000остановить предпусковой подогреватель
##### Кадр подтверждения команды управления
Protocol\_ID Frame\_IDDataCRC8
0x020x02Номер кадра команды управления, ответ на который посылается. CRC8
##### Кадр состояния параметров системы Состояние каждого параметра определяется 2 битами. Параметр может принимать значения:
СостояниеЗначение
11Состояние параметра не определено
10Параметр не анализируется
00Параметр в состоянии выключено (OFF)
01Параметр в состоянии включено (ON)
Поле данных содержит числовые параметры и параметры состояний. Числовые параметры имеют длину более 2 бит, и могут принимать следующие значения: - Все биты в состоянии «1» — параметр не определен; - Все биты в состоянии «1», младший бит в состоянии «0» — запрет анализа параметра; - Все биты в состоянии «0» — параметр равен нулю; - Числовое значение параметра. Параметры, размер которых больше 1 байта передаются в кадре в порядке Little-endian (от младшего к старшему). Изначально параметры системы находятся в неопределенном состоянии. При получении значения из цифровых шин CAN и LIN параметры принимают определенное значение. Если параметр не поддерживается, он принимает значение «параметр не анализируется». После сброса к заводским настройкам все поддерживаемые параметры принимают значение «состояние параметра не определено». Неиспользуемые поля пакета также заполняются значением «состояние параметра не определено». **Формат кадра параметров системы**
Protocol\_ID Frame\_IDDataCRC8
0x020x03Параметры системыCRC8
**Параметры системы**
Поля данныхОписание
D0.1 -D0.0состояние цифровых шин CAN и LIN (активны/не активны)
D0.3-D0.2не используется
D0.5-D0.4не используется
D0.7-D0.6состояние режима «Охрана»
D1.1-D1.0не используется
D1.3-D1.2не используется
D1.7-D1.4не используется
D2.1-D2.0не используется
D2.3-D2.2дверь водителя
D2.5-D2.4пассажирские двери. Объединенный статус всех дверей кроме двери водителя.
D2.7-D2.6пассажирские двери. Объединенный статус всех дверей кроме двери водителя.
D3.1-D3.0пассажирские двери. Объединенный статус всех дверей кроме двери водителя.
D3.3-D3.2багажник
D3.5-D3.4капот
D3.7-D3.6педаль тормоза. При выключенном зажигании параметр не контролируется – значение в запрещенном состоянии
D4.1-D4.0габаритные огни
D4.3-D4.2не используется
D4.5-D4.4аксессуары (ACC)
D4.7-D4.6зажигание (IGN)
D5.1-D5.0состояние аварийной сигнализации
D5.3-D5.2паника штатной сигнализации
D5.5-D5.4команда закрытия а/м со штатного брелка
D5.7-D5.6команда открытия а/м со штатного брелка
D6.1-D6.0команда открытия багажника со штатного брелка
D6.3-D6.2статус ЦЗ (открыт/закрыт): - 0x0 — закрыт - 0x1 — открыт - 0x2 — не анализировать параметр - 0x3 — состояние не определено
D6.5-D6.4контроль работы двигателя
D6.7-D6.6стояночный тормоз. При выключенном зажигании параметр не контролируется – значение в запрещенном состоянии 0x2
D7.2-D7.0положение ручки АКПП : - 0x0 — не анализировать параметр. Устанавливается во время переключения ручки АКПП или при выключении зажигания - 0x1 — положение «паркинг P» - 0x2 — положение «задний ход R» - 0x3 — положение «нейтральная передача N» - 0x4, 0x5 — положение «движение вперед" D» - 0x7 — состояние не определено
D7.5-D7.4переход в режим Sleep Для индикации модулем готовности к переходу в Sleep. Переход через 3 с после выставления состояния ON
D7.7-D7.6датчик движения а/м (скорость > 0 км/ч)
D11.7-D8.0статус штатных кнопок а/м (на 1 кнопку 1 бит)
##### Кадр эксплуатационных параметров Эксплуатационные параметры передаются от модуля оборудованию каждые 500 мс.
Protocol\_ID Packet\_IDDataCRC8
0x020x06Эксплуатационные параметры CRC8
**Эксплуатационные параметры**
Поля данныхОписание
D1-D0скорость а/м (1 бит = 1 км/ч)
D3-D2обороты двигателя (1 бит = 1 об/мин)
D7-D4пробег а/м (1 бит = 5 м)
D8не используется
D10.5-D9.0уровень топлива в баке (\[1 бит = 1 л\]/\[1 бит = 0,1%\])
D10.7-D10.6размерность параметра «уровень топлива в баке» 0x0: проценты (%) 0x1: литры (л)
##### Кадр идентификационных параметров
Protocol\_ID Frame\_IDDataCRC8
0x020x07Номер идентификационного параметра от 1 до 6 CRC8
Кадр может быть передан модулю в произвольный момент времени. В ответ модуль отправляет запрошенные идентификационные параметры. Контроль получения запрошенного параметра, контролируется анализом поля Frame\_ID. ##### Кадр ответа на запрос идентификационных параметров №1
Protocol\_ID Frame\_IDDataCRC8
0x020x08D31-D0 – серийный номер модуля (ASCII) CRC8
##### Кадр ответа на запрос идентификационных параметров №2
Protocol\_ID Frame\_IDDataCRC8
0x020x09D1 - D0 – код номера а/м CRC8
##### Кадр ответа на запрос идентификационных параметров №3 Зарезервировано ##### Кадр ответа на запрос идентификационных параметров №4
Protocol\_ID Frame\_IDDataCRC8
0x020x0BD0 – старший разряд версии ПО модуля D1 – младший разряд версии ПО модуля D5-D2 – ревизия ПО модуля CRC8
##### Кадр ответа на запрос идентификационных параметров №5
Protocol\_ID Frame\_IDDataCRC8
0x020x0CD0 – старший разряд версии CAN библиотеки D1 – младший разряд версии CAN библиотеки D5-D2 – ревизия CAN библиотеки CRC8
##### Кадр ответа на запрос идентификационных параметров №6
Protocol\_ID Frame\_IDDataCRC8
0x020x0DD0 – старший разряд версии протокола совпадает с типом протокола, равен 4 D1 – средний разряд версии протокола совпадает с идентификатором протокола, равен 2 D3-D2 – младший разряд версии протокола, равен 20 CRC8
### Режим пониженного энергопотребления модуля Переход в режим пониженного энергопотребления (Sleep) осуществляется модулем через 60 секунд после выключения цифровых шин CAN и LIN автомобиля. В режиме Sleep Модуль выключает трансляцию кадров статусов системы и эксплуатационных параметров. Уровни линий шины межблочного обмена UART-TX и UART-RX устанавливаются в уровни верхней подтяжки (pull-up) с напряжением U = 5 В. Выход из режима Sleep осуществляется при регистрации любой активности на цифровых шинах CAN и LIN или по команде протокола межблочного обмена. Индикация режима Sleep осуществляется выставлением соответствующего бита в кадре статусов Модуля. Фактический переход в режим пониженного энергопотребления осуществляется через 3 секунды после выставления индицирующего бита, что позволяет корректно обработать команды посланные модулю во время отработки перехода в Sleep режим. Для выдачи команды управления от оборудования модулю, который находится в режиме Sleep, требуется первым шагом вывести модуль из состояния пониженного энергопотребления командой SleepOut (см. раздел «Общее описание протокола»), дождаться первого кадра статусов системы, выдать требуемую команду управления Модулем. Фактическое выполнение команды может происходить с некоторой задержкой (до 2 секунд), наличие которой связано с реализацией алгоритмов взаимодействия Модуля с CAN/LIN протоколом конкретного автомобиля. ### Перезагрузка модуля Перезагрузка модуля происходит по команде «установить код автомобиля» при настройке модели автомобиле или команде «сброс к заводским настройка» протокола межблочного обмена. Перезагрузка модуля может длиться до 5 секунд (в зависимости от внешних условий). Во время перезагрузки модуль не будет транслировать кадр статусов системы и эксплуатационных параметров, а также не будет отвечать ни на какие команды оборудования.