whyclj
2020-12-07 85ca7d73f45872d708c25b33eb44ded56f9922bd
增加控制以及实时记录
2个文件已添加
7个文件已修改
263 ■■■■■ 已修改文件
Central_Monitor/src/com/data/Central_Control.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/data/Comm/Central_DataParsing_Thread_SQL.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/data/Comm/Central_Data_ComBase.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/data/Comm/Central_Data_SocketClient_Thread.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/data/history/Central_Data_RealRecord_Thread.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/modbus/data/MyModbusMaster.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/modbus/data/MyModbusUtils.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/sql/Sql_Mysql.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/main/main_Central_Monitor.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Central_Monitor/src/com/data/Central_Control.java
@@ -1,5 +1,7 @@
package com.data;
import com.data.Comm.Central_Data_ComBase;
public class Central_Control {
    
    private int dev_id;                            //'设备id',
@@ -14,6 +16,8 @@
    private int switch_open_1st_2500A_load;        //'1号2500A负载屏开关分闸',
    private int switch_close_2st_2500A_load;    //'2号2500A负载屏开关合闸',
    private int switch_open_2st_2500A_load;        //'2号2500A负载屏开关分闸',
    public boolean control_en = false;
    
    public Central_Control() {
        // TODO Auto-generated constructor stub
@@ -33,7 +37,23 @@
        return op_cmd;
    }
    public void setOp_cmd(int op_cmd) {
        control_en = false;
        this.op_cmd = op_cmd;
        switch(this.op_cmd) {
            case Central_Data_ComBase.CMD_SwitchClose_1st:
            case Central_Data_ComBase.CMD_SwitchOpen_1st:
            case Central_Data_ComBase.CMD_SwitchClose_2st:
            case Central_Data_ComBase.CMD_SwitchOpen_2st:
            case Central_Data_ComBase.CMD_SwitchClose_3st:
            case Central_Data_ComBase.CMD_SwitchOpen_3st:
            case Central_Data_ComBase.CMD_SwitchClose_4st:
            case Central_Data_ComBase.CMD_SwitchOpen_4st:
            case Central_Data_ComBase.CMD_SwitchClose_5st:
            case Central_Data_ComBase.CMD_SwitchOpen_5st:{
                //需要进行远程控制操作
                control_en = true;
            }
        }
    }
    public int getSwitch_close_1st_2500A() {
        return switch_close_1st_2500A;
Central_Monitor/src/com/data/Comm/Central_DataParsing_Thread_SQL.java
@@ -5,6 +5,7 @@
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.data.Central_Control;
import com.data.Central_RT_Data;
import com.data.Central_ST_Data;
import com.data.Motor_inf;
@@ -139,4 +140,72 @@
        }
    }
    
    /**
     *     查询集中监控系统控制表
     * @param pool
     * @param control
     */
    public static void queryTb_Central_Monitor_Sys_Control(MysqlConnPool pool,Central_Control control) {
        String sql_str = " SELECT * FROM "+Sql_Mysql.Tb_Central_Monitor_Sys_Control+" WHERE dev_id = " + control.getDev_id();
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            if(res.next()) {
                control.setOp_cmd(res.getInt("op_cmd"));
                control.setSwitch_close_1st_2500A(res.getInt("switch_close_1st_2500A"));
                control.setSwitch_close_1st_2500A_load(res.getInt("switch_close_1st_2500A_load"));
                control.setSwitch_close_2st_2500A(res.getInt("switch_close_2st_2500A"));
                control.setSwitch_close_2st_2500A_load(res.getInt("switch_close_2st_2500A_load"));
                control.setSwitch_close_bus_screen(res.getInt("switch_close_bus_screen"));
                control.setSwitch_open_bus_screen(res.getInt("switch_open_bus_screen"));
                control.setSwitch_open_1st_2500A(res.getInt("switch_open_1st_2500A"));
                control.setSwitch_open_1st_2500A_load(res.getInt("switch_open_1st_2500A_load"));
                control.setSwitch_open_2st_2500A(res.getInt("switch_open_2st_2500A"));
                control.setSwitch_open_2st_2500A_load(res.getInt("switch_open_2st_2500A_load"));
            }
        } catch (Exception e) {
            sql.logger.error(e.toString(),e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error(e.toString(),e);
                }
            }
            sql.close_con();
        }
    }
    /**
     *     查询集中监控系统控制表
     * @param pool
     * @param control
     */
    public static void updateTb_Central_Monitor_Sys_Control(MysqlConnPool pool,Central_Control control) {
        if(control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchClose_1st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchOpen_1st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchClose_2st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchOpen_2st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchClose_3st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchOpen_3st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchClose_4st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchOpen_4st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchClose_5st_ACK ||
           control.getOp_cmd() == Central_Data_ComBase.CMD_SwitchOpen_5st_ACK    ) {
            String sql_str = " UPDATE "+Sql_Mysql.Tb_Central_Monitor_Sys_Control+" SET op_cmd = "+control.getOp_cmd()+" WHERE dev_id = " + control.getDev_id();
            Sql_Mysql sql = new Sql_Mysql(pool.getConn());
            try {
                sql.sqlMysqlExecute(sql_str);
            } catch (Exception e) {
                sql.logger.error(e.toString(),e);
            } finally {
                sql.close_con();
            }
        }else {
            control.setOp_cmd(Central_Data_ComBase.CMD_Null);
        }
    }
}
Central_Monitor/src/com/data/Comm/Central_Data_ComBase.java
New file
@@ -0,0 +1,33 @@
package com.data.Comm;
public class Central_Data_ComBase {
    public static final int CMD_Null                     = 0;
    public static final int CMD_SwitchClose_1st         = 0x10;
    public static final int CMD_SwitchClose_1st_ACK     = 0x11;
    public static final int CMD_SwitchOpen_1st             = 0x12;
    public static final int CMD_SwitchOpen_1st_ACK         = 0x13;
    public static final int CMD_SwitchClose_2st         = 0x14;
    public static final int CMD_SwitchClose_2st_ACK     = 0x15;
    public static final int CMD_SwitchOpen_2st             = 0x16;
    public static final int CMD_SwitchOpen_2st_ACK         = 0x17;
    public static final int CMD_SwitchClose_3st         = 0x18;
    public static final int CMD_SwitchClose_3st_ACK     = 0x19;
    public static final int CMD_SwitchOpen_3st             = 0x20;
    public static final int CMD_SwitchOpen_3st_ACK         = 0x21;
    public static final int CMD_SwitchClose_4st         = 0x22;
    public static final int CMD_SwitchClose_4st_ACK     = 0x23;
    public static final int CMD_SwitchOpen_4st             = 0x24;
    public static final int CMD_SwitchOpen_4st_ACK         = 0x25;
    public static final int CMD_SwitchClose_5st         = 0x26;
    public static final int CMD_SwitchClose_5st_ACK     = 0x27;
    public static final int CMD_SwitchOpen_5st             = 0x28;
    public static final int CMD_SwitchOpen_5st_ACK         = 0x29;
}
Central_Monitor/src/com/data/Comm/Central_Data_SocketClient_Thread.java
@@ -1,5 +1,6 @@
package com.data.Comm;
import com.data.Central_Control;
import com.data.Central_RT_Data;
import com.data.Central_ST_Data;
import com.data.Motor_inf;
@@ -41,8 +42,12 @@
                    }                    
                }    
                
                Central_DataParsing_Thread_SQL.queryTb_Central_Monitor_Sys_Control(pool, motor.control);
                if(motor.control.control_en) {
                    writeControlInf(motor.control);
                    Central_DataParsing_Thread_SQL.updateTb_Central_Monitor_Sys_Control(pool,motor.control);
                }
                
                motor.conn_state = master.getConnectState();
                if(run_count > 999909) {
@@ -57,6 +62,67 @@
    }
    
    /**
     *     控制指定的节点
     * @param control
     */
    private void writeControlInf(Central_Control control) {
        switch(control.getOp_cmd()) {
            case Central_Data_ComBase.CMD_SwitchClose_1st:{
                //
                if(MyModbusUtils.writeCoil(1, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_1st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchOpen_1st:{
                if(MyModbusUtils.writeCoil(2, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_1st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchClose_2st:{
                if(MyModbusUtils.writeCoil(3, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_2st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchOpen_2st:{
                if(MyModbusUtils.writeCoil(4, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_2st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchClose_3st:{
                if(MyModbusUtils.writeCoil(5, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_3st);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchOpen_3st:{
                if(MyModbusUtils.writeCoil(6, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_3st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchClose_4st:{
                if(MyModbusUtils.writeCoil(7, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_4st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchOpen_4st:{
                if(MyModbusUtils.writeCoil(8, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_4st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchClose_5st:{
                if(MyModbusUtils.writeCoil(9, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_5st_ACK);
                }
            }break;
            case Central_Data_ComBase.CMD_SwitchOpen_5st:{
                if(MyModbusUtils.writeCoil(10, true, master)) {
                    control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_5st_ACK);
                }
            }break;
        }
    }
    /**
     *     读取直流主配信息
     * @param stdata
     */
Central_Monitor/src/com/data/history/Central_Data_RealRecord_Thread.java
New file
@@ -0,0 +1,45 @@
package com.data.history;
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.data.Motor_inf;
import com.sql.MysqlConnPool;
public class Central_Data_RealRecord_Thread extends Thread{
    private MysqlConnPool pool;
    private Logger logger = null;
    private List<Motor_inf> motors;
    public Central_Data_RealRecord_Thread(MysqlConnPool pool,List<Motor_inf> motors) {
        this.pool = pool;
        logger = LogManager.getLogger(this.getClass());
        this.motors = motors;
    }
    @Override
    public void run() {
        logger.info(" Central_Data_RealRecord_Thread Start ...");
        Date now = null;
        Date last = new Date(0);
        System.out.println(Com.getDateTimeFormat(last, Com.DTF_YMDhms));
        while(true) {
            try {
                now = new Date();
                for(int i=0;i<motors.size();i++) {
                }
                Thread.sleep(50);
            } catch (Exception e) {
                logger.error(e.toString(),e);
            }
        }
    }
}
Central_Monitor/src/com/modbus/data/MyModbusMaster.java
@@ -1,5 +1,8 @@
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;
@@ -14,6 +17,8 @@
    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;
@@ -21,6 +26,7 @@
        IpParameters params = new IpParameters();
        params.setHost(target_ip);
        this.master = MyModbusFactory.getMaster(params);
        logger = LogManager.getLogger(this.getClass());
    }
    
    public void addErrorCount() {
Central_Monitor/src/com/modbus/data/MyModbusUtils.java
@@ -234,7 +234,8 @@
            WriteCoilRequest request = new WriteCoilRequest(master.getSlaveId(), writeOffset, writeValue);
            response = (WriteCoilResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
            master.logger.error(e.toString(),e);
            //e.printStackTrace();
        }
        if (response == null || response.isException()) {
            master.addErrorCount();
Central_Monitor/src/com/sql/Sql_Mysql.java
@@ -232,7 +232,7 @@
        try {
            mysql_con.close();
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(e.toString(),e);
        }
    }
    
Central_Monitor/src/main/main_Central_Monitor.java
@@ -11,7 +11,9 @@
import com.config.AppConfig;
import com.data.Motor_inf;
import com.data.Comm.Central_DataParsing_Thread_SQL;
import com.data.Comm.Central_Data_SocketServer_Thread;
import com.data.Comm.Central_Data_Task_SQL;
import com.data.history.Central_Data_RealRecord_Thread;
import com.sql.MysqlConnPool;
public class main_Central_Monitor {
@@ -50,7 +52,7 @@
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        
        logger.info("SQLserver IP:" + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        logger.info("SQLserver IP: " + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        checkingMySQLServerStart();                //检测数据库服务是否启动
        
@@ -62,6 +64,17 @@
        Central_DataParsing_Thread_SQL.loadDeviceData(GB_MysqlConnPool, motors);                    //加载集中监控系统设备信息
        
        
        /*********************    实时数据读取线程    ************************************************************/
        {
            Central_Data_SocketServer_Thread server = new Central_Data_SocketServer_Thread(GB_MysqlConnPool, motors);
            server.start();
        }
        /********************* 历史实时数据记录线程  ************************************************************/
        {
            Central_Data_RealRecord_Thread record_thread = new Central_Data_RealRecord_Thread(GB_MysqlConnPool, motors);
            record_thread.start();
        }
        
        while(true) {
            try {