System¶
Identity, saving, resetting, errors, the watchdog, the heartbeat and the settings.
Send_CAN_ID¶
ID 11host → driver1 bytesPython: Send_CAN_ID()
Gives the driver a new node ID, 0 to 13 (the firmware accepts up to 15, but the bootloader reserves 14 and 15: a driver on one of those cannot be updated over CAN). Saving the configuration (Send_Save_config) also writes the ID into the bootloader's board ID. The driver answers to the new ID at once; the ID is kept over a power cycle only after Send_Save_config.
1 bytes
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0 | ID | unsigned 8-bit | 0 to 13; 14 and 15 are accepted but reserved by the bootloader |
The driver does not answer this command.
Send_ESTOP¶
ID 0host → driver0 bytesPython: Send_ESTOP()
Stops the motor and raises the E-stop error, which stays until Send_Clear_Error.
The driver does not answer this command.
Send_Idle¶
ID 12host → driver0 bytesPython: Send_Idle()
Puts the driver in idle mode (the motor coasts or brakes, see Send_Settings).
The driver does not answer this command.
Send_Save_config¶
ID 13host → driver0 bytesPython: Send_Save_config()
Writes the current configuration (gains, limits, calibration, CAN ID, heartbeat, watchdog, gripper flag) to the EEPROM, and the CAN ID into the bootloader's board ID. The idle behaviour of Send_Settings and the current loop bandwidth are not kept. It also writes the serial number held in RAM, which is 1 after a power-up unless #SERNUM set it, over the stored one.
The driver does not answer this command.
Send_Reset¶
ID 14host → driver0 bytesPython: Send_Reset()
Resets the driver. From firmware 105 the reset lands in the bootloader, which waits 2 s for a flashing host and then starts the firmware again; this is how a firmware update begins.
The driver does not answer this command.
Send_Clear_Error¶
ID 1host → driver0 bytesPython: Send_Clear_Error()
Clears the error flags and goes to idle. An error whose cause is still present comes straight back. A calibration error is cleared only by calibrating. A gripper E-stop comes back until the E-stop bit of Send_gripper_data_pack is 0 again.
The driver does not answer this command.
Send_Watchdog¶
ID 15host → driver5 bytesPython: Send_Watchdog()
Sets the watchdog: when the time runs out the driver reports a watchdog error and stops. Every valid motion frame (Send_data_pack_1, Send_data_pack_PD, Send_data_pack_HALL, Send_gripper_data_pack) and every status request the driver answers resets it; the setting frames (gains, limits, Idle, Clear, Save, Settings and Send_Watchdog itself) do not. 0 turns it off (the default). The action byte is stored but not acted on by this firmware: the driver always stops into its idle behaviour. Send_Save_config keeps the watchdog, and a kept watchdog runs from power-up: a host that sends no motion frame or status request within the time finds the driver in watchdog error, and clears it with Send_Clear_Error.
5 bytes
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-3 | Time | unsigned 32-bit | ms; 0 = off | |
| 4 | Action | unsigned 8-bit | 0 idle, 1 hold, 2 brake (stored only) |
The driver does not answer this command.
Send_Heartbeat_Setup¶
ID 30host → driver4 bytesPython: Send_Heartbeat_Setup()
Sets the heartbeat interval in ms; 0 turns the heartbeat off (the default). Kept by Send_Save_config.
4 bytes
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-3 | Interval | unsigned 32-bit | ms; 0 = off |
Send_Settings¶
ID 35host → driver0 bytes
Sets boolean settings that have no command of their own: a mask byte says which settings the frame touches, a value byte gives their new values; settings outside the mask are left alone. Bit 0 is the idle behaviour: 1 brake (phases shorted), 0 coast. The setting is not kept by Send_Save_config: at power-up the driver brakes. Added in firmware 107. The Python library has no call for it yet.
2 bytes
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0 | Mask | unsigned 8-bit | bit 0 = write the idle behaviour | |
| 1 | Value | unsigned 8-bit | bit 0: 1 brake, 0 coast |
The driver does not answer this command.
Send_Cyclic_command¶
ID 29host → drivernot implemented
Reserved. The firmware has no handler for this ID and the Python library's call does nothing.
Comments
Found a mistake on this page? Edit it on GitHub · Report it · Get help · This page as Markdown · llms.txt · The whole manual as PDF