22 changed files with 209 additions and 28 deletions
-
5src/main/java/com/dreamworks/boditech/controller/TestController.java
-
4src/main/java/com/dreamworks/boditech/driver/Command.java
-
2src/main/java/com/dreamworks/boditech/driver/Device.java
-
5src/main/java/com/dreamworks/boditech/driver/Register.java
-
4src/main/java/com/dreamworks/boditech/driver/Task.java
-
1src/main/java/com/dreamworks/boditech/driver/TaskExecutor.java
-
8src/main/java/com/dreamworks/boditech/driver/actuator/ActArmXY.java
-
29src/main/java/com/dreamworks/boditech/driver/actuator/ActIncubator.java
-
27src/main/java/com/dreamworks/boditech/driver/actuator/ActMotor.java
-
7src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorBase.java
-
2src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java
-
7src/main/java/com/dreamworks/boditech/driver/task/Task.java
-
1src/main/java/com/dreamworks/boditech/driver/task/TaskBatchTubeExit.java
-
1src/main/java/com/dreamworks/boditech/driver/task/TaskBatchTubePrepare.java
-
117src/main/java/com/dreamworks/boditech/driver/task/TaskReset.java
-
1src/main/java/com/dreamworks/boditech/driver/task/TaskTest.java
-
2src/main/java/com/dreamworks/boditech/driver/task/step/Step.java
-
2src/main/java/com/dreamworks/boditech/driver/task/step/StepAnalysis.java
-
2src/main/java/com/dreamworks/boditech/driver/task/step/StepPuncture.java
-
2src/main/java/com/dreamworks/boditech/driver/task/step/StepSampling.java
-
2src/main/java/com/dreamworks/boditech/driver/task/step/StepShake.java
-
6src/main/java/com/dreamworks/boditech/service/DeviceService.java
@ -0,0 +1,5 @@ |
|||
package com.dreamworks.boditech.driver; |
|||
public class Register { |
|||
public static final Integer MODULE_INPUT_STATE = 8; |
|||
public static final Integer MODULE_LAST_CMD_EXEC_VAL0 = 21; |
|||
} |
@ -1,4 +0,0 @@ |
|||
package com.dreamworks.boditech.driver; |
|||
public interface Task { |
|||
public void execute(TaskExecutor executor); |
|||
} |
@ -0,0 +1,7 @@ |
|||
package com.dreamworks.boditech.driver.task; |
|||
|
|||
import com.dreamworks.boditech.driver.TaskExecutor; |
|||
|
|||
public interface Task { |
|||
public void execute(TaskExecutor executor); |
|||
} |
@ -0,0 +1,117 @@ |
|||
package com.dreamworks.boditech.driver.task; |
|||
import com.dreamworks.boditech.driver.Device; |
|||
import com.dreamworks.boditech.driver.Register; |
|||
import com.dreamworks.boditech.driver.TaskExecutor; |
|||
import com.dreamworks.boditech.driver.actuator.ActArmXY; |
|||
import com.dreamworks.boditech.driver.actuator.ActIncubator; |
|||
import com.dreamworks.boditech.driver.actuator.ActMotor; |
|||
import com.dreamworks.boditech.driver.actuator.ActuatorModule; |
|||
import com.dreamworks.boditech.driver.entity.IncubatorSlot; |
|||
|
|||
import java.util.Objects; |
|||
|
|||
public class TaskReset implements Task { |
|||
// mode : normal |
|||
public static final Integer MODE_NORMAL = 0; |
|||
// mode : error |
|||
public static final Integer MODE_ERROR = 1; |
|||
|
|||
// reset mode |
|||
public Integer mode = MODE_NORMAL; |
|||
|
|||
@Override |
|||
public void execute(TaskExecutor executor) { |
|||
Device device = executor.getDevice(); |
|||
|
|||
//01. 试管夹复位 |
|||
ActMotor testTubeShakingClipMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_SHAKING_CLIP_MOTOR); |
|||
testTubeShakingClipMotor.reset(); |
|||
|
|||
// 02. 试管夹旋转复位 |
|||
ActMotor testTubeShakingClipRotateMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_SHAKING_ROTATE_MOTOR); |
|||
testTubeShakingClipRotateMotor.reset(); |
|||
|
|||
// 03. 机械臂Z轴复位 |
|||
ActMotor armZMotor = (ActMotor)device.getActuator(ActuatorModule.ARM_Z_MOTOR); |
|||
armZMotor.reset(); |
|||
|
|||
// 04. 机械臂XY轴复位 |
|||
ActArmXY armXY = (ActArmXY)device.getActuator(ActuatorModule.ARM_XY); |
|||
armXY.reset(); |
|||
|
|||
// 错误模式下,可能还有TIP未丢弃 |
|||
if (Objects.equals(this.mode, TaskReset.MODE_ERROR)) { |
|||
armXY.moveTo("tipDiscardPrepareHole"); |
|||
armZMotor.moveTo("tipDiscardDepth"); |
|||
armXY.moveTo("tipDiscardDrop"); |
|||
armZMotor.reset(); |
|||
} |
|||
|
|||
// 05. 摇匀电机复位 |
|||
// @TODO : 摇匀电机没有零点,暂时没法复位 |
|||
|
|||
// 06. 试管帽夹复位 |
|||
ActMotor testTubeShakingCapClipMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_SHAKING_CAP_CLIP_MOTOR); |
|||
testTubeShakingCapClipMotor.moveTo("testTubeShakingCapClipClose"); |
|||
|
|||
// 07. 摇匀升降电机复位 |
|||
// @TODO : 升降电机需要向上复位,但是目前没有更新,所以暂时不复位 |
|||
ActMotor testTubeShakingMoveMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_SHAKING_MOVE_MOTOR); |
|||
// testTubeShakingMoveMotor.reset(); |
|||
|
|||
if ( Objects.equals(this.mode, TaskReset.MODE_ERROR) ) { |
|||
// 出错的情况下这个时候可能还存在试管,需要把试管放回到试管架上 |
|||
testTubeShakingMoveMotor.moveTo("testTubeShakingCapPickUp"); |
|||
testTubeShakingCapClipMotor.moveTo("testTubeShakingCapClipOpen"); |
|||
testTubeShakingMoveMotor.moveTo("testTubeShakingUpDownStandBy"); |
|||
testTubeShakingCapClipMotor.moveTo("testTubeShakingCapClipClose"); |
|||
} |
|||
|
|||
// 08. 试管架电机复位 |
|||
ActMotor testTubeRackMoveMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_RACK_MOVE_MOTOR); |
|||
testTubeRackMoveMotor.reset(); |
|||
testTubeRackMoveMotor.moveTo("testTubeRackExitPrepare"); |
|||
testTubeRackMoveMotor.moveTo("testTubeRackExit"); |
|||
ActMotor testTubeRackExitMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_RACK_EXIT_MOTOR); |
|||
testTubeRackExitMotor.moveBy(500); |
|||
testTubeRackMoveMotor.reset(); |
|||
|
|||
// 09. 板夹仓推杆电机复位 |
|||
ActMotor testCardFeedMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_CARD_FEED_MOTOR); |
|||
// @TODO : 检查是否存在试管正在被从板夹仓推出 |
|||
// @TODO : 读取试管夹二次验证相机数据,判断是否存在上述情况 |
|||
boolean hasTestCardInFeedRack = true; |
|||
if ( hasTestCardInFeedRack ) { |
|||
testCardFeedMotor.moveToPoint(ActMotor.POINT_END); |
|||
} |
|||
testCardFeedMotor.reset(); |
|||
testCardFeedMotor.moveTo("testCardFeedStandBy"); |
|||
|
|||
// 10. 板夹仓复位 |
|||
ActMotor testCardBoxMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_CARD_BOX_MOTOR); |
|||
testCardBoxMotor.reset(); |
|||
|
|||
// 11. 光学扫描电机复位 |
|||
ActMotor analysisScanMotor = (ActMotor)device.getActuator(ActuatorModule.ANALYSIS_SCAN_MOTOR); |
|||
analysisScanMotor.reset(); |
|||
analysisScanMotor.moveTo("analysisScanMotorStandBy"); |
|||
|
|||
// 11. 光学推杆电机复位 |
|||
ActMotor analysisPushMotor = (ActMotor)device.getActuator(ActuatorModule.ANALYSIS_PUSH_MOTOR); |
|||
Integer analysisPushMotorInputState = analysisPushMotor.getRegister(Register.MODULE_INPUT_STATE); |
|||
boolean isAnalysisPushMotorPushing = ((analysisPushMotorInputState >> 1) & 0x01) == 0x00; |
|||
if ( isAnalysisPushMotorPushing ) { |
|||
analysisPushMotor.reset(); |
|||
analysisScanMotor.moveTo("analysisScanMotorDropCard"); |
|||
analysisScanMotor.moveTo("analysisScanMotorStandBy"); |
|||
analysisPushMotor.moveTo("analysisPushMotorStandby"); |
|||
} |
|||
|
|||
// 12. 孵育盘电机复位 |
|||
ActIncubator incubatorMotor = (ActIncubator)device.getActuator(ActuatorModule.INCUBATOR_MOTOR); |
|||
incubatorMotor.reset(); |
|||
IncubatorSlot incubatorSlot = incubatorMotor.getFreeSlot(); |
|||
incubatorMotor.moveTo(incubatorSlot.getExitLocation()); |
|||
analysisPushMotor.moveTo("analysisPushMotorStandby"); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue