Jump to content
Posted

Cummins Can bus messages

 

 

I need some help decoding these messages.  I’m not sure about the timing command it requests 25*BTDC at idle as soon as

it is started when cold then comes down after a long warm up to about 15*. That seems very high.

 Could it really be going that high?

 

// 24 Valve Cummins CAN bus messages. How to decode them ?
// Arduino Uno and MCP2515 CAN module (no name) from Asia.

 

22 40 8 4 30 98 23 96 6 11 13       P >> E 74158432 diff 25256 idle val sw acc pedal up   timing error  counter 2 RPM range 3 Fuel temp F 46
A2 40 8 AE FF 0 0 B8 2 10 3       P >> E 74158904 diff 472 Offset? -82 Volts 13.9
20 0 8 12 1 0 0 3 6 2B D        E >> P 74159476 diff 572 cylinder 2 Fuel percent 6.7 Timing deg 15.4 RPM 842
A0 0 8 F8 2 0 0 16 1 42 1       E >> P 74159868 diff 392 ACK 
22 40 8 4 30 9D 43 96 6 11 13       P >> E 74182240 diff 22372 idle val sw acc pedal up   timing error  counter 3 RPM range 3 Fuel temp F 46
A2 40 8 AE FF 0 0 B0 2 C 3       P >> E 74182720 diff 480 Offset? -82 Volts 13.8
20 0 8 1B 1 0 0 FA 5 21 D       E >> P 74183292 diff 572 cylinder 4 Fuel percent 6.9 Timing deg 15.3 RPM 840
A0 0 8 F8 2 0 0 16 1 42 1       E >> P 74183688 diff 396 ACK 
Bytes 2 and 3 are for 29 bit CAN IDs and are not shown. Byte 4 is the data length. Long numbers and 'diff' are timestamps
I took manual control of the VP's timing solenoid that causes the timing lock bit to set (P0216)

<<pseudo code>>

         //Not sure about this compute fuel temp in Inj Pump >> message ID 0x22 DEC 34    
      fuelTemp = (dataBuff[y][12] << 8) | dataBuff[y][11];
      fuelTemp = (fuelTemp / 100) - 40;
      fuelTemp = ((fuelTemp * 9) / 5) + 32;
      Serial.print(" Fuel temp F ");
      Serial.print(fuelTemp);

 

          // compute timing advance >> message ID 0x20 DEC 32
      Timing = (dataBuff[y][10] << 8) | dataBuff[y][9]; //convert from little endian. 100 bits per degree.
      Timing = (float)((Timing) / 100);      // 
      Serial.print(" Timing deg ");
      Serial.print(Timing, 1);

 

      //Fuel compute >> ID 0x20
      FuelPCT = (dataBuff[y][6] << 8) | dataBuff[y][5];
      FuelPCT = (float)(FuelPCT*100) / 4096;    // 4095 is max fuel allowed by pump
      Serial.print(" Fuel percent ");
      Serial.print(FuelPCT, 1);


    //second message from IP (0xA2 DEC 162) has other stuff in it.
    //looks like a +/- offset or +/- error. 
    // hangs around 0x0001 - 0xFFFE
    if(dataBuff[y][0] == 0xA2)
             {
          offSet = (dataBuff[y][6] << 8) | dataBuff[y][5];
          Serial.print(" Offset? ");
          Serial.print(offSet);


        // This byte changes from 0 to 1 after a delay. Seems to check if the timing advance mechanism is
        // able to match the commanded timing value
    //0x22 message ID
      (dataBuff[y][6] == 0x00) ? Serial.print(" timing locked ") : Serial.print(" timing error ");

 

      //compute RPM from ID 20xx bytes 11 and 12 
      RPM = (dataBuff[y][12] << 8) | dataBuff[y][11];     //convert from little endian
      RPM = RPM/4 ;                           //divide by 4
 

  • Replies 5
  • Views 2.7k
  • Created
  • Last Reply

Top Posters In This Topic

Featured Replies

Cold trucks idle up to 19* of timing.   

 

Idle of 15* happens if you let the truck sit to long.

 

warm trucks idle at ~12-13*

 

 

I wish I could help more, but I signed my life away to hold the secrets of the code.

 

 

Edited by Me78569

  • Owner
On 12/19/2019 at 8:39 PM, Great work! said:

I’m not sure about the timing command it requests 25*BTDC at idle as soon as

it is started when cold then comes down after a long warm up to about 15*. That seems very high.

 

Normal. Mine in cold weather initially can be way up in timing but as it idles for a bit it drops rather fast. The VP44 can go as far as 32* BTDC for timing. 

I have seen up to 19 degrees as @Me78569 said. 25° BTDC at idle sounds crazy. I live in some harsh cold winter climates, down to -40 negating windchill sometimes, and I have never seen mine that high. But now I'm really curious, next time I get a really cold morning I'll see what the quad says is being commanded.

  • Author

Thank for the replies.  Those data logs are very interesting. I never realized  how active the timing is on our trucks. I was used to setting up P7100 pumps at 15 degrees. My calculations  are probably  wrong. I think I'll try dividing  the raw command by 128 instead of 100 and see if it agrees  more with the  data logs.