Jump to content

Haltech CAN public?


Timboj

Recommended Posts

Just watched a video where Scott from Haltech mentioned they'd made all of their previously closed CAN data public. I assume there are some great benefits to this community but I was specifically wondering whether this means we could use the channel display data from a WB2 controller now?

 

 

Screenshot_20230926-062956.png

Link to comment
Share on other sites

The "Lambda 1 Status" (and Lambda 2 Status) in Link ECUs has the following states:

  • 0 = OFF
  • 1 = Disabled/Diagnostics
  • 2 = Initialising
  • 3 = Diagnostics
  • 4 = Calibration
  • 5 = Heating
  • 6 = Operating

And then we have a separate status for errors.

So you most likely will have to send it into a CAN analog and then convert the raw value to a status if you are wanting to use that information for logging or debugging.

Link to comment
Share on other sites

18 minutes ago, Timboj said:

How would one go about translating the Haltech signal to expected Haltech states?

Have they specified values for each of those statuses in the data they have provided? You might be able to assume that they are consecutive incremented values in the order that they list them.

There is no way to make them show up in the Link in written form without PCLink and firmware updates, don't think this would be a super high priority to add these runtime statuses.

Link to comment
Share on other sites

You would set it up same as you would any other custom CAN, select a spare stream, add a frame (based on your screenshot they only have one frame per ID and no frame ID within the frame), add the appropriate parameters (Use the Receive Filter option at the top of the parameter selection window), set the start positions and width to match (if it says message position 0-1 that means start position 0, width of 16, if message position is for example just '4' then it is start position 32, width 8 as 8 bits per byte, note if using LS First instead of MS First your start position is the right hand end of the first message byte not the left hand end like MS First byte order is (the above doesn't specify byte order so some trial and error may be required if that information is not provided), set the multi, divider and offset as specified.

Once you've made the stream pop back to the Mode tab and setup a spare channel on the appropriate CAN bus to receive your stream with the correct ID, not our CAN ID box takes decimal not hex so 0x2B1 would be 1261 in decimal, windows calculator in programmer mode can do that conversion for you.

Runtimes exist for Lambda 1-8, sense resistor values will be of no use to you, no specific runtimes exist for those diagnostic code runtimes so just feed them into a CAN Analog or maybe a CAN TC, just a spare CAN input runtime that will take an integer value and not try and use it for anything. Battery voltage will also be of no real use.

 

Capture.PNG

As a side note integer values of different statuses in PCLink can be found using the Test Calculator tab and exact CAN information for Link CAN Lambdas and other devices can be found in the help manual under ECU Tuning Functions -> CAN -> Device Specific CAN Information

There are also stream files (.lcs) for a variety of devices in your PCLink install's CAN folder which can serve as examples of custom streams

Link to comment
Share on other sites

Thanks Vaughan. A couple of questions, when converting 0x2B1 to decimal I get 689. Octal comes out at 1261. Do I use the latter?

Also, is it okay to configure both Lambdas parameters in the one stream, or do they require unique streams?
image.png.752d31b625cd30f4c0ced0b24ef8d052.png

Link to comment
Share on other sites

4 minutes ago, Timboj said:

Thanks Vaughan. A couple of questions, when converting 0x2B1 to decimal I get 689. Octal comes out at 1261. Do I use the latter?

Sorry yes 689 is what you want, must have been half asleep when I wrote that earlier.

5 minutes ago, Timboj said:

Also, is it okay to configure both Lambdas parameters in the one stream, or do they require unique streams?

Based on the above it looks like both the Lambda values are in the same message so they have to be in the same stream.

 

Also note for the CAN ID it looks like you need to select the correct Id from that list for the device that you have (WB1 or WB2) and for the setting the device has been set to (A, B, C or D). If you have a WB1 you won't want to have Lambda 2 in there as I suspect it will always be 0, if you have a WB2 I would assume it has been set to A unless it's setting has been changed since being sold.

Link to comment
Share on other sites

The Haltech WB1/2 already outputs the Link CAN lambda stream by default in parallel to their own, so just set the ecu to Link CAN lambda on ID950 and both lambdas should work out of the box with no custom setup needed.  I dont think they broadcast all statuses but I remember seeing them read at least a couple of the important ones.  

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...