Browse Source

update

change_pipette_api
zhaohe 1 year ago
parent
commit
01d58ee7bc
  1. 8
      api/apibasic/cmdid.hpp
  2. 1
      api/apibasic/reg_index.cpp
  3. 1
      api/apibasic/reg_index.hpp
  4. 107
      api/zi_motor.hpp

8
api/apibasic/cmdid.hpp

@ -62,9 +62,15 @@ typedef enum {
kstep_motor_stop = CMDID(2, 40), // para:{4}, ack:{}
kstep_motor_active_cfg = CMDID(2, 41), // para:{4}, ack:{}
kstep_motor_read_io_state = CMDID(2, 42), // para:{4}, ack:{}
kstep_motor_read_tmc5130_status = CMDID(2, 43), //
kstep_motor_easy_move_to_end_point = CMDID(2, 44), //
kstep_motor_read_tmc5130_status = CMDID(2, 50), //
kstep_motor_read_tmc5130_state = CMDID(2, 51), // 调试使用
kstep_motor_read_tmc4361a_status = CMDID(2, 52), // 调试使用
kstep_motor_read_tmc4361a_state = CMDID(2, 53), // 调试使用
kstep_motor_read_tmc2160_status = CMDID(2, 54), // 调试使用
kstep_motor_read_tmc2160_state = CMDID(2, 55), // 调试使用
/***********************************************************************************************************************
* MINI_SERVO *
***********************************************************************************************************************/

1
api/apibasic/reg_index.cpp

@ -128,6 +128,7 @@ static reginfo_t table[] = {
REG_ITERM(kreg_step_motor_look_zero_edge_dec),
REG_ITERM(kreg_step_motor_max_d),
REG_ITERM(kreg_step_motor_min_d),
REG_ITERM(kreg_step_motor_in_debug_mode),
REG_ITERM(kreg_mini_servo_pos),
REG_ITERM(kreg_mini_servo_limit_velocity),
REG_ITERM(kreg_mini_servo_limit_torque),

1
api/apibasic/reg_index.hpp

@ -177,6 +177,7 @@ typedef enum {
kreg_step_motor_look_zero_edge_dec = REG_INDEX(101, 50, 26), // 找零边缘减速度
kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式
/***********************************************************************************************************************
* MINI_STEP_MOTOR *

107
api/zi_motor.hpp

@ -21,6 +21,106 @@ typedef struct {
uint32_t stst : 1;
} TMC5130MotorStatus_t;
typedef struct {
uint32_t reset : 1; // fatal error
uint32_t drv_err : 1; // fatal error
uint32_t uv_cp : 1; // fatal error
} TMC5130MotorState_t; // R+C
typedef struct {
uint32_t sg_result : 10;
uint32_t reserved0 : 1;
uint32_t reserved1 : 1;
uint32_t s2vsa : 1;
uint32_t s2vsb : 1;
uint32_t stealth : 1;
uint32_t fsactive : 1;
uint32_t cs_actual : 5;
uint32_t reserved2 : 3;
uint32_t stallguard : 1;
uint32_t ot : 1;
uint32_t otpw : 1;
uint32_t s2ga : 1;
uint32_t s2gb : 1;
uint32_t ola : 1;
uint32_t olb : 1;
uint32_t stst : 1;
} TMC2160MotorDriverStatus_t;
typedef struct {
uint32_t TARGET_REACHED_F : 1; // XACTUAL = XTARGET
uint32_t POS_COMP_REACHED_F : 1; // XACTUAL = POS_COMP
uint32_t VEL_REACHED_F : 1; // VACTUAL = |VMAX|
uint32_t VEL_STATE_F : 2; // 0:VACTUAL = 0; 1:VACTUAL > 0; 2:VACTUAL < 0
uint32_t RAMP_STATE_F : 2; // 0:AACTUAL = 0; 1:AACTUAL 增加(加速); 2:AACTUAL 减小(减速)
uint32_t STOPL_ACTIVE_F : 1; // 左停止开关有效。
uint32_t STOPR_ACTIVE_F : 1; // 右停止开关有效。
uint32_t VSTOPL_ACTIVE_F : 1; // 左虚拟停止开关有效。
uint32_t VSTOPR_ACTIVE_F : 1; // 右虚拟停止开关有效。
uint32_t ACTIVE_STALL_F : 1; // 电机堵转检测且 VACTUAL > VSTALL_LIMIT。
uint32_t HOME_ERROR_F : 1; // 输入信号电平不等于预期的回零电平。
uint32_t FS_ACTIVE_F : 1; // 全步有效。
uint32_t ENC_FAIL_F : 1; // XACTUAL 和 ENC_POS 中间的差值超出容差。
uint32_t N_ACTIVE_F : 1; // 事件有效
uint32_t ENC_LATCH_F : 1; // ENC_LATCH 被重置。
uint32_t MULTI_CYCLE_FAIL_F : 1; // 仅适用于绝对编码器 MULTI_CYCLE_FAIL_F 表示上一个多圈数据出现故障。
uint32_t ___ : 1; //
uint32_t CL_FIT_F : 1; // 如果 ENC_POS_DEV < CL_COMPLATION,则有效。XACTUAL 和 ENC_POS 之间的差值在容许范围内
uint32_t SERIAL_ENC_FLAGS : 4; // 仅适用于绝对编码器:从编码器接收的 SERIAL_ENC_FLAGS。新的编码器传输请求是会重置这些标志
uint32_t SG : 1; // 仅 TMC26x / TMC21x0 StallGuard2 状态。
uint32_t OT : 1; // 过温关断。
uint32_t OTPW : 1; // 过温预警。
uint32_t S2GA : 1; // 线圈 A 高端 MOSFET 管对地短路检测位。
uint32_t S2GB : 1; // 线圈 B 高端 MOSFET 管对地短路检测位。
uint32_t OLA : 1; // 线圈 A 开路。
uint32_t OLB : 1; // 线圈 B 开路。
uint32_t STST : 1; // 仅 TMC26x / TMC21x0 静止状态。
} TMC4361AMotorStatus_t; // R+CW 事件标志位
typedef struct {
uint32_t reset : 1; // fatal error
uint32_t drv_err : 1; // fatal error
uint32_t uv_cp : 1; // fatal error
} TMC2160MotorGstate_t; // R+C
typedef struct {
uint32_t TARGET_REACHED : 1; //
uint32_t POS_COMP_REACHED : 1; //
uint32_t VEL_REACHED : 1; //
uint32_t VEL_STATE_EQ_0 : 1; //
uint32_t VEL_STATE_EQ_1 : 1; //
uint32_t VEL_STATE_EQ_2 : 1; //
uint32_t RAMP_STATE_EQ_0 : 1; //
uint32_t RAMP_STATE_EQ_1 : 1; //
uint32_t RAMP_STATE_EQ_2 : 1; //
uint32_t MAX_PHASE_TRAP : 1; // 梯形斜坡已经达到其极限速度
uint32_t FROZEN : 1; // 重置 TMC4361A,以便进一步运动。 fatal error
uint32_t STOPL : 1; //
uint32_t STOPR : 1; //
uint32_t VSTOPL_ACTIVE : 1; //
uint32_t VSTOPR_ACTIVE : 1; //
uint32_t HOME_ERROR : 1; //
uint32_t XLATCH_DONE : 1; //
uint32_t FS_ACTIVE : 1; //
uint32_t ENC_FAIL : 1; //
uint32_t N_ACTIVE : 1; //
uint32_t ENC_DONE : 1; //
uint32_t SER_ENC_DATA_FAIL : 1; //
uint32_t ___ : 1; //
uint32_t SER_DATA_DONE : 1; //
uint32_t SERIAL_ENC_Flags : 1; //
uint32_t COVER_DONE : 1; //
uint32_t ENC_VEL0 : 1; // 编码器速度到 0。
uint32_t CL_MAX : 1; //
uint32_t CL_FIT : 1; //
uint32_t STOP_ON_STALL : 1; // 检测到电机堵转。电机斜坡已经停止。 fatal error
uint32_t MOTOR_EV : 1; // 选定的 TMC 电机驱动器标志之一被触发。
uint32_t RST_EV : 1; // 复位被触发。 fatal error
} TMC4361AMotorEventState_t;
namespace iflytop {
using namespace std;
class ZIStepMotor {
@ -42,6 +142,11 @@ class ZIStepMotor {
/***********************************************************************************************************************
* DEBUG *
***********************************************************************************************************************/
virtual int32_t step_motor_read_tmc5130_status(int32_t* errorflag) = 0;
virtual int32_t step_motor_read_tmc5130_status(int32_t* status) = 0;
virtual int32_t step_motor_read_tmc5130_state(int32_t* status) = 0;
virtual int32_t step_motor_read_tmc4361a_status(int32_t* status) = 0;
virtual int32_t step_motor_read_tmc4361a_state(int32_t* gstate) = 0;
virtual int32_t step_motor_read_tmc2160_status(int32_t* status) = 0;
virtual int32_t step_motor_read_tmc2160_state(int32_t* status) = 0;
};
} // namespace iflytop
Loading…
Cancel
Save