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