|
|
@ -153,6 +153,8 @@ int32_t PipetteModuleV2::module_xxx_reg_impl(int32_t param_id, bool read, int32_ |
|
|
|
XXX_STATE_REG(kreg_pipette_zm_pos, assign_int32(&val, zm_get_now_pos())); |
|
|
|
XXX_STATE_REG(kreg_pipette_zm_is_enable, REG_GET(m_state.enable)); |
|
|
|
XXX_STATE_REG(kreg_pipette_zm_dpos, REG_GET(m_state.dpos)); |
|
|
|
XXX_STATE_REG(kreg_pipette_zm_has_move_zero, REG_GET(m_state.zm_has_move_zero)); |
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************************************************************
|
|
|
|
* CFG * |
|
|
@ -184,6 +186,7 @@ int32_t PipetteModuleV2::module_xxx_reg_impl(int32_t param_id, bool read, int32_ |
|
|
|
XXX_CFG_REG(zm_pos_devi_tolerance); |
|
|
|
XXX_CFG_REG(zm_io_trigger_append_distance); |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
return err::kmodule_not_find_reg; |
|
|
|
break; |
|
|
@ -210,7 +213,7 @@ int32_t PipetteModuleV2::pipette_zmotor_enable(int32_t enable) { |
|
|
|
m_zm->enable(enable); |
|
|
|
m_state.enable = enable; |
|
|
|
if (enable == 0 && m_cfg.zm_enable_enc == 0) { |
|
|
|
m_state.has_move_to_zero = 0; |
|
|
|
m_state.zm_has_move_zero = 0; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
@ -224,7 +227,7 @@ int32_t PipetteModuleV2::pipette_zmotor_move_zero() { // |
|
|
|
thread_start_work(__FUNCTION__, [this]() { |
|
|
|
do_zm_move_0p(); // 移动到零点
|
|
|
|
zm_set_now_pos(0 + m_cfg.zm_dzero - m_cfg.zm_io_trigger_append_distance); |
|
|
|
m_state.has_move_to_zero = 1; |
|
|
|
m_state.zm_has_move_zero = 1; |
|
|
|
}); |
|
|
|
return 0; |
|
|
|
} |
|
|
@ -241,7 +244,7 @@ int32_t PipetteModuleV2::pipette_zmotor_measure_distance() { |
|
|
|
int32_t dpos = zm_get_now_pos() - startpos; |
|
|
|
|
|
|
|
zm_set_now_pos(0 + m_cfg.zm_dzero - m_cfg.zm_io_trigger_append_distance); |
|
|
|
m_state.has_move_to_zero = 1; |
|
|
|
m_state.zm_has_move_zero = 1; |
|
|
|
|
|
|
|
m_asynchronous_result.result0 = 0 + m_cfg.zm_dzero - m_cfg.zm_io_trigger_append_distance - dpos; |
|
|
|
}); |
|
|
@ -635,7 +638,7 @@ void PipetteModuleV2::do_pipette_zmotor_move_to_zero_point_quick() { |
|
|
|
int32_t dpos = zm_get_now_pos() - startpos; |
|
|
|
// 设置零点
|
|
|
|
zm_set_now_pos(0 + m_cfg.zm_dzero - m_cfg.zm_io_trigger_append_distance); |
|
|
|
m_state.has_move_to_zero = 1; |
|
|
|
m_state.zm_has_move_zero = 1; |
|
|
|
|
|
|
|
if (m_cfg.zm_pos_devi_tolerance != 0 && (abs(expectation_dpos - dpos) > m_cfg.zm_pos_devi_tolerance)) { |
|
|
|
throw zapp_exception(err::kstep_motor_lost_step); |
|
|
@ -837,7 +840,7 @@ check_motor_is_enable: |
|
|
|
|
|
|
|
check_motor_has_moveto_zero: |
|
|
|
if (m_state.enable == 0) return err::kstep_motor_not_enable; |
|
|
|
if (m_state.has_move_to_zero == 0) return err::kstep_motor_not_move_to_zero; |
|
|
|
if (m_state.zm_has_move_zero == 0) return err::kstep_motor_not_move_to_zero; |
|
|
|
goto check; |
|
|
|
|
|
|
|
check: |
|
|
|