Browse Source

同步代码

master
白凤吉 3 months ago
parent
commit
9d17e5f269
  1. 4
      src/main/java/com/iflytop/gd/app/cmd/DoorCloseCommand.java
  2. 1
      src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java
  3. 14
      src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java
  4. 4
      src/main/java/com/iflytop/gd/app/core/device/TrayState.java
  5. 24
      src/main/java/com/iflytop/gd/app/service/CraftsStepService.java
  6. 4
      src/main/java/com/iflytop/gd/app/service/DeviceCommandService.java
  7. 16
      src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java
  8. 12
      src/main/java/com/iflytop/gd/common/enums/data/DevicePositionCode.java
  9. 2
      src/main/java/com/iflytop/gd/hardware/constants/MiniServoConstant.java
  10. 4
      src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java
  11. 67
      src/main/resources/init/zapp_sub_module_reg_initial_value.csv

4
src/main/java/com/iflytop/gd/app/cmd/DoorCloseCommand.java

@ -22,15 +22,13 @@ import java.util.concurrent.CompletableFuture;
@CommandMapping("door_close")//业务指令注解 @CommandMapping("door_close")//业务指令注解
public class DoorCloseCommand extends BaseCommandHandler { public class DoorCloseCommand extends BaseCommandHandler {
private final DeviceCommandUtilService deviceCommandUtilService; private final DeviceCommandUtilService deviceCommandUtilService;
private final DevicePositionService devicePositionService;
private final DeviceStateService deviceStateService; private final DeviceStateService deviceStateService;
@Override @Override
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { public CompletableFuture<Void> handle(CmdDTO cmdDTO) {
return runAsync(() -> { return runAsync(() -> {
Double doorOpenDistance = devicePositionService.getPosition(DevicePositionCode.doorClose).getDistance();
deviceCommandUtilService.doorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), doorOpenDistance);
deviceCommandUtilService.doorOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand());
deviceStateService.setDoorStatus(false); deviceStateService.setDoorStatus(false);
//TODO 关门口判断加液模块是否有托盘 //TODO 关门口判断加液模块是否有托盘
}); });

1
src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java

@ -70,6 +70,7 @@ public class MoveToHeatAreaCommand extends BaseCommandHandler {
deviceCommandUtilService.gantryZMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), traySafetyHeight); //降下机械臂使拍子盖住托盘试管 deviceCommandUtilService.gantryZMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), traySafetyHeight); //降下机械臂使拍子盖住托盘试管
trayState.setHeatModuleId(heatModuleId); trayState.setHeatModuleId(heatModuleId);
trayState.setInHeatModule(true); trayState.setInHeatModule(true);
deviceStateService.setHeatModuleStateCapExist(heatModuleId, true);
deviceCommandUtilService.clawMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), clawCapPick);//将夹爪张开 deviceCommandUtilService.clawMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), clawCapPick);//将夹爪张开
deviceCommandUtilService.gantryZMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -clawDescend);//抬升机械臂至托盘上方 deviceCommandUtilService.gantryZMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -clawDescend);//抬升机械臂至托盘上方
gantryArmService.setLiquidIdleTrue();//释放加液区等待 gantryArmService.setLiquidIdleTrue();//释放加液区等待

14
src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java

@ -27,11 +27,17 @@ public class HoldingJawOpenCommandHandler extends BaseCommandHandler {
@Override @Override
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { public CompletableFuture<Void> handle(CmdDTO cmdDTO) {
this.stop = false; this.stop = false;
Double velocity = cmdDTO.getDoubleParam("velocity");
Double openDistance = cmdDTO.getDoubleParam("openDistance");
Double closeDistance = cmdDTO.getDoubleParam("closeDistance");
Integer times = cmdDTO.getIntegerParam("times");
if(openDistance < 34 || openDistance > 54) {
throw new RuntimeException("openDistance must be between 34 and 54");
}
if(closeDistance < 34 || closeDistance > 54) {
throw new RuntimeException("closeDistance must be between 34 and 54");
}
return runAsync(() -> { return runAsync(() -> {
Double velocity = cmdDTO.getDoubleParam("velocity");
Double openDistance = cmdDTO.getDoubleParam("openDistance");
Double closeDistance = cmdDTO.getDoubleParam("closeDistance");
Integer times = cmdDTO.getIntegerParam("times");
if (velocity != null) { if (velocity != null) {
DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawSet(velocity); DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawSet(velocity);
CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand);

4
src/main/java/com/iflytop/gd/app/core/device/TrayState.java

@ -29,7 +29,9 @@ public class TrayState {
public TrayState() { public TrayState() {
for (int i = 0; i < tubes.length; i++) { for (int i = 0; i < tubes.length; i++) {
tubes[i] = new TubeState();
TubeState tubeState = new TubeState();
tubeState.setTubeNum(i);
tubes[i] = tubeState;
} }
} }
} }

24
src/main/java/com/iflytop/gd/app/service/CraftsStepService.java

@ -3,6 +3,7 @@ package com.iflytop.gd.app.service;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.iflytop.gd.app.core.CraftsDebugGenerator; import com.iflytop.gd.app.core.CraftsDebugGenerator;
import com.iflytop.gd.app.core.device.TrayState;
import com.iflytop.gd.app.model.bo.CraftsStep; import com.iflytop.gd.app.model.bo.CraftsStep;
import com.iflytop.gd.app.model.bo.Point3D; import com.iflytop.gd.app.model.bo.Point3D;
import com.iflytop.gd.common.enums.AcidPumpDeviceCode; import com.iflytop.gd.common.enums.AcidPumpDeviceCode;
@ -24,6 +25,7 @@ public class CraftsStepService {
private final ContainerService containerService; private final ContainerService containerService;
private final WebSocketService webSocketService; private final WebSocketService webSocketService;
private final GantryArmService gantryArmService; private final GantryArmService gantryArmService;
private final DeviceStateService deviceStateService;
/** /**
@ -50,6 +52,7 @@ public class CraftsStepService {
*/ */
private boolean addLiquid(String heatId, JSONObject params) throws Exception { private boolean addLiquid(String heatId, JSONObject params) throws Exception {
HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId);
TrayState trayState = deviceStateService.getTrayInSolutionModule();
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "等待加液区空闲", null)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "等待加液区空闲", null));
gantryArmService.waitLiquidIdle();//等待加液区空闲 gantryArmService.waitLiquidIdle();//等待加液区空闲
@ -59,6 +62,7 @@ public class CraftsStepService {
double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); //获取加热位抬升托盘位置 double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); //获取加热位抬升托盘位置
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升加热位托盘", trayLift)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升加热位托盘", trayLift));
deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLift);//抬升加热位托盘 deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLift);//抬升加热位托盘
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 2);
//TODO 判断托盘是否有拍子 //TODO 判断托盘是否有拍子
Point3D heatAreaCapClawPoint3D = deviceCommandUtilService.getHeatAreaCapClawPointPoint3D(heatModuleId);//获取托盘上方拍子点位 Point3D heatAreaCapClawPoint3D = deviceCommandUtilService.getHeatAreaCapClawPointPoint3D(heatModuleId);//获取托盘上方拍子点位
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将机械臂移动至拍子上方", heatAreaCapClawPoint3D)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将机械臂移动至拍子上方", heatAreaCapClawPoint3D));
@ -75,6 +79,7 @@ public class CraftsStepService {
double capSafetyHeight = devicePositionService.getPosition(DevicePositionCode.capSafetyHeight).getDistance();//获取移动拍子的安全高度 double capSafetyHeight = devicePositionService.getPosition(DevicePositionCode.capSafetyHeight).getDistance();//获取移动拍子的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动拍子的安全高度", -capSafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动拍子的安全高度", -capSafetyHeight));
deviceCommandUtilService.gantryZMoveBy(-capSafetyHeight);//机械臂提升至移动拍子的安全高度 deviceCommandUtilService.gantryZMoveBy(-capSafetyHeight);//机械臂提升至移动拍子的安全高度
deviceStateService.setHeatModuleStateCapExist(heatModuleId, false);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降拍子存放区1个位置", null)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降拍子存放区1个位置", null));
deviceCommandUtilService.capMotorMove(-1); //下降拍子存放区1个位置 deviceCommandUtilService.capMotorMove(-1); //下降拍子存放区1个位置
Point3D capStorageCapClawPoint3D = devicePositionService.getPosition(DevicePositionCode.capStorageCapClawPoint).getPoint3D();//获取拍子存放区上方点位; Point3D capStorageCapClawPoint3D = devicePositionService.getPosition(DevicePositionCode.capStorageCapClawPoint).getPoint3D();//获取拍子存放区上方点位;
@ -101,6 +106,8 @@ public class CraftsStepService {
double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度 double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight));
deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度 deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 0);
trayState.setInHeatModule(false);
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点
Point3D liquidAreaTraySafetyHeightPoint3D = new Point3D(liquidAreaTrayPoint3D.getX(), liquidAreaTrayPoint3D.getY(), liquidAreaTrayPoint3D.getZ() - traySafetyHeight);//加液区托盘点位上方加上移动托盘的安全高度 Point3D liquidAreaTraySafetyHeightPoint3D = new Point3D(liquidAreaTrayPoint3D.getX(), liquidAreaTrayPoint3D.getY(), liquidAreaTrayPoint3D.getZ() - traySafetyHeight);//加液区托盘点位上方加上移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "移动机械臂至加液区托盘点位上方减去移动托盘的安全高度", liquidAreaTraySafetyHeightPoint3D)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "移动机械臂至加液区托盘点位上方减去移动托盘的安全高度", liquidAreaTraySafetyHeightPoint3D));
@ -109,6 +116,8 @@ public class CraftsStepService {
deviceCommandUtilService.gantryZMoveBy(traySafetyHeight);//下降机械臂将托盘与试管落入加液区 deviceCommandUtilService.gantryZMoveBy(traySafetyHeight);//下降机械臂将托盘与试管落入加液区
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "松开夹爪,放下托盘", clawTrayPick)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "松开夹爪,放下托盘", clawTrayPick));
deviceCommandUtilService.clawMove(clawTrayPick);//松开夹爪放下托盘 deviceCommandUtilService.clawMove(clawTrayPick);//松开夹爪放下托盘
deviceStateService.setSolutionModuleStateTrayStatus(1);
trayState.setInSolutionModule(true);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend));
deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方 deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方
@ -154,6 +163,7 @@ public class CraftsStepService {
*/ */
private boolean heating(String heatId, JSONObject params) throws Exception { private boolean heating(String heatId, JSONObject params) throws Exception {
HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId);
TrayState trayState = deviceStateService.getTrayInSolutionModule();
//if 判断加液区是否有托盘 //if 判断加液区是否有托盘
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点
@ -171,6 +181,7 @@ public class CraftsStepService {
double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度 double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight));
deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度 deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度
deviceStateService.setSolutionModuleStateTrayStatus(0);
Point3D heatAreaTrayClawPoint3D = deviceCommandUtilService.getHeatAreaTrayClawPoint3D(heatModuleId);//获取指定托盘上方点位 Point3D heatAreaTrayClawPoint3D = deviceCommandUtilService.getHeatAreaTrayClawPoint3D(heatModuleId);//获取指定托盘上方点位
Point3D heatAreaTrayClawSafetyHeightPoint3D = new Point3D(heatAreaTrayClawPoint3D.getX(), heatAreaTrayClawPoint3D.getY(), heatAreaTrayClawPoint3D.getZ() - traySafetyHeight);//加热区托盘点位上方减去移动托盘的安全高度 Point3D heatAreaTrayClawSafetyHeightPoint3D = new Point3D(heatAreaTrayClawPoint3D.getX(), heatAreaTrayClawPoint3D.getY(), heatAreaTrayClawPoint3D.getZ() - traySafetyHeight);//加热区托盘点位上方减去移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将携带托盘的机械臂移动至托盘上方", heatAreaTrayClawSafetyHeightPoint3D)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将携带托盘的机械臂移动至托盘上方", heatAreaTrayClawSafetyHeightPoint3D));
@ -202,16 +213,21 @@ public class CraftsStepService {
deviceCommandUtilService.gantryMove(heatAreaCapClawSafetyHeightPoint3D);//将机械臂移动至拍子上方加上移动拍子的安全高度 deviceCommandUtilService.gantryMove(heatAreaCapClawSafetyHeightPoint3D);//将机械臂移动至拍子上方加上移动拍子的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "降下机械臂使拍子盖住托盘试管", traySafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "降下机械臂使拍子盖住托盘试管", traySafetyHeight));
deviceCommandUtilService.gantryZMoveBy(traySafetyHeight); //降下机械臂使拍子盖住托盘试管 deviceCommandUtilService.gantryZMoveBy(traySafetyHeight); //降下机械臂使拍子盖住托盘试管
trayState.setHeatModuleId(heatModuleId);
trayState.setInHeatModule(true);
deviceStateService.setHeatModuleStateCapExist(heatModuleId, true);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将夹爪张开", clawCapPick)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将夹爪张开", clawCapPick));
deviceCommandUtilService.clawMove(clawCapPick);//将夹爪张开 deviceCommandUtilService.clawMove(clawCapPick);//将夹爪张开
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend));
deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方 deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "释放加液区等待", null)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "释放加液区等待", null));
gantryArmService.setLiquidIdleTrue();//释放加液区等待 gantryArmService.setLiquidIdleTrue();//释放加液区等待
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 2);
double trayLower = devicePositionService.getPosition(DevicePositionCode.trayLower).getDistance(); //获取加热位下降托盘位置 double trayLower = devicePositionService.getPosition(DevicePositionCode.trayLower).getDistance(); //获取加热位下降托盘位置
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降加热位托盘", trayLower)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降加热位托盘", trayLower));
deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLower);//下降加热位托盘 deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLower);//下降加热位托盘
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 1);
//根据配置开始加热 //根据配置开始加热
Double temperature = params.getDouble("temperature"); Double temperature = params.getDouble("temperature");
Integer second = params.getInt("second"); Integer second = params.getInt("second");
@ -231,6 +247,7 @@ public class CraftsStepService {
*/ */
private boolean takePhoto(String heatId) throws Exception { private boolean takePhoto(String heatId) throws Exception {
HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId); HeatModuleCode heatModuleId = HeatModuleCode.valueOf(heatId);
TrayState trayState = deviceStateService.getTrayInSolutionModule();
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "等待加液区空闲", null)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "等待加液区空闲", null));
gantryArmService.waitLiquidIdle();//等待加液区空闲 gantryArmService.waitLiquidIdle();//等待加液区空闲
@ -240,6 +257,8 @@ public class CraftsStepService {
double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); //获取加热位抬升托盘位置 double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); //获取加热位抬升托盘位置
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升加热位托盘", trayLift)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升加热位托盘", trayLift));
deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLift);//抬升加热位托盘 deviceCommandUtilService.heaterMotorMove(heatModuleId, trayLift);//抬升加热位托盘
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 2);
//TODO 判断托盘是否有拍子 //TODO 判断托盘是否有拍子
Point3D heatAreaCapClawPoint3D = deviceCommandUtilService.getHeatAreaCapClawPointPoint3D(heatModuleId);//获取托盘上方拍子点位 Point3D heatAreaCapClawPoint3D = deviceCommandUtilService.getHeatAreaCapClawPointPoint3D(heatModuleId);//获取托盘上方拍子点位
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将机械臂移动至拍子上方", heatAreaCapClawPoint3D)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "将机械臂移动至拍子上方", heatAreaCapClawPoint3D));
@ -257,6 +276,7 @@ public class CraftsStepService {
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动拍子的安全高度", -capSafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动拍子的安全高度", -capSafetyHeight));
deviceCommandUtilService.gantryZMoveBy(-capSafetyHeight);//机械臂提升至移动拍子的安全高度 deviceCommandUtilService.gantryZMoveBy(-capSafetyHeight);//机械臂提升至移动拍子的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降拍子存放区1个位置", null)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "下降拍子存放区1个位置", null));
deviceStateService.setHeatModuleStateCapExist(heatModuleId, false);
deviceCommandUtilService.capMotorMove(-1); //下降拍子存放区1个位置 deviceCommandUtilService.capMotorMove(-1); //下降拍子存放区1个位置
Point3D capStorageCapClawPoint3D = devicePositionService.getPosition(DevicePositionCode.capStorageCapClawPoint).getPoint3D();//获取拍子存放区上方点位; Point3D capStorageCapClawPoint3D = devicePositionService.getPosition(DevicePositionCode.capStorageCapClawPoint).getPoint3D();//获取拍子存放区上方点位;
Point3D capStorageCapClawSafetyHeightPoint3D = new Point3D(capStorageCapClawPoint3D.getX(), capStorageCapClawPoint3D.getY(), capStorageCapClawPoint3D.getZ() - capSafetyHeight);//拍子存放区上方加上移动拍子的安全高度 Point3D capStorageCapClawSafetyHeightPoint3D = new Point3D(capStorageCapClawPoint3D.getX(), capStorageCapClawPoint3D.getY(), capStorageCapClawPoint3D.getZ() - capSafetyHeight);//拍子存放区上方加上移动拍子的安全高度
@ -282,6 +302,8 @@ public class CraftsStepService {
double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度 double traySafetyHeight = devicePositionService.getPosition(DevicePositionCode.traySafetyHeight).getDistance();//获取移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "机械臂提升至移动托盘的安全高度", -traySafetyHeight));
deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度 deviceCommandUtilService.gantryZMoveBy(-traySafetyHeight);//机械臂提升至移动托盘的安全高度
deviceStateService.setHeatModuleStateTrayStatus(heatModuleId, 0);
trayState.setInHeatModule(false);
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液区托盘夹爪点
Point3D liquidAreaTraySafetyHeightPoint3D = new Point3D(liquidAreaTrayPoint3D.getX(), liquidAreaTrayPoint3D.getY(), liquidAreaTrayPoint3D.getZ() - traySafetyHeight);//加液区托盘点位上方加上移动托盘的安全高度 Point3D liquidAreaTraySafetyHeightPoint3D = new Point3D(liquidAreaTrayPoint3D.getX(), liquidAreaTrayPoint3D.getY(), liquidAreaTrayPoint3D.getZ() - traySafetyHeight);//加液区托盘点位上方加上移动托盘的安全高度
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "移动机械臂至加液区托盘点位上方减去移动托盘的安全高度", liquidAreaTraySafetyHeightPoint3D)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "移动机械臂至加液区托盘点位上方减去移动托盘的安全高度", liquidAreaTraySafetyHeightPoint3D));
@ -290,6 +312,8 @@ public class CraftsStepService {
deviceCommandUtilService.gantryZMoveBy(traySafetyHeight);//下降机械臂将托盘与试管落入加液区 deviceCommandUtilService.gantryZMoveBy(traySafetyHeight);//下降机械臂将托盘与试管落入加液区
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "松开夹爪,放下托盘", clawTrayPick)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "松开夹爪,放下托盘", clawTrayPick));
deviceCommandUtilService.clawMove(clawTrayPick);//松开夹爪放下托盘 deviceCommandUtilService.clawMove(clawTrayPick);//松开夹爪放下托盘
deviceStateService.setSolutionModuleStateTrayStatus(1);
trayState.setInSolutionModule(true);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "抬升机械臂至托盘上方", -clawDescend));
deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方 deviceCommandUtilService.gantryZMoveBy(-clawDescend);//抬升机械臂至托盘上方
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "开启补光灯", 100.0)); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatId, "开启补光灯", 100.0));

4
src/main/java/com/iflytop/gd/app/service/DeviceCommandService.java

@ -123,6 +123,9 @@ public class DeviceCommandService {
} }
}).start(); }).start();
} }
if (commandFuture.getCmdId() != null) {
webSocketService.pushDebug(DebugGenerator.generateJson(commandFuture.getCmdId(), commandFuture.getCmdCode(), CommandStatus.DEVICE_SEND, commandFuture.getDeviceCommandBundle().getCmdName() + "指令,已发给设备", commandFuture.getDeviceCommandBundle()));
}
} }
@ -135,7 +138,6 @@ public class DeviceCommandService {
public CommandFuture sendCommand(String cmdId, String cmdCode, DeviceCommandBundle deviceCommandBundle) { public CommandFuture sendCommand(String cmdId, String cmdCode, DeviceCommandBundle deviceCommandBundle) {
CommandFuture commandFuture = createDeviceCommandFuture(cmdId, cmdCode, deviceCommandBundle); CommandFuture commandFuture = createDeviceCommandFuture(cmdId, cmdCode, deviceCommandBundle);
executeCommand(commandFuture); executeCommand(commandFuture);
webSocketService.pushDebug(DebugGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_SEND, deviceCommandBundle.getCmdName() + "指令,已发给设备", deviceCommandBundle));
return commandFuture; return commandFuture;
} }

16
src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java

@ -30,6 +30,22 @@ public class DeviceCommandUtilService {
private final GDDeviceStatusService gdDeviceStatusService; private final GDDeviceStatusService gdDeviceStatusService;
/** /**
* 门电机回原点
*/
public void doorOrigin() throws Exception {
doorOrigin(null, null);
}
/**
* 门电机回原点
*/
public void doorOrigin(String cmdId, String cmdCode) throws Exception {
DeviceCommandBundle deviceCommand = DeviceCommandGenerator.doorOrigin();
CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand);
commandWait(deviceCommandFuture);
}
/**
* 门电机移动 * 门电机移动
*/ */
public void doorMove(double position) throws Exception { public void doorMove(double position) throws Exception {

12
src/main/java/com/iflytop/gd/common/enums/data/DevicePositionCode.java

@ -47,11 +47,6 @@ public enum DevicePositionCode {
doorOpen(DevicePositionType.DISTANCE, "开门距离"), doorOpen(DevicePositionType.DISTANCE, "开门距离"),
/** /**
* 关门距离
*/
doorClose(DevicePositionType.DISTANCE, "关门距离"),
/**
* 托盘抬升距离 * 托盘抬升距离
*/ */
trayLift(DevicePositionType.DISTANCE, "托盘抬升距离"), trayLift(DevicePositionType.DISTANCE, "托盘抬升距离"),
@ -158,12 +153,7 @@ public enum DevicePositionCode {
/** /**
* 加热区6拍子夹爪点 * 加热区6拍子夹爪点
*/ */
heatArea6CapClawPoint(DevicePositionType.POINT_3D, "加热区6拍子夹爪点"),
/**
* 拍子存放区夹爪点
*/
capStorageClawPoint(DevicePositionType.POINT_3D, "拍子存放区夹爪点");
heatArea6CapClawPoint(DevicePositionType.POINT_3D, "加热区6拍子夹爪点");
private final DevicePositionType type; private final DevicePositionType type;

2
src/main/java/com/iflytop/gd/hardware/constants/MiniServoConstant.java

@ -6,7 +6,7 @@ import org.springframework.util.Assert;
import java.util.Map; import java.util.Map;
public class MiniServoConstant { public class MiniServoConstant {
static public final Integer actionOvertime = 10000;
static public final Integer actionOvertime = 20000;
static class MiniServoFixPosConfig { static class MiniServoFixPosConfig {
public Integer zeroPos; public Integer zeroPos;
public Integer refPos; public Integer refPos;

4
src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java

@ -16,8 +16,8 @@ public class ClawDriver {
private static final double MIN_DISTANCE = 34.0; private static final double MIN_DISTANCE = 34.0;
private static final double MAX_DISTANCE = 54.0; private static final double MAX_DISTANCE = 54.0;
private static double MIN_SERVO_POSITION = 1920;
private static double MAX_SERVO_POSITION = 3000;
private static double MIN_SERVO_POSITION = 2600;
private static double MAX_SERVO_POSITION = 3680;
private final MiniServoDriver miniServoDriver; private final MiniServoDriver miniServoDriver;

67
src/main/resources/init/zapp_sub_module_reg_initial_value.csv

@ -47,7 +47,6 @@ id,mid,regIndex,regInitVal
46,DualRobotAxis2SV,kreg_mini_servo_servo_protect_time,200 46,DualRobotAxis2SV,kreg_mini_servo_servo_protect_time,200
47,DualRobotAxis2SV,kreg_mini_servo_servo_overload_torque,80 47,DualRobotAxis2SV,kreg_mini_servo_servo_overload_torque,80
48,DualRobotAxis2SV,kreg_mini_servo_servo_acc,0 48,DualRobotAxis2SV,kreg_mini_servo_servo_acc,0
49,LiquidDistributionArm,kreg_liquid_distribution_arm_enable,0
50,LiquidDistributionArm,kreg_liquid_distribution_arm_pos0_d0,466 50,LiquidDistributionArm,kreg_liquid_distribution_arm_pos0_d0,466
51,LiquidDistributionArm,kreg_liquid_distribution_arm_pos0_d1,992 51,LiquidDistributionArm,kreg_liquid_distribution_arm_pos0_d1,992
52,LiquidDistributionArm,kreg_liquid_distribution_arm_pos1_d0,616 52,LiquidDistributionArm,kreg_liquid_distribution_arm_pos1_d0,616
@ -85,27 +84,27 @@ id,mid,regIndex,regInitVal
84,DoorM,kreg_step_motor_shaft,0 84,DoorM,kreg_step_motor_shaft,0
85,DoorM,kreg_step_motor_one_circle_pulse,500 85,DoorM,kreg_step_motor_one_circle_pulse,500
86,DoorM,kreg_step_motor_one_circle_pulse_denominator,1 86,DoorM,kreg_step_motor_one_circle_pulse_denominator,1
87,DoorM,kreg_step_motor_default_velocity,30
87,DoorM,kreg_step_motor_default_velocity,80
88,DoorM,kreg_step_motor_low_velocity,30 88,DoorM,kreg_step_motor_low_velocity,30
89,DoorM,kreg_step_motor_mid_velocity,30 89,DoorM,kreg_step_motor_mid_velocity,30
90,DoorM,kreg_step_motor_high_velocity,30 90,DoorM,kreg_step_motor_high_velocity,30
91,DoorM,kreg_step_motor_ihold,5
92,DoorM,kreg_step_motor_irun,15
91,DoorM,kreg_step_motor_ihold,15
92,DoorM,kreg_step_motor_irun,31
93,DoorM,kreg_step_motor_iholddelay,10 93,DoorM,kreg_step_motor_iholddelay,10
94,DoorM,kreg_step_motor_iglobalscaler,0
94,DoorM,kreg_step_motor_iglobalscaler,80
95,DoorM,kreg_step_motor_mres,0 95,DoorM,kreg_step_motor_mres,0
96,DoorM,kreg_step_motor_run_to_zero_speed,30 96,DoorM,kreg_step_motor_run_to_zero_speed,30
97,DoorM,kreg_step_motor_look_zero_edge_speed,30 97,DoorM,kreg_step_motor_look_zero_edge_speed,30
98,DoorM,kreg_step_motor_max_d,0 98,DoorM,kreg_step_motor_max_d,0
99,DoorM,kreg_step_motor_min_d,0 99,DoorM,kreg_step_motor_min_d,0
100,DoorM,kreg_step_motor_in_debug_mode,0 100,DoorM,kreg_step_motor_in_debug_mode,0
101,DoorM,kreg_step_motor_vstart,100
101,DoorM,kreg_step_motor_vstart,50
102,DoorM,kreg_step_motor_a1,50 102,DoorM,kreg_step_motor_a1,50
103,DoorM,kreg_step_motor_amax,100
104,DoorM,kreg_step_motor_v1,300
105,DoorM,kreg_step_motor_dmax,100
103,DoorM,kreg_step_motor_amax,50
104,DoorM,kreg_step_motor_v1,50
105,DoorM,kreg_step_motor_dmax,50
106,DoorM,kreg_step_motor_d1,50 106,DoorM,kreg_step_motor_d1,50
107,DoorM,kreg_step_motor_vstop,100
107,DoorM,kreg_step_motor_vstop,50
108,DoorM,kreg_step_motor_tzerowait,0 108,DoorM,kreg_step_motor_tzerowait,0
109,DoorM,kreg_step_motor_enc_resolution,0 109,DoorM,kreg_step_motor_enc_resolution,0
110,DoorM,kreg_step_motor_enable_enc,0 110,DoorM,kreg_step_motor_enable_enc,0
@ -115,27 +114,27 @@ id,mid,regIndex,regInitVal
114,ShakeM,kreg_step_motor_shaft,1 114,ShakeM,kreg_step_motor_shaft,1
115,ShakeM,kreg_step_motor_one_circle_pulse,100 115,ShakeM,kreg_step_motor_one_circle_pulse,100
116,ShakeM,kreg_step_motor_one_circle_pulse_denominator,1 116,ShakeM,kreg_step_motor_one_circle_pulse_denominator,1
117,ShakeM,kreg_step_motor_default_velocity,500
117,ShakeM,kreg_step_motor_default_velocity,240
118,ShakeM,kreg_step_motor_low_velocity,0 118,ShakeM,kreg_step_motor_low_velocity,0
119,ShakeM,kreg_step_motor_mid_velocity,0 119,ShakeM,kreg_step_motor_mid_velocity,0
120,ShakeM,kreg_step_motor_high_velocity,0 120,ShakeM,kreg_step_motor_high_velocity,0
121,ShakeM,kreg_step_motor_ihold,5 121,ShakeM,kreg_step_motor_ihold,5
122,ShakeM,kreg_step_motor_irun,10
122,ShakeM,kreg_step_motor_irun,31
123,ShakeM,kreg_step_motor_iholddelay,10 123,ShakeM,kreg_step_motor_iholddelay,10
124,ShakeM,kreg_step_motor_iglobalscaler,0
124,ShakeM,kreg_step_motor_iglobalscaler,64
125,ShakeM,kreg_step_motor_mres,0 125,ShakeM,kreg_step_motor_mres,0
126,ShakeM,kreg_step_motor_run_to_zero_speed,100 126,ShakeM,kreg_step_motor_run_to_zero_speed,100
127,ShakeM,kreg_step_motor_look_zero_edge_speed,100 127,ShakeM,kreg_step_motor_look_zero_edge_speed,100
128,ShakeM,kreg_step_motor_max_d,0 128,ShakeM,kreg_step_motor_max_d,0
129,ShakeM,kreg_step_motor_min_d,0 129,ShakeM,kreg_step_motor_min_d,0
130,ShakeM,kreg_step_motor_in_debug_mode,0 130,ShakeM,kreg_step_motor_in_debug_mode,0
131,ShakeM,kreg_step_motor_vstart,100
132,ShakeM,kreg_step_motor_a1,50
133,ShakeM,kreg_step_motor_amax,100
134,ShakeM,kreg_step_motor_v1,300
135,ShakeM,kreg_step_motor_dmax,100
136,ShakeM,kreg_step_motor_d1,50
137,ShakeM,kreg_step_motor_vstop,100
131,ShakeM,kreg_step_motor_vstart,50
132,ShakeM,kreg_step_motor_a1,10
133,ShakeM,kreg_step_motor_amax,15
134,ShakeM,kreg_step_motor_v1,150
135,ShakeM,kreg_step_motor_dmax,15
136,ShakeM,kreg_step_motor_d1,10
137,ShakeM,kreg_step_motor_vstop,50
138,ShakeM,kreg_step_motor_tzerowait,0 138,ShakeM,kreg_step_motor_tzerowait,0
139,ShakeM,kreg_step_motor_enc_resolution,0 139,ShakeM,kreg_step_motor_enc_resolution,0
140,ShakeM,kreg_step_motor_enable_enc,0 140,ShakeM,kreg_step_motor_enable_enc,0
@ -145,27 +144,27 @@ id,mid,regIndex,regInitVal
144,CapStorageM,kreg_step_motor_shaft,1 144,CapStorageM,kreg_step_motor_shaft,1
145,CapStorageM,kreg_step_motor_one_circle_pulse,500 145,CapStorageM,kreg_step_motor_one_circle_pulse,500
146,CapStorageM,kreg_step_motor_one_circle_pulse_denominator,1 146,CapStorageM,kreg_step_motor_one_circle_pulse_denominator,1
147,CapStorageM,kreg_step_motor_default_velocity,500
147,CapStorageM,kreg_step_motor_default_velocity,200
148,CapStorageM,kreg_step_motor_low_velocity,0 148,CapStorageM,kreg_step_motor_low_velocity,0
149,CapStorageM,kreg_step_motor_mid_velocity,0 149,CapStorageM,kreg_step_motor_mid_velocity,0
150,CapStorageM,kreg_step_motor_high_velocity,0 150,CapStorageM,kreg_step_motor_high_velocity,0
151,CapStorageM,kreg_step_motor_ihold,5 151,CapStorageM,kreg_step_motor_ihold,5
152,CapStorageM,kreg_step_motor_irun,20
152,CapStorageM,kreg_step_motor_irun,31
153,CapStorageM,kreg_step_motor_iholddelay,10 153,CapStorageM,kreg_step_motor_iholddelay,10
154,CapStorageM,kreg_step_motor_iglobalscaler,0
154,CapStorageM,kreg_step_motor_iglobalscaler,128
155,CapStorageM,kreg_step_motor_mres,0 155,CapStorageM,kreg_step_motor_mres,0
156,CapStorageM,kreg_step_motor_run_to_zero_speed,100 156,CapStorageM,kreg_step_motor_run_to_zero_speed,100
157,CapStorageM,kreg_step_motor_look_zero_edge_speed,100 157,CapStorageM,kreg_step_motor_look_zero_edge_speed,100
158,CapStorageM,kreg_step_motor_max_d,0 158,CapStorageM,kreg_step_motor_max_d,0
159,CapStorageM,kreg_step_motor_min_d,0 159,CapStorageM,kreg_step_motor_min_d,0
160,CapStorageM,kreg_step_motor_in_debug_mode,0 160,CapStorageM,kreg_step_motor_in_debug_mode,0
161,CapStorageM,kreg_step_motor_vstart,100
161,CapStorageM,kreg_step_motor_vstart,10
162,CapStorageM,kreg_step_motor_a1,50 162,CapStorageM,kreg_step_motor_a1,50
163,CapStorageM,kreg_step_motor_amax,100
164,CapStorageM,kreg_step_motor_v1,300
165,CapStorageM,kreg_step_motor_dmax,100
163,CapStorageM,kreg_step_motor_amax,50
164,CapStorageM,kreg_step_motor_v1,100
165,CapStorageM,kreg_step_motor_dmax,50
166,CapStorageM,kreg_step_motor_d1,50 166,CapStorageM,kreg_step_motor_d1,50
167,CapStorageM,kreg_step_motor_vstop,100
167,CapStorageM,kreg_step_motor_vstop,10
168,CapStorageM,kreg_step_motor_tzerowait,0 168,CapStorageM,kreg_step_motor_tzerowait,0
169,CapStorageM,kreg_step_motor_enc_resolution,0 169,CapStorageM,kreg_step_motor_enc_resolution,0
170,CapStorageM,kreg_step_motor_enable_enc,0 170,CapStorageM,kreg_step_motor_enable_enc,0
@ -244,7 +243,7 @@ id,mid,regIndex,regInitVal
243,HBotZM,kreg_step_motor_iholddelay,10 243,HBotZM,kreg_step_motor_iholddelay,10
244,HBotZM,kreg_step_motor_iglobalscaler,0 244,HBotZM,kreg_step_motor_iglobalscaler,0
245,HBotZM,kreg_step_motor_mres,0 245,HBotZM,kreg_step_motor_mres,0
246,HBotZM,kreg_step_motor_run_to_zero_speed,100
246,HBotZM,kreg_step_motor_run_to_zero_speed,200
247,HBotZM,kreg_step_motor_look_zero_edge_speed,100 247,HBotZM,kreg_step_motor_look_zero_edge_speed,100
248,HBotZM,kreg_step_motor_max_d,0 248,HBotZM,kreg_step_motor_max_d,0
249,HBotZM,kreg_step_motor_min_d,0 249,HBotZM,kreg_step_motor_min_d,0
@ -265,7 +264,7 @@ id,mid,regIndex,regInitVal
264,Heater1M,kreg_step_motor_shaft,1 264,Heater1M,kreg_step_motor_shaft,1
265,Heater1M,kreg_step_motor_one_circle_pulse,400 265,Heater1M,kreg_step_motor_one_circle_pulse,400
266,Heater1M,kreg_step_motor_one_circle_pulse_denominator,1 266,Heater1M,kreg_step_motor_one_circle_pulse_denominator,1
267,Heater1M,kreg_step_motor_default_velocity,500
267,Heater1M,kreg_step_motor_default_velocity,800
268,Heater1M,kreg_step_motor_low_velocity,0 268,Heater1M,kreg_step_motor_low_velocity,0
269,Heater1M,kreg_step_motor_mid_velocity,0 269,Heater1M,kreg_step_motor_mid_velocity,0
270,Heater1M,kreg_step_motor_high_velocity,0 270,Heater1M,kreg_step_motor_high_velocity,0
@ -682,3 +681,11 @@ id,mid,regIndex,regInitVal
681,AcidPump8M,kreg_step_motor_dzero_pos,0 681,AcidPump8M,kreg_step_motor_dzero_pos,0
682,AcidPump8M,kret_step_motor_pos_devi_tolerance,0 682,AcidPump8M,kret_step_motor_pos_devi_tolerance,0
683,AcidPump8M,kret_step_motor_io_trigger_append_distance,0 683,AcidPump8M,kret_step_motor_io_trigger_append_distance,0
684,MainXSV,kreg_leisai_servo_default_velocity,1500
685,MainXSV,kreg_leisai_servo_low_velocity,1500
686,MainXSV,kreg_leisai_servo_mid_velocity,1500
687,MainXSV,kreg_leisai_servo_high_velocity,1500
688,MainYSV,kreg_leisai_servo_default_velocity,1500
689,MainYSV,kreg_leisai_servo_low_velocity,1500
690,MainYSV,kreg_leisai_servo_mid_velocity,1500
691,MainYSV,kreg_leisai_servo_high_velocity,1500
Loading…
Cancel
Save