Debugging Error Codes
This section is intended for the dashboard firmware v0.3.0 and older. The error codes are human-readable in the dashboard firmware v0.4.0+.
Pendant Error
Pendant error codes are formatted as: 0x00
Guide to Decode Pendant Error Codes
WAITING_PENDANT_HEARTBEAT (2**0 or 1)
: System is awaiting a heartbeat signal from the pendant.WAITING_PENDANT_STATE (2**1 or 2)
: System is waiting for a state update from the pendant.PENDANT_HEARTBEAT_TIMEOUT (2**2 or 4)
: Triggered by a timeout in receiving the pendant's heartbeat.PENDANT_STATE_TIMEOUT (2**3 or 8)
: Triggered by a timeout in receiving the pendant's state.AUTO_MODE_ESTOP_REQUEST (2**4 or 16)
: Indicates an emergency stop request in auto mode from the pendant.
Motor Error
Motor error messages are formatted as: motor_10_codes = 0x00 (0x0000 r 0x00 f 0x00.0x0000 w 0x0000)
The different fields are: Error_code, EMCY code, Error registry, faults 2, faults 1, warning
Decoding Process
- Identify the error category (Error Code, Faults1, Faults2, Error Register, or Warnings).
- Check the bit positions in the error code.
- Refer to the respective section for the error description.
Error Code Bits
0
: NOT_OPERATIONAL_HEARTBEAT1
: FAULT_MOTOR_STATE2
: HEARTBEAT_TIMEOUT3
: MOTOR_STATE_TIMEOUT4
: EMCY_MESSAGE5
: NEVER_STARTED
EMCY Code Bits
12
: NOT DEFINED (only possible value now. Reserved for future use).
Error Register Bits (0-7)
0
: GENERIC_ERROR1
: CURRENT2
: VOLTAGE3
: TEMPERATURE4
: COMS_ERROR5
: DEV_PROFILE_SPECIFIC6
: RESERVED (ALWAYS 0)7
: MANU_SPECIFIC
Faults2 Bits (0-7)
0
: PARAMETER_CRC1
: CURRENT_SCALING2
: VOLTAGE_SCALING3
: HEADLIGHT_UNDER_VOLTAGE4
: TORQUE_SENSOR5
: CAN_BUS6
: HALL_STALL7
: BOOTLOADER
Faults1 Bits (0-15)
0
: CONTROLLER_OVER_VOLTAGE1
: PHASE_OVER_CURRENT2
: CURRENT_SENSOR_CALIBRATION3
: CURRENT_SENSOR_OVER_CURRENT4
: CONTROLLER_OVER_TEMPERATURE5
: MOTOR_HALL_SENSOR_FAULT6
: CONTROLLER_UNDER_VOLTAGE7
: POST_STATIC_GATING_TEST8
: NETWORK_COMMUNICATION_TIMEOUT9
: INSTANTANEOUS_PHASE_OVER_CURRENT10
: MOTOR_OVER_TEMPERATURE11
: THROTTLE_VOLTAGE_OUTSIDE_RANGE12
: INSTANT_CONTROLLER_OVER_VOLTAGE13
: INTERNAL_ERROR14
: POST_DYNAMIC_GATING_TEST15
: INSTANTANEOUS_UNDER_VOLTAGE
Warnings Bits (0-15)
0
: COMMUNICATION_TIMEOUT1
: HALL_SENSOR2
: HALL_STALL3
: WHEEL_SPEED_SENSOR4
: CAN_BUS5
: HALL_ILLEGAL_SECTOR6
: HALL_ILLEGAL_TRANSITION7
: VDC_LOW_FOLDBACK8
: VDC_HIGH_FOLDBACK9
: MOTOR_TEMPERATURE_FOLDBACK10
: CONTROL_TEMPERATURE_FOLDBACK11
: LOW_SOC_FOLDBACK12
: HI_SOC_FOLDBACK13
: I2T_FOLDBACK14
: RESERVED15
: BMS_TIMEOUT
Converting Hexadecimal to Binary
For the Amiga dashboard, the errors are reported in hexadecimal values. Here's a quick summary on how to convert hexadecimals to binary:
1. Understand the Hexadecimal System
Hexadecimal is a base-16 number system. It uses 16 symbols: 0-9 represent values zero to nine, and A-F (or a-f) represent values ten to fifteen.
2. Identify Each Hexadecimal Digit
Break down the hexadecimal number into its individual digits. For example, in 0x0020
,
the digits are 0
, 0
, 2
, and 0
.
3. Convert Each Digit to Binary
Convert each hexadecimal digit to its four-bit binary equivalent using this mapping:
0
in hex is0000
in binary1
in hex is0001
in binary2
in hex is0010
in binary3
in hex is0011
in binary4
in hex is0100
in binary5
in hex is0101
in binary6
in hex is0110
in binary7
in hex is0111
in binary8
in hex is1000
in binary9
in hex is1001
in binaryA
ora
in hex is1010
in binaryB
orb
in hex is1011
in binaryC
orc
in hex is1100
in binaryD
ord
in hex is1101
in binaryE
ore
in hex is1110
in binaryF
orf
in hex is1111
in binary
4. Combine the Binary Sequences
Write down the binary sequences of each digit next to each other, in the same order as the
hexadecimal digits.
For 0x0020
, convert each digit to binary:
0
→0000
0
→0000
2
→0010
0
→0000
Combined, the binary representation is0000 0000 0010 0000
.
5. Result
The final binary number is the direct representation of the hexadecimal number in binary form.
Examples
Pendant error example
Consider 03
.
Convert Hexadecimal to Binary:
- The hexadecimal code 03 needs to be converted to binary.
- In hexadecimal, 0 is 0000 and 3 is 0011 in binary.
- Therefore, 03 in hexadecimal is 0000 0011 in binary.
Decode Based on Binary Position:
- In binary, 0000 0011, we check which bits are set to 1.
- Reading from right to left (least significant bit to most significant bit), the first and second bits are set (positions 0 and 1).
- These positions correspond to
2**0 or 1
, and2**1 or 2
in decimal, respectively.
Match with Pendant Error Descriptions:
- 2**0 or 1 corresponds to WAITING_PENDANT_HEARTBEAT.
- 2**1 or 2 corresponds to WAITING_PENDANT_STATE.
Motor error example
Consider Motor 12: 13 (1000 r 21 f 00.0020 w 0022)
.
Breaking Down the Error Message:
- 13: represents the hexadecimal 0x13.
- 1000: This is the EMCY code meant for specific emergency messages. We are not currently using it.
- r 21: This is the error registry or status code.
- f 00 and 0020: These are the Faults error code in hexadecimal.
- w 0022: This is a Warnings code in hexadecimal.
Let's convert the error message (13) to Binary and match against Error Codes:
- In hexadecimal, 1 = 0001 and 3 = 0011, therefore 0x13 = 0001 0011 in binary.
- Decoding which bits are set (value = 1) we have, from right to left,
2**0
,2**1
, and2**4
. - Matching with Motor Error Description, we have:
2**0
: NOT_OPERATIONAL_HEARTBEAT2**1
: FAULT_MOTOR_STATE2**4
: EMCY_MESSAGE
Now let's convert the Error registry the same way:
- In hexadecimal, 2 = 0010 and 1 = 0001, therefore 0x21 = 0010 0001 in binary.
- Decoding which bits are set (value = 1) we have, from right to left,
2**0
,2**5
. - Matching with Motor Error Description, we have:
2**0
: GENERIC_ERROR2**5
: DEV_PROFILE_SPECIFIC
Let's convert 00.0020 from hexadecimal to binary and match it against the Faults2 and Faults1 Bits guide:
- Faults2 is 00, which indicate no bits are set.
- Hexadecimal 0020 converts to binary 0000 0000 0010 0000.
- The bit set is in position 5, counting from 0 (sixth bit).
- Referring to the Faults1 guide, position 5 corresponds to MOTOR_HALL_SENSOR_FAULT.
Finally, Interpreting Warnings (0022):
- Hexadecimal 0022 converts to binary 0000 0000 0010 0010.
- The bits set are in positions 1 and 5, counting from 0 (second and sixth bits).
- Referring to the Warnings Bits list:
- Bit position 1 corresponds to HALL_SENSOR.
- Bit position 5 corresponds to HALL_ILLEGAL_SECTOR.
Note that hardware errors usually trigger multiple error flags, so you will need to interpret the message as a whole. In our example, therefore, we can see that motor C have a faulty HALL sensor (what actually counts its RPM). In this specific situation we recommend you contact us to replace the motor.
The guide should help in quickly identifying and understanding specific errors based on their categories and bit positions.