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.
198 lines
13 KiB
198 lines
13 KiB
#pragma once
|
|
#include <stdint.h>
|
|
|
|
namespace iflytop {
|
|
using namespace std;
|
|
|
|
#define REG_INDEX(type, offset, subconfigindex) (type * 100 + offset + subconfigindex)
|
|
typedef enum {
|
|
/*******************************************************************************
|
|
* 模块通用配置和状态 *
|
|
*******************************************************************************/
|
|
kreg_module_version = REG_INDEX(0, 0, 0), // 模块版本
|
|
kreg_module_type = REG_INDEX(0, 0, 1), // 模块类型
|
|
kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error
|
|
kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag
|
|
|
|
/***********************************************************************************************************************
|
|
* 光学模组私有方法 *
|
|
***********************************************************************************************************************/
|
|
kreg_opt_module_do_action0 = REG_INDEX(0, 0, 40), // 方法0
|
|
kreg_opt_module_action_param1 = REG_INDEX(0, 0, 41), // 方法1
|
|
kreg_opt_module_action_param2 = REG_INDEX(0, 0, 42), // 方法2
|
|
kreg_opt_module_action_param3 = REG_INDEX(0, 0, 43), // 方法3
|
|
kreg_opt_module_action_ack1 = REG_INDEX(0, 0, 51), // ACK1
|
|
kreg_opt_module_action_ack2 = REG_INDEX(0, 0, 52), // ACK2
|
|
|
|
/***********************************************************************************************************************
|
|
* 水冷温度控制器 *
|
|
***********************************************************************************************************************/
|
|
|
|
kreg_water_cooling_tmp_controler_pid_target = REG_INDEX(30, 0, 0), // 目标数值
|
|
kreg_water_cooling_tmp_controler_pid_nowoutput = REG_INDEX(30, 0, 1), // 当前输出
|
|
kreg_water_cooling_tmp_controler_pid_feedbackval = REG_INDEX(30, 0, 2), // 当前输出
|
|
kreg_water_cooling_tmp_controler_temp0 = REG_INDEX(30, 0, 3), // 温度1
|
|
kreg_water_cooling_tmp_controler_temp1 = REG_INDEX(30, 0, 4), // 温度2
|
|
kreg_water_cooling_tmp_controler_temp2 = REG_INDEX(30, 0, 5), // 温度3
|
|
kreg_water_cooling_tmp_controler_temp3 = REG_INDEX(30, 0, 6), // 温度4
|
|
|
|
kreg_water_cooling_tmp_controler_pid_kp = REG_INDEX(30, 50, 0), // kp
|
|
kreg_water_cooling_tmp_controler_pid_ki = REG_INDEX(30, 50, 1), // ki
|
|
kreg_water_cooling_tmp_controler_pid_kd = REG_INDEX(30, 50, 2), // kd
|
|
kreg_water_cooling_tmp_controler_pid_max_output = REG_INDEX(30, 50, 3), // 最大输出
|
|
kreg_water_cooling_tmp_controler_pid_min_output = REG_INDEX(30, 50, 4), // 最小输出
|
|
kreg_water_cooling_tmp_controler_pid_max_integral = REG_INDEX(30, 50, 5), // 最大积分
|
|
kreg_water_cooling_tmp_controler_pid_min_integral = REG_INDEX(30, 50, 6), // 最小积分
|
|
kreg_water_cooling_tmp_controler_pid_error_limit = REG_INDEX(30, 50, 7), // 误差限制
|
|
kreg_water_cooling_tmp_controler_pid_compute_interval = REG_INDEX(30, 50, 8), // 计算间隔
|
|
|
|
/*******************************************************************************
|
|
* 移液枪状态 *
|
|
*******************************************************************************/
|
|
kreg_pipette_pos_ul = REG_INDEX(40, 0, 0), // 移液枪位置
|
|
kreg_pipette_capactitance_val = REG_INDEX(40, 0, 1), // 移液枪电容值
|
|
kreg_pipette_tip_state = REG_INDEX(40, 0, 2), // 移动液枪tip状态
|
|
|
|
kreg_pipette_limit_ul = REG_INDEX(40, 50, 1),
|
|
kreg_pipette_pump_acc = REG_INDEX(40, 50, 2),
|
|
kreg_pipette_pump_dec = REG_INDEX(40, 50, 3),
|
|
kreg_pipette_pump_vstart = REG_INDEX(40, 50, 4),
|
|
kreg_pipette_pump_vstop = REG_INDEX(40, 50, 5),
|
|
kreg_pipette_pump_vmax = REG_INDEX(40, 50, 6),
|
|
kreg_pipette_aspirate_distribut_pump_vel = REG_INDEX(40, 50, 7),
|
|
kreg_pipette_lld_pump_vel = REG_INDEX(40, 50, 8),
|
|
kreg_pipette_lld_motor_vel_rpm = REG_INDEX(40, 50, 9),
|
|
kreg_pipette_lld_detect_period_ms = REG_INDEX(40, 50, 10),
|
|
kreg_pipette_lld_prepare_pos = REG_INDEX(40, 50, 11),
|
|
kreg_pipette_lld_prepare_distribut_pos = REG_INDEX(40, 50, 12),
|
|
|
|
/***********************************************************************************************************************
|
|
* 光学模组 *
|
|
***********************************************************************************************************************/
|
|
|
|
kreg_boditech_optical_module_raw_sector_size = REG_INDEX(41, 0, 0), // sector_size
|
|
kreg_boditech_optical_module_raw_sector_num = REG_INDEX(41, 0, 1), //
|
|
// scan action
|
|
kreg_boditech_optical_scan_type = REG_INDEX(42, 0, 0), // 0 t光学,1 f光学
|
|
kreg_boditech_optical_scan_start_pos = REG_INDEX(42, 0, 1),
|
|
kreg_boditech_optical_scan_direction = REG_INDEX(42, 0, 2),
|
|
kreg_boditech_optical_scan_step_interval = REG_INDEX(42, 0, 3),
|
|
kreg_boditech_optical_scan_pointnum = REG_INDEX(42, 0, 4),
|
|
kreg_boditech_optical_channel_select_num = REG_INDEX(42, 0, 5),
|
|
kreg_boditech_optical_laster_gain_potentiometer_val = REG_INDEX(42, 0, 6),
|
|
kreg_boditech_optical_scan_gain_potentiometer = REG_INDEX(42, 0, 7),
|
|
kreg_boditech_optical_trf_uvled_on_duration_us = REG_INDEX(42, 0, 8),
|
|
kreg_boditech_optical_trf_uvled_off_duration_us = REG_INDEX(42, 0, 9),
|
|
kreg_boditech_optical_trf_scan_delay_us = REG_INDEX(42, 0, 10),
|
|
kreg_boditech_optical_trf_scan_duration_us = REG_INDEX(42, 0, 11),
|
|
kreg_boditech_optical_scan_gain_potentiometer_adjust_suggestion = REG_INDEX(42, 0, 12),
|
|
kreg_boditech_optical_adc_result_overflow = REG_INDEX(42, 0, 13),
|
|
kreg_boditech_optical_laster_intensity = REG_INDEX(42, 0, 14),
|
|
|
|
//
|
|
kreg_laster_scaner_scan_type = REG_INDEX(43, 0, 0), // 0 t光学,1 f光学
|
|
|
|
kreg_laster_scaner_scan_start_pos = REG_INDEX(43, 0, 1),
|
|
kreg_laster_scaner_scan_direction = REG_INDEX(43, 0, 2),
|
|
kreg_laster_scaner_scan_step_interval = REG_INDEX(43, 0, 3),
|
|
kreg_laster_scaner_scan_pointnum = REG_INDEX(43, 0, 4),
|
|
kreg_laster_scaner_laster_gain = REG_INDEX(43, 0, 5),
|
|
kreg_laster_scaner_scan_gain = REG_INDEX(43, 0, 6),
|
|
|
|
kreg_laster_scaner_scan_gain_adjust_suggestion = REG_INDEX(43, 0, 12),
|
|
kreg_laster_scaner_adc_result_overflow = REG_INDEX(43, 0, 13),
|
|
kreg_laster_scaner_laster_intensity = REG_INDEX(43, 0, 14),
|
|
kreg_laster_scaner_raw_sector_size = REG_INDEX(44, 0, 1),
|
|
kreg_laster_scaner_raw_sector_num = REG_INDEX(44, 0, 2),
|
|
|
|
/***********************************************************************************************************************
|
|
* XYROBOT *
|
|
***********************************************************************************************************************/
|
|
|
|
kreg_xyrobot_default_velocity = REG_INDEX(100, 0, 0),
|
|
kreg_xyrobot_default_acc = REG_INDEX(100, 0, 1),
|
|
kreg_xyrobot_default_dec = REG_INDEX(100, 0, 2),
|
|
kreg_xyrobot_default_break_dec = REG_INDEX(100, 0, 3),
|
|
kreg_xyrobot_run_to_zero_speed = REG_INDEX(100, 0, 4),
|
|
kreg_xyrobot_run_to_zero_dec = REG_INDEX(100, 0, 5),
|
|
kreg_xyrobot_look_zero_edge_speed = REG_INDEX(100, 0, 6),
|
|
kreg_xyrobot_look_zero_edge_dec = REG_INDEX(100, 0, 7),
|
|
kreg_xyrobot_ihold = REG_INDEX(100, 0, 8),
|
|
kreg_xyrobot_irun = REG_INDEX(100, 0, 9),
|
|
kreg_xyrobot_iholddelay = REG_INDEX(100, 0, 10),
|
|
|
|
kreg_xyrobot_robot_type = REG_INDEX(100, 50, 0), // 机器人类型 0:hbot 1:corexy
|
|
kreg_xyrobot_x_shift = REG_INDEX(100, 50, 1), // x偏移
|
|
kreg_xyrobot_y_shift = REG_INDEX(100, 50, 2), // y偏移
|
|
kreg_xyrobot_x_shaft = REG_INDEX(100, 50, 3), // x轴是否反转
|
|
kreg_xyrobot_y_shaft = REG_INDEX(100, 50, 4), // y轴是否反转
|
|
kreg_xyrobot_x_one_circle_pulse = REG_INDEX(100, 50, 5), // x轴一圈脉冲数
|
|
kreg_xyrobot_y_one_circle_pulse = REG_INDEX(100, 50, 6), // y轴一圈脉冲数
|
|
kreg_xyrobot_run_to_zero_max_x_d = REG_INDEX(100, 50, 7), // x轴回零最大距离
|
|
kreg_xyrobot_run_to_zero_max_y_d = REG_INDEX(100, 50, 8), // y轴回零最大距离
|
|
kreg_xyrobot_look_zero_edge_max_x_d = REG_INDEX(100, 50, 9), // x轴找零边缘最大距离
|
|
kreg_xyrobot_look_zero_edge_max_y_d = REG_INDEX(100, 50, 10), // y轴找零边缘最大距离
|
|
kreg_xyrobot_io_state0 = REG_INDEX(100, 50, 11), // IO状态
|
|
kreg_xyrobot_io_state1 = REG_INDEX(100, 50, 12), // IO状态
|
|
|
|
/***********************************************************************************************************************
|
|
* step_motor *
|
|
***********************************************************************************************************************/
|
|
kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标
|
|
kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移
|
|
|
|
kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移
|
|
kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转
|
|
kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数
|
|
kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母
|
|
kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度
|
|
kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置
|
|
kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置
|
|
kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置
|
|
kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置
|
|
kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
|
|
kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
|
|
kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
|
|
kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
|
|
kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式
|
|
|
|
kreg_step_motor_vstart = REG_INDEX(101, 50, 31), // a1起作用的速度
|
|
kreg_step_motor_a1 = REG_INDEX(101, 50, 32), //
|
|
kreg_step_motor_amax = REG_INDEX(101, 50, 33),
|
|
kreg_step_motor_v1 = REG_INDEX(101, 50, 34),
|
|
kreg_step_motor_dmax = REG_INDEX(101, 50, 35),
|
|
kreg_step_motor_d1 = REG_INDEX(101, 50, 36),
|
|
kreg_step_motor_vstop = REG_INDEX(101, 50, 37),
|
|
kreg_step_motor_tzerowait = REG_INDEX(101, 50, 38),
|
|
|
|
/***********************************************************************************************************************
|
|
* MINI_STEP_MOTOR *
|
|
***********************************************************************************************************************/
|
|
|
|
kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置
|
|
kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度
|
|
kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩
|
|
kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩
|
|
|
|
/***********************************************************************************************************************
|
|
* ID_CARD_READER *
|
|
***********************************************************************************************************************/
|
|
kreg_id_card_reader_raw_sector_size = REG_INDEX(103, 0, 1),
|
|
kreg_id_card_reader_raw_sector_num = REG_INDEX(103, 0, 2),
|
|
kreg_id_card_reader_is_online = REG_INDEX(103, 0, 3),
|
|
|
|
/***********************************************************************************************************************
|
|
* BOARD *
|
|
***********************************************************************************************************************/
|
|
} reg_index_t;
|
|
|
|
typedef struct {
|
|
int index;
|
|
const char* regname;
|
|
} reginfo_t;
|
|
|
|
const char* regindex2str(int32_t code);
|
|
reginfo_t* reg_get_table();
|
|
int reg_get_table_size();
|
|
|
|
} // namespace iflytop
|