|
|
@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
@Component |
|
|
|
public class MotorTubeRackMoveCtrlService { |
|
|
|
public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule { |
|
|
|
/** |
|
|
|
* |
|
|
|
* 主要用来控制试管架的平移动作控制 |
|
|
@ -40,45 +40,7 @@ public class MotorTubeRackMoveCtrlService { |
|
|
|
private CommonHardwareOpeartion comHardwareOpear; |
|
|
|
|
|
|
|
/*========================================================================================= |
|
|
|
* 基础方法 |
|
|
|
*========================================================================================*/ |
|
|
|
|
|
|
|
/** |
|
|
|
* 移动试管架到指定位置 |
|
|
|
* @param pos 指定位置 |
|
|
|
* @throws HardwareException 硬件异常 |
|
|
|
* @throws InterruptedException 打断异常 |
|
|
|
*/ |
|
|
|
public AppRet<Object> moveTubeRackTo(int pos) throws HardwareException, InterruptedException { |
|
|
|
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM)) { |
|
|
|
return AppRet.fail(A8kEcode.ShakeModGripperZMNotInZeroPos); |
|
|
|
} |
|
|
|
scanClampModRelease(); |
|
|
|
|
|
|
|
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos); |
|
|
|
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); |
|
|
|
return AppRet.success(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 扫描夹紧机构夹紧 |
|
|
|
*/ |
|
|
|
public void scanClampModClamp() throws HardwareException, InterruptedException { |
|
|
|
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeClampPos()); |
|
|
|
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 扫描夹紧机构复位 |
|
|
|
*/ |
|
|
|
public void scanClampModRelease() throws HardwareException, InterruptedException { |
|
|
|
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); |
|
|
|
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*========================================================================================= |
|
|
|
* 公共方法 |
|
|
|
* Overrid |
|
|
|
*========================================================================================*/ |
|
|
|
|
|
|
|
/** |
|
|
@ -86,68 +48,95 @@ public class MotorTubeRackMoveCtrlService { |
|
|
|
* @param enable 1:使能 0:禁用 |
|
|
|
* @throws HardwareException 硬件异常 |
|
|
|
*/ |
|
|
|
public AppRet<Object> modGroupEnable(Boolean enable) throws HardwareException { |
|
|
|
@Override |
|
|
|
public void modGroupEnable(Boolean enable) throws HardwareException { |
|
|
|
comHardwareOpear.enableAllMotor(enable); |
|
|
|
return AppRet.success(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 模块停止 |
|
|
|
* @throws HardwareException 硬件异常 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void modGroupStop() throws HardwareException { |
|
|
|
comHardwareOpear.forceStopAllMOtor(); |
|
|
|
} |
|
|
|
|
|
|
|
public AppRet<Object> modGroupMoveToZero() throws HardwareException, InterruptedException { |
|
|
|
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM)) { |
|
|
|
return AppRet.fail(A8kEcode.ShakeModGripperZMNotInZeroPos); |
|
|
|
@Override |
|
|
|
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()); |
|
|
|
|
|
|
|
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM); |
|
|
|
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); |
|
|
|
return AppRet.success(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void modGroupMoveToZeroQuick() throws HardwareException, InterruptedException { |
|
|
|
moveTubeRackTo(0); |
|
|
|
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM); |
|
|
|
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/*========================================================================================= |
|
|
|
* 基础方法 |
|
|
|
*========================================================================================*/ |
|
|
|
|
|
|
|
/** |
|
|
|
* 电机归零,电机运行时归零,特点是通过归零判断设备是否丢步 |
|
|
|
* 移动试管架到指定位置 |
|
|
|
* @param pos 指定位置 |
|
|
|
* @throws HardwareException 硬件异常 |
|
|
|
* @throws InterruptedException 打断异常 |
|
|
|
*/ |
|
|
|
public AppRet<Object> modGroupMoveToZeroQuick() throws HardwareException, InterruptedException { |
|
|
|
var ret = moveTubeRackTo(0); |
|
|
|
if (!ret.isSuccess()) { |
|
|
|
return AppRet.fail(ret); |
|
|
|
public void moveTubeRackTo(int pos) throws HardwareException, InterruptedException { |
|
|
|
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) { |
|
|
|
throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos); |
|
|
|
} |
|
|
|
scanClampModRelease(); |
|
|
|
|
|
|
|
moveTubeRackTo(0); |
|
|
|
canBus.stepMotorEasyMoveToZero(MId.FeedingModXM); |
|
|
|
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos); |
|
|
|
canBus.waitForMod(MId.FeedingModXM, paramDao.getActionOvertime()); |
|
|
|
} |
|
|
|
|
|
|
|
return AppRet.success(); |
|
|
|
/** |
|
|
|
* 扫描夹紧机构夹紧 |
|
|
|
*/ |
|
|
|
public void scanClampModClamp() throws HardwareException, InterruptedException { |
|
|
|
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeClampPos()); |
|
|
|
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 扫描夹紧机构复位 |
|
|
|
*/ |
|
|
|
public void scanClampModRelease() throws HardwareException, InterruptedException { |
|
|
|
canBus.miniServoMoveTo(MId.ShakeModTubeScanerClampingSV, paramDao.getScanCodeReleasePos()); |
|
|
|
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, paramDao.getActionOvertime()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 移动试管架到入口位置 |
|
|
|
*/ |
|
|
|
public AppRet<Object> tubeRackMoveToEnterPos() throws HardwareException, InterruptedException { |
|
|
|
return moveTubeRackTo(paramDao.getTubeRackEnterPos()); |
|
|
|
public void tubeRackMoveToEnterPos() throws HardwareException, InterruptedException { |
|
|
|
moveTubeRackTo(paramDao.getTubeRackEnterPos()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 移动试管架到出口位置 |
|
|
|
*/ |
|
|
|
public AppRet<Object> moveTubeRackToExitPos() throws HardwareException, InterruptedException { |
|
|
|
return moveTubeRackTo(paramDao.getTubeRackExitPos()); |
|
|
|
public void moveTubeRackToExitPos() throws HardwareException, InterruptedException { |
|
|
|
moveTubeRackTo(paramDao.getTubeRackExitPos()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 移动试管架到试管架扫码位置 |
|
|
|
*/ |
|
|
|
public AppRet<Object> moveTubeRackToScanPos() throws HardwareException, InterruptedException { |
|
|
|
return moveTubeRackTo(paramDao.getTubeRackScanCodePos()); |
|
|
|
public void moveTubeRackToScanPos() throws HardwareException, InterruptedException { |
|
|
|
moveTubeRackTo(paramDao.getTubeRackScanCodePos()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -155,10 +144,8 @@ public class MotorTubeRackMoveCtrlService { |
|
|
|
*/ |
|
|
|
public AppRet<String> moveTubeRackToScanPosAndScan() throws HardwareException, InterruptedException { |
|
|
|
String result; |
|
|
|
var ret = moveTubeRackToScanPos(); |
|
|
|
if (!ret.isSuccess()) { |
|
|
|
return AppRet.fail(ret); |
|
|
|
} |
|
|
|
moveTubeRackToScanPos(); |
|
|
|
|
|
|
|
scanClampModClamp(); |
|
|
|
canBus.codeScanerStartScan(MId.FeedingModScannerMod); |
|
|
|
result = canBus.codeScanerWaittingForResult(MId.FeedingModScannerMod, 1000); |
|
|
|