diff --git a/src/main/java/a8k/A8kApplication.java b/src/main/java/a8k/A8kApplication.java index 2eb159a..15eb12f 100644 --- a/src/main/java/a8k/A8kApplication.java +++ b/src/main/java/a8k/A8kApplication.java @@ -7,9 +7,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; -import java.util.HashMap; -import java.util.Map; - @ControllerAdvice public class A8kApplication { diff --git a/src/main/java/a8k/appbean/ecode/AppRet.java b/src/main/java/a8k/appbean/ecode/AppRet.java index 7e41374..38c4ef0 100644 --- a/src/main/java/a8k/appbean/ecode/AppRet.java +++ b/src/main/java/a8k/appbean/ecode/AppRet.java @@ -7,7 +7,7 @@ import a8k.appbean.HardwareException; public class AppRet { - boolean suc; + boolean success = false; AppRetEcodeInfo ecode; T data; long timestamp;//接口请求时间 @@ -17,8 +17,8 @@ public class AppRet { this.timestamp = System.currentTimeMillis(); } - public boolean isSuc() { - return suc; + public boolean isSuccess() { + return success; } public long getTimestamp() { @@ -40,8 +40,8 @@ public class AppRet { public static AppRet success(T data) { AppRet r = new AppRet<>(); - r.suc = true; - r.ecode = null; + r.success = true; + r.ecode = null; r.data = data; return r; } @@ -49,32 +49,32 @@ public class AppRet { public static AppRet success() { AppRet r = new AppRet<>(); - r.suc = true; - r.ecode = null; + r.success = true; + r.ecode = null; r.data = null; return r; } public static AppRet fail(A8kEcode errorCode, MId mid, CmdId cmd) { AppRet r = new AppRet<>(); - r.suc = false; - r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd); + r.success = false; + r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd); r.data = null; return r; } public static AppRet fail(A8kEcode errorCode, MId mid) { AppRet r = new AppRet<>(); - r.suc = false; - r.ecode = new AppRetEcodeInfo(errorCode, mid, null); + r.success = false; + r.ecode = new AppRetEcodeInfo(errorCode, mid, null); r.data = null; return r; } public static AppRet fail(A8kEcode errorCode) { AppRet r = new AppRet<>(); - r.suc = false; - r.ecode = new AppRetEcodeInfo(errorCode, null, null); + r.success = false; + r.ecode = new AppRetEcodeInfo(errorCode, null, null); r.data = null; return r; } @@ -88,13 +88,13 @@ public class AppRet { AppRet r = new AppRet<>(); if (e instanceof HardwareException hexcep) { - r.suc = false; - r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId()); + r.success = false; + r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId()); r.data = null; r.traceInfo = trace; } else { - r.suc = false; - r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null); + r.success = false; + r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null); r.data = null; r.traceInfo = trace; } diff --git a/src/main/java/a8k/base_hardware/A8kCanBusService.java b/src/main/java/a8k/base_hardware/A8kCanBusService.java index 259b98c..3b10a05 100644 --- a/src/main/java/a8k/base_hardware/A8kCanBusService.java +++ b/src/main/java/a8k/base_hardware/A8kCanBusService.java @@ -161,6 +161,7 @@ public class A8kCanBusService { public A8kPacket codeScanerReadScanerResult(MId id) throws HardwareException { return callcmd(id.toInt(), CmdId.code_scaner_read_scaner_result.toInt()); } + // // module opeation // @@ -294,9 +295,9 @@ public class A8kCanBusService { callcmd(id.toInt(), CmdId.step_motor_active_cfg.toInt()); } - public int stepMotorReadIoState(MId id) throws HardwareException { + public Boolean stepMotorReadIoState(MId id) throws HardwareException { var packet = callcmd(id.toInt(), CmdId.step_motor_read_io_state.toInt()); - return packet.getContentI32(0); + return packet.getContentI32(0) != 0; } public void stepMotorEasyMoveToEndPoint(MId id) throws HardwareException { diff --git a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java index cd3fe59..2e96d75 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java +++ b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java @@ -35,7 +35,7 @@ public class DeviceInitializationCtrlService { @PostMapping("/api/DeviceInitializationCtrlService/initializeDevice") @ResponseBody - public AppRet initializeDevice() throws HardwareException, InterruptedException { + public AppRet initializeDevice() throws HardwareException, InterruptedException { logger.info("Initializing device ..."); boolean initSuc = false; try { @@ -47,25 +47,25 @@ public class DeviceInitializationCtrlService { * 清空耗材 */ - AppRet ecode; + AppRet ecode; //硬件光电初始化 logger.info("hardwareStaticInit"); ecode = hardwareStaticInit(); - if (!ecode.isSuc()) { + if (!ecode.isSuccess()) { return ecode; } //检查设备状态 logger.info("checkDeviceState"); ecode = checkDeviceState(); - if (!ecode.isSuc()) { + if (!ecode.isSuccess()) { return ecode; } // 复位设备 logger.info("moveMotorToZero"); ecode = moveMotorToZero(); - if (!ecode.isSuc()) { + if (!ecode.isSuccess()) { return ecode; } // 清空耗材 @@ -91,7 +91,7 @@ public class DeviceInitializationCtrlService { } - private AppRet hardwareStaticInit() throws HardwareException, InterruptedException { + private AppRet hardwareStaticInit() throws HardwareException, InterruptedException { /* * 硬件初始化: * 1.使能所有舵机 @@ -111,7 +111,7 @@ public class DeviceInitializationCtrlService { return AppRet.success(); } - private AppRet checkDeviceState() throws HardwareException { + private AppRet checkDeviceState() throws HardwareException { //试管平移通道是否有障碍 if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) { logger.warn("THChInterPPS or THChOuterPPS is trigger"); @@ -151,7 +151,7 @@ public class DeviceInitializationCtrlService { return AppRet.success(); } - private AppRet moveMotorToZero() throws HardwareException, InterruptedException { + private AppRet moveMotorToZero() throws HardwareException, InterruptedException { //进出料初始化 // canBus.stepMotorEasyMoveToZero(MId.FeedingModInfeedM); diff --git a/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java b/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java index c026a55..184540a 100644 --- a/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java +++ b/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java @@ -1,6 +1,5 @@ package a8k.service.hardware; -import a8k.a8k_can_protocol.A8kEcode; import a8k.a8k_can_protocol.MId; import a8k.appbean.HardwareException; import a8k.appbean.ecode.AppRet; diff --git a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java index 405b60a..a87e80a 100644 --- a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java +++ b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java @@ -2,6 +2,7 @@ package a8k.service.hardware; import a8k.a8k_can_protocol.*; import a8k.appbean.HardwareException; +import a8k.appbean.ecode.AppRet; import a8k.base_hardware.A8kCanBusService; import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao; @@ -40,25 +41,53 @@ public class MotorTubeRackMoveCtrlService { @Resource private CommonHardwareOpeartion comHardwareOpear; - public void setEnable(Boolean enable) throws HardwareException { - comHardwareOpear.enableAllMotor(enable); - } + /*========================================================================================= + * 私有方法 + *========================================================================================*/ - public void stop() throws HardwareException { - comHardwareOpear.forceStopAllMOtor(); + /** + * 移动试管架到指定位置 + * @param pos 指定位置 + * @throws HardwareException 硬件异常 + * @throws InterruptedException 打断异常 + */ + private void moveTubeRackTo(int pos) throws HardwareException, InterruptedException { + canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); + canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); + + canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos); + canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); } - // - // 电机基础控制 - // + /*========================================================================================= + * 公共方法 + *========================================================================================*/ + /** + * 模块使能 + * @param enable 1:使能 0:禁用 + * @throws HardwareException 硬件异常 + */ + public AppRet modGroupEnable(Boolean enable) throws HardwareException { + comHardwareOpear.enableAllMotor(enable); + return AppRet.success(); + } /** - * 电机归零,设备初始化时调用,特点是直接调用MoveToZero + * 模块停止 * @throws HardwareException 硬件异常 - * @throws InterruptedException 打断异常 */ - public void moveToZeroWhenDeviceSetup() throws HardwareException, InterruptedException { + public void modGroupStop() throws HardwareException { + comHardwareOpear.forceStopAllMOtor(); + } + + public void modGroupMoveToZero() throws HardwareException, InterruptedException { + Boolean state = canBus.stepMotorReadIoState(MId.ShakeModGripperZM); + if (!state) { + // return AppRet; + } + + canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); @@ -66,6 +95,7 @@ public class MotorTubeRackMoveCtrlService { canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); } + /** * 电机归零,电机运行时归零,特点是通过归零判断设备是否丢步 * @throws HardwareException @@ -93,10 +123,7 @@ public class MotorTubeRackMoveCtrlService { if (Math.abs(dval - distance) > params.getHorizontalMotorLostStepThresholdVal()) { throw new HardwareException(MId.FeedingModXM, A8kEcode.MotorLostStep); } - } - - // // 试管架移动 // @@ -105,6 +132,10 @@ public class MotorTubeRackMoveCtrlService { * 移动试管架到入口位置 */ public void moveTubeRackToEnterPos() throws HardwareException, InterruptedException { + /* + * 1. 先控制试管架夹紧机构复位,让开通道 + * 2. 移动到入口位置 + */ canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); @@ -116,6 +147,9 @@ public class MotorTubeRackMoveCtrlService { * 移动试管架到出口位置 */ public void moveTubeRackToExitPos() throws HardwareException, InterruptedException { + /* + * 1. 先控制试管架夹紧机构复位,让开通道 + */ canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());