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.

202 lines
13 KiB

2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years 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. * SENSOR *
  16. *******************************************************************************/
  17. kreg_sensor_temperature0 = REG_INDEX(2, 0, 0), // 温度1
  18. kreg_sensor_temperature1 = REG_INDEX(2, 0, 1), // 温度2
  19. kreg_sensor_temperature2 = REG_INDEX(2, 0, 2), // 温度3
  20. kreg_sensor_temperature3 = REG_INDEX(2, 0, 3), // 温度4
  21. /*******************************************************************************
  22. * *
  23. *******************************************************************************/
  24. /*******************************************************************************
  25. * MOTOR_X *
  26. *******************************************************************************/
  27. /*******************************************************************************
  28. * PID控制器(3000->4000) *
  29. *******************************************************************************/
  30. kreg_pid_target = REG_INDEX(30, 0, 0), // 目标数值
  31. kreg_pid_nowoutput = REG_INDEX(30, 0, 1), // 当前输出
  32. kreg_pid_feedbackval = REG_INDEX(30, 0, 2), // 当前输出
  33. kreg_pid_kp = REG_INDEX(30, 50, 0), // kp
  34. kreg_pid_ki = REG_INDEX(30, 50, 1), // ki
  35. kreg_pid_kd = REG_INDEX(30, 50, 2), // kd
  36. kreg_pid_max_output = REG_INDEX(30, 50, 3), // 最大输出
  37. kreg_pid_min_output = REG_INDEX(30, 50, 4), // 最小输出
  38. kreg_pid_max_integral = REG_INDEX(30, 50, 5), // 最大积分
  39. kreg_pid_min_integral = REG_INDEX(30, 50, 6), // 最小积分
  40. kreg_error_limit = REG_INDEX(30, 50, 7), // 误差限制
  41. kreg_compute_interval = REG_INDEX(30, 50, 8), // 计算间隔
  42. /*******************************************************************************
  43. * *
  44. *******************************************************************************/
  45. kreg_fan0_ctrl_speed_level = REG_INDEX(31, 0, 0), // 风扇转速0,1,2,3
  46. kreg_fan1_ctrl_speed_level = REG_INDEX(31, 0, 1), // 风扇转速0,1,2,3
  47. kreg_fan2_ctrl_speed_level = REG_INDEX(31, 0, 2), // 风扇转速0,1,2,3
  48. kreg_fan3_ctrl_speed_level = REG_INDEX(31, 0, 3), // 风扇转速0,1,2,3
  49. kreg_fan4_ctrl_speed_level = REG_INDEX(31, 0, 4), // 风扇转速0,1,2,3
  50. kreg_fan0_speed_level = REG_INDEX(31, 10, 0), // 风扇实时转速0,1,2,3
  51. kreg_fan1_speed_level = REG_INDEX(31, 10, 1), // 风扇实时转速0,1,2,3
  52. kreg_fan2_speed_level = REG_INDEX(31, 10, 2), // 风扇实时转速0,1,2,3
  53. kreg_fan3_speed_level = REG_INDEX(31, 10, 3), // 风扇实时转速0,1,2,3
  54. kreg_fan4_speed_level = REG_INDEX(31, 10, 4), // 风扇实时转速0,1,2,3
  55. kreg_pwm_pump0_ctrl_speed_level = REG_INDEX(32, 0, 0), // PWM水泵0,1,2,3
  56. kreg_pwm_pump1_ctrl_speed_level = REG_INDEX(32, 0, 1), // PWM水泵0,1,2,3
  57. kreg_pwm_pump2_ctrl_speed_level = REG_INDEX(32, 0, 2), // PWM水泵0,1,2,3
  58. kreg_pwm_pump3_ctrl_speed_level = REG_INDEX(32, 0, 3), // PWM水泵0,1,2,3
  59. kreg_pwm_pump4_ctrl_speed_level = REG_INDEX(32, 0, 4), // PWM水泵0,1,2,3
  60. kreg_pwm_pump0_speed_level = REG_INDEX(32, 10, 0), // PWM水泵0,1,2,3
  61. kreg_pwm_pump1_speed_level = REG_INDEX(32, 10, 1), // PWM水泵0,1,2,3
  62. kreg_pwm_pump2_speed_level = REG_INDEX(32, 10, 2), // PWM水泵0,1,2,3
  63. kreg_pwm_pump3_speed_level = REG_INDEX(32, 10, 3), // PWM水泵0,1,2,3
  64. kreg_pwm_pump4_speed_level = REG_INDEX(32, 10, 4), // PWM水泵0,1,2,3
  65. /*******************************************************************************
  66. * *
  67. *******************************************************************************/
  68. kreg_pipette_pos_ul = REG_INDEX(40, 0, 0), // 移液枪位置
  69. kreg_pipette_capactitance_val = REG_INDEX(40, 0, 1), // 移液枪电容值
  70. kreg_pipette_tip_state = REG_INDEX(40, 0, 2), // 移动液枪tip状态
  71. kreg_pipette_limit_ul = REG_INDEX(40, 50, 0), // 移液枪ul限制
  72. /*******************************************************************************
  73. * smartADC *
  74. *******************************************************************************/
  75. kreg_self_reflecting_laser_sensor_transmitting_power = REG_INDEX(41, 0, 0), // 发射功率
  76. kreg_self_reflecting_laser_sensor_receiving_tube_gain = REG_INDEX(41, 0, 1), // 接收管放大倍数
  77. kreg_self_reflecting_laser_sensor_sample_interval_ms = REG_INDEX(41, 0, 2), // 采样率
  78. kreg_self_reflecting_laser_sensor_num_samples = REG_INDEX(41, 0, 3), // 采样点数
  79. // scan action
  80. kreg_boditech_optical_scan_type = REG_INDEX(42, 0, 0), // 0 t光学,1 f光学
  81. kreg_boditech_optical_scan_start_pos = REG_INDEX(42, 0, 1),
  82. kreg_boditech_optical_scan_direction = REG_INDEX(42, 0, 2),
  83. kreg_boditech_optical_scan_step_interval = REG_INDEX(42, 0, 3),
  84. kreg_boditech_optical_scan_pointnum = REG_INDEX(42, 0, 4),
  85. kreg_boditech_optical_channel_select_num = REG_INDEX(42, 0, 5),
  86. kreg_boditech_optical_laster_gain = REG_INDEX(42, 0, 6),
  87. kreg_boditech_optical_scan_gain = REG_INDEX(42, 0, 7),
  88. kreg_boditech_optical_trf_uvled_on_duration_us = REG_INDEX(42, 0, 8),
  89. kreg_boditech_optical_trf_uvled_off_duration_us = REG_INDEX(42, 0, 9),
  90. kreg_boditech_optical_trf_scan_delay_us = REG_INDEX(42, 0, 10),
  91. kreg_boditech_optical_trf_scan_duration_us = REG_INDEX(42, 0, 11),
  92. kreg_boditech_optical_scan_gain_adjust_suggestion = REG_INDEX(42, 0, 12),
  93. kreg_boditech_optical_adc_result_overflow = REG_INDEX(42, 0, 13),
  94. kreg_boditech_optical_laster_intensity = REG_INDEX(42, 0, 14),
  95. //
  96. kreg_laster_scaner_scan_type = REG_INDEX(43, 0, 0), // 0 t光学,1 f光学
  97. kreg_laster_scaner_scan_start_pos = REG_INDEX(43, 0, 1),
  98. kreg_laster_scaner_scan_direction = REG_INDEX(43, 0, 2),
  99. kreg_laster_scaner_scan_step_interval = REG_INDEX(43, 0, 3),
  100. kreg_laster_scaner_scan_pointnum = REG_INDEX(43, 0, 4),
  101. kreg_laster_scaner_laster_gain = REG_INDEX(43, 0, 5),
  102. kreg_laster_scaner_scan_gain = REG_INDEX(43, 0, 6),
  103. kreg_laster_scaner_scan_gain_adjust_suggestion = REG_INDEX(43, 0, 12),
  104. kreg_laster_scaner_adc_result_overflow = REG_INDEX(43, 0, 13),
  105. kreg_laster_scaner_laster_intensity = REG_INDEX(43, 0, 14),
  106. /***********************************************************************************************************************
  107. * XYROBOT *
  108. ***********************************************************************************************************************/
  109. kreg_xyrobot_default_velocity = REG_INDEX(100, 0, 0),
  110. kreg_xyrobot_default_acc = REG_INDEX(100, 0, 1),
  111. kreg_xyrobot_default_dec = REG_INDEX(100, 0, 2),
  112. kreg_xyrobot_default_break_dec = REG_INDEX(100, 0, 3),
  113. kreg_xyrobot_run_to_zero_speed = REG_INDEX(100, 0, 4),
  114. kreg_xyrobot_run_to_zero_dec = REG_INDEX(100, 0, 5),
  115. kreg_xyrobot_look_zero_edge_speed = REG_INDEX(100, 0, 6),
  116. kreg_xyrobot_look_zero_edge_dec = REG_INDEX(100, 0, 7),
  117. kreg_xyrobot_ihold = REG_INDEX(100, 0, 8),
  118. kreg_xyrobot_irun = REG_INDEX(100, 0, 9),
  119. kreg_xyrobot_iholddelay = REG_INDEX(100, 0, 10),
  120. kreg_xyrobot_robot_type = REG_INDEX(100, 50, 0), // 机器人类型 0:hbot 1:corexy
  121. kreg_xyrobot_x_shift = REG_INDEX(100, 50, 1), // x偏移
  122. kreg_xyrobot_y_shift = REG_INDEX(100, 50, 2), // y偏移
  123. kreg_xyrobot_x_shaft = REG_INDEX(100, 50, 3), // x轴是否反转
  124. kreg_xyrobot_y_shaft = REG_INDEX(100, 50, 4), // y轴是否反转
  125. kreg_xyrobot_x_one_circle_pulse = REG_INDEX(100, 50, 5), // x轴一圈脉冲数
  126. kreg_xyrobot_y_one_circle_pulse = REG_INDEX(100, 50, 6), // y轴一圈脉冲数
  127. kreg_xyrobot_run_to_zero_max_x_d = REG_INDEX(100, 50, 7), // x轴回零最大距离
  128. kreg_xyrobot_run_to_zero_max_y_d = REG_INDEX(100, 50, 8), // y轴回零最大距离
  129. kreg_xyrobot_look_zero_edge_max_x_d = REG_INDEX(100, 50, 9), // x轴找零边缘最大距离
  130. kreg_xyrobot_look_zero_edge_max_y_d = REG_INDEX(100, 50, 10), // y轴找零边缘最大距离
  131. kreg_xyrobot_io_state0 = REG_INDEX(100, 50, 11), // IO状态
  132. kreg_xyrobot_io_state1 = REG_INDEX(100, 50, 12), // IO状态
  133. /***********************************************************************************************************************
  134. * step_motor *
  135. ***********************************************************************************************************************/
  136. kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标
  137. kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移
  138. kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移
  139. kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转
  140. kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数
  141. kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母
  142. kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度
  143. kreg_step_motor_default_acc = REG_INDEX(101, 50, 5), // 默认加速度
  144. kreg_step_motor_default_dec = REG_INDEX(101, 50, 6), // 默认减速度
  145. kreg_step_motor_default_break_dec = REG_INDEX(101, 50, 7), // 默认减速度
  146. kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置
  147. kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置
  148. kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置
  149. kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置
  150. kreg_step_motor_run_to_zero_max_d = REG_INDEX(101, 50, 21), // x轴回零最大距离
  151. kreg_step_motor_look_zero_edge_max_d = REG_INDEX(101, 50, 22), // x轴找零边缘最大距离
  152. kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
  153. kreg_step_motor_run_to_zero_dec = REG_INDEX(101, 50, 24), // 回零减速度
  154. kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
  155. kreg_step_motor_look_zero_edge_dec = REG_INDEX(101, 50, 26), // 找零边缘减速度
  156. kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
  157. kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
  158. /***********************************************************************************************************************
  159. * MINI_STEP_MOTOR *
  160. ***********************************************************************************************************************/
  161. kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置
  162. kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度
  163. kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩
  164. kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩
  165. /***********************************************************************************************************************
  166. * BOARD *
  167. ***********************************************************************************************************************/
  168. } reg_index_t;
  169. typedef struct {
  170. int index;
  171. const char* regname;
  172. } reginfo_t;
  173. const char* regindex2str(int32_t code);
  174. reginfo_t* reg_get_table();
  175. int reg_get_table_size();
  176. } // namespace iflytop