Translating Manufacturer's J1939 information
This is my first attempt to receive data from a vehicle with Dewesoft, using information supplied by a vehicle manufacturer. I have previously used ODB-II which was of course easy with the Dewesoft plugin.
Attached is the information that the manufacturer has supplied. The format of this does not align perfectly with the terminology of fields used in Dewesoft. Having gone through the tutorials several times I'm not sure I'm doing this correctly.
How should I configure dewesoft so that I can retrieve "Engine Speed".
Is the "PGN" column the same thing as "Arb.ID" ?
I have attached some sample data which I recorded from the vehicle. During this acquisition the vehicle was stationary but running and I increased the engine RPM occasionally.
Also attached is a screenshot of how I am trying to setup Dewesoft to read Engine RPM.
The fields have been populated based on the following, which may not be correct!
- Arb. ID# - I have assumed this is the PGN from the vehicle manufacturer
- DLC - I have used 8 because there are 8 bytes
- Start bit - I used 5 because Engine Speed is byte #5
- Length - I used 7 because there are 7 bits for engine speed
I have now set a simple gauge in design mode for "Engine RPM", recalculated the data and the gauge does not move from zero when I Play the data in review.
Is the CANbis baud-rate correct? When you activate "scan" in Dewesoft you should see raw data under ID CF00400.
In the manufacturer doku "engine_speed" starts at bit 24 and lenghts (DLC) is 16bit.
Scaling (Offset and Factor) is the secret of the manufacturer. Can you ask them to disclosure this inmormation?
J1939 protocol communication is based on CAN. The messages on J1939 have 29 bit identifiers which have a standardized structure and content. But their function in node to node communication is similar as CAN arbitration IDs
We are having some issues with your previous datafile, we cannot see the Engine RPM message could you please record one using the following settings:
Make sure that J1939 option is activated and that the correct baudrate is selected. Also activate the options Store all messages and Scan. With Scan option activated Engine RPM message should appear in the CAN channel list as soon as it appears on the bus.
From data that you sent about data field structure engine RPM channel should be defined as:
The units, scaling and data types are specified in J1939 specifications.
Thanks for the reply.
I have recorded some new data including video of the vehicle tachometer for comparison.
One minor thing I noticed is that despite ticking the "scan" box, when I returned to channel setup after recording, "scan" was deselected - Is that normal?
You can download the data and video file from our sharepoint server here.
Attached to this reply is the manufacturer's CAN information sheets for reference.
I have just recorded another data file, this time with a baud rate of 250K
This is because I have just noticed the manufacturer's PDF shows "250K" at the top of the column relating to the model that we are testing (Model 700 Euro5 E13C)
Despite my hopes, this has not made any difference.
The 250k data file may be downloaded here
Also, how did you determine a start bit of 24 and a length of 16?
I've been a mechanical engineer for 15 years so everything I ever knew about binary numbers and programming etc. has long since been forgotten!
Software Engineer II
we managed to decode the engine message. Message identifier is just a part of the PGN written in your document. Engine message has an identifier equal to F004 (PGN = 0CF00400). This can be noticed in arbitration IDs of messages that are revealed with Scan option activated. Engine rpm channel is then defined on the message with identifier number F004. (see attached picture CAN_J1939_enigne_speed_message)
The start bit number and length in bits is written out in your documentation but in a different form. The maximum data field length in CAN message is equal to 8 Bytes = 64 bits. Your document states that engine rpm data is written on Byte 4 and 5 of the engine speed message. The numbering in DEWESoft data field definition is zero-based as is evident from CAN channel setup. The first Byte is numbered as Byte 0 and the last byte in the message data field is numbered as Byte 7. If we convert the numbering in your documentation to zero based, engine speed is written on Byte 3 and 4 of CAN channel definition. You can now read out the start bit of Byte 3 in the data field visualization (top right corner of CAN message definition) or you can calculate it 3 Byte * 8 bit/Byte = 24 bit. It is similar with the length 2 Bytes * 8 bit/Byte = 16 bit.
We figured out other settings (unsigned data type, scaling factor of 0.125 and units) with standardized engine speed message parameters (SPN 190). Some of the parameters for other SPNs are written in the document available on the following link (engine speed SPN parameters are written on page 4):
The baudrate setting 250 kBaud is correct. In the datafile where baudrate is set to 500 kBaud CAN port scan doesn't reveal the engine message.
The datafile with Engine RPM channel added can be downloaded on the following link:
Thank you for your thorough response, I understand fully your explanation.
However, whilst I can see the RPM clearly in the data file you sent, I cannot see it in my original file (the same 250k baud rate file I shared with you), despite setting up the message in exactly the same manner. I have set the gauge in Review to display the RPM message and followed your settings perfectly but it still shows zero.
"Auto Recalculate" is turned on, I've saved and re-opened, I tried clicking "scan" again in the CAN setup etc.
It is like I need to refresh something to get it to display.
I can add other channels to your data file successfully and they display perfectly. When I try to add other channels such as "Engine % torque" the gauge in review mode simply says "offline"
Software Engineer II
From your data files we can see that you use SP5 release of DEWESoftX2 . This version contained a bug in CAN offline mode that would sometimes block J1939 CAN channel recalculation. This error was solved in DEWESoftX2 SP6 release. However due to a change in CAN channel list ordering in SP6 release version, some files acquired with SP5 can become unusable for DEWESoftX2 versions higher than SP5 after CAN channels are recalculated and saved in SP6 version of DEWESoftX2 .
To avoid this problems with CAN J1939 in the future please update the version of DEWESoftX2 to SP6 release for your next acquisition. The files produced with SP6 release version will enable you to decode and recalculate CAN J1939 in offline mode without problems. The fastest way to update DEWESoft is by replacing the SP6 release binaries into the installation folder of DEWESoft. The SP6 release binaries can be downloaded on the following link:
The attached document Updating_DEWESoftX2_v1.0.pdf can guide you through the necessary steps needed to update DEWESoftX2 to a newer version.
As was mentioned before this update will enable you to recalculate older files acquired with SP5. However after they are saved they won't be readable with versions newer than SP5. You can still open and review them in SP5 and if you save them in SP5 they are again readable in newer versions of DEWESoft.
Please understand that developers try to maintain full backwards compatibility with .dxd files. Unfortunately this isn't always possible as is the case here with CAN J1939.
Thank you again.
We have now begin work on another vehicle, by the same manufacturer. The J1939 message details they have provided are identical to the other truck but this time we have to use a 500k baud rate.
I have setup everything exactly the same as for the previous truck with the exception of the baud rate which I have set to 500kB for this vehicle.
Previously, when entering the Arb. ID# F004in the manner you have shown worked perfectly. We added several channels such as park brake, gear selection, odometer.
However, this time we have a problem setting up the channels. When I enter F004 the text in the Arb ID field turns red unless I un-check the "filter message source" box. I have checked the user manual and can see no reference to the function of that check-box. If I "OK" from the channel setup when the Arb ID is red, it does not carry the value through to the channel list and does not receive any CAN information.
If I un-check the filter box the Arb ID remains and carries through to the channel list but nothing is recorded.
I have attached a sample of the data.
OK - I have just found the problem. The red text in the Arb. ID# field seems to indicate that it is a duplicate of another line that already exists - Please confirm.
I would still like to know what the filter check-box does though.
Software Engineer II
The last part of CAN J1939 PGN is the source address. In the case of engine message PGN = 0CF00400, the last two numbers represent the source address. If you have multiple sources that transmit the same message their PGN differs in their source ID. With the option filter source ID deactivated the source ID is ignored, messages from different sources are going to be treated as if they were the same message.