Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread_SQL.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/motor/conn/Motor_Task_SQL.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/motor/data/Motor_inf.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/sql/Sql_Mysql.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/com/version_inf/version_inf.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Motor_MonitorServer/src/main/main_MonitorServer_Motor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread.java
New file @@ -0,0 +1,69 @@ package com.modbus.historydata; import java.util.Calendar; import java.util.Date; import java.util.List; import com.base.Com; import com.motor.data.Motor_inf; import com.sql.MysqlConnPool; public class Motor_HistoryData_Record_Thread implements Runnable{ //历史数据最大保留天数 public static final int HISTORYDATA_MAXSAVE_TIMELONG = 180; //历史数据最大保留天数 public MysqlConnPool pool; public List<Motor_inf> motors; public Motor_HistoryData_Record_Thread(MysqlConnPool pool,List<Motor_inf> motors) { this.pool = pool; this.motors = motors; } @Override public void run() { System.out.println("Motor_HistoryData_Record_Thread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); String lastdate = Com.getDateTimeFormat(new Date(2000,1,1),Com.DTF_Y_M_D); String nowdate = null; while(true) { try { nowdate = Com.getDateTimeFormat(new Date(), Com.DTF_Y_M_D); for(int i=0;i<motors.size();i++) { if(!Motor_HistoryData_Record_Thread_SQL.checkHistoryIfNotExistsTable(pool, motors.get(i).motor_id, new Date())) { Motor_HistoryData_Record_Thread_SQL.createTb_Motor_ReaddataTable(pool, motors.get(i).motor_id, new Date()); } if(!lastdate.equals(nowdate)) { //创建明天的历史数据表 if(!Motor_HistoryData_Record_Thread_SQL.checkHistoryIfNotExistsTable(pool, motors.get(i).motor_id, tomorrow(new Date()))) { Motor_HistoryData_Record_Thread_SQL.createTb_Motor_ReaddataTable(pool, motors.get(i).motor_id, tomorrow(new Date())); } lastdate = nowdate; } Motor_HistoryData_Record_Thread_SQL.insertTb_Motor_ReaddataTable(pool,motors.get(i),nowdate); } Thread.sleep(1000); } catch (Exception e) { try { Thread.sleep(1000); }catch(InterruptedException e1){ e1.printStackTrace(); } 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(); } } Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread_SQL.java
New file @@ -0,0 +1,100 @@ package com.modbus.historydata; import java.sql.SQLException; import java.util.Date; import com.base.Com; import com.motor.data.Load_motor_state; import com.motor.data.Motor_inf; import com.sql.MysqlConnPool; import com.sql.Sql_Mysql; public class Motor_HistoryData_Record_Thread_SQL{ /** * 创建电机历史实时数据表 * @param pool */ public static void createDB_Motor_Realhistory(MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { sql.sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + Sql_Mysql.DB_Motor_Realhistory); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } /** * 创建电机历史实时数据记录表 * @param pool * @param motor_id * @param date_str */ public static void createTb_Motor_ReaddataTable(MysqlConnPool pool,int motor_id,Date date) { String sql_str = " CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_Motor_Readdata + motor_id + "_" + Com.getDateTimeFormat(date, Com.DTF_Y_M_D) + "(" + " num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," + " motor_id int(11) NOT NULL DEFAULT '2001' COMMENT '电机id'," + " record_time datetime NOT NULL DEFAULT '2000-01-01 00:00:00'," + " load_motor_power float NOT NULL DEFAULT '0' COMMENT '加载电机功率'," + " load_motor_speed float NOT NULL DEFAULT '0' COMMENT '加载电机转速'," + " load_motor_torque float NOT NULL DEFAULT '0' COMMENT '加载电机转矩'," + " load_motor_curr float NOT NULL DEFAULT '0' COMMENT '加载电机电流'," + " load_motor_vol float NOT NULL DEFAULT '0' COMMENT '加载电机电压'," + " note varchar(255) NOT NULL DEFAULT '' COMMENT '备用'," + " PRIMARY KEY (num)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;"; Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { //System.out.println(sql_str); sql.sqlMysqlExecute(sql_str); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } /** * 判断当前历史实时数据表是否存在 * @param conn_pool * @param motor_id 电机id * @param date * @return true:已存在 false:不存在 */ public static boolean checkHistoryIfNotExistsTable(MysqlConnPool conn_pool,int motor_id,Date date) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); String tname; try { sql.sqlMysqlUseDB(Sql_Mysql.DB_Motor_Realhistory); tname = Sql_Mysql.Tb_Motor_Readdata+"_"+motor_id +"_"+ Com.getDateTimeFormat(date, Com.DTF_Y_M_D); return sql.sqlMysqlCheckIfTableExist(tname); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } return false; } /** * 插入历史数据表 * @param pool * @param motor_inf */ public static void insertTb_Motor_ReaddataTable(MysqlConnPool pool, Motor_inf motor,String date_str) { Load_motor_state state = motor.load_state; String sql_str = " INSERT INTO " + Sql_Mysql.Tb_Motor_Readdata + motor.motor_id + "_" + date_str + " (motor_id,record_time,load_motor_power,load_motor_speed,load_motor_torque,load_motor_curr,load_motor_vol) " + " VALUES("+state.motor_id+",'"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"',"+state.load_motor_power+","+state.load_motor_speed+","+state.load_motor_torque+","+state.load_motor_curr+","+state.load_motor_vol+"); "; Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { sql.sqlMysqlExecute(sql_str); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } } Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
@@ -32,6 +32,9 @@ subject_state = new Subject_motor_state(motor.motor_id); control = new Motor_control(motor.motor_id); motor.load_state = load_state; motor.subject_state = subject_state; master = new MyModbusMaster(motor.motor_ip, MyModbusMaster.SLAVEID_DEFAULT); } Motor_MonitorServer/src/com/motor/conn/Motor_Task_SQL.java
@@ -7,6 +7,7 @@ import java.util.List; import com.base.Com; import com.modbus.historydata.Motor_HistoryData_Record_Thread_SQL; import com.motor.alarm.Motor_Alarm; import com.motor.data.Load_motor_state; import com.motor.data.Motor_control; @@ -21,6 +22,9 @@ public static void init(MysqlConnPool conn) { createDB_Elemachinery(conn); //创建电机历史实时数据库 Motor_HistoryData_Record_Thread_SQL.createDB_Motor_Realhistory(conn); //创建电机信息表 createTb_Motor_InfTable(conn); @@ -222,8 +226,7 @@ try { res = sql.sqlMysqlQuery(sql_str); if(res.next()) { Motor_inf motor = new Motor_inf(); motor.setMotor_id(res.getInt("motor_id")); Motor_inf motor = new Motor_inf(res.getInt("motor_id")); motor.setMotor_ip(res.getString("motor_ip")); motor.setMotor_name(res.getString("motor_name")); motor.setMotor_type(res.getInt("motor_type")); Motor_MonitorServer/src/com/motor/data/Motor_inf.java
@@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import com.mchange.v1.util.Sublist; import com.motor.alarm.Motor_Alarm; public class Motor_inf { @@ -13,10 +14,16 @@ public String motor_ip; //电机ip public String note; //备用 public Load_motor_state load_state; //加载电机状态 public Subject_motor_state subject_state; //受试电机状态 public List<Motor_Alarm> alarms; public Motor_inf() { public Motor_inf(int motor_id) { this.motor_id = motor_id; alarms = new ArrayList<Motor_Alarm>(); load_state = new Load_motor_state(motor_id); subject_state = new Subject_motor_state(motor_id); } public int getMotor_id() { Motor_MonitorServer/src/com/sql/Sql_Mysql.java
@@ -32,6 +32,7 @@ final public static String DB_DynamicSystem = "`db_dynamicsystem`"; final public static String DB_Elemachinery = "`db_elemachinery`"; final public static String DB_Motor_Realhistory = "`db_motor_realhistory`"; //--------------------------------------------------------------------------------------------// public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state"; //--------------------------------------------------------------------------------------------// @@ -166,6 +167,9 @@ public final static String Tb_Subject_Motor_state = DB_Elemachinery + ".tb_subject_motor_state"; //受试电机状态表 public final static String Tb_Devalarm_Rt = DB_Elemachinery + ".tb_devalaram_rt"; //电机实时告警记录表 public final static String Tb_Devalarm_History = DB_Elemachinery + ".tb_devalaram_history"; //电机历史告警记录表 public final static String Tb_Motor_Readdata = DB_Motor_Realhistory + ".tb_motor_readdata_"; //电机历史实时记录表 //--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------// public Connection mysql_con; Motor_MonitorServer/src/com/version_inf/version_inf.txt
@@ -1,2 +1,5 @@ V1.101 电机加载通讯程序 V1.102 at 2020-08-05 lijun 添加历史实时数据记录功能 Motor_MonitorServer/src/main/main_MonitorServer_Motor.java
@@ -7,6 +7,8 @@ import com.base.Com; import com.config.AppConfig; import com.config.AppParam; import com.modbus.historydata.Motor_HistoryData_Record_Thread; import com.modbus.historydata.Motor_HistoryData_Record_Thread_SQL; import com.motor.alarm.Motor_Alarm_Thread; import com.motor.conn.Motor_ServerSocket_Thread; import com.motor.conn.Motor_Task_SQL; @@ -20,7 +22,7 @@ /**************************************************************************/ /**************************************************************************/ public final static boolean app_debug = false; public final static double m_VersionNum = 1.101; public final static double m_VersionNum = 1.102; public final static String m_Version = "Welcome To Use main_MonitorServer_Motor V" + m_VersionNum ; /**************************************************************************/ @@ -57,18 +59,22 @@ /*********************************************************************************/ Motor_Task_SQL.init(GB_MysqlConnPool); Motor_HistoryData_Record_Thread_SQL.createDB_Motor_Realhistory(GB_MysqlConnPool); motors = Motor_Task_SQL.queryAllMotor_inf(GB_MysqlConnPool); Motor_Alarm_Thread alarmthread = new Motor_Alarm_Thread(GB_MysqlConnPool,motors); new Thread(alarmthread).start(); Motor_HistoryData_Record_Thread history = new Motor_HistoryData_Record_Thread(GB_MysqlConnPool, motors); new Thread(history).start(); Motor_ServerSocket_Thread server = new Motor_ServerSocket_Thread(GB_MysqlConnPool,motors); new Thread(server).start(); while(true) { try { Thread.sleep(5000); } catch (Exception e) { e.printStackTrace();