Skip to content

CANBUS Messages

This section summarizes the CANBUS messages used with the Controller. See the CANBUS Configuration page for more information about setting up the CANBUS interface.

Note

The examples in this section assume the Controller's CANBUS address is 0x80 while the Host device is 0x90. Different values must be substituted if your CANBUS network is designed differently.

Command Message

The Command message allows directed (addressed) command sequences to be sent to the controllers. The payload contains up to 8 bytes, which are command-specific.

A command sent from a (source) to a (target) is normally followed by a response from the (target) to the (source).

If an incorrect function code is requested, the controller's reply will have the most-significant bit set to indicate the error.

In the commands below, “lsb” refers to the least significant byte of a 16-bit integer, and “msb” refers to the most significant byte. For example, 4000 decimal equals 0x0FA0 in hexadecimal. The msb is 0F and the lsb is A0.

PGN: 0xEF00
Data: Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
Content: {Function} {Operation} {Address} {Data1} {Data2} {Data3} {Data4} {Data5}

The Function is an enumeration:

Function Selected Function
0x47 System Commands
0x48 Access Motor Parameter
0x49 Access CAN Parameter
0x50 Digital Control

System Commands

Reset the Controller

Example

Reset both processors.

Command:    10EF8090 47FB 
Response:   None

Warning

Using this command while the motor is running is not recommended. An abrupt stop to the motor could harm the equipment and/or the operator.

Access Motor Parameter

This message allows read/write access to Motor Controller configuration and status registers.

The message bytes are formatted as follows:

Byte Length Parameter Description
0 1 byte Function 0x48
1 1 byte Op Code Bank 3
0xC0 = EEPROM Write
0xC1 = EEPROM Read
Bank 2
0xC2 = Shadow (RAM) EEPROM Write
0xC3 = Shadow (RAM) EEPROM Read
RAM changes take effect immediately and are volatile. EEPROM changes are permanent and require a power cycle to load the values into Shadow RAM.
2 1 byte Parameter Address of register
[ 3 ] 1 byte Parameter Single byte write value or LSB of 16 bit write
[ 4 ] 1 byte Parameter MSB of 16 bit write

Access CAN Parameter

For CANBUS-equipped controllers, this message allows read/write access to CANBUS-related parameters. See CANBUS Configuration for details.

The message bytes are formatted as follows:

Byte Length Parameter Description
0 1 byte Function 0x49
1 1 byte Op Code Read: 0x43
Write: 0x2B
2 1 byte Parameter
3 1 byte Unused Set to 0
4-8 1 byte Data Depends on Op Code

Responses from the Controller will be sent to the originator with the same priority as the request. The response is formatted as follows:

Byte Length Parameter Description
0 1 byte Function Success: Function Code 0x49
Error: MSB set (0xC9)
1 1 byte Op Code Same as incoming request
2 1 byte Parameter Same as incoming request
3 1 byte Unused
4-8 1 byte Data For Write: zeros
For Read: contains the requested data

Digital Control

If enabled and configured, the Digital Control message provides a proportional drive level input and/or control of direction via CANBUS. Refer to Digital Control for more details.

Note: it is not necessary to send all bytes of this message. For example, sending only the Function and Digital Pot bytes leaves the Buttons unchanged.

Byte Length Parameter Description
0 1 byte Function 0x50 indicates Throttle Control message
1 1 byte Digital Pot Unsigned 0-255, indicates a proportional level. For example, to be used as a throttle value.
2 1 byte Digital Buttons Note: bits are 0=Active
Bit 0: Reserved, set to 1
Bit 1: Reserved, set to 1
Bit 2: Reserved, set to 1
Bit 3: Reserved, set to 1
Bit 4: 0=Quickstop. Behavior depends on quickstop configuration
Bit 5: 0=Reverse
Bit 6: 0=Indoor Mode
Bit 7: Reserved, set to 1
3 1 byte Digital Mode Bit 0: 0=Seat Empty. If the Seat Switch function is enabled, clearing this bit prevents motion
Bits 1-7: Reserved, set to 1

Example

Set Digital throttle to 25% (0x40 = 64 = 25% PWM)
Command:    10EF8090 50 40         
Set Digital throttle to zero and set buttons to run forward (0x00 = 0 = 0% PWM)
Command:    10EF8090 50 00 FF     
Set Digital throttle to 50% and set buttons to run reverse and mode to FF (0x80 = 128 = 50% PWM)
Command:    10EF8090 50 80 DF FF     

Refresh CAN Timeout without changing any settings 
Command:    10EF8090 50     

Status Messages

Status messages are emitted by the controller at periodic intervals. Specific messages can be inhibited by configuring them.

Message definitions can vary according to Controller Model. Refer to the model-specific bus definition for exact field definitions.

Motor Drive Status Message

PGN:                0xFF00
Default Priority:   6
Interval:           100ms
Byte Length Parameter Description
0 1 byte Reserved
1 1 byte Output Current Measured output current in Amps
2 1 byte PWM Output Unsigned 0-255. Indicates proportion of output PWM (255=100%)
3 5 bytes Reserved

Monitor Status Message

PGN:                0xFF01
Default Priority:   6
Interval:           1000ms
Byte Length Parameter Description
0 1 byte Temperature Measured Controller temperature (C)
1 1 byte Supply Voltage Measured supply voltage(V) multiplied by 4
2 1 byte Reserved
3 1 byte State Of Charge The state of charge based on compensated voltage compared to the values of register 0x27 and register 0x28. A value of zero indicates the battery state of charge is at or below the Undervoltage warning threshold. A value of 100(decimal) indicates state of charge is at or above the Top Segment configured level.

System Status Message

PGN:                0xFF03
Default Priority:   6
Interval:           1000ms
Byte Length Parameter Description
0 1 byte System State Bitmapped state codes. See System State for more information.
1 1 byte Motor State Enumerated state codes. See Motor State for more information.
2 1 byte Communications Alarms Bitmapped state codes:
All 0's = Normal
Bit 0: CAN RX errors > 127
Bit 1: CAN TX errors > 127
Bit 2: Reserved
Bit 3: Reserved
Bit 4: Interprocessor comm error
Bit 5: CAN RX Silent for > 1 second
Bit 6: Digital Throttle command timeout
Bit 7: Reserved
3 1 byte Charge Mode When a compatible charger is attached, this byte indicates what the charger is doing.
0: Not Charging
1: Precharge
2: Bulk Charge
4: Balancing
8: Float
4 1 byte Fault Code Active fault (0=None) See Faults for specific fault codes.
5 1 byte PWM Limited See PWM Diagnostics for more information.
6 1 byte Miscellaneous Diagnostics See Miscellaneous Diagnostics for more information.
7 1 byte Stop Cause See Stop Diagnostics for more information.

Throttle Status Message

PGN:                0xFF04
Default Priority:   6
Interval:           100ms
Byte Length Parameter Description
0 2 bytes Throttle 1 Analog Unsigned (LSB, MSB) value which corresponds to the measured throttle voltage. 0=0V, 65535=5V
2 1 byte Throttle 1 Command Unsigned 0-255. Indicates proportion of scaled throttle (255=100%)
3 1 byte Reserved
4 2 bytes ANIN Input Voltage Unsigned (LSB, MSB) value which corresponds to the measured throttle voltage. 0=0V, 65535=5V. Note: resolution of the measurement is 12 bits and the input is not factory calibrated.
6 2 bytes Reserved

Speed Status Message

PGN:                0xFF05
Default Priority:   6
Interval:           250ms
Byte Length Parameter Description
0 2 bytes Actual RPM Unsigned (LSB, MSB). Measured motor speed in RPM. Only used in brushless system.
2 2 bytes Target RPM Unsigned (LSB, MSB). Only used for Brushless motor in speed control mode, target motor speed in RPM
4 4 bytes Reserved

Digital Control Status Message

PGN:                0xFF06  
Default Priority:   6
Interval:           250ms
Byte Length Parameter Description
0 1 byte Reserved
1 1 byte Reserved
2 1 byte Reserved
3 1 byte Reserved
4 1 byte Miscellaneous Status Bit 0: Reserved
Bit 1: 0=Indoor 1=Outdoor
Bit 2: Reserved
Bit 3: 1=Brake Release
Bit 4: 1=Quick Stop.
Bit 5: Seat Switch Active
Bit 6: Reserved
Bit 7: Reserved
5 1 byte Aux Bit 0: Reserved
Bit 1: Reserved
Bit 2: Reserved
Bit 3: Reserved
Bit 4: Reserved
Bit 5: Reserved.
Bit 6: 1=Forward
Bit 7: 1=Reverse