Thanks to visit codestin.com
Credit goes to www.scribd.com

100% found this document useful (1 vote)
363 views68 pages

CAN Protocol (V6 - 2)

The document defines the CAN protocol used by Cascadia Motion controllers. It describes CAN parameters, message formats, and supported features including EEPROM parameters, command messages, parameter messages, diagnostics, and more. Various features are available depending on the specific controller model.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
363 views68 pages

CAN Protocol (V6 - 2)

The document defines the CAN protocol used by Cascadia Motion controllers. It describes CAN parameters, message formats, and supported features including EEPROM parameters, command messages, parameter messages, diagnostics, and more. Various features are available depending on the specific controller model.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 68

7929 SW Burns Way Phone: 503 344-5085

Suite F
Wilsonville, OR [email protected]

CAN Protocol

Revision 6.2

8/25/2023 CAN Protocol 1 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Table of Contents
1. INTRODUCTION ................................................................................................................. 3
1.1 CAN EEPROM PARAMETERS OVERVIEW ................................................................................ 3
1.2 CAN DIAGNOSTIC PARAMETERS OVERVIEW (GEN 3 ONLY) ................................................... 10
1.3 CAN DIAGNOSTIC PARAMETERS OVERVIEW (GEN 5/CM ONLY) ............................................ 13
1.4 CAN FORMAT ........................................................................................................................... 14
1.5 DATA FORMATS ........................................................................................................................ 15
1.6 CAN DATABASE FILE ............................................................................................................... 16
2. CAN MESSAGES ............................................................................................................. 17
2.1 BROADCAST MESSAGES .......................................................................................................... 17
2.2 COMMAND MESSAGE................................................................................................................ 32
2.2.1 Inverter Enable Safety Options .................................................................................... 33
2.2.2 CAN Message Sequence Example ............................................................................. 34
2.2.3 Sign Convention for Torque and Speed ...................................................................... 36
2.3 PARAMETER MESSAGES .......................................................................................................... 37
2.3.1. Parameter Message Format ........................................................................................ 38
2.3.2. Parameter Address Ranges ........................................................................................ 38
2.3.3. Command Parameters................................................................................................. 39
2.3.4. EEPROM Parameters.................................................................................................. 41
2.4 OBD2 MESSAGES (AVAILABLE IN 19B3 AND AFTER) .............................................................. 56
2.5 ORION BMS SUPPORT (AVAILABLE IN 19B3 AND AFTER) ....................................................... 57
2.6 CAN SLAVE OPERATION (AVAILABLE IN 19BB AND AFTER) .................................................... 58
2.7 ROLLING COUNTER (AVAILABLE IN GEN 5 AND CM) ................................................................ 60
REVISION HISTORY ..................................................................................................................... 64

8/25/2023 CAN Protocol 2 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1. Introduction
This document defines the CAN protocol used by the Cascadia Motion PM, RM,
PM Gen 5, and CM controllers. The same CAN protocol is used for all four
controller types, but certain features are not available or may be modified
between the controller types.

The controllers have two CAN interfaces (CAN A and CAN B). The controller is
configured to communicate only over CAN A, currently CAN B is reserved for
future use.

The CAN interface has multiple purposes:


- Direct control of the motor
- Adjust EEPROM parameters
- Diagnostics and monitoring

1.1 CAN EEPROM Parameters Overview

The CAN Communication baud rate must be set to compatible with the CAN bus
being used. All devices on the CAN bus must be at the same baud rate. The
available baud rates include 125K, 250K, 500K, and 1M. Higher baud rates tend
to be more sensitive to noise than lower baud rates. However, lower baud rates
are not able to handles as many CAN messages and can become overloaded.
Typical baud rates that are chosen are 250K and 500K.

For PM inverter there is a built-in user configurable CAN termination resistor (120
ohms). The RM inverter do not have a termination resistor built in to the unit.
The CMxxx inverter has the ability to connect a termination resistor via making a
connection in the I/O connector.

Many CAN related parameters are configurable through parameters that are
available through the RMS GUI1 application as well as CAN. GUI parameters
have the same name as mentioned in this document with the exception that they
end with the keyword “EEPROM”. Following parameters are used to configure
CAN operation:

• Inverter Command Mode:


This parameter gives the option to operate controller in either VSM mode
or CAN mode. In VSM mode, the inverter is operated from the various
inputs and outputs of the inverter such brake, accelerator pedal, etc. In
1
Please refer to the document “Programming EEPROM Parameters using GUI”.
8/25/2023 CAN Protocol 3 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

VSM mode, broadcast messages are still sent out over the CAN lines. In
CAN mode, both GUI and CAN interfaces are active and can be used to
monitor and modify parameters. In CAN mode the torque and speed
commands come from the Command message. The various inputs of
VSM mode have no effect.

0 = CAN Mode
1 = VSM Mode (Default)

• CAN ID Offset:
This parameter allows the user to choose their own set of contiguous CAN
message identifiers starting with the value in CAN ID Offset. For 11 bit
CAN the offset covers a range of 0 – 0x7C0. The default offset is 0x0A0.
The default range of CAN message IDs is 0x0A0 – 0x0CF. For the J1939
the CAN ID offset must be in the range of 0 – 0xC0. For 29 bit CAN
messages the ID can be in the range of 0 – 0xFFC0.

This feature is especially useful when there is more than one controller on
the same CAN network.

While setting base address for a controller, it must be made sure that the
address range for various controllers do not contain overlapping
addresses.

• CAN Extended Message Identifier


This parameter allows switching between CAN standard and extended
message identifiers.

0 = Standard CAN Messages (11-bit identifiers)


1 = Extended CAN Messages (29-bit identifiers)

• CAN J1939 Option Active


This parameter allows switching to J1939 format in extended mode. This
parameter works in conjunction with ‘CAN Extended Message Identifier’
parameter above which must be set to 1.

0 = CAN ID will be defined as either 11 bit or 29 bit addressing per the


above description.
1 = Extended CAN Messages in SAE J1939 Format

The CAN protocol provides a limited functionality for J1939 protocol with
the following fixed parameters:

Priority = 3 (001b)

8/25/2023 CAN Protocol 4 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Data Page =0
PDU Format = 0xFF
PDU Specific = CAN ID Offset
Source Address = 0x01 (for both transmitted and received messages)

For example, if CAN ID Offset is set to the default 0xA0, the J1939 CAN
message will be broadcast as 0xCFFA001 and so on. The heartbeat
command message should be sent out as 0xCFFC001, where the source
address of the sending node is still set to be 0x01.

Please refer to the section,

1.3 CAN Diagnostic Parameters Overview (Gen 5/CM only)

Several CAN diagnostics are available through the RMS GUI.

RMS GUI Watch Item Description


CAN_Status_Bus_Off 0: Bus is active
1: CAN Bus has been turned off due to
excessive errors.

Note: The auto CAN Bus restart feature has


been enabled. If the CAN bus controller gets
turned off it will automatically restart.
CAN_Status_Error_Passive 0: Bus is active
1: CAN Bus controller has gone to the passive
state.
CAN_Status_Error_Warning 0: Bus is active
1: The number of CAN errors has reached a
warning limit of 96.
CAN_Status_Last_Error_Code Indicates the last reported error on the CAN bus
controller:
0: No Error
1: Stuff Error
2: Form Error
3: Ack Error
4: Bit 1 Error
5: Bit 0 Error
6: CRC Error
CAN_Tx_Error_Counter Count of errors in sending of CAN messages.
The maximum count is 255 before the counter
loops back to 0.

8/25/2023 CAN Protocol 5 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

CAN_Rx_Error_Counter Count of errors in receiving CAN messages,


maximum count is 127. For each correctly
received CAN message the error counter will
count down towards 0.

1.4 CAN Format to learn about how to send out a torque or a speed
command using the heartbeat command message.

• CAN Term. Resistor Present:


In order to use CAN communication, the CAN bus needs to be terminated
with a 120 Ohm resistor. PM inverters are equipped with a user
configurable termination resistor which is activated through this parameter.

0 = Term. Resistor not active


1 = Term. Resistor active (Default)
If CAN Terminator Resistor is deactivated, it may be necessary to use the
GUI interface only2 since CAN communication may fail without a
terminator resistor.

The RM controller family does not have this feature and thus this
parameter has no effect on the CAN network. The RM controllers do not
include a CAN terminator as the default configuration.

The CM controllers have the ability to activate a CAN terminator, but only
by making an external wiring change. Refer to the Hardware manual for
more information.

• CAN Command Message Active:


To help with the safety of a CAN controlled system it is recommend to
activate the CAN Timeout feature. The CAN Timeout feature requires a
“heartbeat” CAN Command message to be sent at some regular interval.
The CAN Command message controls the inverter, motor direction, and
torque or speed. If the inverter does not receive a CAN command
message within the CAN Timeout time (described below) then the inverter
will declare a Run Fault of CAN Command Timeout. The inverter will
disable the motor. It is important for the user to decide if this Timeout

2
Please refer to the document “Programming EEPROM Parameters using GUI”.
8/25/2023 CAN Protocol 6 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

feature is important to their application or not. If CAN communications is


lost the inverter continues to hold the last received CAN Command.

0 = The CAN command message Timeout feature is disabled. The


controller will hold last received CAN command.
1 = The CAN command message Timeout feature is enabled. A CAN
Command message should be sent at some regular interval.

• CAN Bit Rate:


250Kbps is the default bit rate. Bus speed can be changed using CAN
parameter command message. However, changing this parameter
requires a power reset on controller since bus speed is setup only at the
initialization of CAN modules in the microcontroller. Also, this input is
restricted to valid baud rates. The 4 options for valid baud rate are:

125 = 125Kbps
250 = 250 Kbps (Default)
500 = 500 Kbps
1000 = 1Mbps

• CAN Active Messages Word:


This parameter is used to enable/disable CAN Broadcast Messages3. This
parameter is represented as two parameters, CAN Active Messages (Low
Word) and CAN Active Messages (High Word) in RMS GUI. Each bit
represents a CAN Message broadcast status as follows:

0 = CAN Messages broadcast disabled


1 = CAN Message broadcast enabled (Default)

Please refer to the table of CAN Broadcast Messages in section 2.1 for
details on how to enable/disable each message.

Note, starting with version 2042 the lowest bit of the Hi Word has an
opposite effect, if the bit is 0 then it enables a high-speed message at
CAN ID Offset plus 16. If the bit is 1 the message is disabled.

• CAN Diagnostic Data Transmit Active:


This parameter is used to enable/disable the broadcast of the diagnostic
data.
0 = CAN Diagnostic Data broadcast disabled
1 = CAN Diagnostic Data broadcast enabled (Default)

3
Please refer to the section 2.1 - Broadcast Messages.
8/25/2023 CAN Protocol 7 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Please refer to the document, CAN Diagnostic Data, for more details on
this feature.

• CAN Inverter Enable Switch Active:


This parameter is used in CAN mode only.
1 = DIN1 digital input is taken into consideration and the inverter will only
be enabled if both DIN1 and inverter command are active. If either
one is inactive, the inverter will be disabled.
0 = DIN1 will have no effect on enabling or disabling the inverter (Default)

• CAN Timeout:
This parameter sets the CAN Timeout time. The CAN Timeout time is the
maximum time between CAN Command messages that will not generate
a fault (if the CAN Command Message Active parameter is set to 1). This
parameter is set as a multiple of 3 msec. For example, the default value is
set to 333 which is equivalent to the actual timeout value of 999ms (333 x
3msec). This parameter delays setting the CAN Timeout fault for the
amount of time it represents.

• CAN Slave Cmd ID (implemented in version 19B9):


Command CAN address of the slaved controller. Must be in the range of
0x022 to 0x7FD (or set to 0 to disable). The address is set to a value that
is 0x20 less than the ID offset set on the slaved controller. For example, if
the slave controller has an ID offset of 0x1A0 then the CAN Slave Cmd ID
is set to 0x1C0. See section on CAN Slave Mode in this manual.

• CAN Slave Dir (implemented in version 19B9):


The slave controller can be commanded to the same direction command
or opposite direction command based on this parameter. A value of 0 is
the same direction, a value of 1 is the opposite direction.

• CAN Fast Msg Rate / CAN Slow Msg Rate (implemented in version
2025, not available in 19XX):
In certain installations it is necessary to change the rate at which the CAN
Broadcast messages are sent by the controller. Previously messages had
a fixed transmission rate of either 10ms (the fast messages) or 100ms (the
slow messages). Two new EEPROM parameters have been added that
allow the message rates to be changed.

The message rate is set by these two EEPROM parameters in terms of


milli-seconds (ms). The software loop that sends the CAN messages runs
with a 3 ms period. The CAN messages will be sent out at the next
increment of 3ms that matches the programmed broadcast rate. For
example, if the rate is set to 10ms then the actual broadcast rate will be
8/25/2023 CAN Protocol 8 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

closer to 12ms. It is important to note that many CAN messages are


being triggered to be sent at the same time. The CAN controller will send
them out according to the availability of the CAN bus itself and the priority
of the messages. the actual time between messages will vary in actual
use.

If it is desired that the original CAN message transmission rates be used


then the CAN_Fast_Msg_Rate_EEPROM_(ms) parameter can be set to
10 and the CAN_Slow_Msg_Rate_EEPROM_(ms) can be set to 100.

The two parameters should not be set to a time between messages lower
than 3ms.

These two parameters can be used to disable the entire set of Fast or
Slow CAN messages. If either message rate EEPROM parameter is set
to 0 it will disable sending of that group of messages.

8/25/2023 CAN Protocol 9 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1.2 CAN Diagnostic Parameters Overview (Gen 3 only)

The inverter also provides CAN diagnostic parameters that can be monitored
through the GUI. These parameters are shadow parameters of the actual CAN
Error and Status register used in the microprocessor.

• CAN Status Register:


The Status register is displayed in real time in the GUI. This is a shadow byte
that reflects the actual CAN register. This shadow register is updated every 3
msec.

CAN Status Word Description


Transmit Mode (TM):
The CAN module is in transmit mode. This bit reflects what the CAN module
0x0001 is actually doing regardless of mailbox configuration.
1: The CAN module is transmitting a message
0: The CAN module is not transmitting a message
Receive Mode (RM):
The CAN module is in receive mode. This bit reflects what the CAN module
0x0002 is actually doing regardless of mailbox configuration.
1: The CAN module is receiving a message
0: The CAN module is not receiving a message
Power Down Acknowledge (PDA):
0x0004 1: The CAN module has entered the power-down mode
0: Normal operation
Change Configuration Enable (CCE):
This bit displays the configuration access right. This bit is set after a latency
0x0008 of one clock cycle.
1: The CPU has write access to the configuration registers
0: The CPU is denied write access to the configuration registers
Suspend Mode Acknowledge (SMA):
This bit is set after a latency of one clock cycle—up to the length of one
frame—after the suspend mode was activated. The suspend mode is
0x0010
activated with the debugger tool when the circuit is not in run mode.
1: The module has entered suspend mode
0: The module is not in suspend mode
Warning Status (EW):
0x0020 1: One of the two error counters (CANREC or CANTEC) has reached the
warning level of 96.
0: Values of both error counters (CANREC and CANTEC) are less than 96.
Error Passive (EP):
0x0040
1: CAN module is in error-passive mode. CANTEC has reached 128

8/25/2023 CAN Protocol 10 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

0: The CAN module is in error-active mode


Buss Off (BO):
The CAN module is in bus-off state.
1: There is an abnormal rate of errors on the CAN bus. This condition occurs
when the transmit error counter (CANTEC) has reached the limit of 256.
0x0080 During Bus Off, no messages can be received or transmitted. The bus-off
state can be exit by clearing the CCR bit in CANMC register or if the Auto
Bus On (ABO) (CANMC.7) bit is set after 128 * 11 receive bits have been
received. After leaving Bus Off, the error counters are cleared.
0: Normal operation

8/25/2023 CAN Protocol 11 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

• CAN Fault Register:


The Faults register is also a shadow register. However, once a CAN fault
occurs, shadow register will continue to display it through the GUI. The
shadow faults can be cleared by setting Clear Fault Command to 04.

CAN Faults Word Description


Acknowledge Error (ACKE):
0x01 1: The CAN module received no acknowledge
0: All messages have been correctly acknowledged
Stuff Error (SE):
0x02 1: A stuff bit error occurred.
0: No stuff bit error occurred.
Cyclic Redundancy Check Error (CRCE):
0x04 1: The CAN module received a wrong CRC.
0: The CAN module never received a wrong CRC.
Stuck at Dominant 1 Error (SA1):
The SA1 bit is always at 1 after a hardware reset, a software reset, or
a Bus-Off condition. This bit is cleared when a recessive bit is detected
0x08
on the bus.
1: The CAN module never detected a recessive bit.
0: The CAN module detected a recessive bit.
Bit Error (BE):
1: The received bit does not match the transmitted bit outside of the
0x10 arbitration field or during transmission of the arbitration field, a
dominant bit was sent but a recessive bit was received.
0: No bit error detected.
Form Error (FE):
1: A form error occurred on the bus. This means that one or more of
0x20 the fixed-form bit fields had the wrong level on the bus.
0: No form error detected; the CAN module was able to send and
receive correctly.

4
Please refer to “Software User Manual” section 11.6.2 – Clear Faults Command.
8/25/2023 CAN Protocol 12 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1.3 CAN Diagnostic Parameters Overview (Gen 5/CM only)

Several CAN diagnostics are available through the RMS GUI.

RMS GUI Watch Item Description


CAN_Status_Bus_Off 0: Bus is active
1: CAN Bus has been turned off due to
excessive errors.

Note: The auto CAN Bus restart feature has


been enabled. If the CAN bus controller gets
turned off it will automatically restart.
CAN_Status_Error_Passive 0: Bus is active
1: CAN Bus controller has gone to the passive
state.
CAN_Status_Error_Warning 0: Bus is active
1: The number of CAN errors has reached a
warning limit of 96.
CAN_Status_Last_Error_Code Indicates the last reported error on the CAN bus
controller:
0: No Error
1: Stuff Error
2: Form Error
3: Ack Error
4: Bit 1 Error
5: Bit 0 Error
6: CRC Error
CAN_Tx_Error_Counter Count of errors in sending of CAN messages.
The maximum count is 255 before the counter
loops back to 0.
CAN_Rx_Error_Counter Count of errors in receiving CAN messages,
maximum count is 127. For each correctly
received CAN message the error counter will
count down towards 0.

8/25/2023 CAN Protocol 13 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1.4 CAN Format


The CAN protocol conforms to CAN 2.0A (11 bit identifiers) as well as CAN 2.0B
(29 bit identifiers)5. CAN Messages are transmitted with a baud rate determined
by the CAN Bit Rate EEPROM parameter6. All messages have a data length
code (DLC) of 8 bytes and follow little-endian format which implies that the least
significant byte is stored at the lowest address. For example, if the command
message is setup to turn the inverter on in CAN Speed mode with a speed
command of 500 RPM the data bytes should look like this:

Data Data Data Data Data Data Data Data


Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
44 1 244 1 0 1 0 0

• Torque Command: Sent as a value in N.m. times 10.


For example, 30 Nm should be entered as 300 = (1 x 256) + 44
o Data Byte 0 = 44 (Low byte)
o Data Byte 1 = 1 (High byte)

• Speed Command: Sent as a value in RPM.


For example, 500 RPM is entered as 500 = (1 x 256) + 244
o Data Byte 2 = 244 (Low byte)
o Data Byte 3 = 1 (High byte)

• Direction Command
o Data Byte 4 = 0 (Clockwise = Reverse)
o Data Byte 4 = 1 (Anticlockwise = Forward)

• Inverter Run Command


o Data Byte 5 = 0 (Disable Inverter)
o Data Byte 5 = 1 (Enable Inverter)

Each data frame is 89 bits long thus at 250kbps the bus can handle a maximum
of 2808 messages per second.

5
Please refer to “CAN Extended Message Identifier” in section 1 - Introduction.
6
Please refer to “CAN Bit Rate” in section 1 - Introduction.
8/25/2023 CAN Protocol 14 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1.5 Data Formats


Each message contains one or more items. Each item is formatted and scaled
per the definitions below:

Format Description Range


Signed integer,
Temperature -3276.8 to +3276.7 °C
actual temperature (in °C) times 10
Signed integer,
Low Voltage -327.68 to +327.67 volts
actual voltage (in Volts) times 100
Signed integer,
Torque -3276.8 to +3276.7 N-m
actual torque (in N.m) times 10
Signed integer,
High Voltage -3276.8 to +3276.7 volts
actual voltage (in Volts) times 10
Signed Integer,
Current -3276.8 to +3276.7 amps
actual current (in Amps) times 10
Signed integer,
Angle 0.0 to ±359.9 degrees
actual angle (in degrees) times 10
Angular velocity Signed integer,
-32768 to +32767 rpm
(Speed) actual velocity (in RPM)
Unsigned byte,
Boolean 0 or 1
1 = true/on, 0 = false/off
Signed integer,
Frequency -3276.8 to +3276.7 Hz
actual frequency (in Hz) times 10
Signed integer,
Power -3276.8 to +3276.7 kW
actual power (in kW) times 10
Unsigned long integer or Unsigned
integer.
These are scaled values in counts that
Time can be calculated by using their NA
respective Scale Factors. For each Scale
Factor, see the description column for that
parameter.
Signed integer,
Flux -32.768 to 32.767 Webers
actual flux (in Webers) times 1000
Unsigned integer, 0 – 655.35
Proportional Gain actual gain (unit-less) times 100 OR OR
actual gain (unit-less) times 10000 0 – 6.5535
Unsigned integer,
Integral Gain 0 – 6.5535
Actual gain (unit-less) times 10000
Unsigned integer,
Derivative Gain 0 – 655.35
actual gain (unit-less) times 100
Unsigned integer,
Low-pass Filter Gain 0 – 6.5535
Actual gain (unit-less) times 10000
These are scaled values that can be
calculated by using their respective Scale
Per-unit Value NA
Factors. For each Scale Factor, see the
description column for that parameter.
The value for ADC counts as read directly
ADC Count 0 - 4095
by the registers of a microcontroller.

8/25/2023 CAN Protocol 15 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Format Description Range


Signed integer, actual pressure (in psi)
Pressure -3276.8 to +3276.7 psi
times 10

1.6 CAN Database File


A CAN database file stores information for a given CAN network. For example, it
includes information about CAN nodes, messages, and data bytes for each
message. A CAN database file has a .dbc extension and can be used with
several CAN data loggers such CANTrace, CANalyzer, CANoe, etc to log CAN
data.

Cascadia Motion provides a CAN database file. The file can be downloaded
from the Support section of the Cascadia Motion web site.

This file can also be edited by the user with his/her choice of a CAN database
editor. For example, Kvaser’s Database Editor can be used to create and edit the
CAN database file. Kvaser’s Database Editor can be found on the Kvaser web
site, www.kvaser.com

8/25/2023 CAN Protocol 16 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2. CAN Messages
2.1 Broadcast Messages
Broadcast messages are sent by the controller continuously irrespective of VSM
or CAN command mode. The table below shows the messages that are
broadcast and the frequency at which they are sent. The addresses shown
below are default addresses based on the default CAN ID Offset of 0x0A0. The
CAN ID offset can be changed by using the EEPROM parameter for this variable.
Using a different CAN ID offset would be specifically useful in the care where
more than one controller is on the same CAN bus network. While setting CAN ID
offset address for a controller, make sure that the address range for controllers
does not contain overlapping addresses.

A parameter ‘CAN Active Messages Lo Word’ with parameter address 148 is


defined to enable/disable individual CAN Broadcast Messages. Additionally,
there is a parameter, CAN Active Messages Hi Word, that controls various CAN
mailboxes related to the Command message, Slave message, BMS, OBD2, and
the U2C. This message should be kept as 0xFFFF (or 0xFFFE if implementing
the High Speed Message).

Each bit in CAN Active Messages Lo Word parameter represents a CAN


Message broadcast status as follows:

0 = CAN Messages broadcast disabled


1 = CAN Message broadcast enabled

Slow = controlled by CAN_Slow_Msg_Rate_EEPROM_(ms), typical 10Hz


Fast = controlled by CAN_Fast_Msg_Rate_EEPROM_(ms), typical 100Hz

The controller broadcasts the following messages:

CAN Active
Messages
Address Frequency Content (Low Word)
Bit
Designation
0x0A0 Slow/10 Hz Temperatures #1 0x0001
0x0A1 Slow/10 Hz Temperatures #2 0x0002
0x0A2 Slow/10 Hz Temperatures #3 0x0004
0x0A3 Fast/100 Hz Analog Inputs Voltages 0x0008
0x0A4 Fast/100 Hz Digital Input Status 0x0010
0x0A5 Fast/100 Hz Motor Position Information 0x0020
0x0A6 Fast/100 Hz Current Information 0x0040
0x0A7 Fast/100 Hz Voltage Information 0x0080
0x0A8 Fast/100 Hz Flux Information 0x0100
0x0A9 Slow/10 Hz Internal Voltages 0x0200
8/25/2023 CAN Protocol 17 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

0x0AA Fast/100 Hz Internal States 0x0400


0x0AB Fast/100 Hz Fault Codes 0x0800
0x0AC Fast/100 Hz Torque & Timer Information 0x1000
Modulation Index & Flux Weakening Output
0x0AD Fast/100 Hz 0x2000
Information
0x0AE Slow/10 Hz Firmware Information 0x4000
0x0AF 100 Hz (fixed) Diagnostic Data 0x8000
CAN Active
Messages
(High Word)
Bit
Designation
High Speed Message, note bit of CAN Active
Messages High Word must be set to 0 to
0x0B0 333Hz (fixed) 0x0001
activate. To activate this message the normal
setting would be 0xFFFE.

All of the above message addresses are in standard 11-bit format. The
addresses in extended 29-bit and J1939 format are listed below (for the default
CAN ID Offset of 0xA0):

Standard 11-bit Format Extended 29-bit Format J1939 Format


0x0A0 0x0A0 X 0x0CFFA001
0x0A1 0x0A1 X 0x0CFFA101
0x0A2 0x0A2 X 0x0CFFA201
0x0A3 0x0A3 X 0x0CFFA301
0x0A4 0x0A4 X 0x0CFFA401
0x0A5 0x0A5 X 0x0CFFA501
0x0A6 0x0A6 X 0x0CFFA601
0x0A7 0x0A7 X 0x0CFFA701
0x0A8 0x0A8 X 0x0CFFA801
0x0A9 0x0A9 X 0x0CFFA901
0x0AA 0x0AA X 0x0CFFAA01
0x0AB 0x0AB X 0x0CFFAB01
0x0AC 0x0AC X 0x0CFFAC01
0x0AD 0x0AD X 0x0CFFAD01
0x0AE 0x0AE X 0x0CFFAE01
0x0AF 0x0AF X 0x0CFFAF01
0x0B0 0x0B0 X 0x0CFFB001
0x0C0
0x0C0 X 0x0CFFC001
Command Message
0x0C1
0x0C1 X 0x0CFFC101
Parameter Command
0x0C2
0x0C2 X 0x0CFFC201
Parameter Response

Extended format is often denoted by the letter ‘X’. However, based on the CAN
logger, this format may be represented differently. Please refer to the manual for
the CAN logger that is used.

8/25/2023 CAN Protocol 18 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

J1939 messages have the following fixed configuration:


• Priority = 3
• PDU Format = 0xFF
• PDU Specific = CAN ID Offset EEPROM
• Source Address = 1 (for both received and transmitted messages)

8/25/2023 CAN Protocol 19 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Enabling/Disabling Broadcast of CAN Messages

As an example, in order to disable Temperature #1, #2 and #3 messages in the


above table, the parameter command message should be configured as follows:

Data Byte Data Byte Data Byte Data Byte


Data Data Data Data
7 6 5 4
Byte 3 Byte 2 Byte 1 Byte 0
(Low Byte) (Low Byte) (High Byte) (Low Byte)

CAN Active Messages CAN Active Messages R/W Parameter


Reserved
High Word Low Word Command Address
255 255 255 248
0 1 0 148
(0xFF) (0xFF) (0xFF) (0xF8)

Data Byte 4 controls the following messages:

Bit 0: Temperature #1
Bit 1: Temperature #2
Bit 2: Temperature #3
Bit 3: Analog Input Voltages
Bit 4: Digital Input Status
Bit 5: Motor Position Information
Bit 6: Current Information
Bit 7: Voltage Information

In little-endian format, Byte 4 can be looked at as: Bit 7 - Bit 6 - Bit 5 - ... - Bit 1 -
Bit 0

To enable all messages above, Byte 4 should be set to 0xFF (all bits set to 1).
To disable temperature messages, Byte 4 should be set to 0xF8 (Bit 0, 1, and 2
are set to 0)
To disable Motor position information, Byte 4 should be set to 0xDF (Bit 5 set to
0)

Data Byte 5 controls the following messages:


Bit 0: Flux Information
Bit 1: Internal Voltages
Bit 2: Internal States
Bit 3: Fault Codes
Bit 4: Torque & Timer Information
Bit 5: Modulation Index & Flux Weakening Output Information
Bit 6: Firmware Information
Bit 7: Diag Data

8/25/2023 CAN Protocol 20 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Data Byte 6 controls the following messages but user should not disable any of
these messages:

Bit 0: High Speed Message (1 = off, 0 = on)


Bit 1: Not used
Bit 2: Not used
Bit 3: Not used
Bit 4: Not used
Bit 5: Not used
Bit 6: Slave Mode Command Message
Bit 7: BMS Command Message

Data Byte 7 controls the following messages but user should not disable any of
these messages:

Bit 0: OBD2 General Query


Bit 1: OBD2 Specific Query
Bit 2: OBD2 Response
Bit 3: U2C TX Message
Bit 4: U2C RX Message
Bit 5: Parameter Response Message
Bit 6: Parameter Command Message
Bit 7: CAN Command Message

8/25/2023 CAN Protocol 21 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Broadcast Message Definitions

0x0A0 – Temperatures #1
Byte # Name Format Description
Module A
0,1 Temperature Temperature of Power Module, Phase A
Temperature
Module B
2,3 Temperature Temperature of Power Module, Phase B
Temperature
Module C
4,5 Temperature Temperature of Power Module, Phase C
Temperature
Gate Driver
6,7 Board Temperature Temperature of Gate Driver Board
Temperature

0x0A1 – Temperatures #2
Byte # Name Format Description
Control Board
0,1 Temperature Temperature of Control Board.
Temperature
RTD #1
2,3 Temperature Temperature read from RTD input #1
Temperature
RTD #2
4,5 Temperature Temperature read from RTD Input #2
Temperature
Gen 2: Temperature read from RTD Input #3
Stall Burst Model
Temperature / Gen 5 / CM: Power Module junction
6,7 Temperature
RTD #3 temperature estimate read Stall Burst Model.
Temperature Only for supported inverters. See Stall Burst
manual.

0x0A2 – Temperatures #3 & Torque Shudder


Byte # Name Format Description
Coolant Gen 2: Temperature read from RTD Input
Temperature / #4
0,1 Temperature
RTD #4 Gen 5/ CM: Estimated Coolant
Temperature temperature.
Hot Spot Gen 2: Temperature read from RTD Input
Temperature / #5
2,3 Temperature
RTD #5 Gen 5 / CM: Estimated hot spot
Temperature temperature internal to inverter.
Motor Filtered temperature value from the motor
4,5 Temperature
Temperature temperature sensor.
A value of torque used in shudder
6,7 Torque Shudder Torque
compensation.

8/25/2023 CAN Protocol 22 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

0x0A3 – Analog Input Voltages (for firmware version before 1995)


Byte # Name Format Description
0,1 Analog Input #1 Low Voltage Voltage on Analog Input #1
2,3 Analog Input #2 Low Voltage Voltage on Analog Input #2
4,5 Analog Input #3 Low Voltage Voltage on Analog Input #3
6,7 Analog Input #4 Low Voltage Voltage on Analog Input #4
0x0A3 – Analog Input Voltages (for firmware version 1995 and after)
Bit # Name Format Description
0–9 Analog Input #1 Low Voltage Voltage on Analog Input #1
10 – 19 Analog Input #2 Low Voltage Voltage on Analog Input #2
20 – 29 Analog Input #3 Low Voltage Voltage on Analog Input #3
32 – 41 Analog Input #4 Low Voltage Voltage on Analog Input #4
42 – 51 Analog Input #5 Low Voltage Voltage on Analog Input #5
52 – 61 Analog Input #6 Low Voltage Voltage on Analog Input #6
0x0A3 – Analog Input Voltages (for Gen 5 / CM firmware where iM-225 motor
type is used)
Bit # Name Format Description
0 – 15 Oil Temperature Temperature Oil Temperature of iM-225 motor
16 – 31 Oil Pressure Pressure Oil Pressure of iM-225 motor
32 – 41 Analog Input #4 Low Voltage Voltage on Analog Input #4
42 – 51 Analog Input #5 Low Voltage Voltage on Analog Input #5
52 – 61 Analog Input #6 Low Voltage Voltage on Analog Input #6

0x0A4 – Digital Input Status


Byte # Name Format Description
0 Digital Input #1 Boolean Status of Digital Input #1, Forward switch
1 Digital Input #2 Boolean Status of Digital Input #2, Reverse switch
2 Digital Input #3 Boolean Status of Digital Input #3, Brake switch
Status of Digital Input #4, REGEN Disable
3 Digital Input #4 Boolean
Switch
4 Digital Input #5 Boolean Status of Digital Input #5, Ignition switch
5 Digital Input #6 Boolean Status of Digital Input #6, Start switch
6 Digital Input #7 Boolean Status of Digital Input #7, Valet Mode
7 Digital Input #8 Boolean Status of Digital Input #8

0x0A5 – Motor Position Information


Byte # Name Format Description
Motor Angle The electrical angle of the motor as read
0,1 Angle
(Electrical) by the encoder or resolver.
2,3 Motor Speed Angular velocity The measured speed of the motor
Electrical Output The actual electrical frequency of the
4,5 Frequency
Frequency inverter.

8/25/2023 CAN Protocol 23 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Byte # Name Format Description


This is used in calibration of resolver
angle adjustment. The range of this
Delta Resolver parameter is ±180°. Values between 180°
6,7 Angle
Filtered and 360° are shown as negative angle.
For example, 270° is equal to -90°, and
190° is equal to -170°.

0x0A6 – Current Information


Byte # Name Format Description
0,1 Phase A Current Current The measured value of Phase A current.
2,3 Phase B Current Current The measured value of Phase B current
4,5 Phase C Current Current The measured value of Phase C current
6,7 DC Bus Current Current The calculated DC Bus current.

0x0A7 – Voltage Information


Byte # Name Format Description
The actual measured value of the DC bus
0,1 DC Bus Voltage High Voltage
voltage.
The calculated value of the output
2,3 Output Voltage High Voltage
voltage, in peak line-neutral volts.
Measured value of the voltage between
Phase A and Phase B (VAB) when the
4,5 VAB_Vd_Voltage High Voltage
inverter is disabled. Vd voltage when the
inverter is enabled.
Measured value of the voltage between
Phase B and Phase C (VBC) when the
6,7 VBC_Vq_Voltage High Voltage
inverter is disabled. Vq voltage when the
inverter is enabled.

0xA8 – Flux Information


Byte # Name Format Description
The commanded flux (only applies to
0,1 Flux command Flux
induction motors)
The estimated flux (only applies to
2,3 Flux feedback Flux
induction motors)
4,5 Id feedback Current D-axis current feedback
6,7 Iq feedback Current Q-axis current feedback

0x0A9 – Internal Voltages


Byte # Name Format Description
1.5V Reference
0,1 Low Voltage One of the low voltage references
voltage
2.5V Reference
2,3 Low Voltage One of the low voltage references
voltage

8/25/2023 CAN Protocol 24 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Byte # Name Format Description


5.0V Reference
4,5 Low Voltage One of the low voltage references
voltage
12V System
6,7 Low Voltage One of the low voltage references
voltage

0x0AA – Internal States


Byte # Name Format Description
0 = VSM Start State
1 = Pre-charge Init State
2 = Pre-charge Active State
3 = Pre-charge Complete State
4 = VSM Wait State
5 = VSM Ready State
6 = Motor Running State
0 VSM State Internal 7 = Blink Fault Code State

14 = Shutdown in Process – in key


switch mode 1, user has turned the
key switch to off position.

15 = Recycle Power State – user must


recycle power when the unit is in
this state.
For Gen 5 / CM the PWM frequency that
is currently being used is reported. The
PWM frequency may change depending
1 PWM Frequency kHz
on operating conditions.
For PMxxx inverter this value will show as
0.
0 = Power on State
1 = Stop State
2 = Open Loop State
3 = Closed Loop State
2 Inverter State Internal 4 = Wait State
5, 6, 7 = Internal states
8 = Idle Run State
9 = Idle Stop State
10,11,12 = Internal states
Bit 0: Relay 1 Status (1 = active)
Bit 1: Relay 2 Status
Bit 2: Relay 3 Status
3 Relay State Internal
Bit 3: Relay 4 Status
Bit 4: Relay 5 Status
Bit 5: Relay 6 Status

Inverter Run 0 = Torque Mode


4 – Bit0 Internal
Mode 1 = Speed Mode

8/25/2023 CAN Protocol 25 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Byte # Name Format Description


For Gen 5 / CM:
0 = Disabled
Self-Sensing 1 = Enabled
4 – Bit1 Internal
Assist Enable Indicates if Self-Sensing Assist is currently
active. Only for select motors. See Self-
Sensing Assist manual.
Current Inverter Active Discharge State:
000 (0) = Discharge Disabled
001 (1) = Discharge Enabled, waiting
Inverter
4– 010 (2) = Performing Speed Check
Active Discharge Internal
Bits5-7 011 (3) = Discharge Actively occurring
State
100 (4) = Discharge Completed
All other states are reserved for future
use.
0 = CAN Mode
1 = VSM Mode

When in CAN Mode the inverter takes


Inverter
5 – Bit0 Internal commands from the CAN messages.
Command Mode
When in VSM Mode the inverter takes
messages from the Vehicle State Machine
which is operated from the various input
and outputs of the inverter.
5 – Bit4 Function only available currently on Gen 5
Rolling Counter
thru Internal / CM: The value of the currently expected
Value
5 – Bit7 Rolling Counter value.
Inverter Enable 0 = Inverter is disabled
6 - Bit0 Internal
State 1 = Inverter is enabled
For Gen 5 / CM:
0 = Stall
Burst Model 1 = High Speed
6 – Bit1 Internal
Mode At low speeds Stall Burst Model will apply
when mode is 0 (Stall) for select inverters
only. See Stall Burst manual.
0 = start signal has not been activated
1 = start signal has been activated
Provides latched indication of when the
6 - Bit6 Start Mode Active Internal
start signal has been received, typically
used when in using VSM mode.
Implemented in Gen 3 version 2044.
0 = Inverter can be enabled
1 = Inverter cannot be enabled

This feature is added so that the inverter


cannot be accidentally enabled. This
Inverter Enable feature requires that before sending out
6 – Bit7 Internal
Lockout an Inverter Enable command, the user
must send out a Inverter Disable
command. Once the inverter sees a
Disable command, the lockout is removed
and controller can receive the Inverter
Enable command.
8/25/2023 CAN Protocol 26 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Byte # Name Format Description


1 = Forward
Direction
7 – Bit0 Internal 0 = Reverse, if inverter is enabled
Command
Stopped, if inverter is disabled
0 = BMS Message is not being received
7 – Bit1 BMS Active Internal
1 = BMS Message is being received
0 = Torque is not being limited by the
BMS Limiting
7 – Bit2 Internal BMS.
Torque
1 = Torque is being limited by the BMS.
This bit is currently available only in Gen
5/CM inverters and Gen 3 version 2042+:
0 = no torque limiting is occurring.
7 – Bit3 Limit Max Speed Internal
1 = torque limiting is occurring due to the
motor speed exceeding the maximum
motor speed.
This bit/function is currently available only
in Gen 5/CM inverters:
0 = Inverter hot spot temperature is below
7 – Bit4 Limit Hot Spot Internal the limit.
1 = Inverter is limiting current due to
regulate the maximum hot spot
temperature.
This bit is currently available only in Gen
5/CM inverters and Gen 3 version 2042+:
Low Speed
7 – Bit5 Internal 0 = low speed current limiting is not
Limiting
occurring.
1 = low speed current limiting is applied.
This bit is currently available only in Gen
Coolant
5/CM inverters. The bit indicates that the
7 – Bit6 Temperature Internal
maximum motor current is being limited
Limiting
due to coolant temperature.
For Gen 5 / CM:
0 = Not Limiting
Limit Stall Burst 1 = Limiting
7 – Bit7 Internal
Model Indicates if Stall Burst Model is limiting the
current. For select inverters only. See
Stall Burst manual.

0x0AB – Fault Codes


Byte # Name Format Description
0,1 POST Fault Lo Internal Each bit represents a fault
2,3 POST Fault Hi Internal Each bit represents a fault
4,5 Run Fault Lo Internal Each bit represents a fault
6,7 Run Fault Hi Internal Each bit represents a fault

8/25/2023 CAN Protocol 27 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

POST Faults (only occur at power up)


CAN Byte CAN Bit POST Fault Fault Word Byte Value
0 Hardware Gate/Desaturation Fault 00000001 1
1 HW Over-current Fault 00000002 2
2 Accelerator Shorted 00000004 4
Byte 0

3 Accelerator Open 00000008 8


4 Current Sensor Low 00000010 16
5 Current Sensor High 00000020 32
6 Module Temperature Low 00000040 64
7 Module Temperature High 00000080 128
8 Control PCB Temperature Low 00000100 1
9 Control PCB Temperature High 00000200 2
10 Gate Drive PCB Temperature Low 00000400 4
Byte 1

11 Gate Drive PCB Temperature High 00000800 8


12 5V Sense Voltage Low 00001000 16
13 5V Sense Voltage High 00002000 32
14 12V Sense Voltage Low 00004000 64
15 12V Sense Voltage High 00008000 128
16 2.5V Sense Voltage Low 00010000 1
17 2.5V Sense Voltage High 00020000 2
18 1.5V Sense Voltage Low 00040000 4
Byte 2

19 1.5V Sense Voltage High 00080000 8


20 DC Bus Voltage High 00100000 16
21 DC Bus Voltage Low 00200000 32
22 Pre-charge Timeout 00400000 64
23 Pre-charge Voltage Failure 00800000 128
24 EEPROM Checksum Invalid 01000000 1
25 EEPROM Data Out of Range 02000000 2
26 EEPROM Update Required 04000000 4
Hardware DC Bus Over-Voltage
27 08000000 8
Byte 3

during initialization
Gen 3: Reserved
28 10000000 16
Gen 5: Gate Driver Initialization
29 Reserved 20000000 32
30 Brake Shorted 40000000 64
31 Brake Open 80000000 128

8/25/2023 CAN Protocol 28 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

RUN Faults
CAN CAN Fault Byte
RUN Fault
Byte Bit Word Value
32 Motor Over-speed Fault 00000001 1
33 Over-current Fault 00000002 2
34 Over-voltage Fault 00000004 4
Byte 4

35 Inverter Over-temperature Fault 00000008 8


36 Accelerator Input Shorted Fault 00000010 16
37 Accelerator Input Open Fault 00000020 32
38 Direction Command Fault 00000040 64
39 Inverter Response Time-out Fault 00000080 128
40 Hardware Gate/Desaturation Fault 00000100 1
41 Hardware Over-current Fault 00000200 2
42 Under-voltage Fault 00000400 4
Byte 5

43 CAN Command Message Lost Fault 00000800 8


44 Motor Over-temperature Fault 00001000 16
45 Reserved 00002000 32
46 Reserved 00004000 64
47 Reserved 00008000 128
48 Brake Input Shorted Fault 00010000 1
49 Brake Input Open Fault 00020000 2
50 Module A Over-temperature Fault 00040000 4
Byte 6

51 Module B Over-temperature Fault 00080000 8


52 Module C Over-temperature Fault 00100000 16
53 PCB Over-temperature Fault7 00200000 32
54 Gate Drive Board 1 Over-temperature Fault 00400000 64
55 Gate Drive Board 2 Over-temperature Fault 00800000 128
56 Gate Drive Board 3 Over-temperature Fault 01000000 1
57 Current Sensor Fault 02000000 2
Gen 3: Reserved
58 04000000 4
Gen 5: Gate Driver Over-Voltage
Gen 3: Hardware DC Bus Over-Voltage Fault
Byte 7

59 08000000 8
Gen 5: Reserved
Gen 3: Reserved
60 10000000 16
Gen 5: Hardware DC Bus Over-voltage Fault
61 Reserved 20000000 32
62 Resolver Not Connected 40000000 64
63 Reserved 80000000 128

8/25/2023 CAN Protocol 29 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

0x0AC – Torque & Timer Information


Byte # Name Format Description
Commanded
0,1 Torque The commanded torque.
Torque
The estimated motor torque based on
2,3 Torque Feedback Torque
motor parameters and feedbacks.
This timer is updated every 3 msec. This
timer will roll-over in approximately 5
months. The timer will reset to 0 at power
4,5,6,7 Power on Timer (Counts x .003) sec
on. Monitoring this can be useful to show
when a reset of the processor has
occurred.

0x0AD – Modulation Index & Flux Weakening Output Information


Byte # Name Format Description
This is the modulation index. The scale
0,1 Modulation Index Per-unit Value factor is x100. To get the actual
modulation index divide the value by 100.
Flux Weakening This is the current output of the flux
2,3 Current
Output regulator.
4,5 Id command Current The commanded D-axis current
6,7 Iq command Current The commanded Q-axis current

0x0AE – Firmware Information


Byte # Name Format Description
EEPROM This is an EEPROM version that is
0,1 Version / Project NA assigned to each project.
Code For factory use only!
This is the software version with major
2,3 Software Version NA
and minor release values.
This is the portion of date code that
Date Code
4,5 NA displays month and date information in
(mmdd)
mmdd format.
This is the portion of date code that
6,7 Date Code (yyyy) NA
displays year information in yyyy format.

0x0AF – Diagnostic Data


Byte # Name Format Description

Please refer to the manual, “Download Diagnostic Data” for details.

8/25/2023 CAN Protocol 30 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

0x0B0 – High Speed Message (transmitted at 3ms, version 2042+)


Byte # Name Format Description
Torque
0,1 Torque The commanded torque.
Command
2,3 Torque Feedback Torque The estimated motor torque.
4,5 Motor Speed Angular velocity The measured motor speed.
6,7 DC Bus Voltage High Voltage The actual measured DC bus voltage.

8/25/2023 CAN Protocol 31 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.2 Command Message

The Command Message is used to transmit data to the controller. This message
is sent from a user-supplied external controller to the motor controller. The
Control Message (0x0C0) is used to operate the controller via the CAN interface.

0x0C0 – Command Message (Data Length = 8 bytes)


Byte.Bit Name Format Description
Torque command used when in torque
mode.
Torque When in Speed Mode the Torque
0,1 Torque
Command Command values become a feedforward
to the Speed Regulator (see Using
Speed Mode manual).
Speed command used when in speed
mode.
Starting in version 2048 and 651D any
Speed Command transmitted while in
Torque mode will over-ride the Max
2,3 Speed Command Angular Velocity
Speed EEPROM parameter and provide
a new maximum speed limit. The
maximum speed limit will revert to the
default EEPROM parameter value when
the inverter returns to Torque mode.
0 = “Reverse”
Direction 1 = “Forward”
4 Boolean
Command See section 2.3.2.2 for further definition
of direction.
0 = Inverter Off,
5.0 Inverter Enable Boolean
1 = Inverter On
Inverter 0 = Disable Discharge,
5.1 Boolean
Discharge7 1 = Enable Discharge
0 = Do not over-ride mode
1 = If controller is in torque mode then
controller will change to speed mode.
Speed Mode This is a mode over-ride bit that will
5.2 Boolean
Enable change the mode from torque to speed
only. It does not change the mode from
speed to torque. See manual Using
Speed Mode for more information.
If set to 0, the default torque limits sets in
the EEPROM parameters are used. If
Commanded
6,7 Torque set to a positive number then the Motor
Torque Limit
and Regen Torque limits are set to the
torque value sent.

7
Please refer to the document, “Inverter Discharge Process”.
8/25/2023 CAN Protocol 32 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

This message should be continuously broadcast at 500 milliseconds rate or


faster. Of course, for most vehicle situations a message rate of 10-50
milliseconds provides better control of the vehicle. The Command Message is
processed by the controller every 3ms. Sending the Command message at a
rate faster than 3ms will not improve response. The message must be sent as
an 8 byte message (DLC = 8).

If the Command Message is not received faster than the CAN TimeOut time and
the Command Message Active Parameter is set to 1 then a CAN Command
Message Lost fault will be generated.

When in CAN mode the Command messages should be sent to the controller
before the inverter is powered on (or before the CAN Timeout time expires). If
they are not then the Command message Lost fault will have to be cleared up on
power up.

Note: Commanded Torque Limit feature was added in software version 1953.
For previous versions of software these two bytes should be set to 0 and do not
have any function.

2.2.1 Inverter Enable Safety Options

2.2.1.1 Inverter Enable Lockout:


This feature is added so that the inverter cannot be accidentally enabled
when first powered up. This feature requires that before sending out an
Inverter Enable command, the user must send out an Inverter Disable
command. Once the inverter sees a Disable command, the lockout is
removed and controller can receive the Inverter Enable command.

2.2.2.2 Inverter Enable Safety Switch:


A new EEPROM parameter, CAN Inverter Enable Switch Active EEPROM, is
added as a safety option.

Setting this parameter to 1 will take DIN1 digital input into consideration and
the inverter will only be enabled if both DIN1 and inverter command are
active. If DIN1 or Inverter Enable Command is inactive, the inverter will be
disabled.

If CAN Inverter Enable Switch Active EEPROM is set to 0, DIN1 will have no
effect on enabling or disabling the inverter.

8/25/2023 CAN Protocol 33 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.2.2.3 Sudden Reversal of the Direction Command:


This safety feature keeps the user from changing the direction command
while the inverter is enabled. If the direction command is changed suddenly
when the inverter is still enabled, inverter is disabled without triggering any
faults. Also, the lockout condition is set again which will force the user to send
an Inverter Disable command before re-enabling it.

2.2.2 CAN Message Sequence Example


Here is an example of sending out torque commands to the inverter in ‘CAN’
mode with run mode required to be ‘Torque’. These two EEPROM
parameters can be set via GUI after powering up the inverter.

For the message sequence example described below, following assumptions


hold true:

Default
GUI EEPROM Parameter Description
Value
Inv_Cmd_Mode_EEPROM(CAN=0_VSM=1) 0 CAN mode
Run_Mode_EEPROM(Trq=0_Spd=1) 0 Torque mode
CAN_ID_Offset_EEPROM 0xA0 Default CAN ID offset
CAN_TimeOut_(/3ms)_EEPROM 333 1 second timeout period

8/25/2023 CAN Protocol 34 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Message CAN
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Description
Type ID
Rxd 0xAA 4 0 9 0 0 0 128 0 Torque mode Is active. Lockout is enabled.
Send out inverter disable command to release
lockout. Note that lockout will not disable if the
inverter is faulted.
This command should have been set up to be
Txd 0xC0 0 0 0 0 0 0 0 0
transmitted at a rate sufficient to prevent the
CAN Timeout fault. To prevent a fault at
startup start sending before the inverter is
powered up.
Enable the inverter with a torque command of
Txd 0xC0 100 0 x8 x 1 1 0 0
+10 Nm in forward direction.
Set the torque to +20 Nm (motoring) in forward
Txd 0xC0 200 0 x x 1 1 0 0
direction.
Set the torque to -10 Nm (regenerative) in
Txd 0xC0 156 255 x x 1 1 0 0
forward direction.
Disable the inverter before changing the
direction.
Txd 0xC0 X x x x 1 0 0 0 If the direction is changed without disabling the
inverter first. The inverter will be automatically
disabled as a safety precaution.
Set the command to +10 Nm (motoring) in
Txd 0xC0 100 0 x x 0 1 0 0
reverse direction.

8
“x“ indicates a DON’T CARE value, send a zero if unsure.

8/25/2023 CAN Protocol 35 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.2.3 Sign Convention for Torque and Speed


When using the controller in CAN mode, it is important to make sure that
commands are entered properly to move the motor in the intended direction.
Following description provides details on speed command, speed feedback,
torque command, torque feedback and direction command and the possible
outcome in each scenario.

2.2.3.1 CAN Speed command:


The Speed Command is a signed number. If the speed command is positive
then the direction will be the direction of the direction command bit. If the
Speed Command is negative then the direction will be opposite of the
direction of the direction command bit.

When using speed mode it is important that the torque limits are appropriate
for regulating the speed. An unloaded motor will often require some amount
of regen torque to keep the speed regulated. When operating with low or
negative speeds the Regen Fade Speed EEPROM parameter can prevent
regen torque. The Regen Fade Speed can be disabled by setting the
EEPROM parameter to 0.

2.2.3.2 CAN Torque command:


For a forward direction command:
• Positive torque command will give a positive torque feedback and is
motoring for positive speed.
• Negative torque command will give a negative torque feedback and is
regen for positive speed.
• Positive torque command will give a positive torque feedback and is regen
for negative speed.
• A negative torque command should not be allowed if already going
negative speed.

For reverse direction command:


• Positive torque command will give a negative torque feedback & is
motoring for negative speed.
• Negative torque command will give a positive torque feedback and is
regen for negative speed.
• Positive torque command will give a negative torque feedback and is
regen for positive speed.
• A negative torque command should not be allowed if already going
positive speed.

8/25/2023 CAN Protocol 36 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3 Parameter Messages

The Parameter Messages (0x0C1 and 0x0C2) are used to read and write
parameters in the controller. These parameters have many different functions.
Some parameters are used to set non-volatile information (EEPROM data).
Some are used to change functionality. Some are used to monitor various
operating parameters that are not part of the broadcast messages.

To write a parameter use message 0x0C1 with byte #2 set to 1 (write). The
controller will then respond with message 0x0C2 and if successful byte #2 will be
set to 1.

To read a parameter use message 0x0C1 with byte #2 to set 0 (read). The
controller will then respond with message 0x0C2 containing the requested data.

Both parameter messages contain 4 bytes for the data that is read or written.
Some parameters will only occupy a single byte. If the data occupies less than 4
bytes it will be loaded into byte #4 first, followed by #5, and so on.

If the parameter address is not recognized then the controller parameter


response message (0x0C2) will contain 0 in both bytes 0 and 1 of the return
data.

8/25/2023 CAN Protocol 37 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.1. Parameter Message Format

0x0C1 – Read / Write Parameter Command – sent to motor controller

Byte # Name Format Description


Each command is identified by a unique
Parameter address. Refer to sections, ‘Command
0,1 Unsigned int
Address Parameters’ and ‘EEPROM Parameters’
for each parameters address.
2 R/W Command Boolean 0 = read, 1 = write
3 Reserved NA NA
See “Data Formats” Data should be entered as dictated in
4,5 Data
section “Data Formats” section.
6,7 Reserved NA NA

0x0C2 – Read / Write Parameter Response – response from motor controller

Byte # Name Format Description


Each command is identified by a unique
address. Refer to sections, ‘Command
Parameter Parameters’ and ‘EEPROM Parameters’
0,1 Unsigned int
Address for each parameters address.
Will return 0,0 if parameter address is not
recognized.
2 Write Success Boolean 0 = not written, 1 = success
3 Reserved NA NA
See “Data Formats” Response data is in the format dictated in
4,5 Data
section “Data Formats” section.
6,7 Reserved NA NA

2.3.2. Parameter Address Ranges


The parameters are categorized in several general categories. Some
parameters are read-only, and some can be written and read.

Address Range Category Description


This address range contains general parameters for
0 – 99 General
control and monitoring
This address range is for EEPROM variables. These
100 – 499 User EEPROM can only be written when the controller is not
operating the motor.

8/25/2023 CAN Protocol 38 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.3. Command Parameters


Address Name Format Description
0xAA00: Normal Run mode
Unsigned integer 0x55nn: External Relay Control mode
1 Relay Command
(0 – 65535)
Please see description below.
10 Flux command Flux Modify the flux command.
This command is used in calibration of the
timing of the A/D reading of the resolver. It
Resolver PWM Unsigned integer
11 is used in determining the peak of the sine
Delay Command (0 – 6250)
wave coming from the resolver. Its default
value is 1100.
This is a calibration parameter used in the
alignment of the magnetic field of the motor
Gamma Adjust
12 Degrees with the resolver. This command parameter
GUI Command
behaves the same way as its equivalent
GUI Command parameter.
Writing a 0 to this parameter clears any
active faults. This command can be sent
20 Fault Clear Boolean
through CAN in CAN as well as VSM
mode.
On Gen 5 / CM inverters the PWM
frequency can be changed from what is
defined by the various EEPROM
Set PWM Unsigned integer parameters. Setting the PWM frequency
21
Frequency (6 – 24) via this Parameter command will over-ride
all EEPROM settings. The PWM frequency
will revert back to the EEPROM settings
when power is cycled.
On CM inverters that support control of the
analog pull-up resistors on AIN1-3 this
AIN Pull-up Unsigned integer Parameter will allow commanding the pull-
22
control (0 – 7) up to be enabled. Each bit of the
Parameter data control each pull-up control
(bit 0 = AIN1, bit 1 = AIN2, bit 3 = AIN3).

8/25/2023 CAN Protocol 39 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Starting with version 2048 and 651D. If


shudder compensation is being used (
Shudder_Compensation_Enable_EEPROM
= 1) the Parameter will allow the
Kp_Shudder gain to be modified and for the
Shudder Compensation to be disabled and
Shudder reenabled.
Unsigned integer
23 Compensation If the Parameter Data is set to 0 then the
(0 – 65535)
Gain Control Shudder Compensation will be disabled.
If the Parameter Data is greater than 0 then
the Shudder Compensation will be enabled
(if the compensation has been enabled via
EEPROM) and the Kp_Shudder gain will be
set to the Parameter Data value divided by
100.
Starting with version 651E. A non zero
Unsigned integer
31 Diag. Data Trigger value will trigger a Diag. Data dump over
(0-65535)
CAN.

Relay Command

This command is used to control relay outputs. The Gen 2 units (older PM100
units) have 4 relay outputs. Gen 3 units, newer PM100, all PM150/250, have 6
relay outputs. The RM100 controller has two relay outputs.

In order to control a relay, the inverter needs to be put into “External Relay
Control” mode. This is achieved by setting byte 5 to 0x55. For byte 4, each bit
corresponds to a relay. Bit 0 corresponds to relay 1 and bit 1 corresponds to
relay 2. Similarly, bit 7 corresponds to relay 8 as shown in the table below. Note,
the hardware does not currently support 8 relays.

Byte 5 Byte 4
0x55 R8 R7 R6 R5 R4 R3 R2 R1

For example, if the user wants to turn on relay 3, he/she needs to set the data
field of the parameter command messages to 0x5504. Similarly, if relay 1 and 2
need to be turned on, a command of 0x5503 must be sent.

Setting the data byte 5 to a value other than 0x55 will kick the inverter out of the
“External Relay Control” mode and in to the “Normal Run” mode. The default
value for normal run mode is 0xAA.

8/25/2023 CAN Protocol 40 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4. EEPROM Parameters


These Parameters are sent using the command message format described in
0x0C1 to modify the EEPROM parameters used by the controller. These
parameters can only be written when the motor is not enabled. Each parameter
will be stored in non-volatile memory at the time of programming. When the
power is recycled the parameter will become effective and used by the inverter.
Parameters highlighted in yellow will take immediate effect.
All EEPROM parameters can also be modified through the GUI interface.

2.3.4.1 Motor Configuration9


Address Name Format Description
Motor Parameter Unsigned char This represents a set of parameter that is
150
Set (0 – 255) used for each type of motor.
This is used in calibration of the timing of
Resolver PWM Unsigned integer the A/D reading of the resolver. It is used
151
Delay (0 – 6250) in determining the peak of the sine wave
coming from the resolver.
This is a calibration parameter used in
the alignment of the magnetic field of the
152 Gamma Adjust Degrees motor with the resolver. It will
automatically default to the correct value
when the motor type is changed.
154 Sin Offset Low Voltage Please refer to the manual, “Encoder
155 Cos Offset Low Voltage Calibration for SIN_COS Encoder”.
This feature is dependent on the
156 Sin ADC Offset ADC Count hardware version of the controller. In
some cases, the resolver sine and cosine
outputs may require adjustments for
improved signals. These offsets are
157 Cos ADC Offset ADC Count added as ADC counts to calibrate the sin
and cosine signals directly. Not
commonly used.

9
For a detailed process on how to configure a specific motor, please refer to the document “Setting up
the PM for XYZ Motor”, where XYZ refers to the specific motor for individual customer.
8/25/2023 CAN Protocol 41 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.2 System Configuration


Address Name Format Description
Pre-charge 0 = Pre-charge is in effect
140 Boolean
Bypassed 1 = Pre-charge is bypassed
0 = Torque Mode
142 Inverter Run Mode Boolean
1 = Speed Mode
This parameter gives the option to
operate controller in either VSM mode or
CAN mode. In VSM mode, GUI is the
main interface to monitor and modify
parameters. The inverter takes
messages from the Vehicle State
Machine which is operated from the
various inputs and outputs of the inverter
Inverter Command such brake, accelerator pedal, etc. In
143 Boolean
Mode VSM mode, broadcast messages are still
sent out over the CAN lines. In CAN
mode, both GUI and CAN interfaces are
active and can be used to monitor and
modify parameters. However, any inputs
from the vehicle state machine will be
ignored.
0 = CAN Mode
1 = VSM Mode (Default)
Added alternate key switch modes. This
allows different types of ignition for
vehicles.

0 = Allows a simple on/off switch for


powering up the inverter.

1 = Provides the functionality of a more


149 Key Switch Mode Unsigned integer traditional ignition switch with momentary
START signal that powers up the inverter
and keeps it powered until the ignition
switch is turned off.

Key Switch Mode is only effective in VSM


Mode. CAN mode remains unaffected.
However, the parameter can be updated
through both GUI and CAN.
Sets whether the Relay outputs have
their normal function or are under CAN
170 Relay Output State Unsigned integer
control. See the Software manual for
more information.
See the Inverter Discharge Process
173 Discharge Enable Unsigned integer manual for more information on the
setting of this parameter.
Allows selection of parameter to be
Analog Output
204 Unsigned integer output on the analog output (available on
Function Select
Gen 3 units only).

8/25/2023 CAN Protocol 42 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

174 Serial Number Unsigned Integer Unit Serial Number.


For Gen 5 / CM:
0 = OFF
1 = ON
Self-Sense Assist
251 Unsigned Integer This parameter determines whether Self
Enabled
Sensing Assist mode is active or not.
Only available for select motors. See
Self-Sense Assist manual.
Gen 5 / CM only: The default PWM
241 PWM Frequency Unsigned Integer
frequency to be used, in kHz.
For Gen 5 / CM Firmware 6525 and earlier
Gen 5 / CM only: The motor current
PWM High Current threshold that transitions the PWM
242 Current
Limit frequency to the High Current PWM
frequency.
Gen 5 / CM only: The maximum motor
PWM High Current
243 Speed speed that the inverter is allowed to be in
Speed Limit
the High Current PWM frequency.
Gen 5 / CM only: The PWM frequency
High Current PWM
244 Unsigned Integer used when the High Current PWM
Frequency
Frequency mode.
Gen 5 / CM only: Above this motor
PWM High Speed
245 Speed speed the PWM frequency transitions to
Limit
High Speed PWM Frequency.
Gen 5 / CM only: The PWM frequency
High Speed PWM
246 Unsigned Integer used when motor speed exceeds the
Frequency
PWM High Speed Limit.
For Gen 5 / CM Firmware 6526 and later
Gen 5 / CM only: The minimum PWM
Minimum frequency to be used with Continuously
246 Unsigned Integer
Continuous PWM Variable PWM, outside of stall. Minimum
value of 6 kHz.
Gen 5 / CM only: The maximum PWM
Maximum frequency to be used with Continuously
247 Unsigned Integer
Continuous PWM Variable PWM, outside of stall. Maximum
value of 24 kHz.
Gen 5 / CM only: The PWM to be used
245 Stall PWM Unsigned Integer
in stall for high current, in kHz.
Gen 5 / CM only: The mode for
switching between different PWM
frequencies.

0 = Nominal PWM only, with stall region


PWM Mode
250 Unsigned Integer
Configuration
1 = Continuously Variable PWM, with
stall region.

2 = Continuously Variable PWM, no stall


region.

8/25/2023 CAN Protocol 43 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Gen 5 / CM only: This sets the minimum


time the Continuous Variable PWM
Continuous PWM
248 Unsigned Integer Method will stay at a given PWM
Dwell Time
frequency before transitioning. Measured
in counts of 3 ms.

CAN Configuration
Address Name Format Description
This parameter allows the user to choose
their own set of contiguous CAN message
identifiers starting with the value in CAN ID
Offset. This offset covers a range of 0 –
0x7C0. The default offset is 0x0A0. The
default range is 0x0A0 – 0x0CF. This feature
141 CAN ID Offset Unsigned integer is especially useful when there are more than
one controller on the same CAN network.
While setting base address for a controller, it
must be made sure that the address range for
controllers does not contain overlapping
addresses.
This parameter allows switching between
CAN standard and extended message
CAN Extended
144 Boolean identifiers.
Message Identifier
0 = Standard CAN Messages
1 = Extended CAN Messages
This parameter allows switching between
extended message identifiers with or
CAN J1939 Option
171 Boolean without SAE J1939 format.
Active
0 = J1939 formatting is not active
1 = J1939 formatting is active
In order to use CAN communication, the
CAN bus needs to have a termination
resistor. The PM family inverters are
equipped with a user configurable
resistor which is activated through this
parameter.
0 = Term. Resistor not active
CAN Term
145 Boolean 1 = Term. Resistor active
Resistor Present
If CAN Terminator Resistor is
deactivated, it may be necessary to use
the GUI interface only10 since CAN
communication may fail without a
terminator resistor. The RM inverters do
not have this feature and thus this
parameter has no effect on the CAN bus.

10
Please refer to the document “Programming EEPROM Parameters using GUI”.
8/25/2023 CAN Protocol 44 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

The parameter enables CAN Command


Timeout feature. The CAN Timeout
feature if enabled will generate a fault if
the CAN Command Message is not
CAN Command
146 Boolean received within the time set by CAN
Message Active
Timeout parameter. It is recommended
that this feature be enabled.
0 = The CAN Timeout feature is disabled.
1 = The CAN Timeout feature is enabled.
The CAN Bus bit rate can be changed
using this parameter. However, changing
this parameter requires a power reset on
controller since bus speed is setup only
at the initialization of CAN modules. Also,
The parameter is restricted to valid baud
147 CAN Bit Rate Unsigned integer
rates. The 4 options for valid baud rate
are:
125 = 125Kbps
250 = 250 Kbps
500 = 500 Kbps
1000 = 1Mbps
This parameter is used to enable/disable
CAN Broadcast Messages. Each bit
represents a CAN Message broadcast
status as follows:

CAN Active 0 = CAN Messages broadcast disabled


148 Messages Lo Unsigned integer 1 = CAN Message broadcast enabled
Word (Default)

Please refer to the table of CAN


Broadcast Messages in section 2.1 for
details on how to enable/disable each
message.
This parameter can be used to disable
individual CAN mailboxes. This
CAN Active
237 Unsigned integer parameter should not normally be used
Messages Hi Word
and the default value of 0xFFFF should
be used.
This parameter is used to enable/disable
the broadcast of the diagnostic data.
0 = CAN Diagnostic Data broadcast
disabled
CAN Diagnostic
1 = CAN Diagnostic Data broadcast
158 Data Transmit Boolean
enabled (Default)
Active
Please refer to the document, CAN
Diagnostic Data, for more details on this
feature.

8/25/2023 CAN Protocol 45 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

1 = DIN1 digital input is taken into


consideration and the inverter will
only be enabled if both DIN1 and
CAN Inverter
inverter command are active. If
159 Enable Switch Boolean
either one is inactive, the inverter
Active
will be disabled.
0 = DIN1 will have no effect on enabling
or disabling the inverter (Default)
This parameter sets how long before the
CAN timeout error is set. The timeout is
only active if the CAN Command
172 CAN Timeout Unsigned integer Message Active is set to 1. The time is
set in counts of 3ms. So for example
setting a value of 333 will give a timeout
time of 999 msd.
0 = OBD2 Support is disabled
177 CAN OBD2 Enable Boolean 1 – 7 = OBD2 Support is enabled with
the address offset defined by the value.
0 = BMS CAN Message Torque Limiting
CAN BMS Limit is disabled.
178 Boolean
Enable 1 = BMS CAN Message Torque Limiting
is enabled.
0 = disable slave mode
CAN Slave Cmd
233 Unsigned Integer 0x22 thru 0x7FD enables Slave mode
ID
CAN message output.
0 = Direction command of Slave
controller is the same as the Master.
234 CAN Slave Dir Unsigned Integer
1 = Direction command of Slave
controller is the opposite of the Master.
Sets the broadcast rate in ms of
messages that are in the Fast group. If
CAN Fast Msg
235 Unsigned Integer set to 0 will disable all Fast group
Rate
messages. Implemented in version
2025.
Sets the broadcast rate in ms of
messages that are in the Slow group. If
CAN Slow Msg
236 Unsigned Integer set to 0 will disable all Fast group
Rate
messages. Implemented in version
2025.
Gen 5 / CM only: The value of the
Debounce Counter at which the
CAN Debounce
238 Unsigned Integer controller will declare a fault.
Counter Max
If this EEPROM parameter is set to 0 it
will disable the rolling counter function.
Gen 5 / CM only: The number of counts
CAN Debounce Up that the Debounce Counter will increment
239 Unsigned Integer
Count when a Rolling Counter error has been
flagged.
Gen 5 / CM only: The number of counts
CAN Debounce that the Debounce Counter will
240 Unsigned Integer
Down Count decrement when a correct Rolling Count
message has been received.

8/25/2023 CAN Protocol 46 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.3 Current
Address Name Format Description
This parameter sets the Q-axis current
100 Iq Limit Current
limit.
This parameter sets the D-axis current
101 Id Limit Current
limit.
107 Ia Offset EEPROM The offset values are in ADC counts.
108 Ib Offset EEPROM Each offset should be set to 2048 which
ADC Count is the 0-Amps mid-point. These do not
109 Ic Offset EEPROM normally need to be calibrated. They
are auto-calibrated on most inverters.

2.3.4.4 Voltage & Flux


Address Name Format Description
This parameter sets the over-voltage limit
to protect the unit. This limit should be
102 DC Voltage Limit High Voltage set based on total voltage provided by
the power supply/battery pack. This
parameter does not generate any faults.
This is the hysteresis value used to bring
the inverter out of the over-voltage
DC Voltage
103 High Voltage condition. Most of the time, the default
Hysteresis
value is sufficient and this value seldom
needs to be changed.
This parameter sets the under-voltage
limit. This limit should be set based on
total voltage provided by the power
DC Under-voltage
104 High Voltage supply/battery pack. A fault is generated
Limit
when the voltage drops below this limit.
To disable the under-voltage fault, set
this limit to 0.
This parameter sets the back EMF (flux)
constant for the motor. It will
automatically default to the correct value
Vehicle Flux
106 Flux when the motor type is changed. Most of
Command
the time, the default value is sufficient
and this value seldom needs to be
changed.

8/25/2023 CAN Protocol 47 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.5 Temperature
Address Name Format Description
This parameter sets the Inverter
temperature limit. The temperature is set in
Inverter Over- degrees Celsius times 10 (85°C is set as
112 Temperature
Temperature 850). If the temperature exceeds this value
then the inverter will turn off and declare a
fault.
This parameter sets the Motor temperature
limit (if the motor has a temperature
Motor Over- sensor). The temperature is set in degrees
113 Temperature
Temperature Celsius times 10 (150°C is set as 1500). If
the temperature exceeds this value then
the inverter will turn off and declare a fault.
Temperature threshold where the torque is
Zero Torque
114 Temperature zeo. This value should be less than
Temperature
Mtr_OverTemp_Limit_EEPROM_(C)_x_10.
This is the temperature threshold where
the full torque is operational. This
parameter affects the calculation of torque
capability. Based on the calculation of the
slope and offset of the line from
Full_Torque_Temp_EEPROM_(C)_x_10 to
Full Torque Zero_Torque_Temp_EEPROM_(C)_x_10,
115 Temperature
Temperature the new torque capability is reduced by a
factor of (slope * Motor Temperature +
offset). This parameters should be less
than
Zero_Torque_Temp_EEPROM_(C)_x_10
which should be less than
Mtr_OverTemp_Limit_EEPROM_(C)_x_10.
This parameter allows the user to select
either 100 Ohms or 1000 Ohms for RTD1
and RTD2 (Gen 3 units only).

203 RTD Selection Boolean Bit 0 = 0 -> RTD1 is 1000 Ohms


= 1 -> RTD1 is 100 Ohms

Bit 1 = 0 -> RTD2 is 1000 Ohms


= 1 -> RTD2 is 100 Ohms

8/25/2023 CAN Protocol 48 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.6 Accelerator Pedal11


Address Name Format Description
This parameter sets a limit below which
the torque command is 0. This should be
set to a value that is lower than the
lowest possible acceleration position but
120 ACCEL Pedal Low Low Voltage
higher than 0. If the accelerator input
goes below this value, torque command
is set to 0, the inverter will turn off and
declare the ACCEL SHORTED fault.
This parameter sets a limit such that
between that limit and ACCEL Pedal
121 ACCEL Pedal Min Low Voltage Low, torque command is set to a
constant value set through REGEN
Torque Limit.
This parameter sets a limit such that
between that limit and ACCEL Pedal Min,
122 ACCEL Coast Low Low Voltage
torque command is linear from REGEN
Torque Limit to 0.
This parameter sets a limit such that
ACCEL Coast
123 between that limit and ACCEL Coast
High
Low, torque command is 0.
This parameter sets a limit such that
between that limit and ACCEL Coast
124 ACCEL Pedal Max Low Voltage High, torque command is linear from 0 to
Motor Torque Limit. Normally, this will be
the driving range.
This parameter sets a limit such that
between that limit and ACCEL Pedal
Max, torque command is set to a
constant value of Motor Torque Limit.
This should be set to a value that is
125 ACCEL Pedal High Low Voltage higher than the highest possible
acceleration position but less than 500. If
the accelerator input goes above this
value, torque command is set to 0, the
inverter will turn off and declare the
ACCEL OPEN fault.
This parameter determines if the pedal
increases in value as it is pressed or
behaves the other way around. If the
Accel Pedal
132 Boolean pedal increases in voltage as it is
Flipped
pressed use a value of 0 (not flipped). If
the pedal decreases in voltage as it is
pressed use a value of 1 (flipped).

11
Please refer to the document “Software User Manual” for more details.
8/25/2023 CAN Protocol 49 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.7 Torque12
Address Name Format Description
This parameter sets the upper limit of the
torque that can be commanded by the
controller in motoring mode. However, if
the current limit of the drive is reached
Motor Torque
129 Torque before the torque command has been
Limit
achieved the controller will limit on the
current first. If this happens the operator
will feel an additional amount of unused
pedal range at the top end.
This parameter sets the upper limit of
torque that is commanded when the
accelerator pedal is released. Normally this
value would be set to a small percentage
REGEN Torque of the available motor braking torque, to
130 Torque
Limit simulate engine braking. This value only
sets the torque limit when the pedal is
released with no brake applied. The torque
applied when the brake is active is set by a
separate parameter (Braking Torque Limit).
Braking Torque This parameter sets the amount of the
131 Torque
Limit torque applied when the brake is active.
This parameter sets the proportional gain
for the torque regulator. This is a times
10000 value. Multiply the value within the
164 Kp Torque Proportional Gain
valid range by 10000 before programming.
Input is restricted to a valid range as
indicated in the format table.
Integral gain for the torque regulator. This
is a times 10000 value. Multiply the value
165 Ki Torque Integral Gain within the valid range by 10000 before
programming. Input is restricted to valid
range as indicated in the format table.
Derivative gain for the torque regulator.
This is a times 100 value. Multiply the
166 Kd Torque Derivative Gain value within the valid range by 100 before
programming. Input is restricted to valid
range as indicated in the format table.
Low-pass filter gain for the torque
regulator. This is a times 10000 value.
Low-Pass Filter Multiply the value within the valid range by
167 Klp Torque
Gain 10000 before programming. Input is
restricted to valid range as indicated in the
format table.

12
Please refer to the document “Software User Manual” for more details.
8/25/2023 CAN Protocol 50 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

This parameter sets the filtering for the


torque command. During filtering, the
change in torque command is limited to
168 Torque Rate Limit Torque this value. The smaller this value is the
slower the ramp for the torque command
will be and vice versa. This parameter is
limited between 0.1 and 250 Nm.

8/25/2023 CAN Protocol 51 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.8 Speed13
Address Name Format Description
This parameter sets the over-speed
value for the motor. If motor speed
111 Motor Over-speed Angular Velocity exceeds this value, inverter will turn off
and declare the MOTOR OVERSPEED
fault.
The parameter sets the maximum
allowable speed. If the speed is above
128 Max Speed Angular Velocity
this value the torque command will be
reduced to zero.
The parameters sets at which the
REGEN Fade
126 Angular Velocity amount of REGEN torque available is
Speed
reduced.
The parameter sets the speed at which
the maximum torque command is
127 Break Speed Angular Velocity
reduced to compensate for a reduction of
available torque due to field weakening.
Proportional gain for the speed regulator.
160 Kp Speed Proportional Gain Input is restricted to valid range as
indicated in the format table.
Integral gain for the speed regulator.
161 Ki Speed Integral Gain Input is restricted to valid range as
indicated in the format table.
Derivative gain for the speed regulator.
162 Kd Speed Derivative Gain Input is restricted to valid range as
indicated in the format table.
Low-pass filter gain for the speed
Low-Pass Filter
163 Klp Speed regulator. Input is restricted to valid
Gain
range as indicated in the format table.
This parameter sets the filtering for the
speed command. During filtering, the
change in speed command is limited to
169 Speed Rate Limit Speed this value. The smaller this value is the
slower the ramp for the speed command
will be and vice versa. This parameter is
limited between 100 and 5100 RPM.

13
Please refer to the document “Software User Manual” for more details.
8/25/2023 CAN Protocol 52 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.9 Shudder Compensation14


Address Name Format Description
0: Shudder compensation feature is
Shudder
disabled.
187 Compensation Boolean
1: Shudder compensation feature is
Enable
enabled.
This parameter provides shudder
188 Kp Shudder Counts x 100 compensation gain. It is entered as a x
100 value.
This parameter provides maximum
189 TCLAMP Shudder Torque
compensation torque.
Shudder Filter This parameter provides the frequency
190 Frequency
Frequency value for the shudder filter.
The parameter provides a value such
Shudder Speed that from 0 speed to this value, the
191 Angular velocity
Fade shudder compensation begins to fade
from 0 to shudder torque, and vice versa.
The parameter provides the value at
Shudder Speed
192 Angular velocity which the shudder compensation begins
Low
to fade to 0.
Shudder Speed The parameter provides the value at
193 Angular velocity
High which the shudder compensation is 0.

14
Please refer to the document “Shudder Compensation Manual” for more details.
8/25/2023 CAN Protocol 53 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.10 Brake Pedal


Address Name Format Description
This parameter is used to switch mode
as follows:

0: Brake switch mode allows using brake


as a binary switch input. Also, this
mode activates the ‘Automatic
REGEN Torque Ramp Down’ feature
using the EEPROM Parameter
180 Brake Mode Boolean
REGEN Ramp Period.

1: Brake Pot mode allows using brake as


a variable input between 0 – 5 volts.
This mode activates the ‘Automatic
REGEN Torque Ramp Down’ feature
using EEPROM parameters from
address 181 – 184 below.
This parameter is used in Brake mode 1.
This parameter sets the lower limit of the
181 Brake Low Low Voltage
brake pot below which brake short fault is
set.
This parameter is used in Brake mode 1.
182 Brake Min Low Voltage This parameter sets the minimum limit for
calculating the braking torque.
This parameter is used in Brake mode 1.
183 Brake Max Low Voltage This parameter sets the maximum limit
for calculating the braking torque.
This parameter is used in Brake mode 1.
184 Brake High Low Voltage This parameter sets the high limit above
which brake open fault is set.
This parameter is used in Brake mode 0.
This value of time is entered in
REGEN Ramp (Counts x 0.001)
185 milliseconds. This is the time in which
Period sec
REGEN torque value ramps down to the
braking torque limit.
0: Brake pedal reads 0 V when
completely released and 5 V when
Brake Pedal
186 Boolean completely pressed.
Flipped
1: Brake pedal reads opposite to the
above.
This parameter decides if the brake input
should be ignored or not in VSM mode:
Brake Input
199 Boolean 0: Do not ignore brake input (process as
Bypassed
usual)
1: Ignore brake input (brake is
considered OFF)

8/25/2023 CAN Protocol 54 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.3.4.11 Reserved (for future use)


Address Name Format Suggested Category
153, 194-198,
Reserved Reserved For factory use only
200-201

8/25/2023 CAN Protocol 55 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

2.4 OBD2 Messages (available in 19B3 and after)

Cascadia Motion has added some OBD2 functionality to the CAN system.

The goal of this functionality is to allow the use of an OBD2 diagnostic tool. For
example a CAN to Bluetooth adapter can be used with an Android application
(e.g. Torque app).

Cascadia Motion has successfully used the OBDLink LX Bluetooth adapter with
the Torque app (https://torque-bhp.com/).

The inverter is utilizing the vehicle specific portion of the OBD2 protocol. To
access inverter information requires the use of Custom PID codes. All of the
items shown in the Memory View of the RMS GUI can be accessed via the
Custom PID codes.

To enable OBD2 set the following EEPROM parameter,


CAN_OBD2_Enable_EEPROM > 0 and less than 8. The value used provides an
offset. The default would be to set it to 1. The support for the Torque app (list of
Custom PID codes for the app) provided by Cascadia Motion assumes that the
value is set to 1. If multiple inverters exist on the CAN bus (or other devices) the
parameter can bet set to different values for each inverter to avoid a conflict
between two inverters.

The inverter CAN setup must be setup to be compatible both with other devices
on the CAN network (if any) as well as the CAN OBD2 device. Most OBD2
devices will support either 250k or 500k baud.

Each RMS GUI Memory View item is assigned a Custom PID. The PID used is
the Memory View address plus 0x1000. So for example Feedback Speed is at
memory view address 0x0097. The Custom PID to access the Feedback Speed
is at 0x1097.

The OBD2 implementation uses the Mode 22 for the Custom PID.

The OBD2 protocol and the implementation of it have certain CAN ID addresses.
The inverter will respond at the following CAN addresses:

Query at 0x7DF (general OBD2 receive address)


Query at device specific (what is normally used) at 0x7DF + value of
CAN_OBD2_Enable_EEPROM
Respond at 0x7E7 + value of CAN_OBD2_Enable_EEPROM
8/25/2023 CAN Protocol 56 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

The controller does not respond to DTC type enquiries. It only responds to the
enhanced data queries (mode 22h).

Cascadia Motion has created a spreadsheet of the available parameters for use
with the Torque app, please contact support for more information.

2.5 Orion BMS Support (available in 19B3 and after)

Cascadia Motion has added support for the Orion BMS (or other BMS that
transmits a compatible BMS message). The BMS CAN message will be used to
limit the maximum torque commands to a level that approximates the amount of
DC (battery) current that will be flowing.

The BMS CAN Message must be configured as follows:

CAN Message ID: 0x202 (514 decimal) – Can not be changed


CAN Message Format:
Byte 0 and Byte 1 contain the maximum discharge current in Amps
Byte 2 and Byte 3 contain the maximum charge current in Amps

Data format is Little Endian (Intel)

Currents can be transmitted as positive or negative numbers the code will


correctly interpret them as charging and discharging currents. In other words it
ignores the sign.

For example, 0x02 0x01 0x04 0x02 0x00 0x00 0x00 0x00 will yield a discharge
current limit of 258 A and charge current limit of 516 A.

It is up to the user to make sure that both the inverter and the BMS are at the
same CAN baud rate.

The Orion BMS Support can be enabled by using the EEPROM Parameter,
CAN_BMS_Limit_Enable_EEPROM. By setting this parameter to 1 the firmware
will begin accepting messages from the BMS.

To check to see if the inverter is receiving the BMS CAN message check the
parameter BMS_Limit_Msg_Status in the GUI. If the result is 1 then the
message is being received. If the controller stops receiving the CAN message
from the BMS then the result will be 0 after 1 second has elapsed.

8/25/2023 CAN Protocol 57 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

The BMS_Limit_Msg_Status flag is also available in the Internal States


Broadcast CAN message. Additionally in the Internal States message is a flag
indicating when the maximum torque level is being limited by the BMS.

The BMS torque limiting function does not use the inverter measured or
estimated DC current. It uses a simple equation to estimate the amount of
torque:

Maximum torque = DC bus voltage * DC Current Limit / speed

In this equation the speed is mechanical speed in rad/s and torque is in Nm. The
simple equation does not consider motor and inverter efficiency and thus will
have accuracy issues that vary with operating conditions. To prevent the
maximum torque from being excessively large the speed used in the above
equation has a lower limit (525rpm for 10 pole motor)

If the inverter is receiving a charge/discharge current limit that would result in a


reduced amount of available torque then it will begin to limit the maximum torque
available from the accelerator or brake pedal (VSM mode).
If the vehicle is operated at lower speeds and the battery current limits are
normal then the operator would not notice any effect. The maximum battery
current draw would always be low even at maximum torque command because
the motor speed is low.

If the motor speed is high and if the full accelerator application would exceed the
battery current limit then the maximum point of the accelerator would be reduced.
So even if the operator did not apply full throttle the operator would note that for a
given amount of throttle the amount of torque produced is reduced.

In CAN mode it will also limit the torque command coming from the CAN
command message. The BMS CAN Message will also limit the torque in speed
mode.

2.6 CAN Slave Operation (available in 19BB and after)

In some cases multiple controllers and motors are used in an electric vehicle
powertrain. In the case where two motors are used and both motors are
connected in such a way that they should operate at the same commanded
torque then it is possible to operate one of the controllers in a slave mode.

To enable Slave Operation the CAN_Slave_Cmd_ID_EEPROM parameter must


be set to CAN Command Address of the Slave Controller. This address is the
Slave Control CAN ID Offset plus 0x20 (32 decimal). The Slave CAN message
8/25/2023 CAN Protocol 58 of 68
7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

will be sent at a fixed rate of approximately 10ms regardless of the broadcast


rates set by the Fast and Slow CAN rate EEPROM parameters.

To disable the Slave CAN message from being sent set the
CAN_Slave_Cmd_ID_EEPROM value to be 0.

In this mode one controller, the Master, that decides what the torque command
is. The second controller is the Slave and will have the same torque command
as the Master.

The Slave controller can only be set to Torque mode and should be an identical
type of motor with the same motor setup (current, speed, torque limits). The
Slave controller must be in CAN mode.

If the Master controller is in Torque mode then the Slave controller will be sent
the same commanded torque. The Slave controller is sent the torque command
that the master is processing. However, the torque command does not contain
any shudder compensation. If the Master controller is in speed mode then the
Slave controller is sent the torque command that is being used in the internal
speed regulator.

The Slave controller will still respond to speed and temperature limits for the
motor that it is controlling. If the Orion BMS feature is enabled then the torque
limit of the master will take into account that the slave controller is consuming the
same amount of DC current.

In some installations that multiple motors the physical placement of the motors
dictates that the motors although turning in the same physical direction are
turning in opposite electrical directions. Thus from the point of view of the
controller it is necessary to have a Slave command that is commanding the
opposite direction. This can be handled using the CAN_Slave_Dir_EEPROM
parameter. With a setting of 0 the Slave controller will receive the same
commanded direction that the Master is operating in. With a setting of 1 the
Slave controller will receive a direction command that is opposite of the Master
controller.

The Master and Slave controller must be set to the same CAN baud rate and the
same Extended message setting.

It is recommended that the CAN_Command_Message_Active feature be used to


prevent an unsafe condition if the Slave controller were to stop receiving CAN
messages.

8/25/2023 CAN Protocol 59 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

To make sure that the Slave controller command message is being sent make
sure that the CAN_ACTIVE_MSGS_EEPROM has bit 22 set (this would be in the
high word).

2.7 Rolling Counter (available in Gen 5 and CM)

There could be failure modes where a CAN message can be retransmitted or lost
for a time. It is possible that a simple timeout on reception is not enough to
detect this error. To mitigate this issue a Rolling Counter is to be added to the
CAN Command Message.

The Rolling Counter is a U4 number that will be incremented from 0 to 15 and


repeat. The Rolling Counter value will be transmitted by the system controller to
the inverter.

At power on the inverter will not know what the correct rolling counter value is.
The first received CAN Command message will set the Rolling Counter current
value to the received value plus one.

When a Command Message is received the Rolling Counter current value will be
set to the received value plus one regardless of whether the received Rolling
Counter value is correct or not.

The inverter will check the Rolling Counter for validity. If an error has occurred,
then it will flag that an incorrect rolling counter value has been received.

Each time an error has been received then it will increment a Debounce Counter.
The Debounce Counter is incremented by the Up Count Value. Each time that a
correct Rolling Counter value is received the Debounce Counter will be
decremented by a Down Count value. The Debounce Counter minimum value is
limited to 0.

If the Debounce Counter reaches a Debounce Counter Max value then a fault will
be triggered and the inverter will be disabled. The Debounce Counter will be
held at the Debounce Counter Max value even if more faults occur.

The Fault triggered by this Debounce Counter will be the already existing CAN
Command Message Lost fault, bit 11 of Run Faults.

When faults are cleared (through the GUI or CAN) the Rolling Counter and the
Debounce Counter will be reset to their power on values.

The table below shows the EEPROM parameters associated with this feature.

8/25/2023 CAN Protocol 60 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

EEPROM Parameter GUI CAN Description


Addr Addr

CAN_Debounce_Counter_Max_EEPROM 0x1B8 0x0EE The value of the Debounce


(default value is 20) Counter at which the
controller will declare a
fault.
If this EEPROM parameter is
set to 0 it will disable the
rolling counter function.
CAN_Debounce_Up_Count_EEPROM 0x1B9 0x0EF The number of counts that
(default value is 5) the Debounce Counter will
increment when a Rolling
Counter error has been
flagged.
CAN_Debounce_Down_Count_EEPROM 0x19A 0x0F0 The number of counts that
(default value is 3) the Debounce Counter will
decrement when a correct
Rolling Count message has
been received.

CAN Command Message Modification

The existing CAN Command message will be modified with the addition of a
Rolling Counter value as shown in bold below.

Byte 0 Byte 2 Byte 4 Byte 5 Byte 5 Bit Byte 5 Byte 5 Byte 6


and Byte and Byte Bit 0 1 Bit 2 Bit 4-7 and
1 3 Byte 7
Torque Speed Direction Inverter Inverter Speed Rolling Torque
Command Command Enable Discharge Mode Counter Limit
Override

CAN Status Message Modification

The Status message is modified to provide information about the currently


expected Rolling Counter value. The CAN message details are provided in the
section of this document that describes the Internal States message.

GUI Monitoring

8/25/2023 CAN Protocol 61 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

It is possible to monitor the current state of the Rolling Counter using the RMS
GUI.

GUI Monitor Parameter GUI Description


Addr
CAN_Rolling_Count_Flag 0x9D Will flag when a Rolling Counter error has
occurred. Will clear when a correct message
has been received.
CAN_Debounce_Count 0x9E Current value of the Debounce Counter

8/25/2023 CAN Protocol 62 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Examples

Below are several examples of what would happen with various received Rolling
Counter values. The example assumes that the default EEPROM values are
used.

Rolling Counter Value Received


Msg 1 Msg 2 Msg 3 Msg 4 Msg 5 Msg 6 Results
0 1 2 3 4 5 Rolling Counter is good, Debounce
Counter = 0, no fault
0 2 3 4 5 6 One missed message, Debounce
counter reached 5, but then
decremented back to 0, no fault
0 2 4 5 6 7 Two missed (+10), 3 correct (-9)
Debounce Counter = 1, no fault
0 1 3 5 7 9 Four missed (+20), fault is declared

8/25/2023 CAN Protocol 63 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Revision History
Responsible
Version Description of Versions / Changes Date
Party
0.1 Initial version Chris Brune 9/30/2009
• Moved Inverter Command Mode (CAN Mode Type)
and Inverter Run Mode from 0x0C0 – Command
0.2 Azam Khan 11/17/2009
Message to 0x0AA – Internal States
• Added more EEPROM parameters.
• For Parameter Messages, changed the range of
General and User EEPROM parameters from 1 – 99
and 100 – 500 to 0 – 99 and 100 – 499 respectively.
• Added a broadcast rate of 5 msec for the command
0.3 Azam Khan 11/30/2009
message (0x0C0).
• Added messages 105, 106, and 145
• Changed messages 110 and 141 to be reserved for
future use.
• Changed message 104 to “Reserved” for future use.
• Changed Message 141 to “CAN ID Offset” and added
its description in Broadcast Messages section and
0.4 Azam Khan 12/02/2009
also in System Configuration table.
• Added message 146 as “Restricted” for factory use
only.
• Added a new address 147 for CAN Bit Rate in table
“System Configuration” for Parameter Messages.
0.5 Azam Khan 01/25/2010
• Updated the description column for Motor Parameter
Set to add more motor types.
• Added an example on the use of little-endian format
0.6 Azam Khan 01/27/2010
for CAN data bytes
• Added a new address 113 for Motor Over-
temperature in table Fault Limits for Parameter
Messages.
0.7 Azam Khan 02/18/2010
• Added Motor Temperature to the broadcast message
0x0A2.
• Added speed regulator gains
• Added Speed Regulator Gains (section 2.3.4.6)
• Updated section 1.2 with the formats of Speed
0.8 Regulator Gains. Azam Khan 02/22/2010
• Corrected the description for Fault Clear in section
2.3.3.
• Added a new address 148 for CAN Active Messages
Word in System Configuration table in Parameter
Messages section.
0.9 • Updated section 2.1 Broadcast Messages with Azam Khan 03/24/2010
details on how to enable/disable broadcast
messages.
• Added Power-on Timer to the broadcast msg 0x0AC.

8/25/2023 CAN Protocol 64 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

• Updated description for Digital Input Status in


Broadcast Messages (Message ID 0x0A4)
1.0 • Added a new address 149 for Key Switch Mode in Azam Khan 04/14/2010
System Configuration table in Parameter Messages
section.
• Added a new address 170 for Pre-charge Output in
1.1 System Configuration table in Parameter Messages Azam Khan 04/26/2010
section.
• Added more description on how to disable CAN
1.2 broadcast messages in section “2.1 Broadcast Azam Khan 04/27/2010
Messages”.
• Added Delta Resolver Filtered to the broadcast
message 0x0A5.
• Added a new broadcast message 0x0AD to send
Modulation Index and Flux Weakening Output
1.3 Azam Khan 06/29/2010
information.
• Added Inverter Enable State and Direction Command
to byte 6 and 7 respectively, to the broadcast
message 0x0AA.
• Added Id- and Iq-commands to the broadcast
message 0x0AD.
1.4 Azam Khan 08/10/2010
• Updated the format for modulation index in message
0x0AD.
• Changed the description and range for parameters
1.5 Azam Khan 11/24/2010
with the format, Angle.
• Rearranged EEPROM parameter sections into
categories based on the type of parameters.
1.6 Azam Khan 12/1/2010
• Described CAN configuration in more detail and also
added it to the introduction section.
• Added two more parameters in section CAN
Configuration:
- CAN Extended Message Identfiers
- CAN J1939 Option Active
1.7 • Added two new EEPROM parameter sections: Azam Khan 1/19/2011
- Shudder compensation
- Brake Pedal
• Updated the format table for Kp, Ki, Kd, and Klp
gains.
• In section 2.3.1, changed the number of data bytes
from 4 bytes (4, 5, 6, 7) to 2 bytes (4, 5).
1.8 Azam Khan 3/15/2011
• Added a new section on “CAN Diagnostics
Parameter Overview” in section 1.
• Corrected the example on page 10 for the direction
1.9 command which is supposed to be on Byte 4 and Azam Khan 4/4/2011
Inverter command on Byte 5.

8/25/2023 CAN Protocol 65 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

• Updated section 1.3, CAN Format, to elaborate CAN


command using example values.
• Updated section 2.1, Broadcast Messages, Message
0xAC to show the correct resolution for the Power on
2.0 Azam Khan 6/1/2011
Timer.
• Added description for several EEPROM parameters.
• Clarified that the CAN Command Message must be
broadcast every 500 msec or faster.
2.1 • Added a new section 1.5 for the CAN Database file. Azam Khan 6/20/2011
• Added Resolver PWM Delay Command and Gamma
Adjust GUI Command to provide the Resolver
Calibration Process through CAN.
2.2 • Updated section 2.3.4 EEPROM Parameters on how Azam Khan 9/11/2011
EEPROM parameters are programmed.
• Added Inverter Enable Lockout bit to message ID
0x0AA in section 2.1, Broadcast Messages.
• Added a new torque parameter, ‘Torque Rate Limit’
2.3 Azam Khan 12/07/2011
that controls the ramp rate for torque command.
• Added two new messages 0xAE (Firmware
information) and 0xAF (diagnostic data).
• Added a new parameter CAN Diag Data Tx Active
2.4 Azam Khan 9/6/2012
that controls the broadcast of diagnostic data.
• Updated section 2.1 to show all faults with different
assignment views.
• Added the “discharge” command to the heartbeat
2.5 Azam Khan 11/5/2012
command message.
• Updated section 1.1: Added a new EEPROM
parameter CAN Inverter Enable Switch EEPROM.
• Added a new section 2.2.1, Inverter Enable Safety
2.6 Options Azam Khan 12/5/2012
• Updated section 2.3.4.3, CAN Configuration for the
new EEPROM parameters, CAN Inverter Enable
Switch EEPROM.
• SWRP 1805
2.7 • Updated broadcast message 0x0AB for the two new Azam Khan 12/13/2012
faults, “Resolver Not Connected” and “Inverter
Discharge Active”.
• Added description regarding the limited J1939 CAN
2.8 Azam Khan 02/05/2013
Messaging option in section 1.1.
• Updated section 2.2.1 Inverter Enable Safety Options
2.9 with the safety feature “Sudden Reversal of the Azam Khan 6/21/2013
Direction Command”.
• Added CAN message IDs in extended and J1939
3.0 Azam Khan 7/8/2013
format.
• Updated section, Command Parameter, for issuing
relay commands (Address 1). This change in the
3.1 Azam Khan 10/22/2013
method of controlling relays is effective for firmware
release 1909 and later.

8/25/2023 CAN Protocol 66 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

• Added a new section 2.2.2 to provide example to the


user regarding an example of CAN message
sequence.
• Added section 2.2.3 which explains the sign
3.2 Azam Khan 11/07/2013
convention for torque and speed commands.
• Highlighted EEPROM parameters that will take effect
immediately as opposed to the parameters that take
effect after power cycle.
Updated the section, 1.4 Data Formats to cover each
3.3 Azam Khan 04/02/2014
data type to its full range.
Corrected the CAN byte numbers for Run Faults to be 4,
3.4 Azam Khan 04/15/2014
5, 6, and 7 and adjusted bit numbers accordingly.
Corrected the value of -10 Nm to be (255x256) + 156
3.5 Azam Khan 07/28/2014
instead of (255x256) + 246 (which is equal to -1 Nm).
Removed the references to the GUI addresses. GUI
addresses are correct in the defsyms files and may
3.6 Azam Khan 8/12/2014
change based on the availability of memory. Mentioning
these addresses in the documentation is redundant.
Added CAN Timeout count EEPROM parameter
(implemented in firmware 1935). Clarification added to
3.7 Chris Brune 12/12/2014
the command message formatting. Added some
clarification to the parameter message.
Updated the Internal States Message (0xAA) to show the
3.8 Inverter Active Discharge state parameter (byte 4, bits 5 Chris Brune 3/9/2015
thru 7).
Corrected issue with the number of relay outputs.
Added information about Commanded Torque Limit.
3.9 Corrected information about sign of Speed command. Chris Brune 8/26/2015
Moved Motor Temperature foldback parameters to the
Temperature section.
Added reporting of DIN7 and DIN8 and Relays 5 and 6,
4.0 Chris Brune 8/28/2015
active in software version 1954
Changed 0xAA message to be transmitted every 10ms
4.1 instead of 100ms (implemented in software version Chris Brune 11/5/2015
1958).
Updated 0xA7 to indicate that message shows VAB and
4.2 VBC when the inverter is disabled and Vd and Vq when Chris Brune 12/6/2016
the inverter is enabled.
Changed the analog input message (0xA3) to contain all
4.3 Chris Brune 1/3/2017
6 analog inputs, starting with firmware 1995.
Clarified that OBD2 support is upcoming. Added several
4.4 EEPROM parameter messages with support starting in Chris Brune 1/22/2017
1998 version.
Additional Updates to the OBD2 section. Added section
4.5 Chris Brune 7/3/2017
about the Orion BMS.
Added Speed Mode Enable bit description. Modified
4.6 document to reflect more generically RM and PM Chris Brune 1/9/2018
controllers. General clarifications.

8/25/2023 CAN Protocol 67 of 68


7929 SW Burns Way Phone: 503 344-5085
Suite F
Wilsonville, OR [email protected]

Updated BMS support. Updated Internal States


message to show BMS support status bits. Update
4.7 Chris Brune 5/3/2018
OBD2 to show active support in main code.
Add new EEPROM parameters for OBD2 and BMS.
4.8 Added Slave Mode documentation. Chris Brune 8/10/2018
4.9 Added information about Slave Mode direction. Chris Brune 9/12/2018
Updated formatting for Cascadia Motion. Clarification of
5.0 CAN timeout feature. Updated fault code for Hardware Chris Brune 12/6/2019
over voltage fault. General cleanup of wording.
Added documentation about fast/slow CAN message
rates. Added clarification about rate of Slave Command.
5.1 Chris Brune 3/18/2020
Clarified CAN Active Messages parameters. Added
separate Parameter address for the Hi word.
Corrected broadcast rate description for several
5.2 Chris Brune 7/22/2020
messages.
Add information about Gen 5 / L100 specific messaging.
Add information about rolling counter available on Gen 5
5.3 / L100. Chris Brune 11/18/2020
Add information about new Gen 5 / L100 EEPROM
parameters.
Add information on new fast CAN broadcast message.
5.4 Chris Brune 11/24/2020
Update limiter flags also available on Gen 3 software.
Changed references to L100 to CM. The L100 has been
renamed the CM200. The CM200 is part of the CM
family.
5.5 Chris Brune 3/23/2021
Corrected issues with the J1939 messaging explanation.
Added information of Gen 5 / CM CAN diagnostic
features.
5.6 Added Start Mode Active to Status Message. Chris Brune 5/5/2021
Clarified and added Gen 3/Gen 5 Fault bit definitions.
5.7 Chris Brune 8/18/2021
Clarified minimum fast/slow CAN message update rate.
Added information about Torque Command being a
feedforward when in speed mode.
Added new feature information about Speed Command
5.8 Chris Brune 12/9/2021
providing a speed limitation in Torque mode.
Added section Parameter command for Shudder
Compensation.
Added section Parameter command for Diag. Data
5.9 Andrew Louie 2/21/2022
trigger.
Added Stall Burst Model information.
Andrew Louie &
6.0 Added Self-Sense information. 1/17/2023
Christian Tigges
Added information on updates to variable PWM.
6.1 Updated information about BMS CAN Message Chris Brune 2/24/2023
Fix error in J1939 Addresses. Clarify J1939 Source
6.2 Address. Clarify use of Regen Fade Speed with speed Chris Brune 8/25/2023
mode.

8/25/2023 CAN Protocol 68 of 68

You might also like