Introduction
CiA 402, alternatively referred to as DS 402 / Device Standard 402, is a device profile for drives and motion control defined by the CAN in Automation (CiA) organization. It specifies a universal interface and standardized behaviour for controlling electrical drives - such as servo drives, servo controllers, frequency converters and similar devices. As a "CANopen Device Profile", it is part of the CANopen protocol, but is also used in EtherCAT, POWERLINK and other application protocols such as TCP/IP. The CiA 402 device profile is specified in the IEC61800-7-201 standard as profile type 1 - CiA402 Drive Profile for power drive systems (PDS).
This section provides an overview of the central aspects of CiA 402, with a focus on the drive states / CiA 402 State Machine, the main control word (6040h) and status word (6041h), common operating modes (6060h) and a summary of other key standard objects in the object dictionary.
The CiA 402 State Machine
At the center of the CiA 402 profile is the state machine (PDS FSA, Power Drive System - Finite State Automat), which defines the permissible states and transitions of a drive. By defining permitted actions and required reactions in different operating states, the state machine ensures safe and predictable control of motion axes.
Main states
•Not Ready to Switch On: Initial state after switching on. The drive is not ready to execute movements.
•Switch On Disabled: Drive may not be enabled (e.g. after error or during initialization).
•Ready to Switch On: Internal checks completed; drive can be enabled.
•Switched On: Drive is ready for enable command.
•Operation Enabled: The drive can execute movement commands.
•Quick Stop Active: Quick Stop is activated, the drive stops as quickly as possible.
•Fault Reaction Active: The drive reacts to a detected fault - it carries out appropriate safety measures.
•Fault: A fault condition has been detected; the drive must be reset.
Transitions
State transitions are controlled by bits in the Controlword (6040h), which is sent to the device by the master. The drive reports back its current status via the statusword (6041h).

A detailed description can be found in the CiA 402 specification.
Controlword (6040h object)
The controlword is the central control object (index 6040h) with which the master controls the status and behavior of the drive. It is a 16-bit word, with each bit (or bit groups) triggering certain actions or requests on the drive, such as state changes or movement commands.
Bit meanings
Bit |
Bit Name |
Bit Name Description |
0 |
Switch On |
Requests the drive to be switched on |
1 |
Enable Voltage |
Enables the internal power supply |
2 |
Quick Stop |
Requests a quick stop of the movement |
3 |
Enable Operation |
Complete activation of the axis |
7 |
Fault reset |
Acknowledge/reset error |
8 |
Stop |
Stop movement without deactivating the drive |
9 |
Operation Mode Specific |
Is used in certain operating modes |
10 |
Reserved |
- |
11-15 |
Manufacturer-specific |
- |
The combination and time sequence of these bits determine exactly how the state machine switches between states. For example: To change from "Switch On Disabled" to "Operation Enabled", bits 0, 1 and 2 must be set, followed by bit 3.
Statusword (6041h object)
The statusword (index 6041h) is a 16-bit word that is sent from the drive to the master and signals the current status. By reading out the statusword, the master recognizes the current status of the drive in the CiA 402 state machine.
Bit meanings
Bit |
Bit Name |
Bit Name Description |
0 |
Ready to Switch On |
Drive is ready to switch on |
1 |
Switched On |
Drive is enabled |
2 |
Operation Enabled |
Drive is enabled for movements |
3 |
Fault |
Error is present |
4 |
Voltage enabled |
Internal voltage is present |
5 |
Quick Stop |
Quick Stop function is active |
6 |
Switch On Disabled |
Drive is deactivated |
7 |
Warning |
Warning present (no error) |
8 |
Manufacturer Specific |
*1) |
9 |
Remote |
|
10 |
target reached |
Position is within the target tolerance |
11 |
internal limit active |
Limit reached according to 607D objects |
12,13 |
Operation mode specific |
- |
14,15 |
Manufacturer specific |
- |
Note:
*1) MovingCap and Festo drives use this bit for the "Drive Moving" status.
Operating modes / Modes of operation (6060h object)
6060h Modes of Operation determines the operating mode in which the drive operates. Each mode supports a different control paradigm (e.g. position control, speed control, torque control).
Value (decimal) |
Mode Name |
Application |
-128 to -1 |
Manufacturer-specific mode |
Manufacturer-specific |
0 |
No mode assigned |
- |
1 |
Profile Position Mode |
Moves position with defined profile |
2 |
Velocity Mode |
(obsolete, usually not supported, see Mode 3) |
3 |
Profile Velocity Mode |
Drives speed with profile acceleration |
4 |
Profile Torque Mode |
Controls torque according to profile |
6 |
Homing mode |
Homing ("Home" position approach) |
7 |
Interpolated position mode |
Moves according to interpolated position points |
8 |
Cyclic Synchronous Position |
Synchronous position control (real-time) |
9 |
Cyclic Synchronous Velocity |
Synchronous speed control (real time) |
10 |
Cyclic Synchronous Torque |
Synchronous torque (real time) |
A servo drive usually only supports some of the operating modes according to CiA 402. Frequently available modes are
•1 = Profile Position Mode,
•3 = Profile Velocity Mode,
•6 = Homing Mode,
•8 = Cyclic Synchronous Position Mode.
The current mode can be read out with Modes of operation display (6061h).
Profile Position Mode
6060h = 1 Profile Position Mode (PPM) is one of the basic position control modes in CiA 402. In this mode, the drive moves its load to a target position along a movement profile. Parameters such as speed, acceleration and deceleration can be set, enabling smooth and controlled movements. The mode is suitable for point-to-point positioning, sequential movements or indexing tasks.
Sequence
1.Set Modes of operation (6060h) to 1 (Profile Position Mode).
2.Set target position (607Ah) and desired profile parameters.
3.Configure profile velocity (6081h), profile acceleration (6083h) and profile deceleration (6084h).
4.Start the movement with the Controlword (6040h) (e.g. by setting the new set-point bit in accordance with CiA 402).
5.Monitor statusword and position actual value (6064h) to confirm the processing.
Key standard objects for Profile Positioning
Index |
Name |
Name Description |
Type |
6060h |
Modes of operation |
Set to 1 for Profile Position Mode |
integer8 |
607Ah |
Target Position |
Target position |
integer32 |
6081h |
Profile Velocity |
Maximum permissible velocity |
unsigned32 |
6083h |
Profile Acceleration |
Acceleration rate |
unsigned32 |
6084h |
Profile Deceleration |
Deceleration rate |
unsigned32 |
6064h |
Position Actual Value |
Actual position |
integer32 |
6040h |
Controlword |
Trigger movement and manage status |
unsigned16 |
6041h |
Statusword |
Status feedback |
unsigned16 |
Optional / additional objects for positioning mode
Index |
Index Name |
Name Description |
Type |
60F2h |
Positioning option code |
Option for rotative (repetitive) position coordinates and positioning behavior |
unsigned16 |
6073h |
Max Current |
Limitation of the maximum current/torque/force |
unsigned16 |
607Dh.01h |
Min position limit |
Software position limit |
integer32 |
607Dh.01h |
Max position limit |
Software position limit |
integer32 |
Profile Velocity Mode
6060h = 3 Profile Velocity Mode (PVM) makes it possible to specify the axis speed directly, whereby profiled acceleration and deceleration ramps can be maintained. Typical applications include conveyor belts, fans or other systems in which a constant speed is required.
Sequence
1.Set Modes of operation (6060h) to 3 (Profile Velocity Mode).
2.Set target velocity (60FFh) and desired profile acceleration/deceleration (6083h/6084h).
3.Use Controlword (6040h) to trigger start, stop or speed changes.
4.Read out velocity actual value (606Ch) and statusword for monitoring.
Key standard objects for profile velocity
Index |
Velocity Index Name |
Name Description |
Type |
6060h |
Modes of Operation |
Set to 3 for Profile Velocity Mode |
integer8 |
60FFh |
Target Velocity |
Target velocity |
integer32 |
6083h |
Profile Acceleration |
Acceleration ramp |
unsigned32 |
6084h |
Profile Deceleration |
Deceleration ramp |
unsigned32 |
606Ch |
Velocity Actual Value |
Actual velocity |
integer32 |
6040h |
Controlword |
Control start/stop/hold |
unsigned16 |
6041h |
Statusword |
Feedback and status monitoring |
unsigned16 |
Parameter overview of basic parameters CiA 402 / Object Dictionary
General overview of the basic parameters that are relevant for drive control and monitoring in accordance with the operating modes described above.
Index |
Name |
Name Description |
Type |
6040h |
Controlword |
Control and status change (master → drive) |
unsigned16 |
6041h |
Statusword |
Status feedback (drive → master) |
unsigned16 |
6060h |
Modes of operation |
Sets the operating mode of the drive |
integer8 |
6061h |
Modes of Operation Display |
Current operating mode |
integer8 |
607Ah |
Target Position |
Target position for Profile Position Mode |
integer32 |
6064h |
Position Actual Value |
Position feedback |
integer32 |
606Ch |
Velocity Actual Value |
Velocity (actual value) |
integer32 |
6081h |
Profile Velocity |
Max. Velocity in profile position mode |
unsigned32 |
6083h |
Profile acceleration |
Acceleration ramp |
unsigned32 |
6084h |
Profile Deceleration |
Deceleration ramp |
unsigned32 |
60FFh |
Target Velocity |
Target velocity in profile Velocity Mode |
integer32 |
6098h |
Homing Method |
Selection of homing method |
integer8 |
607Dh.01h |
Min position limit |
Software position limit minimum |
integer32 |
607Dh.02h |
Max position limit |
Software position limit maximum |
integer32 |
6073h |
Max current |
Maximum Current/torque/force |
unsigned16 |
6075h |
Motor Rated Current |
Rated current for drive/motor in physical units, e.g. mA |
unsigned32 |
6078h |
Current Actual Value |
Actual motor current in 0.1% unit (1000 = 100%). Negative values possible for negative directions. |
integer16 |
Position scaling / user-defined units
Position scaling in CiA 402 combines configurable scaling parameters with fixed motor/encoder properties to convert internal position units (increments) into user-specific/technical units.
Motor/encoder system properties (608Fh)
•608Fh: Position encoder resolution
o608Fh.01 encoder_increments: Increments per motor rotation
o608Fh.02 motor_revolutions: Motor revolutions per encoder revolution
Example: For a 16-bit incremental encoder:
608Fh.01 = 65,536,
608Fh.02 = 1 (almost always 1, except if there is a gear between motor and encoder)
NOTE:
These values reflect hardware properties and should only be changed when changing hardware.
Configurable scaling (6091h and 6092h)
•6091h: Gear Ratio
o6091h.01h motor_revolutions: Number of motor revolutions
o6091h.02h shaft_revolutions Number of output revolutions
Example: 5 motor revolutions per 2 output revolutions →
6091h.01h = 5,
6091h.02h = 2
•6092h: Feed constant
o6092h.01h feed: Technical unit per output revolution (e.g. mm, μm)
o6092h.02h shaft_revolutions: Number of output revolutions
Example: Toothed belt axis with 100 mm per revolution, scale μm:
6092h.01h feed = 100,000,
6092h.02h = 1
Formulas for position scaling
Size |
Basic formula |
Calculation via CiA 402 objects |
Encoder resolution |
Encoder_resolution = encoder_increments / motor_rev |
608Fh.01h / 608Fh.02h |
Gear ratio |
Gear_ratio = motor_revolutions / shaft_revolutions |
6091h.01h / 6091h.02h |
Feed constant |
Feed_constant = feed / shaft_revolutions |
6092h.01h / 6092h.02h |
Internal position unit |
Pos_internal = Pos_user × Encoder_resolution × Gear_ratio / Feed_constant |
Pos_user × (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) / (6092h.01h / 6092h.02h) |
or: Pos_user × (608Fh.01h × 6091h.01h × 6092h.02h) / (608Fh.02h × 6091h.02h × 6092h.01h) |
||
Position as user size |
Pos_user = Pos_internal × Feed_constant / (Encoder_resolution × Gear_ratio) |
Pos_internal × (6092h.01h / 6092h.02h) / [ (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) ] |
or: Pos_internal × (608Fh.02h × 6091h.02h × 6092h.01h) / (608Fh.01h × 6091h.01h × 6092h.02h) |
Example
Given:
•Motor encoder = 65,536 increments per motor revolution
608Fh.01h = 65536,
608Fh.02h = 1
•Gear ratio: 1 output revolution per 5 motor revolutions (6091h.01h = 5, 6091h.02h = 1)
•Feed constant: 100 mm per output revolution (6092h.01h = 100, 6092h.02h = 1)
Calculated:
•User unit / user-defined unit per internal encoder increment
= (Feed constant) / (Gear ratio × Encoder resolution)
= (100 mm/rev) / (5 × 65,536 increments/rev)
= 0.00030517578125 [mm / increment]
Example:
Positioning to 80,000 internal increments
--> Pos_user = 80,000 × 0.00030517578125 ≈ 24.41 mm