diff --git a/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java b/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java index b061342..ebdf331 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java @@ -11,7 +11,7 @@ public class MyDevice extends DiDevice { public static String ACT_TRANSFER_UD_MOTOR = "TransferArmUDMotor"; public static String ACT_TRANSFER_LR_MOTOR = "TransferArmLRMotor"; public static String ACT_TRANSFER_CLIP_SERVO = "TransferClipServeMotor"; - + public static String ACT_DOOR_MOTOR = "DoorMotor"; diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java index ca1b21b..b9068b6 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java @@ -6,8 +6,9 @@ public enum DiCommand { MODULE_GET_REG("module_get_reg", 0x0106), MODULE_ENABLE("module_enable", 0x0114), MOTOR_EASY_MOVE_BY("motor_easy_move_by", 0x0212), + MOTOR_EASY_MOVE_TO("motor_easy_move_to", 0x0213), MOTOR_EASY_MOVE_TO_ZERO("motor_easy_move_to_zero", 0x0214), - MOTO_EASY_MOVE_TO("moto_easy_move_to", 0x0213); + MOTOR_EASY_MOVE_TO_IO("motor_easy_move_to_io", 0x0216); // command name private final String name; diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java index 471c7ee..0808cba 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java @@ -94,7 +94,7 @@ public class DiActMotor extends DiActuatorBase { // move to position public void moveTo( Integer pos ) { this.log("moveTo {}", pos); - this.call(DiCommand.MOTO_EASY_MOVE_TO, pos); + this.call(DiCommand.MOTOR_EASY_MOVE_TO, pos); this.waitForFinish(); } @@ -102,10 +102,14 @@ public class DiActMotor extends DiActuatorBase { public void moveTo( String key, Object ... args ) { Integer pos = this.getLocationValue(key, args); this.log("moveTo #{}={}", key, pos); - this.call(DiCommand.MOTO_EASY_MOVE_TO, pos); + this.call(DiCommand.MOTOR_EASY_MOVE_TO, pos); this.waitForFinish(); } - public void rotate( Integer direction ) {} - public void stop() {} + // move to IO + public void moveToIO( Integer ioIndex, Integer direction ) { + this.log("moveToIO {} {}", ioIndex, direction); + this.call(DiCommand.MOTOR_EASY_MOVE_TO_IO, ioIndex, direction); + this.waitForFinish(); + } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java index c76072c..f43468d 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java @@ -20,7 +20,7 @@ public class DiActServo extends DiActuatorBase { // move to position public void moveTo( Integer pos ) { this.log("moveTo", pos); - this.call(DiCommand.MOTO_EASY_MOVE_TO, pos); + this.call(DiCommand.MOTOR_EASY_MOVE_TO, pos); this.waitForFinish(); } @@ -28,7 +28,7 @@ public class DiActServo extends DiActuatorBase { public void moveTo( String key, Object... args ) { Integer pos = this.getLocationValue(key, args); this.log("moveTo #{}={}", key, pos); - this.call(DiCommand.MOTO_EASY_MOVE_TO, pos); + this.call(DiCommand.MOTOR_EASY_MOVE_TO, pos); this.waitForFinish(); } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorClose.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorClose.java index cb9cb53..8380df5 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorClose.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorClose.java @@ -1,17 +1,17 @@ package com.my.graphiteDigesterBg.task; +import com.my.graphiteDigesterBg.MyDevice; import com.my.graphiteDigesterBg.diframe.DiTaskBase; import com.my.graphiteDigesterBg.diframe.Task; +import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; @Task(name="DoorClose") public class TaskDoorClose extends DiTaskBase { @Override public void run() { this.setStatus(TaskStatus.RUNNING); - // @TODO : 关闭门 - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + + DiActMotor doorMotor = this.getActuator(MyDevice.ACT_DOOR_MOTOR, DiActMotor.class); + doorMotor.moveToIO(1, 1); + this.setStatus(TaskStatus.FINISHED); } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorOpen.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorOpen.java index 9778c82..8f44448 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorOpen.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskDoorOpen.java @@ -1,17 +1,17 @@ package com.my.graphiteDigesterBg.task; +import com.my.graphiteDigesterBg.MyDevice; import com.my.graphiteDigesterBg.diframe.DiTaskBase; import com.my.graphiteDigesterBg.diframe.Task; +import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; @Task(name="DoorOpen") public class TaskDoorOpen extends DiTaskBase { @Override public void run() { this.setStatus(TaskStatus.RUNNING); - // @TODO : 打开门 - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + + DiActMotor doorMotor = this.getActuator(MyDevice.ACT_DOOR_MOTOR, DiActMotor.class); + doorMotor.reset(); + this.setStatus(TaskStatus.FINISHED); } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java index 8ea6805..3ba0e6c 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java @@ -13,6 +13,11 @@ public class TaskStartReset extends DiTaskBase { runtimeVars.set("IsDeviceReady", "NO"); runtimeVars.set("IsTaskStartResetExecuting", "YES"); + // 门电机 + DiActMotor doorMotor = this.getActuator(MyDevice.ACT_DOOR_MOTOR, DiActMotor.class); + doorMotor.setEnable(true); + doorMotor.moveToIO(1, 1); + // 试管夹爪舵机 DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); transferClipServo.setEnable(true); diff --git a/src/src/main/resources/device.yml b/src/src/main/resources/device.yml index e1c53b0..ae8d8a6 100644 --- a/src/src/main/resources/device.yml +++ b/src/src/main/resources/device.yml @@ -1,11 +1,11 @@ connection : class : com.my.graphiteDigesterBg.diframe.connection.DiConSerialPort - path : COM6 + path : COM3 baudRate : 921600 frameTimeout : 100 callTimeout : 5000 mode : binary # text | hex | binary - commandLogEnable : false + commandLogEnable : true # class : com.my.graphiteDigesterBg.diframe.connection.DiConWebsocket # uri : ws://127.0.0.1:8899/device # mode : hex @@ -328,6 +328,23 @@ actuators : stepMotorIRun: 25 volumePerCircle: 0.1 + - name : 设备门电机 + key: DoorMotor + mid: 61 + type: Motor + shaft: 0 + oneCirclePulse: 100 + oneCirclePulseDenominator: 1 + defaultVelocity: 50 + defaultAcc: 300 + defaultDec: 300 + runToZeroSpeed: 50 + runToZeroDec: 30 + lookZeroEdgeSpeed: 50 + lookZeroEdgeDec: 30 + stepMotorIHold: 0 + stepMotorIRun: 4 + # device registers registers : # 加热盘 Slot Cover