diff --git a/README.md b/README.md index 98ec2d3..12c6e2a 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,43 @@ TODO: 1. 数据库文件是否被破坏检查 2. 数据库文件如果被破坏,自动恢复默认配置 + + 坐标XY方向约定: + 0 -----------------------> + | (X) + | + | + | + | + | + v(Y) + + 舵机位置约定: 1.抓手夹紧位置为1800 - + 命名约定: + TH: TubeHolder + Ch: Channel + + THCh: 试管架通道 + SM : 步进电机 + SV : 舵机 + Z : 升降 + X : X方向水平移动 + Y : Y方向水平移动 + 电机命名: + + GripperSV : 抓手舵机 + GripperZM :抓手升降电机 + GripperYM : 抓手前后移动电机 + ShakeM : 摇匀电机 + ShakeClampingM:摇匀夹紧电机 + + + + ``` diff --git a/src/main/java/a8k/a8k_can_protocol/IOId.java b/src/main/java/a8k/a8k_can_protocol/IOId.java index 3805953..7de3363 100644 --- a/src/main/java/a8k/a8k_can_protocol/IOId.java +++ b/src/main/java/a8k/a8k_can_protocol/IOId.java @@ -1,26 +1,26 @@ package a8k.a8k_can_protocol; public enum IOId { - TubeHeightDetecter(ModuleType.kboard, 60, 0), //高低试管检测IO - TubeHolderTransferChannelTubeDetecterOuter(ModuleType.kboard, 60, 1),//试管架转移通道有无检测 外 - TubeHolderTransferChannelTubeDetecterInter(ModuleType.kboard, 60, 2),//试管架转移通道有无检测 内 - SampleExitTubeHolderlDetecter(ModuleType.kboard, 60, 3),//试管出料位置 试管架有无检测 - TubeExistDetecter(ModuleType.kboard, 60, 4),//试管有无光电 - SampleEnterTubeHolderlDetecter(ModuleType.kboard, 60, 5),//试管架入料位置 试管架有无检测 + TubeHeightPPS(ModuleType.kboard, 60, 0), //高低试管检测IO + THChOuterPPS(ModuleType.kboard, 60, 1),//试管架转移通道有无检测 外 + THChInterPPS(ModuleType.kboard, 60, 2),//试管架转移通道有无检测 内 + OutfeedPPS(ModuleType.kboard, 60, 3),//试管出料位置 试管架有无检测 + TubeExitPPS(ModuleType.kboard, 60, 4),//试管有无光电 + InfeedPPS(ModuleType.kboard, 60, 5),//试管架入料位置 试管架有无检测 - WasteBucketOverflowedDetector(ModuleType.kboard, 40, 2),//废料桶满溢检测 - WasteBucketOverflowedDetectorPowerCtrl(ModuleType.kboard, 40, 0),//废料桶光栅电源 + RecycleBinOverflowPPS(ModuleType.kboard, 40, 2),//废料桶满溢检测 + RecycleBinOverflowPPSPowerCtrl(ModuleType.kboard, 40, 0),//废料桶光栅电源 - PlateBoxCoverClosureDetector(ModuleType.kboard, 20, 0),//板夹仓舱盖闭合检测 - PlateBoxPlateStuckDetector(ModuleType.kboard, 20, 1),//板夹仓卡板检测 + PlateBoxCoverClosurePPS(ModuleType.kboard, 20, 0),//板夹仓舱盖闭合检测 + PlateBoxPlateStuckPPS(ModuleType.kboard, 20, 1),//板夹仓卡板检测 //转盘逻辑相关光电 //钩板电机,零点光电,终点光电 - PlaterHookerMotorZeroPointDetector(ModuleType.ktmc_step_motor,ModuleId.MotorTestCardPullModule,0), - PlaterHookerMotorEndPointDetector(ModuleType.ktmc_step_motor,ModuleId.MotorTestCardPullModule,1), + PullerMZeroPPS(ModuleType.ktmc_step_motor,ModuleId.OptModPullM,0), + PullerMEndPPS(ModuleType.ktmc_step_motor,ModuleId.OptModPullM,1), //推板电机,零点光电,终点光电 - PlaterPusherMotorZeroPointDetector(ModuleType.ktmc_step_motor,ModuleId.MotorCardWarehousePushModule,0), - PlaterPusherMotorEndPointDetector(ModuleType.ktmc_step_motor,ModuleId.MotorCardWarehousePushModule,1), + PusherMZeroPPS(ModuleType.ktmc_step_motor,ModuleId.PlatesBoxPusherM,0), + PusherMEndPPS(ModuleType.ktmc_step_motor,ModuleId.PlatesBoxPusherM,1), ; diff --git a/src/main/java/a8k/a8k_can_protocol/ModuleId.java b/src/main/java/a8k/a8k_can_protocol/ModuleId.java index 5ca9a0e..4af9bcd 100644 --- a/src/main/java/a8k/a8k_can_protocol/ModuleId.java +++ b/src/main/java/a8k/a8k_can_protocol/ModuleId.java @@ -1,101 +1,93 @@ package a8k.a8k_can_protocol; public class ModuleId { - public static final int ArmXYBoardModule = 10;//机械臂板模块 - public static final int ArmXYModule = 11;//机械臂XY - public static final int MotorCardWarehouseMoveBoardModule = 20;//板夹仓模块 - public static final int MotorCardWarehouseMoveModule = 21;//板夹仓移动电机 - public static final int MotorCardWarehousePushModule = 22;//板夹仓推杆电机 - public static final int CardWarehouseScanerModule = 23;//板夹仓扫码模组 - public static final int ShakeModuleBoard = 30;//摇匀模组板 - public static final int MotorTubeScanClampModule = 31;//试管固定夹爪电机 - public static final int MotorTubeMoveUpDownModule = 32;//摇匀升降电机 - public static final int MotorTubeShakeModule = 33;//试管摇匀电机 - public static final int ServoTubeMoveFrontBackModule = 34;//摇匀前后电机 - public static final int ServoTubeCapClipModule = 35;//摇匀试管帽夹爪 - public static final int ServoTubeRackTubePushModule = 36;//试管架旋转固定舵机 - public static final int ServoTubeRackTubeRotateModule = 37;//试管架旋转舵机 + public static final int HbotBoard = 10;//机械臂板模块 + public static final int HbotM = 11;//机械臂XY - public static final int ReactionCardBoxTemperatureCtrlBoard = 40;//反应板夹温度控制板 - public static final int ReactionCardBoxTemperatureModule = 41;//反应板夹温度控制模块 - public static final int WbTubeFanModule = 42;//气溶胶风扇 + public static final int PlatesBoxBoard = 20;//板夹仓模块 + public static final int PlatesBoxYM = 21;//板夹仓移动电机 + public static final int PlatesBoxPusherM = 22;//板夹仓推杆电机 + public static final int PlatesBoxScanner = 23;//板夹仓扫码模组 - public static final int IncubatorTempCtrlBoard = 50;//温度控制 - public static final int IncubatorTempCtrlModule = 51;//温度控制 + public static final int ShakeModBoard = 30;//摇匀模组板 + public static final int ShakeModClampingM = 31;//试管固定夹爪电机 + public static final int ShakeModGripperZM = 32;//摇匀升降电机 + public static final int ShakeModShakeM = 33;//试管摇匀电机 + public static final int ShakeModGripperYM = 34;//摇匀前后电机 + public static final int ShakeModGripperSV = 35;//摇匀试管帽夹爪 + public static final int ShakeModTubeScanerClampingSV = 36;//试管架旋转固定舵机 + public static final int ShakeModTubeScanerRotateSV = 37;//试管架旋转舵机 - public static final int FeederBoard = 60;//出入料模块 - public static final int MotorTubeRackFeedModule = 61;//入料电机 - public static final int MotorTubeRackMoveModule = 62;//试管架平移电机 - public static final int MotorTubeRackExitModule = 63;//出料电机 - public static final int TubeRackScannerModule = 64;//试管架扫码器 + public static final int PlatesBoxTCMBoard = 40;//反应板夹温度控制板 + public static final int PlatesBoxTCM = 41;//反应板夹温度控制模块 + public static final int WbTubeFanModule = 42;//气溶胶风扇 - public static final int MotorIncubatorRotateBoard = 70;//孵育盘旋转板 - public static final int MotorIncubatorRotateModule = 71;//孵育盘旋转 + public static final int IncubatorTCMBoard = 50;//温度控制 + public static final int IncubatorTCM = 51;//温度控制 - public static final int ArmZBoard = 80;//机械臂Z轴板 - public static final int ArmZModule = 81;//机械臂Z - public static final int PipetteModule = 82;//移液枪 - public static final int MaterialScannerModule = 83;//物料扫码器 + public static final int FeedingModBoard = 60;//出入料模块 + public static final int FeedingModInfeedM = 61;//入料电机 + public static final int FeedingModXM = 62;//试管架平移电机 + public static final int FeedingModOutfeedM = 63;//出料电机 + public static final int FeedingModScannerM = 64;//试管架扫码器 - public static final int OptScanModuleBoard = 90;//光学模组板 - public static final int MotorTestCardScanModule = 91;//板卡扫描电机 - public static final int MotorTestCardPullModule = 92;//板卡推杆电机 - public static final int ScannerModule = 93;//扫描仪 + public static final int IncubatorRotateBoard = 70;//孵育盘旋转板 + public static final int IncubatorRotateCtrlM = 71;//孵育盘旋转 - public static final int IdCardReaderBoard = 100; //A8K读卡器板 - public static final int IdCardReaderModule = 101; //A8K读卡器 + public static final int PipetteModBoard = 80;//机械臂Z轴板 + public static final int PipetteModZMotor = 81;//机械臂Z + public static final int PipetteMod = 82;//移液枪 + public static final int PipetteModCodeScanner = 83;//物料扫码器 + public static final int OptModBoard = 90;//光学模组板 + public static final int OptModScannerMotor = 91;//板卡扫描电机 + public static final int OptModPullM = 92;//板卡推杆电机 + public static final int OptMod = 93;//扫描仪 - public static String ModuleId2Name(int moduleId) { - return switch (moduleId) { - case ArmXYBoardModule -> "ArmXYBoardModule"; - case ArmXYModule -> "ArmXYModule"; - - case MotorCardWarehouseMoveBoardModule -> "MotorCardWarehouseMoveBoardModule"; - case MotorCardWarehouseMoveModule -> "MotorCardWarehouseMoveModule"; - case MotorCardWarehousePushModule -> "MotorCardWarehousePushModule"; - case CardWarehouseScanerModule -> "CardWarehouseScanerModule"; + public static final int A8kIdCardReaderBoard = 100; //A8K读卡器板 + public static final int A8kIdCardReader = 101; //A8K读卡器 - case ShakeModuleBoard -> "ShakeModuleBoard"; - case MotorTubeScanClampModule -> "MotorTubeScanClampModule"; - case MotorTubeMoveUpDownModule -> "MotorTubeMoveUpDownModule"; - case MotorTubeShakeModule -> "MotorTubeShakeModule"; - case ServoTubeMoveFrontBackModule -> "ServoTubeMoveFrontBackModule"; - case ServoTubeCapClipModule -> "ServoTubeCapClipModule"; - case ServoTubeRackTubePushModule -> "ServoTubeRackTubePushModule"; - case ServoTubeRackTubeRotateModule -> "ServoTubeRackTubeRotateModule"; - case ReactionCardBoxTemperatureCtrlBoard -> "ReactionCardBoxTemperatureCtrlBoard"; - case ReactionCardBoxTemperatureModule -> "ReactionCardBoxTemperatureModule"; + public static String ModuleId2Name(int moduleId) { + return switch (moduleId) { + case HbotBoard -> "HbotBoard"; + case HbotM -> "HbotM"; + case PlatesBoxBoard -> "PlatesBoxBoard"; + case PlatesBoxYM -> "PlatesBoxYM"; + case PlatesBoxPusherM -> "PlatesBoxPusherM"; + case PlatesBoxScanner -> "PlatesBoxScanner"; + case ShakeModBoard -> "ShakeModBoard"; + case ShakeModClampingM -> "ShakeModClampingM"; + case ShakeModGripperZM -> "ShakeModGripperZM"; + case ShakeModShakeM -> "ShakeModShakeM"; + case ShakeModGripperYM -> "ShakeModGripperYM"; + case ShakeModGripperSV -> "ShakeModGripperSV"; + case ShakeModTubeScanerClampingSV -> "ShakeModTubeScanerClampingSV"; + case ShakeModTubeScanerRotateSV -> "ShakeModTubeScanerRotateSV"; + case PlatesBoxTCMBoard -> "PlatesBoxTCMBoard"; + case PlatesBoxTCM -> "PlatesBoxTCM"; case WbTubeFanModule -> "WbTubeFanModule"; - - case IncubatorTempCtrlBoard -> "IncubatorTempCtrlBoard"; - case IncubatorTempCtrlModule -> "IncubatorTempCtrlModule"; - - case FeederBoard -> "FeederBoard"; - case MotorTubeRackFeedModule -> "MotorTubeRackFeedModule"; - case MotorTubeRackMoveModule -> "MotorTubeRackMoveModule"; - case MotorTubeRackExitModule -> "MotorTubeRackExitModule"; - case TubeRackScannerModule -> "TubeRackScannerModule"; - - case MotorIncubatorRotateBoard -> "MotorIncubatorRotateBoard"; - case MotorIncubatorRotateModule -> "MotorIncubatorRotateModule"; - - case ArmZBoard -> "ArmZBoard"; - case ArmZModule -> "ArmZModule"; - case PipetteModule -> "PipetteModule"; - case MaterialScannerModule -> "MaterialScannerModule"; - - case OptScanModuleBoard -> "OptScanModuleBoard"; - case MotorTestCardScanModule -> "MotorTestCardScanModule"; - case MotorTestCardPullModule -> "MotorTestCardPullModule"; - case ScannerModule -> "ScannerModule"; - - case IdCardReaderBoard -> "IdCardReaderBoard"; - case IdCardReaderModule -> "IdCardReaderModule"; - + case IncubatorTCMBoard -> "IncubatorTCMBoard"; + case IncubatorTCM -> "IncubatorTCM"; + case FeedingModBoard -> "FeedingModBoard"; + case FeedingModInfeedM -> "FeedingModInfeedM"; + case FeedingModXM -> "FeedingModXM"; + case FeedingModOutfeedM -> "FeedingModOutfeedM"; + case FeedingModScannerM -> "FeedingModScannerM"; + case IncubatorRotateBoard -> "IncubatorRotateBoard"; + case IncubatorRotateCtrlM -> "IncubatorRotateCtrlM"; + case PipetteModBoard -> "PipetteModBoard"; + case PipetteModZMotor -> "PipetteModZMotor"; + case PipetteMod -> "PipetteMod"; + case PipetteModCodeScanner -> "PipetteModCodeScanner"; + case OptModBoard -> "OptModBoard"; + case OptModScannerMotor -> "OptModScannerMotor"; + case OptModPullM -> "OptModPullM"; + case OptMod -> "OptMod"; + case A8kIdCardReaderBoard -> "A8kIdCardReaderBoard"; + case A8kIdCardReader -> "A8kIdCardReader"; default -> "UnknownModuleId(" + moduleId + ")"; }; } diff --git a/src/main/java/a8k/controller/TmpTestController.java b/src/main/java/a8k/controller/TmpTestController.java index 6231582..14f4860 100644 --- a/src/main/java/a8k/controller/TmpTestController.java +++ b/src/main/java/a8k/controller/TmpTestController.java @@ -56,8 +56,8 @@ public class TmpTestController { @GetMapping("/tmp-test/a8k-can-bus-service-call") @ResponseBody public String a8kCanBusServiceCall() throws HardwareException, InterruptedException { - this.a8kCanBusService.callcmd(ModuleId.ServoTubeRackTubeRotateModule, CmdId.kmini_servo_enable, new Integer[]{1}); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackFeedModule, CmdId.kstep_motor_easy_move_by, new Integer[]{5000}, 20000); + this.a8kCanBusService.callcmd(ModuleId.ShakeModTubeScanerRotateSV, CmdId.kmini_servo_enable, new Integer[]{1}); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModInfeedM, CmdId.kstep_motor_easy_move_by, new Integer[]{5000}, 20000); return "OK"; } diff --git a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java index 895803b..db1fc28 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java +++ b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java @@ -1,6 +1,8 @@ package a8k.service.ctrl_service; +import a8k.a8k_can_protocol.ModuleId; import a8k.appbean.AppErrorCode; +import a8k.appbean.HardwareException; import a8k.base_hardware.A8kCanBusService; import a8k.service.db.dao.SamplesPreProcessModuleCtrlParamsService; import jakarta.annotation.Resource; @@ -26,6 +28,28 @@ public class DeviceInitializationCtrlService { * 2. 试管夹紧电机归零,超时一定时间,没有归零,则返回错误。 * 3. 抓手平移电机,移动到待机位,如果移动不到,则返回错误。 * + * + * 初始化前检查: + * 1. 试管平移通道是否有障碍 + * 2. 板夹仓盖子是否盖上 + * 3. 板夹推杆是否在原点 + * 4. 板夹拉取是否在终点或者原点 + * + * 初始化顺序: + * 1. 试管夹紧复位 + * 2. 抓手复位 + * 3. 抓手平移电机复位 + * 4. 抓手升降复位 + * 1. 试管扫码夹紧复位 + * 5. 试管摇匀复位 + * 6. 机械臂Z轴复位 + * 7. Hbot复位 + * + * 7. 试管架平移电机复位 + * 8. 板夹仓平移电机复位 + * 9. 板夹仓推杆电机复位 + * 10. + * */ @Resource A8kCanBusService canBus; @@ -36,10 +60,13 @@ public class DeviceInitializationCtrlService { public AppErrorCode initializeDevice() { logger.info("Initializing device ..."); + try { +// canBus.getIOState(IOId.THChDetecterOuter,); -// canBus - - + canBus.stepMotorEasyMoveToZero(ModuleId.ShakeModGripperZM); + } catch (HardwareException e) { + throw new RuntimeException(e); + } // this.a8kCanBusService.callblockcmd( // ModuleId.ServoTubeCapClipModule, diff --git a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java index fc8f12f..ebdb54c 100644 --- a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java +++ b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java @@ -52,24 +52,24 @@ public class MotorTubeRackMoveCtrlService { public void moveToZeroWhenDeviceSetup() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to_zero, new Integer[]{}, params.moveToZeroOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to_zero, new Integer[]{}, params.moveToZeroOvertime); } public void moveToZero() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - var beforePosResponse = this.a8kCanBusService.callcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_read_pos, new Integer[]{0}); + var beforePosResponse = this.a8kCanBusService.callcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_read_pos, new Integer[]{0}); var beforePos = beforePosResponse.getContentI32(0); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to_zero, new Integer[]{}, params.moveToZeroOvertime); - var afterPosResponse = this.a8kCanBusService.callcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_read_pos, new Integer[]{0}); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to_zero, new Integer[]{}, params.moveToZeroOvertime); + var afterPosResponse = this.a8kCanBusService.callcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_read_pos, new Integer[]{0}); var afterPos = afterPosResponse.getContentI32(0); var distance = beforePos - afterPos; - var dval = a8kCanBusService.module_read_reg(ModuleId.MotorTubeRackMoveModule, RegIndex.kreg_step_motor_dpos); + var dval = a8kCanBusService.module_read_reg(ModuleId.FeedingModXM, RegIndex.kreg_step_motor_dpos); if (Math.abs(dval - distance) > params.horizontalMotorLostStepThresholdVal) { - throw new HardwareException(ModuleId.MotorTubeRackMoveModule, Errorcode.kstep_motor_lost_step); + throw new HardwareException(ModuleId.FeedingModXM, Errorcode.kstep_motor_lost_step); } //先通过move_to 指令移动到零点 @@ -92,7 +92,7 @@ public class MotorTubeRackMoveCtrlService { */ public void moveTubeRackToEnterPos() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeRackEnterPos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeRackEnterPos}, params.actionOvertime); } /** @@ -100,7 +100,7 @@ public class MotorTubeRackMoveCtrlService { */ public void moveTubeRackToExitPos() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeExistJudgmentPos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeExistJudgmentPos}, params.actionOvertime); } /** @@ -108,7 +108,7 @@ public class MotorTubeRackMoveCtrlService { */ public void moveTubeRackToScanPos() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeRackScanCodePos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{params.tubeRackScanCodePos}, params.actionOvertime); } /** @@ -116,10 +116,10 @@ public class MotorTubeRackMoveCtrlService { */ public String moveTubeRackToScanPosAndScan() throws HardwareException, InterruptedException { this.moveTubeRackToScanPos(); - this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_start_scan, new Integer[]{}); + this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_start_scan, new Integer[]{}); Thread.sleep(500); - var response = this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_read_scaner_result, new Integer[]{}); - this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_stop_scan, new Integer[]{}); + var response = this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_read_scaner_result, new Integer[]{}); + this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_stop_scan, new Integer[]{}); var contentBytes = response.getCmdContent(); return new String(contentBytes); } @@ -138,7 +138,7 @@ public class MotorTubeRackMoveCtrlService { var params = this.serviceParameterDao.getParameter(); var tubeInfo = this.tubeInfoDao.getTubeInfo(tubeType); var scanPos = params.tubeScanPos + tubeIndex * tubeInfo.tubeSpacing; - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{scanPos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{scanPos}, params.actionOvertime); } /** @@ -149,10 +149,10 @@ public class MotorTubeRackMoveCtrlService { public String moveTubeToScanPosAndScan(String tubeType, Integer tubeIndex) throws HardwareException, InterruptedException { this.moveTubeToScanPos(tubeType, tubeIndex); - this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_start_scan, new Integer[]{}); + this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_start_scan, new Integer[]{}); Thread.sleep(500); - var response = this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_read_scaner_result, new Integer[]{}); - this.a8kCanBusService.callcmd(ModuleId.TubeRackScannerModule, CmdId.kcode_scaner_stop_scan, new Integer[]{}); + var response = this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_read_scaner_result, new Integer[]{}); + this.a8kCanBusService.callcmd(ModuleId.FeedingModScannerM, CmdId.kcode_scaner_stop_scan, new Integer[]{}); var contentBytes = response.getCmdContent(); return new String(contentBytes); } @@ -166,7 +166,7 @@ public class MotorTubeRackMoveCtrlService { var params = this.serviceParameterDao.getParameter(); var tubeInfo = this.tubeInfoDao.getTubeInfo(tubeType); var detectPos = params.tubeHeighJudgmentPos + tubeIndex * tubeInfo.tubeSpacing; - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{detectPos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{detectPos}, params.actionOvertime); } /** @@ -178,7 +178,7 @@ public class MotorTubeRackMoveCtrlService { var params = this.serviceParameterDao.getParameter(); var tubeInfo = this.tubeInfoDao.getTubeInfo(tubeType); var pos = params.tubePreProcessPos + tubeIndex * tubeInfo.tubeSpacing; - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{pos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{pos}, params.actionOvertime); } // @@ -194,16 +194,16 @@ public class MotorTubeRackMoveCtrlService { var params = this.serviceParameterDao.getParameter(); var tubeInfo = this.tubeInfoDao.getTubeInfo(tubeType); var pos = params.tubeRackExitPos + tubeIndex * tubeInfo.tubeSpacing; - this.a8kCanBusService.callblockcmd(ModuleId.MotorTubeRackMoveModule, CmdId.kstep_motor_easy_move_to, new Integer[]{pos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.FeedingModXM, CmdId.kstep_motor_easy_move_to, new Integer[]{pos}, params.actionOvertime); } public boolean isTubeRackInEnterPos() throws HardwareException { - var response = this.a8kCanBusService.callcmd(ModuleId.FeederBoard, CmdId.kxymotor_read_inio, new Integer[]{3}); + var response = this.a8kCanBusService.callcmd(ModuleId.FeedingModBoard, CmdId.kxymotor_read_inio, new Integer[]{3}); return response.getContentI32(0) == 1; } public boolean isTubeRackInExitPos() throws HardwareException { - var response = this.a8kCanBusService.callcmd(ModuleId.FeederBoard, CmdId.kxymotor_read_inio, new Integer[]{5}); + var response = this.a8kCanBusService.callcmd(ModuleId.FeedingModBoard, CmdId.kxymotor_read_inio, new Integer[]{5}); return response.getContentI32(0) == 1; } @@ -214,7 +214,7 @@ public class MotorTubeRackMoveCtrlService { */ public boolean getMoveChannelPhotoelectricState(int photoelectricIndex) throws HardwareException { var index = 0 == photoelectricIndex ? 2 : 1; - var response = this.a8kCanBusService.callcmd(ModuleId.FeederBoard, CmdId.kxymotor_read_inio, new Integer[]{index}); + var response = this.a8kCanBusService.callcmd(ModuleId.FeedingModBoard, CmdId.kxymotor_read_inio, new Integer[]{index}); return response.getContentI32(0) == 1; } @@ -228,7 +228,7 @@ public class MotorTubeRackMoveCtrlService { */ public void scanClampModuleCompress() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.ServoTubeRackTubePushModule, CmdId.kmini_servo_move_to, new Integer[]{params.scanCodeClampPos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.ShakeModTubeScanerClampingSV, CmdId.kmini_servo_move_to, new Integer[]{params.scanCodeClampPos}, params.actionOvertime); } /** @@ -236,7 +236,7 @@ public class MotorTubeRackMoveCtrlService { */ public void scanClampModuleReset() throws HardwareException, InterruptedException { var params = this.serviceParameterDao.getParameter(); - this.a8kCanBusService.callblockcmd(ModuleId.ServoTubeRackTubePushModule, CmdId.kmini_servo_move_to, new Integer[]{params.scanCodeReleasePos}, params.actionOvertime); + this.a8kCanBusService.callblockcmd(ModuleId.ShakeModTubeScanerClampingSV, CmdId.kmini_servo_move_to, new Integer[]{params.scanCodeReleasePos}, params.actionOvertime); } diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index 8c74763..b0307eb 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -1,18 +1,14 @@ package a8k.service.hardware; import a8k.a8k_can_protocol.CmdId; -import a8k.a8k_can_protocol.Errorcode; import a8k.a8k_can_protocol.ModuleId; import a8k.appbean.A8kTubeType; import a8k.appbean.AppErrorCode; import a8k.appbean.HardwareException; -import a8k.appbean.SampleTubeState; import a8k.base_hardware.A8kCanBusService; import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.SamplesPreProcessModuleCtrlParamsService; -import com.iflytop.uf.UfActuatorCmdExecutor; import jakarta.annotation.Resource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -39,33 +35,33 @@ public class SamplesPreProcessModuleCtrlService { public void moveToZero() throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); @@ -82,27 +78,27 @@ public class SamplesPreProcessModuleCtrlService { */ public void enableModule(Boolean enable) throws HardwareException { this.a8kCanBusService.callcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_enable, enable ? 1 : 0 ); this.a8kCanBusService.callcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_enable, enable ? 1 : 0 ); this.a8kCanBusService.callcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_enable, enable ? 1 : 0 ); this.a8kCanBusService.callcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kmini_servo_enable, enable ? 1 : 0 ); this.a8kCanBusService.callcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_enable, enable ? 1 : 0 ); @@ -125,7 +121,7 @@ public class SamplesPreProcessModuleCtrlService { public AppErrorCode takeTube(String tubeType,boolean judgeCapExist) throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_takeCapPos(), params.getActionOvertime() @@ -137,7 +133,7 @@ public class SamplesPreProcessModuleCtrlService { motorUdTubeTaskPos = params.getZMotor_HighBloodTakeCapHeight(); } this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, motorUdTubeTaskPos, params.getActionOvertime() @@ -145,17 +141,17 @@ public class SamplesPreProcessModuleCtrlService { if ( judgeCapExist ) { this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kmini_servo_rotate_with_torque, params.getGripperServo_takeCapTorque(), params.getActionOvertime() ); this.a8kCanBusService.callcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_stop ); var pos = this.a8kCanBusService.callcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_read_pos ); if ( pos.getContentI32(0) > params.getGripperServo_hatDeterminesPosThres() ) { @@ -164,49 +160,49 @@ public class SamplesPreProcessModuleCtrlService { } this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_rotate_with_torque, params.getGripperServo_takeCapTorque(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kmini_servo_move_to, params.getHorizontalMotor_takePushCapPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, params.getZMotor_placeShakeHeight(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kstep_motor_easy_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() @@ -230,14 +226,14 @@ public class SamplesPreProcessModuleCtrlService { public AppErrorCode takeTubeCap( String tubeType ) throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_takePushCapPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kstep_motor_easy_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() @@ -249,28 +245,28 @@ public class SamplesPreProcessModuleCtrlService { motorUdTakeCapPos = params.getZMotor_HighBloodTakeCapHeight(); } this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, motorUdTakeCapPos, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kstep_motor_easy_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() @@ -284,14 +280,14 @@ public class SamplesPreProcessModuleCtrlService { public void pushBackTubeCapAndTakeBakTube(String tubeType) throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_takePushCapPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kstep_motor_easy_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() @@ -303,28 +299,28 @@ public class SamplesPreProcessModuleCtrlService { motorUdTakeCapPos = params.getZMotor_HighBloodTakeCapHeight(); } this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, motorUdTakeCapPos, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kstep_motor_easy_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kstep_motor_easy_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() @@ -348,7 +344,7 @@ public class SamplesPreProcessModuleCtrlService { var startPos = standByPos - shakeDegree/2; var endPos = standByPos + shakeDegree/2; this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_easy_reciprocating_motion, startPos, endPos, @@ -378,29 +374,29 @@ public class SamplesPreProcessModuleCtrlService { public void moduleResetWhenPowerOn() throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); @@ -412,47 +408,47 @@ public class SamplesPreProcessModuleCtrlService { public void moduleRuntimeReset() throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeCapClipModule, + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, 0, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeMoveUpDownModule, + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.ServoTubeMoveFrontBackModule, + ModuleId.ShakeModGripperYM, CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeScanClampModule, + ModuleId.ShakeModClampingM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_easy_move_to, 0, params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( - ModuleId.MotorTubeShakeModule, + ModuleId.ShakeModShakeM, CmdId.kstep_motor_easy_move_to_zero, params.getMoveToZeroOvertime() );