Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
82182a8dd9
  1. BIN
      app.db
  2. 4
      src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java
  3. 6
      src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java
  4. 4
      src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java
  5. 139
      src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java
  6. 22
      src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java
  7. 8
      src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java
  8. 1
      src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java
  9. 52
      src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java
  10. 6
      src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java
  11. 134
      src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java
  12. 2
      src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java
  13. 12
      src/main/java/a8k/service/db/utils/PosParameterReader.java
  14. 19
      src/main/java/a8k/type/TubeFeedingModuleParam.java
  15. 17
      src/main/java/a8k/type/TubeFeedingModulePos.java
  16. 12
      src/main/java/a8k/type/TubeFeedingModuleSetting.java

BIN
app.db

4
src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java

@ -14,10 +14,10 @@ public enum ExtApiTabConfig {
AppReactionResultMgrService("应用数据.反应结果管理", true), //OK
MiniServoReferencePointSetting("校准.舵机参考点设置", true),
Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true),
ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true),
TubeFeedingModulePosCalibration("校准.试管入料校准", true),
TubePreProcesPosCalibration("校准.试管预处理校准", true),
ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true),
Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true),
HbotTipPosCalibration("校准.Tip耗材位置校准", true),
HbotLittleBottleConsumableCalibration("校准.小瓶耗材位置校准", true),
HbotLargeBottleBSPosCalibration("校准.大瓶BS耗材位置校准", true),

6
src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java

@ -10,7 +10,7 @@ import a8k.service.app.devicectrl.driver.HbotDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService;
import a8k.service.app.devicectrl.param.HbotConsumableParamMgr;
import a8k.service.app.devicectrl.param.HbotFixPosParamMgr;
import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr;
import a8k.type.*;
import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d;
@ -45,7 +45,7 @@ public class HbotTipPosCalibration {
@Resource
HbotConsumableParamMgr hbotConsumableParamMgr;
@Resource
HbotFixPosParamMgr hbotFixPosParamMgr;
HbotFixedPosParamMgr hbotFixedPosParamMgr;
Boolean stopFlag = false;
@ -204,7 +204,7 @@ public class HbotTipPosCalibration {
public void calibrateDropTipPos() throws AppException {
enableModule();
pipetteCtrlDriver.zMotorMeasureDistance();
hbotFixPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult()));
hbotFixedPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult()));
disableModule();
}

4
src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java

@ -47,7 +47,7 @@ public class ReactionPlatesTransmitControlerCalibration {
@Resource
HbotCtrlService hbotCtrlService;
@Resource
HbotFixPosParamMgr hbotFixPosParamMgr;
HbotFixedPosParamMgr hbotFixedPosParamMgr;
@Resource
MotorEnableExDriver motorEnableExDriver;
@ -129,7 +129,7 @@ public class ReactionPlatesTransmitControlerCalibration {
enableModule();
pipetteCtrlDriver.zMotorMeasureDistance();
var pos = new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult());
hbotFixPosParamMgr.setDropLiquidPos(pos);
hbotFixedPosParamMgr.setDropLiquidPos(pos);
disableModule();
return pos;
}

139
src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java

@ -7,12 +7,16 @@ import a8k.hardware.A8kCanBusService;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.exdriver.MotorMoveZeroExDriver;
import a8k.service.app.devicectrl.exdriver.TubeTransportExDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.ctrlservice.TubeTubeFeedingCtrlService;
import a8k.service.app.devicectrl.param.TubeFeedingModuleParamMgr;
import a8k.service.db.type.Parameter;
import a8k.type.TubeFeedingModulePos;
import a8k.type.TubeFeedingModuleSetting;
import a8k.type.TubeHolderScanResult;
import a8k.type.ecode.AppCodeError;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
@ -34,29 +38,32 @@ public class TubeFeedingModulePosCalibration {
@Resource
TubeTransportExDriver tubeTransportExDriver;
@Resource
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
MotorEnableExDriver motorEnableExDriver;
@Resource
MotorMoveZeroExDriver motorMoveZeroExDriver;
private Integer readFeedingModXMPos() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1);
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000);
}
@ExtApiFn(name = "获取所有坐标", group = "基础", order = 1)
public List<Parameter> getParams() throws AppException {
return tubeScanPosMgr.getParams();
@ExtApiFn(name = "获取相关设定值", group = "基础", order = 1)
public List<Parameter> getSettings() throws AppException {
return tubeScanPosMgr.getSettings();
}
@ExtApiFn(name = "获取相关坐标", group = "基础", order = 1)
public List<Parameter> getPoss() throws AppException {
return tubeScanPosMgr.getPoss();
}
// 测试工具
@ExtApiFn(name = "归零", group = "测试工具", order = 11)
public void deviceReset() throws AppException {
enableModule();
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000);
motorMoveZeroExDriver.tubeFeeddingModuleMoveToZero();
//预处理归零
motorEnableExDriver.preProcessRelatedModuleEnable(true);
motorMoveZeroExDriver.preProcessModuleMoveToZero();
motorEnableExDriver.preProcessRelatedModuleEnable(false);
}
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12)
@ -70,65 +77,75 @@ public class TubeFeedingModulePosCalibration {
motorEnableExDriver.preProcessRelatedModuleEnable(false);
}
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<入料位置>", group = "标定试管架位置", order = 21)
// public void setTubeHolderEnterXPos() throws AppException {
// tubeScanPosMgr.setTubeHolderEnterXPos(readFeedingModXMPos());
// }
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<出料位置>", group = "标定试管架位置", order = 22)
// public void setTubeHolderExitXPos() throws AppException {
// tubeScanPosMgr.setTubeHolderExitXPos(readFeedingModXMPos());
// }
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<试管架扫描位置>", group = "标定试管架位置", order = 23)
// public void setTubeHolderScanXPos() throws AppException {
// tubeScanPosMgr.setTubeHolderScanXPos(readFeedingModXMPos());
// }
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<0号试管扫描位置>", group = "标定<试管>位置", order = 24)
// public void setTube0ScanXPos() throws AppException {
// tubeScanPosMgr.setTube0ScanXPos(readFeedingModXMPos());
// }
// 辅助方法
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管高度判断位置>", group = "标定<试管>位置", order = 25)
// public void setTube0AltitJudgXPos() throws AppException {
// tubeScanPosMgr.setTube0AltitJudgXPos(readFeedingModXMPos());
// }
private Integer readFeedingModXMPos() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1);
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000);
}
//
// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管存在判断位置>", group = "标定<试管>位置", order = 26)
// public void setTube0ExistJudgXPos() throws AppException {
// tubeScanPosMgr.setTube0ExistJudgXPos(readFeedingModXMPos());
// }
// 设置
//
@ExtApiFn(name = "设置试管扫描旋转舵机扭矩(0->1000)", group = "设置", order = 200)
public void setTubeScanServoTorque(Integer val) throws AppException {
tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeScanServoTorque, val);
}
Integer tube01pos;
Integer tube10pos;
@ExtApiFn(name = "标记当前位置为-试管1号位", group = "辅助设置试管间距", order = 201)
public Integer labelPosAsTube01Pos() throws AppException {
tube01pos = readFeedingModXMPos();
disableModule();
return tube01pos;
}
@ExtApiFn(name = "标记当前位置为-试管10号位", group = "辅助设置试管间距", order = 202)
public Integer labelPosAsTube10Pos() throws AppException {
tube10pos = readFeedingModXMPos();
disableModule();
return tube10pos;
}
@ExtApiFn(name = "计算并设置设置试管间距", group = "辅助设置试管间距", order = 203)
public Double setTubeSpacing() throws AppException {
if (tube01pos == null || tube10pos == null) {
throw new AppException(new AppCodeError("未标记试管1号位和10号位"));
}
Double spacing = (tube10pos - tube01pos) / 9.0;
tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeSpacing, spacing);
return spacing;
}
// @ExtApiFn(name = "夹紧试管架", group = "校验", order = 31)
// public void scanClampModClamp() throws AppException {
// tubeTransportControler.scanClampModClamp();
// }
//
// @ExtApiFn(name = "释放试管架", group = "校验", order = 32)
// public void scanClampModRelease() throws AppException {
// tubeTransportControler.scanClampModRelease();
// }
// 标定坐标
//
// @ExtApiFn(name = "扫描试管架", group = "校验", order = 33)
// public TubeHolderScanResult scanAll() throws AppException {
// return tubeTubeFeedingModule.scanTubeHodler();
// }
@ExtApiFn(name = "标定位置", group = "标定", order = 300)
public void calibratePos(TubeFeedingModulePos posType) throws AppException {
tubeScanPosMgr.setParam(posType, readFeedingModXMPos());
disableModule();
}
//
// @ExtApiFn(name = "移动试管X到处理位", group = "校验", order = 33)
// public void moveTubeXToPreProcessPos(Integer xtube) throws AppException {
// tubeTubeFeedingModule.moveTubeToPreProcessPos(xtube);
// }
// 校验
//
// @ExtApiFn(name = "设置<试管扫描伺服力矩(100-1000)>", group = "其他", order = 41)
// public void setTubeScanServoTorque(Integer torque) throws AppException {
// tubeScanPosMgr.setTubeScanServoTorque(torque);
// }
@ExtApiFn(name = "扫描试管架", group = "校验", order = 400)
public TubeHolderScanResult calibrateScanTubeHolder() throws AppException {
return tubeTubeFeedingCtrlService.scanTubeHodler();
}
@ExtApiFn(name = "移动试管到预处理位置", group = "校验", order = 401)
public void calibrateMoveTubeToPreProcessPos(Integer tubeIndex0To9) throws AppException {
tubeTubeFeedingCtrlService.moveTubeToPreProcessPos(tubeIndex0To9);
}
}

22
src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java

@ -9,6 +9,7 @@ import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.exdriver.MotorMoveZeroExDriver;
import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
@ -31,19 +32,14 @@ public class TubePreProcesPosCalibration {
TubePreProcesCtrlService controler;
@Resource
MotorEnableExDriver motorEnableExDriver;
@Resource
MotorMoveZeroExDriver motorMoveZeroExDriver;
//基础工具
@ExtApiFn(name = "归零", group = "测试工具", order = 1)
public void deviceReset() throws AppException {
enableModule();
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, overtime);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, overtime);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, overtime);
stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, overtime);
stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModClampingM, posMgr.getShakeClampMotorReleasePos(), overtime);
motorMoveZeroExDriver.preProcessModuleMoveToZero();
}
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2)
@ -57,25 +53,17 @@ public class TubePreProcesPosCalibration {
motorEnableExDriver.tubeFeedRelatedModuleEnable(false);
}
// @ExtApiFn(name = "读取夹爪当前位置", group = "测试工具", order = 4)
// public Integer readGripperPos() throws AppException {
// return miniServoControler.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
// }
@ExtApiFn(name = "读取所有设定值", group = "测试工具", order = 5)
public TubePreProcesPosParamMgr getPoss() {
return posMgr;
}
// @ExtApiFn()
// GripperRedundancySpacingForTubeCap
@ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "其他设置", order = 6)
@ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "设置", order = 6)
public void setGripperRedundancySpacingForTubeCap(Integer value) {
posMgr.setGripperRedundancySpacingForTubeCap(value);
}
//
// 夹爪标定,校准,校验
//

8
src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java

@ -5,7 +5,7 @@ import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.param.HbotConsumableParamMgr;
import a8k.service.app.devicectrl.param.HbotFixPosParamMgr;
import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr;
import a8k.service.app.devicectrl.param.HbotSamplePosParamMgr;
import a8k.type.ConsumableGroup;
import a8k.type.HbotSamplePos;
@ -22,7 +22,7 @@ public class HbotCtrlService {
static Logger logger = LoggerFactory.getLogger(HbotCtrlService.class);
@Resource
HbotFixPosParamMgr hbotFixPosParamMgr;
HbotFixedPosParamMgr hbotFixedPosParamMgr;
@Resource
HbotSamplePosParamMgr hbotSamplePosParamMgr;
@Resource
@ -73,12 +73,12 @@ public class HbotCtrlService {
}
public void dropTip() throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropTipPos());
hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropTipPos());
pipetteCtrlDriver.putTipBlock();
}
public void moveToDropLiquidPos() throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropLiquidPos());
hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropLiquidPos());
}
/**

1
src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java

@ -247,7 +247,6 @@ public class TubePreProcesCtrlService {
tubePreProcesPosParamMgr.getZMotorShakeTubePos() + tubePreProcesPosParamMgr.getGripperRedundancySpacingForTubeCap(),
actionOvertime);
//释放试管
clampingMReleaseTube();
//Z轴上移动到零位

52
src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java

@ -0,0 +1,52 @@
package a8k.service.app.devicectrl.exdriver;
import a8k.hardware.A8kCanBusService;
import a8k.service.app.devicectrl.driver.HbotDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
@Component
public class MotorMoveZeroExDriver {
@Resource
A8kCanBusService canBus;
@Resource
HbotDriver hbotDriver;
@Resource
PipetteCtrlDriver pipetteCtrlDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
MiniServoDriver miniServoDriver;
@Resource
TubePreProcesPosParamMgr tubePreProcesPosParamMgr;
/**
* 入料模块归零
* @throws AppException e
*/
public void tubeFeeddingModuleMoveToZero() throws AppException {
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000);
}
/**
* 预处理模块归零
* @throws AppException e
*/
public void preProcessModuleMoveToZero() throws AppException {
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, 5000);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000);
// move to default pos
}
}

6
src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java → src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java

@ -20,9 +20,9 @@ import java.util.List;
*/
@Component
@ExtApiTab(cfg = ExtApiTabConfig.Hbot2DCodeScanPos)
@ExtApiParamsTab(service = HbotFixPosParamMgr.class)
public class HbotFixPosParamMgr {
static final Logger logger = LoggerFactory.getLogger(HbotFixPosParamMgr.class);
@ExtApiParamsTab(service = HbotFixedPosParamMgr.class)
public class HbotFixedPosParamMgr {
static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class);
enum Pos {
DropTipPos("丢TIP位置"),

134
src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java

@ -3,7 +3,8 @@ package a8k.service.app.devicectrl.param;
import a8k.service.db.LowerDeviceParameterDBService;
import a8k.service.db.type.Parameter;
import a8k.service.db.utils.PosParameterReader;
import a8k.type.TubeFeedingModuleParam;
import a8k.type.TubeFeedingModuleSetting;
import a8k.type.TubeFeedingModulePos;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
@ -26,102 +27,105 @@ public class TubeFeedingModuleParamMgr {
@PostConstruct
void initialize() {
posReader = lowerDeviceParameterDBService.getReader(this.getClass());
for (TubeFeedingModuleParam tubeFeedingModuleParam : TubeFeedingModuleParam.values()) {
posReader.setParamChName(tubeFeedingModuleParam, tubeFeedingModuleParam.chName);
for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) {
posReader.setParamChName(pos, pos.chName);
}
for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) {
posReader.setParamChName(param, param.chName);
}
}
// if (!nowParaVersion.equals(paraVersion)) {
// logger.info("init param");
// posReader.setParam(POS.TubeHolderEnterXPos, -46);
// posReader.setParam(POS.TubeHolderExitXPos, 3975);
// posReader.setParam(POS.TubeHolderScanXPos, 2202);
// posReader.setParam(POS.Tube0ScanXPos, 505);
// posReader.setParam(POS.Tube0AltitJudgXPos, 505);
// posReader.setParam(POS.Tube0ExistJudgXPos, 300);
// posReader.setParam(POS.Tube0PreProcessXPos, 1225);
// posReader.setParam(POS.TubeScanServoTorque, 500);
// }
public List<Parameter> getSettings() {
return posReader.getParams(TubeFeedingModuleSetting.values());
}
public List<Parameter> getPoss() {
return posReader.getParams(TubeFeedingModulePos.values());
}
public List<Parameter> getParams() {
return posReader.getParams();
public void setParam(TubeFeedingModulePos param, Object obj) {
posReader.setParam(param, obj);
}
public void setParam(TubeFeedingModuleParam param, Object obj) {
public void setParam(TubeFeedingModuleSetting param, Object obj) {
posReader.setParam(param, obj);
}
/**
* 获取管子预处理位置
* @param tubeIndex 管子序号
* @return 坐标
*/
public Integer getTubePreProcessPos(Integer tubeIndex) {
Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0PreProcessXPos, Integer.class);
Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class);
return startPos + spacing * tubeIndex;
Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class);
Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
}
/**
* 获取试管扫描位置
* @param tubeIndex 管子序号
* @return 坐标
*/
public Integer getTubeScanPos(Integer tubeIndex) {
Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ScanXPos, Integer.class);
Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class);
return startPos + spacing * tubeIndex;
Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ScanPos, Integer.class);
Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
}
/**
* 获取试管高度判断位置
* @param tubeIndex 管子序号
* @return 坐标
*/
public Integer getTubeAltitJudgPos(Integer tubeIndex) {
Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0AltitJudgXPos, Integer.class);
Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class);
return startPos + spacing * tubeIndex;
Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class);
Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
}
/**
* 获取试管存在判断位置
* @param tubeIndex 管子序号
* @return 坐标
*/
public Integer getTubeExistJudgPos(Integer tubeIndex) {
Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ExistJudgXPos, Integer.class);
Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class);
return startPos + spacing * tubeIndex;
Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class);
Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
}
/**
* 获取试管架进入位置
* @return X轴坐标
*/
public Integer getTubeHolderEnterXPos() {
return posReader.getPos(TubeFeedingModuleParam.TubeHolderEnterXPos, Integer.class);
return posReader.getPos(TubeFeedingModulePos.TubeHolderEnterXPos, Integer.class);
}
/**
* 获取试管架出口位置
* @return X轴坐标
*/
public Integer getTubeHolderExitXPos() {
return posReader.getPos(TubeFeedingModuleParam.TubeHolderExitXPos, Integer.class);
return posReader.getPos(TubeFeedingModulePos.TubeHolderExitXPos, Integer.class);
}
/**
* 获取试管架扫描位置
* @return X轴坐标
*/
public Integer getTubeHolderScanXPos() {
return posReader.getPos(TubeFeedingModuleParam.TubeHolderScanXPos, Integer.class);
return posReader.getPos(TubeFeedingModulePos.TubeHolderScanXPos, Integer.class);
}
/**
* 获取试管架扫描位置
* @return X轴坐标
*/
public Integer getTubeScanServoTorque() {
return posReader.getPos(TubeFeedingModuleParam.TubeScanServoTorque, Integer.class);
}
// public void setTube0PreProcessXPos(Integer value) {posReader.setParam(TubeFeedingModuleParam.Tube0PreProcessXPos, value);}
//
// public void setTubeHolderEnterXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.TubeHolderEnterXPos, value);
// }
//
// public void setTubeHolderExitXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.TubeHolderExitXPos, value);
// }
//
// public void setTubeHolderScanXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.TubeHolderScanXPos, value);
// }
//
// public void setTube0ScanXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.Tube0ScanXPos, value);
// }
//
// public void setTube0AltitJudgXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.Tube0AltitJudgXPos, value);
// }
//
// public void setTube0ExistJudgXPos(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.Tube0ExistJudgXPos, value);
// }
//
// public void setTubeScanServoTorque(Integer value) {
// posReader.setParam(TubeFeedingModuleParam.TubeScanServoTorque, value);
// }
return posReader.getPos(TubeFeedingModuleSetting.TubeScanServoTorque, Integer.class);
}
}

2
src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java

@ -24,7 +24,7 @@ public class TubePreProcesPosParamMgr {
ShakeClampMotorClampPos("试管夹紧位"),//
ShakeClampMotorReleasePos("摇匀臂"),//
GripperRedundancySpacingForTubeCap("夹爪试管帽冗余间距"),//
GripperRedundancySpacingForTubeCap("夹爪试管帽垂直冗余"),//
;
public final String chName;

12
src/main/java/a8k/service/db/utils/PosParameterReader.java

@ -3,6 +3,7 @@ package a8k.service.db.utils;
import a8k.service.db.LowerDeviceParameterDBService;
import a8k.service.db.type.Parameter;
import java.util.ArrayList;
import java.util.List;
public class PosParameterReader {
@ -48,9 +49,16 @@ public class PosParameterReader {
}
public List<Parameter> getParams() {
return lowerDeviceParameterDBService.getParams(service.getSimpleName());
}
public List<Parameter> getParams(Enum<?>[] etable) {
List<Parameter> parameters = new ArrayList<>();
for (Enum<?> e : etable) {
Parameter parameter = lowerDeviceParameterDBService.getParam(service.getSimpleName(), e.name());
parameters.add(parameter);
}
return parameters;
}
}

19
src/main/java/a8k/type/TubeFeedingModuleParam.java

@ -1,19 +0,0 @@
package a8k.type;
public enum TubeFeedingModuleParam {
TubeHolderEnterXPos("入料位置"), //
TubeHolderExitXPos("出料位置"), //
TubeHolderScanXPos("试管架扫描位置"), //
Tube0ScanXPos("01号试管扫描位置"), //
Tube0AltitJudgXPos("01试管高度判断位置"), //
Tube0ExistJudgXPos("01试管存在判断位置"), //
Tube0PreProcessXPos("01试管预处理位置"), //
TubeScanServoTorque("试管扫描伺服力矩"), //
TubeSpacing("试管间距"), //
;
public final String chName;
TubeFeedingModuleParam(String chName) {
this.chName = chName;
}
}

17
src/main/java/a8k/type/TubeFeedingModulePos.java

@ -0,0 +1,17 @@
package a8k.type;
public enum TubeFeedingModulePos {
TubeHolderEnterXPos("入料位置"), //
TubeHolderExitXPos("出料位置"), //
TubeHolderScanXPos("试管架扫描位置"), //
Tube0ScanPos("01号试管扫描位置"), //
Tube0AltitJudgPos("01试管高度判断位置"), //
Tube0ExistJudgPos("01试管存在判断位置"), //
Tube0PreProcessPos("01试管预处理位置"), //
;
public final String chName;
TubeFeedingModulePos(String chName) {
this.chName = chName;
}
}

12
src/main/java/a8k/type/TubeFeedingModuleSetting.java

@ -0,0 +1,12 @@
package a8k.type;
public enum TubeFeedingModuleSetting {
TubeScanServoTorque("试管扫描伺服力矩"), //
TubeSpacing("试管间距"), //
;
public final String chName;
TubeFeedingModuleSetting(String chName) {
this.chName = chName;
}
}
Loading…
Cancel
Save