Browse Source

加热试管卡位初始化

master
sige 2 years ago
parent
commit
2158cd65e6
  1. 10
      src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java
  2. 2
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java
  3. 3
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java
  4. 1
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceResourceManager.java
  5. 2
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiResourceManager.java
  6. 11
      src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java
  7. 32
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlot.java
  8. 25
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlotManager.java
  9. 18
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java
  10. 4
      src/src/main/resources/device.yml

10
src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java

@ -2,7 +2,7 @@ package com.my.graphiteDigesterBg;
import com.my.graphiteDigesterBg.diframe.DiDevice;
public class MyDevice extends DiDevice {
public static String ACT_HEAT_PLATE_MOTOR = "heatPlateMotor";
public static String ACT_HEAT_SLOT_01_COVER_SERVO = "heatSlot01CoverServo";
public static String ACT_HEAT_SLOT_01_COVER_SERVO = "heatSlot0CoverServo";
public static String ACT_TRANSFER_LR_MOTOR = "transferLeftRightMotor";
public static String ACT_TRANSFER_UD_MOTOR = "transferUpDownMotor";
public static String ACT_TRANSFER_CLIP_SERVO = "transferClipServo";
@ -10,10 +10,10 @@ public class MyDevice extends DiDevice {
public static String ACT_LIQUID_PLATE_MOTOR = "liquidPlateMotor";
public static String ACT_LIQUID_PERISTALTIC_PUMP = "liquidPeristalticPump";
public static String IO_HEAT_SLOT_01_HEATER_01 = "heatSlot01Heater01";
public static String IO_HEAT_SLOT_01_HEATER_02 = "heatSlot01Heater02";
public static String IO_HEAT_SLOT_01_HEATER_03 = "heatSlot01Heater03";
public static String IO_HEAT_SLOT_01_HEATER_04 = "heatSlot01Heater04";
public static String IO_HEAT_SLOT_01_HEATER_01 = "heatSlot1Heater1";
public static String IO_HEAT_SLOT_01_HEATER_02 = "heatSlot1Heater2";
public static String IO_HEAT_SLOT_01_HEATER_03 = "heatSlot1Heater3";
public static String IO_HEAT_SLOT_01_HEATER_04 = "heatSlot1Heater4";
public static String IO_AIR_COMPRESSOR = "airCompressor";
public static String RES_HEATING_TUBE_RACK_SLOT = "HeatingTubeRackSlot";

2
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java

@ -4,7 +4,7 @@ import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Order(1)
@Order(2)
@Component
public class DiApplicationRunner implements ApplicationRunner {
@Resource

3
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java

@ -6,7 +6,8 @@ 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_ZERO("motor_easy_move_to_zero", 0x0214);
MOTOR_EASY_MOVE_TO_ZERO("motor_easy_move_to_zero", 0x0214),
MOTO_EASY_MOVE_TO("moto_easy_move_to", 0x0213);
// command name
private final String name;

1
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceResourceManager.java

@ -36,6 +36,7 @@ public class DiDeviceResourceManager {
LOG.info("(Resource) {} => {}", manAnnotation.name(), resManClass.getName());
DiResourceManager man = this.getDiResourceManagerInstance(resManClass);
man.setDevice(this.device);
this.managersNameMap.put(manAnnotation.name(), man);
this.managersClassMap.put(resManClass, man);
}

2
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiResourceManager.java

@ -1,3 +1,5 @@
package com.my.graphiteDigesterBg.diframe;
public interface DiResourceManager {
// set device
void setDevice( DiDevice device );
}

11
src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActServo.java

@ -1,11 +1,14 @@
package com.my.graphiteDigesterBg.diframe.actuator;
import com.my.graphiteDigesterBg.diframe.DiActuatorBase;
import com.my.graphiteDigesterBg.diframe.DiCommand;
public class DiActServo extends DiActuatorBase {
public void moveTo( Integer pos ) {}
// move to position
public void moveTo( Integer pos ) {
this.call(DiCommand.MOTO_EASY_MOVE_TO, pos);
this.waitForFinish();
}
public void moveBy( Integer delta ) {}
public void rotate( Integer direction ) {}
public void stop() {}
public void reset() {}
}

32
src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlot.java

@ -1,12 +1,18 @@
package com.my.graphiteDigesterBg.resource;
import com.my.graphiteDigesterBg.diframe.actuator.DiActServo;
public class ResHeatingTubeRackSlot {
// index of slot
public Integer index;
private final Integer index;
// is slot locked
private Boolean isLocked;
// manager
private final ResHeatingTubeRackSlotManager manager;
public Integer getOperationWindowLocation() {
return 0;
// constructor
public ResHeatingTubeRackSlot( ResHeatingTubeRackSlotManager manager, Integer index ) {
this.isLocked = false;
this.index = index;
this.manager = manager;
}
// get is slot locked
@ -23,4 +29,24 @@ public class ResHeatingTubeRackSlot {
public void unlock() {
this.isLocked = false;
}
// get cover servo
public DiActServo getCoverServo() {
String servoKey = "heatSlot" + this.index.toString() + "CoverServo";
return (DiActServo) this.manager.getDevice().getActuators().get(servoKey);
}
// open cover
public void coverOpen() {
this.getCoverServo().moveTo(1000);
}
// close cover
public void coverClose() {
this.getCoverServo().moveTo(2047);
}
public Integer getOperationWindowLocation() {
return 0;
}
}

25
src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlotManager.java

@ -1,4 +1,5 @@
package com.my.graphiteDigesterBg.resource;
import com.my.graphiteDigesterBg.diframe.DiDevice;
import com.my.graphiteDigesterBg.diframe.DiResourceManagerBase;
import com.my.graphiteDigesterBg.diframe.ResourceManager;
@ -6,11 +7,33 @@ import java.util.ArrayList;
import java.util.List;
@ResourceManager(name="HeatingTubeRackSlot")
public class ResHeatingTubeRackSlotManager extends DiResourceManagerBase {
// device
private DiDevice device;
// slots
private List<ResHeatingTubeRackSlot> slots;
private final List<ResHeatingTubeRackSlot> slots;
// constructor
public ResHeatingTubeRackSlotManager() {
this.slots = new ArrayList<>();
for (int i = 0; i < 1; i++) {
ResHeatingTubeRackSlot slot = new ResHeatingTubeRackSlot(this, i);
this.slots.add(slot);
}
}
// set device
public void setDevice( DiDevice device ) {
this.device = device;
}
// get device
public DiDevice getDevice() {
return this.device;
}
// get slots
public List<ResHeatingTubeRackSlot> getSlots() {
return this.slots;
}
// get free slot

18
src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java

@ -4,6 +4,10 @@ import com.my.graphiteDigesterBg.diframe.DiDeviceRegisterManager;
import com.my.graphiteDigesterBg.diframe.DiTaskBase;
import com.my.graphiteDigesterBg.diframe.Task;
import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor;
import com.my.graphiteDigesterBg.diframe.actuator.DiActServo;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlot;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager;
import java.util.List;
@Task(name="StartReset")
public class TaskStartReset extends DiTaskBase {
@Override
@ -17,7 +21,21 @@ public class TaskStartReset extends DiTaskBase {
liquidMotor.activeConfig();
liquidMotor.reset();
// 加热盘Slot初始化
ResHeatingTubeRackSlotManager heatingSlotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class);
List<ResHeatingTubeRackSlot> heatingSlots = heatingSlotMan.getSlots();
for ( ResHeatingTubeRackSlot slot : heatingSlots ) {
// 初始化加热盘卡Slot盖子
DiActServo slotCoverServo = slot.getCoverServo();
slotCoverServo.setEnable(true);
registers.resetAllByModuleId(slotCoverServo.getMid());
slotCoverServo.activeConfig();
}
// 打开所有加热盘上的试管架盖 假设断电时正在准备取试管架或者试管
for ( ResHeatingTubeRackSlot slot : heatingSlots ) {
slot.coverOpen();
}
this.setStatus(TaskStatus.FINISHED);
}

4
src/src/main/resources/device.yml

@ -6,6 +6,7 @@ connection :
mode : binary # text | hex | binary
# device registers
registers :
# 加液电机
- {key: "LiquidMotorShaft" , mid : 41, index : 1051, defaultValue : 1}
- {key: "LiquidMotorOneCirclePulse" , mid : 41, index : 1052, defaultValue : 10000}
- {key: "LiquidMotorOneCirclePulseDenominator" , mid : 41, index : 1053, defaultValue : 18}
@ -16,3 +17,6 @@ registers :
- {key: "LiquidMotorRunToZeroDec" , mid : 41, index : 1074, defaultValue : 30}
- {key: "LiquidMotorLookZeroEdgeSpeed" , mid : 41, index : 1075, defaultValue : 25}
- {key: "LiquidMotorLookZeroEdgeDec" , mid : 41, index : 1076, defaultValue : 30}
# 加热盘 Slot Cover
- {key: "HeatingPlateSlot1CoverServeMotorDefaultVelocity" , mid : 12, index : 1054, defaultValue : 150}
- {key: "HeatingPlateSlot1CoverServeMotorDefaultTorque" , mid : 12, index : 1077, defaultValue : 330}
Loading…
Cancel
Save