Browse Source

v1012 | 步进电机模块支持 丢步查看

master
zhaohe 4 months ago
parent
commit
c74c8f507e
  1. 2
      a8000_protocol
  2. 9
      sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp
  3. 1
      sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp
  4. 2
      usrc/version.h

2
a8000_protocol

@ -1 +1 @@
Subproject commit 9ec492b5981174c6cc2db3dbfeeb6e9c68bc0a42
Subproject commit 644059e79fd881d2a6c0d2f9b6ddc1098d9fabe4

9
sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp

@ -98,6 +98,7 @@ int32_t StepMotorCtrlModule::pri_module_xxx_reg(int32_t param_id, bool read, int
PROCESS_REG(kreg_step_motor_pos, getnowpos(val), ACTION_NONE);
PROCESS_REG(kreg_step_motor_is_enable, REG_GET(m_state.enable), ACTION_NONE);
PROCESS_REG(kreg_step_motor_has_move_zero, REG_GET(m_state.has_move_to_zero), ACTION_NONE);
PROCESS_REG(kreg_step_motor_lost_step, REG_GET(m_state.lost_step), ACTION_NONE);
PROCESS_REG(kreg_step_motor_dpos, REG_GET(m_state.dpos), ACTION_NONE);
PROCESS_REG(kreg_step_motor_shaft, REG_GET(m_cfg.motor_shaft), REG_SET(m_cfg.motor_shaft));
@ -253,6 +254,7 @@ void StepMotorCtrlModule::befor_motor_move() { //
getnowpos(m_state.before_move_pos);
creg.module_status = 1;
creg.module_errorcode = 0;
m_state.lost_step = 0;
m_stepM1->enable(1);
}
void StepMotorCtrlModule::after_motor_move() {
@ -295,7 +297,7 @@ bool StepMotorCtrlModule::check_when_run() {
vPortExitCritical();
int32_t dm1 = abs(m1enc - m1pos);
m_state.lost_step = dm1;
if (m_cfg.pos_devi_tolerance != 0) {
if (dm1 > m_cfg.pos_devi_tolerance) {
ZLOGE(TAG, "motor pos devi %d", dm1);
@ -704,8 +706,9 @@ int32_t StepMotorCtrlModule::do_step_motor_easy_move_to_io(int32_t ioindex, int3
int32_t StepMotorCtrlModule::do_step_motor_easy_move_to_end_point() { return do_step_motor_easy_move_to_io(1, 1); }
void StepMotorCtrlModule::checkdpos(int32_t expect_dpos) {
int32_t dpos = getnowpos() - m_state.before_move_pos;
if (m_cfg.pos_devi_tolerance != 0 && (abs(expect_dpos - dpos) > m_cfg.pos_devi_tolerance)) {
int32_t dpos = getnowpos() - m_state.before_move_pos;
m_state.lost_step = expect_dpos - dpos;
if (m_cfg.pos_devi_tolerance != 0 && (abs(m_state.lost_step) > m_cfg.pos_devi_tolerance)) {
ZLOGE(TAG, "check pos devi tolerance fail.... dpos%d,expectation_dpos:%d", dpos, expect_dpos);
setErrorFlag(err::kstep_motor_lost_step);
} else {

1
sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp

@ -44,6 +44,7 @@ class StepMotorCtrlModule : public ZIModule {
int32_t dpos;
int32_t after_move_pos;
int32_t before_move_pos;
int32_t lost_step;
int32_t enable;
int32_t debugmode;
int32_t has_move_to_zero;

2
usrc/version.h

@ -1,2 +1,2 @@
#pragma once
#define PC_VERSION 1011
#define PC_VERSION 1012
Loading…
Cancel
Save