1 (2021-03-27 18:25:32 отредактировано Sergey Ivanov)

Тема: Привязка высоковольтной батареи

Всем привет! Решил поделиться методом привязки (регистрации) высоковольтной батареи. Отдельной темы не нашел, поэтому создал новую. Здесь я приведу пример дешевой реализации на плате Ардуино + Can модуль Mcp2515, возможен также абсолютно бесплатный вариант посредством написания АТ-команд и отправки в кан  с помощью ELM адаптера, используя алгоритм из моего скетча. Бонусом в скетче еще прописан перевод приборной панели, добавлен переключатель режимов. В одном положении переключателя устройство работает как привязка ВВБ, в другом перевод панели на английский.
Скетч:

#include<Arduino.h>
#include <mcp_can.h>            
#include<SPI.h>                 

#define MODE_PIN 9

const byte data[8] = {0x02, 0x21, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00};
const byte data2[8] = {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const byte COUNT_ROWS = 11;

byte command[COUNT_ROWS][8] = {
  {0x10, 0x0A, 0x3B, 0x1F, 0x00, 0x00, 0x00, 0x00},
  {0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x04, 0x14, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00},
  {0x02, 0x10, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x02, 0x10, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x02, 0x21, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x03, 0x22, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00},
  {0x03, 0x22, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00},
  {0x03, 0x22, 0x12, 0x5C, 0x00, 0x00, 0x00, 0x00},
  {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
};

byte command1[5][8] = {
  {0x02, 0x10, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x06, 0x3D, 0x04, 0x00, 0x02, 0x3E, 0x02, 0x00},
  {0x02, 0x11, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x04, 0x14, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00}
};

long unsigned int rxId;        // CAN message ID
unsigned char len = 0;         // Data length
unsigned char rxBuf[8];        // Buffer IN
unsigned char txBuf[8];        // Buffer OUT

long CANInterval = 500;        // 0x79b message repeat interval in case of unsuccessful previous attempts
int CANSt = 0;
long CANMillis = 0;            // for 0x79b message repeat

byte RcvFrIdx = 0;
byte count = 0;
byte count1 = 0;
bool state = false;

#define CAN0_INT 2              // Set INT to pin 2
MCP_CAN CAN0(10);               // Set CS to pin 10

void setup(void) {

  if (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK) {

  }
  else {

  }

  CAN0.setMode(MCP_NORMAL);                     // Set operation mode to normal so the MCP2515 sends acks to received data.
  pinMode(CAN0_INT, INPUT);                     // Configuring pin for /INT input
  pinMode(MODE_PIN, INPUT_PULLUP);
  state = digitalRead(MODE_PIN);
}


void loop(void) {

  if (state != digitalRead(MODE_PIN)) {
    state = digitalRead(MODE_PIN);
    count = 0;
    count1 = 0;
    delay(500);
  }

  // talking to the CANbus and caclulating stuff

  if (!digitalRead(CAN0_INT))                     // If CAN0_INT pin is low, read receive buffer
  {
    if (count == 0) {
      if (digitalRead(MODE_PIN)) {
        CAN0.readMsgBuf(&rxId, &len, rxBuf);        // Read data: len = data length, buf = data byte(s)

        if (CANSt == 0) {
          byte sndStat = CAN0.sendMsgBuf(0x79b, 0, 8, data);
          CANMillis = millis();
          CANSt = 1;
        }
        if (rxId == 0x7bb && rxBuf[0] == 0x10) {
          for (uint8_t k = 4; k < 8; k++ ) command[0][k] = rxBuf[k];
          byte sndStat = CAN0.sendMsgBuf(0x79b, 0, 8, data2);
        }
        else if (rxId == 0x7bb && rxBuf[0] == 0x21) {
          for (uint8_t k = 1; k < 5; k++ ) command[1][k] = rxBuf[k];
          RcvFrIdx = 1;
        }
        if (RcvFrIdx == 1) {
          // Отправление посылки
          for (uint8_t k = 0; k < COUNT_ROWS; k++) {
            for (uint8_t i = 0; i < 8; i++) txBuf[i] = command[k][i];
            byte sndStat = CAN0.sendMsgBuf(0x797, 0, 8, txBuf);
            delay(100);
          }

          delay(500);

          count = 1;
        }

        //unsigned long currentCANMillis = millis();
        if (millis() - CANMillis > (3 * CANInterval)) {
          CANSt = 0;
        }
      }
    }
    if (count1 == 0) {
      if (! digitalRead(MODE_PIN)) {
        for (uint8_t k = 0; k < 5; k++) {
          for (uint8_t i = 0; i < 8; i++) txBuf[i] = command1[k][i];
          byte sndStat = CAN0.sendMsgBuf(0x743, 0, 8, txBuf);
          delay(200);
        }
        count1 = 1;
      }
    }
  }
}

Схема подключения:
http://mynissanleaf.ru/extensions/image_uploader/storage/7365/thumb/p1f1pe9kjfq2v35n49mod4f2k4.jpg

Спасибо сказали: vikt, LKA, edtwo, SergeyS-S, kovax, Alex88, Ai!, pchel, kayen, alexsy, Maxim, Tymmmi, Dider, Aleks163, Kras, wosk16

2 (2021-03-27 14:48:32 отредактировано LKA)

Re: Привязка высоковольтной батареи

Sergey Ivanov, я тут тоже немного покавырялся http://mynissanleaf.ru/viewtopic.php?pid=78090#p78090
подскажите плз, для чего использован второй переход в режим 10fa? у меня и после первого перехода срабатывает ребут по 1103.
14ffffff удаляет ошибки? у вас реально возникали такие ситуации при записи одного байта в еепром приборки или просто перестраховались?
зы: отличная работа)

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

Re: Привязка высоковольтной батареи

LKA пишет:

Sergey Ivanov, я тут тоже немного покавырялся http://mynissanleaf.ru/viewtopic.php?pid=78090#p78090
подскажите плз, для чего использован второй переход в режим 10fa? у меня и после первого перехода срабатывает ребут по 1103.
14ffffff удаляет ошибки? у вас реально возникали такие ситуации при записи одного байта в еепром приборки или просто перестраховались?
зы: отличная работа)

Второй переход не нужен, случайно скопировал. 14fffff можно не прописывать (скетч на английский писал более года назад и тогда видно подстраховывался), для смена языка достаточно трех пакетов. И ненужно дожидаться ответов приборки по 763, просто послать три пакета друг за другом.

Спасибо сказали: LKA1

4

Re: Привязка высоковольтной батареи

Sergey Ivanov⇓ пишет:

И ненужно дожидаться ответов приборки по 763, просто послать три пакета друг за другом.

это "визуализация", на сколько это возможно в консоли: сначала читаю как есть до вмешательства, потом пишу, и в конце проверяю чего записалось.

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

5

Re: Привязка высоковольтной батареи

Скажите, а можно разработать такую же процедуру, которой можно сбросить настройки и адаптации ввб на ZE0? Возможно ли это вообще с помощью АТ команд?

ZE0

6 (2021-04-02 16:19:52 отредактировано LKA)

Re: Привязка высоковольтной батареи

Maxim, с помощью ат команд только адаптер настраивается.
с каждым эбу разговор ведется на языке 16-ричных чисел от 2 до X байт.
если вы их каким-либо образом узнаете, то сможете.

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

7

Re: Привязка высоковольтной батареи

понял, а эти шестнадцатеричные слова не могут быть динамически изменяемыми?

ZE0

8

Re: Привязка высоковольтной батареи

Maxim, конечно могут, пример выше посмотрите...

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

9 (2021-04-02 13:17:18 отредактировано Dider)

Re: Привязка высоковольтной батареи

1 апреля обновился Can Scanner
Там есть привязка.

Вроде как даже не нужно включать экспериментальные функции. Я проверял до выхода релиза на гугл плей, может отличаться от видео.
Да и в AppStore лифспай привязывает

Реализовано благодаря  Сергею Иванову и Дала, слившему инфу в ютуб =)

Спасибо сказали: wosk1

10 (2021-10-04 15:24:17 отредактировано Alex88)

Re: Привязка высоковольтной батареи

Теперь ВВБ может привязывать новая версия Leaf Spy

AZE0-2012.G_24kW

11

Re: Привязка высоковольтной батареи

Похоже на простое удаление ошибки.она при следующем вкл.не появиться опять?

азе0 sl 2013 америка .18 осн.+ 14 кВтч доп

12

Re: Привязка высоковольтной батареи

popov2⇓ пишет:

она при следующем вкл.не появиться опять?

Без понятия. По идее не должна.
У кого есть возможность проверить, дайте знать.

AZE0-2012.G_24kW

13

Re: Привязка высоковольтной батареи

Я сегодня карсканером привязал, всё отл! Ошибка пропала, как и черепаха. Прямо праздник какой-то!

JDM AZE0 X 2012, Nissan Primera P10 1991
Спасибо сказали: popov21

14

Re: Привязка высоковольтной батареи

А чем можно отвязать ввб.??? Хочу на черепахи поездить посмотреть сколько проеду....

15

Re: Привязка высоковольтной батареи

dtravka⇓ пишет:

А чем можно отвязать ввб.???

руками по примеру в первом сообщении

dtravka⇓ пишет:

Хочу на черепахи поездить посмотреть сколько проеду....

что мешает не тапать больше 40?

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

16

Re: Привязка высоковольтной батареи

Привязать я могу двумя прогами. Leaf spy и car scaner. А вот отвязать они не могут. Мне нужно для эксперемента. Я жду катлы с Китая. И пока решил с ввб эксперементы проводить.

17

Re: Привязка высоковольтной батареи

ну как бы .... , пока эксперименты , без коментов......

*********
10fa;***
********
4E20*** (hex .. км)
*********
1103

I-MiEV R 2010 X Li-ion 16 , AZEO R 24G - 2013 , AZEO R - 2016
не говорите что мне делать и я не скажу куда вам идти ...

18 (2021-11-11 16:57:15 отредактировано SergeyS-S)

Re: Привязка высоковольтной батареи

dtravka,
в лаунче видел строку что то типа .. сменить вин.. , возможно это то что надо ,
но что и как на самом деле не скажу , дальше названия этой функции не заходил ,
пока работает и нефиг туда лезть....  bt

I-MiEV R 2010 X Li-ion 16 , AZEO R 24G - 2013 , AZEO R - 2016
не говорите что мне делать и я не скажу куда вам идти ...

19

Re: Привязка высоковольтной батареи

ахтунг...car scanner не подключается к эбу . после двух удачных привязок ввб на зео и азео, перестал ловить эбу((...чезанах?

ZE0 G 2011, NEW 24KWh
AZEO X 2013 NISMO Perfomance

20 (2022-03-04 05:44:11 отредактировано SergeyS-S)

Re: Привязка высоковольтной батареи

v8373591,
в настройках \ приложения \карск..\ удали кэш и данные , после проверьте , должно помочь ,
только после надо будет занова прописать настройки приложения

I-MiEV R 2010 X Li-ion 16 , AZEO R 24G - 2013 , AZEO R - 2016
не говорите что мне делать и я не скажу куда вам идти ...

21 (2022-03-03 10:42:44 отредактировано v8373591)

Re: Привязка высоковольтной батареи

где в настройках карсканера их искать?
кстати, пытались через андроид товарища подключиться блютусным обд...результат аналогичный((

ZE0 G 2011, NEW 24KWh
AZEO X 2013 NISMO Perfomance

22

Re: Привязка высоковольтной батареи

v8373591⇓ пишет:

где в настройках карсканера их искать?

в настройках андроида => очистить данные приложения

Листок-самолет LEAF ZE0 G 2011 перепак CATL 114ач

23

Re: Привязка высоковольтной батареи

победа!))...нашел в настройках по обд модель ниссан лиф(хз почему сразу не нашел)) всем спасибо за советы!

ZE0 G 2011, NEW 24KWh
AZEO X 2013 NISMO Perfomance

24

Re: Привязка высоковольтной батареи

dtravka пишет:

Привязать я могу двумя прогами. Leaf spy и car scaner. А вот отвязать они не могут. Мне нужно для эксперемента. Я жду катлы с Китая. И пока решил с ввб эксперементы проводить.

Через ELM327chat можно, чтобы не собирать ардуину

> 1.LBC_Read_Bat_ID.txt

ATZ
ATST5A
ATSP6
ATSH79b
ATCRA7bb
ATFCSH79b
ATFCSD300020
ATFCSM1

1081
# Read current Battery ID
2190

# response like
# 0A 6190 45435231
# 30303830 FFFFFF
# where 45435231 30303830 - this is battery ID. Use in it for next step


> 2.VCM_Set_Bat_ID.txt
ATZ
ATSP6
ATSH797
ATCRA79a
#disable CAN autoformating to construct long msg
ATAL
ATCAF0

# PUT BATTERY ID FROM REQUEST $2190 FROM LBC (0x79b) INSTEAD OF xx
# AND UNCOMMENT BELOW
# 10 0a 3b1f xxxxxxxx
# 21 xxxxxxxx 000000

# reset all DTCs
04 14 ff ff ff

AZE0 X 2015
Спасибо сказали: SergeyS-S, LKA, Rustik20053

25

Re: Привязка высоковольтной батареи

Из видюшек Далы видны команды для синхронизации инвертера, если вдруг кто будет ставить другой инвертер.
В него надо зашить значение из старого инвертера. Это первые две цифры выбитые на корпусе инвертора, или же можно считать по CAN из старого блока и записать в новый.

https://www.youtube.com/watch?v=SidQ0vy … 7sEVRepair
https://www.youtube.com/watch?v=Of2vCYg … 7sEVRepair

ATZ
ATST5A
ATSP6
ATSH784
ATCRA78c

10с0
2101
# read response: 6101xx, where xx - resolver value from old inverter

# some another values
2103
2104

# Run below command after replacing inverter. Set resolver offset value instead xx.
#3b01xx
1081

AZE0 X 2015
Спасибо сказали: SergeyS-S, LKA2