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.

244 lines
16 KiB

2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year 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
1 year 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
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. * *
  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. * *
  25. ***********************************************************************************************************************/
  26. kreg_water_cooling_tmp_controler_pid_target = REG_INDEX(30, 0, 0), // 目标数值
  27. kreg_water_cooling_tmp_controler_pid_nowoutput = REG_INDEX(30, 0, 1), // 当前输出
  28. kreg_water_cooling_tmp_controler_pid_feedbackval = REG_INDEX(30, 0, 2), // 当前输出
  29. kreg_water_cooling_tmp_controler_temp0 = REG_INDEX(30, 0, 3), // 温度1
  30. kreg_water_cooling_tmp_controler_temp1 = REG_INDEX(30, 0, 4), // 温度2
  31. kreg_water_cooling_tmp_controler_temp2 = REG_INDEX(30, 0, 5), // 温度3
  32. kreg_water_cooling_tmp_controler_temp3 = REG_INDEX(30, 0, 6), // 温度4
  33. kreg_water_cooling_tmp_controler_pid_kp = REG_INDEX(30, 50, 0), // kp
  34. kreg_water_cooling_tmp_controler_pid_ki = REG_INDEX(30, 50, 1), // ki
  35. kreg_water_cooling_tmp_controler_pid_kd = REG_INDEX(30, 50, 2), // kd
  36. kreg_water_cooling_tmp_controler_pid_max_output = REG_INDEX(30, 50, 3), // 最大输出
  37. kreg_water_cooling_tmp_controler_pid_min_output = REG_INDEX(30, 50, 4), // 最小输出
  38. kreg_water_cooling_tmp_controler_pid_max_integral = REG_INDEX(30, 50, 5), // 最大积分
  39. kreg_water_cooling_tmp_controler_pid_min_integral = REG_INDEX(30, 50, 6), // 最小积分
  40. kreg_water_cooling_tmp_controler_pid_error_limit = REG_INDEX(30, 50, 7), // 误差限制
  41. kreg_water_cooling_tmp_controler_pid_compute_interval = REG_INDEX(30, 50, 8), // 计算间隔
  42. /*******************************************************************************
  43. * *
  44. *******************************************************************************/
  45. kreg_pipette_pos_ul = REG_INDEX(40, 0, 0), // 移液枪位置
  46. kreg_pipette_capactitance_val = REG_INDEX(40, 0, 1), // 移液枪电容值
  47. kreg_pipette_tip_state = REG_INDEX(40, 0, 2), // 移动液枪tip状态
  48. kreg_pipette_limit_ul = REG_INDEX(40, 50, 1),
  49. kreg_pipette_pump_acc = REG_INDEX(40, 50, 2),
  50. kreg_pipette_pump_dec = REG_INDEX(40, 50, 3),
  51. kreg_pipette_pump_vstart = REG_INDEX(40, 50, 4),
  52. kreg_pipette_pump_vstop = REG_INDEX(40, 50, 5),
  53. kreg_pipette_pump_vmax = REG_INDEX(40, 50, 6),
  54. kreg_pipette_aspirate_distribut_pump_vel = REG_INDEX(40, 50, 7),
  55. kreg_pipette_lld_pump_vel = REG_INDEX(40, 50, 8),
  56. kreg_pipette_lld_motor_vel_rpm = REG_INDEX(40, 50, 9),
  57. kreg_pipette_lld_detect_period_ms = REG_INDEX(40, 50, 10),
  58. kreg_pipette_lld_prepare_pos = REG_INDEX(40, 50, 11),
  59. kreg_pipette_lld_prepare_distribut_pos = REG_INDEX(40, 50, 12),
  60. /***********************************************************************************************************************
  61. * *
  62. ***********************************************************************************************************************/
  63. #if 0
  64. kreg_boditech_optical_module_raw_sector_size = REG_INDEX(41, 0, 0), // sector_size
  65. kreg_boditech_optical_module_raw_sector_num = REG_INDEX(41, 0, 1), //
  66. // scan action
  67. kreg_boditech_optical_scan_type = REG_INDEX(42, 0, 0), // 0 t光学,1 f光学
  68. kreg_boditech_optical_scan_start_pos = REG_INDEX(42, 0, 1),
  69. kreg_boditech_optical_scan_direction = REG_INDEX(42, 0, 2),
  70. kreg_boditech_optical_scan_step_interval = REG_INDEX(42, 0, 3),
  71. kreg_boditech_optical_scan_pointnum = REG_INDEX(42, 0, 4),
  72. kreg_boditech_optical_channel_select_num = REG_INDEX(42, 0, 5),
  73. kreg_boditech_optical_laster_gain_potentiometer_val = REG_INDEX(42, 0, 6),
  74. kreg_boditech_optical_scan_gain_potentiometer = REG_INDEX(42, 0, 7),
  75. kreg_boditech_optical_trf_uvled_on_duration_us = REG_INDEX(42, 0, 8),
  76. kreg_boditech_optical_trf_uvled_off_duration_us = REG_INDEX(42, 0, 9),
  77. kreg_boditech_optical_trf_scan_delay_us = REG_INDEX(42, 0, 10),
  78. kreg_boditech_optical_trf_scan_duration_us = REG_INDEX(42, 0, 11),
  79. kreg_boditech_optical_scan_gain_potentiometer_adjust_suggestion = REG_INDEX(42, 0, 12),
  80. kreg_boditech_optical_adc_result_overflow = REG_INDEX(42, 0, 13),
  81. kreg_boditech_optical_laster_intensity = REG_INDEX(42, 0, 14),
  82. //
  83. kreg_laster_scaner_scan_type = REG_INDEX(43, 0, 0), // 0 t光学,1 f光学
  84. kreg_laster_scaner_scan_start_pos = REG_INDEX(43, 0, 1),
  85. kreg_laster_scaner_scan_direction = REG_INDEX(43, 0, 2),
  86. kreg_laster_scaner_scan_step_interval = REG_INDEX(43, 0, 3),
  87. kreg_laster_scaner_scan_pointnum = REG_INDEX(43, 0, 4),
  88. kreg_laster_scaner_laster_gain = REG_INDEX(43, 0, 5),
  89. kreg_laster_scaner_scan_gain = REG_INDEX(43, 0, 6),
  90. kreg_laster_scaner_scan_gain_adjust_suggestion = REG_INDEX(43, 0, 12),
  91. kreg_laster_scaner_adc_result_overflow = REG_INDEX(43, 0, 13),
  92. kreg_laster_scaner_laster_intensity = REG_INDEX(43, 0, 14),
  93. kreg_laster_scaner_raw_sector_size = REG_INDEX(44, 0, 1),
  94. kreg_laster_scaner_raw_sector_num = REG_INDEX(44, 0, 2),
  95. #endif
  96. /**
  97. * @brief
  98. *
  99. * ------------------------------------------------------
  100. *
  101. *
  102. * :F光学向左扫描的起始位置
  103. * :1:-1
  104. * :1200
  105. * :1
  106. *
  107. * :(1200)
  108. *
  109. *
  110. */
  111. // 坐标参数
  112. kreg_a8k_opt_t_pos_offset = REG_INDEX(45, 0, 1), // T光学正向扫描,扫描起始位距离零点的偏移
  113. kreg_a8k_opt_f_pos_offset = REG_INDEX(45, 0, 2), // F光学正向扫描,扫描起始位距离零点的偏移
  114. kreg_a8k_opt_t_reverse_scan_pos_offset = REG_INDEX(45, 0, 3), // T光学逆向扫描,扫描起始位距离零点的偏移
  115. kreg_a8k_opt_f_reverse_scan_pos_offset = REG_INDEX(45, 0, 4), // F光学逆向扫描,扫描起始位距离零点的偏移
  116. kreg_a8k_opt_scan_step_interval = REG_INDEX(45, 0, 5), // 参数固定:为1
  117. kreg_a8k_opt_scan_pointnum = REG_INDEX(45, 0, 6), // 参数固定:为1200个点
  118. //
  119. /***********************************************************************************************************************
  120. * XYROBOT *
  121. ***********************************************************************************************************************/
  122. kreg_xyrobot_io_state = REG_INDEX(99, 0, 0), // IO状态
  123. kreg_xyrobot_robot_type = REG_INDEX(99, 50, 0), // 机器人类型 0:hbot 1:corexy
  124. kreg_xyrobot_one_circle_pulse = REG_INDEX(99, 50, 1),
  125. kreg_xyrobot_one_circle_pulse_denominator = REG_INDEX(99, 50, 2),
  126. kreg_xyrobot_ihold = REG_INDEX(99, 50, 4),
  127. kreg_xyrobot_irun = REG_INDEX(99, 50, 5),
  128. kreg_xyrobot_iholddelay = REG_INDEX(99, 50, 6),
  129. kreg_xyrobot_iglobalscaler = REG_INDEX(99, 50, 7),
  130. kreg_xyrobot_vstart = REG_INDEX(99, 50, 8),
  131. kreg_xyrobot_a1 = REG_INDEX(99, 50, 9),
  132. kreg_xyrobot_amax = REG_INDEX(99, 50, 10),
  133. kreg_xyrobot_v1 = REG_INDEX(99, 50, 11),
  134. kreg_xyrobot_dmax = REG_INDEX(99, 50, 12),
  135. kreg_xyrobot_d1 = REG_INDEX(99, 50, 13),
  136. kreg_xyrobot_vstop = REG_INDEX(99, 50, 14),
  137. kreg_xyrobot_tzerowait = REG_INDEX(99, 50, 15),
  138. kreg_xyrobot_enc_resolution = REG_INDEX(99, 50, 16),
  139. kreg_xyrobot_enable_enc = REG_INDEX(99, 50, 17),
  140. kreg_xyrobot_x_shaft = REG_INDEX(99, 50, 18), // x轴是否反转
  141. kreg_xyrobot_y_shaft = REG_INDEX(99, 50, 19), // y轴是否反转
  142. kreg_xyrobot_min_x = REG_INDEX(99, 50, 22),
  143. kreg_xyrobot_min_y = REG_INDEX(99, 50, 23),
  144. kreg_xyrobot_max_x = REG_INDEX(99, 50, 24),
  145. kreg_xyrobot_max_y = REG_INDEX(99, 50, 25),
  146. kreg_xyrobot_run_to_zero_speed = REG_INDEX(99, 50, 26),
  147. kreg_xyrobot_look_zero_edge_speed = REG_INDEX(99, 50, 27),
  148. kreg_xyrobot_shift_x = REG_INDEX(99, 50, 28),
  149. kreg_xyrobot_shift_y = REG_INDEX(99, 50, 29),
  150. kreg_xyrobot_default_velocity = REG_INDEX(100, 0, 0),
  151. /***********************************************************************************************************************
  152. * step_motor *
  153. ***********************************************************************************************************************/
  154. kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标
  155. kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移
  156. kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移
  157. kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转
  158. kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数
  159. kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母
  160. kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度
  161. kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置
  162. kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置
  163. kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置
  164. kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置
  165. kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
  166. kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
  167. kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
  168. kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
  169. kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式
  170. kreg_step_motor_vstart = REG_INDEX(101, 50, 31), // a1起作用的速度
  171. kreg_step_motor_a1 = REG_INDEX(101, 50, 32), //
  172. kreg_step_motor_amax = REG_INDEX(101, 50, 33),
  173. kreg_step_motor_v1 = REG_INDEX(101, 50, 34),
  174. kreg_step_motor_dmax = REG_INDEX(101, 50, 35),
  175. kreg_step_motor_d1 = REG_INDEX(101, 50, 36),
  176. kreg_step_motor_vstop = REG_INDEX(101, 50, 37),
  177. kreg_step_motor_tzerowait = REG_INDEX(101, 50, 38),
  178. kreg_step_motor_enc_resolution = REG_INDEX(101, 50, 39), // 编码器分辨率 1000,1024,4000,4096,16384
  179. kreg_step_motor_enable_enc = REG_INDEX(101, 50, 40), //
  180. kreg_step_motor_dzero_pos = REG_INDEX(101, 50, 41), // 驱动器处于调试模式
  181. /***********************************************************************************************************************
  182. * MINI_STEP_MOTOR *
  183. ***********************************************************************************************************************/
  184. kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置
  185. kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度
  186. kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩
  187. kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩
  188. /***********************************************************************************************************************
  189. * ID_CARD_READER *
  190. ***********************************************************************************************************************/
  191. kreg_id_card_reader_raw_sector_size = REG_INDEX(103, 0, 1),
  192. kreg_id_card_reader_raw_sector_num = REG_INDEX(103, 0, 2),
  193. kreg_id_card_reader_is_online = REG_INDEX(103, 0, 3),
  194. /***********************************************************************************************************************
  195. * BOARD *
  196. ***********************************************************************************************************************/
  197. kreg_plate_code_scaner_laster_intensity = REG_INDEX(104, 0, 1),
  198. kreg_plate_code_scaner_scan_gain = REG_INDEX(104, 0, 2),
  199. kreg_plate_code_scaner_scan_velocity = REG_INDEX(104, 0, 3),
  200. kreg_plate_code_scaner_scan_start_pos = REG_INDEX(104, 0, 4),
  201. kreg_plate_code_scaner_final_stop_pos = REG_INDEX(104, 0, 5),
  202. kreg_plate_code_scaner_code_judgment_threshold = REG_INDEX(104, 0, 6),
  203. kreg_plate_code_scaner_item = REG_INDEX(104, 0, 7),
  204. kreg_plate_code_scaner_lot = REG_INDEX(104, 0, 8),
  205. kreg_plate_code_scaner_rawcode = REG_INDEX(104, 0, 9),
  206. kreg_plate_code_scaner_code_legal = REG_INDEX(104, 0, 10),
  207. } reg_index_t;
  208. typedef struct {
  209. int index;
  210. const char* regname;
  211. } reginfo_t;
  212. const char* regindex2str(int32_t code);
  213. reginfo_t* reg_get_table();
  214. int reg_get_table_size();
  215. } // namespace iflytop