Motor_MonitorServer/src/com/modbus/data/MyModbusUtils.java
@@ -151,7 +151,7 @@ try { return master.getMaster().send(batch); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); //e.printStackTrace(); isSuccess = false; } finally { if(isSuccess) { Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread.java
@@ -10,7 +10,8 @@ public class Motor_HistoryData_Record_Thread implements Runnable{ //历史数据最大保留天数 public static final int HISTORYDATA_MAXSAVE_TIMELONG = 180; //历史数据最大保留天数 public static final int HISTORYDATA_MAXSAVE_TIMELONG = 30; //历史数据最大保留天数 public static final int TESTDATA_RECORD_INTERVAL = 10; public MysqlConnPool pool; public List<Motor_inf> motors; @@ -25,24 +26,33 @@ 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; Date last = new Date(0); Date now = null; while(true) { try { nowdate = Com.getDateTimeFormat(new Date(), Com.DTF_Y_M_D); now = new Date(); nowdate = Com.getDateTimeFormat(now, 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(!Motor_HistoryData_Record_Thread_SQL.checkHistoryIfNotExistsTable(pool, motors.get(i).motor_id, now)) { Motor_HistoryData_Record_Thread_SQL.createTb_Motor_ReaddataTable(pool, motors.get(i).motor_id, now); } 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())); if(!Motor_HistoryData_Record_Thread_SQL.checkHistoryIfNotExistsTable(pool, motors.get(i).motor_id, tomorrow(now))) { Motor_HistoryData_Record_Thread_SQL.createTb_Motor_ReaddataTable(pool, motors.get(i).motor_id, tomorrow(now)); } lastdate = nowdate; } long timelong = (now.getTime()-last.getTime())/1000; if(timelong >= TESTDATA_RECORD_INTERVAL && motors.get(i).conn_state >0) { //判断当前通讯是否正常 Motor_HistoryData_Record_Thread_SQL.insertTb_Motor_ReaddataTable(pool,motors.get(i),nowdate); last = now; } Thread.sleep(1000); Date del_time = getDateBefore(now,HISTORYDATA_MAXSAVE_TIMELONG); Motor_HistoryData_Record_Thread_SQL.deleteHistoryData(pool, del_time); } Thread.sleep(200); } catch (Exception e) { try { Thread.sleep(1000); @@ -66,4 +76,17 @@ 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(); } } Motor_MonitorServer/src/com/modbus/historydata/Motor_HistoryData_Record_Thread_SQL.java
@@ -1,5 +1,6 @@ package com.modbus.historydata; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; @@ -97,4 +98,47 @@ 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_motor_realhistory' " + " AND TABLE_NAME like 'tb_motor_readdata_%' " + " 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_motor_realhistory." + 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(); } } } Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
@@ -85,6 +85,8 @@ //System.err.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); Motor_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, motor.motor_id, master); motor.conn_state = master.getConnectState(); if(runCount%10 == 0) { //更新当前设备ip master.setTarget_ip(motor.motor_ip); Motor_MonitorServer/src/com/motor/data/Motor_inf.java
@@ -20,6 +20,8 @@ public String motor_ip; //电机ip public String note; //备用 public int conn_state; //通讯状态 1:通讯正常 0:通讯故障 public Load_motor_state load_state; //加载电机状态 public Subject_motor_state subject_state; //受试电机状态 Motor_MonitorServer/src/main/main_MonitorServer_Motor.java
@@ -59,7 +59,7 @@ /*********************************************************************************/ Motor_Task_SQL.init(GB_MysqlConnPool); //Motor_HistoryData_Record_Thread_SQL.createDB_Motor_Realhistory(GB_MysqlConnPool); Motor_HistoryData_Record_Thread_SQL.createDB_Motor_Realhistory(GB_MysqlConnPool); motors = Motor_Task_SQL.queryAllMotor_inf(GB_MysqlConnPool); @@ -67,8 +67,8 @@ new Thread(alarmthread).start(); //Motor_HistoryData_Record_Thread history = new Motor_HistoryData_Record_Thread(GB_MysqlConnPool, motors); //new Thread(history).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();