diff --git a/components/pipette_module/pipette_ctrl_module_v2.cpp b/components/pipette_module/pipette_ctrl_module_v2.cpp index 0730447..4d4a48d 100644 --- a/components/pipette_module/pipette_ctrl_module_v2.cpp +++ b/components/pipette_module/pipette_ctrl_module_v2.cpp @@ -34,16 +34,16 @@ void PipetteModule::initialize(int32_t id, config_t *config, StepMotorCtrlModule m_smtp2.initialize(hardwaredcfg->uart, 0, hardwaredcfg->hdma_rx, hardwaredcfg->hdma_tx); m_thread.init("pipette_ctrl", 1024); - m_config.limit_ul = 3; + m_config.limit_ul = 10; m_config.pump_acc = 14; m_config.pump_dec = 14; m_config.pump_vstart = 0; m_config.pump_vstop = 900; + m_config.aspirate_distribut_pump_vel = 100; // m_config.pump_vmax = 1400; - m_config.pump_lld_vel = 100; // lld推荐使用速度为50->200,这里 - m_config.pump_aspirate_distribut_vel = 100; // - m_config.lld_motor_velocity = 50; - m_config.lld_detect_period = 100; // 100ms + m_config.lld_pump_vel = 100; // lld推荐使用速度为50->200,这里 + m_config.lld_motor_vel_rpm = 50; + m_config.lld_detect_period_ms = 100; // 100ms ZASSERT(zmotor); m_zmotor = zmotor; @@ -57,21 +57,25 @@ int32_t PipetteModule::getid(int32_t *id) { * Module * *******************************************************************************/ +#define PROCESS_REG_CFG(cfgkey, cfg) PROCESS_REG(cfgkey, /* */ REG_GET(m_config.cfg), REG_SET(m_config.cfg)) + int32_t PipetteModule::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { switch (param_id) { MODULE_COMMON_PROCESS_REG_CB(); PROCESS_REG(kreg_pipette_pos_ul, /* */ read_pos_ul(&val), ACTION_NONE); PROCESS_REG(kreg_pipette_capactitance_val, /* */ read_capactitance(&val), ACTION_NONE); PROCESS_REG(kreg_pipette_tip_state, /* */ read_tip_state(&val), ACTION_NONE); - PROCESS_REG(kreg_pipette_limit_ul, /* */ REG_GET(m_config.limit_ul), REG_SET(m_config.limit_ul)); - PROCESS_REG(kreg_pipette_pump_acc, /* */ REG_GET(m_config.pump_acc), REG_SET(m_config.pump_acc)); - PROCESS_REG(kreg_pipette_pump_dec, /* */ REG_GET(m_config.pump_dec), REG_SET(m_config.pump_dec)); - PROCESS_REG(kreg_pipette_pump_vstart, /* */ REG_GET(m_config.pump_vstart), REG_SET(m_config.pump_vstart)); - PROCESS_REG(kreg_pipette_pump_vstop, /* */ REG_GET(m_config.pump_vstop), REG_SET(m_config.pump_vstop)); - PROCESS_REG(kreg_pipette_pump_vmax, /* */ REG_GET(m_config.pump_vmax), REG_SET(m_config.pump_vmax)); - // PROCESS_REG(kreg_pipette_lld_velocity, /* */ REG_GET(m_config.lld_velocity), REG_SET(m_config.lld_velocity)); - PROCESS_REG(kreg_pipette_data_sample_period, /* */ REG_GET(m_config.lld_detect_period), REG_SET(m_config.lld_detect_period)); + PROCESS_REG_CFG(kreg_pipette_limit_ul, limit_ul); + PROCESS_REG_CFG(kreg_pipette_pump_acc, pump_acc); + PROCESS_REG_CFG(kreg_pipette_pump_dec, pump_dec); + PROCESS_REG_CFG(kreg_pipette_pump_vstart, pump_vstart); + PROCESS_REG_CFG(kreg_pipette_pump_vstop, pump_vstop); + PROCESS_REG_CFG(kreg_pipette_pump_vmax, pump_vmax); + PROCESS_REG_CFG(kreg_pipette_aspirate_distribut_pump_vel, aspirate_distribut_pump_vel); + PROCESS_REG_CFG(kreg_pipette_lld_pump_vel, lld_pump_vel); + PROCESS_REG_CFG(kreg_pipette_lld_motor_vel_rpm, lld_motor_vel_rpm); + PROCESS_REG_CFG(kreg_pipette_lld_detect_period_ms, lld_detect_period_ms); default: return err::kmodule_not_find_reg; @@ -346,12 +350,12 @@ int32_t PipetteModule::do_pipette_lld(lld_mode_t mode, int32_t zdpos, int32_t c_ if (mode == kclld) { DO_IN_THREAD(m_smtp2.pump_clld(c_threshold)); } else if (mode == kplld) { - DO_IN_THREAD(m_smtp2.pump_distribut_plld(m_config.pump_lld_vel, p_threshold)); + DO_IN_THREAD(m_smtp2.pump_distribut_plld(m_config.lld_pump_vel, p_threshold)); } else if (mode == kmixlld) { - DO_IN_THREAD(m_smtp2.pump_distribut_mlld(m_config.pump_lld_vel, c_threshold, p_threshold)); + DO_IN_THREAD(m_smtp2.pump_distribut_mlld(m_config.lld_pump_vel, c_threshold, p_threshold)); } osDelay(50); - submotor->moveBy(zdpos, m_config.lld_motor_velocity); + submotor->moveBy(zdpos, m_config.lld_motor_vel_rpm); while (true) { if (!check_when_run()) break; @@ -403,7 +407,7 @@ int32_t PipetteModule::do_pipette_lld(lld_mode_t mode, int32_t zdpos, int32_t c_ break; } - m_thread.sleep(m_config.lld_detect_period); + m_thread.sleep(m_config.lld_detect_period_ms); } }, [this]() { // exit fn @@ -535,7 +539,7 @@ int32_t PipetteModule::do_pipette_clld_test(int32_t zdpos) { } push_snesor_sample_data(motorpos, capacitance, 0); - m_thread.sleep(m_config.lld_detect_period); + m_thread.sleep(m_config.lld_detect_period_ms); } }, [this]() { // exit fn diff --git a/components/pipette_module/pipette_ctrl_module_v2.hpp b/components/pipette_module/pipette_ctrl_module_v2.hpp index c37e7d9..b392155 100644 --- a/components/pipette_module/pipette_ctrl_module_v2.hpp +++ b/components/pipette_module/pipette_ctrl_module_v2.hpp @@ -44,12 +44,11 @@ class PipetteModule : public ZIModule, public ZIPipetteCtrlModule { int32_t pump_dec; int32_t pump_vstart; int32_t pump_vstop; - int32_t pump_aspirate_distribut_vel; // 泵机吸吐速度 - int32_t pump_lld_vel; // 液面探测(lld)泵机吸吐速度 - int32_t pump_vmax; // 泵机移动最大速度 - int32_t lld_motor_velocity; // lld时候,z轴电机移动速度 - int32_t lld_detect_period; // lld探测周期 - int32_t mode; + int32_t pump_vmax; + int32_t aspirate_distribut_pump_vel; // 吸吐泵机速度 + int32_t lld_pump_vel; // lld,泵机吸吐速度 + int32_t lld_motor_vel_rpm; // lld,z轴电机移动速度 + int32_t lld_detect_period_ms; // lld,探测周期 } config_t; typedef struct {