|
|
@ -83,6 +83,125 @@ void StepMotorCtrlTab::construct(QTabWidget *fathertab) { |
|
|
|
ZQUI::ins()->ishow("olb :%d", status.olb); |
|
|
|
ZQUI::ins()->ishow("stst :%d", status.stst); |
|
|
|
}); |
|
|
|
|
|
|
|
box->newFunc("读取TMC2160状态", {}, [this](int argn, const char **args) { |
|
|
|
ICM->callcmd0(getDeviceId(), kstep_motor_read_tmc2160_status); |
|
|
|
|
|
|
|
TMC2160MotorDriverStatus_t status; |
|
|
|
static_assert(sizeof(status) == 4, "sizeof(TMC2160MotorDriverStatus_t) != 4"); |
|
|
|
|
|
|
|
memcpy(&status, ICM->getAckBuf(), 4); |
|
|
|
|
|
|
|
ZQUI::ins()->ishow("sg_result :%d", status.sg_result); |
|
|
|
ZQUI::ins()->ishow("reserved0 :%d", status.reserved0); |
|
|
|
ZQUI::ins()->ishow("reserved1 :%d", status.reserved1); |
|
|
|
ZQUI::ins()->ishow("s2vsa :%d", status.s2vsa); |
|
|
|
ZQUI::ins()->ishow("s2vsb :%d", status.s2vsb); |
|
|
|
ZQUI::ins()->ishow("stealth :%d", status.stealth); |
|
|
|
ZQUI::ins()->ishow("fsactive :%d", status.fsactive); |
|
|
|
ZQUI::ins()->ishow("cs_actual :%d", status.cs_actual); |
|
|
|
ZQUI::ins()->ishow("reserved2 :%d", status.reserved2); |
|
|
|
ZQUI::ins()->ishow("stallguard :%d", status.stallguard); |
|
|
|
ZQUI::ins()->ishow("ot :%d", status.ot); |
|
|
|
ZQUI::ins()->ishow("otpw :%d", status.otpw); |
|
|
|
ZQUI::ins()->ishow("s2ga :%d", status.s2ga); |
|
|
|
ZQUI::ins()->ishow("s2gb :%d", status.s2gb); |
|
|
|
ZQUI::ins()->ishow("ola :%d", status.ola); |
|
|
|
ZQUI::ins()->ishow("olb :%d", status.olb); |
|
|
|
ZQUI::ins()->ishow("stst :%d", status.stst); |
|
|
|
}); |
|
|
|
|
|
|
|
box->newFunc("读取TMC2160_GState", {}, [this](int argn, const char **args) { |
|
|
|
ICM->callcmd0(getDeviceId(), kstep_motor_read_tmc2160_state); |
|
|
|
|
|
|
|
TMC2160MotorGstate_t status; |
|
|
|
static_assert(sizeof(status) == 4, "sizeof(TMC2160MotorGstate_t) != 4"); |
|
|
|
|
|
|
|
memcpy(&status, ICM->getAckBuf(), 4); |
|
|
|
|
|
|
|
ZQUI::ins()->ishow("reset :%d", status.reset); |
|
|
|
ZQUI::ins()->ishow("drv_err :%d", status.drv_err); |
|
|
|
ZQUI::ins()->ishow("uv_cp :%d", status.uv_cp); |
|
|
|
}); |
|
|
|
|
|
|
|
box->newFunc("读取TMC4361A状态", {}, [this](int argn, const char **args) { |
|
|
|
ICM->callcmd0(getDeviceId(), kstep_motor_read_tmc4361a_status); |
|
|
|
|
|
|
|
TMC4361AMotorStatus_t status; |
|
|
|
static_assert(sizeof(status) == 4, "sizeof(TMC4361AMotorStatus_t) != 4"); |
|
|
|
|
|
|
|
memcpy(&status, ICM->getAckBuf(), 4); |
|
|
|
|
|
|
|
ZQUI::ins()->ishow("TARGET_REACHED_F :%d", status.TARGET_REACHED_F); |
|
|
|
ZQUI::ins()->ishow("POS_COMP_REACHED_F :%d", status.POS_COMP_REACHED_F); |
|
|
|
ZQUI::ins()->ishow("VEL_REACHED_F :%d", status.VEL_REACHED_F); |
|
|
|
ZQUI::ins()->ishow("VEL_STATE_F :%d", status.VEL_STATE_F); |
|
|
|
ZQUI::ins()->ishow("RAMP_STATE_F :%d", status.RAMP_STATE_F); |
|
|
|
ZQUI::ins()->ishow("STOPL_ACTIVE_F :%d", status.STOPL_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("STOPR_ACTIVE_F :%d", status.STOPR_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("VSTOPL_ACTIVE_F :%d", status.VSTOPL_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("VSTOPR_ACTIVE_F :%d", status.VSTOPR_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("ACTIVE_STALL_F :%d", status.ACTIVE_STALL_F); |
|
|
|
ZQUI::ins()->ishow("HOME_ERROR_F :%d", status.HOME_ERROR_F); |
|
|
|
ZQUI::ins()->ishow("FS_ACTIVE_F :%d", status.FS_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("ENC_FAIL_F :%d", status.ENC_FAIL_F); |
|
|
|
ZQUI::ins()->ishow("N_ACTIVE_F :%d", status.N_ACTIVE_F); |
|
|
|
ZQUI::ins()->ishow("ENC_LATCH_F :%d", status.ENC_LATCH_F); |
|
|
|
ZQUI::ins()->ishow("MULTI_CYCLE_FAIL_F :%d", status.MULTI_CYCLE_FAIL_F); |
|
|
|
ZQUI::ins()->ishow("___ :%d", status.___); |
|
|
|
ZQUI::ins()->ishow("CL_FIT_F :%d", status.CL_FIT_F); |
|
|
|
ZQUI::ins()->ishow("SERIAL_ENC_FLAGS :%d", status.SERIAL_ENC_FLAGS); |
|
|
|
ZQUI::ins()->ishow("SG :%d", status.SG); |
|
|
|
ZQUI::ins()->ishow("OT :%d", status.OT); |
|
|
|
ZQUI::ins()->ishow("OTPW :%d", status.OTPW); |
|
|
|
ZQUI::ins()->ishow("S2GA :%d", status.S2GA); |
|
|
|
ZQUI::ins()->ishow("S2GB :%d", status.S2GB); |
|
|
|
ZQUI::ins()->ishow("OLA :%d", status.OLA); |
|
|
|
ZQUI::ins()->ishow("OLB :%d", status.OLB); |
|
|
|
ZQUI::ins()->ishow("STST :%d", status.STST); |
|
|
|
}); |
|
|
|
|
|
|
|
box->newFunc("读取TMC4361A事件状态", {}, [this](int argn, const char **args) { |
|
|
|
ICM->callcmd0(getDeviceId(), kstep_motor_read_tmc4361a_state); |
|
|
|
|
|
|
|
TMC4361AMotorEventState_t status; |
|
|
|
static_assert(sizeof(status) == 4, "sizeof(TMC4361AMotorEventState_t) != 4"); |
|
|
|
|
|
|
|
memcpy(&status, ICM->getAckBuf(), 4); |
|
|
|
|
|
|
|
ZQUI::ins()->ishow("%20s: %d", "TARGET_REACHED", status.TARGET_REACHED); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "POS_COMP_REACHED", status.POS_COMP_REACHED); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VEL_REACHED", status.VEL_REACHED); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VEL_STATE_EQ_0", status.VEL_STATE_EQ_0); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VEL_STATE_EQ_1", status.VEL_STATE_EQ_1); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VEL_STATE_EQ_2", status.VEL_STATE_EQ_2); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "RAMP_STATE_EQ_0", status.RAMP_STATE_EQ_0); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "RAMP_STATE_EQ_1", status.RAMP_STATE_EQ_1); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "RAMP_STATE_EQ_2", status.RAMP_STATE_EQ_2); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "MAX_PHASE_TRAP", status.MAX_PHASE_TRAP); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "FROZEN", status.FROZEN); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "STOPL", status.STOPL); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "STOPR", status.STOPR); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VSTOPL_ACTIVE", status.VSTOPL_ACTIVE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "VSTOPR_ACTIVE", status.VSTOPR_ACTIVE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "HOME_ERROR", status.HOME_ERROR); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "XLATCH_DONE", status.XLATCH_DONE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "FS_ACTIVE", status.FS_ACTIVE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "ENC_FAIL", status.ENC_FAIL); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "N_ACTIVE", status.N_ACTIVE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "ENC_DONE", status.ENC_DONE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "SER_ENC_DATA_FAIL", status.SER_ENC_DATA_FAIL); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "___", status.___); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "SER_DATA_DONE", status.SER_DATA_DONE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "SERIAL_ENC_Flags", status.SERIAL_ENC_Flags); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "COVER_DONE", status.COVER_DONE); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "ENC_VEL0", status.ENC_VEL0); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "CL_MAX", status.CL_MAX); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "CL_FIT", status.CL_FIT); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "STOP_ON_STALL", status.STOP_ON_STALL); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "MOTOR_EV", status.MOTOR_EV); |
|
|
|
ZQUI::ins()->ishow("%20s: %d", "RST_EV", status.RST_EV); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
@ -118,26 +237,28 @@ void StepMotorCtrlTab::constructRegTab(QTabWidget *fathertab) { |
|
|
|
|
|
|
|
tableBox->addReg("motor_pos", kreg_step_motor_pos, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_dpos", kreg_step_motor_dpos, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_shift", kreg_step_motor_shift, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_shaft", kreg_step_motor_shaft, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_one_circle_pulse", kreg_step_motor_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_one_circle_pulse_denominator", kreg_step_motor_one_circle_pulse_denominator, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_default_velocity", kreg_step_motor_default_velocity, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_default_acc", kreg_step_motor_default_acc, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_default_dec", kreg_step_motor_default_dec, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_default_break_dec", kreg_step_motor_default_break_dec, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_ihold", kreg_step_motor_ihold, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_irun", kreg_step_motor_irun, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_iholddelay", kreg_step_motor_iholddelay, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_iglobalscaler", kreg_step_motor_iglobalscaler, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_run_to_zero_max_d", kreg_step_motor_run_to_zero_max_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_look_zero_edge_max_d", kreg_step_motor_look_zero_edge_max_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_run_to_zero_speed", kreg_step_motor_run_to_zero_speed, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_run_to_zero_dec", kreg_step_motor_run_to_zero_dec, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_look_zero_edge_speed", kreg_step_motor_look_zero_edge_speed, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_look_zero_edge_dec", kreg_step_motor_look_zero_edge_dec, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_max_d", kreg_step_motor_max_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("motor_min_d", kreg_step_motor_min_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
|
|
|
|
tableBox->addReg("reg_step_motor_shaft", kreg_step_motor_shaft, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_one_circle_pulse", kreg_step_motor_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_one_circle_pulse_denominator", kreg_step_motor_one_circle_pulse_denominator, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_default_velocity", kreg_step_motor_default_velocity, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_ihold", kreg_step_motor_ihold, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_irun", kreg_step_motor_irun, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_iholddelay", kreg_step_motor_iholddelay, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_iglobalscaler", kreg_step_motor_iglobalscaler, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_run_to_zero_speed", kreg_step_motor_run_to_zero_speed, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_look_zero_edge_speed", kreg_step_motor_look_zero_edge_speed, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_max_d", kreg_step_motor_max_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_min_d", kreg_step_motor_min_d, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_in_debug_mode", kreg_step_motor_in_debug_mode, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_vstart", kreg_step_motor_vstart, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_a1", kreg_step_motor_a1, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_amax", kreg_step_motor_amax, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_v1", kreg_step_motor_v1, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_dmax", kreg_step_motor_dmax, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_d1", kreg_step_motor_d1, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_vstop", kreg_step_motor_vstop, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
tableBox->addReg("reg_step_motor_tzerowait", kreg_step_motor_tzerowait, ZRegItem::krw | ZRegItem::kdec); |
|
|
|
|
|
|
|
tableBox->addSpacer(); |
|
|
|
tab->addSpacer(); |
|
|
|