zhaohe 1 year ago
parent
commit
45bd52150d
  1. 2
      CMakeLists.txt
  2. 2
      a8000_protocol
  3. 7
      src/mainwindow.ui
  4. 4
      src/tab/board_ext_tab.cpp
  5. 161
      src/tab/step_motor_ctrl_tab.cpp
  6. 2
      src/version.h

2
CMakeLists.txt

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.14)
project(a8000_pc_upper VERSION 0.1 LANGUAGES CXX)

2
a8000_protocol

@ -1 +1 @@
Subproject commit 77eb03279eb3f348ded05b200978dae54fc86d1f
Subproject commit 82688278acc674cf0ad6a3a5f9017b93cc45a670

7
src/mainwindow.ui

@ -1009,6 +1009,13 @@ p, li { white-space: pre-wrap; }
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;">40  孵育盘加热 加热模块</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;">50  板夹仓加热</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;">60  进出料 </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO扩展板(60)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO0:试管高低</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO1:转移通道外光电</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO2:转移通道内光电</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO3:出料口试管有无</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO4:试管有无</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> IO5:进料口试管有无</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> 进料电机(61)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> 转移电机(62)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Consolas','Courier New','monospace'; font-size:11pt; color:#ff0000;"> 出料电机(63)</span></p>

4
src/tab/board_ext_tab.cpp

@ -42,9 +42,9 @@ void BoardExtTab::construct(QTabWidget *fathertab) {
ICM->callcmd1(getDeviceId(), kboard_read_ext_io, atoi(args[0]));
ZQUI::ins()->ishow("Status:%d", ICM->getAck(0));
});
box->newFunc("读取全部IO", {"ioindex"}, [this](int argn, const char **args) {
box->newFunc("读取全部IO", {}, [this](int argn, const char **args) {
int32_t status = 0;
ICM->callcmd1(getDeviceId(), kboard_read_muti_io, atoi(args[0]));
ICM->callcmd0(getDeviceId(), kboard_read_muti_io);
ZQUI::ins()->ishow("IOState:%s", hex2binstr(ICM->getAck(0)));
});

161
src/tab/step_motor_ctrl_tab.cpp

@ -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();

2
src/version.h

@ -1,4 +1,4 @@
#pragma once
#define VERSION "VERSION_5"
#define VERSION "VERSION_6"
#define MAUFACTURER "iflytop"
Loading…
Cancel
Save