CAN Bus

From ConceptCar
Jump to: navigation, search

CAN Bus Configuration

The communication in the Concept Car is implemented via a high-speed (1Mbit/s) CAN-Bus (Controller-area network), featuring a message based protocol. Each message has a message identifier to distinguish between different message types. CAN standard 2.0A is applied, so the message identifiers are 11 bits wide, allowing 2048 distinct messages. Further details about the CAN-Bus can be found in [ZS08].

In the ConceptCar, only messages with the length of 4 Bytes, which are interpreted as an unsigned integer number, are used. How the message data has to be interpreted depends only on the message identifier, further details are given in the next section.

CAN Bus Messages

The following table gives an overview over all messages present on the CAN bus. Further detailed descriptions can be found below. The ID equals the CAN id that this message is transferred with, the Symbolic Constant is the name by which the corresponding ID is defined in the sources.

Messages present on the CAN Bus
ID (hex) ID Symbolic constant Short Description Source
0x008 8 CANID_WHEELSPEED_FL Rotation Speed Front Left Wheel Sensorboard Throttle
0x009 9 CANID_WHEELSPEED_FR Rotation Speed Front Right Wheel Sensorboard Steering
0x00a 10 CANID_WHEELSPEED_RL Rotation Speed Rear Left Wheel Sensorboard Steering
0x00b 11 CANID_WHEELSPEED_RR Rotation Speed Rear Right Wheel Sensorboard Throttle
0x00d 13 CANID_VOLTAGE Voltage of the electrical System Sensorboard Inertial
0x00e 14 CANID_RESETCOUNTER Number of Resets since last ECU flashing Sensorboard Inertial
0x010 16 CANID_INERTIAL_AX Longitudinal Acceleration Sensorboard Inertial
0x011 17 CANID_INERTIAL_AY Lateral Acceleration Sensorboard Inertial
0x012 18 CANID_ROTATION Rotation Speed Car Sensorboard Inertial
0x020 32 CANID_SELECTJUMPER Actorboard Source Selection Actorboard
0x022 34 CANID_THROTTLE Throttle from SensorBoard Sensorboard Throttle
0x122 290 CANID_THROTTLE_ARM7 Throttle from ARM7 Board ARM7 Board
0x023 35 CANID_BRAKEFL Front Left Brake Signal from SensorBoard Sensorboard Throttle
0x123 291 CANID_BRAKEFL_ARM7 Front Left Brake Signal from ARM7 Board ARM7 Board
0x024 36 CANID_BRAKEFR Front Right Brake Signal from SensorBoard Sensorboard Throttle
0x124 292 CANID_BRAKEFR_ARM7 Front Right Brake Signal from ARM7 Board ARM7 Board
0x025 37 CANID_STEERING Steering from SensorBoard Sensorboard Steering
0x125 293 CANID_STEERING_ARM7 Steering from ARM7 Board ARM7 Board
0x030 48 CANID_DISTANCE Front Distance (Ultrasonic Sensor) Sensorboard Distance
0x040 64 CANID_VOLTAGE_ENGINE0 Voltage of the Cell 0 from the Engine battery CC-MDiag
0x041 65 CANID_VOLTAGE_ENGINE1 Voltage of the Cell 1 from the Engine battery CC-MDiag
0x042 66 CANID_VOLTAGE_ENGINE2 Voltage of the Cell 2 from the Engine battery CC-MDiag
0x043 67 CANID_VOLTAGE_ENGINE3 Voltage of the Cell 3 from the Engine battery CC-MDiag
0x044 68 CANID_VOLTAGE_ENGINE4 Voltage of the Cell 4 from the Engine battery CC-MDiag
0x044 68 ANID_VOLTAGE_ELECTRONIC Voltage of the electrical System CC-MDiag
0x400 1024 CANID_ERROR Error Message ALL

CANID_WHEELSPEED

CAN ID 0x8 (FL), 0x9 (FR), 0xa (RL) and 0xb (RR)
Interval 50ms
Producer Sensorboard Steering (0x9 and 0xa) and Sensorboard Throttle (0x8 and 0xb)
Consumer Not yet specified
Semantics Todo

CANID_VOLTAGE

CAN ID 0xd
Interval 200ms
Producer Sensorboard Inertial
Consumer Not yet specified
Semantics
Conversion function from voltage to CAN data
The voltage of the battery driving the electrical system.

CANID_RESETCOUNTER

CAN ID 0xe
Interval Once at boot time of the Sensorboard Inertial
Producer Sensorboard Inertial
Consumer Not yet specified
Semantics An integer with the number of times the Sensorboard Inertial has been booted.

CANID_INERTIAL

CAN ID 0x10 (longitudinal) and 0x11 (lateral)
Interval 20ms
Producer Sensorboard Inertial
Consumer Not yet specified
Semantics
Conversion from acceleration value to CAN data (both directions)
The longitudinal and lateral acceleration of the car, measured with the ADIS16006 accelerometer. The value from the sensor is unprocessed, so refer to the datasheet for accuracy, deviation and temperature drift.

CANID_ROTATION

CAN ID 0x12
Interval 20ms
Producer Sensorboard Inertial
Consumer Not yet specified
Semantics
Conversion function for rotation speed to CAN data
The rotation speed of the car around its axis, measured with the ADIS16100 gyroscope. The value from the gyroscope is unprocessed, so refer to the datasheet for accuracy, deviation and temperature drift. The sensor is mounted on the top side, so a clockwise rotation of the car leads to bigger values.

CANID_SELECTJUMPER

CAN ID 0x20
Interval 1s, and sent when switch on Actorboard has been toggled.
Producer Actorboard
Consumer Not yet specified
Semantics Binary value, announces which source the Actorboard is configured to use.
  • 0 if the source is from the Sensorboards Steering and Throttle (thus CAN ids 0x22 to 0x25)
  • 1 if the the source is the Controlboard (thus CAN ids 0x122 to 0x125).
    See #CANID_THROTTLE, #CANID_STEERING and #CANID_BRAKE.

CANID_THROTTLE

CAN ID 0x22 and 0x122
Interval ~20ms, depends on remote transceiver (currently 17ms)
Producer Sensorboard Throttle (0x22) and ARM7 Board (0x122)
Consumer Actorboard
Semantics The relative value of the throttle. It's a linear range from 0 (don't accelerate) to 1000 (maximum acceleration).

CANID_BRAKE

CAN ID 0x23 and 0x123 (left), 0x24 and 0x124 (right)
Interval ~20ms, depends on remote transceiver (currently 17ms)
Producer Sensorboard Throttle (0x23 and 0x24) and ARM7 Board (0x123 and 0x124)
Consumer Actorboard
Semantics The relative value of the brake. Two distinct signals exist for brakes on the left and right side; currently they both carry the same value. It's a linear range from 0 (brakes released) to 1000 (full break).

CANID_STEERING

CAN ID 0x25 and 0x125
Interval ~20ms, depends on remote transceiver (currently 17ms)
Producer Sensorboard Steering (0x25) and ARM7 Board (0x125)
Consumer Actorboard
Semantics
Conversion function from desired steering angle to CAN data
The desired value for the steering in 0.1° steps. Ranges from 0 (steering 30° left) over 300 (steering straight) to 600 (steering 30° right), thus left steering values are negative and right is positive.

CANID_DISTANCE

CAN ID 0x30
Interval 10ms - 70ms, depends on distance (round trip time of sonic pulse). The farther the target, the longer it takes.
Producer Sensorboard Distance
Consumer Not yet specified
Semantics An integer value, holding the distance to the next obstacle detected ahead in centimeters. Detector unit is the supersonic sensor SRF02.
  • 0, if no obstacle has been detected (>6m or obstacle too small)
  • 15-600, the distance in centimeters to an obstacle in measurement range
  • do not consider other values, they exceed the sensor's range.

CANID_VOLTAGE_ENGINE

CAN ID 0x40 (Cell0), 0x41 (Cell1), 0x42 (Cell2), 0x43 (Cell3), 0x44 (Cell4)
Interval 200ms
Producer CC_MDiag
Consumer Not yet specified
Semantics Not yet specified

CANID_VOLTAGE_ELECTRONIC

CAN ID 0x45
Interval 200ms
Producer CC_MDiag
Consumer Not yet specified
Semantics
Conversion function from voltage to CAN data
The voltage of the battery driving the electrical system.

CANID_ERROR

CAN ID 0x400
Interval Not periodic, triggered by an event
Producer all (potentially)
Consumer Not yet specified
Semantics Currently no ECU uses these.