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\), \(L_{dq}\) |
|
|
\(R\), \(L_{dq}\), \(\phi\) |
|
Motor shaft shall be disconnected from any load. |
Autodetect |
|
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 |
---|---|---|
|
511 |
Resistance measurement failed due to invalid parameters |
|
767 |
Inductance measurement failed due to invalid parameters |
|
1023 |
Flux linkage measurement failed due to invalid parameters |
|
510 |
Measured resistance is invalid |
|
766 |
Measured inductance is invalid |
|
1022 |
Measured flux linkage is invalid |
|
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.