10-19-2018 03:32 AM
I am trying to learn my way around the UDS protocol by using the Demo ECU in the examples and UDS Diagnostic Commander. This is falling over immediately by throwing a timeout error. I have checked the front panel parameters, which seem to be fine (see attached), if it's not finger trouble, can anyone suggest where I can go from here?
Dave
10-19-2018 09:15 AM
In the screenshots both the Daignostic Demo ECU and UDS Diagnostic Commander are set to the same interface, CAN1. They will need to be used on different interfaces i.e. CAN1 for the Demo ECU and CAN2 for the UDS Commander.
10-19-2018 09:37 AM
Once you have the two VIs running on different interfaces so they can acknowledge each others messages the Success? indicator should turn green when you run the Diagnostic Commander VI. You can then try sending a 0x3E request message (tester present) and the Demo ECU should send a positive response.
Note that the Demo ECU only supports a small subset of services by default. It supports 0x10, 0x11, 0x14, 0x19, 0x22, 0x23, 0x28, 0x2E, 0x2F, 0x34, 0x36, 0x37, 0x3D, and 0x3E. You may have to add additional bytes to the service ID as parameters otherwise you will get a negative response that the Demo ECU doesn't support said command.
You can also try to open up the Demo ECU block diagram and making edits or adding support for other services. I can't remember if it is password protected or not.
10-22-2018 03:42 AM
Unfortunately that hasn't solved the issue, I still get
Error -8260 at ISOTP Receive.vi
Possible reason(s):
NI Automotive Diagnostics Command Set:
Diagnostic command timeout. A response from the ECU was not received.
I also tried connecting the two interfaces together with a cable, which I used in the Loopback Test.vi
10-22-2018 10:41 AM
Timeouts at the start of communication often indicate a problem with the physical layer. The loopback example defaults to 125 kBd which is slow enough that the test might pass even without proper termination. Your screen captures show a baud rate of 500 kBd which is fast enough for termination to be a major factor. I would verify that the termination in your setup is correct at 60 Ohms total (two 120 Ohm resistors in parallel).
You can also use the XNET bus monitor with "Bus Error Frames" turned on to see if any bus error frames are being created. If so, that is a good indicator that termination is not correct.
You can enable/disable software selectable termination by adding a call to Diag Set Property.vi.
10-23-2018 04:26 AM
I think that's it Jeff, when I turned the baud rate down to 125kbps, I had a successful connection, I'll add some resistors to terminate it properly. I did look for the PN to activate the internal termination resistor, but I think that is in the CAN session, and this example doesn't open a session in the same way that the loopback one does.
Dave