huang
2025-09-03 6c9369ab9b7da99687857004470e8d7824eb69ae
JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
@@ -2,23 +2,18 @@
import com.mes.tools.HexConversion;
import com.mes.utils.HexUtil;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.mes.tools.HexConversion.*;
import static com.mes.tools.HexConversion.intToBytesDesc;
@Component
@Slf4j
@@ -43,12 +38,19 @@
        }
    }
    //连接
    public void connect(){
    public boolean connect() {
        try {
            this.socket=new Socket(Ip,Port);
            this.socket.setSoTimeout(2000);
        }catch (Exception e) {
            log.info("The IP address of the host cannot be determined:{}",e.getMessage());
            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.error("PLC连接失败", e);
            this.socket = null;
            return false;
        }
    }
    //关闭连接
@@ -102,7 +104,10 @@
                    bit[0]=Byte.parseByte(fontBitString[plcParameter.getAddressLength()]);
                    plcParameter.setReadByte(bit);
                }else{
                    plcParameter.setReadByte(Arrays.copyOfRange(content,plcParameter.getAddressStart(),(plcParameter.getAddressStart()+plcParameter.getAddressLength())));
                    String plcAddressBegin = plcAgreement.plcAddressBegin;
                    Integer addressIndex = plcParameter.getAddressStart();
                    int address = addressIndex -HexUtil.hexToInt(plcAddressBegin)*2;
                    plcParameter.setReadByte(Arrays.copyOfRange(content,address,(address+plcParameter.getAddressLength())));
                }
            }
            return true;