Browse Source

update

master
zhaohe 1 year ago
parent
commit
48d225dbbf
  1. 40
      components/pipette_module/pipette_ctrl_module_v2.cpp
  2. 11
      components/pipette_module/pipette_ctrl_module_v2.hpp

40
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

11
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 {

Loading…
Cancel
Save