Browse Source

启动初始化完成

master
sige 2 years ago
parent
commit
93ec1188a2
  1. 4
      src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java
  2. 2
      src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java
  3. 4
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java
  4. 33
      src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConSerialPort.java
  5. 6
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskDigestion.java
  6. 17
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java
  7. 14
      src/src/main/resources/application.yml
  8. 12
      src/src/main/resources/device.yml

4
src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java

@ -63,7 +63,7 @@ public class MyApplicationRunner implements ApplicationRunner {
actuators.register(MyDevice.ACT_TRANSFER_UD_MOTOR, new DiActMotor(){{
mid = 21;
}});
actuators.register(MyDevice.ACT_TRANSFER_CLIP_SERVO, new DiActMotor(){{
actuators.register(MyDevice.ACT_TRANSFER_CLIP_SERVO, new DiActServo(){{
mid = 22;
}});
actuators.register(MyDevice.ACT_TRANSFER_LR_MOTOR, new DiActMotor(){{
@ -75,7 +75,7 @@ public class MyApplicationRunner implements ApplicationRunner {
actuators.register(MyDevice.ACT_LIQUID_PLATE_MOTOR, new DiActMotor(){{
mid = 51;
}});
actuators.register(MyDevice.ACT_LIQUID_PERISTALTIC_PUMP, new DiActPeristalticPump(){{
actuators.register(MyDevice.ACT_LIQUID_PERISTALTIC_PUMP_0, new DiActPeristalticPump(){{
mid = 61;
}});
}

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

@ -8,7 +8,7 @@ public class MyDevice extends DiDevice {
public static String ACT_TRANSFER_CLIP_SERVO = "transferClipServo";
public static String ACT_LIQUID_MOTOR = "liquidMotor";
public static String ACT_LIQUID_PLATE_MOTOR = "liquidPlateMotor";
public static String ACT_LIQUID_PERISTALTIC_PUMP = "liquidPeristalticPump";
public static String ACT_LIQUID_PERISTALTIC_PUMP_0 = "liquidPeristalticPump_0";
public static String IO_HEAT_SLOT_01_HEATER_01 = "heatSlot1Heater1";
public static String IO_HEAT_SLOT_01_HEATER_02 = "heatSlot1Heater2";

4
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java

@ -1,5 +1,7 @@
package com.my.graphiteDigesterBg.diframe;
import java.nio.ByteBuffer;
import java.util.Timer;
public class DiCommandRequest {
// message id
public short id;
@ -15,4 +17,6 @@ public class DiCommandRequest {
public Boolean isResponseReceived = false;
// timeout count
public Integer timeoutCount = 0;
// timeout timer
public Timer timeoutTimer = null;
}

33
src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConSerialPort.java

@ -136,6 +136,10 @@ public class DiConSerialPort implements DiDeviceConnection {
}
request.response = this.receivedData;
request.isResponseReceived = true;
if ( null != request.timeoutTimer ) {
request.timeoutTimer.cancel();
request.timeoutTimer = null;
}
this.receivedData = null;
synchronized ( request ) {
request.notify();
@ -148,18 +152,7 @@ public class DiConSerialPort implements DiDeviceConnection {
byte[] data = request.parameter.array();
this.connection.writeBytes(data, data.length);
LOG.info("Command => {} : [{}]", request.parameterText, DiByteBuffer.toHex(request.parameter));
// setup timeout timer
TimerTask callTimeoutTimerTask = new TimerTask() {
@Override
public void run() {
DiConSerialPort.this.handleCallTimeout(request);
}
};
Timer callTimeoutTimer = new Timer();
Integer callTimeout = this.device.getConfig("connection.callTimeout", Integer.class);
callTimeoutTimer.schedule(callTimeoutTimerTask, callTimeout);
this.setupRequestTimeoutTimer(request);
synchronized ( request ) {
try {
request.wait();
@ -175,9 +168,11 @@ public class DiConSerialPort implements DiDeviceConnection {
if ( request.isResponseReceived ) {
return ;
}
request.timeoutCount ++;
if ( request.timeoutCount > 3 ) {
synchronized ( request ) {
request.timeoutTimer = null;
request.errorCode = 8000;
request.notify();
}
@ -187,5 +182,19 @@ public class DiConSerialPort implements DiDeviceConnection {
byte[] data = request.parameter.array();
this.connection.writeBytes(data, data.length);
LOG.info("Command (Retry:{}) => {} : [{}]", request.timeoutCount, request.parameterText, DiByteBuffer.toHex(request.parameter));
this.setupRequestTimeoutTimer(request);
}
// setup request timeout timer
private void setupRequestTimeoutTimer(DiCommandRequest request) {
TimerTask callTimeoutTimerTask = new TimerTask() {
@Override
public void run() {
DiConSerialPort.this.handleCallTimeout(request);
}
};
request.timeoutTimer = new Timer();
Integer callTimeout = this.device.getConfig("connection.callTimeout", Integer.class);
request.timeoutTimer.schedule(callTimeoutTimerTask, callTimeout);
}
}

6
src/src/main/java/com/my/graphiteDigesterBg/task/TaskDigestion.java

@ -1,16 +1,10 @@
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.DiActPeristalticPump;
@Task(name="Digestion")
public class TaskDigestion extends DiTaskBase {
@Override
public void run() {
DiActPeristalticPump peristalticPump = (DiActPeristalticPump)this.getDevice().getActuators().get(MyDevice.ACT_LIQUID_PERISTALTIC_PUMP);
peristalticPump.setEnable(true);
peristalticPump.rotate();
System.out.println("TaskDigestion.run()");
this.setStatus(TaskStatus.FINISHED);
}

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

@ -4,6 +4,7 @@ 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.DiActPeristalticPump;
import com.my.graphiteDigesterBg.diframe.actuator.DiActServo;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlot;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager;
@ -65,7 +66,21 @@ public class TaskStartReset extends DiTaskBase {
heatPlateMotor.activeConfig();
heatPlateMotor.reset();
//
// 试管夹爪舵机
DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class);
transferClipServo.setEnable(true);
registers.resetAllByModuleId(transferClipServo.getMid());
transferClipServo.activeConfig();
// 蠕动泵
for (int i = 0; i<1; i++) {
String pumpKey = "liquidPeristalticPump_" + Integer.toString(i);
DiActPeristalticPump pump = this.getActuator(pumpKey, DiActPeristalticPump.class);
pump.setEnable(true);
registers.resetAllByModuleId(pump.getMid());
pump.activeConfig();
}
this.setStatus(TaskStatus.FINISHED);
}
}

14
src/src/main/resources/application.yml

@ -4,16 +4,4 @@ device :
path : COM7
baudRate : 921600
frameTimeout : 1000
mode : binary # text | hex | binary
# device registers
registers : ["1", "2"]
# - {name: "LiquidMotorShaft" , mid : 41, index : 1051, defaultValue : 1}
# - {name: "LiquidMotorOneCirclePulse" , mid : 41, index : 1052, defaultValue : 10000}
# - {name: "LiquidMotorOneCirclePulseDenominator" , mid : 41, index : 1053, defaultValue : 18}
# - {name: "LiquidMotorDefaultVelocity" , mid : 41, index : 1054, defaultValue : 40}
# - {name: "LiquidMotorDefaultAcc" , mid : 41, index : 1055, defaultValue : 2}
# - {name: "LiquidMotorDefaultDec" , mid : 41, index : 1056, defaultValue : 2}
# - {name: "LiquidMotorRunToZeroSpeed" , mid : 41, index : 1073, defaultValue : 50}
# - {name: "LiquidMotorRunToZeroDec" , mid : 41, index : 1074, defaultValue : 30}
# - {name: "LiquidMotorLookZeroEdgeSpeed" , mid : 41, index : 1075, defaultValue : 25}
# - {name: "LiquidMotorLookZeroEdgeDec" , mid : 41, index : 1076, defaultValue : 30}
mode : binary # text | hex | binary

12
src/src/main/resources/device.yml

@ -75,3 +75,15 @@ registers :
- {key: "HeatingPlateMotorLookZeroEdgeDec" , mid : 11, index : 1076, defaultValue : 30}
- {key: "HeatingPlateMotorStepMotorIHold" , mid : 11, index : 1058, defaultValue : 0}
- {key: "HeatingPlateMotorStepMotorIRun" , mid : 11, index : 1059, defaultValue : 15}
# 试管夹爪舵机
- {key: "TransferClipServeMotorDefaultVelocity" , mid : 22, index : 1054, defaultValue : 400}
- {key: "TransferClipServeMotorDefaultTorque" , mid : 22, index : 1077, defaultValue : 300}
# 加酸蠕动泵
- {key: "LiquidPeristalticPump0MotorShaft" , mid : 61, index : 1051, defaultValue : 0}
- {key: "LiquidPeristalticPump0MotorOneCirclePulse" , mid : 61, index : 1052, defaultValue : 100}
- {key: "LiquidPeristalticPump0MotorOneCirclePulseDenominator" , mid : 61, index : 1053, defaultValue : 1}
- {key: "LiquidPeristalticPump0MotorDefaultVelocity" , mid : 61, index : 1054, defaultValue : 500}
- {key: "LiquidPeristalticPump0MotorDefaultAcc" , mid : 61, index : 1055, defaultValue : 300}
- {key: "LiquidPeristalticPump0MotorDefaultDec" , mid : 61, index : 1056, defaultValue : 300}
- {key: "LiquidPeristalticPump0MotorStepMotorIHold" , mid : 61, index : 1058, defaultValue : 0}
- {key: "LiquidPeristalticPump0MotorStepMotorIRun" , mid : 61, index : 1059, defaultValue : 4}
Loading…
Cancel
Save