From dec31d5d19346c24412e8b51783455a1f4bec7b1 Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期三, 26 八月 2020 21:29:18 +0800
Subject: [PATCH] 提高读取速度

---
 Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java |   70 ++++++++++++++++++++++++++++++-----
 1 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java b/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
index 4f7284e..e07c745 100644
--- a/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
+++ b/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
@@ -2,12 +2,15 @@
 
 import java.util.Date;
 
+import com.base.Com;
 import com.modbus.data.MyModbusMaster;
 import com.modbus.data.MyModbusUtils;
 import com.motor.data.Load_motor_state;
 import com.motor.data.Motor_control;
 import com.motor.data.Motor_inf;
 import com.motor.data.Subject_motor_state;
+import com.serotonin.modbus4j.BatchRead;
+import com.serotonin.modbus4j.BatchResults;
 import com.serotonin.modbus4j.code.DataType;
 import com.sql.MysqlConnPool;
 
@@ -52,25 +55,34 @@
 					Motor_Task_SQL.updateMotor_Control(conn_pool, control);
 				}
 				
+				Date t1 = new Date();
+				Date t2 = new Date();
 				if(runCount %2 == 0) {
 					/*************************** 更新加载电机数据 ******************************/
-					readLoadMotorSingnal(master,load_state);
+					//readLoadMotorSingnal(master,load_state);
+					readMutilLoadMotorSingnal(master,load_state);
 					Motor_Task_SQL.updateLoadMotor_State(conn_pool, load_state);
 					
 					
-					/**************************** 读取受试电机数据 *****************************/
-					readSubjectMotorSingnal(master,subject_state);
-					Motor_Task_SQL.updateSubjectMotor_State(conn_pool, subject_state);
 				}
-				
-				if(runCount %4 == 0) {
+				if(runCount %3 == 0) {
+					/**************************** 读取受试电机数据 *****************************/
+					//readSubjectMotorSingnal(master,subject_state);
+					readMutilSubjectMotorSingnal(master,subject_state);
+					//t2 = new Date();
+					Motor_Task_SQL.updateSubjectMotor_State(conn_pool, subject_state);
+					//System.out.println((new Date().getTime()-t2.getTime()));
+				}
+				//System.out.println((new Date().getTime()-t1.getTime())+"==="+(t2.getTime()-t1.getTime()));
+				if(runCount %5 == 0) {
 					/*************************** 读取故障状态信息 ******************************/
 					//Date start = new Date();					
-					readMotorAlarmData(master,motor);
+					//readMotorAlarmData(master,motor);
+					readMutilMotorAlarmData(master,motor);
 					//Date end = new Date();
-					//System.out.println((end.getTime()-start.getTime())/1000);
+					//System.err.println((end.getTime()-start.getTime()));
 				}
-				
+				//System.err.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
 				if(runCount%10 == 0) {
 					//更新当前设备ip
 					master.setTarget_ip(motor.motor_ip);
@@ -79,7 +91,7 @@
 					runCount = 0;
 				}
 				runCount ++;				
-				Thread.sleep(200);				
+				Thread.sleep(50);				
 			} catch (Exception e) {
 				try {
 					Thread.sleep(1000);
@@ -107,6 +119,18 @@
 		if(read_alarm_index >= motor2.alarms.size()) {
 			read_alarm_index = 0;
 		}
+	}
+	
+	/**
+	 * 	批量设备报警信息
+	 * @param master2
+	 * @param motor2
+	 */
+	private void readMutilMotorAlarmData(MyModbusMaster master2, Motor_inf motor2) {
+		BatchRead<Integer> batch = motor2.createBatchRead(master);		
+		BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
+		motor2.putBatchResult(res);
+		
 	}
 
 	/**
@@ -151,6 +175,17 @@
 		subject_state2.lubrication_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17349, master2), subject_state2.lubrication_alarm);											//润滑报警			17349
 		subject_state2.record_time = new Date();
 	}
+	
+	/**
+	 * 批量读取受试电机信息
+	 * @param master2
+	 * @param subject_state2
+	 */
+	private void readMutilSubjectMotorSingnal(MyModbusMaster master2, Subject_motor_state subject_state2) {
+		BatchRead<Integer> batch = subject_state2.createBatchRead(master);		
+		BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
+		subject_state2.putBatchResult(res);
+	}
 
 	/**
 	 * 	读取加载电机信息
@@ -186,6 +221,21 @@
 		load_state2.load_motor_fan_state = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17082, master2), load_state2.load_motor_fan_state);													//加载电机风机状态	17082																															
 		load_state2.record_time = new Date();	
 	}
+	
+	/**
+	 * 	批量读取加载电机信息
+	 * @param master2
+	 * @param load_state2
+	 */
+	private void readMutilLoadMotorSingnal(MyModbusMaster master2, Load_motor_state load_state2) {
+		BatchRead<Integer> batch = load_state2.createBatchRead(master);		
+		BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
+		load_state2.putBatchResult(res);
+		
+		
+			
+	}
+	
 	/**
 	 * 	写入控制量信号
 	 * @param master2

--
Gitblit v1.9.1