Browse Source

opt: 1.解决写入plc报错导致和ndc断开连接。2.解决处理沾包时数组index超出报警。3.解决指令和任务不一致问题。4.新增定时任务自动发送充电任务给ndc。

1
丁世豪 3 months ago
parent
commit
992b559873
  1. 11
      nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java
  2. 12
      nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java
  3. 8
      nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
  4. 24
      nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java

11
nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java

@ -200,7 +200,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
if (!ObjectUtil.isEmpty(inst)) {
instructionService.finish(inst.getInstruction_id());
} else {
log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
log.info("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!");
}
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
log.info("指令号:{},已反馈agv任务完成!");
@ -232,7 +232,11 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
if (ObjectUtil.isNotEmpty(device)) {
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
try {
agvNdcOneDeviceDriver.processSocket(arr);
}catch (Exception e){
log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage());
}
}
}
@ -247,7 +251,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
// 更新偏移量,继续处理下一个数据包
offset+=messageHeaderLength;
// ArrayUtils.indexOf()
int index = IntStream.range(offset, packetData.length)
int index = IntStream.range(offset, packetData.length - 1)
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
.findFirst()
.orElse(-1);
@ -260,7 +264,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
}
}else {
log.info("消息头无效,不处理。");
int index = IntStream.range(offset, packetData.length)
int index = IntStream.range(offset, packetData.length - 1)
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
.findFirst()
.orElse(-1);
@ -281,6 +285,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
s.close();
}
System.out.println(e.getMessage());
log.error("异常信息:{}", e.getMessage());
e.printStackTrace();
} finally {

12
nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java

@ -96,8 +96,8 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
s = new Socket(ip, port);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.println("NDCAgv链接成功");
log.info("NDCAgv链接成功");
System.out.println("TwoNDCAgv链接成功");
log.info("TwoNDC2Agv链接成功");
while (bConnected) {
int count = dis.read(b);
@ -231,7 +231,11 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
if (ObjectUtil.isNotEmpty(device)) {
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
try {
agvNdcOneDeviceDriver.processSocket2(arr);
}catch (Exception e){
log.error("处理phase:{},发生异常。异常信息:{}",phase,e.getMessage());
}
}
}
@ -246,7 +250,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
// 更新偏移量,继续处理下一个数据包
offset+=messageHeaderLength;
// ArrayUtils.indexOf()
int index = IntStream.range(offset, packetData.length)
int index = IntStream.range(offset, packetData.length-1)
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
.findFirst()
.orElse(-1);
@ -259,7 +263,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
}
}else {
log.info("消息头无效,不处理。");
int index = IntStream.range(offset, packetData.length)
int index = IntStream.range(offset, packetData.length-1)
.filter(i -> packetData[i] == 135 && packetData[i + 1] == 205)
.findFirst()
.orElse(-1);

8
nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java

@ -1472,8 +1472,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
JSONObject resp = acsToWmsService.feedAgvTaskAction(ja);
if ("200".equals(resp.getString("code"))) {
JSONObject respjson = JSONObject.parseObject(resp.getString("msg"));
inst.setInstruction_status("1");
inst.setExecute_status("2");
//解决指令和任务不一致问题,放货完成后执行修改指令时,ndc上报phase10 先执行的修改指令状态完成,再执行这条修改导致指令完成被脏数据覆盖。
//放货完成后 修改指令状态为完成。
if (status == 4){
inst.setInstruction_status("2");
}
inst.setExecute_status(status.toString());
instructionService.update(inst);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)

24
nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateChargingTaskToNDC.java

@ -0,0 +1,24 @@
package org.nl.quartz.task;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.server.NDCAgvService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author liejiu
*/
@Slf4j
@Component
public class AutoCreateChargingTaskToNDC {
@Autowired
NDCAgvService ndcAgvService;
public void run(String threadCode) throws Exception {
String[] threadCodes = threadCode.split(",");
for (String code : threadCodes) {
ndcAgvService.createChargingTaskToNDC(code);
}
}
}
Loading…
Cancel
Save