Motor identification#

The motor identification command performs automatic measurement of the key motor parameters.

For best results, the command should be executed at the same supply voltage as is expected during normal operation of the drive.

Invocation#

Motor identification is commenced by invoking the standard Cyphal service uavcan.node.ExecuteCommand with command code 2 (two). The parameter string specifies which motor parameters are to be measured (see below); if empty, Telega will attempt to choose the correct action automatically. If the command execution is commenced, the service call will return success immediately, and the process will continue running asynchronously.

The command will be rejected unless the current state is standby. The command shall not be invoked with parameter string values that are not explicitly documented; otherwise, damage to the hardware may result.

Mode selection#

Measured parameter(s)

Parameter string

Requirements

\(R\)

R

\(R\), \(L_{dq}\)

RL

\(R\), \(L_{dq}\), \(\phi\)

RLF

Motor shaft shall be disconnected from any load.

Autodetect

(empty)

Motor shaft shall be disconnected from any load.

Examples#

Using Cyphal Yakut command line tool (assuming the node-ID of the drive is 125):

1# Commence resistance & inductance identification:
2y cmd 125 2 RL
3# Wait for the command to finish, then save the results into the non-volatile memory:
4y cmd 125 store_persistent_states

Outcome#

Upon successful completion, the register values corresponding to the identified parameters will be updated and the standby command will be executed. The updated register values will not be committed to the non-volatile storage until the device is explicitly instructed to do so.

Upon failure, the fault command will be invoked with a runtime error. The code of the runtime error is computed as \(256 \times i + e\), where \(i\) is the sequential number of the measurement subtask starting from 1 (e.g., resistance measurement), and \(e\) is the subtask exit code, which may take the following values:

  • 255 – invalid parameters passed to the subtask.

  • 254 – measurement failed (low confidence, motor damaged).

  • any other value – unspecified.

For cases where the mode is selected explicitly, the meaning of the runtime error codes is as follows:

Parameter string(s)

Runtime error

Description

R, RL, RLF

511

Resistance measurement failed due to invalid parameters

RL, RLF

767

Inductance measurement failed due to invalid parameters

RLF

1023

Flux linkage measurement failed due to invalid parameters

R, RL, RLF

510

Measured resistance is invalid

RL, RLF

766

Measured inductance is invalid

RLF

1022

Measured flux linkage is invalid

RLF

769

Flux linkage measurement failed because rotor stall could not be detected

For other error codes, please reach out to Zubax Robotics.

System status register#

This command is indicated via the system status register using the following schema.

{ "motor_id": { "p": PARAMETER_STRING } }

PARAMETER_STRING is the parameter string value passed to the command.