严智鑫
2025-10-22 979f95e192e306bf8ae6552415d20c57015baab4
优化:短连接+抛异常 防止异常导致端口占用 无法连接设备
10个文件已修改
191 ■■■■ 已修改文件
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/config.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/utils/constants.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -46,29 +46,29 @@
        List<Machine> machineDispensing =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动点胶机").eq(Machine::getState,"开工"));
        List<Machine> machineListRotate =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"旋转台").eq(Machine::getState,"开工"));
        List<Machine> machineListLamination =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动贴膜机").eq(Machine::getState,"开工"));
//        for (Machine item:machineListLoad){
//            new MachineLoad(item,primitiveTaskMapper,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
//        }
//        for (Machine item:machineListEdging){
//            new MachineEdging(item,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
//        }
//        for (Machine item:machineListFlipSlice){
//            new MachineFlipSlice(item,machineMapper,taskingService).start();
//        }
//        for (Machine item:machineListMarking){
//            new MachineMarking(item,machineMapper,taskingService).start();
//        }
//        for (Machine item:machineListSilkScreen){
//            new MachineSilkScreen(item,machineMapper,taskingService).start();
//        }
//        for (Machine item:machineDispensing){
//            new MachineDispensing(item,machineMapper,taskingService).start();
//        }
//        for (Machine item:machineListRotate){
//            new MachineRotate(item,machineMapper,taskingService).start();
//        }
//        for (Machine item:machineListLamination){
//            new MachineLamination(item,machineMapper,taskingService).start();
//        }
        for (Machine item:machineListLoad){
            new MachineLoad(item,primitiveTaskMapper,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
        }
        for (Machine item:machineListEdging){
            new MachineEdging(item,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start();
        }
        for (Machine item:machineListFlipSlice){
            new MachineFlipSlice(item,machineMapper,taskingService).start();
        }
        for (Machine item:machineListMarking){
            new MachineMarking(item,machineMapper,taskingService).start();
        }
        for (Machine item:machineListSilkScreen){
            new MachineSilkScreen(item,machineMapper,taskingService).start();
        }
        for (Machine item:machineDispensing){
            new MachineDispensing(item,machineMapper,taskingService).start();
        }
        for (Machine item:machineListRotate){
            new MachineRotate(item,machineMapper,taskingService).start();
        }
        for (Machine item:machineListLamination){
            new MachineLamination(item,machineMapper,taskingService).start();
        }
    }
}
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
@@ -53,26 +53,29 @@
    }
    public void readData() {
        try {
            byte[] resultValues=plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
//            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
//            int maxRead=1092;
//            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
//                    (PlcMesObject.getPlcAddressLength()/maxRead):
//                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
//            for (int i = 0; i <size ; i++) {
//                int begin=i*maxRead;
//                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
//                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
//                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
//                System.arraycopy(getplcvlues,0,resultValues,begin,length);
//            }
            byte[] resultValues;
            if (PlcMesObject.getPlcAddressLength()>1092){
                resultValues=new byte[PlcMesObject.getPlcAddressLength()];
                int maxRead=1092;
                int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
                        (PlcMesObject.getPlcAddressLength()/maxRead):
                        (PlcMesObject.getPlcAddressLength()/maxRead+1);
                for (int i = 0; i <size ; i++) {
                    int begin=i*maxRead;
                    int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
                    String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
                    byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
                    System.arraycopy(getplcvlues,0,resultValues,begin,length);
                }
            }else{
                resultValues=plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
            }
            if (resultValues.length>0) {
                PlcMesObject.setPlcParameterList(resultValues);
            }
        } catch (Exception e) {
            log.info("异常:ip:{},port:{},配置{},{}",this.ip,this.port,PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
            PlcMesObject=null;
            log.info("异常:ip:{},port:{},错误{},{}",this.ip,this.port,e.getMessage(),e.toString());
        }
    }
}
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineFlipSlice.java
@@ -33,13 +33,14 @@
    public void plcStart() throws Exception {
        Machine machine = machineMapper.selectById(thisMachine.getId());
        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
        s7objectMachine.readData();//按照json文件读取内容
        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
        if (plcParameterObject == null) {
            s7objectMachine.plccontrol.closeS7client();
            return;
        }
        try {
            s7objectMachine.readData();//按照json文件读取内容
            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
            if (plcParameterObject == null) {
                s7objectMachine.plccontrol.closeS7client();
                return;
            }
            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//请求字
            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//请求ID
            PlcParameterInfo plcRequestType = plcParameterObject.getPlcParameter("plcRequestType");//PLC请求
@@ -127,9 +128,10 @@
                nullMachine(machine);
            }
        } catch (Exception e) {
            s7objectMachine.plccontrol.closeS7client();
            log.info("逻辑处理异常:设备id【{}】", machine.getId());
        }
        s7objectMachine.plccontrol.closeS7client();
    }
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLamination.java
@@ -33,13 +33,13 @@
        Machine machine = machineMapper.selectById(thisMachine.getId());
        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
        s7objectMachine.readData();//按照json文件读取内容
        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
        if (plcParameterObject == null) {
            s7objectMachine.plccontrol.closeS7client();
            return;
        }
        try {
            s7objectMachine.readData();//按照json文件读取内容
            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
            if (plcParameterObject == null) {
                s7objectMachine.plccontrol.closeS7client();
                return;
            }
            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//请求字
            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//发送字
            PlcParameterInfo lengthOutOfService = plcParameterObject.getPlcParameter("length");//长
@@ -89,10 +89,10 @@
                }
            }
        } catch (Exception e) {
            s7objectMachine.plccontrol.closeS7client();
            log.info("逻辑处理异常:设备id【{}】", machine.getId());
        }
        s7objectMachine.plccontrol.closeS7client();
    }
    @Override
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
@@ -35,13 +35,13 @@
    public void plcStart()throws Exception {
        Machine machine = machineMapper.selectById(thisMachine.getId());
        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1500);
        s7objectMachine.readData();//按照json文件读取内容
        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
        if (plcParameterObject == null) {
            s7objectMachine.plccontrol.closeS7client();
            return;
        }
        try {
            s7objectMachine.readData();//按照json文件读取内容
            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
            if (plcParameterObject == null) {
                s7objectMachine.plccontrol.closeS7client();
                return;
            }
            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//请求字
            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//请求ID
            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//发送字
@@ -113,10 +113,9 @@
                }
            }
        } catch (Exception e) {
            s7objectMachine.plccontrol.closeS7client();
            log.info("逻辑处理异常:设备id【{}】", machine.getId());
        }
        s7objectMachine.plccontrol.closeS7client();
    }
    @Override
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
@@ -34,14 +34,14 @@
        //旋转台
        Machine machine = machineMapper.selectById(thisMachine.getId());
        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
        s7objectMachine.readData();//按照json文件读取内容
        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
        if (plcParameterObject == null) {
            s7objectMachine.plccontrol.closeS7client();
            return;
        }
        try {
        try {
            s7objectMachine.readData();//按照json文件读取内容
            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
            if (plcParameterObject == null) {
                s7objectMachine.plccontrol.closeS7client();
                return;
            }
            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//请求字
            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//请求ID
            PlcParameterInfo plcRequestType = plcParameterObject.getPlcParameter("plcRequestType");//PLC请求
@@ -131,9 +131,10 @@
                nullMachine(machine);
            }
        } catch (Exception e) {
            s7objectMachine.plccontrol.closeS7client();
            log.info("逻辑处理异常:设备id【{}】", machine.getId());
        }
        s7objectMachine.plccontrol.closeS7client();
    }
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
@@ -9,16 +9,16 @@
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        salve_JomooKBB:
          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
          username: sa
          password: beibo.123/
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        salve_JomooKBB:
#          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
#          username: thok
#          password: jomoo@123
#          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
#          username: sa
#          password: beibo.123/
#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        salve_JomooKBB:
          url: jdbc:sqlserver://10.14.133.16:1433;databasename=JomooKBB
          username: thok
          password: jomoo@123
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
  cloud:
    nacos:
      discovery:
JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
@@ -9,16 +9,16 @@
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        salve_JomooKBB:
          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
          username: sa
          password: beibo.123/
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        salve_JomooKBB:
#          url: jdbc:sqlserver://172.18.19.85:1433;databasename=JomooKBB
#          username: thok
#          password: jomoo@123
#          url: jdbc:sqlserver://localhost:1433;databasename=JomooKBB
#          username: sa
#          password: beibo.123/
#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        salve_JomooKBB:
          url: jdbc:sqlserver://10.14.133.16:1433;databasename=JomooKBB
          username: thok
          password: jomoo@123
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
  cloud:
    nacos:
      discovery:
UI-Project/config.js
@@ -1,13 +1,13 @@
export default {
  serverUrl: "localhost:88/api",
  serverUrl2: "localhost:88"
  //
  // serverUrl: "localhost:88/api",
  // serverUrl2: "localhost:88"
  // serverUrl: "10.36.164.253:88/api",
  //  serverUrl2: "10.36.164.253:88"
  // serverUrl: "10.36.164.200:88/api",
  // serverUrl2: "10.36.164.200:88"
  serverUrl: "10.36.164.200:88/api",
  serverUrl2: "10.36.164.200:88"
    // serverUrl2: "127.0.0.1:88"npm
UI-Project/src/utils/constants.js
@@ -1,4 +1,4 @@
  export const WebSocketHost = "localhost";
  // export const WebSocketHost = "localhost";
//  export const WebSocketHost = "10.36.164.253";
 //export const WebSocketHost = "10.36.164.200";
 export const WebSocketHost = "10.36.164.200";
 export const host = "88";