diff --git a/app.db b/app.db index 55a01ea..ced4998 100644 Binary files a/app.db and b/app.db differ diff --git a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java index 58715e4..940f4e4 100644 --- a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java @@ -15,7 +15,7 @@ public enum ExtApiTabConfig { Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true), - TubeScanPosCalibration("校准.试管扫描校准", true), + TubeFeedingModulePosCalibration("校准.试管入料校准", true), TubePreProcesPosCalibration("校准.试管预处理校准", true), diff --git a/src/main/java/a8k/service/app/devicedriver/calibration/TubeScanPosCalibration.java b/src/main/java/a8k/service/app/devicedriver/calibration/TubeFeedingModulePosCalibration.java similarity index 93% rename from src/main/java/a8k/service/app/devicedriver/calibration/TubeScanPosCalibration.java rename to src/main/java/a8k/service/app/devicedriver/calibration/TubeFeedingModulePosCalibration.java index 15b2e99..273cae5 100644 --- a/src/main/java/a8k/service/app/devicedriver/calibration/TubeScanPosCalibration.java +++ b/src/main/java/a8k/service/app/devicedriver/calibration/TubeFeedingModulePosCalibration.java @@ -17,9 +17,9 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Component; -@ExtApiTab(cfg = ExtApiTabConfig.TubeScanPosCalibration) +@ExtApiTab(cfg = ExtApiTabConfig.TubeFeedingModulePosCalibration) @Component -public class TubeScanPosCalibration { +public class TubeFeedingModulePosCalibration { @Resource TubeFeedingModulePosMgr tubeScanPosMgr; @@ -33,7 +33,7 @@ public class TubeScanPosCalibration { @Resource MiniServoControler miniServoControler; @Resource - StepMotorControler stepMotorControler; + StepMotorControler stepMotorControler; private Integer readFeedingModXMPos() throws AppException { stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModXM, 1); @@ -122,6 +122,11 @@ public class TubeScanPosCalibration { return tubeTubeFeedingModule.scanTubeHodler(); } + @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); diff --git a/src/main/java/a8k/service/app/devicedriver/calibration/TubePreProcesPosCalibration.java b/src/main/java/a8k/service/app/devicedriver/calibration/TubePreProcesPosCalibration.java index 5b28ed1..2e73805 100644 --- a/src/main/java/a8k/service/app/devicedriver/calibration/TubePreProcesPosCalibration.java +++ b/src/main/java/a8k/service/app/devicedriver/calibration/TubePreProcesPosCalibration.java @@ -78,10 +78,14 @@ public class TubePreProcesPosCalibration { //XProcessPos: 标定,验证 //ShakeClamp : 标定,校验 + // + // 夹爪标定,校准,校验 + // + @ExtApiFn(name = "设置当前位置为<参考点>", group = "夹爪", order = 21) public Integer gripperSVSetCurrentPosAsRef() throws AppException { - miniServoControler.miniServoSetCurPos(MiniServoMId.ShakeModGripperSV, 100); - return 100; + miniServoControler.miniServoSetCurPos(MiniServoMId.ShakeModGripperSV, 1800); + return 1800; } @ExtApiFn(name = "<标定>当前点为<抓手张开位置>", group = "夹爪", order = 22) diff --git a/src/main/java/a8k/service/app/devicedriver/ctrl/TubeTubeFeedingModule.java b/src/main/java/a8k/service/app/devicedriver/ctrl/TubeTubeFeedingModule.java index 23d6b7e..d223e87 100644 --- a/src/main/java/a8k/service/app/devicedriver/ctrl/TubeTubeFeedingModule.java +++ b/src/main/java/a8k/service/app/devicedriver/ctrl/TubeTubeFeedingModule.java @@ -45,7 +45,7 @@ public class TubeTubeFeedingModule { } @Resource - AppEventBusService ebus; + AppEventBusService ebus; @Resource A8kCanBusService canBus; @Resource @@ -53,13 +53,13 @@ public class TubeTubeFeedingModule { @Resource TubeHolderParamMgr tubeHolderParamMgr; @Resource - CodeScaner codeScaner; + CodeScaner codeScaner; @Resource - TubeTransportControler tubeTransportControler; + TubeTransportControler tubeTransportControler; @Resource - MiniServoControler miniServoControler; + MiniServoControler miniServoControler; @Resource - StepMotorControler stepMotorControler; + StepMotorControler stepMotorControler; private Boolean isTubeExist() throws AppException { @@ -107,6 +107,7 @@ public class TubeTubeFeedingModule { /*========================================================================================= * 片段 *========================================================================================*/ + /** * 移动试管架到入口位置 */ @@ -122,6 +123,11 @@ public class TubeTubeFeedingModule { tubeTransportControler.moveTubeRackTo(stp.getTubeHolderExitXPos() - 10, TargetPosMeasureDirection.NOTCARE, false); } + public void moveTubeToPreProcessPos(Integer tubeIndex) throws AppException { + tubeTransportControler.moveTubeRackTo(stp.getTube0PreProcessXPos() + tubeIndex * tubeHolderParamMgr.getTubeSpacing(), TargetPosMeasureDirection.POSITIVE, false); + } + + /** * 移动<试管架>到出口位置 */ @@ -297,4 +303,5 @@ public class TubeTubeFeedingModule { return result; } + } diff --git a/src/main/java/a8k/service/app/devicedriver/pos/TubeFeedingModulePosMgr.java b/src/main/java/a8k/service/app/devicedriver/pos/TubeFeedingModulePosMgr.java index 5b5feea..72fed83 100644 --- a/src/main/java/a8k/service/app/devicedriver/pos/TubeFeedingModulePosMgr.java +++ b/src/main/java/a8k/service/app/devicedriver/pos/TubeFeedingModulePosMgr.java @@ -24,14 +24,16 @@ public class TubeFeedingModulePosMgr { Tube0ScanXPos, // 0号试管扫描位置 Tube0AltitJudgXPos, // 0试管高度判断位置 Tube0ExistJudgXPos, // 0试管存在判断位置 + Tube0PreProcessXPos, // 0试管预处理位置 TubeScanServoTorque,// 试管扫描伺服力矩 + } @Resource LowerDeviceParameterDBService lowerDeviceParameterDBService; PosParameterReader posReader = null; - Integer nowParaVersion = 0; + Integer nowParaVersion = 1; // // MotorTubeRackMoveCtrlService @@ -42,26 +44,26 @@ public class TubeFeedingModulePosMgr { posReader = lowerDeviceParameterDBService.getReader(this.getClass()); Integer paraVersion = posReader.getVersion(); if (!nowParaVersion.equals(paraVersion)) { - paramReset(); + logger.info("init param"); + posReader.setVersion(nowParaVersion); + posReader.updatePos(POS.TubeHolderEnterXPos, -46); + posReader.updatePos(POS.TubeHolderExitXPos, 3975); + posReader.updatePos(POS.TubeHolderScanXPos, 2202); + posReader.updatePos(POS.Tube0ScanXPos, 505); + posReader.updatePos(POS.Tube0AltitJudgXPos, 505); + posReader.updatePos(POS.Tube0ExistJudgXPos, 300); + posReader.updatePos(POS.Tube0PreProcessXPos, 1225); + posReader.updatePos(POS.TubeScanServoTorque, 500); } - } - void paramReset() { - logger.info("init param"); - posReader.setVersion(nowParaVersion); - posReader.updatePos(POS.TubeHolderEnterXPos, -46); - posReader.updatePos(POS.TubeHolderExitXPos, 3975); - posReader.updatePos(POS.TubeHolderScanXPos, 2202); - posReader.updatePos(POS.Tube0ScanXPos, 505); - posReader.updatePos(POS.Tube0AltitJudgXPos, 505); - posReader.updatePos(POS.Tube0ExistJudgXPos, 300); - posReader.updatePos(POS.TubeScanServoTorque, 500); } public Integer getParam(POS pos) { return posReader.getPos(pos, Integer.class); } + public Integer getTube0PreProcessXPos() {return getParam(POS.Tube0PreProcessXPos);} + public Integer getTubeHolderEnterXPos() { return getParam(POS.TubeHolderEnterXPos); } @@ -90,6 +92,8 @@ public class TubeFeedingModulePosMgr { return getParam(POS.TubeScanServoTorque); } + public void setTube0PreProcessXPos(Integer value) {posReader.updatePos(POS.Tube0PreProcessXPos, value);} + public void setTubeHolderEnterXPos(Integer value) { posReader.updatePos(POS.TubeHolderEnterXPos, value); } @@ -118,4 +122,5 @@ public class TubeFeedingModulePosMgr { public void setTubeScanServoTorque(Integer value) { posReader.updatePos(POS.TubeScanServoTorque, value); } + } diff --git a/src/main/java/a8k/service/app/devicedriver/pos/TubePreProcesPosMgr.java b/src/main/java/a8k/service/app/devicedriver/pos/TubePreProcesPosMgr.java index 1de2810..36ecdfd 100644 --- a/src/main/java/a8k/service/app/devicedriver/pos/TubePreProcesPosMgr.java +++ b/src/main/java/a8k/service/app/devicedriver/pos/TubePreProcesPosMgr.java @@ -41,7 +41,7 @@ public class TubePreProcesPosMgr { LowerDeviceParameterDBService lowerDeviceParameterDBService; PosParameterReader posReader = null; - Integer nowParaVersion = 0; + Integer nowParaVersion = 1; @PostConstruct void initialize() { @@ -52,11 +52,10 @@ public class TubePreProcesPosMgr { posReader.setVersion(nowParaVersion); // 677,450,310,355 - // 1800, - - posReader.updatePos(POS.GripperServoOpenPos, 450); - posReader.updatePos(POS.GripperServoClosePos, 310); - posReader.updatePos(POS.GripperServoTakeCapPos, 355); + // 1800,1573,1433,1388 + posReader.updatePos(POS.GripperServoOpenPos, 1573); + posReader.updatePos(POS.GripperServoClosePos, 1433); + posReader.updatePos(POS.GripperServoTakeCapPos, 1388); posReader.updatePos(POS.YServoTakeTubePos, 3080); posReader.updatePos(POS.YServoShakePos, 2130); posReader.updatePos(POS.YServoZeroYPos, 300); diff --git a/src/main/java/a8k/service/db/LowerDeviceParameterDBService.java b/src/main/java/a8k/service/db/LowerDeviceParameterDBService.java index 3318ee2..e32a3fa 100644 --- a/src/main/java/a8k/service/db/LowerDeviceParameterDBService.java +++ b/src/main/java/a8k/service/db/LowerDeviceParameterDBService.java @@ -78,12 +78,18 @@ public class LowerDeviceParameterDBService { } } + public void tryInitParam(String service, String key, Object pos) { + if (getParam(service, key, Object.class) == null) { + updateParam(service, key, pos); + } + } + public Integer getParamVersion(String service) { return getParam(service, "VERSION", Integer.class); } public void setParamVersion(String service, Integer version) { - updateParam(service, "VERSION", 0); + updateParam(service, "VERSION", version); } public PosParameterReader getReader(Class type) { diff --git a/src/main/java/a8k/service/db/utils/PosParameterReader.java b/src/main/java/a8k/service/db/utils/PosParameterReader.java index f6316f4..a256417 100644 --- a/src/main/java/a8k/service/db/utils/PosParameterReader.java +++ b/src/main/java/a8k/service/db/utils/PosParameterReader.java @@ -25,7 +25,10 @@ public class PosParameterReader { public void updatePos(Enum key, Object pos) { lowerDeviceParameterDBService.updateParam(service.getSimpleName(), key.name(), pos); + } + public void tryInitParam(Enum key, Object parm) { + lowerDeviceParameterDBService.tryInitParam(service.getSimpleName(), key.name(), parm); } public Integer getVersion() { diff --git a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java index 355f148..8102246 100644 --- a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java +++ b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java @@ -37,8 +37,8 @@ public class ZSqliteJdbcHelper { } static public void createTable(JdbcTemplate jdbcTemplate, String tableName, Class tClass) { - StringBuilder sql = new StringBuilder("create table " + tableName + " ("); - Boolean hasId = false; + StringBuilder sql = new StringBuilder("create table " + tableName + " ("); + Boolean hasId = false; for (java.lang.reflect.Field field : tClass.getDeclaredFields()) { if (field.getName().equals("id")) { hasId = true; @@ -62,7 +62,7 @@ public class ZSqliteJdbcHelper { sql.append("text,"); } } - if(!hasId) { + if (!hasId) { throw new RuntimeException("id field not found in class " + tClass.getName()); } @@ -186,11 +186,12 @@ public class ZSqliteJdbcHelper { sql.append(field.getName()).append(" = ?,"); } sql.deleteCharAt(sql.length() - 1).append(" where id = ?"); - System.out.println(sql.toString()); - List args = buildArgs(tClass, obj); args.add(id); + // System.out.println(sql); + // System.out.println(args); + jdbcTemplate.update(sql.toString(), args.toArray()); } } \ No newline at end of file