Page 1 of 1

CAN Custom Data Set in communication between M800 and ADL2

PostPosted: Thu Jan 24, 2013 6:03 pm
by Piglet
I would like to use CAN Custom Data Set to send the data from M800 to ADL2 but do not know which one to select in CAN setup among CRC 32, Compound and Sequential. Any explanation on the difference of each and which one to use for this application? Thank you.

Re: CAN Custom Data Set in communication between M800 and ADL2

PostPosted: Fri Feb 01, 2013 12:54 pm
by MileyCyrus
Hi Piglet,

If you have the chance, watch this video, it's a very good start in understanding to CAN communications:

http://www.youtube.com/watch?v=2m34nQ4i6KQ&hd=1

There's also a couple more on MoTeC's webinar page:

http://www.motec.com.au/webinars/webinararchive/

Essentially, the CAN system uses an addressing system to know what part of the CAN-bus it is recieving, and each of these addresses contain 8 bytes of data. For most MoTeC channels 2 of these bytes are used for one channel (eg. Throttle Position, Lambda, Oil Pressure etc.). To explain the differences bellow, I use a theoretical custom data set containing 10 channels being transmitted, with the CAN address set as 1000.
1- Throttle Position
2- Manifold Pressure
3- Air Temperature
4- Engine Temperature
5- Oil Temperature
6- Oil Pressure
7- Fuel Pressure
8- Drive Speed
9- Gear
10- Lambda

Compound is where the same address is used for all the transmission of data, with the first 1 or 2 bytes contain an index value, allowing the device to know what part of the message (in this case, what 'Channels' are being sent). So with our theoretical data set, the device would see all the channels on the same address (1000). It would then read the first bytes to figure out what channels are being sent (The first 2 bytes are a like a subheading, with then the remaing 6 bytes used for 3 channels). So the device would read TP, MAP and AT in the first subheading, ET OP and OT in the next subheading, all still on the same address (1000), and so on.

Sequential is where the channels are sent on sequential addresses, until all the data has sent. Unlike compound there is no need for a subheaing, so each address is capable of sending all 8 bytes of data (4 channels, typically). Using the exaple data set again, TP, MAP, AT and ET would all be sent on the first address (1000). The next 4 channels (OT, OP, FP and Drv Spd) would be sent on the next address, in this case 1001. Gear and Lambda would then be sent on the next address, again (1002). This continues until all data has been sent.

CRC32, or asynchronous, is pretty much like a serial data stream (eg. RS232) and is the way that this sort of data stream in replicated on the CAN-bus. In this situation, all the data is sent on the same address like compound, though unlike compound, there is no index data (subheading), but instead data at the begining and end of the transmission of all the channels, is sent to frame the message, let the device now the amount of data and checks the data integrity with a checksum. In this case all of our channels would be sent on the same address (1000) though, if you jumped into the middle of the transmission, there would be no way of knowing what data is being recieved.

As far as sending data from a M800 to an ADL2, typically compound messaging is used.

Cheers,