File syn_cia402.c¶
FileList > proto > syn_cia402.c
Go to the source code of this file
CANopen CiA 402 Device Profile for Drives and Motion Control implementation.
#include "../util/syn_assert.h"#include "syn_cia402.h"#include <stdlib.h>#include <string.h>
Public Functions¶
| Type | Name |
|---|---|
| SYN_Status | syn_cia402_feed_feedback (SYN_CIA402_Axis * axis, int32_t pos_actual, int32_t vel_actual, int16_t torque_actual) Feed measured actual values (encoder position, velocity, torque) to axis. |
| uint16_t | syn_cia402_get_controlword (const SYN_CIA402_Axis * axis) Read current Controlword (Index 0x6040). |
| int8_t | syn_cia402_get_mode (const SYN_CIA402_Axis * axis) Get requested Mode of Operation (Index 0x6060). |
| int8_t | syn_cia402_get_mode_display (const SYN_CIA402_Axis * axis) Get active Mode of Operation Display (Index 0x6061). |
| SYN_CIA402_State | syn_cia402_get_state (const SYN_CIA402_Axis * axis) Get current FSM state. |
| uint16_t | syn_cia402_get_statusword (const SYN_CIA402_Axis * axis) Read current Statusword (Index 0x6041). |
| SYN_Status | syn_cia402_init (SYN_CIA402_Axis * axis, const SYN_CIA402_Config * cfg) Initialize CiA 402 Axis controller. |
| size_t | syn_cia402_populate_od (SYN_CANOpenODEntry * od_table, size_t max_entries, SYN_CIA402_Axis * axis) Populate a CANopen Object Dictionary table with standard CiA 402 objects. |
| SYN_Status | syn_cia402_report_actuals (SYN_CIA402_Axis * axis, int32_t pos_actual, int32_t vel_actual, int16_t torque_actual) Feed measured actual values alias for compatibility. |
| SYN_Status | syn_cia402_set_controlword (SYN_CIA402_Axis * axis, uint16_t cw) Set Controlword (Index 0x6040) from master / RPDO / SDO. |
| SYN_Status | syn_cia402_set_mode (SYN_CIA402_Axis * axis, int8_t mode) Request Mode of Operation (Index 0x6060). |
| SYN_Status | syn_cia402_set_target_position (SYN_CIA402_Axis * axis, int32_t pos) Set target position (Index 0x607A). |
| SYN_Status | syn_cia402_set_target_torque (SYN_CIA402_Axis * axis, int16_t torque) Set target torque (Index 0x6071). |
| SYN_Status | syn_cia402_set_target_velocity (SYN_CIA402_Axis * axis, int32_t vel) Set target velocity (Index 0x60FF). |
| SYN_Status | syn_cia402_step (SYN_CIA402_Axis * axis, uint32_t dt_us, SYN_CIA402_Setpoints * out_setpoints) Execute periodic CiA 402 control loop step in microseconds. |
| SYN_Status | syn_cia402_trigger_fault (SYN_CIA402_Axis * axis, uint16_t error_code) Trigger a drive fault and enter FAULT_REACTION_ACTIVE / FAULT state. |
| SYN_Status | syn_cia402_update (SYN_CIA402_Axis * axis, uint32_t dt_ms) Periodic motion update in milliseconds. |
Public Static Functions¶
| Type | Name |
|---|---|
| void | syn_cia402_eval_fsm (SYN_CIA402_Axis * axis) Evaluate CiA 402 Device Control State Machine transitions. |
| void | syn_cia402_update_statusword (SYN_CIA402_Axis * axis) Construct CANopen Statusword (0x6041) from current drive state. |
Public Functions Documentation¶
function syn_cia402_feed_feedback¶
Feed measured actual values (encoder position, velocity, torque) to axis.
SYN_Status syn_cia402_feed_feedback (
SYN_CIA402_Axis * axis,
int32_t pos_actual,
int32_t vel_actual,
int16_t torque_actual
)
Parameters:
axisAxis instance.pos_actualActual position (counts).vel_actualActual velocity (counts/s).torque_actualActual torque (0.1% rated).
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_get_controlword¶
Read current Controlword (Index 0x6040).
Parameters:
axisAxis instance.
Returns:
Controlword value (0 on NULL).
function syn_cia402_get_mode¶
Get requested Mode of Operation (Index 0x6060).
Parameters:
axisAxis instance.
Returns:
Mode of operation.
function syn_cia402_get_mode_display¶
Get active Mode of Operation Display (Index 0x6061).
Parameters:
axisAxis instance.
Returns:
Mode of operation display.
function syn_cia402_get_state¶
Get current FSM state.
Parameters:
axisAxis instance.
Returns:
Current FSM state.
function syn_cia402_get_statusword¶
Read current Statusword (Index 0x6041).
Parameters:
axisAxis instance.
Returns:
Statusword value (0 on NULL).
function syn_cia402_init¶
Initialize CiA 402 Axis controller.
Parameters:
axisAxis instance.cfgInitial configuration parameters.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL parameters.
function syn_cia402_populate_od¶
Populate a CANopen Object Dictionary table with standard CiA 402 objects.
size_t syn_cia402_populate_od (
SYN_CANOpenODEntry * od_table,
size_t max_entries,
SYN_CIA402_Axis * axis
)
Binds 0x6040 (Controlword), 0x6041 (Statusword), 0x6060..0x60FF objects directly to the live fields of the given axis instance.
Parameters:
od_tableDestination array of Object Dictionary entries.max_entriesSize of od_table.axisAxis instance to bind.
Returns:
Number of entries populated (0 on error or insufficient capacity).
function syn_cia402_report_actuals¶
Feed measured actual values alias for compatibility.
SYN_Status syn_cia402_report_actuals (
SYN_CIA402_Axis * axis,
int32_t pos_actual,
int32_t vel_actual,
int16_t torque_actual
)
Parameters:
axisAxis instance.pos_actualActual position (counts).vel_actualActual velocity (counts/s).torque_actualActual torque (0.1% rated).
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_set_controlword¶
Set Controlword (Index 0x6040) from master / RPDO / SDO.
Parameters:
axisAxis instance.cwControlword value.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_set_mode¶
Request Mode of Operation (Index 0x6060).
Parameters:
axisAxis instance.modeRequested mode (SYN_CIA402_MODE_*).
Returns:
SYN_OK on success, SYN_INVALID_PARAM on invalid mode.
function syn_cia402_set_target_position¶
Set target position (Index 0x607A).
Parameters:
axisAxis instance.posTarget position in counts.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_set_target_torque¶
Set target torque (Index 0x6071).
Parameters:
axisAxis instance.torqueTarget torque in 0.1% rated torque.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_set_target_velocity¶
Set target velocity (Index 0x60FF).
Parameters:
axisAxis instance.velTarget velocity in counts/s.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_step¶
Execute periodic CiA 402 control loop step in microseconds.
SYN_Status syn_cia402_step (
SYN_CIA402_Axis * axis,
uint32_t dt_us,
SYN_CIA402_Setpoints * out_setpoints
)
Evaluates state machine transitions, computes motion ramps, performs following error supervision, updates Statusword, and outputs motor setpoints.
Parameters:
axisAxis instance.dt_usTime elapsed since last step in microseconds.out_setpointsOutput setpoint commands (may be NULL if not needed).
Returns:
SYN_OK on success, error code on failure.
function syn_cia402_trigger_fault¶
Trigger a drive fault and enter FAULT_REACTION_ACTIVE / FAULT state.
Parameters:
axisAxis instance.error_codeFault error code (e.g. overcurrent, limit tripped, tracking error).
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
function syn_cia402_update¶
Periodic motion update in milliseconds.
Parameters:
axisAxis instance.dt_msTime delta in milliseconds.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on NULL.
Public Static Functions Documentation¶
function syn_cia402_eval_fsm¶
Evaluate CiA 402 Device Control State Machine transitions.
Parameters:
axisCiA 402 axis instance.
function syn_cia402_update_statusword¶
Construct CANopen Statusword (0x6041) from current drive state.
Parameters:
axisCiA 402 axis instance.
The documentation for this class was generated from the following file src/syntropic/proto/syn_cia402.c