Browse Source

修改默认位置

添加config
master
HSZ_HeSongZhen 3 months ago
parent
commit
6d49a60042
  1. 2
      src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java
  2. 2
      src/main/java/com/iflytop/gd/hardware/command/handlers/AcidPumpHandler.java
  3. 1
      src/main/java/com/iflytop/gd/hardware/command/handlers/ClawHandler.java
  4. 4
      src/main/java/com/iflytop/gd/hardware/command/handlers/DoorHandler.java
  5. 2
      src/main/java/com/iflytop/gd/hardware/command/handlers/HBotHandler.java
  6. 2
      src/main/java/com/iflytop/gd/hardware/command/handlers/HeaterMotorHandler.java
  7. 2
      src/main/java/com/iflytop/gd/hardware/command/handlers/ShakeMotorHandler.java
  8. 2
      src/main/java/com/iflytop/gd/hardware/command/handlers/TrayMotorHandler.java
  9. 260
      src/main/java/com/iflytop/gd/hardware/config/StepMotorConfig.java
  10. 2
      src/main/java/com/iflytop/gd/hardware/constants/ActionOvertimeConstant.java
  11. 2
      src/main/java/com/iflytop/gd/hardware/controller/ServoController.java
  12. 4
      src/main/java/com/iflytop/gd/hardware/controller/StepMotorController.java
  13. 1
      src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java
  14. 1
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/AcidPumpDriver.java
  15. 1
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DoorDriver.java
  16. 1
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HBotDriver.java
  17. 1
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/HeaterMotorDriver.java
  18. 3
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/ShakeMotorDriver.java
  19. 3
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorCtrlDriver.java
  20. 81
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorHelper.java
  21. 1
      src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/TrayMotorDriver.java
  22. 1
      src/main/java/com/iflytop/gd/hardware/service/ServoService.java
  23. 4
      src/main/java/com/iflytop/gd/hardware/service/StepMotorService.java
  24. 11
      src/main/java/com/iflytop/gd/hardware/type/MId.java
  25. 2
      src/main/java/com/iflytop/gd/hardware/type/StepMotor/DeviceStepMotorId.java
  26. 3
      src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorMId.java
  27. 2
      src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorRegIndex.java
  28. 2
      src/main/java/com/iflytop/gd/hardware/type/StepMotor/StepMotorSpeedLevel.java

2
src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java

@ -75,7 +75,7 @@ public class DeviceParamConfigService extends ServiceImpl<DeviceParamConfigMappe
return Arrays.stream(MId.values())
.map(e -> new ModuleIdVO(
e.name(), // 枚举常量名
e.name // 描述字段
e.description // 描述字段
))
.collect(Collectors.toList());
}

2
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;

1
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;

4
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;

2
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;

2
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;

2
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;

2
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;

260
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<StepMotorMId, Double> 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<StepMotorMId, Integer> 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<StepMotorMId, Double> 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<StepMotorMId, Double> 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<StepMotorMId, Double> 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<StepMotorMId, Boolean> 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);
}
}
}

2
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;

2
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;

4
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;

1
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;

1
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;

1
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;

1
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;

1
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;

3
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

3
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;

81
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;
}
}

1
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;

1
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;

4
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;

11
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());

2
src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/DeviceStepMotorId.java → 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 {

3
src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java → 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),

2
src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorRegIndex.java → 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;

2
src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorSpeedLevel.java → 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,
Loading…
Cancel
Save