Sale ends todayGet 30% off any course (excluding packages)

Ends in --- --- ---

CAN Bus Communications Decoded: Step Five: Program devices to receive required data

Watch This Course

$199 USD

Or 8 weekly payments of only $24.88 Instant access. Easy checkout. No fees. Learn more
Course Access for Life
60 day money back guarantee

Step Five: Program devices to receive required data


00:00 - Now the last step of the process is to program our devices to receive the required data.
00:05 In this instance because we're transmitting on the global PID that all the CAN lambdas are looking for, we don't need to program any transmission or any of the IDs on those devices and they're not actually configuratble for reception templates anyway, this is an instance where you have to make sure that you're transmitting the data in the correct format.
00:28 You definitely need to double check this with a CAN analyser because there's no feedback from the Link CAN lambdas as to whether they are receiving the correct data or not.
00:39 There's not display on a Link CAN lambda and there's no software that I can load up that will give me its internal reading, that data that it is interpreting from the CAN bus.
00:50 So instead, I've got my microchip CAN bus analyser plugged into the bus as well and I'm going to upload this C125 configuration and then I'm going to have a look at the data that it's going to be putting out on the bus.
01:02 Remembering that we have got a potentiometer hooked to that sensor input on the M150 which is sitting at a specific fixed value so we know the value that we should be looking for on the bus as well.
01:15 So I'll go ahead and get this configuration set up, so I just need to give that a name on my laptop here, I'm going to call it CAN Link CAN lambda transmit.
01:35 And we'll just send that through to the dash.
01:44 Everything's back up and online now so I'm just going to load up my C125 monitor software again and just head back down to that exhaust pressure reading.
01:53 And we're still sitting at about 537 kPa.
01:57 So if I pop across now to my microchip CAN bus analyser we'll just load up that software.
02:04 And just make sure this tool is actually set up correctly.
02:11 Going to need a speed of 1 Mb which it is already set to and I'm going to set it to listen only mode because I don't want it to be doing any transmitting for any reason.
02:19 And make sure its termination is configured off as well.
02:22 So we'll just set all those settings.
02:26 Then I'm just going to load up a fixed trace window and that's going to mean all of these messages here are being shown just as they're received and then updated with their new data.
02:40 So we were transmitting our data on a PID of OX3BE so I'm going to look through here and find that transmission frame.
02:55 So we're looking for OX3BE, here we go.
02:59 Awesome, so looking at the data we've got here.
03:03 Now mentioned it before, mention it again just for clarity, there's no bit of software that I can plug into for configuring those Link CAN lambdas that's going to give me their interpretation of the exhaust back pressure reading that they're receiving so this is where you need to be really clear about reading the documentation and doing a bit of double checking with your CAN analyser tool to make sure that data is as we've expected.
03:23 As I mentioned, a little bit ambiguous as to how the multiplier should be set up there so we're going to go through and double check that.
03:32 But in byte position 0 here, we can see we've got OX55 which is in fact 85 in decimal which is what we set that constant to so that's excellent.
03:43 Data byte 1 was not used so we've got zeros there, that's fine.
03:48 The engine's not currently running so we'd be expecting to see zeros in data byte positions 2 and 3.
03:56 In data byte positions 4 and 5 this is where we're going to see our exhaust back pressure reading and we've got OXD1 and OXC4 so immediately that's actually striking alarm bells for me because that seems like quite a high number.
04:11 I've got a spreadhsheet set up here just to convert that from decimal to hex and we'll have a quick look at that.
04:17 So we've got OXD1, OXC4, so on my spreadsheet here I can put D1 as my high byte and C4 as my low byte.
04:28 Then the next row just concatenates those together and then the next row converts those to decimal and you can see we've got 53700.
04:39 So this is where that times 10 multiplier is actually causing us an issue.
04:43 The Link CAN lambda is expecting to receive that data as its raw value in kPa which we are using but multiplied by 10.
04:51 However the data I'm seeing here, it's actually been multiplied by 100.
04:56 So it's seeing a kPa reading that is just far far too high and it would constantly be applying the most compensation that it possibly could to it which would be too much so I'm going to come back to our C125 configuration software here and I'm just going to modify that transmission template and get rid of that multiplier.
05:20 Link CAN lambda transmit.
05:22 We will edit that.
05:25 And change our exhaust pressure channel here to be multiplied by 10.
05:31 Sorry multiplied by 1, we'll get rid of the 10.
05:36 Accept that, upload that back to the dash.
05:43 Then we can head back across to our software here, our microchip CAN bus analyser software and you can see now we've got data being sent out on OX3BE byte positions 4 and 5 is we'll say 14FA.
06:00 So if I head to my spreadsheet we've got 14 and FA.
06:07 5370 which is our raw value of 537 kPa multiplied by 10.
06:14 Now that's actually a lot of exhaust pressure but as I mentioned we've actually just got a potentiometer set up on that input to the ECU at the moment, just so we could check that the scaling of the raw voltage input coming in was correct.
06:28 So back to our CAN bus analyser software here, we now know that data bytes 4 and 5 are coming in and they're coming in in the right order and will be decoded correctly.
06:37 Data byte 6 is just a 1 which is going to enable that back pressure compensation in those Link CAN lambdas and then data byte 7 is not used so we've just got zeros there.