diff --git a/sdk/components/pipette_module/base/pipette_cfg.hpp b/sdk/components/pipette_module/base/pipette_cfg.hpp index a367573..ab7e0db 100644 --- a/sdk/components/pipette_module/base/pipette_cfg.hpp +++ b/sdk/components/pipette_module/base/pipette_cfg.hpp @@ -291,7 +291,7 @@ typedef enum { kcontainer_info_fix_water_level_depth, kcontainer_info_llf_vconvert_coneff, kcontainer_info_pierce_depth, - kcontainer_info_lld_end_pos_margin, // lld结束位置冗余,精度0.1mm,abspos = container_neck_pos + lld_end_pos_margin + kcontainer_info_lld_end_pos_margin, // lld结束位置冗余,精度0.1mm,lld_max_pos = container_pos+container_depth - lld_end_pos_margin kcontainer_info_mark, } container_info_index_t; diff --git a/sdk/components/pipette_module/pipette_ctrl_module.cpp b/sdk/components/pipette_module/pipette_ctrl_module.cpp index c7472aa..a11c7aa 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module.cpp +++ b/sdk/components/pipette_module/pipette_ctrl_module.cpp @@ -172,6 +172,14 @@ int32_t PipetteModule::pipette_zmotor_move_by(int32_t distance) { }); return 0; } +int32_t PipetteModule::pipette_zmotor_move_to_tip_deposit() { + thread_start_work(__FUNCTION__, [this]() { + platinfo_t *platform_info = get_platinfo_smart(m_common_cfg.platform_info_cpyid, &m_now_platinfo); + zm_move_to_block(platform_info->tip_deposit_pos, kzm_v_default, 0); + }); + return 0; +} + int32_t PipetteModule::pipette_zmotor_move_to(int32_t tox) { if (zmbcfg.min_d != 0 && tox < zmbcfg.min_d) tox = zmbcfg.min_d; if (zmbcfg.max_d != 0 && tox > zmbcfg.max_d) tox = zmbcfg.max_d; diff --git a/sdk/components/pipette_module/pipette_ctrl_module.hpp b/sdk/components/pipette_module/pipette_ctrl_module.hpp index e9bab1f..191cca1 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module.hpp +++ b/sdk/components/pipette_module/pipette_ctrl_module.hpp @@ -275,6 +275,9 @@ class PipetteModule : public ZIModule { virtual int32_t pipette_zmotor_read_pos(int32_t *pos); virtual int32_t pipette_zmotor_read_enc_pos(int32_t *pos); + // kpipette_zmotor_move_to_tip_deposit + virtual int32_t pipette_zmotor_move_to_tip_deposit(); + /*********************************************************************************************************************** * PUMP * ***********************************************************************************************************************/ diff --git a/sdk/components/pipette_module/pipette_ctrl_module_test.cpp b/sdk/components/pipette_module/pipette_ctrl_module_test.cpp index d4c99d5..e68038b 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module_test.cpp +++ b/sdk/components/pipette_module/pipette_ctrl_module_test.cpp @@ -135,4 +135,5 @@ int32_t PipetteModule::pipette_test_move_to_pierce_pos(int32_t container_pos, in check_container_info_cpyid(container_cpyid); zm_move_to_lld_end_pos_block(container_pos, container_info, kzm_v_default, 0); // 移动到lld结束位置 }); + return 0; } diff --git a/sdk/components/pipette_module/pipette_ctrl_module_zm_ctrl.cpp b/sdk/components/pipette_module/pipette_ctrl_module_zm_ctrl.cpp index 50b9fe9..0dc2d54 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module_zm_ctrl.cpp +++ b/sdk/components/pipette_module/pipette_ctrl_module_zm_ctrl.cpp @@ -56,6 +56,9 @@ void PipetteModule::zm_move_to_lld_end_pos_block(int32_t container_pos, containe zm_move_to_block(container_pos + containInfo->container_depth - containInfo->lld_end_pos_margin, vbcpyid, vel); } + + + void PipetteModule::do_zm_move_0p() { bool is_trigger = false; if (!zm0p_is_trigger()) { diff --git a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp index aecf86a..b323a62 100644 --- a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp +++ b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp @@ -192,6 +192,7 @@ void ZCanProtocolParser::initialize(ZCanReceiver* cancmder) { REGFN(pipette_read_state); REGFN(pipette_pump_distribu_all_set_param); REGFN(pipette_pump_distribu_all); + REGFN(pipette_zmotor_move_to_tip_deposit); REGFN(pipette_zmotor_read_pos); REGFN(pipette_zmotor_read_enc_pos); @@ -1246,6 +1247,11 @@ int32_t ZCanProtocolParser::pipette_test_move_to_lld_end_pos(cmdcontxt_t* cxt) { CHECK_AND_GET_MODULE(2); return module->pipette_test_move_to_lld_end_pos(cxt->params[0], cxt->params[1]); } +// pipette_zmotor_move_to_tip_deposit +int32_t ZCanProtocolParser::pipette_zmotor_move_to_tip_deposit(cmdcontxt_t* cxt) { + CHECK_AND_GET_MODULE(0); + return module->pipette_zmotor_move_to_tip_deposit(); +} int32_t ZCanProtocolParser::pipette_set_common_cfg(cmdcontxt_t* cxt) { CHECK_AND_GET_MODULE(2); diff --git a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp index 6bcec27..09fe93e 100644 --- a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp +++ b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp @@ -234,6 +234,8 @@ class ZCanProtocolParser : public IZCanRxProcesser { CMDFN(pipette_test_move_to_fix_water_level_pos); CMDFN(pipette_test_move_to_pierce_pos); CMDFN(pipette_test_move_to_lld_end_pos); + CMDFN(pipette_zmotor_move_to_tip_deposit); + }; diff --git a/usrc/a8000_protocol/protocol/cmdid.cpp b/usrc/a8000_protocol/protocol/cmdid.cpp index df4bc1f..1dc267c 100644 --- a/usrc/a8000_protocol/protocol/cmdid.cpp +++ b/usrc/a8000_protocol/protocol/cmdid.cpp @@ -152,6 +152,7 @@ static cmdinfo_t table[] = { CMD_ITERM(kpipette_zmotor_read_dev_status_cache), CMD_ITERM(kpipette_zmotor_read_pos), CMD_ITERM(kpipette_zmotor_read_enc_pos), + CMD_ITERM(kpipette_zmotor_move_to_tip_deposit), CMD_ITERM(kpipette_pump_init_device), CMD_ITERM(kpipette_pump_take_tip), CMD_ITERM(kpipette_pump_deposit_tip), diff --git a/usrc/a8000_protocol/protocol/cmdid.hpp b/usrc/a8000_protocol/protocol/cmdid.hpp index 9891ae3..67a9e12 100644 --- a/usrc/a8000_protocol/protocol/cmdid.hpp +++ b/usrc/a8000_protocol/protocol/cmdid.hpp @@ -162,6 +162,7 @@ typedef enum { kpipette_zmotor_read_dev_status_cache = 0x7508, kpipette_zmotor_read_pos = 0x7509, kpipette_zmotor_read_enc_pos = 0x750A, + kpipette_zmotor_move_to_tip_deposit = 0x750B, kpipette_pump_init_device = 0x7580, kpipette_pump_take_tip = 0x7581,