diff --git a/src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java b/src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java index 54bfc35..20b5f8b 100644 --- a/src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java +++ b/src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java @@ -75,7 +75,7 @@ public class DeviceParamConfigService extends ServiceImpl new ModuleIdVO( e.name(), // 枚举常量名 - e.name // 描述字段 + e.description // 描述字段 )) .collect(Collectors.toList()); } diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/AcidPumpHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/AcidPumpHandler.java index d64d2f4..b17e74b 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/AcidPumpHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/AcidPumpHandler.java @@ -5,7 +5,7 @@ import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.StepMotorDriver.AcidPumpDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/ClawHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/ClawHandler.java index 8fc3e65..4b4fdfe 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/ClawHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/ClawHandler.java @@ -7,7 +7,6 @@ import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.MiniServoDriver.ClawDriver; import com.iflytop.gd.hardware.drivers.MiniServoDriver.MiniServoMId; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/DoorHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/DoorHandler.java index 4b269cf..78457e6 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/DoorHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/DoorHandler.java @@ -5,14 +5,12 @@ import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.StepMotorDriver.DoorDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/HBotHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/HBotHandler.java index 0b33e8f..f7a87c8 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/HBotHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/HBotHandler.java @@ -5,7 +5,7 @@ import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.StepMotorDriver.HBotDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/HeaterMotorHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/HeaterMotorHandler.java index cf88a98..2af031f 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/HeaterMotorHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/HeaterMotorHandler.java @@ -5,7 +5,7 @@ import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.StepMotorDriver.HeaterMotorDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/ShakeMotorHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/ShakeMotorHandler.java index 038d652..c93dfd1 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/ShakeMotorHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/ShakeMotorHandler.java @@ -6,7 +6,7 @@ import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; import com.iflytop.gd.hardware.drivers.StepMotorDriver.ShakeMotorDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/iflytop/gd/hardware/command/handlers/TrayMotorHandler.java b/src/main/java/com/iflytop/gd/hardware/command/handlers/TrayMotorHandler.java index c80afa5..f25fbd4 100644 --- a/src/main/java/com/iflytop/gd/hardware/command/handlers/TrayMotorHandler.java +++ b/src/main/java/com/iflytop/gd/hardware/command/handlers/TrayMotorHandler.java @@ -4,7 +4,7 @@ import com.iflytop.gd.common.cmd.DeviceCommand; import com.iflytop.gd.common.enums.cmd.CmdAction; import com.iflytop.gd.common.enums.cmd.CmdDevice; import com.iflytop.gd.hardware.command.CommandHandler; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import com.iflytop.gd.hardware.drivers.StepMotorDriver.TrayMotorDriver; import com.iflytop.gd.hardware.type.MId; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/iflytop/gd/hardware/config/StepMotorConfig.java b/src/main/java/com/iflytop/gd/hardware/config/StepMotorConfig.java new file mode 100644 index 0000000..90242b5 --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/config/StepMotorConfig.java @@ -0,0 +1,260 @@ +package com.iflytop.gd.hardware.config; + +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; +import lombok.extern.slf4j.Slf4j; + +import java.util.Map; + +@Slf4j +public class StepMotorConfig { + // 导程 配置 + private final static double DEFAULT_LEAD = 10.0; // mm + final static Map stepMotorLeadMap = Map.ofEntries( + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, 5.0), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, 4.0), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, 5.0) + ); + // 电流配置 + final static int DEFAULT_CURRENT = 8; // [0-31] + final static int HEATER_MOTOR_DEFAULT_CURRENT = 20; + final static int ACID_PUMP_MOTOR_DEFAULT_CURRENT = 8; + final static Map stepMotorCurrentMap = Map.ofEntries( + Map.entry(StepMotorMId.SHAKE_MOTOR_MID, 8), + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, 31), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, 31), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, 31), + Map.entry(StepMotorMId.HEATER_1_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.HEATER_2_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.HEATER_3_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.HEATER_4_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.HEATER_5_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.HEATER_6_MOTOR_MID, HEATER_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_1_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_2_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_3_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_4_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_5_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_6_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_7_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT), + Map.entry(StepMotorMId.ACID_PUMP_8_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_CURRENT) + ); + + // 速度配置 + final static double DEFAULT_SPEED = 1.0; // mm/s + final static double HEATER_MOTOR_DEFAULT_SPEED = 1.0; + final static double ACID_PUMP_MOTOR_DEFAULT_SPEED = 1.0; + final static Map stepMotorSpeedMap = Map.ofEntries( + Map.entry(StepMotorMId.SHAKE_MOTOR_MID, 1.0), + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, 20.0), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, 20.0), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, 20.0), + Map.entry(StepMotorMId.HEATER_1_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.HEATER_2_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.HEATER_3_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.HEATER_4_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.HEATER_5_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.HEATER_6_MOTOR_MID, HEATER_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_1_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_2_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_3_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_4_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_5_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_6_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_7_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED), + Map.entry(StepMotorMId.ACID_PUMP_8_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_SPEED) + ); + + // 最小限位配置 + static final double DEFAULT_MIN_LIMIT = 0.0; // mm + static final double HEATER_MOTOR_DEFAULT_MIN_LIMIT = 0.0; + static final double ACID_PUMP_MOTOR_DEFAULT_MIN_LIMIT = 0.0; + final static Map stepMotorMinLimitMap = Map.ofEntries( + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, 0.0), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, 0.0), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, 0.0) + ); + + // 最大限位配置 + static final double DEFAULT_MAX_LIMIT = 0.0; // mm + static final double HEATER_MOTOR_DEFAULT_MAX_LIMIT = 100.0; + static final double ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT = Double.MAX_VALUE; + final static Map stepMotorMaxLimitMap = Map.ofEntries( + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, 1500.0), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, 800.0), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, 300.0), + Map.entry(StepMotorMId.HEATER_1_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.HEATER_2_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.HEATER_3_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.HEATER_4_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.HEATER_5_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.HEATER_6_MOTOR_MID, HEATER_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_1_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_2_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_3_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_4_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_5_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_6_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_7_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT), + Map.entry(StepMotorMId.ACID_PUMP_8_MOTOR_MID, ACID_PUMP_MOTOR_DEFAULT_MAX_LIMIT) + ); + + // 是否安装编码器 + private final static boolean DEFAULT_ENCODER_INSTALLED = false; + static Map stepMotorEncoderMap = Map.ofEntries( + Map.entry(StepMotorMId.HBOT_X_MOTOR_MID, true), + Map.entry(StepMotorMId.HBOT_Y_MOTOR_MID, true), + Map.entry(StepMotorMId.HBOT_Z_MOTOR_MID, true) + ); + + /* ******************** ******************** ******************** */ + /* ******************** 导程 ******************** */ + /* ******************** ******************** ******************** */ + + // 从数据库拉取导程信息 + private Double getLeadFromDB(StepMotorMId stepMotorId) + { + // TODO: 从数据库中获取导程 + return null; + } + + // 从默认配置中获取导程信息 + private Double getLeadFromDefault(StepMotorMId stepMotorId) + { + return stepMotorLeadMap.getOrDefault(stepMotorId, DEFAULT_LEAD); + } + + // 获取导程信息 + public double getLead(StepMotorMId stepMotorId) + { + Double lead = getLeadFromDB(stepMotorId); + if (lead != null) { + return lead; + } else { + return getLeadFromDefault(stepMotorId); + } + } + + /* ******************** ******************** ******************** */ + /* ******************** 电流 ******************** */ + /* ******************** ******************** ******************** */ + // 从数据库拉取电流信息 + private Integer getCurrentFromDB(StepMotorMId stepMotorId) + { + // TODO: 从数据库中获取电流 + return null; + } + + private Integer getCurrentFromDefault(StepMotorMId stepMotorId) + { + return stepMotorCurrentMap.getOrDefault(stepMotorId, DEFAULT_CURRENT); + } + + public int getCurrent(StepMotorMId stepMotorId) + { + Integer current = getCurrentFromDB(stepMotorId); + if (current != null) { + return current; + } else { + return getCurrentFromDefault(stepMotorId); + } + } + + /* ******************** ******************** ******************** */ + /* ******************** 速度 ******************** */ + /* ******************** ******************** ******************** */ + // 从数据库拉取速度信息 + private Double getSpeedFromDB(StepMotorMId stepMotorId) + { + // TODO: 从数据库中获取速度 + return null; + } + private Double getSpeedFromDefault(StepMotorMId stepMotorId) + { + return stepMotorSpeedMap.getOrDefault(stepMotorId, DEFAULT_SPEED); + } + + public double getSpeed(StepMotorMId stepMotorId) + { + Double speed = getSpeedFromDB(stepMotorId); + if (speed != null) { + return speed; + } else { + return getSpeedFromDefault(stepMotorId); + } + } + + /* ******************** ******************** ******************** */ + /* ******************** 最小限位 ******************** */ + /* ******************** ******************** ******************** */ + // 从数据库拉取最小限位信息 + private Double getMinLimitFromDB(StepMotorMId stepMotorId) + { + // TODO: 从数据库中获取最小限位 + return null; + } + + private Double getMinLimitFromDefault(StepMotorMId stepMotorId) + { + return stepMotorMinLimitMap.getOrDefault(stepMotorId, DEFAULT_MIN_LIMIT); + } + + public double getMinLimit(StepMotorMId stepMotorId) + { + Double minLimit = getMinLimitFromDB(stepMotorId); + if (minLimit != null) { + return minLimit; + } else { + return getMinLimitFromDefault(stepMotorId); + } + } + + /* ******************** ******************** ******************** */ + /* ******************** 最大限位 ******************** */ + /* ******************** ******************** ******************** */ + // 从数据库拉取最大限位信息 + private Double getMaxLimitFromDB(StepMotorMId stepMotorId) + { + // TODO: 从数据库中获取最大限位 + return null; + } + + private Double getMaxLimitFromDefault(StepMotorMId stepMotorId) + { + return stepMotorMaxLimitMap.getOrDefault(stepMotorId, DEFAULT_MAX_LIMIT); + } + + public double getMaxLimit(StepMotorMId stepMotorId) + { + Double maxLimit = getMaxLimitFromDB(stepMotorId); + if (maxLimit != null) { + return maxLimit; + } else { + return getMaxLimitFromDefault(stepMotorId); + } + } + + /* ******************** ******************** ******************** */ + /* ******************** 编码器 ******************** */ + /* ******************** ******************** ******************** */ + // 从数据库拉取编码器信息 + private Boolean getEncoderFromDB(StepMotorMId stepMotorId) + { + //TODO: 从数据库中获取编码器 + return null; + } + + private Boolean getEncoderFromDefault(StepMotorMId stepMotorId) + { + return stepMotorEncoderMap.getOrDefault(stepMotorId, DEFAULT_ENCODER_INSTALLED); + } + + public boolean isEncoderInstalled(StepMotorMId stepMotorId) + { + Boolean encoder = getEncoderFromDB(stepMotorId); + if (encoder != null) { + return encoder; + } else { + return getEncoderFromDefault(stepMotorId); + } + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/constants/ActionOvertimeConstant.java b/src/main/java/com/iflytop/gd/hardware/constants/ActionOvertimeConstant.java index 96e8d58..f7e9ffc 100644 --- a/src/main/java/com/iflytop/gd/hardware/constants/ActionOvertimeConstant.java +++ b/src/main/java/com/iflytop/gd/hardware/constants/ActionOvertimeConstant.java @@ -3,7 +3,7 @@ package com.iflytop.gd.hardware.constants; import com.iflytop.gd.hardware.type.CmdId; import com.iflytop.gd.hardware.type.MId; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import jakarta.annotation.PostConstruct; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/controller/ServoController.java b/src/main/java/com/iflytop/gd/hardware/controller/ServoController.java index d3c334e..b107e0a 100644 --- a/src/main/java/com/iflytop/gd/hardware/controller/ServoController.java +++ b/src/main/java/com/iflytop/gd/hardware/controller/ServoController.java @@ -2,8 +2,6 @@ package com.iflytop.gd.hardware.controller; import com.iflytop.gd.hardware.drivers.MiniServoDriver.DeviceServoId; import com.iflytop.gd.hardware.drivers.MiniServoDriver.MiniServoRegIndex; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.DeviceStepMotorId; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorRegIndex; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.service.ServoService; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/com/iflytop/gd/hardware/controller/StepMotorController.java b/src/main/java/com/iflytop/gd/hardware/controller/StepMotorController.java index 97da20d..486454a 100644 --- a/src/main/java/com/iflytop/gd/hardware/controller/StepMotorController.java +++ b/src/main/java/com/iflytop/gd/hardware/controller/StepMotorController.java @@ -1,8 +1,10 @@ package com.iflytop.gd.hardware.controller; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.*; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.service.StepMotorService; +import com.iflytop.gd.hardware.type.StepMotor.DeviceStepMotorId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorRegIndex; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorSpeedLevel; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java index 4e571cc..4bb960e 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java @@ -1,6 +1,5 @@ package com.iflytop.gd.hardware.drivers.MiniServoDriver; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/AcidPumpDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/AcidPumpDriver.java index e509079..85cb60c 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/AcidPumpDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/AcidPumpDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DoorDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DoorDriver.java index 6231df0..2e2f277 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DoorDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DoorDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HBotDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HBotDriver.java index 5506d4d..e28f4a4 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HBotDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HBotDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HeaterMotorDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HeaterMotorDriver.java index a873c51..2bdaeb2 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HeaterMotorDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HeaterMotorDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/ShakeMotorDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/ShakeMotorDriver.java index 83fa2bf..14b9437 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/ShakeMotorDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/ShakeMotorDriver.java @@ -1,11 +1,10 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.security.InvalidParameterException; - @Slf4j @Component @RequiredArgsConstructor diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorCtrlDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorCtrlDriver.java index 3bcdb40..701b719 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorCtrlDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorCtrlDriver.java @@ -4,6 +4,9 @@ import com.iflytop.gd.hardware.comm.can.A8kCanBusService; import com.iflytop.gd.hardware.constants.ActionOvertimeConstant; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.type.*; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorRegIndex; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorSpeedLevel; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorHelper.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorHelper.java new file mode 100644 index 0000000..201b891 --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorHelper.java @@ -0,0 +1,81 @@ +package com.iflytop.gd.hardware.drivers.StepMotorDriver; + +/** + * @author iflytop + * @date 2023/10/12 + * @description 步进电机助手类 + * lead[S](导程): mm + * rps(转速): r/s + * rpm(转速): r/min + * r(转数): r + * + */ +public class StepMotorHelper { + static private final double kScale = 10000.0; + + /* **** **** **** **** **** **** **** **** **** **** **** + * 位置转换 + * 1. 用户位置 X + * 2. 用户单位距离 unit_X + * 3. R = X * kScale / motor_scale * motor_lead + * 4. unit_X(1mm/1ml) = R / S = X * kScale / motor_scale * motor_lead / S + * 5. motor_scale == 10000.0 && motor_lead == S + * 6. unit_X(1mm/1ml) = X * kScale / motor_scale (X=1, 即 X = unit_X, 保证 kScale / motor_scale == 1) + * 7. kScale = motor_scale = 10000.0 + * + **** **** **** **** **** **** **** **** **** **** **** */ + + /** + * 用户设置位置转换为控制器需要的位置 + * @param position + * @return + */ + static int toMotorPosition(double position) + { + return (int)(position * kScale); + } + + /** + * 控制器位置转换为用户设置位置 + * @param motorPosition + * @return + */ + static double toUserPosition(int motorPosition) + { + return (double)motorPosition / kScale; + } + + /* **** **** **** **** **** **** **** **** **** **** **** + * 速度转换 + * 1. 用户速度 X/s + * 2. 电机速度 R/min + * 3. X/s = rps * S + * 4. rps = X/s / S + * 5. rps = rpm / 60.0 + * 6. rpm = X/s * 60.0 + * 7. rpm = X/s / S * 60.0 + * + **** **** **** **** **** **** **** **** **** **** **** */ + + /** + * 用户设置速度转换为控制器需要的速度 + * 用户速度 U_Speed xx/s + * 控制器速度 rpm + * S 导程 + */ + static int toMotorSpeed(double speed, double S) + { + return (int)(speed * 60.0 / S); + } + + /** + * 控制器速度转换为用户设置速度 + * 控制器速度 rpm + * 用户速度 U_Speed xx/s + * S 导程 + */ + static double toUserSpeed(int motorSpeed, double S) + { + return (double)motorSpeed * S / 60.0; + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/TrayMotorDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/TrayMotorDriver.java index 5a7785d..bf95837 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/TrayMotorDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/TrayMotorDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.StepMotorDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/iflytop/gd/hardware/service/ServoService.java b/src/main/java/com/iflytop/gd/hardware/service/ServoService.java index 38cab18..6dbe7bb 100644 --- a/src/main/java/com/iflytop/gd/hardware/service/ServoService.java +++ b/src/main/java/com/iflytop/gd/hardware/service/ServoService.java @@ -4,7 +4,6 @@ import com.iflytop.gd.hardware.drivers.MiniServoDriver.DeviceServoId; import com.iflytop.gd.hardware.drivers.MiniServoDriver.MiniServoDriver; import com.iflytop.gd.hardware.drivers.MiniServoDriver.MiniServoMId; import com.iflytop.gd.hardware.drivers.MiniServoDriver.MiniServoRegIndex; -import com.iflytop.gd.hardware.drivers.StepMotorDriver.DeviceStepMotorId; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.type.A8kEcode; import com.iflytop.gd.hardware.type.AppError; diff --git a/src/main/java/com/iflytop/gd/hardware/service/StepMotorService.java b/src/main/java/com/iflytop/gd/hardware/service/StepMotorService.java index aaf724b..fc1a38c 100644 --- a/src/main/java/com/iflytop/gd/hardware/service/StepMotorService.java +++ b/src/main/java/com/iflytop/gd/hardware/service/StepMotorService.java @@ -4,6 +4,10 @@ import com.iflytop.gd.hardware.drivers.StepMotorDriver.*; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.type.A8kEcode; import com.iflytop.gd.hardware.type.AppError; +import com.iflytop.gd.hardware.type.StepMotor.DeviceStepMotorId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorRegIndex; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorSpeedLevel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/iflytop/gd/hardware/type/MId.java b/src/main/java/com/iflytop/gd/hardware/type/MId.java index 11853c2..f959eda 100644 --- a/src/main/java/com/iflytop/gd/hardware/type/MId.java +++ b/src/main/java/com/iflytop/gd/hardware/type/MId.java @@ -63,11 +63,11 @@ public enum MId { AcidPump8M(291, "泵8电机"), ; - final public String name; + final public String description; final public int index; - MId(int index, String name) { - this.name = name; + MId(int index, String description) { + this.description = description; this.index = index; } @@ -75,6 +75,11 @@ public enum MId { return index; } + public String getDescription() + { + return description; + } + public static MId valueOf(Integer val) { return valueOf(val.intValue()); diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java similarity index 97% rename from src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java rename to src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java index ad56364..c0c916f 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; +package com.iflytop.gd.hardware.type.StepMotor; public enum DeviceStepMotorId { diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java similarity index 90% rename from src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java rename to src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java index 8f42789..868b9bd 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java @@ -1,7 +1,6 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; +package com.iflytop.gd.hardware.type.StepMotor; import com.iflytop.gd.hardware.type.MId; -import org.springframework.util.Assert; public enum StepMotorMId { DOOR_MOTOR_MID(MId.DoorM), diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java similarity index 98% rename from src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java rename to src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java index 5338084..8d25962 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; +package com.iflytop.gd.hardware.type.StepMotor; import com.iflytop.gd.hardware.type.RegIndex; diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java similarity index 54% rename from src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java rename to src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java index a981b6e..5a4c781 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java @@ -1,4 +1,4 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; +package com.iflytop.gd.hardware.type.StepMotor; public enum StepMotorSpeedLevel { DEFAULT,