From 6d49a6004215661cf5c9356cf4e6393a5c7cdc34 Mon Sep 17 00:00:00 2001 From: HSZ_HeSongZhen <210202959@qq.com> Date: Wed, 7 May 2025 15:02:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=20=E6=B7=BB=E5=8A=A0config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gd/app/service/DeviceParamConfigService.java | 2 +- .../hardware/command/handlers/AcidPumpHandler.java | 2 +- .../gd/hardware/command/handlers/ClawHandler.java | 1 - .../gd/hardware/command/handlers/DoorHandler.java | 4 +- .../gd/hardware/command/handlers/HBotHandler.java | 2 +- .../command/handlers/HeaterMotorHandler.java | 2 +- .../command/handlers/ShakeMotorHandler.java | 2 +- .../command/handlers/TrayMotorHandler.java | 2 +- .../gd/hardware/config/StepMotorConfig.java | 260 +++++++++++++++++++++ .../hardware/constants/ActionOvertimeConstant.java | 2 +- .../gd/hardware/controller/ServoController.java | 2 - .../hardware/controller/StepMotorController.java | 4 +- .../drivers/MiniServoDriver/ClawDriver.java | 1 - .../drivers/StepMotorDriver/AcidPumpDriver.java | 1 + .../drivers/StepMotorDriver/DeviceStepMotorId.java | 51 ---- .../drivers/StepMotorDriver/DoorDriver.java | 1 + .../drivers/StepMotorDriver/HBotDriver.java | 1 + .../drivers/StepMotorDriver/HeaterMotorDriver.java | 1 + .../drivers/StepMotorDriver/ShakeMotorDriver.java | 3 +- .../StepMotorDriver/StepMotorCtrlDriver.java | 3 + .../drivers/StepMotorDriver/StepMotorHelper.java | 81 +++++++ .../drivers/StepMotorDriver/StepMotorMId.java | 35 --- .../drivers/StepMotorDriver/StepMotorRegIndex.java | 56 ----- .../StepMotorDriver/StepMotorSpeedLevel.java | 9 - .../drivers/StepMotorDriver/TrayMotorDriver.java | 1 + .../iflytop/gd/hardware/service/ServoService.java | 1 - .../gd/hardware/service/StepMotorService.java | 4 + .../java/com/iflytop/gd/hardware/type/MId.java | 11 +- .../hardware/type/StepMotor/DeviceStepMotorId.java | 51 ++++ .../gd/hardware/type/StepMotor/StepMotorMId.java | 34 +++ .../hardware/type/StepMotor/StepMotorRegIndex.java | 56 +++++ .../type/StepMotor/StepMotorSpeedLevel.java | 9 + 32 files changed, 523 insertions(+), 172 deletions(-) create mode 100644 src/main/java/com/iflytop/gd/hardware/config/StepMotorConfig.java delete mode 100644 src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java create mode 100644 src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorHelper.java delete mode 100644 src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java delete mode 100644 src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java delete mode 100644 src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java create mode 100644 src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java create mode 100644 src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java create mode 100644 src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java create mode 100644 src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java 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/DeviceStepMotorId.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java deleted file mode 100644 index ad56364..0000000 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; - - -public enum DeviceStepMotorId { - door(StepMotorMId.DOOR_MOTOR_MID, "门"), - shake_motor(StepMotorMId.SHAKE_MOTOR_MID, "摇匀电机"), - tray_motor(StepMotorMId.TRAY_MOTOR_MID, "托盘电机"), - gantry_x(StepMotorMId.HBOT_X_MOTOR_MID, "龙门架X轴"), - gantry_y(StepMotorMId.HBOT_Y_MOTOR_MID, "龙门架Y轴"), - gantry_z(StepMotorMId.HBOT_Z_MOTOR_MID, "龙门架Z轴"), - heater_motor_1(StepMotorMId.HEATER_1_MOTOR_MID, "加热位顶升电机1"), - heater_motor_2(StepMotorMId.HEATER_2_MOTOR_MID, "加热位顶升电机2"), - heater_motor_3(StepMotorMId.HEATER_3_MOTOR_MID, "加热位顶升电机3"), - heater_motor_4(StepMotorMId.HEATER_4_MOTOR_MID, "加热位顶升电机4"), - heater_motor_5(StepMotorMId.HEATER_5_MOTOR_MID, "加热位顶升电机5"), - heater_motor_6(StepMotorMId.HEATER_6_MOTOR_MID, "加热位顶升电机6"), - acid_pump_1(StepMotorMId.ACID_PUMP_1_MOTOR_MID, "加酸泵电机1"), - acid_pump_2(StepMotorMId.ACID_PUMP_2_MOTOR_MID, "加酸泵电机2"), - acid_pump_3(StepMotorMId.ACID_PUMP_3_MOTOR_MID, "加酸泵电机3"), - acid_pump_4(StepMotorMId.ACID_PUMP_4_MOTOR_MID, "加酸泵电机4"), - acid_pump_5(StepMotorMId.ACID_PUMP_5_MOTOR_MID, "加酸泵电机5"), - acid_pump_6(StepMotorMId.ACID_PUMP_6_MOTOR_MID, "加酸泵电机6"), - acid_pump_7(StepMotorMId.ACID_PUMP_7_MOTOR_MID, "加酸泵电机7"), - acid_pump_8(StepMotorMId.ACID_PUMP_8_MOTOR_MID, "加酸泵电机8"), - ; - - private StepMotorMId stepMotorMId; - private String description; - - public StepMotorMId getStepMotorMId() { - return stepMotorMId; - } - - public String getDescription() { - return description; - } - - DeviceStepMotorId(StepMotorMId stepMotorMId, String description) { - this.stepMotorMId = stepMotorMId; - this.description = description; - } - - public static DeviceStepMotorId getById(StepMotorMId stepMotorMId) { - for (DeviceStepMotorId deviceStepMotorId : DeviceStepMotorId.values()) { - if (deviceStepMotorId.getStepMotorMId() == stepMotorMId) { - return deviceStepMotorId; - } - } - return null; - } -} 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/StepMotorMId.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java deleted file mode 100644 index 8f42789..0000000 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; - -import com.iflytop.gd.hardware.type.MId; -import org.springframework.util.Assert; - -public enum StepMotorMId { - DOOR_MOTOR_MID(MId.DoorM), - SHAKE_MOTOR_MID(MId.ShakeM), - TRAY_MOTOR_MID(MId.CapStorageM), - DUAL_ROBOT_AXIS1_MOTOR_MID(MId.DualRobotAxis1M), - DUAL_ROBOT_AXIS2_MOTOR_MID(MId.DualRobotAxis2M), - HBOT_X_MOTOR_MID(MId.HBotXM), - HBOT_Y_MOTOR_MID(MId.HBotYM), - HBOT_Z_MOTOR_MID(MId.HBotZM), - HEATER_1_MOTOR_MID(MId.Heater1M), - HEATER_2_MOTOR_MID(MId.Heater2M), - HEATER_3_MOTOR_MID(MId.Heater3M), - HEATER_4_MOTOR_MID(MId.Heater4M), - HEATER_5_MOTOR_MID(MId.Heater5M), - HEATER_6_MOTOR_MID(MId.Heater6M), - ACID_PUMP_1_MOTOR_MID(MId.AcidPump1M), - ACID_PUMP_2_MOTOR_MID(MId.AcidPump2M), - ACID_PUMP_3_MOTOR_MID(MId.AcidPump3M), - ACID_PUMP_4_MOTOR_MID(MId.AcidPump4M), - ACID_PUMP_5_MOTOR_MID(MId.AcidPump5M), - ACID_PUMP_6_MOTOR_MID(MId.AcidPump6M), - ACID_PUMP_7_MOTOR_MID(MId.AcidPump7M), - ACID_PUMP_8_MOTOR_MID(MId.AcidPump8M), - ; - final public MId mid; - - StepMotorMId(MId mid) { - this.mid = mid; - } -} diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java deleted file mode 100644 index 5338084..0000000 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; - -import com.iflytop.gd.hardware.type.RegIndex; - -public enum StepMotorRegIndex { - // kreg_module_version(RegIndex.kreg_module_version), // 模块版本 - // kreg_module_type(RegIndex.kreg_module_type), // 模块类型 - // kreg_module_status(RegIndex.kreg_module_status), // 0idle,1busy,2error - // kreg_module_errorcode(RegIndex.kreg_module_errorcode), // inited_flag - /*********************************************************************************************************************** - * step_motor * - ***********************************************************************************************************************/ - kreg_step_motor_pos(RegIndex.kreg_step_motor_pos), // 机器人x坐标 - kreg_step_motor_is_enable(RegIndex.kreg_step_motor_is_enable), // 是否使能 - kreg_step_motor_dpos(RegIndex.kreg_step_motor_dpos), // 执行完上一条指令后的相对位移 - kreg_step_motor_has_move_zero(RegIndex.kreg_step_motor_has_move_zero), // 是否已经移动到零点 - kreg_step_motor_shaft(RegIndex.kreg_step_motor_shaft), // x轴是否反转 - kreg_step_motor_one_circle_pulse(RegIndex.kreg_step_motor_one_circle_pulse), // x轴一圈脉冲数 - kreg_step_motor_one_circle_pulse_denominator(RegIndex.kreg_step_motor_one_circle_pulse_denominator), // 设置一圈脉冲数的分母 - kreg_step_motor_default_velocity(RegIndex.kreg_step_motor_default_velocity), // 默认速度 - kreg_step_motor_low_velocity(RegIndex.kreg_step_motor_low_velocity), - kreg_step_motor_mid_velocity(RegIndex.kreg_step_motor_mid_velocity), - kreg_step_motor_high_velocity(RegIndex.kreg_step_motor_high_velocity), - kreg_step_motor_ihold(RegIndex.kreg_step_motor_ihold), // 步进电机电流配置 - kreg_step_motor_irun(RegIndex.kreg_step_motor_irun), // 步进电机电流配置 - kreg_step_motor_iholddelay(RegIndex.kreg_step_motor_iholddelay), // 步进电机电流配置 - kreg_step_motor_iglobalscaler(RegIndex.kreg_step_motor_iglobalscaler), // 步进电机电流配置 - kreg_step_motor_mres(RegIndex.kreg_step_motor_mres), // 步进电机电流配置 - - kreg_step_motor_run_to_zero_speed(RegIndex.kreg_step_motor_run_to_zero_speed), // 回零速度 - kreg_step_motor_look_zero_edge_speed(RegIndex.kreg_step_motor_look_zero_edge_speed), // 找零边缘速度 - kreg_step_motor_max_d(RegIndex.kreg_step_motor_max_d), // 最大限制距离 - kreg_step_motor_min_d(RegIndex.kreg_step_motor_min_d), // 最小限制距离 - kreg_step_motor_in_debug_mode(RegIndex.kreg_step_motor_in_debug_mode), // 驱动器处于调试模式 - kreg_step_motor_vstart(RegIndex.kreg_step_motor_vstart), // a1起作用的速度 - kreg_step_motor_a1(RegIndex.kreg_step_motor_a1), // - kreg_step_motor_amax(RegIndex.kreg_step_motor_amax), // - kreg_step_motor_v1(RegIndex.kreg_step_motor_v1), // - kreg_step_motor_dmax(RegIndex.kreg_step_motor_dmax), // - kreg_step_motor_d1(RegIndex.kreg_step_motor_d1), // - kreg_step_motor_vstop(RegIndex.kreg_step_motor_vstop), // - kreg_step_motor_tzerowait(RegIndex.kreg_step_motor_tzerowait), // - kreg_step_motor_enc_resolution(RegIndex.kreg_step_motor_enc_resolution), // 编码器分辨率 1000,1024,4000,4096,16384 - kreg_step_motor_enable_enc(RegIndex.kreg_step_motor_enable_enc), // - kreg_step_motor_dzero_pos(RegIndex.kreg_step_motor_dzero_pos), // 驱动器处于调试模式 - kret_step_motor_pos_devi_tolerance(RegIndex.kret_step_motor_pos_devi_tolerance), // 位置偏差容忍度 - kret_step_motor_io_trigger_append_distance(RegIndex.kret_step_motor_io_trigger_append_distance), // 移动到io时,附加的距离 - - - ; - public final RegIndex regIndex; - - StepMotorRegIndex(RegIndex regIndex) { - this.regIndex = regIndex; - } -} diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java deleted file mode 100644 index a981b6e..0000000 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.iflytop.gd.hardware.drivers.StepMotorDriver; - -public enum StepMotorSpeedLevel { - DEFAULT, - LOW, - MID, - HIGH, - ; -} 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/type/StepMotor/DeviceStepMotorId.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java new file mode 100644 index 0000000..c0c916f --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java @@ -0,0 +1,51 @@ +package com.iflytop.gd.hardware.type.StepMotor; + + +public enum DeviceStepMotorId { + door(StepMotorMId.DOOR_MOTOR_MID, "门"), + shake_motor(StepMotorMId.SHAKE_MOTOR_MID, "摇匀电机"), + tray_motor(StepMotorMId.TRAY_MOTOR_MID, "托盘电机"), + gantry_x(StepMotorMId.HBOT_X_MOTOR_MID, "龙门架X轴"), + gantry_y(StepMotorMId.HBOT_Y_MOTOR_MID, "龙门架Y轴"), + gantry_z(StepMotorMId.HBOT_Z_MOTOR_MID, "龙门架Z轴"), + heater_motor_1(StepMotorMId.HEATER_1_MOTOR_MID, "加热位顶升电机1"), + heater_motor_2(StepMotorMId.HEATER_2_MOTOR_MID, "加热位顶升电机2"), + heater_motor_3(StepMotorMId.HEATER_3_MOTOR_MID, "加热位顶升电机3"), + heater_motor_4(StepMotorMId.HEATER_4_MOTOR_MID, "加热位顶升电机4"), + heater_motor_5(StepMotorMId.HEATER_5_MOTOR_MID, "加热位顶升电机5"), + heater_motor_6(StepMotorMId.HEATER_6_MOTOR_MID, "加热位顶升电机6"), + acid_pump_1(StepMotorMId.ACID_PUMP_1_MOTOR_MID, "加酸泵电机1"), + acid_pump_2(StepMotorMId.ACID_PUMP_2_MOTOR_MID, "加酸泵电机2"), + acid_pump_3(StepMotorMId.ACID_PUMP_3_MOTOR_MID, "加酸泵电机3"), + acid_pump_4(StepMotorMId.ACID_PUMP_4_MOTOR_MID, "加酸泵电机4"), + acid_pump_5(StepMotorMId.ACID_PUMP_5_MOTOR_MID, "加酸泵电机5"), + acid_pump_6(StepMotorMId.ACID_PUMP_6_MOTOR_MID, "加酸泵电机6"), + acid_pump_7(StepMotorMId.ACID_PUMP_7_MOTOR_MID, "加酸泵电机7"), + acid_pump_8(StepMotorMId.ACID_PUMP_8_MOTOR_MID, "加酸泵电机8"), + ; + + private StepMotorMId stepMotorMId; + private String description; + + public StepMotorMId getStepMotorMId() { + return stepMotorMId; + } + + public String getDescription() { + return description; + } + + DeviceStepMotorId(StepMotorMId stepMotorMId, String description) { + this.stepMotorMId = stepMotorMId; + this.description = description; + } + + public static DeviceStepMotorId getById(StepMotorMId stepMotorMId) { + for (DeviceStepMotorId deviceStepMotorId : DeviceStepMotorId.values()) { + if (deviceStepMotorId.getStepMotorMId() == stepMotorMId) { + return deviceStepMotorId; + } + } + return null; + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java new file mode 100644 index 0000000..868b9bd --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java @@ -0,0 +1,34 @@ +package com.iflytop.gd.hardware.type.StepMotor; + +import com.iflytop.gd.hardware.type.MId; + +public enum StepMotorMId { + DOOR_MOTOR_MID(MId.DoorM), + SHAKE_MOTOR_MID(MId.ShakeM), + TRAY_MOTOR_MID(MId.CapStorageM), + DUAL_ROBOT_AXIS1_MOTOR_MID(MId.DualRobotAxis1M), + DUAL_ROBOT_AXIS2_MOTOR_MID(MId.DualRobotAxis2M), + HBOT_X_MOTOR_MID(MId.HBotXM), + HBOT_Y_MOTOR_MID(MId.HBotYM), + HBOT_Z_MOTOR_MID(MId.HBotZM), + HEATER_1_MOTOR_MID(MId.Heater1M), + HEATER_2_MOTOR_MID(MId.Heater2M), + HEATER_3_MOTOR_MID(MId.Heater3M), + HEATER_4_MOTOR_MID(MId.Heater4M), + HEATER_5_MOTOR_MID(MId.Heater5M), + HEATER_6_MOTOR_MID(MId.Heater6M), + ACID_PUMP_1_MOTOR_MID(MId.AcidPump1M), + ACID_PUMP_2_MOTOR_MID(MId.AcidPump2M), + ACID_PUMP_3_MOTOR_MID(MId.AcidPump3M), + ACID_PUMP_4_MOTOR_MID(MId.AcidPump4M), + ACID_PUMP_5_MOTOR_MID(MId.AcidPump5M), + ACID_PUMP_6_MOTOR_MID(MId.AcidPump6M), + ACID_PUMP_7_MOTOR_MID(MId.AcidPump7M), + ACID_PUMP_8_MOTOR_MID(MId.AcidPump8M), + ; + final public MId mid; + + StepMotorMId(MId mid) { + this.mid = mid; + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java new file mode 100644 index 0000000..8d25962 --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java @@ -0,0 +1,56 @@ +package com.iflytop.gd.hardware.type.StepMotor; + +import com.iflytop.gd.hardware.type.RegIndex; + +public enum StepMotorRegIndex { + // kreg_module_version(RegIndex.kreg_module_version), // 模块版本 + // kreg_module_type(RegIndex.kreg_module_type), // 模块类型 + // kreg_module_status(RegIndex.kreg_module_status), // 0idle,1busy,2error + // kreg_module_errorcode(RegIndex.kreg_module_errorcode), // inited_flag + /*********************************************************************************************************************** + * step_motor * + ***********************************************************************************************************************/ + kreg_step_motor_pos(RegIndex.kreg_step_motor_pos), // 机器人x坐标 + kreg_step_motor_is_enable(RegIndex.kreg_step_motor_is_enable), // 是否使能 + kreg_step_motor_dpos(RegIndex.kreg_step_motor_dpos), // 执行完上一条指令后的相对位移 + kreg_step_motor_has_move_zero(RegIndex.kreg_step_motor_has_move_zero), // 是否已经移动到零点 + kreg_step_motor_shaft(RegIndex.kreg_step_motor_shaft), // x轴是否反转 + kreg_step_motor_one_circle_pulse(RegIndex.kreg_step_motor_one_circle_pulse), // x轴一圈脉冲数 + kreg_step_motor_one_circle_pulse_denominator(RegIndex.kreg_step_motor_one_circle_pulse_denominator), // 设置一圈脉冲数的分母 + kreg_step_motor_default_velocity(RegIndex.kreg_step_motor_default_velocity), // 默认速度 + kreg_step_motor_low_velocity(RegIndex.kreg_step_motor_low_velocity), + kreg_step_motor_mid_velocity(RegIndex.kreg_step_motor_mid_velocity), + kreg_step_motor_high_velocity(RegIndex.kreg_step_motor_high_velocity), + kreg_step_motor_ihold(RegIndex.kreg_step_motor_ihold), // 步进电机电流配置 + kreg_step_motor_irun(RegIndex.kreg_step_motor_irun), // 步进电机电流配置 + kreg_step_motor_iholddelay(RegIndex.kreg_step_motor_iholddelay), // 步进电机电流配置 + kreg_step_motor_iglobalscaler(RegIndex.kreg_step_motor_iglobalscaler), // 步进电机电流配置 + kreg_step_motor_mres(RegIndex.kreg_step_motor_mres), // 步进电机电流配置 + + kreg_step_motor_run_to_zero_speed(RegIndex.kreg_step_motor_run_to_zero_speed), // 回零速度 + kreg_step_motor_look_zero_edge_speed(RegIndex.kreg_step_motor_look_zero_edge_speed), // 找零边缘速度 + kreg_step_motor_max_d(RegIndex.kreg_step_motor_max_d), // 最大限制距离 + kreg_step_motor_min_d(RegIndex.kreg_step_motor_min_d), // 最小限制距离 + kreg_step_motor_in_debug_mode(RegIndex.kreg_step_motor_in_debug_mode), // 驱动器处于调试模式 + kreg_step_motor_vstart(RegIndex.kreg_step_motor_vstart), // a1起作用的速度 + kreg_step_motor_a1(RegIndex.kreg_step_motor_a1), // + kreg_step_motor_amax(RegIndex.kreg_step_motor_amax), // + kreg_step_motor_v1(RegIndex.kreg_step_motor_v1), // + kreg_step_motor_dmax(RegIndex.kreg_step_motor_dmax), // + kreg_step_motor_d1(RegIndex.kreg_step_motor_d1), // + kreg_step_motor_vstop(RegIndex.kreg_step_motor_vstop), // + kreg_step_motor_tzerowait(RegIndex.kreg_step_motor_tzerowait), // + kreg_step_motor_enc_resolution(RegIndex.kreg_step_motor_enc_resolution), // 编码器分辨率 1000,1024,4000,4096,16384 + kreg_step_motor_enable_enc(RegIndex.kreg_step_motor_enable_enc), // + kreg_step_motor_dzero_pos(RegIndex.kreg_step_motor_dzero_pos), // 驱动器处于调试模式 + kret_step_motor_pos_devi_tolerance(RegIndex.kret_step_motor_pos_devi_tolerance), // 位置偏差容忍度 + kret_step_motor_io_trigger_append_distance(RegIndex.kret_step_motor_io_trigger_append_distance), // 移动到io时,附加的距离 + + + ; + public final RegIndex regIndex; + + StepMotorRegIndex(RegIndex regIndex) { + this.regIndex = regIndex; + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java new file mode 100644 index 0000000..5a4c781 --- /dev/null +++ b/src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java @@ -0,0 +1,9 @@ +package com.iflytop.gd.hardware.type.StepMotor; + +public enum StepMotorSpeedLevel { + DEFAULT, + LOW, + MID, + HIGH, + ; +}