whyclj
2020-10-17 e163b7b3e4d5acc63cfda2fec2dd9034864ccf7a
水冷添加历史实时数据记录功能
1个文件已添加
8个文件已修改
652 ■■■■■ 已修改文件
WaterSystem_MonitorServer/src/com/modbus/data/MyModbusUtils.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/sql/Sql_Mysql.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/version_inf/version_inf.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/WaterSystem_RealDataRecord_Thread.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_Task_SQL.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_alarm.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_inf.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Watersystem_SocketClient_Thread.java 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/main/main_WaterSystem_MonitorServer.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/modbus/data/MyModbusUtils.java
@@ -413,6 +413,9 @@
        return ComBase.changeShortToInt((Short)obj);
    }
    
    public static int readIntergerToInt(Object obj) {
        return (int)obj;
    }
    /**
     *     读取Boolean类型数据
     * @param obj    Boolean类型
WaterSystem_MonitorServer/src/com/sql/Sql_Mysql.java
@@ -190,6 +190,7 @@
    public final static String Tb_water_brach = DB_Watersystem + ".tb_water_brach"; //水冷系统分支实时数据                    
    public final static String Tb_water_state = DB_Watersystem + ".tb_water_state";    //水冷系统实时状态                                
    public final static String Tb_water_alarm = DB_Watersystem + ".tb_water_alarm";    //水冷系统告警                            
    public final static String Tb_water_realdata = DB_Watersystem + ".tb_water_realdata_";    //水冷历史实时记录表
    
    public final static String Tb_Device_ConnectState = DB_Electric2MWSystem+".tb_device_connectstate";                //设备通讯状态表
    //--------------------------------------------------------------------------------------------//
WaterSystem_MonitorServer/src/com/version_inf/version_inf.txt
@@ -1,5 +1,5 @@
V1.101
    电机加载通讯程序
    水冷系统通讯程序
    
V1.102 at 2020-08-05 lijun
V1.202 at 2020-10-17 lijun
    添加历史实时数据记录功能
WaterSystem_MonitorServer/src/com/watersystem/monitor/WaterSystem_RealDataRecord_Thread.java
New file
@@ -0,0 +1,129 @@
package com.watersystem.monitor;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.sql.MysqlConnPool;
public class WaterSystem_RealDataRecord_Thread implements Runnable{
    public static final int TESTDATA_RECORD_INTERVAL = 1;                //记录数据间隔
    public static final int MAX_SAVE_DAY_COUNT = 180;
    public MysqlConnPool pool;
    public List<TestData_Record_Thread> threads;
    public List<Water_inf> winfs;
    public WaterSystem_RealDataRecord_Thread(MysqlConnPool pool,List<Water_inf> winfs){
        this.pool = pool;
        this.winfs = winfs;
        threads = new ArrayList<>();
    }
    @Override
    public void run() {
        System.out.println("WaterSystem_RealDataRecord_Thread Start at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        Date now = null;
        Date last = new Date(0);
        while(true) {
            try {
                now = new Date();
                for(int i=0;i<winfs.size();i++) {
                    boolean isExist = false;
                    Water_inf winf = winfs.get(i);
                    for(int k=0;k<threads.size();k++) {
                        if(threads.get(k).winf.water_id == winf.water_id) {
                            isExist = true;
                            break;
                        }
                    }
                    if(!isExist) {
                        TestData_Record_Thread thread = new TestData_Record_Thread(pool, winf);
                        threads.add(thread);
                        new Thread(thread).start();
                    }
                    //构造今天和明天的历史实时数据表
                    Water_Task_SQL.createTb_Water_realdata(pool,winf.water_id, now);
                    Water_Task_SQL.createTb_Water_realdata(pool,winf.water_id, tomorrow(now));
                }
                Date del_time = getDateBefore(now,MAX_SAVE_DAY_COUNT);
                Water_Task_SQL.deleteHistoryData(pool, del_time);
                //System.out.println(Com.getDateTimeFormat(del_time, Com.DTF_YMDhms));
                Thread.sleep(3000);
            } catch (Exception e) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                e.printStackTrace();
            }
        }
    }
    class TestData_Record_Thread implements Runnable{
        public MysqlConnPool pool;
        public Water_inf winf;
        public TestData_Record_Thread(MysqlConnPool pool,Water_inf winf) {
            this.pool = pool;
            this.winf = winf;
        }
        @Override
        public void run() {
            Date last = new Date(0);        //上一次测试的时间
            Date now = null;                //当前时间
            while(true) {
                try {
                    now = new Date();
                    long timelong = (now.getTime()-last.getTime())/1000;
                    //System.out.println(timelong);
                    if(timelong >= TESTDATA_RECORD_INTERVAL) {
                        if(winf.conn_state == 1) {
                            //通讯正常
                            Water_Task_SQL.insertTb_water_realdata(pool, winf, now);
                            last = now;
                        }
                    }
                    Thread.sleep(10);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     *     返回明天日期
     * @param today
     * @return
     */
    public Date tomorrow(Date today) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(today);
        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
        return calendar.getTime();
    }
    /**
     * 获取指定时间之前多少天的时间
     * @param d
     * @param day
     * @return
     */
    public static Date getDateBefore(Date d,int day){
        Calendar now =Calendar.getInstance();
        now.setTime(d);
        now.set(Calendar.DATE,now.get(Calendar.DATE)-day);
        return now.getTime();
    }
}
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_Task_SQL.java
@@ -30,6 +30,11 @@
                winf.setWater_name(res.getString("water_name"));
                winf.setWater_ip(res.getString("water_ip"));
                winf.setWater_type(res.getInt("water_type"));
                winf.wrt = new Water_rt(winf.water_id);
                winf.wbrach = new Water_brach(winf.water_id);
                winf.wstate = new Water_state(winf.water_id);
                winf.walarm = new Water_alarm(winf.water_id);
                winfs.add(winf);
            }
        } catch (SQLException e) {
@@ -460,6 +465,28 @@
        
    }
    /**
     * 插入或更新电源故障
     * @param conn_pool
     * @param control
     */
    public static void delClearWater_alarmTable(MysqlConnPool conn_pool,List<Water_alarm> list) {
        if(list!=null&&list.size()>0) {
            for (Water_alarm walarm : list) {
                String sql_str = "DELETE FROM "+Sql_Mysql.Tb_water_alarm+" WHERE water_id = "+walarm.water_id+" AND alarm_id = "+walarm.alarm_id;
                Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
                try {
                    sql.sqlMysqlExecute(sql_str);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    sql.close_con();
                }
            }
        }
    }
    
    /**
     *     插入或更新当前设备的连接状态
@@ -493,4 +520,152 @@
            }
        }
    }
    /**
     *  创建历史实时数据记录表
     * @param pool
     * @param water_id
     * @param now
     */
    public static void createTb_Water_realdata(MysqlConnPool pool, int water_id, Date now) {
        String sql_str = "CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_water_realdata+water_id+"_"+Com.getDateTimeFormat(now, Com.DTF_Y_M_D)+" (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  water_id int(11) NOT NULL DEFAULT '5001' COMMENT '水冷系统id'," +
                "  record_time datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '记录时间'," +
                "  P01_main_pump int(11) NOT NULL DEFAULT '0' COMMENT 'P01主泵运行'," +
                "  P11_replenish_pump int(11) NOT NULL DEFAULT '0' COMMENT 'P11补水泵运行'," +
                "  P12_pretest_pump int(11) NOT NULL DEFAULT '0' COMMENT 'P12试压泵运行'," +
                "  P13_replenish_pump int(11) NOT NULL DEFAULT '0' COMMENT 'P13补气泵运行'," +
                "  H01_electric_heater int(11) NOT NULL DEFAULT '0' COMMENT 'H01电加热器运行'," +
                "  H02_electric_heater int(11) NOT NULL DEFAULT '0' COMMENT 'H02电加热器运行'," +
                "  Solenoid_openflag int(11) NOT NULL DEFAULT '0' COMMENT '电磁阀开限位'," +
                "  Solenoid_shutflag int(11) NOT NULL DEFAULT '0' COMMENT '电磁阀关限位'," +
                "  valve_start int(11) NOT NULL DEFAULT '0' COMMENT '阀打开'," +
                "  Exhaust_start int(11) NOT NULL DEFAULT '0' COMMENT '排气阀打开'," +
                "  remote_start int(11) NOT NULL DEFAULT '0' COMMENT '远程启动水冷系统'," +
                "  remote_stop int(11) NOT NULL DEFAULT '0' COMMENT '远程停止水冷系统'," +
                "  Operation_ooled_devices int(11) NOT NULL DEFAULT '0' COMMENT '被冷却器件投运'," +
                "  Auto_control_state int(11) NOT NULL DEFAULT '0' COMMENT '水冷系统自动控制状态'," +
                "  Manual_control_state int(11) NOT NULL DEFAULT '0' COMMENT '水冷系统手动控制状态'," +
                "  remote_control_state int(11) NOT NULL DEFAULT '0' COMMENT '水冷系统远程控制状态'," +
                "  Water_system_function int(11) NOT NULL DEFAULT '0' COMMENT '水冷系统运行'," +
                "  cooling_flow float NOT NULL DEFAULT '0' COMMENT '冷却水流量'," +
                "  supply_tmp float NOT NULL DEFAULT '0' COMMENT '供水温度'," +
                "  Supply_pre float NOT NULL DEFAULT '0' COMMENT '供水压力'," +
                "  back_tem float NOT NULL DEFAULT '0' COMMENT '回水温度'," +
                "  back_pre float NOT NULL DEFAULT '0' COMMENT '回水压力'," +
                "  Cooling_ser float NOT NULL DEFAULT '0' COMMENT '冷却水电导率'," +
                "  Buffer_tank_level float NOT NULL DEFAULT '0' COMMENT '缓冲罐液位'," +
                "  Buffer_tank_pre float NOT NULL DEFAULT '0' COMMENT '缓冲罐压力'," +
                "  Humidity_chamber float NOT NULL DEFAULT '0' COMMENT '阀厅湿度'," +
                "  Tem_chamber float NOT NULL DEFAULT '0' COMMENT '阀厅温度'," +
                "  External_tmp float NOT NULL DEFAULT '0' COMMENT '外水温度'," +
                "  External_pre float NOT NULL DEFAULT '0' COMMENT '外水压力'," +
                "  Branch_flow_1 float NOT NULL DEFAULT '0' COMMENT '1#支路流量'," +
                "  Branch_flow_2 float NOT NULL DEFAULT '0' COMMENT '2#支路流量'," +
                "  Branch_flow_3 float NOT NULL DEFAULT '0' COMMENT '3#支路流量'," +
                "  Branch_flow_4 float NOT NULL DEFAULT '0' COMMENT '4#支路流量'," +
                "  Branch_flow_5 float NOT NULL DEFAULT '0' COMMENT '5#支路流量'," +
                "  Branch_flow_6 float NOT NULL DEFAULT '0' COMMENT '6#支路流量'," +
                "  Branch_flow_7 float NOT NULL DEFAULT '0' COMMENT '7#支路流量'," +
                "  Branch_flow_8 float NOT NULL DEFAULT '0' COMMENT '8#支路流量'," +
                "  Branch_flow_9 float NOT NULL DEFAULT '0' COMMENT '9#支路流量'," +
                "  Branch_tmp_1 float NOT NULL DEFAULT '0' COMMENT '1#支路温度'," +
                "  Branch_tmp_2 float NOT NULL DEFAULT '0' COMMENT '2#支路温度'," +
                "  Branch_tmp_3 float NOT NULL DEFAULT '0' COMMENT '3#支路温度'," +
                "  Branch_tmp_4 float NOT NULL DEFAULT '0' COMMENT '4#支路温度'," +
                "  Branch_tmp_5 float NOT NULL DEFAULT '0' COMMENT '5#支路温度'," +
                "  Branch_tmp_6 float NOT NULL DEFAULT '0' COMMENT '6#支路温度'," +
                "  Branch_tmp_7 float NOT NULL DEFAULT '0' COMMENT '7#支路温度'," +
                "  Branch_tmp_8 float NOT NULL DEFAULT '0' COMMENT '8#支路温度'," +
                "  Branch_tmp_9 float NOT NULL DEFAULT '0' COMMENT '9#支路温度'," +
                "  Branch_pre_1 float NOT NULL DEFAULT '0' COMMENT '1#支路压力'," +
                "  Branch_pre_2 float NOT NULL DEFAULT '0' COMMENT '2#支路压力'," +
                "  Branch_pre_3 float NOT NULL DEFAULT '0' COMMENT '3#支路压力'," +
                "  Branch_pre_4 float NOT NULL DEFAULT '0' COMMENT '4#支路压力'," +
                "  Branch_pre_5 float NOT NULL DEFAULT '0' COMMENT '5#支路压力'," +
                "  Branch_pre_6 float NOT NULL DEFAULT '0' COMMENT '6#支路压力'," +
                "  Branch_pre_7 float NOT NULL DEFAULT '0' COMMENT '7#支路压力'," +
                "  Branch_pre_8 float NOT NULL DEFAULT '0' COMMENT '8#支路压力'," +
                "  Branch_pre_9 float NOT NULL DEFAULT '0' COMMENT '9#支路压力'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  KEY water_id_key (water_id) USING BTREE," +
                "  KEY index_record_time (record_time) USING BTREE" +
                ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     *     删除创建时间超时的历史实时记录表
     * @param conn_pool
     * @param deldate
     */
    public static void deleteHistoryData(MysqlConnPool conn_pool,Date deldate) {
        String sql_select_strs = " select TABLE_NAME,UPDATE_TIME,CREATE_TIME " +
                                 " from information_schema.tables " +
                                 " where table_schema='db_watersystem' " +
                                 " AND TABLE_NAME like 'tb_water_realdata_%' " +
                                 " AND CREATE_TIME <= '"+Com.getDateTimeFormat(deldate, Com.DTF_YMDhms)+"';" ;
        String sql_delete_strs = " DROP TABLE IF EXISTS ";
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        ResultSet res = null;
        int count = 0;
        res = sql.sqlMysqlQuery(sql_select_strs);
        try {
            while(res.next()) {
                if(count > 0) {
                    sql_delete_strs += ",";
                }
                sql_delete_strs += "db_watersystem." + res.getString("TABLE_NAME");
                System.out.println("删除:"+res.getString("TABLE_NAME")+"\t at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                count++;
            }
            if(count >0) {
                sql.sqlMysqlExecute(sql_delete_strs);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
    /**
     * 插入水冷历史实时数据
     * @param pool
     * @param winf
     * @param now
     */
    public static void insertTb_water_realdata(MysqlConnPool pool, Water_inf winf, Date now) {
        Water_brach brach = winf.wbrach;
        Water_rt rt = winf.wrt;
        Water_state state = winf.wstate;
        String sql_str = "INSERT INTO "+Sql_Mysql.Tb_water_realdata+winf.water_id+"_"+Com.getDateTimeFormat(now, Com.DTF_Y_M_D)+"(water_id,record_time,P01_main_pump,P11_replenish_pump,P12_pretest_pump,P13_replenish_pump,H01_electric_heater,H02_electric_heater,Solenoid_openflag,Solenoid_shutflag,valve_start,Exhaust_start,remote_start,remote_stop,Operation_ooled_devices,Auto_control_state,Manual_control_state,remote_control_state,Water_system_function,cooling_flow,supply_tmp,Supply_pre,back_tem,back_pre,Cooling_ser,Buffer_tank_level,Buffer_tank_pre,Humidity_chamber,Tem_chamber,External_tmp,External_pre,Branch_flow_1,Branch_flow_2,Branch_flow_3,Branch_flow_4,Branch_flow_5,Branch_flow_6,Branch_flow_7,Branch_flow_8,Branch_flow_9,Branch_tmp_1,Branch_tmp_2,Branch_tmp_3,Branch_tmp_4,Branch_tmp_5,Branch_tmp_6,Branch_tmp_7,Branch_tmp_8,Branch_tmp_9,Branch_pre_1,Branch_pre_2,Branch_pre_3,Branch_pre_4,Branch_pre_5,Branch_pre_6,Branch_pre_7,Branch_pre_8,Branch_pre_9) "
                + "VALUES("+winf.water_id+",'"+Com.getDateTimeFormat(now, Com.DTF_YMDhms)+"',"+state.P01_main_pump+","+state.P11_replenish_pump+","+state.P12_pretest_pump+","+state.P13_replenish_pump+","+state.H01_electric_heater+","+state.H02_electric_heater+","+state.Solenoid_openflag+","+state.Solenoid_shutflag+","+state.valve_start+","+state.Exhaust_start+","+state.remote_start+","+state.remote_stop+","+state.Operation_ooled_devices+","+state.Auto_control_state+","+state.Manual_control_state+","+state.remote_control_state+","+state.Water_system_function+","+rt.cooling_flow+","+rt.supply_tmp+","+rt.Supply_pre+","+rt.back_tem+","+rt.back_pre+","+rt.Cooling_ser+","+rt.Buffer_tank_level+","+rt.Buffer_tank_pre+","+rt.Humidity_chamber+","+rt.Tem_chamber+","+rt.External_tmp+","+rt.External_pre+","+brach.Branch_flow_1+","+brach.Branch_flow_2+","+brach.Branch_flow_3+","+brach.Branch_flow_4+","+brach.Branch_flow_5+","+brach.Branch_flow_6+","+brach.Branch_flow_7+","+brach.Branch_flow_8+","+brach.Branch_flow_9+","+brach.Branch_tmp_1+","+brach.Branch_tmp_2+","+brach.Branch_tmp_3+","+brach.Branch_tmp_4+","+brach.Branch_tmp_5+","+brach.Branch_tmp_6+","+brach.Branch_tmp_7+","+brach.Branch_tmp_8+","+brach.Branch_tmp_9+","+brach.Branch_pre_1+","+brach.Branch_pre_2+","+brach.Branch_pre_3+","+brach.Branch_pre_4+","+brach.Branch_pre_5+","+brach.Branch_pre_6+","+brach.Branch_pre_7+","+brach.Branch_pre_8+","+brach.Branch_pre_9+"); ";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
}
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_alarm.java
@@ -7,6 +7,7 @@
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.code.DataType;
public class Water_alarm implements Serializable{
    public int num;
@@ -104,13 +105,13 @@
     */
    public BatchRead<Integer> createBatchRead(MyModbusMaster master){
        BatchRead<Integer> batch = new BatchRead<Integer>();        
        batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_Fault ,master));//冷却系统各部件故障信息
        batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault ,master));//冷却系统支路流量/温度故障信息
        batch.addLocator(2,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Pre_Fault , master));//冷却水压力故障
        batch.addLocator(3,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_highorlow, master));//冷却系统各部件低/高
        batch.addLocator(4,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow, master));//冷却系统温度高/超高
        batch.addLocator(5,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, master));//冷却系统支路温度/流量低/超低
        batch.addLocator(6,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Flow_ighorlow, master));//冷却水部分支路流量低/超低
        batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_Fault,DataType.TWO_BYTE_INT_UNSIGNED,master));//冷却系统各部件故障信息
        batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault,DataType.TWO_BYTE_INT_UNSIGNED,master));//冷却系统支路流量/温度故障信息
        batch.addLocator(2,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Pre_Fault ,DataType.TWO_BYTE_INT_UNSIGNED, master));//冷却水压力故障
        batch.addLocator(3,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_highorlow,DataType.TWO_BYTE_INT_UNSIGNED, master));//冷却系统各部件低/高
        batch.addLocator(4,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow,DataType.TWO_BYTE_INT_UNSIGNED, master));//冷却系统温度高/超高
        batch.addLocator(5,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow,DataType.TWO_BYTE_INT_UNSIGNED, master));//冷却系统支路温度/流量低/超低
        batch.addLocator(6,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Flow_ighorlow,DataType.TWO_BYTE_INT_UNSIGNED, master));//冷却水部分支路流量低/超低
        return batch;
    }
    /**
@@ -119,13 +120,14 @@
     */
    public void putBatchResult(BatchResults<Integer> res) {
        if(res != null) {
            this.Watersystem_Operation_Fault = MyModbusUtils.readShortToInt(res.getValue(0));
            this.Watersystem_BranchFlowTmp_Fault = MyModbusUtils.readShortToInt(res.getValue(1));
            this.Watersystem_Pre_Fault = MyModbusUtils.readShortToInt(res.getValue(2));
            this.Watersystem_Operation_highorlow = MyModbusUtils.readShortToInt(res.getValue(3));
            this.Watersystem_Tmp_highorlow = MyModbusUtils.readShortToInt(res.getValue(4));
            this.Watersystem_TmpFlow_highorlow = MyModbusUtils.readShortToInt(res.getValue(5));
            this.Watersystem_Flow_ighorlow = MyModbusUtils.readShortToInt(res.getValue(6));
            this.Watersystem_Operation_Fault = MyModbusUtils.readIntergerToInt(res.getValue(0));
            this.Watersystem_BranchFlowTmp_Fault = MyModbusUtils.readIntergerToInt(res.getValue(1));
            this.Watersystem_Pre_Fault = MyModbusUtils.readIntergerToInt(res.getValue(2));
            this.Watersystem_Operation_highorlow = MyModbusUtils.readIntergerToInt(res.getValue(3));
            //System.out.println("1296:"+this.Watersystem_Operation_highorlow);
            this.Watersystem_Tmp_highorlow = MyModbusUtils.readIntergerToInt(res.getValue(4));
            this.Watersystem_TmpFlow_highorlow = MyModbusUtils.readIntergerToInt(res.getValue(5));
            this.Watersystem_Flow_ighorlow = MyModbusUtils.readIntergerToInt(res.getValue(6));
        }
    } 
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_inf.java
@@ -9,6 +9,14 @@
      public int water_type;// '水冷系统类型(备用)',
      public String water_ip;// '水冷系统ip(重要)',
      public String note;//
    public int conn_state = 0;    //连接状态1:通讯正常   0:通讯中断
    public Water_rt wrt;
    public Water_brach wbrach;
    public Water_state wstate;
    public Water_alarm walarm;
    public int getNum() {
        return num;
    }
WaterSystem_MonitorServer/src/com/watersystem/monitor/Watersystem_SocketClient_Thread.java
@@ -22,6 +22,7 @@
    public Water_state wstate;
    public Water_alarm walarm;
    public List<Water_alarm> listAlarm;
    public List<Water_alarm> clearAlms;
    public MyModbusMaster master;
    
    //public static final int MAX_READALARM_COUNT = 20;        //一次读取告警节点的最大数量
@@ -31,10 +32,15 @@
        this.conn_pool = conn_pool;
        this.winf = winf;
        
        wrt = new Water_rt(winf.getWater_id());
        wstate = new Water_state(winf.getWater_id());
        wbrach = new Water_brach(winf.getWater_id());
        walarm =new Water_alarm(winf.water_id);
        wrt = winf.wrt;
        wstate = winf.wstate;
        wbrach = winf.wbrach;
        walarm = winf.walarm;
//        wrt = new Water_rt(winf.getWater_id());
//        wstate = new Water_state(winf.getWater_id());
//        wbrach = new Water_brach(winf.getWater_id());
//        walarm =new Water_alarm(winf.water_id);
        master = new MyModbusMaster(winf.getWater_ip(), MyModbusMaster.SLAVEID_DEFAULT);
        //System.out.println(master);
    }
@@ -69,12 +75,14 @@
                if(runCount %4 == 0) {
                    //*************************** 读取水冷信息故障 ******************************//*
                    //readWaterAlarmData(master,walarm);
                    //readMutilWaterAlarmData(master, walarm);
                    //Water_Task_SQL.insertOrUpdateWater_alarmTable(conn_pool, listAlarm);
                    readMutilWaterAlarmData(master, walarm);
                    //插入或者更新告警信息
                    Water_Task_SQL.insertOrUpdateWater_alarmTable(conn_pool, listAlarm);
                    Water_Task_SQL.delClearWater_alarmTable(conn_pool, clearAlms);
                }
                
                Water_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, winf.water_id, master);
                winf.conn_state = master.getConnectState();
                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(winf.water_ip);
@@ -579,363 +587,589 @@
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
        walarm.putBatchResult(res);
        listAlarm=new ArrayList<Water_alarm>();
        clearAlms = new ArrayList<Water_alarm>();
        if(res!=null) {
            if(walarm.Watersystem_Operation_Fault>0) {
            //if(walarm.Watersystem_Operation_Fault>0) {
                if((walarm.Watersystem_Operation_Fault>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129300);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129300);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129301);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129301);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129302);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129302);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129303);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129303);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129304);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129304);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129305);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129305);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129306);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129306);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129307);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129307);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129308);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129308);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129309);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129309);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129310);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129310);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129311);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129311);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129312);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129312);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129313);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129313);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129314);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129314);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_Fault>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129315);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129315);clearAlms.add(w);
                }
            }
            walarm.Watersystem_BranchFlowTmp_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_BranchFlowTmp_Fault);//冷却系统支路流量/温度故障信息
            if(walarm.Watersystem_BranchFlowTmp_Fault>0) {
            //}
            //walarm.Watersystem_BranchFlowTmp_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_BranchFlowTmp_Fault);//冷却系统支路流量/温度故障信息
            //if(walarm.Watersystem_BranchFlowTmp_Fault>0) {
                if((walarm.Watersystem_BranchFlowTmp_Fault>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129400);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129400);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129401);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129401);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129402);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129402);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129403);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129403);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129404);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129404);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129405);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129405);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129406);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129406);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129407);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129407);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129408);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129408);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129409);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129409);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129410);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129410);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129411);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129411);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129412);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129412);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129413);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129413);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129414);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129414);clearAlms.add(w);
                }
                if((walarm.Watersystem_BranchFlowTmp_Fault>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129415);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129415);clearAlms.add(w);
                }
            }
            walarm.Watersystem_Pre_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Pre_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Pre_Fault);//冷却水压力故障
            if(walarm.Watersystem_Pre_Fault>0) {
            //}
            //walarm.Watersystem_Pre_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Pre_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Pre_Fault);//冷却水压力故障
            //if(walarm.Watersystem_Pre_Fault>0) {
                if((walarm.Watersystem_Pre_Fault>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129500);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129500);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129501);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129501);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129502);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129502);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129503);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129503);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129504);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129504);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129505);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129505);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129506);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129506);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129507);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129507);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129508);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129508);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129509);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129509);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129510);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129510);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129511);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129511);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129512);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129512);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129513);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129513);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129514);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129514);clearAlms.add(w);
                }
                if((walarm.Watersystem_Pre_Fault>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129515);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129515);clearAlms.add(w);
                }
            }
            walarm.Watersystem_Operation_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Operation_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Operation_highorlow);//冷却系统各部件低/高
            if(walarm.Watersystem_Operation_highorlow>0) {
            //}
            //walarm.Watersystem_Operation_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Operation_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Operation_highorlow);//冷却系统各部件低/高
            //System.out.println("1296:"+walarm.Watersystem_Operation_highorlow);
            //if(walarm.Watersystem_Operation_highorlow>0) {
                if((walarm.Watersystem_Operation_highorlow>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129600);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129600);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129601);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129601);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129602);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129602);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129603);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129603);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129604);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129604);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129605);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129605);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129606);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129606);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129607);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129607);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129608);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129608);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129609);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129609);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129610);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129610);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129611);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129611);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129612);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129612);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129613);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129613);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129614);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129614);clearAlms.add(w);
                }
                if((walarm.Watersystem_Operation_highorlow>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129615);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129615);clearAlms.add(w);
                }
            }
            walarm.Watersystem_Tmp_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Tmp_highorlow);//冷却系统温度高/超高
            if(walarm.Watersystem_Tmp_highorlow>0) {
            //}
            //walarm.Watersystem_Tmp_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Tmp_highorlow);//冷却系统温度高/超高
            //if(walarm.Watersystem_Tmp_highorlow>0) {
                if((walarm.Watersystem_Tmp_highorlow>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129700);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129700);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129701);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129701);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129702);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129702);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129703);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129703);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129704);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129704);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129705);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129705);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129706);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129706);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129707);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129707);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129708);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129708);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129708);listAlarm.add(w);
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129709);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129709);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129710);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129710);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129711);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129711);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129712);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129712);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129713);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129713);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129714);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129714);clearAlms.add(w);
                }
                if((walarm.Watersystem_Tmp_highorlow>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129715);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129715);clearAlms.add(w);
                }
            }
            walarm.Watersystem_TmpFlow_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却系统支路温度/流量低/超低
            if(walarm.Watersystem_TmpFlow_highorlow>0) {
            //}
            //walarm.Watersystem_TmpFlow_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却系统支路温度/流量低/超低
            //if(walarm.Watersystem_TmpFlow_highorlow>0) {
                if((walarm.Watersystem_TmpFlow_highorlow>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129800);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129800);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129801);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129801);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129802);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129802);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129803);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129803);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129804);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129804);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129805);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129805);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129806);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129806);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129807);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129807);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129808);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129808);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129809);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129809);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129810);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129810);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129811);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129811);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129812);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129812);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129813);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129813);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129814);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129814);clearAlms.add(w);
                }
                if((walarm.Watersystem_TmpFlow_highorlow>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129815);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129815);clearAlms.add(w);
                }
            }
            walarm.Watersystem_Flow_ighorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却水部分支路流量低/超低
            if(walarm.Watersystem_Flow_ighorlow>0) {
            //}
            //walarm.Watersystem_Flow_ighorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却水部分支路流量低/超低
            //if(walarm.Watersystem_Flow_ighorlow>0) {
                if((walarm.Watersystem_Flow_ighorlow>>8&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129900);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129900);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>9&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129901);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129901);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>10&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129902);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129902);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>11&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129903);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129903);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>12&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129904);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129904);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>13&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129905);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129905);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>14&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129906);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129906);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>15&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129907);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129907);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>0&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129908);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129908);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>1&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129909);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129909);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>2&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129910);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129910);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>3&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129911);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129911);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>4&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129912);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129912);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>5&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129913);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129913);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>6&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129914);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129914);clearAlms.add(w);
                }
                if((walarm.Watersystem_Flow_ighorlow>>7&1)==1) {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129915);listAlarm.add(w);
                }else {
                    Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129915);clearAlms.add(w);
                }
            }
            //}
        }
    }
    public static void main(String[] args) {
WaterSystem_MonitorServer/src/main/main_WaterSystem_MonitorServer.java
@@ -10,6 +10,7 @@
import com.config.AppParam;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
import com.watersystem.monitor.WaterSystem_RealDataRecord_Thread;
import com.watersystem.monitor.Water_Task_SQL;
import com.watersystem.monitor.Water_inf;
import com.watersystem.monitor.Watersystem_ServerSocket_Thread;
@@ -21,7 +22,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;    
    public final static double m_VersionNum = 1.202;
    public final static double m_VersionNum = 1.302;
    public final static String m_Version = "Welcome To Use main_MonitorServer_Motor V" 
                                            + m_VersionNum ;
    /**************************************************************************/
@@ -67,6 +68,15 @@
        //读取每套水冷系统的信息
        Watersystem_ServerSocket_Thread server = new Watersystem_ServerSocket_Thread(GB_MysqlConnPool,winfs);
        new Thread(server).start();
        /****************************** 记录历史实时数据 ************************************/
        {
            WaterSystem_RealDataRecord_Thread record_thread = new WaterSystem_RealDataRecord_Thread(GB_MysqlConnPool, winfs);
            new Thread(record_thread).start();
        }
        while(true) {
            try {        
                Thread.sleep(5000);