sige 1 year ago
parent
commit
d99eb2c183
  1. 3
      src/main/java/a8k/A8kApplication.java
  2. 34
      src/main/java/a8k/appbean/ecode/AppRet.java
  3. 5
      src/main/java/a8k/base_hardware/A8kCanBusService.java
  4. 16
      src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java
  5. 1
      src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java
  6. 62
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

3
src/main/java/a8k/A8kApplication.java

@ -7,9 +7,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice @ControllerAdvice
public class A8kApplication { public class A8kApplication {

34
src/main/java/a8k/appbean/ecode/AppRet.java

@ -7,7 +7,7 @@ import a8k.appbean.HardwareException;
public class AppRet<T> { public class AppRet<T> {
boolean suc;
boolean success = false;
AppRetEcodeInfo ecode; AppRetEcodeInfo ecode;
T data; T data;
long timestamp;//接口请求时间 long timestamp;//接口请求时间
@ -17,8 +17,8 @@ public class AppRet<T> {
this.timestamp = System.currentTimeMillis(); this.timestamp = System.currentTimeMillis();
} }
public boolean isSuc() {
return suc;
public boolean isSuccess() {
return success;
} }
public long getTimestamp() { public long getTimestamp() {
@ -40,8 +40,8 @@ public class AppRet<T> {
public static <T> AppRet<T> success(T data) { public static <T> AppRet<T> success(T data) {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
r.suc = true;
r.ecode = null;
r.success = true;
r.ecode = null;
r.data = data; r.data = data;
return r; return r;
} }
@ -49,32 +49,32 @@ public class AppRet<T> {
public static <T> AppRet<T> success() { public static <T> AppRet<T> success() {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
r.suc = true;
r.ecode = null;
r.success = true;
r.ecode = null;
r.data = null; r.data = null;
return r; return r;
} }
public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid, CmdId cmd) { public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid, CmdId cmd) {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
r.suc = false;
r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd);
r.success = false;
r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd);
r.data = null; r.data = null;
return r; return r;
} }
public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid) { public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid) {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
r.suc = false;
r.ecode = new AppRetEcodeInfo(errorCode, mid, null);
r.success = false;
r.ecode = new AppRetEcodeInfo(errorCode, mid, null);
r.data = null; r.data = null;
return r; return r;
} }
public static <T> AppRet<T> fail(A8kEcode errorCode) { public static <T> AppRet<T> fail(A8kEcode errorCode) {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
r.suc = false;
r.ecode = new AppRetEcodeInfo(errorCode, null, null);
r.success = false;
r.ecode = new AppRetEcodeInfo(errorCode, null, null);
r.data = null; r.data = null;
return r; return r;
} }
@ -88,13 +88,13 @@ public class AppRet<T> {
AppRet<T> r = new AppRet<>(); AppRet<T> r = new AppRet<>();
if (e instanceof HardwareException hexcep) { if (e instanceof HardwareException hexcep) {
r.suc = false;
r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId());
r.success = false;
r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId());
r.data = null; r.data = null;
r.traceInfo = trace; r.traceInfo = trace;
} else { } else {
r.suc = false;
r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null);
r.success = false;
r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null);
r.data = null; r.data = null;
r.traceInfo = trace; r.traceInfo = trace;
} }

5
src/main/java/a8k/base_hardware/A8kCanBusService.java

@ -161,6 +161,7 @@ public class A8kCanBusService {
public A8kPacket codeScanerReadScanerResult(MId id) throws HardwareException { public A8kPacket codeScanerReadScanerResult(MId id) throws HardwareException {
return callcmd(id.toInt(), CmdId.code_scaner_read_scaner_result.toInt()); return callcmd(id.toInt(), CmdId.code_scaner_read_scaner_result.toInt());
} }
// //
// module opeation // module opeation
// //
@ -294,9 +295,9 @@ public class A8kCanBusService {
callcmd(id.toInt(), CmdId.step_motor_active_cfg.toInt()); callcmd(id.toInt(), CmdId.step_motor_active_cfg.toInt());
} }
public int stepMotorReadIoState(MId id) throws HardwareException {
public Boolean stepMotorReadIoState(MId id) throws HardwareException {
var packet = callcmd(id.toInt(), CmdId.step_motor_read_io_state.toInt()); var packet = callcmd(id.toInt(), CmdId.step_motor_read_io_state.toInt());
return packet.getContentI32(0);
return packet.getContentI32(0) != 0;
} }
public void stepMotorEasyMoveToEndPoint(MId id) throws HardwareException { public void stepMotorEasyMoveToEndPoint(MId id) throws HardwareException {

16
src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java

@ -35,7 +35,7 @@ public class DeviceInitializationCtrlService {
@PostMapping("/api/DeviceInitializationCtrlService/initializeDevice") @PostMapping("/api/DeviceInitializationCtrlService/initializeDevice")
@ResponseBody @ResponseBody
public AppRet initializeDevice() throws HardwareException, InterruptedException {
public AppRet<Object> initializeDevice() throws HardwareException, InterruptedException {
logger.info("Initializing device ..."); logger.info("Initializing device ...");
boolean initSuc = false; boolean initSuc = false;
try { try {
@ -47,25 +47,25 @@ public class DeviceInitializationCtrlService {
* 清空耗材 * 清空耗材
*/ */
AppRet ecode;
AppRet<Object> ecode;
//硬件光电初始化 //硬件光电初始化
logger.info("hardwareStaticInit"); logger.info("hardwareStaticInit");
ecode = hardwareStaticInit(); ecode = hardwareStaticInit();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode; return ecode;
} }
//检查设备状态 //检查设备状态
logger.info("checkDeviceState"); logger.info("checkDeviceState");
ecode = checkDeviceState(); ecode = checkDeviceState();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode; return ecode;
} }
// 复位设备 // 复位设备
logger.info("moveMotorToZero"); logger.info("moveMotorToZero");
ecode = moveMotorToZero(); ecode = moveMotorToZero();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode; return ecode;
} }
// 清空耗材 // 清空耗材
@ -91,7 +91,7 @@ public class DeviceInitializationCtrlService {
} }
private AppRet hardwareStaticInit() throws HardwareException, InterruptedException {
private AppRet<Object> hardwareStaticInit() throws HardwareException, InterruptedException {
/* /*
* 硬件初始化: * 硬件初始化:
* 1.使能所有舵机 * 1.使能所有舵机
@ -111,7 +111,7 @@ public class DeviceInitializationCtrlService {
return AppRet.success(); return AppRet.success();
} }
private AppRet checkDeviceState() throws HardwareException {
private AppRet<Object> checkDeviceState() throws HardwareException {
//试管平移通道是否有障碍 //试管平移通道是否有障碍
if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) { if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) {
logger.warn("THChInterPPS or THChOuterPPS is trigger"); logger.warn("THChInterPPS or THChOuterPPS is trigger");
@ -151,7 +151,7 @@ public class DeviceInitializationCtrlService {
return AppRet.success(); return AppRet.success();
} }
private AppRet moveMotorToZero() throws HardwareException, InterruptedException {
private AppRet<Object> moveMotorToZero() throws HardwareException, InterruptedException {
//进出料初始化 //进出料初始化
// canBus.stepMotorEasyMoveToZero(MId.FeedingModInfeedM); // canBus.stepMotorEasyMoveToZero(MId.FeedingModInfeedM);

1
src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java

@ -1,6 +1,5 @@
package a8k.service.hardware; package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.MId; import a8k.a8k_can_protocol.MId;
import a8k.appbean.HardwareException; import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet; import a8k.appbean.ecode.AppRet;

62
src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

@ -2,6 +2,7 @@ package a8k.service.hardware;
import a8k.a8k_can_protocol.*; import a8k.a8k_can_protocol.*;
import a8k.appbean.HardwareException; import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService; import a8k.base_hardware.A8kCanBusService;
import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.A8kTubeInfoDao;
import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao; import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao;
@ -40,25 +41,53 @@ public class MotorTubeRackMoveCtrlService {
@Resource @Resource
private CommonHardwareOpeartion comHardwareOpear; private CommonHardwareOpeartion comHardwareOpear;
public void setEnable(Boolean enable) throws HardwareException {
comHardwareOpear.enableAllMotor(enable);
}
/*=========================================================================================
* 私有方法
*========================================================================================*/
public void stop() throws HardwareException {
comHardwareOpear.forceStopAllMOtor();
/**
* 移动试管架到指定位置
* @param pos 指定位置
* @throws HardwareException 硬件异常
* @throws InterruptedException 打断异常
*/
private void moveTubeRackTo(int pos) throws HardwareException, InterruptedException {
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos);
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
} }
//
// 电机基础控制
//
/*=========================================================================================
* 公共方法
*========================================================================================*/
/**
* 模块使能
* @param enable 1:使能 0:禁用
* @throws HardwareException 硬件异常
*/
public AppRet modGroupEnable(Boolean enable) throws HardwareException {
comHardwareOpear.enableAllMotor(enable);
return AppRet.success();
}
/** /**
* 电机归零设备初始化时调用特点是直接调用MoveToZero
* 模块停止
* @throws HardwareException 硬件异常 * @throws HardwareException 硬件异常
* @throws InterruptedException 打断异常
*/ */
public void moveToZeroWhenDeviceSetup() throws HardwareException, InterruptedException {
public void modGroupStop() throws HardwareException {
comHardwareOpear.forceStopAllMOtor();
}
public void modGroupMoveToZero() throws HardwareException, InterruptedException {
Boolean state = canBus.stepMotorReadIoState(MId.ShakeModGripperZM);
if (!state) {
// return AppRet;
}
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
@ -66,6 +95,7 @@ public class MotorTubeRackMoveCtrlService {
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
} }
/** /**
* 电机归零电机运行时归零特点是通过归零判断设备是否丢步 * 电机归零电机运行时归零特点是通过归零判断设备是否丢步
* @throws HardwareException * @throws HardwareException
@ -93,10 +123,7 @@ public class MotorTubeRackMoveCtrlService {
if (Math.abs(dval - distance) > params.getHorizontalMotorLostStepThresholdVal()) { if (Math.abs(dval - distance) > params.getHorizontalMotorLostStepThresholdVal()) {
throw new HardwareException(MId.FeedingModXM, A8kEcode.MotorLostStep); throw new HardwareException(MId.FeedingModXM, A8kEcode.MotorLostStep);
} }
} }
// //
// 试管架移动 // 试管架移动
// //
@ -105,6 +132,10 @@ public class MotorTubeRackMoveCtrlService {
* 移动试管架到入口位置 * 移动试管架到入口位置
*/ */
public void moveTubeRackToEnterPos() throws HardwareException, InterruptedException { public void moveTubeRackToEnterPos() throws HardwareException, InterruptedException {
/*
* 1. 先控制试管架夹紧机构复位让开通道
* 2. 移动到入口位置
*/
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
@ -116,6 +147,9 @@ public class MotorTubeRackMoveCtrlService {
* 移动试管架到出口位置 * 移动试管架到出口位置
*/ */
public void moveTubeRackToExitPos() throws HardwareException, InterruptedException { public void moveTubeRackToExitPos() throws HardwareException, InterruptedException {
/*
* 1. 先控制试管架夹紧机构复位让开通道
*/
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());

Loading…
Cancel
Save