Browse Source

update

master
zhaohe 2 months ago
parent
commit
db2bcac0ab
  1. 10
      sdk/components/pipette_module/base/pipette_action_param.hpp
  2. 3
      sdk/components/pipette_module/base/pipette_cfg.hpp
  3. 55
      sdk/components/pipette_module/pipette_ctrl_module.cpp

10
sdk/components/pipette_module/base/pipette_action_param.hpp

@ -115,9 +115,9 @@ typedef struct {
//
// 目标容器信息
//
int32_t dest_container_cpyid; // 目标容器配置索引
int32_t __dest_container_is_empty; // 占位
int32_t dest_liquid_cfg_index; // 目标容器中的液体类型
int32_t dest_container_cpyid; // 目标容器配置索引
int32_t dest_container_has_liquid; // 目标容器中是否有液体
int32_t dest_liquid_cfg_index; // 目标容器中的液体类型
//
// 分配方式
@ -146,7 +146,7 @@ typedef enum {
// 目标容器信息
//
kdistribu_all_paramid_dest_container_cpyid,
kdistribu_all_paramid_dest_container_is_empty,
kdistribu_all_paramid_dest_container_has_liquid,
kdistribu_all_paramid_dest_liquid_cfg_index,
//
// 分配方式
@ -168,7 +168,7 @@ static inline const char *distribu_all_paramid_to_string(distribu_all_paramid_t
switch (index) {
CASE_ENUM_TO_STRING(kdistribu_all_paramid_container_pos);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_cpyid);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_is_empty);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_has_liquid);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_liquid_cfg_index);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_distribu_type);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_mix_volume);

3
sdk/components/pipette_module/base/pipette_cfg.hpp

@ -16,17 +16,20 @@
typedef struct {
int32_t pressure_record_enable;
int32_t platform_info_cpyid; // 平台信息的副本ID
int32_t max;
} common_cfg_t;
typedef enum {
kpipette_common_cfg_pressure_record_enable,
kpipette_common_cfg_platform_info_cpyid, // 平台信息的副本ID
kpipette_common_cfg_max,
} pipette_common_cfg_index_t;
static inline const char *common_cfg_index_to_string(pipette_common_cfg_index_t index) {
switch (index) {
CASE_ENUM_TO_STRING(kpipette_common_cfg_pressure_record_enable)
CASE_ENUM_TO_STRING(kpipette_common_cfg_platform_info_cpyid) // 平台信息的副本ID
CASE_ENUM_TO_STRING(kpipette_common_cfg_max)
}
return "unknown";

55
sdk/components/pipette_module/pipette_ctrl_module.cpp

@ -193,16 +193,24 @@ int32_t PipetteModule::pipette_zmotor_move_to_zero_point_quick() {
return 0;
}
int32_t PipetteModule::pipette_pump_init_device(int32_t platinfo_cpyid) {
thread_start_work(__FUNCTION__, [this, platinfo_cpyid]() {
ZLOGI(TAG, "pipette_pump_init_device platinfo_cpyid: %d", platinfo_cpyid);
check_platinfo_cpyid(platinfo_cpyid);
int32_t PipetteModule::pipette_pump_init_device(int32_t param__platinfo_cpyid) {
thread_start_work(__FUNCTION__, [this, param__platinfo_cpyid]() {
ZLOGI(TAG, "pipette_pump_init_device param__platinfo_cpyid: %d", param__platinfo_cpyid);
int32_t platinfo_cpyid_setval = param__platinfo_cpyid;
if (platinfo_cpyid_setval < 0) {
platinfo_cpyid_setval = m_common_cfg.platform_info_cpyid;
ZLOGI(TAG, "pipette_pump_init_device use common_cfg platinfo_cpyid: %d", platinfo_cpyid_setval);
}
check_platinfo_cpyid(platinfo_cpyid_setval);
pump_apply_vcfg(kpm_v_max); // 默认配置
DO_IN_THREAD(m_smtp2.pump_init());
pump_waitfor_stop();
m_state.platinfo_cpyid = platinfo_cpyid;
m_state.platinfo_cpyid = platinfo_cpyid_setval;
platinfo_t *platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
clearPipetteGunState();
});
@ -706,21 +714,30 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
*/
auto *dcfg = &m_distribu_all_param;
check_liquid_info_cpyid(dcfg->dest_liquid_cfg_index);
if (dcfg->dest_container_has_liquid) check_liquid_info_cpyid(dcfg->dest_liquid_cfg_index);
check_liquid_info_cpyid(m_pump_gun_state.liquid_type_cpyidx);
check_container_info_cpyid(dcfg->dest_container_cpyid);
check_platinfo_cpyid(m_state.platinfo_cpyid);
platinfo_t *platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
liquid_info_t *liquidinfo = get_liquid_info_smart(dcfg->dest_liquid_cfg_index, &m_now_liquid_info);
container_info_t *container_cfg = get_container_info_smart(dcfg->dest_container_cpyid, &m_now_container_info);
liquid_info_t *liquidInGun_info = get_liquid_info_smart(m_pump_gun_state.liquid_type_cpyidx, &m_now_liquid_in_gun_info);
platinfo_t *platform_info = nullptr;
container_info_t *container_cfg = nullptr;
liquid_info_t *liquidInGuninfo = nullptr;
liquid_info_t *liquidinfo = nullptr;
platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
container_cfg = get_container_info_smart(dcfg->dest_container_cpyid, &m_now_container_info);
liquidInGuninfo = get_liquid_info_smart(m_pump_gun_state.liquid_type_cpyidx, &m_now_liquid_in_gun_info);
if (dcfg->dest_container_has_liquid) {
liquidinfo = get_liquid_info_smart(dcfg->dest_liquid_cfg_index, &m_now_liquid_info);
} else {
liquidinfo = liquidInGuninfo;
}
dump("distribu_all_param", dcfg);
dump("platform_info", platform_info);
dump("container_info", container_cfg);
dump("liquid_info", liquidinfo);
dump("liquid_in_gun_info", liquidInGun_info);
if (dcfg->dest_container_has_liquid) dump("liquid_info", liquidinfo);
dump("liquid_in_gun_info", liquidInGuninfo);
adjust_container_pos(&dcfg->container_pos, m_state.platinfo_cpyid);
int32_t container_pos = dcfg->container_pos;
@ -730,7 +747,7 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
ZLOGI(TAG, "-->jet mode distribu");
ZLOGI(TAG, "-->move to jet position");
zm_move_to_jet_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到jet位置
pump_move_to_x100nl_block(0, liquidInGun_info->jet_pm_vcpyid); // 快速喷射出所有液体(使用jet速度)
pump_move_to_x100nl_block(0, liquidInGuninfo->jet_pm_vcpyid); // 快速喷射出所有液体(使用jet速度)
} else {
ZLOGI(TAG, "-->under liquid distribu");
// 移动到swap位置
@ -738,9 +755,9 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到swap位置
// 清空transport volume
if (liquidInGun_info->transport_volume != 0) {
if (liquidInGuninfo->transport_volume != 0) {
ZLOGI(TAG, "-->clean transport volume");
pump_move_by_x100nl_block(-liquidInGun_info->transport_volume, liquidInGun_info->transport_volume_pm_vcpyid); // 清空transport volume
pump_move_by_x100nl_block(-liquidInGuninfo->transport_volume, liquidInGuninfo->transport_volume_pm_vcpyid); // 清空transport volume
} else {
ZLOGI(TAG, "-->clean transport volume,skip");
}
@ -751,14 +768,14 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
// 分液
ZLOGI(TAG, "-->distribu liquid");
int32_t distribu_volume = calibrate_liquid_volume(liquidInGun_info, m_pump_gun_state.liquid_volume);
pump_move_by_x100nl_block(-distribu_volume, liquidInGun_info->distribu_pm_vpyid); // 分液
int32_t distribu_volume = calibrate_liquid_volume(liquidInGuninfo, m_pump_gun_state.liquid_volume);
pump_move_by_x100nl_block(-distribu_volume, liquidInGuninfo->distribu_pm_vpyid); // 分液
// 移动到swap位置,快速清空tip,使用(emptyTip速度)
ZLOGI(TAG, "-->move to swap position and clean tip");
zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_swap_out, 0); // 移动到swap位置
pump_move_to_x100nl_block(0, liquidInGun_info->empty_tip_pm_vcpyid); // 快速清空tip,使用(emptyTip速度)
pump_move_to_x100nl_block(0, liquidInGuninfo->empty_tip_pm_vcpyid); // 快速清空tip,使用(emptyTip速度)
}
//
@ -780,7 +797,7 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
}
// 吸入10ul过量的空气,防挂液
pump_move_by_x100nl_block(100, liquidInGun_info->transport_volume_pm_vcpyid);
pump_move_by_x100nl_block(100, liquidInGuninfo->transport_volume_pm_vcpyid);
//
// 如果需要归零,则移动到transform_pos
//

Loading…
Cancel
Save