Decyphering iMiEV and iON CAR-CAN message data

Mitsubishi i-MiEV Forum

Help Support Mitsubishi i-MiEV Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Hi,

@cristi:
- what happens if we leave the OBDLink connected to the car for a long time (e.g. overnight, with the car standing still)? Is there a secondary battery that may drain?
- Is the OBD connector powered when the "ignition" key is off (I can't test this now since we have the car for limited amounts of time but I vaguely remember that it does so).
There is a 12-volt lead-acid battery that is charged from the tractionbattery and the OBD2 Pin 16 should be directly connected to the second battery (not sure if the OBD2 specifaction regualtes that). So there is allways a ~12V current (unsafe source [ger]). So if you connect a consumer to it, the lead-acid battery should drain. Maybe it is charged by the tractionbattery even if the car is off. To avoid that you could use a relais, that has your interface connected as your load circuit and the radio or something else that works with igniion on only as your controll circuit.

Best regards,
Dax
 
Thanks!

The STN11xx circuit has PowerSave functionality, so if this turns out to be an issue, I will look into that. Nobody wants to drain the auxiliary as it drives the charging for the traction battery...

According to iMiEV wikipedia the auxiliary battery "is charged from the main traction battery via a DC-DC voltage reduction device".

Also I would guess that the OBD2 adapter (of whatever sort) will take around 0.1 Amps, that's 1,2 watt (much less than the car radio), which seems very little for a car battery with tens of Ah, let alone one that can charge from a much larger battery, which in turn is connected to the mains quite often.

So as I see it (maybe I'm wrong) this is no problem, but I was wondering if anybody has any practical experience with keeping an OBD2 adapter connected for a long time.

best, cristi
 
Hi,

I think this could is a problem, because it is weighting your measurement results that are related to the battery. Only if the car is parked without charging for a long time ;)

Dax
 
Hello

Does anybody have experience (and maybe a CAN log) from a car charging? In particular, is there any way to find out anything about the charging progress?

I remember that there is much less data on the bus when the ignition key is not turned, and probably there is even less when the key is not present.

But any clue about the charging progress would be very valuable to have. If anybody has a charging-car log, I will gladly help on analyzing it.

Thanks!

cristi
 
does any one have try to get the can message when you use the remote controll to start the heater? (climate controls)?
would be great to get this implemented in OVMS :)

so can start the climate any where from (using OVMS)

if the message can be capture and then use OVMS to send it again to start the heater.
 
We are also very interested in climate control PIDs. We drew some logs with the car standing still, moving the climate control knobs to various positions, but don't have much experience in analyzing logs. Can anyone help?
 
cristi said:
We are also very interested in climate control PIDs. We drew some logs with the car standing still, moving the climate control knobs to various positions, but don't have much experience in analyzing logs. Can anyone help?

i`am not a exspert but if you post the log mabey we can find it out? and mabey a smart dude read this and can help :)

do you have the remote to start the heater also?
 
svingen said:
i`am not a exspert but if you post the log mabey we can find it out? and mabey a smart dude read this and can help :)
here is the log:
http://ev.csc.kth.se/cristi/stn_simulator/logs/heating.txt

77 seconds into the log you can see the range (PID 346 byte 7) dropping from 42 to 30 hex due to turning the heating on.

"3/20/2014 11:02:50 AM",3462710572000000042
...

"3/20/2014 11:02:51 AM",3462710572000000030

Then the range keeps varying as we played with heating and ventilation...

I am trying to find PIDs that change in correlation with these events, I only suspect 3A4 and 384

svingen said:
do you have the remote to start the heater also?
unfortunately not.
 
Bonjour
@Cristi
I analysed your log.
In my opinion, in this log, you played only with the airconditioner, not with the heating...

I sent you a PM, please contact me...

Xavier
 
Bonjour Priusfan, thanks for your message and for the log analysis,

We finally realized that PID 3A4 represents the climate control dials.

byte 0 represents the position of the heating/cooling (top) dial (the 4 least significant bits). It is 7 when heating/cooling is off, <7 means cooling, >7 means heating. More significant bits indicate AC on, heating MAX on, air recirculation on (i.e. pushing the 3 dials)

byte 1 represents the position of the ventilation (middle) dial, its 4 least significant bits are the dial position. The most significant bit(s) represent defrost, etc.

On PID 384 that you indicated we see the _effects_ of these dials. Byte 4 is the heating current multiplied with 10 and varies quite a lot (ramps up slowly when the heating + ventilation are on, then it goes to zero again, then it goes up again regularly). We are interested in estimating the heating (and other factors) effect on range so 3A4 is what we were after.

Cheers, cristi
 
this is great news and good work! :)
is it posibol to use this info and send the command using OVMS to start the heating?
Imiev does have a remote controll to start the heating (when car is off and it heat upp the car 30 min before it stop) so gues it should in theory?
 
I have an OBDLink MX dongle and my i-MiEV has the remote. Can I use the dongle with a Windows or Linux computer to sniff the CANbus and retrieve the PIDs when the remote is activated? If yes, how would I do that?

I also have the OVMS module and am interested in replicating the MiEV remote with the app instead.
 
@PV1 that was nice, i have not try it my self but i think ou can followed this guid http://theksmith.com/technology/hack-vehicle-bus-cheap-easy-part-1/ does any one else have somthing else to recomed?

i have a peugot ION 2011 so it wold be nice if this "hack" can work on the ION also.
don`t have the OBDLink MX but think i have to buy one :)
 
@svingen
this is great news and good work! :)
is it posibol to use this info and send the command using OVMS to start the heating?
Imiev does have a remote controll to start the heating (when car is off and it heat upp the car 30 min before it stop) so gues it should in theory?

This would be great, but I don't know whether anybody managed to write data to the iMiev CAN bus. To what I remember there are important risks regarding losing break assistance, etc. I did not follow this issue lately, maybe it got better.

Anyway, here are more specific details:

PID 3A4
byte 0, bits 0-3: heating level (7 is off, under 7 is cooling, over 7 is heating)
byte 0, bit 7: AC on (ventilation dial pressed)
byte 0, bit 5: MAX heating (heating dial pressed)
byte 0, bit 6: air recirculation (ventilation direction dial pressed)

byte 1, bits 0-3: ventilation level (if AUTO is chosen, the automatically calculated level is returned)
byte 1, bits 4-7: ventilation direction (1-2 face, 3 legs+face, 4 -5legs, 6 legs+windshield 7-9 windshield)
 
@cristi that was great news,hopefull sombody can use this data to make OVMS support can-bus writing.

have you try to send this message to the car to see if it work?
does this work if the car is off?

do you have any tips regard software to sniff out the can buss data that @PV1 is trying?
wold be nice to find out the remote controll can buss message.


huge thx cristi hopefull this will make the OVMS even bether and we know understand even more can buss messages :)
 
have you try to send this message to the car to see if it work?
To my knowledge nobody managed to write to the imiev CAN bus but I may be wrong. I tried once with no good results and then @priusfan told me that one can lose break assistance and I was mostly interested in reading anyway.

does this work if the car is off?
I don't know whether writing (if it works at all) works when the car is off. Reading works only when the car is on, and it is on (some PIDs available) also when it is charging.

However, I noticed that heating itself does not work so well when the car is charging. Ventilation is started and all, but there is not much heat coming in... That's strange since that would be a perfect time for pre-heating the car.

do you have any tips regard software to sniff out the can buss data that @PV1 is trying?
wold be nice to find out the remote controll can buss message.

For sniffing there is a lot of information in this thread. You need a complete CAN bus log (no filters). You also need an USB STN1100-based OBD connector (not Bluetooth due to the high baud rate, so OBDLink MX will not work as far as I know). From the current ScanTool offer, OBDLink SX and OBDLink Wifi seem to have USB. In the past they had a Bluetooth scan tool with USB, it is phased out I think.

Use a terminal that can handle 921600 (RealTerm in windows works, even under Parallels on Mac). Configure it to log to a file. Then send these commands:

STSBR 921600
(reconfigure terminal for the new baudrate!)
ATSP6
ATS0
ATH1
ATCAF0
ATMA

Manipulate the remote control when the logging is on... Maybe film the whole process so you know what time you pressed which remote control button (make sure the camera and computer clocks are synchronized).

Then it's a matter of analysis. I personally parse the file in Java and look for changes (that's how I found 3A4). I know @priusfan uses excel. There are probably many other ways... In this case I would check which PIDs change around the time when you pressed the buttons. Anyway, if you share the log, many people will be able to help.
 
What commands does Canion send to the OBDLink to trigger the data stream, and what protocol does it use? I know you said that you think bluetooth won't work, but I'd like to take a stab at it.
 
@PV1
Bonjour
You have all the responses in cristi's message....
a) the commands
STSBR 921600
(reconfigure terminal for the new baudrate!)
ATSP6
ATS0
ATH1
ATCAF0
ATMA
b) the protocol :
Use a terminal that can handle 921600 (RealTerm in windows works, even under Parallels on Mac). Configure it to log to a file. Then send these commands:

maybe you could start with a look to the stn11xx' s documentation

on iMiev, we can see 1625 frames/sec.
using Bluetooth, the bandwidth is just not sufficient...

Xavier
 
Have some logs i did when developed the OVMS i-Miev puggin.
In the excel file there is one log where i start preheating, one from normal charging and one where i just push the button on the remote to activate the remote and get error on the remote.

As you can see from the summary page, there are 3 PID that only appear when heating: 384, 385 and 3A4. I also get some 60, 600, 6000 and 60000 messages that i only get when preheating, but know what is.

These logs is made with CAN-do tool http://www.wwwsite.com/puzzles/cando/

The logfile can be downloaded from here: https://www.dropbox.com/s/m36u0j905xgfi6a/i-Miev CAN-PID.xlsx
 
i did a 1-second capture to see what showed up when the key was switched to READY, sorry the tabs didn't transfer cleanly,

Code:
CAN data capture notes for Key to Ready, 1 second capture 20161203
sorted from highest priority to lowest

PID	period	len	typical data				Notes
hex	msec	# byte	hex

101	100	1	0x04			=Key ON/READY;  00= off (lock)

210	20	7	0x00 0x00 0x00 0x00 0x80 0x00 0x0                accel pedal position
212	20	8	0x00 0x00 0x00 0x00 0xA7 0xD0 0x00 0x00     
285	10	8	0x07 0xD0 0x14 0x00 0x8F 0xFE 0x0C 0x10
286	100	8	0x00 0x00 0x00 0x37 0x00 0x00 0x00 0x00
288	10	8	0x07 0xD0 0x27 0x10 0xB3 0x00 0x11 0x10	
298	100	8	0x37 0x38 0x3D 0x38 0x00 0x00 0x27 0x10

29A	100	8 index	0x00 0x4A 0x41 0x33 0x32 0x31 0x35 0x48
			0x01 0x31 0x36 0x43 0x55 0x30 0x31 0x38
			0x02 0x39 0x39 0x37 0xFF 0xFF 0xFF 0xFF
2F2	100	3	0x00 0x00 0x03

308	20	8	0x00 0x03 0xE8 0x00 0x00 0x00 0x00 0x00
346	20	8	0x27 0x10 0x64 0x20 0x00 0x00 0x04 0x43	x2710
373	10	8	0xC8 0xC8 0x7F 0x79 0x0E 0x18 0x00 0x16

418	20	7	0x50 0x00 0x00 0x00 0x00 0x00 0x00            shifter position = P
428	100	0	remote request

564	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
565	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x07 0x00
5A1	50	8	0x14 0x00 0x00 0x00 0x00 0x00 0x00 0x00

695	100	8	0x04 0x08 0x00 0x01 0x15 0x09 0x19 0x06
696	100	8	0x03 0xE4 0x01 0xF2 0x41 0x00 0x27 0x10	x2710
697	100	8	0x00 0x00 0x00 0x01 0x72 0x00 0x00 0x00

6D0	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
6D1	50	8	0x00 0x04 0x00 0x00 0x40 0x00 0x00 0x00
6D2	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
6D3	50	8	0x00 0x00 0x01 0x00 0x50 0x00 0x00 0x00
6D4	50	8	0x00 0x00 0x00 0x00 0x00 0x10 0x00 0x00
6D5	50	8	0x10 0x00 0x00 0x04 0x00 0x00 0x00 0x00
6D6	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
6DA	50	8	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

6E1	40	8 index	0x01 0x00 0x3E 0x3E 0x01 0x90 0x01 0x90	cell data
			0x02 0x00 0x3F 0x40 0x01 0x90 0x01 0x90
			0x03 0x00 0x3F 0x40 0x01 0x90 0x01 0x90
			0x04 0x00 0x3E 0x40 0x01 0x90 0x01 0x90
			0x05 0x00 0x3D 0x3F 0x01 0x90 0x01 0x90
			0x06 0x00 0x3D 0x3D 0x01 0x90 0x01 0x90
			0x07 0x00 0x3E 0x3F 0x01 0x90 0x01 0x90
			0x08 0x00 0x3E 0x40 0x01 0x90 0x01 0x90
			0x09 0x00 0x3F 0x40 0x01 0x90 0x01 0x90
			0x0A 0x00 0x3E 0x40 0x01 0x90 0x01 0x90
			0x0B 0x00 0x3D 0x3F 0x01 0x90 0x01 0x90
			0x0C 0x00 0x3E 0x3D 0x01 0x90 0x01 0x90

6E2	40	8 index	0x01 0x3E 0x3D 0x00 0x01 0x90 0x01 0x90
			0x02 0x40 0x3E 0x00 0x01 0x91 0x01 0x90
			0x03 0x40 0x3F 0x00 0x01 0x90 0x01 0x90
			0x04 0x40 0x3E 0x00 0x01 0x90 0x01 0x90
			0x05 0x3F 0x3D 0x00 0x01 0x90 0x01 0x90
			0x06 0x3D 0x00 0x00 0x01 0x90 0x01 0x90
			0x07 0x3E 0x3D 0x00 0x01 0x90 0x01 0x90
			0x08 0x40 0x3E 0x00 0x01 0x90 0x01 0x90
			0x09 0x40 0x3F 0x00 0x01 0x90 0x01 0x90
			0x0A 0x40 0x3E 0x00 0x01 0x91 0x01 0x90
			0x0B 0x3E 0x3D 0x00 0x01 0x90 0x01 0x90
			0x0C 0x3D 0x00 0x00 0x01 0x90 0x01 0x90

6E3	40	8 index	0x01 0x3D 0x3D 0x00 0x01 0x90 0x01 0x90
			0x02 0x3E 0x3D 0x00 0x01 0x90 0x01 0x90
			0x03 0x3E 0x3E 0x00 0x01 0x90 0x01 0x90
			0x04 0x3E 0x3D 0x00 0x01 0x90 0x01 0x90
			0x05 0x3D 0x3D 0x00 0x01 0x90 0x01 0x90
			0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00
			0x07 0x3D 0x3D 0x00 0x01 0x90 0x01 0x90
			0x08 0x3E 0x3E 0x00 0x01 0x90 0x01 0x90
			0x09 0x3E 0x3E 0x00 0x01 0x90 0x01 0x90
			0x0A 0x3E 0x3E 0x00 0x01 0x90 0x01 0x90
			0x0B 0x3D 0x3D 0x00 0x01 0x90 0x01 0x90
			0x0C 0x00 0x00 0x00 0x00 0x00 0x00 0x00

6E4	40	8 index	0x01 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x02 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x03 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x04 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x05 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00
			0x07 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x08 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x09 0x00 0x00 0x00 0x01 0x90 0x01 0x90
			0x0A 0x00 0x00 0x00 0x01 0x8F 0x01 0x90
			0x0B 0x00 0x00 0x00 0x01 0x8F 0x01 0x90
			0x0C 0x00 0x00 0x00 0x00 0x00 0x00 0x00

6EA	100	0
6FA	100	8 index	0x00 0x4A 0x41 0x33 0x32 0x31 0x35 0x48	VIN
			0x01 0x31 0x36 0x43 0x55 0x30 0x31 0x38
			0x02 0x39 0x39 0x37 0x00 0x00 0x00 0x00

738	1000?	2	remote request
75A	100	8	0x03 0xE8 0x03 0xE8 0x64 0x64 0x38 0x37
75B	100	8	0x36 0x36 0x37 0x3D 0x17 0xEF 0x84 0x00

The VIN number is coded into PID 6FA, convert the hex value to Ascii to read the 17 digit VIN. The first time it appears it sends an index of x03 with zeroes, then the index sequence starts and repeats x00,1,2.

i will try to sort another run in which the motor is READY in N, shift to D and accelerate, then hit the brakes.

Also i could try to capture during charging when the REMOTE is turned ON and signalling the car to turn on heat/defrost.
 
Back
Top