package com.modbus.data; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.ip.IpParameters; public class MyModbusMaster { public final static int SLAVEID_DEFAULT = 2; public final static int MAX_ERROR_COUNT = 2; //×î´óÁ¬Ðø´íÎó¼ÆÊý public final static int LOSE_CONNECT_COUNT = 20; //ͨѶÖжÏ×î´ó¼ÆÊý private ModbusMaster master; private int errcount; //´íÎó¼ÆÊý ´íÎóÁ¬Ðø³¬¹ýÈý¸öÊ±ÖØÐ»ñÈ¡master private int totalerr = 31; //×ܵĴíÎó¼ÆÊý[ĬÈÏʧȥÁ¬½Ó] ÓÃÓÚÅбðÉ豸ÊÇ·ñµôÏß private String target_ip; //Ä¿±êip private int slaveId; //É豸ID public Logger logger = null; public MyModbusMaster(String target_ip,int slaveId) { this.target_ip = target_ip; this.slaveId = slaveId; IpParameters params = new IpParameters(); params.setHost(target_ip); this.master = MyModbusFactory.getMaster(params); logger = LogManager.getLogger(this.getClass()); } public void addErrorCount() { this.errcount++; if(this.errcount > MAX_ERROR_COUNT) { reConnect(); } if(this.totalerr > 99999999) { this.totalerr = 5; } this.totalerr ++; } //Çå¿Õ´íÎó¼ÆÊý public void clearError() { errcount = 0; totalerr = 0; } public void reConnect() { //System.out.println(target_ip); IpParameters params = new IpParameters(); params.setHost(target_ip); if(this.master != null) { //Çå¿ÕÉÏÒ»¸ömaster this.master.destroy(); } this.errcount = 0; this.master = MyModbusFactory.getMaster(params); } /** * ÅжϻñÈ¡µ½µÄÖµÊÇ·ñΪ¿Õ * @param target * @param source * @return */ public static Object checkNullData(Object target,Object source) { if(null == target) { return source; } try { if(target instanceof Number) { if(source instanceof Integer) { return ((Number) target).intValue(); }else if(source instanceof Float) { return ((Number) target).floatValue(); } } if(target instanceof Boolean) { //ÅжÏBooleanÀàÐÍÊý¾Ý if((Boolean)target) { target = 1; }else { target = 0; } } } catch (Exception e) { e.printStackTrace(); } return target; } public int getConnectState() { if(this.totalerr < LOSE_CONNECT_COUNT) { return 1; } return 0; } public int getTotalerr() { return totalerr; } public void setTotalerr(int totalerr) { this.totalerr = totalerr; } public ModbusMaster getMaster() { return master; } public int getErrcount() { return errcount; } public void setMaster(ModbusMaster master) { this.master = master; } public void setErrcount(int errcount) { this.errcount = errcount; } public String getTarget_ip() { return target_ip; } public void setTarget_ip(String target_ip) { this.target_ip = target_ip; } public int getSlaveId() { return slaveId; } public void setSlaveId(int slaveId) { this.slaveId = slaveId; } @Override public String toString() { return "MyModbusMaster [SLAVEID_DEFAULT=" + SLAVEID_DEFAULT + ", master=" + master + ", errcount=" + errcount + ", target_ip=" + target_ip + ", slaveId=" + slaveId + "]"; } }