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.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class A8kApplication {

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

@ -7,7 +7,7 @@ import a8k.appbean.HardwareException;
public class AppRet<T> {
boolean suc;
boolean success = false;
AppRetEcodeInfo ecode;
T data;
long timestamp;//接口请求时间
@ -17,8 +17,8 @@ public class AppRet<T> {
this.timestamp = System.currentTimeMillis();
}
public boolean isSuc() {
return suc;
public boolean isSuccess() {
return success;
}
public long getTimestamp() {
@ -40,8 +40,8 @@ public class AppRet<T> {
public static <T> AppRet<T> success(T data) {
AppRet<T> r = new AppRet<>();
r.suc = true;
r.ecode = null;
r.success = true;
r.ecode = null;
r.data = data;
return r;
}
@ -49,32 +49,32 @@ public class AppRet<T> {
public static <T> AppRet<T> success() {
AppRet<T> r = new AppRet<>();
r.suc = true;
r.ecode = null;
r.success = true;
r.ecode = null;
r.data = null;
return r;
}
public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid, CmdId cmd) {
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;
return r;
}
public static <T> AppRet<T> fail(A8kEcode errorCode, MId mid) {
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;
return r;
}
public static <T> AppRet<T> fail(A8kEcode errorCode) {
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;
return r;
}
@ -88,13 +88,13 @@ public class AppRet<T> {
AppRet<T> r = new AppRet<>();
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.traceInfo = trace;
} 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.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 {
return callcmd(id.toInt(), CmdId.code_scaner_read_scaner_result.toInt());
}
//
// module opeation
//
@ -294,9 +295,9 @@ public class A8kCanBusService {
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());
return packet.getContentI32(0);
return packet.getContentI32(0) != 0;
}
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")
@ResponseBody
public AppRet initializeDevice() throws HardwareException, InterruptedException {
public AppRet<Object> initializeDevice() throws HardwareException, InterruptedException {
logger.info("Initializing device ...");
boolean initSuc = false;
try {
@ -47,25 +47,25 @@ public class DeviceInitializationCtrlService {
* 清空耗材
*/
AppRet ecode;
AppRet<Object> ecode;
//硬件光电初始化
logger.info("hardwareStaticInit");
ecode = hardwareStaticInit();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode;
}
//检查设备状态
logger.info("checkDeviceState");
ecode = checkDeviceState();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode;
}
// 复位设备
logger.info("moveMotorToZero");
ecode = moveMotorToZero();
if (!ecode.isSuc()) {
if (!ecode.isSuccess()) {
return ecode;
}
// 清空耗材
@ -91,7 +91,7 @@ public class DeviceInitializationCtrlService {
}
private AppRet hardwareStaticInit() throws HardwareException, InterruptedException {
private AppRet<Object> hardwareStaticInit() throws HardwareException, InterruptedException {
/*
* 硬件初始化:
* 1.使能所有舵机
@ -111,7 +111,7 @@ public class DeviceInitializationCtrlService {
return AppRet.success();
}
private AppRet checkDeviceState() throws HardwareException {
private AppRet<Object> checkDeviceState() throws HardwareException {
//试管平移通道是否有障碍
if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) {
logger.warn("THChInterPPS or THChOuterPPS is trigger");
@ -151,7 +151,7 @@ public class DeviceInitializationCtrlService {
return AppRet.success();
}
private AppRet moveMotorToZero() throws HardwareException, InterruptedException {
private AppRet<Object> moveMotorToZero() throws HardwareException, InterruptedException {
//进出料初始化
// canBus.stepMotorEasyMoveToZero(MId.FeedingModInfeedM);

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

@ -1,6 +1,5 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.MId;
import a8k.appbean.HardwareException;
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.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.service.db.dao.A8kTubeInfoDao;
import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao;
@ -40,25 +41,53 @@ public class MotorTubeRackMoveCtrlService {
@Resource
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 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.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
@ -66,6 +95,7 @@ public class MotorTubeRackMoveCtrlService {
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
}
/**
* 电机归零电机运行时归零特点是通过归零判断设备是否丢步
* @throws HardwareException
@ -93,10 +123,7 @@ public class MotorTubeRackMoveCtrlService {
if (Math.abs(dval - distance) > params.getHorizontalMotorLostStepThresholdVal()) {
throw new HardwareException(MId.FeedingModXM, A8kEcode.MotorLostStep);
}
}
//
// 试管架移动
//
@ -105,6 +132,10 @@ public class MotorTubeRackMoveCtrlService {
* 移动试管架到入口位置
*/
public void moveTubeRackToEnterPos() throws HardwareException, InterruptedException {
/*
* 1. 先控制试管架夹紧机构复位让开通道
* 2. 移动到入口位置
*/
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
@ -116,6 +147,9 @@ public class MotorTubeRackMoveCtrlService {
* 移动试管架到出口位置
*/
public void moveTubeRackToExitPos() throws HardwareException, InterruptedException {
/*
* 1. 先控制试管架夹紧机构复位让开通道
*/
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());

Loading…
Cancel
Save