Close

The Website

A project log for Crunchtrack

The smallest open source GSM+GPS+CAN board ever

mastro-gippoMastro Gippo 08/10/2015 at 11:570 Comments

I think that we need to create a common repository/wiki database where we can share reverse engineered car information with a common standard, aiming at being able to automatically download a “descriptor” file that can run on an universal software.

This is not as hard as it seems; most of the data is usually extracted as the raw number, multiplied by a number, plus an offset. More complex formulas are not very common but exist and will be handled accordingly.

So, for every car, we have a page that states pinouts, bus speed, misc notes, and all the found messages. Log files can be shared and will be available for anyone to study.

Example page:

Car: Renault Twizy
Bus speed: 500Kbps

Pinouts:

– OBD connector
— Pin 6: CAN H
— Pin 14: CAN L

Messages:

Name Address Lenght Repetition rate
BMS status 0x155 8 10ms
Battery pack temperature 0x55 8 1000ms
Single cell voltage 1-5 0×556 8 100ms

Message specifics:

0x155 BMS status (10ms)

Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
Name PWRH PWRL CSTAT SOCH SOCL
Example 0x07 0x97 0xFF 0x54 0x6B 0xF0 0x00 0x6F
Name Parameter name Min Max Formula UM
PWRH PWRL Battery power 0x0F00 (0x7D0-(n&0x0FFF))*16 kW
Instantaneous battery power measured from the BMS. A negative value indicates charging, either due to regenerative braking or AC charging connection. This value can be used in conjunction with BV (0x55F) to calculate current flow. The indicated power is the total coming from the battery, power consumed by auxiliary devices is not separated from the traction power.
Example: (0x7D0-(0x97FF&0x0FFF))*16 = -752W (charging)
CSTAT BMS status n
BMS unit status.
· 0x94 = Initialization in progress; data acquired may not be valid
· 0x54 = BMS ready
SOCH SOCL SOC 0 0x9C40 n/400 %
Battery state of charge.
Example: 0x6BF0/400 = 69.06%

This is just a brief example; the table may need more columns (to define if the message is read only or if we can send it to activate stuff, a method to handle bitmapped statuses, etc.) but it’s just to explain the idea. There will be a standard way to describe requests and responses, and how to handle data spanning multiple messages.

The community will help to converge to a standard way to save log files, develop tools to convert them, study their content and publish results. I have a small collection of softwares I’ve written in these years that I will make available with an open source license. Other options are:

Kayak http://kayak.2codeornot2code.org/index.html
OVMS CAN-RE-tool https://github.com/openvehicles/CAN-RE-Tool
BusMaster http://rbei-etas.github.io/busmaster/

Discussions