whyclj
2020-09-19 9cf4fd8697365dfcf1809c0c5dd4a8c151a4f51e
添加设备连接状态记录
6个文件已修改
70 ■■■■■ 已修改文件
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_4KW_SocketClient_Thread.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_Task_SQL.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusMaster.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/sql/Sql_Mysql.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/version_inf/version_inf.txt 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_4KW_SocketClient_Thread.java
@@ -99,6 +99,10 @@
                //System.err.println(einf.electric_id+"====="+((new Date()).getTime()-last.getTime()));
                last = new Date();
                
                Electrical_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, einf.electric_id, master);
                //判断当前设备是否断开连接
                if(master.getTotalerr() >3) {
                    einf.lose_conn = true;
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_Task_SQL.java
@@ -8,6 +8,7 @@
import java.util.List;
import com.base.Com;
import com.modbus.data.MyModbusMaster;
import com.mysql.jdbc.EscapeTokenizer;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
@@ -893,4 +894,37 @@
            sql.close_con();
        }
    }
    /**
     *     插入或更新当前设备的连接状态
     * @param pool
     * @param dev_id
     * @param master
     */
    public static void insertOrUpdateDeviceConnectState(MysqlConnPool pool,int dev_id,MyModbusMaster master) {
        String sql_str_sel = " SELECT * FROM "+Sql_Mysql.Tb_Device_ConnectState+" WHERE dev_id = " + dev_id;
        String sql_str_ins = " INSERT INTO "+Sql_Mysql.Tb_Device_ConnectState+"(dev_id,connect_en,record_time) values("+dev_id+","+master.getConnectState()+",'"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"');";
        String sql_str_upd = " UPDATE "+Sql_Mysql.Tb_Device_ConnectState+" SET connect_en = "+master.getConnectState()+",record_time='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"' WHERE dev_id = " + dev_id;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str_sel);
            if(res.next()) {
                sql.sqlMysqlExecute(sql_str_upd);
            }else {
                sql.sqlMysqlExecute(sql_str_ins);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                sql.close_con();
            }
        }
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusMaster.java
@@ -7,9 +7,11 @@
    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;                                //总的错误计数            //用于判别设备是否掉线
    private int totalerr = 31;                            //总的错误计数[默认失去连接]    用于判别设备是否掉线
    private String target_ip;                            //目标ip
    private int slaveId;                                //设备ID
    
@@ -27,7 +29,7 @@
            reConnect();
        }
        if(this.totalerr > 99999999) {
            this.totalerr = 5;
            this.totalerr = 30;
        }
        this.totalerr ++;
    }
@@ -83,6 +85,13 @@
        
    }
    
    public int getConnectState() {
        if(this.totalerr < LOSE_CONNECT_COUNT) {
            return 1;
        }
        return 0;
    }
    public int getTotalerr() {
        return totalerr;
    }
ElectricalSystem_MonitorServer_4KW/src/com/modbus/data/MyModbusUtils.java
@@ -147,10 +147,18 @@
 
    public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){
        batch.setContiguousRequests(false);
        boolean isSuccess = true;
        try {
            return master.getMaster().send(batch);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
            isSuccess = false;
        } finally {
            if(isSuccess) {
                master.clearError();
            }else {
                master.addErrorCount();
            }
        }
        return null;
    }
@@ -348,7 +356,7 @@
            tcpMaster.setValue(locator, value);
        } catch (ModbusTransportException | ErrorResponseException e) {
            //e.printStackTrace();
            isSuccess = true;
            isSuccess = false;
        } finally {
            if(isSuccess) {
                master.clearError();
ElectricalSystem_MonitorServer_4KW/src/com/sql/Sql_Mysql.java
@@ -35,6 +35,8 @@
    final public static String DB_Motor_Realhistory = "`db_motor_realhistory`";
    
    final public static String DB_ElectricSystem = "`db_electricsystem`";
    final public static String DB_Electric2MWSystem = "`db_electric2mwsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
@@ -185,6 +187,8 @@
    
    public final static String Tb_Electric_Readhist_Data = DB_ElectricSystem + ".tb_electric_realhist_data_";
    
    public final static String Tb_Device_ConnectState = DB_Electric2MWSystem+".tb_device_connectstate";                //设备通讯状态表
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    
ElectricalSystem_MonitorServer_4KW/src/com/version_inf/version_inf.txt
@@ -5,4 +5,7 @@
    添加历史实时数据记录功能
    
V1.103 at 2020-08-25 lijun
    读取实时节点是批量读取,并且注释控制节点的写入
    读取实时节点是批量读取,并且注释控制节点的写入
V1.203 at 2020-09-19 lijun
    添加设备连接状态记录更新