12 changed files with 824 additions and 743 deletions
-
BINapp.db
-
49src/main/java/a8k/constant/MiniServoConstant.java
-
39src/main/java/a8k/service/app/devicedriver/basectrl/MiniServoControler.java
-
5src/main/java/a8k/service/app/devicedriver/basectrl/TubeTransportControler.java
-
4src/main/java/a8k/service/app/devicedriver/calibration/TubeFeedingModulePosCalibration.java
-
197src/main/java/a8k/service/app/devicedriver/calibration/TubePreProcesPosCalibration.java
-
754src/main/java/a8k/service/app/devicedriver/commonctrl/HardwareCommonCtrl.java
-
10src/main/java/a8k/service/app/devicedriver/ctrl/DeviceInitCtrlService.java
-
352src/main/java/a8k/service/app/devicedriver/ctrl/TubePreProcesControler.java
-
13src/main/java/a8k/service/app/devicedriver/pos/TubeFeedingModulePosMgr.java
-
143src/main/java/a8k/service/app/devicedriver/pos/TubePreProcesPosMgr.java
-
1src/main/java/a8k/service/db/LowerDeviceParameterDBService.java
@ -0,0 +1,49 @@ |
|||
package a8k.constant; |
|||
|
|||
import a8k.service.app.devicedriver.basectrl.type.MiniServoMId; |
|||
|
|||
public class MiniServoConstant { |
|||
static public final Integer actionOvertime = 5000; |
|||
|
|||
//摇匀模组Y轴 |
|||
static public final Integer ShakeModGripperYSV_zeroPos = 110; |
|||
static public final Integer ShakeModGripperYSV_refPos = 100;//Y轴最外侧的位置 |
|||
|
|||
//摇匀模组夹爪 |
|||
static public final Integer ShakeModGripperSV_zeroPos = 1600; |
|||
static public final Integer ShakeModGripperSV_refPos = 1800;//完全张开的位置 |
|||
|
|||
//试管架夹紧 |
|||
static public final Integer ShakeModTubeScanerClampingSV_zeroPos = 1800; |
|||
static public final Integer ShakeModTubeScanerClampingSV_refPos = 1800;//水平位置 |
|||
|
|||
|
|||
static public Integer getZeroPos(MiniServoMId mid) { |
|||
return getInteger(mid, |
|||
ShakeModGripperYSV_zeroPos, |
|||
ShakeModGripperSV_zeroPos, |
|||
ShakeModTubeScanerClampingSV_zeroPos); |
|||
|
|||
} |
|||
|
|||
static public Integer getRefPos(MiniServoMId mid) { |
|||
return getInteger(mid, |
|||
ShakeModGripperYSV_refPos, |
|||
ShakeModGripperSV_refPos, |
|||
ShakeModTubeScanerClampingSV_refPos); |
|||
} |
|||
|
|||
private static Integer getInteger(MiniServoMId mid, Integer ShakeModGripperYSVPos, Integer ShakeModGripperSVPos, Integer ShakeModTubeScanerClampingSVPos) { |
|||
switch (mid) { |
|||
case ShakeModGripperYSV: |
|||
return ShakeModGripperYSVPos; |
|||
case ShakeModGripperSV: |
|||
return ShakeModGripperSVPos; |
|||
case ShakeModTubeScanerClampingSV: |
|||
return ShakeModTubeScanerClampingSVPos; |
|||
case ShakeModTubeScanerRotateSV: |
|||
assert false; |
|||
} |
|||
return 0; |
|||
} |
|||
} |
@ -1,377 +1,377 @@ |
|||
package a8k.service.app.devicedriver.commonctrl; |
|||
|
|||
|
|||
import a8k.service.app.devicedriver.basectrl.HbotModule; |
|||
import a8k.service.app.devicedriver.basectrl.MiniServoControler; |
|||
import a8k.service.app.devicedriver.basectrl.StepMotorControler; |
|||
import a8k.service.app.devicedriver.basectrl.type.MiniServoMId; |
|||
import a8k.service.app.devicedriver.basectrl.type.StepMotorMId; |
|||
import a8k.type.exception.AppException; |
|||
import a8k.type.appret.AppRet; |
|||
import a8k.extapi_controler.utils.ExtApiTab; |
|||
import a8k.extapi_controler.utils.ExtApiFn; |
|||
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; |
|||
import a8k.hardware.A8kCanBusService; |
|||
import a8k.hardware.type.a8kcanprotocol.A8kEcode; |
|||
import a8k.hardware.type.a8kcanprotocol.IOId; |
|||
import a8k.hardware.type.a8kcanprotocol.MId; |
|||
import a8k.service.app.devicedriver.param.PosParam; |
|||
import a8k.service.app.devicedriver.param.TimeParam; |
|||
import jakarta.annotation.Resource; |
|||
import org.slf4j.Logger; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
@ExtApiTab(cfg = ExtApiTabConfig.HardwareCommonCtrl) |
|||
public class HardwareCommonCtrl { |
|||
static Logger logger = org.slf4j.LoggerFactory.getLogger(HardwareCommonCtrl.class); |
|||
|
|||
static class ORDER { |
|||
static final int initializeDevice = 1; |
|||
static final int deviceClear = 2; |
|||
static final int deviceForceStop = 3; |
|||
static final int forceDisableAllMOtor = 4; |
|||
static final int deviceEnable = 5; |
|||
} |
|||
|
|||
@Resource |
|||
A8kCanBusService canBus; |
|||
@Resource |
|||
MiniServoControler miniServoControler; |
|||
|
|||
@Resource |
|||
TimeParam timep; |
|||
|
|||
@Resource |
|||
PosParam posp; |
|||
|
|||
Boolean workState = false; |
|||
|
|||
@Resource |
|||
HbotModule hbotModule; |
|||
|
|||
@Resource |
|||
StepMotorControler stepMotorControler; |
|||
|
|||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// CHECK |
|||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
|
|||
private void checkDeviceStateBeforeRunToZero() throws AppException { |
|||
logger.info("checkDeviceStateBeforeRunToZero"); |
|||
//试管平移通道是否有障碍 |
|||
if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) { |
|||
logger.warn("THChInterPPS or THChOuterPPS is trigger"); |
|||
throw new AppException(A8kEcode.APPE_TUBE_X_CHANNEL_IS_NOT_EMPTY); |
|||
} |
|||
|
|||
//板夹仓盖子是否盖上 |
|||
if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { |
|||
throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
} |
|||
|
|||
//板夹仓卡板检测 |
|||
if (canBus.getIOState(IOId.PlateBoxPlateStuckPPS)) { |
|||
throw new AppException(A8kEcode.APPE_PLATE_STUCK_DETECTOR_SENSOR_TRIGGER); |
|||
} |
|||
|
|||
//检查钩板电机是否处于终点位置 |
|||
if (!canBus.getIOState(IOId.PullerMZeroPPS)) { |
|||
throw new AppException(A8kEcode.APPE_PULLERM_INIT_POS_ERROR); |
|||
} |
|||
|
|||
//检查板夹仓光电是否处于起点位置 |
|||
if (!canBus.getIOState(IOId.PusherMZeroPPS)) { |
|||
throw new AppException(A8kEcode.APPE_PUSHERM_INIT_POS_ERROR); |
|||
} |
|||
//板夹仓光电 |
|||
if (canBus.getIOState(IOId.RecycleBinOverflowPPS)) { |
|||
throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
} |
|||
} |
|||
|
|||
|
|||
private void moveMotorToZero() throws AppException { |
|||
|
|||
//进出料初始化 |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, timep.getRuntoZeroActionOvertime()); |
|||
|
|||
miniServoControler.miniServoMoveToBlock(MiniServoMId.ShakeModTubeScanerClampingSV, 20, timep.getActionOvertime()); |
|||
|
|||
miniServoControler.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, 300, timep.getActionOvertime()); |
|||
|
|||
miniServoControler.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, 300, timep.getActionOvertime()); |
|||
|
|||
|
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, timep.getRuntoZeroActionOvertime()); |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, timep.getRuntoZeroActionOvertime()); |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, timep.getRuntoZeroActionOvertime()); |
|||
|
|||
stepMotorControler.stepMotorEasyMoveTo(StepMotorMId.ShakeModShakeM, 90); |
|||
|
|||
//板夹仓初始化 |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxYM, timep.getRuntoZeroActionOvertime()); |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM, timep.getRuntoZeroActionOvertime()); |
|||
//光学模组初始化 |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM, timep.getRuntoZeroActionOvertime()); |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM, timep.getRuntoZeroActionOvertime()); |
|||
//HBot初始化 |
|||
hbotModule.moveToZeroBlock(); |
|||
|
|||
// TODO stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PipetteModZM, timep.getRuntoZeroActionOvertime()); |
|||
//转盘归零 |
|||
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM, timep.getRuntoZeroActionOvertime()); |
|||
} |
|||
|
|||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// Expose API |
|||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
@ExtApiFn(name = "设备初始化", order = ORDER.initializeDevice) |
|||
public void initializeDevice() throws AppException { |
|||
logger.info("Initializing device ..."); |
|||
boolean initSuc = false; |
|||
workState = true; |
|||
AppRet<Object> ecode; |
|||
try { |
|||
//打开必要的电源 |
|||
canBus.setIOState(IOId.RecycleBinOverflowPPSPowerCtrl, true); |
|||
|
|||
//检查设备状态 |
|||
checkDeviceStateBeforeRunToZero(); |
|||
|
|||
// 复位设备 |
|||
logger.info("moveMotorToZero"); |
|||
moveMotorToZero(); |
|||
|
|||
initSuc = true; |
|||
logger.info("Device initialization completed"); |
|||
|
|||
} finally { |
|||
if (!initSuc) { |
|||
try { |
|||
stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
stepMotorControler.stepMotorEasyMoveBy(StepMotorMId.ShakeModClampingM, 2); |
|||
} catch (AppException ignored) { |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
// @EnginnerPageAction(name = "清空板夹仓板夹", order = ORDER.deviceClear) |
|||
// public void clearDevice() { |
|||
// //TODO |
|||
// } |
|||
|
|||
|
|||
@ExtApiFn(name = "设备强制停止", order = ORDER.deviceForceStop) |
|||
public void deviceForceStop() throws AppException { |
|||
//StopAllMotor |
|||
//进出料初始化 |
|||
try { |
|||
canBus.moduleStop(MId.FeedingModInfeedM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.FeedingModXM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.FeedingModOutfeedM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
//摇匀模组初始化 |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModClampingM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModGripperZM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModShakeM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModGripperYSV); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModGripperSV); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModTubeScanerClampingSV); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.ShakeModTubeScanerRotateSV); |
|||
} catch (AppException ignored) { |
|||
} |
|||
//板夹仓初始化 |
|||
try { |
|||
canBus.moduleStop(MId.PlatesBoxYM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.PlatesBoxPusherM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
//光学模组初始化 |
|||
try { |
|||
canBus.moduleStop(MId.OptModPullM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
try { |
|||
canBus.moduleStop(MId.OptModScannerM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
//HBot初始化 |
|||
try { |
|||
canBus.moduleStop(MId.HbotM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
// try { |
|||
// TODO canBus.moduleStop(MId.PipetteModZM); |
|||
// } catch (HardwareException ignored) { |
|||
// } |
|||
//转盘归零 |
|||
try { |
|||
canBus.moduleStop(MId.IncubatorRotateCtrlM); |
|||
} catch (AppException ignored) { |
|||
} |
|||
|
|||
} |
|||
|
|||
// @ExtApiFn(name = "设备强制使能所有电机", order = ORDER.forceDisableAllMOtor) |
|||
// public void forceDisableAllMOtor() { |
|||
// //Disable all motor |
|||
// //进出料初始化 |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModInfeedM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModXM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// |
|||
// //摇匀模组初始化 |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModGripperZM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModShakeM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.miniServoEnable(MId.ShakeModGripperYSV, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.miniServoEnable(MId.ShakeModGripperSV, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.miniServoEnable(MId.ShakeModTubeScanerRotateSV, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// |
|||
// //板夹仓初始化 |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxYM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// |
|||
// //光学模组初始化 |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// |
|||
// //HBot初始化 |
|||
// try { |
|||
// canBus.hbotEnable(MId.HbotM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// // try { |
|||
// //TODO stepMotorControler.stepMotorEnable(StepMotorMId.PipetteModZM, 0); |
|||
// // } catch (HardwareException ignored) { |
|||
// // } |
|||
// |
|||
// //转盘归零 |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 0); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// } |
|||
|
|||
// @ExtApiFn(name = "设备使能", order = ORDER.deviceEnable) |
|||
// public void deviceEnable(Boolean enable) throws AppException { |
|||
// //进出料初始化 |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModInfeedM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModXM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, enable ? 1 : 0); |
|||
// |
|||
// //摇匀模组初始化 |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModGripperZM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModShakeM, enable ? 1 : 0); |
|||
// canBus.miniServoEnable(MId.ShakeModGripperYSV, enable ? 1 : 0); |
|||
// canBus.miniServoEnable(MId.ShakeModGripperSV, enable ? 1 : 0); |
|||
// canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, enable ? 1 : 0); |
|||
// canBus.miniServoEnable(MId.ShakeModTubeScanerRotateSV, enable ? 1 : 0); |
|||
// |
|||
// //板夹仓初始化 |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxYM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, enable ? 1 : 0); |
|||
// |
|||
// //光学模组初始化 |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, enable ? 1 : 0); |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, enable ? 1 : 0); |
|||
// |
|||
// //HBot初始化 |
|||
// canBus.hbotEnable(MId.HbotM, enable ? 1 : 0); |
|||
// // TODO stepMotorControler.stepMotorEnable(StepMotorMId.PipetteModZM, enable ? 1 : 0); |
|||
// |
|||
// //转盘归零 |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, enable ? 1 : 0); |
|||
// } |
|||
// |
|||
// public void checkBeforeMove(MId mId) throws AppException { |
|||
// //板夹仓盖子是否盖上 |
|||
// if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
// } |
|||
// } |
|||
|
|||
public void stop() { |
|||
workState = false; |
|||
} |
|||
|
|||
} |
|||
//package a8k.service.app.devicedriver.commonctrl; |
|||
// |
|||
// |
|||
//import a8k.service.app.devicedriver.basectrl.HbotModule; |
|||
//import a8k.service.app.devicedriver.basectrl.MiniServoControler; |
|||
//import a8k.service.app.devicedriver.basectrl.StepMotorControler; |
|||
//import a8k.service.app.devicedriver.basectrl.type.MiniServoMId; |
|||
//import a8k.service.app.devicedriver.basectrl.type.StepMotorMId; |
|||
//import a8k.type.exception.AppException; |
|||
//import a8k.type.appret.AppRet; |
|||
//import a8k.extapi_controler.utils.ExtApiTab; |
|||
//import a8k.extapi_controler.utils.ExtApiFn; |
|||
//import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; |
|||
//import a8k.hardware.A8kCanBusService; |
|||
//import a8k.hardware.type.a8kcanprotocol.A8kEcode; |
|||
//import a8k.hardware.type.a8kcanprotocol.IOId; |
|||
//import a8k.hardware.type.a8kcanprotocol.MId; |
|||
//import a8k.service.app.devicedriver.param.PosParam; |
|||
//import a8k.service.app.devicedriver.param.TimeParam; |
|||
//import jakarta.annotation.Resource; |
|||
//import org.slf4j.Logger; |
|||
//import org.springframework.stereotype.Component; |
|||
// |
|||
//@Component |
|||
//@ExtApiTab(cfg = ExtApiTabConfig.HardwareCommonCtrl) |
|||
//public class HardwareCommonCtrl { |
|||
// static Logger logger = org.slf4j.LoggerFactory.getLogger(HardwareCommonCtrl.class); |
|||
// |
|||
// static class ORDER { |
|||
// static final int initializeDevice = 1; |
|||
// static final int deviceClear = 2; |
|||
// static final int deviceForceStop = 3; |
|||
// static final int forceDisableAllMOtor = 4; |
|||
// static final int deviceEnable = 5; |
|||
// } |
|||
// |
|||
// @Resource |
|||
// A8kCanBusService canBus; |
|||
// @Resource |
|||
// MiniServoControler miniServoControler; |
|||
// |
|||
// @Resource |
|||
// TimeParam timep; |
|||
// |
|||
// @Resource |
|||
// PosParam posp; |
|||
// |
|||
// Boolean workState = false; |
|||
// |
|||
// @Resource |
|||
// HbotModule hbotModule; |
|||
// |
|||
// @Resource |
|||
// StepMotorControler stepMotorControler; |
|||
// |
|||
// // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// // CHECK |
|||
// // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// |
|||
// private void checkDeviceStateBeforeRunToZero() throws AppException { |
|||
// logger.info("checkDeviceStateBeforeRunToZero"); |
|||
// //试管平移通道是否有障碍 |
|||
// if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) { |
|||
// logger.warn("THChInterPPS or THChOuterPPS is trigger"); |
|||
// throw new AppException(A8kEcode.APPE_TUBE_X_CHANNEL_IS_NOT_EMPTY); |
|||
// } |
|||
// |
|||
// //板夹仓盖子是否盖上 |
|||
// if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
// } |
|||
// |
|||
// //板夹仓卡板检测 |
|||
// if (canBus.getIOState(IOId.PlateBoxPlateStuckPPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PLATE_STUCK_DETECTOR_SENSOR_TRIGGER); |
|||
// } |
|||
// |
|||
// //检查钩板电机是否处于终点位置 |
|||
// if (!canBus.getIOState(IOId.PullerMZeroPPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PULLERM_INIT_POS_ERROR); |
|||
// } |
|||
// |
|||
// //检查板夹仓光电是否处于起点位置 |
|||
// if (!canBus.getIOState(IOId.PusherMZeroPPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PUSHERM_INIT_POS_ERROR); |
|||
// } |
|||
// //板夹仓光电 |
|||
// if (canBus.getIOState(IOId.RecycleBinOverflowPPS)) { |
|||
// throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
// } |
|||
// } |
|||
// |
|||
// |
|||
// private void moveMotorToZero() throws AppException { |
|||
// |
|||
// //进出料初始化 |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, timep.getRuntoZeroActionOvertime()); |
|||
// |
|||
// miniServoControler.miniServoMoveToZeroBlock(MiniServoMId.ShakeModTubeScanerClampingSV); |
|||
// |
|||
// miniServoControler.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV); |
|||
// |
|||
// miniServoControler.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV); |
|||
// |
|||
// |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, timep.getRuntoZeroActionOvertime()); |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, timep.getRuntoZeroActionOvertime()); |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, timep.getRuntoZeroActionOvertime()); |
|||
// |
|||
// stepMotorControler.stepMotorEasyMoveTo(StepMotorMId.ShakeModShakeM, 90); |
|||
// |
|||
// //板夹仓初始化 |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxYM, timep.getRuntoZeroActionOvertime()); |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM, timep.getRuntoZeroActionOvertime()); |
|||
// //光学模组初始化 |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM, timep.getRuntoZeroActionOvertime()); |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM, timep.getRuntoZeroActionOvertime()); |
|||
// //HBot初始化 |
|||
// hbotModule.moveToZeroBlock(); |
|||
// |
|||
// // TODO stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PipetteModZM, timep.getRuntoZeroActionOvertime()); |
|||
// //转盘归零 |
|||
// stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM, timep.getRuntoZeroActionOvertime()); |
|||
// } |
|||
// |
|||
// // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// // Expose API |
|||
// // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|||
// @ExtApiFn(name = "设备初始化", order = ORDER.initializeDevice) |
|||
// public void initializeDevice() throws AppException { |
|||
// logger.info("Initializing device ..."); |
|||
// boolean initSuc = false; |
|||
// workState = true; |
|||
// AppRet<Object> ecode; |
|||
// try { |
|||
// //打开必要的电源 |
|||
// canBus.setIOState(IOId.RecycleBinOverflowPPSPowerCtrl, true); |
|||
// |
|||
// //检查设备状态 |
|||
// checkDeviceStateBeforeRunToZero(); |
|||
// |
|||
// // 复位设备 |
|||
// logger.info("moveMotorToZero"); |
|||
// moveMotorToZero(); |
|||
// |
|||
// initSuc = true; |
|||
// logger.info("Device initialization completed"); |
|||
// |
|||
// } finally { |
|||
// if (!initSuc) { |
|||
// try { |
|||
// stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// stepMotorControler.stepMotorEasyMoveBy(StepMotorMId.ShakeModClampingM, 2); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// } |
|||
// } |
|||
// |
|||
// } |
|||
// |
|||
// // @EnginnerPageAction(name = "清空板夹仓板夹", order = ORDER.deviceClear) |
|||
// // public void clearDevice() { |
|||
// // //TODO |
|||
// // } |
|||
// |
|||
// |
|||
// @ExtApiFn(name = "设备强制停止", order = ORDER.deviceForceStop) |
|||
// public void deviceForceStop() throws AppException { |
|||
// //StopAllMotor |
|||
// //进出料初始化 |
|||
// try { |
|||
// canBus.moduleStop(MId.FeedingModInfeedM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.FeedingModXM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.FeedingModOutfeedM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// //摇匀模组初始化 |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModClampingM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModGripperZM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModShakeM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModGripperYSV); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModGripperSV); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModTubeScanerClampingSV); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.ShakeModTubeScanerRotateSV); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// //板夹仓初始化 |
|||
// try { |
|||
// canBus.moduleStop(MId.PlatesBoxYM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.PlatesBoxPusherM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// //光学模组初始化 |
|||
// try { |
|||
// canBus.moduleStop(MId.OptModPullM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// try { |
|||
// canBus.moduleStop(MId.OptModScannerM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// //HBot初始化 |
|||
// try { |
|||
// canBus.moduleStop(MId.HbotM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// // try { |
|||
// // TODO canBus.moduleStop(MId.PipetteModZM); |
|||
// // } catch (HardwareException ignored) { |
|||
// // } |
|||
// //转盘归零 |
|||
// try { |
|||
// canBus.moduleStop(MId.IncubatorRotateCtrlM); |
|||
// } catch (AppException ignored) { |
|||
// } |
|||
// |
|||
// } |
|||
// |
|||
// // @ExtApiFn(name = "设备强制使能所有电机", order = ORDER.forceDisableAllMOtor) |
|||
// // public void forceDisableAllMOtor() { |
|||
// // //Disable all motor |
|||
// // //进出料初始化 |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModInfeedM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModXM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // |
|||
// // //摇匀模组初始化 |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModGripperZM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModShakeM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // canBus.miniServoEnable(MId.ShakeModGripperYSV, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // canBus.miniServoEnable(MId.ShakeModGripperSV, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // canBus.miniServoEnable(MId.ShakeModTubeScanerRotateSV, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // |
|||
// // //板夹仓初始化 |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxYM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // |
|||
// // //光学模组初始化 |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // |
|||
// // //HBot初始化 |
|||
// // try { |
|||
// // canBus.hbotEnable(MId.HbotM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // // try { |
|||
// // //TODO stepMotorControler.stepMotorEnable(StepMotorMId.PipetteModZM, 0); |
|||
// // // } catch (HardwareException ignored) { |
|||
// // // } |
|||
// // |
|||
// // //转盘归零 |
|||
// // try { |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 0); |
|||
// // } catch (AppException ignored) { |
|||
// // } |
|||
// // } |
|||
// |
|||
// // @ExtApiFn(name = "设备使能", order = ORDER.deviceEnable) |
|||
// // public void deviceEnable(Boolean enable) throws AppException { |
|||
// // //进出料初始化 |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModInfeedM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModXM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, enable ? 1 : 0); |
|||
// // |
|||
// // //摇匀模组初始化 |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModClampingM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModGripperZM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.ShakeModShakeM, enable ? 1 : 0); |
|||
// // canBus.miniServoEnable(MId.ShakeModGripperYSV, enable ? 1 : 0); |
|||
// // canBus.miniServoEnable(MId.ShakeModGripperSV, enable ? 1 : 0); |
|||
// // canBus.miniServoEnable(MId.ShakeModTubeScanerClampingSV, enable ? 1 : 0); |
|||
// // canBus.miniServoEnable(MId.ShakeModTubeScanerRotateSV, enable ? 1 : 0); |
|||
// // |
|||
// // //板夹仓初始化 |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxYM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, enable ? 1 : 0); |
|||
// // |
|||
// // //光学模组初始化 |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, enable ? 1 : 0); |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, enable ? 1 : 0); |
|||
// // |
|||
// // //HBot初始化 |
|||
// // canBus.hbotEnable(MId.HbotM, enable ? 1 : 0); |
|||
// // // TODO stepMotorControler.stepMotorEnable(StepMotorMId.PipetteModZM, enable ? 1 : 0); |
|||
// // |
|||
// // //转盘归零 |
|||
// // stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, enable ? 1 : 0); |
|||
// // } |
|||
// // |
|||
// // public void checkBeforeMove(MId mId) throws AppException { |
|||
// // //板夹仓盖子是否盖上 |
|||
// // if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { |
|||
// // throw new AppException(A8kEcode.APPE_PLATE_BOX_NOT_COVER); |
|||
// // } |
|||
// // } |
|||
// |
|||
// public void stop() { |
|||
// workState = false; |
|||
// } |
|||
// |
|||
//} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue