From f7874e2b19ff231100ea354ad100e7f7b4b6d718 Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期三, 05 八月 2020 10:31:17 +0800
Subject: [PATCH] 电机控制修复

---
 Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 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 31a248b..7d7ffbc 100644
--- a/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
+++ b/Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
@@ -21,6 +21,9 @@
 	
 	public MyModbusMaster master;
 	
+	public static final int MAX_READALARM_COUNT = 20;		//一次读取告警节点的最大数量
+	public int read_alarm_index = 0;						//读取告警索引
+	
 	public Motor_SocketClient_Thread(Motor_inf motor,MysqlConnPool conn_pool) {
 		this.conn_pool = conn_pool;
 		this.motor = motor;
@@ -38,6 +41,8 @@
 		while(true) {
 			try {
 				Motor_Task_SQL.queryMotor_ControlTable(conn_pool, control);
+				//System.out.println(control.isControl_en()+"################33");
+				
 				if(control.isControl_en()) {
 					/************************** 控制输出 *******************************/
 					writeControlSignal(master,control);
@@ -57,7 +62,10 @@
 				
 				if(runCount %4 == 0) {
 					/*************************** 读取故障状态信息 ******************************/
+					//Date start = new Date();					
 					readMotorAlarmData(master,motor);
+					//Date end = new Date();
+					//System.out.println((end.getTime()-start.getTime())/1000);
 				}
 				
 				if(runCount%10 == 0) {
@@ -86,8 +94,15 @@
 	 * @param motor2
 	 */
 	private void readMotorAlarmData(MyModbusMaster master2, Motor_inf motor2) {
-		for(int i=0 ; i< motor2.alarms.size();i++) {
+		for(int i=read_alarm_index ; i< motor2.alarms.size() && i< (read_alarm_index+MAX_READALARM_COUNT);i++) {
+			//Date start = new Date();
 			motor2.alarms.get(i).checkAlarm((int)master2.checkNullData(MyModbusUtils.readCoilStatus(12000+i*4, master2), motor2.alarms.get(i).alarm_state));
+			//Date end = new Date();
+			//System.err.println((end.getTime()-start.getTime())+"===="+i);
+		}
+		read_alarm_index += MAX_READALARM_COUNT;
+		if(read_alarm_index >= motor2.alarms.size()) {
+			read_alarm_index = 0;
 		}
 	}
 
@@ -174,6 +189,7 @@
 	 * @param control2
 	 */
 	private void writeControlSignal(MyModbusMaster master2, Motor_control control2) {
+		System.out.println(control2);
 		if(control2.load_power >0) {
 			MyModbusUtils.writeHoldingRegister(58, control.load_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
 		}
@@ -201,7 +217,6 @@
 		if(control2.advance_power >0) {
 			MyModbusUtils.writeHoldingRegister(854, control.advance_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
 		}
-		control2.clear();
 	}
 	
 }

--
Gitblit v1.9.1