CAN Protocol (V6 - 2)
CAN Protocol (V6 - 2)
Suite F
Wilsonville, OR [email protected]
CAN Protocol
Revision 6.2
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
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 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:
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.
The CAN protocol provides a limited functionality for J1939 protocol with
the following fixed parameters:
Priority = 3 (001b)
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.
1.4 CAN Format to learn about how to send out a torque or a speed
command using the heartbeat command message.
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.
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]
125 = 125Kbps
250 = 250 Kbps (Default)
500 = 500 Kbps
1000 = 1Mbps
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.
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 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 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 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.
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.
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]
• Direction Command
o Data Byte 4 = 0 (Clockwise = Reverse)
o Data Byte 4 = 1 (Anticlockwise = Forward)
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]
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
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.
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]
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):
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.
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 6 controls the following messages but user should not disable any of
these messages:
Data Byte 7 controls the following messages but user should not disable any of
these messages:
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.
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
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
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
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.
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]
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.
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.
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
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.
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.
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.
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.
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]
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]
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.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).
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]
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]
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]
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.
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:
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.
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.
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.
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:
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 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.
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 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.
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).
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.
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.
The existing CAN Command message will be modified with the addition of a
Rolling Counter value as shown in bold below.
GUI Monitoring
It is possible to monitor the current state of the Rolling Counter using the RMS
GUI.
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.
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.