Browse Source

更新参数

tags/v0
zhaohe 1 year ago
parent
commit
17268b9d46
  1. 1
      src/main/java/a8k/a8k_can_protocol/A8kEcode.java
  2. 2
      src/main/java/a8k/a8k_can_protocol/A8kPacket.java
  3. 49
      src/main/java/a8k/a8k_can_protocol/CmdId.java
  4. 22
      src/main/java/a8k/base_hardware/A8kCanBusService.java
  5. 259
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java
  6. 2
      src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java
  7. BIN
      zhaohe_app.db

1
src/main/java/a8k/a8k_can_protocol/A8kEcode.java

@ -26,6 +26,7 @@ public enum A8kEcode {
MNotInZeroPos(20, "电机没有在零点"),//
TubeXChannelIsNotEmpty(21, "试管架平移通道不为空"),//
TubeTypeNotSupport(22, "试管类型不支持"),//
CmdIdNotSupport(23, "不支持指令"),//
//
// FOR HARDWARE
//

2
src/main/java/a8k/a8k_can_protocol/A8kPacket.java

@ -76,7 +76,7 @@ public class A8kPacket {
}
public int getContentI32(int index) {
return ByteArray.readU16bit(raw, 8 + index * 4);
return ByteArray.read32bit(raw, 8 + index * 4);
}
public String toByteString() {

49
src/main/java/a8k/a8k_can_protocol/CmdId.java

@ -9,11 +9,11 @@ public enum CmdId {
event_bus_reg_change_report(0x0064, "event_bus_reg_change_report"),//
//
module_ping(0x0100, "module_ping"),//
module_get_status(0x0104, "module_get_status"),//
module_get_status(0x0104, "module_get_status", false),//
module_stop(0x0101, "module_stop"),//
module_set_reg(0x0105, "module_set_reg"),//
module_get_reg(0x0106, "module_get_reg"),//
module_get_error(0x010a, "module_get_error"),//
module_get_error(0x010a, "module_get_error", true),//
module_clear_error(0x010b, "module_clear_error"),//
module_active_cfg(0x0110, "module_active_cfg"),//
//
@ -23,7 +23,7 @@ public enum CmdId {
xymotor_move_to_zero(0x0304, "xymotor_move_to_zero"),//
xymotor_read_pos(0x0306, "xymotor_read_pos"),//
xymotor_read_inio_index_in_stm32(0x0307, "xymotor_read_inio_index_in_stm32"),//
xymotor_read_inio(0x0308, "xymotor_read_inio"),//
xymotor_read_inio(0x0308, "xymotor_read_inio", true),//
xymotor_set_pos(0x0309, "xymotor_set_pos"),//
xymotor_motor_move_by_direct(0x030a, "xymotor_motor_move_by_direct"),//
xymotor_read_enc_direct(0x030b, "xymotor_read_enc_direct"),//
@ -78,7 +78,7 @@ public enum CmdId {
step_motor_easy_move_to_io(0x0216, "step_motor_easy_move_to_io"),//
step_motor_stop(0x0228, "step_motor_stop"),//
step_motor_active_cfg(0x0229, "step_motor_active_cfg"),//
step_motor_read_io_state(0x022a, "step_motor_read_io_state"),//
step_motor_read_io_state(0x022a, "step_motor_read_io_state", true),//
step_motor_easy_move_to_end_point(0x022c, "step_motor_easy_move_to_end_point"),//
step_motor_read_tmc5130_status(0x0232, "step_motor_read_tmc5130_status"),//
step_motor_read_tmc5130_state(0x0233, "step_motor_read_tmc5130_state"),//
@ -98,9 +98,9 @@ public enum CmdId {
mini_servo_rotate_with_torque(0x660b, "mini_servo_rotate_with_torque"),//
mini_servo_set_cur_pos(0x660c, "mini_servo_set_cur_pos"),//
//
extboard_read_inio(0x6701, "extboard_read_inio"),//
extboard_read_inio(0x6701, "extboard_read_inio", true),//
extboard_write_outio(0x6702, "extboard_write_outio"),//
extboard_read_muti_inio(0x6703, "extboard_read_muti_inio"),//
extboard_read_muti_inio(0x6703, "extboard_read_muti_inio", true),//
extboard_read_inio_index_in_stm32(0x6704, "extboard_read_inio_index_in_stm32"),//
extboard_read_outio_index_in_stm32(0x6705, "extboard_read_outio_index_in_stm32"),//
extboard_read_outio(0x6706, "extboard_read_outio"),//
@ -140,23 +140,40 @@ public enum CmdId {
public final static int ATTACH_IS_BYTES = 1;
public final static int ATTACH_IS_INT32 = 2;
public int index;
public String chName;
public int cmdAttachType = ATTACH_IS_INT32;
public int receiptAttachType = ATTACH_IS_INT32;
public int index;
public String chName;
public int cmdAttachType = ATTACH_IS_INT32;
public int receiptAttachType = ATTACH_IS_INT32;
public boolean notTrace = false;
public boolean actionCmd = true;
CmdId(int index, String name) {
CmdId(int index, String chname) {
this.index = index;
this.chName = chName;
this.chName = chname;
}
CmdId(int index, String name, int cmdAttachType, int receiptAttachType) {
CmdId(int index, String chname, boolean notTrace) {
this.index = index;
this.chName = chname;
this.notTrace = notTrace;
this.actionCmd = !notTrace;
}
CmdId(int index, String chname, int cmdAttachType, int receiptAttachType) {
this.index = index;
this.chName = chName;
this.chName = chname;
this.cmdAttachType = cmdAttachType;
this.receiptAttachType = receiptAttachType;
}
CmdId(int index, String chname, int cmdAttachType, int receiptAttachType, boolean notTrace) {
this.index = index;
this.chName = chname;
this.cmdAttachType = cmdAttachType;
this.receiptAttachType = receiptAttachType;
this.notTrace = notTrace;
}
public int toInt() {
return index;
@ -185,5 +202,9 @@ public enum CmdId {
return chName;
}
public Boolean eq(Integer index) {
return this.index == index;
}
}

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

@ -208,11 +208,11 @@ public class A8kCanBusService {
}
public void moduleSetReg(MId id, RegIndex regindex, int reg) throws HardwareException {
public void moduleSetReg(MId id, RegIndex regindex, Integer reg) throws HardwareException {
callcmd(id.toInt(), CmdId.module_set_reg.toInt(), regindex.index, reg);
}
public int moduleGetReg(MId id, RegIndex regindex) throws HardwareException {
public Integer moduleGetReg(MId id, RegIndex regindex) throws HardwareException {
var packet = callcmd(id.toInt(), CmdId.module_get_reg.toInt(), regindex.index);
return packet.getContentI32(0);
}
@ -444,7 +444,7 @@ public class A8kCanBusService {
public void waitForMod(MId mid, Integer acitionOvertime) throws InterruptedException, HardwareException {
long startedAt = System.currentTimeMillis();
// Thread.sleep(300);
// CmdId action = lastCmdMap.get(mid);
CmdId action = lastCmdMapGet(mid);
do {
@ -583,12 +583,16 @@ public class A8kCanBusService {
isWaitingReceipt = true;
String txpacket = pack.toByteString();
if (debugFlag && pack.getCmdId() != CmdId.module_get_status.toInt()) {
CmdId cmdid = CmdId.valueOf(pack.getCmdId());
if (cmdid == null) {
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.CmdIdNotSupport);
}
if (debugFlag && !cmdid.notTrace) {
String packstr = pack.toString();
logger.info("Tx:|RAW:{}| {}", txpacket, packstr);
}
if (pack.getCmdId() != CmdId.module_get_status.toInt()) {
if (cmdid.actionCmd) {
lastCmdMapPut(MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()));
}
@ -633,7 +637,13 @@ public class A8kCanBusService {
A8kPacket packet = new A8kPacket(rx);
if (debugFlag && packet.getCmdId() != CmdId.module_get_status.toInt()) {
CmdId cmdid = CmdId.valueOf(packet.getCmdId());
if (cmdid == null) {
logger.warn("Rx packet cmdid not support: {}", packet.getCmdId());
return;
}
if (debugFlag && !cmdid.notTrace) {
logger.info("RX |RAW:{}| {}", s, packet);
}

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

@ -4,15 +4,19 @@ 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;
import com.iflytop.uf.util.UfCommon;
import a8k.utils.*;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
@HardwareService(name = "进出料控制模组")
@HardwareServiceParams(service = MotorTubeRackMoveCtrlService.class)
public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
HardwareParamReader hpReader = new HardwareParamReader(SamplesPreProcessModuleCtrlService.class);
static Logger logger = LoggerFactory.getLogger(MotorTubeRackMoveCtrlService.class);
/**
*
* 主要用来控制试管架的平移动作控制
@ -27,18 +31,70 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* 2. 扫码时试管夹紧夹紧
*/
@Autowired
A8kTubeInfoDao tubeInfoDao;
@Resource
private A8kCanBusService canBus;
@Resource
MotorTubeRackMoveCtrlServiceParameterDao paramDao;
private A8kCanBusService canBus;
@Resource
private CommonHardwareOpeartion comHardwareOpear;
@HardwareServiceParam(name = "超时时间", group = "基础参数")
public Integer getActionOvertime() {
return 10000;
}
@HardwareServiceParam(name = "入料X位置", group = "试管架位置信息")
public Integer getTREnterXPos() {
return -51;
}
// public void setTREnterXPos(Integer val){
// return;
// }
@HardwareServiceParam(name = "出料X位置", group = "试管架位置信息")
public Integer getTRExitXPos() {
return 0;
}
@HardwareServiceParam(name = "试管架扫码X位置", group = "试管架位置信息")
public Integer getTRScanXPos() {
return 0;
}
@HardwareServiceParam(name = "试管扫码位置", group = "试管位置信息")
public Integer getTScanXPos() {
return 0;
}
@HardwareServiceParam(name = "试管高度判断位置", group = "试管位置信息")
public Integer getTAltitJudgXPos() {
return 0;
}
@HardwareServiceParam(name = "试管是否存在判断位置", group = "试管位置信息")
public Integer getTExistJudgXPos() {
return 0;
}
@HardwareServiceParam(name = "试管预处理位置", group = "试管位置信息")
public Integer getTPreProcessXPos() {
return 0;
}
@HardwareServiceParam(name = "试管架孔间距", group = "其他")
public Integer getTubeSpacing() {
return 0;
}
@HardwareServiceParam(name = "扫码舵机转速(0..900)", group = "其他")
public Integer getTubeScanServoTorque() {
return 300;
}
@HardwareServiceParam(name = "试管扫码超时时间", group = "其他")
public Integer getTubeScanOvertime() {
return 1000;
}
/*=========================================================================================
* Overrid
*========================================================================================*/
@ -49,6 +105,7 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* @throws HardwareException 硬件异常
*/
@Override
@HardwareServiceAction(name = "模块使能", group = "基础操作")
public void modGroupEnable(Boolean enable) throws HardwareException {
comHardwareOpear.enableAllMotor(enable);
}
@ -58,26 +115,32 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* @throws HardwareException 硬件异常
*/
@Override
@HardwareServiceAction(name = "模块停止", group = "基础操作")
public void modGroupStop() throws HardwareException {
comHardwareOpear.forceStopAllMOtor();
}
@Override
@HardwareServiceAction(name = "模块归零", group = "基础操作")
public void modGroupMoveToZero() throws HardwareException, InterruptedException {
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
}
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
// if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
// throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
// }
canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, 1);
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, 0);
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, getActionOvertime());
canBus.stepMotorEnable(MId.FeedingModXM, 1);
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM);
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
canBus.waitForMod(MId.FeedingModXM, getActionOvertime());
}
@Override
@HardwareServiceAction(name = "模块快速归零", group = "基础操作")
public void modGroupMoveToZeroQuick() throws HardwareException, InterruptedException {
moveTubeRackTo(0);
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM);
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
canBus.waitForMod(MId.FeedingModXM, getActionOvertime());
}
@ -91,57 +154,108 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* @throws HardwareException 硬件异常
* @throws InterruptedException 打断异常
*/
public void moveTubeRackTo(int pos) throws HardwareException, InterruptedException {
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
}
@HardwareServiceAction(name = "移动到X", group = "模块基础动作")
public void moveTubeRackTo(Integer pos) throws HardwareException, InterruptedException {
// if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
// throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
// }
scanClampModRelease();
canBus.stepMotorEnable(MId.FeedingModXM, 1);
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos);
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
canBus.waitForMod(MId.FeedingModXM, getActionOvertime());
}
/**
* 扫描夹紧机构夹紧
*/
@HardwareServiceAction(name = "扫描夹紧机构夹紧", group = "模块基础动作")
public void scanClampModClamp() throws HardwareException, InterruptedException {
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeClampPos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, 1);
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, 900);
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, getActionOvertime());
}
/**
* 扫描夹紧机构复位
*/
@HardwareServiceAction(name = "扫描夹紧机构复位", group = "模块基础动作")
public void scanClampModRelease() throws HardwareException, InterruptedException {
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos());
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime());
canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, 1);
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, 0);
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, getActionOvertime());
}
/**
* 入料
*/
@HardwareServiceAction(name = "入料", group = "模块基础动作")
public void tryEnterTubeRack(Integer time) throws HardwareException, InterruptedException {
try {
canBus.stepMotorEasyRotate(MId.FeedingModInfeedM, 1);
Thread.sleep(time);
} finally {
canBus.moduleStop(MId.FeedingModInfeedM);
}
}
/**
* 出料
*/
@HardwareServiceAction(name = "出料", group = "模块基础动作")
public void tryEjectTubeRack(Integer time) throws HardwareException, InterruptedException {
try {
canBus.stepMotorEasyRotate(MId.FeedingModOutfeedM, 1);
Thread.sleep(time);
} finally {
canBus.moduleStop(MId.FeedingModOutfeedM);
}
}
@HardwareServiceAction(name = "通过归零读取当前电机位置", group = "模块基础动作")
public AppRet<Integer> readXPosByMoveZero() throws HardwareException, InterruptedException {
canBus.stepMotorEnable(MId.FeedingModXM, 1);
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM);
canBus.waitForMod(MId.FeedingModXM, getActionOvertime());
canBus.stepMotorEnable(MId.FeedingModXM, 0);
return AppRet.success(-canBus.moduleGetReg(MId.FeedingModXM, RegIndex.kreg_step_motor_dpos));
}
/*=========================================================================================
* 片段
*========================================================================================*/
/**
* 移动试管架到入口位置
*/
@HardwareServiceAction(name = "移动<试管架>到入口位置", group = "片段")
public void tubeRackMoveToEnterPos() throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubeRackEnterPos());
moveTubeRackTo(getTREnterXPos());
}
/**
* 移动试管架到出口位置
* 移动<试管架>到出口位置
*/
@HardwareServiceAction(name = "移动<试管架>到出口位置", group = "片段")
public void moveTubeRackToExitPos() throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubeRackExitPos());
moveTubeRackTo(getTRExitXPos());
}
/**
* 移动试管架到试管架扫码位置
* 移动<试管架>到试管架扫码位置
*/
public void moveTubeRackToScanPos() throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubeRackScanCodePos());
private void moveTubeRackToScanPos() throws HardwareException, InterruptedException {
moveTubeRackTo(getTRScanXPos());
}
/**
* 移动试管架到试管架扫码并扫码
* 移动试管架到扫码并扫码
*/
@HardwareServiceAction(name = "扫描试管架编码", group = "片段")
public AppRet<String> moveTubeRackToScanPosAndScan() throws HardwareException, InterruptedException {
String result;
moveTubeRackToScanPos();
@ -152,7 +266,6 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
scanClampModRelease();
return AppRet.success(result);
}
//
// 试管移动
//
@ -161,10 +274,10 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* 移动试管到扫码位置
* @param tubeIndex 试管索引
*/
public AppRet<Object> moveTubeToScanPos(Integer tubeIndex) throws HardwareException, InterruptedException {
var scanPos = paramDao.getTubeScanPos() + tubeIndex * paramDao.getTubeSpacing();
private AppRet<Object> moveTubeToScanPos(Integer tubeIndex) throws HardwareException, InterruptedException {
var scanPos = getTScanXPos() + tubeIndex * getTubeSpacing();
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, scanPos);
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime());
canBus.waitForMod(MId.FeedingModXM, getActionOvertime());
return AppRet.success();
}
@ -172,6 +285,7 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* 移动试管到扫码位置并扫码
* @param tubeIndex 试管索引
*/
@HardwareServiceAction(name = "扫描<试管X>编码", group = "片段")
public AppRet<String> moveTubeToScanPosAndScan(Integer tubeIndex) throws HardwareException, InterruptedException {
var ret = this.moveTubeToScanPos(tubeIndex);
if (!ret.isSuccess()) {return AppRet.fail(ret);}
@ -179,8 +293,8 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
try {
scanClampModClamp();
canBus.codeScanerStartScan(MId.FeedingModScannerMod);
canBus.miniServoRotateWithTorque(MId.ShakeModTubeScanerClampingSV, paramDao.getTubeScanServoTorque());
String result = canBus.codeScanerWaittingForResult(MId.FeedingModScannerMod, paramDao.getTubeScanOvertime());
canBus.miniServoRotateWithTorque(MId.ShakeModTubeScanerClampingSV, getTubeScanServoTorque());
String result = canBus.codeScanerWaittingForResult(MId.FeedingModScannerMod, getTubeScanOvertime());
return AppRet.success(result);
} finally {
canBus.moduleStop(MId.ShakeModTubeScanerClampingSV);
@ -193,66 +307,57 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* 移动试管到试管高低判断位置
* @param tubeIndex 试管索引
*/
public void moveTubeToHeighJudgmentPos(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubeHeighJudgmentPos() + tubeIndex * paramDao.getTubeSpacing());
@HardwareServiceAction(name = "判断<试管N>位置", group = "片段")
public AppRet<Boolean> moveTubeToAltitJudgXPos(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(getTAltitJudgXPos() + tubeIndex * getTubeSpacing());
return AppRet.success(isHighTube());
}
/**
* 移动试管到试管预处理的位置
* @param tubeIndex 试管索引
*/
@HardwareServiceAction(name = "移动<试管N>摇匀位", group = "片段")
public void moveTubeToPreProcessPos(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubePreProcessPos() + tubeIndex * paramDao.getTubeSpacing());
moveTubeRackTo(getTPreProcessXPos() + tubeIndex * getTubeSpacing());
}
/**
* 移动试管到试管有无判断位置
* @param tubeIndex 试管索引
*/
public void moveTubeToExistJudgmentPos(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(paramDao.getTubeExistJudgmentPos() + tubeIndex * paramDao.getTubeSpacing());
}
public void tryEnterTubeRack(Integer time) throws HardwareException, InterruptedException {
try {
canBus.stepMotorEasyRotate(MId.FeedingModInfeedM, 1);
Thread.sleep(time);
} finally {
canBus.moduleStop(MId.FeedingModInfeedM);
}
@HardwareServiceAction(name = "判断<试管N>是否存在", group = "片段")
public AppRet<Boolean> judgeTubeExist(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(getTExistJudgXPos() + tubeIndex * getTubeSpacing());
return AppRet.success(isTubeRackInEnterPos());
}
public void tryEjectTubeRack(Integer time) throws HardwareException, InterruptedException {
try {
canBus.stepMotorEasyRotate(MId.FeedingModOutfeedM, 1);
Thread.sleep(time);
} finally {
canBus.moduleStop(MId.FeedingModOutfeedM);
}
}
//
// 状态
//
public AppRet<Boolean> isTubeRackInEnterPos() throws HardwareException {
return AppRet.success(canBus.getIOState(IOId.InfeedPPS));
@HardwareServiceStatus(name = "入口光电")
public Boolean isTubeRackInEnterPos() throws HardwareException {
return canBus.getIOState(IOId.InfeedPPS);
}
public AppRet<Boolean> isTubeRackInExitPos() throws HardwareException {
return AppRet.success(canBus.getIOState(IOId.OutfeedPPS));
@HardwareServiceStatus(name = "出口光电")
public Boolean isTubeRackInExitPos() throws HardwareException {
return canBus.getIOState(IOId.OutfeedPPS);
}
public AppRet<Boolean> isHighTube() throws HardwareException {
return AppRet.success(canBus.getIOState(IOId.TubeHeightPPS));
@HardwareServiceStatus(name = "高低判读光电")
public Boolean isHighTube() throws HardwareException {
return canBus.getIOState(IOId.TubeHeightPPS);
}
public AppRet<Boolean> getTHchOuterPPS() throws HardwareException {
return AppRet.success(canBus.getIOState(IOId.THChOuterPPS));
@HardwareServiceStatus(name = "通道外光电")
public Boolean getTHchOuterPPS() throws HardwareException {
return canBus.getIOState(IOId.THChOuterPPS);
}
public AppRet<Boolean> getTHchInterPPS() throws HardwareException {
return AppRet.success(canBus.getIOState(IOId.THChInterPPS));
@HardwareServiceStatus(name = "通道内光电")
public Boolean getTHchInterPPS() throws HardwareException {
return canBus.getIOState(IOId.THChInterPPS);
}
}

2
src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java

@ -37,7 +37,7 @@ public class ReactionPlatesTransmitCtrlService {
基础操作
=======================================================================================*/
AppRet moduleReset() throws HardwareException, InterruptedException {
AppRet<Object> moduleReset() throws HardwareException, InterruptedException {
//光电状态检查
//试管平移通道是否有障碍
if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) {

BIN
zhaohe_app.db

Loading…
Cancel
Save