Mitsubishi CAN communication

Mitsubishi hybrid drive unit hacking
Post Reply
arber333
Posts: 3265
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 80 times
Been thanked: 234 times
Contact:

Mitsubishi CAN communication

Post by arber333 »

I decided to make a set of reports from Mitsubishi components when operating. I think we can use those reports to control several things in a car while driving.

Mitsubishi Inverter

0x289 8bytes at 100ms

B0+B1 = torque report = ((H*256+L)-10000)/10
B2+B3 = RPM report = ((H*256+L)-20000)
B4+B5 = HV report = ((H*256+L))
B7 = RSDN pin status = 04 - not connected, 00 - connected

0x299 8bytes at 100ms

B0 = Peak motor temp B-40 [°C]
B1 = motor temp B-40 [°C]
B4 = motor temp B-40 [°C]

0x732 8bytes at 100ms

B0+B1 = motor current 1 report Ia= ((H*256+L)-1000)
B2+B3 = motor current 2 report Ib= ((H*256+L)-1000)
B4 = rotor angle report

Calculate motor current 3 report Ic

Ic = -Ia - Ib

In this equation, Ic is the current in the third phase, and Ia and Ib are the current values in the first and second phases, respectively. Assuming that the system is balanced.

Calculate the DC current

DC Current (Idc) = |Ia| + |Ib| + |Ic|

Mitsubishi charger/DCDC

0x377 8bytes DC-DC converter status

  B0+B1 = 12V Battery voltage (h04DC=12,45V -> 0,01V/bit)
  B2+B3 = 12V Supply current  (H53=8,3A -> 0,1A/bit)
  B4 =  Temperature 1   (starts at -40degC, +1degC/bit)
  B5 =  Temperature 2   (starts at -40degC, +1degC/bit)
  B6 =  Temperature 3   (starts at -40degC, +1degC/bit)
  B7 =  Statusbyte    (h20=standby, h21=error, h22=in operation)

  bit0(LSB) = Error
`   bit1    = In Operation
    bit3      =
    bit4      =
    bit5      = Ready
    bit6    =
    bit7(MSB) =

0x389 8bytes Charger status

  B0 = HV-Batteryvoltage    (hAB=342V -> 2V/bit)
  B1 = AC-Mains voltage     (hE2=226V -> 1V/bit)
  B2 = DC-charge current (1?) (h5B=9,1A -> 0,1A/bit
  B3 = Temperature 1    (starts at -40degC, +1degC/bit)
  B4 = Temperature 2    (starts at -40degC, +1degC/bit)
  B5 = Statusbyte     (CA while charging)    bit0(LSB) =
`   bit1    = Mains voltage present
    bit2      =
    bit3      = Charging
    bit4      = Error (no CAN messages received)
    bit5      =
    bit6    = DC-DC converter request active
    bit7(MSB) = 1KHz pilot present  

  B6 = AC-Mains current     (h91=14,5A -> 0,1A/bit)
  B7 = DC-charge current (2?) (same as B3, sometimes differs by 0,1A)

0x38a 8bytes Charger status

  B0 = Temperature    Raises together with other temperatures, but with +5deg offset
  B1 = Temperature    (starts at -40degC, +1degC/bit)
  B2 = DC-bus voltage     (9B=310V -> 2V/bit)
  B3 = PWM-signal from EVSE   (h19=25% -> 1%/bit)
  B4 = Status

bit0(LSB) =
`   bit1    =
    bit2    = Wait for mains voltage
    bit3      = Ready for charging
    bit4      =
    bit5      =
    bit6    =
    bit7(MSB) =

  B5 = 00
  B6 = 00
  B7 = 00

Mitsubishi Heater

0x398 8bytes at 100ms

B0 = 00->01 as soon as 0x285h is received
B1 = seems to be current report [Current = dec value/10]
B2 = could be power applied. It certainly changes fast enough with current.
B3 = seems to be inlet temperature [temp=dec value-40]
B4 = seems to be outlet temperature [temp=dec value-40]
B7 = h70 when HV is <175Vdc, h00 when HV >175Vdc. So 175V seems to be the low-voltage limit

Mitsubishi AC compressor

0x388 8Bytes at 100ms
B0 = status, 7C start, 02 no power, 01 power present.
B2 = RPM report high byte
B3 = RPM report low byte
b4 = seems to be amp flow [current=dec value/10]
B7 = CAN status 00-No CAN, 01-CAN error, 02-heartbeat 0x285 present.
arber333
Posts: 3265
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 80 times
Been thanked: 234 times
Contact:

Re: Mitsubishi CAN commands

Post by arber333 »

I decided to make a database of mitsu commands that components require to operate them.

Heartbeat

All of Mitsu components require this heartbeat to operate

0x285 00,00,14,39,91,FE,0C,10 at 10ms for driving

0x285 00,00,B6,39,91,FE,0C,10 at 10ms for charging

Mitsubishi Inverter

0x371 30, 00, 00, 00, 00, 00, 00, 00

0x286 00, 00, 00, 3D, 00, 00, 21, 00

0x287 Torque Command 0x2710=0Nm=10000 decimal, torque band = +/- 200nm 200/10000=0.02nm/bit

Byte[0]=TorqueHi; //front motor torque part 1
Byte[1]=TorqueLo; //front motor torque part 2
Byte[2]=TorqueHi; //rear motor torque part 1 0x2710=10000=0NM
Byte[3]=TorqueLo; //rear motor torque part 2
Byte[4]=TorqueHi; //generator torque part 1
Byte[5]=TorqueLo; //generator torque part 2
Byte[6]=function; //0x00,0x02=no inverter response to torque
//0x03=front motor responds (possibly rear also)
//0x04=generator only responds to torque
//0x05=generator and front motor respond to torque.
Byte[7]=0x00;

Mitsubishi charger/DCDC

0x286 Frame Sent to charger to control charging:
Byte0 +Byte1 = 0F28=388.0V, 0,1V/bit Voltage seems to be ignored
Byte2 = 78=12A -> 0,1A/bit Current in amps x 10

Mitsubishi Heater

0x188 03 50 A2 4D 00 00 00 00 at 100ms

byte0 is 03 as heartbeat is received.
byte1 seems to be working with 20 or 50
byte2 is power command
byte3 4D

Also i changed byte2 from A2 into
12 and i got 0.1A
22 i got 1.8A
32 i got 3.4A
42 i got 5.6A
52 i got 5.6A
62 i got 6.8A
72 i got 6.8A
82 i got 8.5A

Mitsubishi AC compressor

0x185 0B 00 1D 00 00 08 00 03

B0 is status command, 08 means standby and 0B is start
B2 just works with 1D signal
B5 is RPM command from 08 (min) to 54(max)
B7 can be 00 or 03, it does not differentate
tom91
Posts: 1308
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Mitsubishi CAN communication

Post by tom91 »

Thank you for listing them out like this, did you compile this into a .DBC file?
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
arber333
Posts: 3265
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 80 times
Been thanked: 234 times
Contact:

Re: Mitsubishi CAN communication

Post by arber333 »

tom91 wrote: Tue Oct 31, 2023 6:55 pm Thank you for listing them out like this, did you compile this into a .DBC file?
No, not yet. I am working on my Mazda system and it seemed natural to put them all in the same place.
Post Reply