Debugging CANbus

There’s only so many snow pictures I can post, before anyone visiting the site (if there is anyone) gets bored … but there’s not much else happening in the week, except for work, so … Here’s a couple of pictures of what I’m doing at work today!

The first picture shows the work area; in front you can see a cart, on which is mounted one of my development rigs – we mount them on carts now so I can wheel them in and out of the office according to work demands (my office isn’t big enough to leave everything set up, any more!); on the left of the cart you can see the joystick handle that on a real vehicle controls drive forward/reverse and lift up/down; it’s normally attached to the off-white box next to it (on a vehicle this box is mounted on the work platform), on which you can see a keyswitch (turns vehicle off/on), a big red emergency stop button, and some other switches (which control things like whether to drive or lift):
February 4 - Debugging CANbus.jpg

To the right of the platform control box you can see two electronic modules (and loads of wires); the back module controls high current/voltage to a hydraulic pump (up to 250A at 24V); the front module is the “brains” of the vehicle and can control up to 70 hydraulic valves, to determine where the pumped oil flows on the vehicle.

In the background, you can see another rig (with lots of blue labelled switches and lights), a couple of power supplies, and on the back right there is an oscilloscope – this expensive piece of equipment can monitor and display signals (voltages which change over time). It’s an extremely useful device, sometimes! I actually had to have one shipped out to me in California when I was working there recently – I needed it for only a couple of minutes, but could do nothing without it.

Here is a close-up of the oscilloscope:

The display is showing, at the top, a relatively long time of a voltage signal, below is a zoomed in part – the actual signal is shown in yellow, and above it the ‘scope is smart enough to decode the meaning; this signal is a CANbus which transmits data pulse by pulse at 50KHz (50,000 bits of data per second); the ‘scope shows a message with identifier 086, followed by 3 (the number of bytes of data), then the actual data (00, 00, 00) and finally a message checksum (which is used to ensure receipt of the data without error). After that you can see part of another message, identifier 087.

This display enables me, in seconds, to confirm correct data being transmitted from one module to another – or to easily see where there is a problem that needs fixing. Once everything is working, I don’t need the ‘scope any more; but during early development it makes my work hundreds of times quicker / easier!