|
@ -52,61 +52,68 @@ public class SyringePipelineWash extends BaseCommandHandler { |
|
|
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "清洗速度不能大于100")); |
|
|
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "清洗速度不能大于100")); |
|
|
throw new RuntimeException("预充速度不能大于100"); |
|
|
throw new RuntimeException("预充速度不能大于100"); |
|
|
} |
|
|
} |
|
|
deviceStatus.setCleaningSyringePipeline(true); |
|
|
|
|
|
return runAsync(() -> { |
|
|
|
|
|
try { |
|
|
|
|
|
//2.判断z轴是否在安全距离,如果不在安全距离可以不抬升z轴 |
|
|
|
|
|
DeviceCommand motorXyzPositionGetCommand = DeviceCommandGenerator.motorXyzPositionGet(); |
|
|
|
|
|
CommandFuture motorXyzPositionGetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXyzPositionGetCommand); |
|
|
|
|
|
commandWait(motorXyzPositionGetCommandFuture); |
|
|
|
|
|
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult(); |
|
|
|
|
|
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition"); |
|
|
|
|
|
if (zAxisPosition == null) { |
|
|
|
|
|
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult)); |
|
|
|
|
|
throw new RuntimeException("获得电机XYZ相对原点坐标失败"); |
|
|
|
|
|
} |
|
|
|
|
|
zAxisPosition = Math.abs(zAxisPosition); |
|
|
|
|
|
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height")); |
|
|
|
|
|
double safeZHeight = Double.parseDouble(safeZHeightSysSettings.getValue()); |
|
|
|
|
|
if (zAxisPosition > safeZHeight) { //z轴超出安全距离,抬升z轴 |
|
|
|
|
|
DeviceCommand motorZPositionSetCommand = DeviceCommandGenerator.motorZPositionSet(safeZHeight, speed); |
|
|
|
|
|
CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZPositionSetCommand); |
|
|
|
|
|
commandWait(motorZPositionSetCommandFuture); |
|
|
|
|
|
} |
|
|
|
|
|
Position wasteLiquor = positionService.getOne(new LambdaQueryWrapper<Position>().eq(Position::getPointCode, "waste_liquor")); |
|
|
|
|
|
//3.x轴移动到废液位置 |
|
|
|
|
|
DeviceCommand motorXPositionSetCommand = DeviceCommandGenerator.motorXPositionSet(wasteLiquor.getX(), speed); |
|
|
|
|
|
CommandFuture motorXPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXPositionSetCommand); |
|
|
|
|
|
commandWait(motorXPositionSetCommandFuture); |
|
|
|
|
|
//4.下降z轴高度,防止飞溅 |
|
|
|
|
|
DeviceCommand motorZPositionSetCommand = DeviceCommandGenerator.motorZPositionSet(wasteLiquor.getZ(), speed); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
//2.判断z轴是否在安全距离,如果不在安全距离可以不抬升z轴 |
|
|
|
|
|
DeviceCommand motorXyzPositionGetCommand = DeviceCommandGenerator.motorXyzPositionGet(); |
|
|
|
|
|
CommandFuture motorXyzPositionGetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXyzPositionGetCommand); |
|
|
|
|
|
commandWait(motorXyzPositionGetCommandFuture); |
|
|
|
|
|
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult(); |
|
|
|
|
|
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition"); |
|
|
|
|
|
if (zAxisPosition == null) { |
|
|
|
|
|
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult)); |
|
|
|
|
|
throw new RuntimeException("获得电机XYZ相对原点坐标失败"); |
|
|
|
|
|
} |
|
|
|
|
|
zAxisPosition = Math.abs(zAxisPosition); |
|
|
|
|
|
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height")); |
|
|
|
|
|
double safeZHeight = Double.parseDouble(safeZHeightSysSettings.getValue()); |
|
|
|
|
|
if (zAxisPosition > safeZHeight) { //z轴超出安全距离,抬升z轴 |
|
|
|
|
|
DeviceCommand motorZPositionSetCommand = DeviceCommandGenerator.motorZPositionSet(safeZHeight, 15.0); |
|
|
CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZPositionSetCommand); |
|
|
CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZPositionSetCommand); |
|
|
commandWait(motorZPositionSetCommandFuture); |
|
|
commandWait(motorZPositionSetCommandFuture); |
|
|
|
|
|
|
|
|
//5.打开三通阀注射器管路 |
|
|
|
|
|
DeviceCommand threeWayValveOpenNozzlePipelineCommand = DeviceCommandGenerator.threeWayValveOpenNozzlePipeline(); |
|
|
|
|
|
CommandFuture threeWayValveOpenNozzlePipelineCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), threeWayValveOpenNozzlePipelineCommand); |
|
|
|
|
|
commandWait(threeWayValveOpenNozzlePipelineCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
//6.打开清洗阀 |
|
|
|
|
|
DeviceCommand washValveOpenCommand = DeviceCommandGenerator.washValveOpen(); // 生成打开清洗阀指令 |
|
|
|
|
|
CommandFuture washValveOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), washValveOpenCommand); |
|
|
|
|
|
commandWait(washValveOpenCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
//7.开启喷嘴阀 |
|
|
|
|
|
DeviceCommand nozzleValveOpenCommand = DeviceCommandGenerator.nozzleValveOpen(); // 开启喷嘴阀 |
|
|
|
|
|
CommandFuture nozzleValveOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), nozzleValveOpenCommand); |
|
|
|
|
|
commandWait(nozzleValveOpenCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//7.设置注射泵速度,推注射泵 |
|
|
|
|
|
DeviceCommand syringePumpStartCommand = DeviceCommandGenerator.syringePumpForward(speed); // 生成移动注射泵指令 |
|
|
|
|
|
CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), syringePumpStartCommand); |
|
|
|
|
|
commandWait(syringePumpStartCommandFuture); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
deviceStatus.setCleaningSyringePipeline(false); |
|
|
|
|
|
throw new RuntimeException(e); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
Position wasteLiquor = positionService.getOne(new LambdaQueryWrapper<Position>().eq(Position::getPointCode, "waste_liquor")); |
|
|
|
|
|
//3.x轴移动到废液位置 |
|
|
|
|
|
DeviceCommand motorXPositionSetCommand = DeviceCommandGenerator.motorXPositionSet(wasteLiquor.getX(), 20.0); |
|
|
|
|
|
CommandFuture motorXPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXPositionSetCommand); |
|
|
|
|
|
commandWait(motorXPositionSetCommandFuture); |
|
|
|
|
|
//4.下降z轴高度,防止飞溅 |
|
|
|
|
|
DeviceCommand motorZPositionSetCommand = DeviceCommandGenerator.motorZPositionSet(wasteLiquor.getZ(), 20.0); |
|
|
|
|
|
CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZPositionSetCommand); |
|
|
|
|
|
commandWait(motorZPositionSetCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
//5.开启喷嘴阀 |
|
|
|
|
|
DeviceCommand nozzleValveOpenCommand = DeviceCommandGenerator.nozzleValveOpen(); // 开启喷嘴阀 |
|
|
|
|
|
CommandFuture nozzleValveOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), nozzleValveOpenCommand); |
|
|
|
|
|
commandWait(nozzleValveOpenCommandFuture); |
|
|
|
|
|
Thread.sleep(500); |
|
|
|
|
|
|
|
|
|
|
|
//6.设置注射泵速度,推注射泵 |
|
|
|
|
|
DeviceCommand syringePumpStartCommand = DeviceCommandGenerator.syringePumpForward(speed); // 生成移动注射泵指令 |
|
|
|
|
|
CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), syringePumpStartCommand); |
|
|
|
|
|
commandWait(syringePumpStartCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//5.打开三通阀注射器管路 |
|
|
|
|
|
// DeviceCommand threeWayValveOpenNozzlePipelineCommand = DeviceCommandGenerator.threeWayValveOpenNozzlePipeline(); |
|
|
|
|
|
// CommandFuture threeWayValveOpenNozzlePipelineCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), threeWayValveOpenNozzlePipelineCommand); |
|
|
|
|
|
// commandWait(threeWayValveOpenNozzlePipelineCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
//6.打开清洗阀 |
|
|
|
|
|
// DeviceCommand washValveOpenCommand = DeviceCommandGenerator.washValveOpen(); // 生成打开清洗阀指令 |
|
|
|
|
|
// CommandFuture washValveOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), washValveOpenCommand); |
|
|
|
|
|
// commandWait(washValveOpenCommandFuture); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deviceStatus.setCleaningSyringePipeline(true); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
deviceStatus.setCleaningSyringePipeline(false); |
|
|
|
|
|
throw new RuntimeException(e); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return runAsync(() -> { |
|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|