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