You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
4.6 KiB

1 year ago
  1. #pragma once
  2. #include <stdint.h>
  3. namespace iflytop {
  4. using namespace std;
  5. #define REG_INDEX(type, offset, subconfigindex) (type * 100 + offset + subconfigindex)
  6. typedef enum {
  7. /*******************************************************************************
  8. * *
  9. *******************************************************************************/
  10. kreg_module_version = REG_INDEX(0, 0, 0), // 模块版本
  11. kreg_module_type = REG_INDEX(0, 0, 1), // 模块类型
  12. kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error
  13. kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag
  14. /***********************************************************************************************************************
  15. * *
  16. ***********************************************************************************************************************/
  17. kreg_opt_module_do_action0 = REG_INDEX(0, 0, 40), // 方法0
  18. kreg_opt_module_action_param1 = REG_INDEX(0, 0, 41), // 方法1
  19. kreg_opt_module_action_param2 = REG_INDEX(0, 0, 42), // 方法2
  20. kreg_opt_module_action_param3 = REG_INDEX(0, 0, 43), // 方法3
  21. kreg_opt_module_action_ack1 = REG_INDEX(0, 0, 51), // ACK1
  22. kreg_opt_module_action_ack2 = REG_INDEX(0, 0, 52), // ACK2
  23. /***********************************************************************************************************************
  24. * step_motor *
  25. ***********************************************************************************************************************/
  26. kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标
  27. kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移
  28. kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移
  29. kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转
  30. kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数
  31. kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母
  32. kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度
  33. kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置
  34. kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置
  35. kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置
  36. kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置
  37. kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
  38. kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
  39. kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
  40. kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
  41. kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式
  42. kreg_step_motor_vstart = REG_INDEX(101, 50, 31), // a1起作用的速度
  43. kreg_step_motor_a1 = REG_INDEX(101, 50, 32), //
  44. kreg_step_motor_amax = REG_INDEX(101, 50, 33),
  45. kreg_step_motor_v1 = REG_INDEX(101, 50, 34),
  46. kreg_step_motor_dmax = REG_INDEX(101, 50, 35),
  47. kreg_step_motor_d1 = REG_INDEX(101, 50, 36),
  48. kreg_step_motor_vstop = REG_INDEX(101, 50, 37),
  49. kreg_step_motor_tzerowait = REG_INDEX(101, 50, 38),
  50. /***********************************************************************************************************************
  51. * MINI_STEP_MOTOR *
  52. ***********************************************************************************************************************/
  53. kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置
  54. kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度
  55. kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩
  56. kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩
  57. } reg_index_t;
  58. typedef struct {
  59. int index;
  60. const char* regname;
  61. } reginfo_t;
  62. const char* regindex2str(int32_t code);
  63. reginfo_t* reg_get_table();
  64. int reg_get_table_size();
  65. } // namespace iflytop