Hello Konstantin,
Thank you for taking the time to send another diagram.
Forgive me as I have no formal training in electronics. So my understanding may be inconsistent with the science.
The Ford ABS module is reading the AC pulse /frequency count from the vehicle speed sensor located on the truck's differential. The Ford ABS module then outputs the frequency pulse to Canny's frequency meter input channel.
Once Canny receives the frequency pulse reference on the input channel, the issue then would be for Canny to convert that reference input pulse into the two bytes D0 and D1 prior to output the data on the CAN bus in the form of 0xD1D0.
Prior to my conversation with David (another forum associate). I thought 0xD0 was the Cummins engine computer only required byte for speed value.
Both D0 and D1 are required to be combined together, 0xD1D0, (at my current understanding) possible for the checksum alternating variable at D6.
I do not see how Canny could be utilized to receive the Ford ABS module single analog pulse outputs then convert the value into two variables (D0 and D1) or rather 0xD1D0.
Perhaps I would need to sniff the CAN bus of the original Dodge ABS module to verify the speed variables of D0 and D1 from 0 mph/kmh through 100 mph/kmh as a reference.
Afterwards use that reference data to program Canny to correlate the frequency count to the mph/kmh at a specific speed/ frequency pulse count.
>The second issue would be for 0x215_D6 checksum value to alternate every other frame message sent.
You said: "I don't see any problem with this. Please run attachment in the CannyLab's simulator."
There is additional logic that has to be taken into consideration.
Checksum D6 final variable = ( 0x01 or 0X02 for even and 0x00 or 0x03 for odd)
is dependent on the amount of 1s of 0xD1D0 combination converted to binary. The 1s count total will equal an even number or odd number.
D6 = 0x01 or 0X02 for an even number of 1s.
D6 = 0x00 or 0x03 for odd numbers of 1s.
Example:
7 mph/kmh = 0111 in binary. There are three 1s, therefore D6 = 0x00 or 0x03 if the speed 7 mph/kmh is held constant as in cruise control.
8 mph/kmh = 1000 in binary. There are one 1s, therefore D6 = 0x00 or 0x03 if the speed 8 mph/kmh is held constant as in cruise control.
D6_0x00 alternating D6_0x03 every other message is the checksum of 0xD1D0.
Speed in mph/kmh example:
When the speed changes to 7 kmh / mph then this is the result.
7 0x00
7 0x00
alternating every two messages. This is how Cummins "ACKnowledge" the speed data message (0xD1D0) is accepted and not rejected.
7 0x03
7 0x03
7 0x00
7 0x00
When the speed changes to 8 kmh / mph then this is the result.
8 0x00
8 0x00
8 0x03
8 0x03
etc
9 0x01
9 0x01
9 0x02
9 0x02
9 0x01
9 0x01
etc.
D2-D3 and D4-D5 are omitted according to David. Assuming he is correct, D2-D3 and D4-D5 are not needed for the purpose of sending a speed message (0xD1D0) to the Cummins engine module. I believe D2-D3 and D4-D5 are counting either time or distance.
You: "Please don't forget to attach the cfd-diagram file to each your email/post showing your progress in solving the problem and what exactly didn't work on it."
Understood. The previous diagram (0x215) you sent, I used on February 21, 2024 in debugging. I made no changes to your efforts (because I do not understand the fundamentals as of yet). I was able to use that diagram to better understand ACK (checksum) requirement for sending custom CAN frames.
This was accomplished by using your 0x215.cfd as a standalone debugging diagram to better understand the checksum required variable and the resulting value that was accepted by Cummins engine module via OBD2 PIDs. 0x215.cfd had no influence from Ford ABS pulse output. This was a direct custom injection of vehicle speed onto the CAN bus. Canny might be better suited as a Gateway rather than the application I am attempting to utilize.
When I get some free time, I plan on debugging with Canny to send a constant speed using the 0xD1D0 / (128 for kmh or 206 for mph) TX formula as well as try to implement your diagram, alter.cfd, to utilize Canny for D6 checksum.
Post's attachments
0x215.cfd 2.93 kb, 37 downloads since 2024-05-15