Browse Source

V1.0| 添加HBot偏移设置

master
zhaohe 4 months ago
parent
commit
ff48edbbbd
  1. 18
      src/main/java/a8k/app/config/VersionConfig.java
  2. 3
      src/main/java/a8k/app/hardware/type/A8kEcode.java
  3. 2
      src/main/java/a8k/app/hardware/type/RegIndex.java
  4. 1
      src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java
  5. 1
      src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java
  6. 41
      src/main/java/a8k/extui/page/driver/HbotCtrlPage.java
  7. 5
      src/main/java/a8k/extui/page/driver/MotorCtrlPage.java
  8. 7
      src/main/java/a8k/extui/page/driver/PipetteMotorCtrlPage.java

18
src/main/java/a8k/app/config/VersionConfig.java

@ -0,0 +1,18 @@
package a8k.app.config;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class VersionConfig {
static String version = "1.0";
@PostConstruct
public void init() {
log.info("=====================================================================");
log.info("= APP VERSION {}", version);
log.info("= APP BUILD TIME {}", System.getProperty("build.time"));
}
}

3
src/main/java/a8k/app/hardware/type/A8kEcode.java

@ -184,10 +184,12 @@ public enum A8kEcode {
LOW_ERROR_PIPETTE_ERROR_VOLUME_ERROR(1419),
LOW_ERROR_PIPETTE_ERROR_TIP_ALREADY_LOAD(1420),
LOW_ERROR_PIPETTE_ERROR_TIP_LOAD_FAIL(1421),
LOW_ERROR_PIPETTE_ERROR_NO_TIP_WHEN_LLD(1422),
LOW_ERROR_PIPETTE_ERROR_UNINITED(1501),
LOW_ERROR_PIPETTE_ERROR_NOT_LLD_PREPARE(1502),
LOW_ERROR_PIPETTE_ERROR_TIPISLOAD_WHEN_LLD_PREPARE(1500),
LOW_ERROR_PIPETTE_ERROR_PUMP_LOAD_VAL_IS_NOT_EMPTY(1503),
LOW_ERROR_STEP_MOTOR_NOT_FOUND_ZERO_POINT(1600),
LOW_ERROR_STEP_MOTOR_NOT_GO_ZERO(1601),
LOW_ERROR_STEP_MOTOR_OVER_TEMPERATURE(1602),
@ -222,7 +224,6 @@ public enum A8kEcode {
LOW_EXT_ERROR_MOTOR_AT_WRONG_POS(5002),//电机在错误的位置
;
public final int index;
public int rawindex = 0;

2
src/main/java/a8k/app/hardware/type/RegIndex.java

@ -144,7 +144,7 @@ public enum RegIndex {
kreg_step_motor_is_enable(10102), // 是否使能
kreg_step_motor_dpos(10103), // 执行完上一条指令后的相对位移
kreg_step_motor_has_move_zero(10104), // 是否回零
kreg_step_motor_shift(10150), // x偏移
// kreg_step_motor_shift(10150), // x偏移
kreg_step_motor_shaft(10151), // x轴是否反转
kreg_step_motor_one_circle_pulse(10152), // x轴一圈脉冲数
kreg_step_motor_one_circle_pulse_denominator(10153), // 设置一圈脉冲数的分母

1
src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java

@ -70,6 +70,7 @@ public class A8kSubModuleRegInitService {
dumpAllSubBoardVersion();
initA8kModParams();
gStateMgrService.setBoardParamInited(true);
log.info("======================================================");
log.info("= init hardware param success...... =");
log.info("======================================================");

1
src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java

@ -119,6 +119,7 @@ public class ExtApiPageGroupCfgMgr {
pushMenu(new Menu("子模块管理", ZList.of(
new Menu(LowLevelBoardVersionPreviewPage.class, "子模块版本查看"),
new Menu(HbotCtrlPage.class, "HBOT控制"),
new Menu(PipetteCtrlDriverPage.getPageClass(), "移液抢驱动"),
new Menu(PipetteMotorCtrlPage.class, "移液抢电机驱动控制"),

41
src/main/java/a8k/extui/page/driver/HbotCtrlPage.java

@ -3,10 +3,12 @@ package a8k.extui.page.driver;
import a8k.app.constant.GearBacklashConstant;
import a8k.app.hardware.driver.HbotDriver;
import a8k.app.hardware.driver.PipetteCtrlDriver;
import a8k.app.hardware.type.HbotRegIndex;
import a8k.app.hardware.type.PipetteRegIndex;
import a8k.app.type.a8k.Pos2d;
import a8k.app.type.a8k.Pos3d;
import a8k.app.type.exception.AppException;
import a8k.app.utils.ZJsonNode;
import a8k.extui.mgr.ExtApiPageMgr;
import a8k.extui.type.ExtApiStatu;
import jakarta.annotation.PostConstruct;
@ -141,6 +143,39 @@ public class HbotCtrlPage {
}
public void setReg(HbotRegIndex reg, Integer val) throws AppException {
hbotDriver.setReg(reg, val);
}
public Object readAllRegs() throws AppException {
ZJsonNode node = new ZJsonNode();
for (HbotRegIndex regIndex : HbotRegIndex.values()) {
Integer regVal = hbotDriver.getReg(regIndex);
log.info("reg {}: {}", regIndex, regVal);
node.get(regIndex.name()).set(regVal);
}
return node.get();
}
public Integer readRegNoEx(HbotRegIndex regIndex) {
try {
return hbotDriver.getReg(regIndex);
} catch (AppException e) {
return 0;
}
}
public void setShift(Integer xshift, Integer yshift) throws AppException {
hbotDriver.setReg(HbotRegIndex.kreg_xyrobot_shift_x, xshift);
hbotDriver.setReg(HbotRegIndex.kreg_xyrobot_shift_y, yshift);
}
public void setIRunIHold(Integer iRun, Integer iHold) throws AppException {
hbotDriver.setReg(HbotRegIndex.kreg_xyrobot_irun, iRun);
hbotDriver.setReg(HbotRegIndex.kreg_xyrobot_ihold, iHold);
}
@PostConstruct
public void init() {
var page = extApiPageMgr.newPage(this);
@ -167,6 +202,12 @@ public class HbotCtrlPage {
page.addFunction("移动到", this::measurementMoveTo);
page.addFunction("移动到", this::measurementMoveTo).setParamVal("x", () -> readPosNoEx().x).setParamVal("y", () -> readPosNoEx().y).setParamVal("z", () -> readPosNoEx().z);
page.newGroup("读写寄存器");
page.addFunction("设置偏移", this::setShift).setParamVal("xshift", () -> readRegNoEx(HbotRegIndex.kreg_xyrobot_shift_x)).setParamVal("yshift", () -> readRegNoEx(HbotRegIndex.kreg_xyrobot_shift_y));
page.addFunction("读所有寄存器", this::readAllRegs);
page.addFunction("设置寄存器", this::setReg);
extApiPageMgr.addPage(page);
}
}

5
src/main/java/a8k/extui/page/driver/MotorCtrlPage.java

@ -161,6 +161,10 @@ public class MotorCtrlPage {
stepMotorCtrlDriver.setReg(id, StepMotorRegIndex.kreg_step_motor_one_circle_pulse_denominator, denominator);
}
public void setDZero(Integer dzero) throws AppException {
stepMotorCtrlDriver.setReg(id, StepMotorRegIndex.kreg_step_motor_dzero_pos, dzero);
}
public Integer readReg(StepMotorRegIndex reg) {
try {
return stepMotorCtrlDriver.getReg(id, reg);
@ -212,6 +216,7 @@ public class MotorCtrlPage {
page.addFunction("设置一圈脉冲数", this::setOneCirclePulse)
.setParamVal("pulse", () -> readReg(StepMotorRegIndex.kreg_step_motor_one_circle_pulse)).setParamVal("denominator",
() -> readReg(StepMotorRegIndex.kreg_step_motor_one_circle_pulse_denominator));
page.addFunction("设置DZero", this::setDZero).setParamVal("dzero", () -> readReg(StepMotorRegIndex.kreg_step_motor_dzero_pos));
page.addFunction("设置寄存器", this::setReg);
page.addFunction("读取所有寄存器", this::readAllRegs);

7
src/main/java/a8k/extui/page/driver/PipetteMotorCtrlPage.java

@ -126,6 +126,10 @@ public class PipetteMotorCtrlPage {
pipetteCtrlDriver.setReg(PipetteRegIndex.kreg_pipette_zm_one_circle_pulse_denominator, denominator);
}
public void setDZeroPos(Integer dZeroPos) throws AppException {
pipetteCtrlDriver.setReg(PipetteRegIndex.kreg_pipette_zm_dzero, dZeroPos);
}
public Integer readReg(PipetteRegIndex reg) {
try {
return pipetteCtrlDriver.getReg(reg);
@ -165,16 +169,15 @@ public class PipetteMotorCtrlPage {
page.addFunction("设置一圈脉冲数", this::setOneCirclePulse)
.setParamVal("pulse", () -> readReg(PipetteRegIndex.kreg_pipette_zm_one_circle_pulse)).setParamVal("denominator",
() -> readReg(PipetteRegIndex.kreg_pipette_zm_one_circle_pulse_denominator));
page.addFunction("设置DZERO", this::setDZeroPos).setParamVal("dZeroPos", () -> readReg(PipetteRegIndex.kreg_pipette_zm_dzero));
page.addFunction("设置寄存器", this::setReg);
page.addFunction("读取所有寄存器", this::readAllRegs);
page.newGroup("状态");
page.addFunction("读取位置", this::readPos);
page.addFunction("读取编码器位置", this::readEncPos);
extApiPageMgr.addPage(page);

Loading…
Cancel
Save