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.

379 lines
25 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. kreg_module_initflag = REG_INDEX(0, 0, 4), // inited_flag
  15. kreg_module_enableflag = REG_INDEX(0, 0, 5), // 0idle,1busy,2error
  16. kreg_module_errorbitflag0 = REG_INDEX(0, 0, 6), // 模块异常标志,bit,每个模块自定义
  17. kreg_module_errorbitflag1 = REG_INDEX(0, 0, 7), //
  18. kreg_module_input_state = REG_INDEX(0, 0, 8), //
  19. kreg_module_output_state = REG_INDEX(0, 0, 9), //
  20. kreg_module_raw_sector_size = REG_INDEX(0, 0, 10), // sector_size
  21. kreg_module_raw_sector_num = REG_INDEX(0, 0, 11), //
  22. kreg_module_is_online = REG_INDEX(0, 0, 12), //
  23. kreg_module_last_cmd_exec_status = REG_INDEX(0, 0, 20), // 上一条指令执行的状态
  24. kreg_module_last_cmd_exec_val0 = REG_INDEX(0, 0, 21), // 上一条指令执行的结果0
  25. kreg_module_last_cmd_exec_val1 = REG_INDEX(0, 0, 22), // 上一条指令执行的结果1
  26. kreg_module_last_cmd_exec_val2 = REG_INDEX(0, 0, 23), // 上一条指令执行的结果2
  27. kreg_module_last_cmd_exec_val3 = REG_INDEX(0, 0, 24), // 上一条指令执行的结果3
  28. kreg_module_last_cmd_exec_val4 = REG_INDEX(0, 0, 25), // 上一条指令执行的结果4
  29. kreg_module_last_cmd_exec_val5 = REG_INDEX(0, 0, 26), // 上一条指令执行的结果5
  30. kreg_module_private0 = REG_INDEX(0, 0, 30), // 模块私有状态0
  31. kreg_module_private1 = REG_INDEX(0, 0, 31), // 模块私有状态1
  32. kreg_module_private2 = REG_INDEX(0, 0, 32), // 模块私有状态2
  33. kreg_module_private3 = REG_INDEX(0, 0, 33), // 模块私有状态3
  34. kreg_module_private4 = REG_INDEX(0, 0, 34), // 模块私有状态4
  35. kreg_module_private5 = REG_INDEX(0, 0, 35), // 模块私有状态5
  36. kreg_module_private6 = REG_INDEX(0, 0, 36), // 模块私有状态6
  37. kreg_module_private7 = REG_INDEX(0, 0, 37), // 模块私有状态7
  38. kreg_module_private8 = REG_INDEX(0, 0, 38), // 模块私有状态8
  39. kreg_module_private9 = REG_INDEX(0, 0, 39), // 模块私有状态9
  40. kreg_module_do_action0 = REG_INDEX(0, 0, 40), // 方法0
  41. kreg_module_action_param1 = REG_INDEX(0, 0, 41), // 方法1
  42. kreg_module_action_param2 = REG_INDEX(0, 0, 42), // 方法2
  43. kreg_module_action_param3 = REG_INDEX(0, 0, 43), // 方法3
  44. kreg_module_action_param4 = REG_INDEX(0, 0, 44), // 方法4
  45. kreg_module_action_param5 = REG_INDEX(0, 0, 45), // 方法5
  46. kreg_module_action_param6 = REG_INDEX(0, 0, 46), // 方法6
  47. kreg_module_action_param7 = REG_INDEX(0, 0, 47), // 方法7
  48. kreg_module_action_param8 = REG_INDEX(0, 0, 48), // 方法8
  49. kreg_module_action_param9 = REG_INDEX(0, 0, 49), // 方法9
  50. kreg_module_action_ack1 = REG_INDEX(0, 0, 51), // ACK1
  51. kreg_module_action_ack2 = REG_INDEX(0, 0, 52), // ACK2
  52. kreg_module_action_ack3 = REG_INDEX(0, 0, 53), // ACK3
  53. kreg_module_action_ack4 = REG_INDEX(0, 0, 54), // ACK4
  54. kreg_module_action_ack5 = REG_INDEX(0, 0, 55), // ACK5
  55. kreg_module_action_ack6 = REG_INDEX(0, 0, 56), // ACK6
  56. kreg_module_action_ack7 = REG_INDEX(0, 0, 57), // ACK7
  57. kreg_module_action_ack8 = REG_INDEX(0, 0, 58), // ACK8
  58. kreg_module_action_ack9 = REG_INDEX(0, 0, 59), // ACK9
  59. /*******************************************************************************
  60. * SENSOR *
  61. *******************************************************************************/
  62. kreg_sensor_current = REG_INDEX(1, 0, 0), // 电流
  63. kreg_sensor_voltage = REG_INDEX(1, 0, 1), // 电压
  64. kreg_sensor_temperature = REG_INDEX(1, 0, 2), // 温度
  65. kreg_sensor_humidity = REG_INDEX(1, 0, 3), // 湿度
  66. kreg_sensor_wind_speed = REG_INDEX(1, 0, 4), // 风速
  67. kreg_sensor_wind_dir = REG_INDEX(1, 0, 5), // 风向
  68. kreg_sensor_air_press = REG_INDEX(1, 0, 6), // 气压
  69. kreg_sensor_pm25 = REG_INDEX(1, 0, 7), // PM2.5
  70. kreg_sensor_pm10 = REG_INDEX(1, 0, 8), // PM10
  71. kreg_sensor_co = REG_INDEX(1, 0, 9), // CO
  72. kreg_sensor_co2 = REG_INDEX(1, 0, 10), // CO
  73. kreg_sensor_no2 = REG_INDEX(1, 0, 11), // NO2
  74. kreg_sensor_so2 = REG_INDEX(1, 0, 12), // SO2
  75. kreg_sensor_o3 = REG_INDEX(1, 0, 13), // O3
  76. kreg_sensor_light_intensity = REG_INDEX(1, 0, 14), // 光照强度
  77. kreg_sensor_radiation = REG_INDEX(1, 0, 15), // 总辐射量
  78. kreg_sensor_hydrogen_peroxide_volume = REG_INDEX(1, 0, 16), // ppm 0x0100
  79. kreg_sensor_h2o_h2o2_rs = REG_INDEX(1, 0, 17), // %RS * 100
  80. kreg_sensor_relative_humidity = REG_INDEX(1, 0, 18), // %RH * 100
  81. kreg_sensor_absolute_hydrogen_peroxide = REG_INDEX(1, 0, 19), // mg/m3
  82. kreg_sensor_h2o_h2o2dew_point_temperature = REG_INDEX(1, 0, 20), // °C * 100
  83. kreg_sensor_water_volume = REG_INDEX(1, 0, 21), // ppm
  84. kreg_sensor_water_vapor_pressure = REG_INDEX(1, 0, 22), // hpa
  85. kreg_sensor_absolute_humidity = REG_INDEX(1, 0, 23), // g/m3
  86. kreg_sensor_water_vapor_saturation_pressure_h2o = REG_INDEX(1, 0, 24), // hpa
  87. kreg_sensor_h2o2_vapor_pressure = REG_INDEX(1, 0, 25), // hpa
  88. kreg_sensor_water_vapor_saturation_pressure_h2o_h2o2 = REG_INDEX(1, 0, 26), // hpa
  89. kreg_sensor_temperature0 = REG_INDEX(2, 0, 0), // 温度1
  90. kreg_sensor_temperature1 = REG_INDEX(2, 0, 1), // 温度2
  91. kreg_sensor_temperature2 = REG_INDEX(2, 0, 2), // 温度3
  92. kreg_sensor_temperature3 = REG_INDEX(2, 0, 3), // 温度4
  93. kreg_sensor_temperature4 = REG_INDEX(2, 0, 4), // 温度5
  94. kreg_sensor_temperature5 = REG_INDEX(2, 0, 5), // 温度6
  95. kreg_sensor_temperature6 = REG_INDEX(2, 0, 6), // 温度7
  96. kreg_sensor_temperature7 = REG_INDEX(2, 0, 7), // 温度8
  97. kreg_sensor_temperature8 = REG_INDEX(2, 0, 8), // 温度9
  98. kreg_sensor_temperature9 = REG_INDEX(2, 0, 9), // 温度10
  99. kreg_sensor_pressure0 = REG_INDEX(2, 10, 0), // 压力0
  100. kreg_sensor_pressure1 = REG_INDEX(2, 10, 1), // 压力1
  101. kreg_sensor_pressure2 = REG_INDEX(2, 10, 2), // 压力2
  102. kreg_sensor_pressure3 = REG_INDEX(2, 10, 3), // 压力3
  103. kreg_sensor_pressure4 = REG_INDEX(2, 10, 4), // 压力4
  104. kreg_sensor_pressure5 = REG_INDEX(2, 10, 5), // 压力5
  105. kreg_sensor_pressure6 = REG_INDEX(2, 10, 6), // 压力6
  106. kreg_sensor_pressure7 = REG_INDEX(2, 10, 7), // 压力7
  107. kreg_sensor_pressure8 = REG_INDEX(2, 10, 8), // 压力8
  108. kreg_sensor_pressure9 = REG_INDEX(2, 10, 9), // 压力9
  109. kreg_sensor_humidity0 = REG_INDEX(2, 20, 0), // 湿度0
  110. kreg_sensor_humidity1 = REG_INDEX(2, 20, 1), // 湿度1
  111. kreg_sensor_humidity2 = REG_INDEX(2, 20, 2), // 湿度2
  112. kreg_sensor_humidity3 = REG_INDEX(2, 20, 3), // 湿度3
  113. kreg_sensor_humidity4 = REG_INDEX(2, 20, 4), // 湿度4
  114. kreg_sensor_humidity5 = REG_INDEX(2, 20, 5), // 湿度5
  115. kreg_sensor_humidity6 = REG_INDEX(2, 20, 6), // 湿度6
  116. kreg_sensor_humidity7 = REG_INDEX(2, 20, 7), // 湿度7
  117. kreg_sensor_humidity8 = REG_INDEX(2, 20, 8), // 湿度8
  118. kreg_sensor_humidity9 = REG_INDEX(2, 20, 9), // 湿度9
  119. /*******************************************************************************
  120. * *
  121. *******************************************************************************/
  122. kreg_pwm0_ctrl = REG_INDEX(3, 0, 0), //
  123. kreg_pwm0_duty = REG_INDEX(3, 0, 1), //
  124. kreg_pwm0_freq = REG_INDEX(3, 0, 2), //
  125. kreg_pwm1_ctrl = REG_INDEX(3, 10, 0), //
  126. kreg_pwm1_duty = REG_INDEX(3, 10, 1), //
  127. kreg_pwm1_freq = REG_INDEX(3, 10, 2), //
  128. kreg_pwm2_ctrl = REG_INDEX(3, 20, 0), //
  129. kreg_pwm2_duty = REG_INDEX(3, 20, 1), //
  130. kreg_pwm2_freq = REG_INDEX(3, 20, 2), //
  131. kreg_pwm3_ctrl = REG_INDEX(3, 30, 0), //
  132. kreg_pwm3_duty = REG_INDEX(3, 30, 1), //
  133. kreg_pwm3_freq = REG_INDEX(3, 30, 2), //
  134. kreg_pwm4_ctrl = REG_INDEX(3, 40, 0), //
  135. kreg_pwm4_duty = REG_INDEX(3, 40, 1), //
  136. kreg_pwm4_freq = REG_INDEX(3, 40, 2), //
  137. kreg_pwm5_ctrl = REG_INDEX(3, 50, 0), //
  138. kreg_pwm5_duty = REG_INDEX(3, 50, 1), //
  139. kreg_pwm5_freq = REG_INDEX(3, 50, 2), //
  140. kreg_pwm6_ctrl = REG_INDEX(3, 60, 0), //
  141. kreg_pwm6_duty = REG_INDEX(3, 60, 1), //
  142. kreg_pwm6_freq = REG_INDEX(3, 60, 2), //
  143. kreg_pwm7_ctrl = REG_INDEX(3, 70, 0), //
  144. kreg_pwm7_duty = REG_INDEX(3, 70, 1), //
  145. kreg_pwm7_freq = REG_INDEX(3, 70, 2), //
  146. /*******************************************************************************
  147. * *
  148. *******************************************************************************/
  149. /*******************************************************************************
  150. * MOTOR_DEFAULT *
  151. *******************************************************************************/
  152. kreg_robot_move = REG_INDEX(10, 0, 0), // 机器人X是否在移动
  153. kreg_robot_pos = REG_INDEX(10, 0, 1), // 机器人x坐标
  154. kreg_robot_velocity = REG_INDEX(10, 0, 2), // 机器人x速度
  155. kreg_robot_torque = REG_INDEX(10, 0, 3), // 机器人x电流
  156. kreg_motor_shift = REG_INDEX(10, 50, 0), // x偏移
  157. kreg_motor_shaft = REG_INDEX(10, 50, 1), // x轴是否反转
  158. kreg_motor_one_circle_pulse = REG_INDEX(10, 50, 2), // x轴一圈脉冲数
  159. kreg_motor_one_circle_pulse_denominator = REG_INDEX(10, 50, 3), // 设置一圈脉冲数的分母
  160. kreg_motor_default_velocity = REG_INDEX(10, 50, 4), // 默认速度
  161. kreg_motor_default_acc = REG_INDEX(10, 50, 5), // 默认加速度
  162. kreg_motor_default_dec = REG_INDEX(10, 50, 6), // 默认减速度
  163. kreg_motor_default_break_dec = REG_INDEX(10, 50, 7), // 默认减速度
  164. kreg_stepmotor_ihold = REG_INDEX(10, 50, 8), // 步进电机电流配置
  165. kreg_stepmotor_irun = REG_INDEX(10, 50, 9), // 步进电机电流配置
  166. kreg_stepmotor_iholddelay = REG_INDEX(10, 50, 10), // 步进电机电流配置
  167. kreg_stepmotor_iglobalscaler = REG_INDEX(10, 50, 11), // 步进电机电流配置
  168. kreg_motor_run_to_zero_max_d = REG_INDEX(10, 50, 21), // x轴回零最大距离
  169. kreg_motor_look_zero_edge_max_d = REG_INDEX(10, 50, 22), // x轴找零边缘最大距离
  170. kreg_motor_run_to_zero_speed = REG_INDEX(10, 50, 23), // 回零速度
  171. kreg_motor_run_to_zero_dec = REG_INDEX(10, 50, 24), // 回零减速度
  172. kreg_motor_look_zero_edge_speed = REG_INDEX(10, 50, 25), // 找零边缘速度
  173. kreg_motor_look_zero_edge_dec = REG_INDEX(10, 50, 26), // 找零边缘减速度
  174. kreg_motor_default_torque = REG_INDEX(10, 50, 27), // 默认扭矩
  175. kreg_motor_max_d = REG_INDEX(10, 50, 28), // 最大限制距离
  176. kreg_motor_min_d = REG_INDEX(10, 50, 29), // 最小限制距离
  177. /*******************************************************************************
  178. * MOTOR_X *
  179. *******************************************************************************/
  180. kreg_robot_x_move = REG_INDEX(11, 0, 0), // 机器人X是否在移动
  181. kreg_robot_x_pos = REG_INDEX(11, 0, 1), // 机器人x坐标
  182. kreg_robot_x_velocity = REG_INDEX(11, 0, 2), // 机器人x速度
  183. kreg_robot_x_torque = REG_INDEX(11, 0, 3), // 机器人x电流
  184. kreg_motor_x_shift = REG_INDEX(11, 50, 0), // x偏移
  185. kreg_motor_x_shaft = REG_INDEX(11, 50, 1), // x轴是否反转
  186. kreg_motor_x_one_circle_pulse = REG_INDEX(11, 50, 2), // x轴一圈脉冲数
  187. kreg_motor_x_default_velocity = REG_INDEX(11, 50, 3), // 默认速度
  188. kreg_motor_x_default_acc = REG_INDEX(11, 50, 4), // 默认加速度
  189. kreg_motor_x_default_dec = REG_INDEX(11, 50, 5), // 默认减速度
  190. kreg_motor_x_default_break_dec = REG_INDEX(11, 50, 6), // 默认减速度
  191. kreg_stepmotor_x_ihold = REG_INDEX(11, 50, 7), // 步进电机电流配置
  192. kreg_stepmotor_x_irun = REG_INDEX(11, 50, 8), // 步进电机电流配置
  193. kreg_stepmotor_x_iholddelay = REG_INDEX(11, 50, 9), // 步进电机电流配置
  194. kreg_motor_run_to_zero_max_x_d = REG_INDEX(11, 50, 20), // x轴回零最大距离
  195. kreg_motor_look_zero_edge_max_x_d = REG_INDEX(11, 50, 21), // x轴找零边缘最大距离
  196. kreg_motor_x_run_to_zero_speed = REG_INDEX(11, 50, 22), // 回零速度
  197. kreg_motor_x_run_to_zero_dec = REG_INDEX(11, 50, 23), // 回零减速度
  198. kreg_motor_x_look_zero_edge_speed = REG_INDEX(11, 50, 24), // 找零边缘速度
  199. kreg_motor_x_look_zero_edge_dec = REG_INDEX(11, 50, 25), // 找零边缘减速度
  200. kreg_motor_x_default_torque = REG_INDEX(11, 50, 26), // 默认扭矩
  201. kreg_motor_max_x_d = REG_INDEX(11, 50, 28), // 最大限制距离
  202. kreg_motor_min_x_d = REG_INDEX(11, 50, 29), // 最小限制距离
  203. /*******************************************************************************
  204. * MOTOR_Y *
  205. *******************************************************************************/
  206. kreg_robot_y_move = REG_INDEX(12, 0, 0), // 机器人X是否在移动
  207. kreg_robot_y_pos = REG_INDEX(12, 0, 1), // 机器人x坐标
  208. kreg_robot_y_velocity = REG_INDEX(12, 0, 2), // 机器人x速度
  209. kreg_robot_y_torque = REG_INDEX(12, 0, 3), // 机器人x电流
  210. kreg_motor_y_shift = REG_INDEX(12, 50, 0), // x偏移
  211. kreg_motor_y_shaft = REG_INDEX(12, 50, 1), // x轴是否反转
  212. kreg_motor_y_one_circle_pulse = REG_INDEX(12, 50, 2), // x轴一圈脉冲数
  213. kreg_motor_y_default_velocity = REG_INDEX(12, 50, 3), // 默认速度
  214. kreg_motor_y_default_acc = REG_INDEX(12, 50, 4), // 默认加速度
  215. kreg_motor_y_default_dec = REG_INDEX(12, 50, 5), // 默认减速度
  216. kreg_motor_y_default_break_dec = REG_INDEX(12, 50, 6), // 默认减速度
  217. kreg_stepmotor_y_ihold = REG_INDEX(12, 50, 7), // 步进电机电流配置
  218. kreg_stepmotor_y_irun = REG_INDEX(12, 50, 8), // 步进电机电流配置
  219. kreg_stepmotor_y_iholddelay = REG_INDEX(12, 50, 9), // 步进电机电流配置
  220. kreg_motor_run_to_zero_max_y_d = REG_INDEX(12, 50, 20), // x轴回零最大距离
  221. kreg_motor_look_zero_edge_max_y_d = REG_INDEX(12, 50, 21), // x轴找零边缘最大距离
  222. kreg_motor_y_run_to_zero_speed = REG_INDEX(12, 50, 22), // 回零速度
  223. kreg_motor_y_run_to_zero_dec = REG_INDEX(12, 50, 23), // 回零减速度
  224. kreg_motor_y_look_zero_edge_speed = REG_INDEX(12, 50, 24), // 找零边缘速度
  225. kreg_motor_y_look_zero_edge_dec = REG_INDEX(12, 50, 25), // 找零边缘减速度
  226. kreg_motor_y_default_torque = REG_INDEX(12, 50, 26), // 默认扭矩
  227. kreg_motor_max_y_d = REG_INDEX(12, 50, 28), // 最大限制距离
  228. kreg_motor_min_y_d = REG_INDEX(12, 50, 29), // 最小限制距离
  229. /*******************************************************************************
  230. * MOTOR_Z *
  231. *******************************************************************************/
  232. kreg_robot_z_move = REG_INDEX(13, 0, 0), // 机器人X是否在移动
  233. kreg_robot_z_pos = REG_INDEX(13, 0, 1), // 机器人x坐标
  234. kreg_robot_z_velocity = REG_INDEX(13, 0, 2), // 机器人x速度
  235. kreg_robot_z_torque = REG_INDEX(13, 0, 3), // 机器人x电流
  236. kreg_motor_z_shift = REG_INDEX(13, 50, 0), // x偏移
  237. kreg_motor_z_shaft = REG_INDEX(13, 50, 1), // x轴是否反转
  238. kreg_motor_z_one_circle_pulse = REG_INDEX(13, 50, 2), // x轴一圈脉冲数
  239. kreg_motor_z_default_velocity = REG_INDEX(13, 50, 3), // 默认速度
  240. kreg_motor_z_default_acc = REG_INDEX(13, 50, 4), // 默认加速度
  241. kreg_motor_z_default_dec = REG_INDEX(13, 50, 5), // 默认减速度
  242. kreg_motor_z_default_break_dec = REG_INDEX(13, 50, 6), // 默认减速度
  243. kreg_stepmotor_z_ihold = REG_INDEX(13, 50, 7), // 步进电机电流配置
  244. kreg_stepmotor_z_irun = REG_INDEX(13, 50, 8), // 步进电机电流配置
  245. kreg_stepmotor_z_iholddelay = REG_INDEX(13, 50, 9), // 步进电机电流配置
  246. kreg_motor_run_to_zero_max_z_d = REG_INDEX(13, 50, 20), // x轴回零最大距离
  247. kreg_motor_look_zero_edge_max_z_d = REG_INDEX(13, 50, 21), // x轴找零边缘最大距离
  248. kreg_motor_z_run_to_zero_speed = REG_INDEX(13, 50, 22), // 回零速度
  249. kreg_motor_z_run_to_zero_dec = REG_INDEX(13, 50, 23), // 回零减速度
  250. kreg_motor_z_look_zero_edge_speed = REG_INDEX(13, 50, 24), // 找零边缘速度
  251. kreg_motor_z_look_zero_edge_dec = REG_INDEX(13, 50, 25), // 找零边缘减速度
  252. kreg_motor_z_default_torque = REG_INDEX(13, 50, 26), // 默认扭矩
  253. kreg_motor_max_z_d = REG_INDEX(13, 50, 28), // 最大限制距离
  254. kreg_motor_min_z_d = REG_INDEX(13, 50, 29), // 最小限制距离
  255. kreg_xyrobot_robot_type = REG_INDEX(20, 50, 0), // 机器人类型 0:hbot 1:corexy
  256. /*******************************************************************************
  257. * PID控制器(3000->4000) *
  258. *******************************************************************************/
  259. kreg_pid_target = REG_INDEX(30, 0, 0), // 目标数值
  260. kreg_pid_nowoutput = REG_INDEX(30, 0, 1), // 当前输出
  261. kreg_pid_feedbackval = REG_INDEX(30, 0, 2), // 当前输出
  262. kreg_pid_kp = REG_INDEX(30, 50, 0), // kp
  263. kreg_pid_ki = REG_INDEX(30, 50, 1), // ki
  264. kreg_pid_kd = REG_INDEX(30, 50, 2), // kd
  265. kreg_pid_max_output = REG_INDEX(30, 50, 3), // 最大输出
  266. kreg_pid_min_output = REG_INDEX(30, 50, 4), // 最小输出
  267. kreg_pid_max_integral = REG_INDEX(30, 50, 5), // 最大积分
  268. kreg_pid_min_integral = REG_INDEX(30, 50, 6), // 最小积分
  269. kreg_error_limit = REG_INDEX(30, 50, 7), // 误差限制
  270. kreg_compute_interval = REG_INDEX(30, 50, 8), // 计算间隔
  271. /*******************************************************************************
  272. * *
  273. *******************************************************************************/
  274. kreg_fan0_ctrl_speed_level = REG_INDEX(31, 0, 0), // 风扇转速0,1,2,3
  275. kreg_fan1_ctrl_speed_level = REG_INDEX(31, 0, 1), // 风扇转速0,1,2,3
  276. kreg_fan2_ctrl_speed_level = REG_INDEX(31, 0, 2), // 风扇转速0,1,2,3
  277. kreg_fan3_ctrl_speed_level = REG_INDEX(31, 0, 3), // 风扇转速0,1,2,3
  278. kreg_fan4_ctrl_speed_level = REG_INDEX(31, 0, 4), // 风扇转速0,1,2,3
  279. kreg_fan0_speed_level = REG_INDEX(31, 10, 0), // 风扇实时转速0,1,2,3
  280. kreg_fan1_speed_level = REG_INDEX(31, 10, 1), // 风扇实时转速0,1,2,3
  281. kreg_fan2_speed_level = REG_INDEX(31, 10, 2), // 风扇实时转速0,1,2,3
  282. kreg_fan3_speed_level = REG_INDEX(31, 10, 3), // 风扇实时转速0,1,2,3
  283. kreg_fan4_speed_level = REG_INDEX(31, 10, 4), // 风扇实时转速0,1,2,3
  284. kreg_pwm_pump0_ctrl_speed_level = REG_INDEX(32, 0, 0), // PWM水泵0,1,2,3
  285. kreg_pwm_pump1_ctrl_speed_level = REG_INDEX(32, 0, 1), // PWM水泵0,1,2,3
  286. kreg_pwm_pump2_ctrl_speed_level = REG_INDEX(32, 0, 2), // PWM水泵0,1,2,3
  287. kreg_pwm_pump3_ctrl_speed_level = REG_INDEX(32, 0, 3), // PWM水泵0,1,2,3
  288. kreg_pwm_pump4_ctrl_speed_level = REG_INDEX(32, 0, 4), // PWM水泵0,1,2,3
  289. kreg_pwm_pump0_speed_level = REG_INDEX(32, 10, 0), // PWM水泵0,1,2,3
  290. kreg_pwm_pump1_speed_level = REG_INDEX(32, 10, 1), // PWM水泵0,1,2,3
  291. kreg_pwm_pump2_speed_level = REG_INDEX(32, 10, 2), // PWM水泵0,1,2,3
  292. kreg_pwm_pump3_speed_level = REG_INDEX(32, 10, 3), // PWM水泵0,1,2,3
  293. kreg_pwm_pump4_speed_level = REG_INDEX(32, 10, 4), // PWM水泵0,1,2,3
  294. /*******************************************************************************
  295. * *
  296. *******************************************************************************/
  297. kreg_pipette_pos_ul = REG_INDEX(40, 0, 0), // 移液枪位置
  298. kreg_pipette_capactitance_val = REG_INDEX(40, 0, 1), // 移液枪电容值
  299. kreg_pipette_tip_state = REG_INDEX(40, 0, 2), // 移动液枪tip状态
  300. kreg_pipette_limit_ul = REG_INDEX(40, 50, 0), // 移液枪ul限制
  301. /*******************************************************************************
  302. * smartADC *
  303. *******************************************************************************/
  304. kreg_self_reflecting_laser_sensor_transmitting_power = REG_INDEX(41, 0, 0), // 发射功率
  305. kreg_self_reflecting_laser_sensor_receiving_tube_gain = REG_INDEX(41, 0, 1), // 接收管放大倍数
  306. kreg_self_reflecting_laser_sensor_sample_interval_ms = REG_INDEX(41, 0, 2), // 采样率
  307. kreg_self_reflecting_laser_sensor_num_samples = REG_INDEX(41, 0, 3), // 采样点数
  308. /*******************************************************************************
  309. * smartADC *
  310. *******************************************************************************/
  311. // scan action
  312. kreg_boditech_optical_scan_type = REG_INDEX(42, 0, 0), // 0 t光学,1 f光学
  313. kreg_boditech_optical_scan_start_pos = REG_INDEX(42, 0, 1),
  314. kreg_boditech_optical_scan_direction = REG_INDEX(42, 0, 2),
  315. kreg_boditech_optical_scan_step_interval = REG_INDEX(42, 0, 3),
  316. kreg_boditech_optical_scan_pointnum = REG_INDEX(42, 0, 4),
  317. kreg_boditech_optical_channel_select_num = REG_INDEX(42, 0, 5),
  318. kreg_boditech_optical_laster_gain = REG_INDEX(42, 0, 6),
  319. kreg_boditech_optical_scan_gain = REG_INDEX(42, 0, 7),
  320. kreg_boditech_optical_trf_uvled_on_duration_us = REG_INDEX(42, 0, 8),
  321. kreg_boditech_optical_trf_uvled_off_duration_us = REG_INDEX(42, 0, 9),
  322. kreg_boditech_optical_trf_scan_delay_us = REG_INDEX(42, 0, 10),
  323. kreg_boditech_optical_trf_scan_duration_us = REG_INDEX(42, 0, 11),
  324. kreg_boditech_optical_scan_gain_adjust_suggestion = REG_INDEX(42, 0, 12),
  325. kreg_boditech_optical_adc_result_overflow = REG_INDEX(42, 0, 13),
  326. kreg_boditech_optical_laster_intensity = REG_INDEX(42, 0, 14),
  327. //
  328. kreg_laster_scaner_scan_type = REG_INDEX(43, 0, 0), // 0 t光学,1 f光学
  329. kreg_laster_scaner_scan_start_pos = REG_INDEX(43, 0, 1),
  330. kreg_laster_scaner_scan_direction = REG_INDEX(43, 0, 2),
  331. kreg_laster_scaner_scan_step_interval = REG_INDEX(43, 0, 3),
  332. kreg_laster_scaner_scan_pointnum = REG_INDEX(43, 0, 4),
  333. kreg_laster_scaner_laster_gain = REG_INDEX(43, 0, 5),
  334. kreg_laster_scaner_scan_gain = REG_INDEX(43, 0, 6),
  335. kreg_laster_scaner_scan_gain_adjust_suggestion = REG_INDEX(43, 0, 12),
  336. kreg_laster_scaner_adc_result_overflow = REG_INDEX(43, 0, 13),
  337. kreg_laster_scaner_laster_intensity = REG_INDEX(43, 0, 14),
  338. } reg_index_t;
  339. } // namespace iflytop