Status requests¶
Data the host asks for with a remote frame (RTR bit set, no data); the driver answers with a data frame with the same command ID. And the heartbeat, which the driver sends on its own.
Send_Respond_Ping¶
ID 10host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Ping()
Asks the driver to answer with an empty frame, to see that it is on the bus.
The frame (0 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
The driver answers with Send_Respond_Ping.
Send_Respond_Temperature¶
ID 23host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Temperature()
Asks for the thermistor temperature. Meaningful only with the thermistor enabled (#Term 1).
The frame (2 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-1 | temperature | signed 16-bit | °C |
The driver answers with Send_Respond_Temperature.
Send_Respond_Voltage¶
ID 24host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Voltage()
Asks for the supply voltage.
The frame (2 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-1 | voltage | unsigned 16-bit | mV |
The driver answers with Send_Respond_Voltage.
Send_Respond_Device_Info¶
ID 25host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Device_Info()
Asks for the driver's identity: hardware version and batch date from the EEPROM, the serial number, and the firmware release (from firmware 105 on this is the build's own version; before, a value from the EEPROM). This firmware does not read the serial number back from the EEPROM at power-up: it reports 1 until #SERNUM sets it.
The frame (7 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0 | HARDWARE_VERSION | unsigned 8-bit | PCB revision | |
| 1 | BATCH_DATE | unsigned 8-bit | production batch | |
| 2 | SOFTWARE_VERSION | unsigned 8-bit | firmware release, e.g. 108 | |
| 3-6 | SERIAL_NUMBER | unsigned 32-bit | serial number as held in RAM: 1 after a power-up |
The driver answers with Send_Respond_Device_Info.
Send_Respond_State_of_Errors¶
ID 26host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_State_of_Errors()
Asks for every error flag and the calibrated, activated and watchdog states.
The frame (2 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0 | 7 | error | bit | any error is active |
| 0 | 6 | temperature_error | bit | motor over the temperature limit |
| 0 | 5 | encoder_error | bit | the encoder reports no magnet (too weak a field) |
| 0 | 4 | vbus_error | bit | supply voltage outside the limits |
| 0 | 3 | driver_error | bit | reserved; never set by this firmware (STEPFOC does not read a fault output of its driver stage) |
| 0 | 2 | velocity_error | bit | speed above 30,000,000 ticks/s, a fixed threshold (not #Vlimit) |
| 0 | 1 | current_error | bit | reserved; never set by this firmware |
| 0 | 0 | estop_error | bit | Send_ESTOP was received |
| 1 | 7 | calibrated | bit | the motor is calibrated |
| 1 | 6 | activated | bit | the controller is activated |
| 1 | 5 | watchdog_error | bit | the watchdog ran out |
The driver answers with Send_Respond_State_of_Errors.
Send_Respond_Iq_data¶
ID 27host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Iq_data()
Asks for the measured Iq current.
The frame (2 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-1 | current | signed 16-bit | mA |
The driver answers with Send_Respond_Iq_data.
Send_Respond_Encoder_data¶
ID 28host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Encoder_data()
Asks for the position and the filtered speed, as 32-bit values. Python attributes position and speed.
The frame (8 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-3 | position | signed 32-bit | encoder ticks | |
| 4-7 | speed | signed 32-bit | encoder ticks/s |
The driver answers with Send_Respond_Encoder_data.
Send_Respond_Kt¶
ID 33host → driver as a remote frame, driver → host as a data frameremote frame, 0 bytesPython: Send_Respond_Kt()
Asks for the torque constant Kt the driver uses. Added in firmware 105.
The frame (4 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
| 0-3 | Kt | float 32 | Nm/A |
The driver answers with Send_Respond_Kt.
Respond_Heartbeat¶
ID 9driver → host0 bytes
The frame the driver sends on its own at the heartbeat interval (Send_Heartbeat_Setup); empty. Off by default. Any other frame the driver sends resets the heartbeat timer, so a driver that answers motion commands at a high rate never sends a heartbeat.
The frame (0 bytes)
| Byte | Bit | Field | Type | Meaning |
|---|---|---|---|---|
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