huang
2025-09-03 6c9369ab9b7da99687857004470e8d7824eb69ae
修改plc连接读取失败导致无法重新链接
2个文件已修改
33 ■■■■ 已修改文件
JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
@@ -38,12 +38,19 @@
        }
    }
    //连接
    public void connect(){
    public boolean connect() {
        try {
            if (this.socket != null && !this.socket.isClosed()) {
                this.socket.close();
            }
            this.socket=new Socket(Ip,Port);
            this.socket.setSoTimeout(300);
            log.info("PLC连接成功");
            return true;
        }catch (Exception e) {
            log.info("The IP address of the host cannot be determined:{}",e.getMessage());
            log.error("PLC连接失败", e);
            this.socket = null;
            return false;
        }
    }
    //关闭连接
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
@@ -36,6 +36,7 @@
    public Machine thisMachine;
    //public Long machineId = 2L;
    public List<Map> sendRecords = new ArrayList<>();
    public MachineLoad(Machine machine,PrimitiveTaskMapper primitiveTaskMapper,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
        this.thisMachine = machine;
        this.primitiveTaskMapper = primitiveTaskMapper;
@@ -45,12 +46,18 @@
        this.primitiveTaskService = primitiveTaskService;
        this.lineConfigurationService = lineConfigurationService;
    }
    public void plcStart() {
        Machine machine=machineMapper.selectById(thisMachine.getId());
        ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName());
        modbusTcp1.connect();
        PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement(machine.getFileName());
        ModbusTcp modbusTcp1 = null;
        try {
            Machine machine = machineMapper.selectById(thisMachine.getId());
            modbusTcp1 = new ModbusTcp(machine.getIp(), machine.getPort(), machine.getFileName());
            if (!modbusTcp1.connect()) {
                log.error("连接PLC失败,退出本次操作");
                return;
            }
            PlcAgreement plcAgreement = modbusTcp1.getPlcAgreement(machine.getFileName());
            if(!modbusTcp1.read(plcAgreement)){
                log.info("通讯读取新数据失败");
                if(!"关机".equals(machine.getStatePowerOn())){
@@ -151,9 +158,14 @@
            }
        } catch (Exception e) {
            log.info("交互逻辑错误");
        }
        } finally {
            // 确保连接关闭
            if (modbusTcp1 != null) {
        modbusTcp1.close();
    }
        }
    }
    @Override
    public void run() {
        while (this != null) {