zcancmder_v2
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.

209 lines
14 KiB

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. #pragma once
  2. #include <stdint.h>
  3. namespace iflytop {
  4. using namespace std;
  5. #define REG_INDEX(type, subconfigindex) (type + subconfigindex)
  6. typedef enum {
  7. /*******************************************************************************
  8. * ģͨú״̬(0->1000) *
  9. *******************************************************************************/
  10. kreg_module_version = REG_INDEX(0, 0), // ģ���汾
  11. kreg_module_type = REG_INDEX(0, 1), // �����
  12. kreg_module_status = REG_INDEX(0, 2), // 0idle,1busy,2error
  13. kreg_module_errorcode = REG_INDEX(0, 3), // inited_flag
  14. kreg_module_initflag = REG_INDEX(0, 4), // inited_flag
  15. kreg_module_enableflag = REG_INDEX(0, 5), // 0idle,1busy,2error
  16. kreg_module_errorbitflag0 = REG_INDEX(0, 6), // ģ���쳣��־��bit��ÿ��ģ���Զ���
  17. kreg_module_errorbitflag1 = REG_INDEX(0, 7), //
  18. kreg_module_last_cmd_exec_status = REG_INDEX(20, 0), // ��һ��ָ��ִ�е�״̬
  19. kreg_module_last_cmd_exec_val0 = REG_INDEX(20, 1), // ��һ��ָ��ִ�еĽ���0
  20. kreg_module_last_cmd_exec_val1 = REG_INDEX(20, 2), // ��һ��ָ��ִ�еĽ���1
  21. kreg_module_last_cmd_exec_val2 = REG_INDEX(20, 3), // ��һ��ָ��ִ�еĽ���2
  22. kreg_module_last_cmd_exec_val3 = REG_INDEX(20, 4), // ��һ��ָ��ִ�еĽ���3
  23. kreg_module_last_cmd_exec_val4 = REG_INDEX(20, 5), // ��һ��ָ��ִ�еĽ���4
  24. kreg_module_last_cmd_exec_val5 = REG_INDEX(20, 6), // ��һ��ָ��ִ�еĽ���5
  25. kreg_module_private0 = REG_INDEX(200, 0), // ģ��˽��״̬0
  26. kreg_module_private1 = REG_INDEX(200, 1), // ģ��˽��״̬1
  27. kreg_module_private2 = REG_INDEX(200, 2), // ģ��˽��״̬2
  28. kreg_module_private3 = REG_INDEX(200, 3), // ģ��˽��״̬3
  29. kreg_module_private4 = REG_INDEX(200, 4), // ģ��˽��״̬4
  30. kreg_module_private5 = REG_INDEX(200, 5), // ģ��˽��״̬5
  31. kreg_module_private6 = REG_INDEX(200, 6), // ģ��˽��״̬6
  32. kreg_module_private7 = REG_INDEX(200, 7), // ģ��˽��״̬7
  33. kreg_module_private8 = REG_INDEX(200, 8), // ģ��˽��״̬8
  34. kreg_module_private9 = REG_INDEX(200, 9), // ģ��˽��״̬9
  35. /*******************************************************************************
  36. * ú״̬(1000->1999 *
  37. *******************************************************************************/
  38. kreg_motor_x_shift = REG_INDEX(1000, 0), // xƫ��
  39. kreg_motor_y_shift = REG_INDEX(1000, 1), // yƫ��
  40. kreg_motor_z_shift = REG_INDEX(1000, 2), // zƫ��
  41. kreg_motor_x_shaft = REG_INDEX(1000, 3), // x���Ƿ���ת
  42. kreg_motor_y_shaft = REG_INDEX(1000, 4), // y���Ƿ���ת
  43. kreg_motor_z_shaft = REG_INDEX(1000, 5), // z���Ƿ���ת
  44. kreg_motor_x_one_circle_pulse = REG_INDEX(1000, 6), // x��һȦ������
  45. kreg_motor_y_one_circle_pulse = REG_INDEX(1000, 7), // y��һȦ������
  46. kreg_motor_z_one_circle_pulse = REG_INDEX(1000, 8), // z��һȦ������
  47. kreg_motor_default_velocity = REG_INDEX(1000, 9), // Ĭ���ٶ�
  48. kreg_motor_default_acc = REG_INDEX(1000, 10), // Ĭ�ϼ��ٶ�
  49. kreg_motor_default_dec = REG_INDEX(1000, 11), // Ĭ�ϼ��ٶ�
  50. kreg_motor_default_break_dec = REG_INDEX(1000, 12), // Ĭ�ϼ��ٶ�
  51. kreg_stepmotor_ihold = REG_INDEX(1000, 13), // ����������������
  52. kreg_stepmotor_irun = REG_INDEX(1000, 14), // ����������������
  53. kreg_stepmotor_iholddelay = REG_INDEX(1000, 15), // ����������������
  54. kreg_motor_run_to_zero_max_x_d = REG_INDEX(1050, 0), // x��������������
  55. kreg_motor_run_to_zero_max_y_d = REG_INDEX(1050, 1), // y��������������
  56. kreg_motor_run_to_zero_max_z_d = REG_INDEX(1050, 2), // z��������������
  57. kreg_motor_look_zero_edge_max_x_d = REG_INDEX(1050, 3), // x��������Ե��������
  58. kreg_motor_look_zero_edge_max_y_d = REG_INDEX(1050, 4), // y��������Ե��������
  59. kreg_motor_look_zero_edge_max_z_d = REG_INDEX(1050, 5), // z��������Ե��������
  60. kreg_motor_run_to_zero_speed = REG_INDEX(1050, 6), // �����ٶ�
  61. kreg_motor_run_to_zero_dec = REG_INDEX(1050, 7), // �������ٶ�
  62. kreg_motor_look_zero_edge_speed = REG_INDEX(1050, 8), // ������Ե�ٶ�
  63. kreg_motor_look_zero_edge_dec = REG_INDEX(1050, 9), // ������Ե���ٶ�
  64. kreg_xyrobot_robot_type = REG_INDEX(1100, 0), // ���������� 0:hbot 1:corexy
  65. kreg_robot_move = REG_INDEX(1500, 0), // �������Ƿ����ƶ�
  66. kreg_robot_x_pos = REG_INDEX(1500, 1), // ������x����
  67. kreg_robot_y_pos = REG_INDEX(1500, 2), // ������y����
  68. kreg_robot_z_pos = REG_INDEX(1500, 3), // ������z����
  69. kreg_robot_x_velocity = REG_INDEX(1500, 4), // ������x�ٶ�
  70. kreg_robot_y_velocity = REG_INDEX(1500, 5), // ������y�ٶ�
  71. kreg_robot_z_velocity = REG_INDEX(1500, 6), // ������z�ٶ�
  72. kreg_robot_x_torque = REG_INDEX(1500, 7), // ������x����
  73. kreg_robot_y_torque = REG_INDEX(1500, 8), // ������y����
  74. kreg_robot_z_torque = REG_INDEX(1500, 9), // ������z����
  75. /*******************************************************************************
  76. * ״̬(2000->2999) *
  77. *******************************************************************************/
  78. kreg_sensor_current = REG_INDEX(2000, 0), // ����
  79. kreg_sensor_voltage = REG_INDEX(2000, 1), // ��ѹ
  80. kreg_sensor_temperature = REG_INDEX(2000, 2), // �¶�
  81. kreg_sensor_humidity = REG_INDEX(2000, 3), // ʪ��
  82. kreg_sensor_wind_speed = REG_INDEX(2000, 4), // ����
  83. kreg_sensor_wind_dir = REG_INDEX(2000, 5), // ����
  84. kreg_sensor_air_press = REG_INDEX(2000, 6), // ��ѹ
  85. kreg_sensor_pm25 = REG_INDEX(2000, 7), // PM2.5
  86. kreg_sensor_pm10 = REG_INDEX(2000, 8), // PM10
  87. kreg_sensor_co = REG_INDEX(2000, 9), // CO
  88. kreg_sensor_co2 = REG_INDEX(2000, 10), // CO
  89. kreg_sensor_no2 = REG_INDEX(2000, 11), // NO2
  90. kreg_sensor_so2 = REG_INDEX(2000, 12), // SO2
  91. kreg_sensor_o3 = REG_INDEX(2000, 13), // O3
  92. kreg_sensor_light_intensity = REG_INDEX(2000, 14), // ����ǿ��
  93. kreg_sensor_radiation = REG_INDEX(2000, 15), // �ܷ�����
  94. kreg_sensor_hydrogen_peroxide_volume = REG_INDEX(2000, 16), // ppm 0x0100
  95. kreg_sensor_h2o_h2o2_rs = REG_INDEX(2000, 17), // %RS * 100
  96. kreg_sensor_relative_humidity = REG_INDEX(2000, 18), // %RH * 100
  97. kreg_sensor_absolute_hydrogen_peroxide = REG_INDEX(2000, 19), // mg/m3
  98. kreg_sensor_h2o_h2o2dew_point_temperature = REG_INDEX(2000, 20), // ��C * 100
  99. kreg_sensor_water_volume = REG_INDEX(2000, 21), // ppm
  100. kreg_sensor_water_vapor_pressure = REG_INDEX(2000, 22), // hpa
  101. kreg_sensor_absolute_humidity = REG_INDEX(2000, 23), // g/m3
  102. kreg_sensor_water_vapor_saturation_pressure_h2o = REG_INDEX(2000, 24), // hpa
  103. kreg_sensor_h2o2_vapor_pressure = REG_INDEX(2000, 25), // hpa
  104. kreg_sensor_water_vapor_saturation_pressure_h2o_h2o2 = REG_INDEX(2000, 26), // hpa
  105. kreg_sensor_temperature0 = REG_INDEX(2100, 0), // �¶�1
  106. kreg_sensor_temperature1 = REG_INDEX(2100, 1), // �¶�2
  107. kreg_sensor_temperature2 = REG_INDEX(2100, 2), // �¶�3
  108. kreg_sensor_temperature3 = REG_INDEX(2100, 3), // �¶�4
  109. kreg_sensor_temperature4 = REG_INDEX(2100, 4), // �¶�5
  110. kreg_sensor_temperature5 = REG_INDEX(2100, 5), // �¶�6
  111. kreg_sensor_temperature6 = REG_INDEX(2100, 6), // �¶�7
  112. kreg_sensor_temperature7 = REG_INDEX(2100, 7), // �¶�8
  113. kreg_sensor_temperature8 = REG_INDEX(2100, 8), // �¶�9
  114. kreg_sensor_temperature9 = REG_INDEX(2100, 9), // �¶�10
  115. kreg_sensor_pressure0 = REG_INDEX(2120, 0), // ѹ��0
  116. kreg_sensor_pressure1 = REG_INDEX(2120, 1), // ѹ��1
  117. kreg_sensor_pressure2 = REG_INDEX(2120, 2), // ѹ��2
  118. kreg_sensor_pressure3 = REG_INDEX(2120, 3), // ѹ��3
  119. kreg_sensor_pressure4 = REG_INDEX(2120, 4), // ѹ��4
  120. kreg_sensor_pressure5 = REG_INDEX(2120, 5), // ѹ��5
  121. kreg_sensor_pressure6 = REG_INDEX(2120, 6), // ѹ��6
  122. kreg_sensor_pressure7 = REG_INDEX(2120, 7), // ѹ��7
  123. kreg_sensor_pressure8 = REG_INDEX(2120, 8), // ѹ��8
  124. kreg_sensor_pressure9 = REG_INDEX(2120, 9), // ѹ��9
  125. kreg_sensor_humidity0 = REG_INDEX(2130, 0), // ʪ��0
  126. kreg_sensor_humidity1 = REG_INDEX(2130, 1), // ʪ��1
  127. kreg_sensor_humidity2 = REG_INDEX(2130, 2), // ʪ��2
  128. kreg_sensor_humidity3 = REG_INDEX(2130, 3), // ʪ��3
  129. kreg_sensor_humidity4 = REG_INDEX(2130, 4), // ʪ��4
  130. kreg_sensor_humidity5 = REG_INDEX(2130, 5), // ʪ��5
  131. kreg_sensor_humidity6 = REG_INDEX(2130, 6), // ʪ��6
  132. kreg_sensor_humidity7 = REG_INDEX(2130, 7), // ʪ��7
  133. kreg_sensor_humidity8 = REG_INDEX(2130, 8), // ʪ��8
  134. kreg_sensor_humidity9 = REG_INDEX(2130, 9), // ʪ��9
  135. /*******************************************************************************
  136. * PID(3000->4000) *
  137. *******************************************************************************/
  138. kreg_pid_kp = REG_INDEX(3000, 0), // kp
  139. kreg_pid_ki = REG_INDEX(3000, 1), // ki
  140. kreg_pid_kd = REG_INDEX(3000, 2), // kd
  141. kreg_pid_max_output = REG_INDEX(3000, 3), // ��������
  142. kreg_pid_min_output = REG_INDEX(3000, 4), // ������
  143. kreg_pid_max_integral = REG_INDEX(3000, 5), // ��������
  144. kreg_pid_min_integral = REG_INDEX(3000, 6), // ������
  145. kreg_error_limit = REG_INDEX(3000, 7), // ��������
  146. kreg_compute_interval = REG_INDEX(3000, 8), // ��������
  147. kreg_pid_target = REG_INDEX(3050, 0), // Ŀ����ֵ
  148. kreg_pid_nowoutput = REG_INDEX(3050, 1), // ��ǰ����
  149. kreg_pid_feedbackval = REG_INDEX(3050, 2), // ��ǰ����
  150. /*******************************************************************************
  151. * ȿ *
  152. *******************************************************************************/
  153. kreg_fan0_ctrl_speed_level = REG_INDEX(4000, 0), // ����ת��0,1,2,3
  154. kreg_fan1_ctrl_speed_level = REG_INDEX(4000, 1), // ����ת��0,1,2,3
  155. kreg_fan2_ctrl_speed_level = REG_INDEX(4000, 2), // ����ת��0,1,2,3
  156. kreg_fan3_ctrl_speed_level = REG_INDEX(4000, 3), // ����ת��0,1,2,3
  157. kreg_fan4_ctrl_speed_level = REG_INDEX(4000, 4), // ����ת��0,1,2,3
  158. kreg_fan0_speed_level = REG_INDEX(4010, 0), // ����ʵʱת��0,1,2,3
  159. kreg_fan1_speed_level = REG_INDEX(4010, 1), // ����ʵʱת��0,1,2,3
  160. kreg_fan2_speed_level = REG_INDEX(4010, 2), // ����ʵʱת��0,1,2,3
  161. kreg_fan3_speed_level = REG_INDEX(4010, 3), // ����ʵʱת��0,1,2,3
  162. kreg_fan4_speed_level = REG_INDEX(4010, 4), // ����ʵʱת��0,1,2,3
  163. kreg_fan0_e_state = REG_INDEX(4020, 0), // �����Ƿ��������� 0:���� 1:�쳣
  164. kreg_fan1_e_state = REG_INDEX(4020, 1), // �����Ƿ��������� 0:���� 1:�쳣
  165. kreg_fan2_e_state = REG_INDEX(4020, 2), // �����Ƿ��������� 0:���� 1:�쳣
  166. kreg_fan3_e_state = REG_INDEX(4020, 3), // �����Ƿ��������� 0:���� 1:�쳣
  167. kreg_fan4_e_state = REG_INDEX(4020, 4), // �����Ƿ��������� 0:���� 1:�쳣
  168. kreg_pwm_pump0_ctrl_speed_level = REG_INDEX(4030, 0), // PWMˮ��0,1,2,3
  169. kreg_pwm_pump1_ctrl_speed_level = REG_INDEX(4030, 1), // PWMˮ��0,1,2,3
  170. kreg_pwm_pump2_ctrl_speed_level = REG_INDEX(4030, 2), // PWMˮ��0,1,2,3
  171. kreg_pwm_pump3_ctrl_speed_level = REG_INDEX(4030, 3), // PWMˮ��0,1,2,3
  172. kreg_pwm_pump4_ctrl_speed_level = REG_INDEX(4030, 4), // PWMˮ��0,1,2,3
  173. kreg_pwm_pump0_speed_level = REG_INDEX(4040, 0), // PWMˮ��0,1,2,3
  174. kreg_pwm_pump1_speed_level = REG_INDEX(4040, 1), // PWMˮ��0,1,2,3
  175. kreg_pwm_pump2_speed_level = REG_INDEX(4040, 2), // PWMˮ��0,1,2,3
  176. kreg_pwm_pump3_speed_level = REG_INDEX(4040, 3), // PWMˮ��0,1,2,3
  177. kreg_pwm_pump4_speed_level = REG_INDEX(4040, 4), // PWMˮ��0,1,2,3
  178. kreg_pwm_pump0_e_state = REG_INDEX(4050, 0), // PWMˮ��0 0:���� 1:�쳣
  179. kreg_pwm_pump1_e_state = REG_INDEX(4050, 1), // PWMˮ��0 0:���� 1:�쳣
  180. kreg_pwm_pump2_e_state = REG_INDEX(4050, 2), // PWMˮ��0 0:���� 1:�쳣
  181. kreg_pwm_pump3_e_state = REG_INDEX(4050, 3), // PWMˮ��0 0:���� 1:�쳣
  182. kreg_pwm_pump4_e_state = REG_INDEX(4050, 4), // PWMˮ��0 0:���� 1:�쳣
  183. } reg_index_t;
  184. } // namespace iflytop
  185. /**
  186. * @brief
  187. *
  188. * ģͨú״̬ 0->1000
  189. * Robot/Motorͨú״̬ 1000->2000
  190. * Sensorͨú״̬ 2000->3000
  191. * PIDͨú״̬ 4000->4100
  192. */