J1939 code reader in 4.02 not working

Michael Carlyle 8 years ago in IQANdesign updated by Mark Walser 5 years ago 12

We have written our own code reader (DM1) for engine which works in 3.19 but when converted to 4.02 it does not read the PGN's and reads as false (not evaluated). The PGN's have always had a warning of "invalid Identifier" since Iqan 3 but still would read and worked fine. Now they are not evaluated. The PGN's are 65226, 60416, and 60160 and I believe are necessary for reading DM1 faults and BAM messaging.

Is there a change in 4.02 that would cause this? How do I get these to read?

I noticed in 4.02 there is an addition of Destination address box for the JFIN for the last two PGN's (60416 and 60160 but not 65226). I will sniff the messages with IqanAnalyse and see what is actually being broadcast (if a destination address is present in the sniff).

Under review

The separate box for destination address was added in version 4.00, but I am not sure if that is the reason why the behavior of your application changed.

But I am actually surprised that it worked in version 3. All these PGN:s (DM1, BAM and DTM) are used by the built in DM1 and DM2 functions, I thought that CAN messages matching those PGN:s were already routed internally to the software handling DM1/DM2 also in version 3. It seems from your report as if the JFIN channels could get these instead in version 3.x.

Looks like it should be DA=255. Maybe a suggestion to add the default DA as any by default rather than having to choose one after converting a program.

We have built this in since 2.60 and used it throughout and it fits into

our fault management. The program should be able to pick anything out

of the stream required...it should not be limited (if this is


Can you send or publish on this site detailed information on the use the built in DM1/DM2 (or point me where to find it and examples).

We also generate out own TSC1 channels so that engine droop is select-able on the fly.

Thank you, it seems as if I was wrong in assuming that the built in DM1 would take priority over the JFIN. Since you are getting this to work it must be the other way around. Which is of course good in this case where you are making your own handling of DM1.

Then it is most probably the other way around, that using JFIN:s with these PGN:s will cause the built in DM1 to fail (I'll check this to confirm when I have access to a system)

For an example of how to use the built in DM1 channel, you can have a look at the example:

\Documents\IQAN Files\Solution Library\J1939 Engine.ids4

The DM1 channel gives you number of active faults, and then each SPN channel that is added to this gives you the FMI for that SPN, and the option to present a dialog in case of a fault, with a clear text description based on SPN channel name and interpretation of FMI value.

Also, MDGN channels placed on the J1939 module will give the lamp status from the DM1 message.

On the IQAN-MD4, there is a function for viewing all active errors from the DM1 message, also those where clear text interpretation has not been added with an SPN channel. And it also has the feature for reading old errors, DM2. There is some more info here:


Confirming - setting JFIN's for these PGN's (60416 and 60160) to DA=255 works.

Hello Michael,

   Would you mind sharing what you are doing to get this to work properly.  I have worked on creating my one DM1 message reader in IQAN for many different reasons but must have a missing piece.  If you feel comfortable doing so you could send me your contact info to mark@jarraff.com



I have the same problem with using a 6 way CAN keypad. Works great with 3.19 and nothing with 4.0+

After reading this post I messed around with the DA. I selected "addressed to me" and now I am up and running again.

That is a good solution, setting the DA property to "addressed to me" will make the JFIN accept PDU1 messages that are either sent to the J1939 address of the Master module (for example the default 39), or to the global address, 255.


Now I have tested this, and confirmed that when using JFIN:s with PGN numbers 60416 (BAM), 60160 (Data Transfer) and 65226 (DM1) in the application, these will take priority over the built in DM1 channel, both in version 3 and version 4. If these are used in the application, they will recieve the corresponding CAN frames, but will have the side effect of preventing the built in DM1 channel from working.

So to conclude, the reason for the upgrade problem was that PGN 60160 and PGN 60416 got the property DA set to 0 in the upgrade. Using 255 or "addressed to me" would be better choices in this application.

Hello Gustav,

  Would you be willing to share what you did to properly read this. I have some code the works about 90% but must be missing a small piece to work properly.