From 455401679935a41e16f8f71a8b62dd9af47b934a Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期三, 14 十月 2020 17:09:03 +0800
Subject: [PATCH] 受试电机有符号位数修复

---
 Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java |   51 +++++++++++----------------------------------------
 1 files changed, 11 insertions(+), 40 deletions(-)

diff --git a/Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java b/Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java
index 3b1c97b..9916da0 100644
--- a/Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java
+++ b/Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java
@@ -1,18 +1,17 @@
 package com.modbus.data;
 
-import com.serotonin.modbus4j.BatchRead;
-import com.serotonin.modbus4j.BatchResults;
 import com.serotonin.modbus4j.ModbusMaster;
-import com.serotonin.modbus4j.code.DataType;
 import com.serotonin.modbus4j.ip.IpParameters;
 
 public class MyModbusMaster {
 	public final static int SLAVEID_DEFAULT = 2;
 	
 	public final static int MAX_ERROR_COUNT = 2;		//最大连续错误计数
+	public final static int LOSE_CONNECT_COUNT = 20;	//通讯中断最大计数
+	
 	private ModbusMaster master;
 	private int errcount;								//错误计数	错误连续超过三个时重新获取master
-	private int totalerr;								//总的错误计数			//用于判别设备是否掉线
+	private int totalerr = 31;							//总的错误计数[默认失去连接]	用于判别设备是否掉线
 	private String target_ip;							//目标ip
 	private int slaveId;								//设备ID
 	
@@ -42,7 +41,7 @@
 	}
 	
 	public void reConnect() {
-		System.out.println(target_ip);
+		//System.out.println(target_ip);
 		IpParameters params = new IpParameters();
 		params.setHost(target_ip);
 		if(this.master != null) {
@@ -86,6 +85,13 @@
 		
 	}
 	
+	public int getConnectState() {
+		if(this.totalerr < LOSE_CONNECT_COUNT) {
+			return 1;
+		}
+		return 0;
+	}
+	
 	public int getTotalerr() {
 		return totalerr;
 	}
@@ -127,40 +133,5 @@
 	public String toString() {
 		return "MyModbusMaster [SLAVEID_DEFAULT=" + SLAVEID_DEFAULT + ", master=" + master + ", errcount=" + errcount
 				+ ", target_ip=" + target_ip + ", slaveId=" + slaveId + "]";
-	}
-	
-	
-	public static void main(String[] args) {
-		MyModbusMaster master = new MyModbusMaster("192.168.2.22", 2);
-		//float t1 = MyModbusUtils.readShortToFloat(MyModbusUtils.readHoldingRegister(1119, DataType.TWO_BYTE_INT_SIGNED, master));
-		BatchRead<Integer> batch = new BatchRead<Integer>();
-		batch.addLocator(0,MyModbusUtils.createBaseLocator(58, DataType.TWO_BYTE_INT_SIGNED, master));				//加载功率给定		58	
-		batch.addLocator(1,MyModbusUtils.createBaseLocator(364, DataType.TWO_BYTE_INT_SIGNED, master));				//加载转矩给定		364
-		batch.addLocator(2,MyModbusUtils.createBaseLocator(366, DataType.TWO_BYTE_INT_UNSIGNED_SWAPPED, master));	//加载电机转速限制	366
-		batch.addLocator(3,MyModbusUtils.createBaseLocator(367, DataType.TWO_BYTE_INT_SIGNED, master));				//加载电机转矩限制	367
-		batch.addLocator(4,MyModbusUtils.createBaseLocator(505, DataType.TWO_BYTE_INT_UNSIGNED, master));			//加载步长			505
-		batch.addLocator(5,MyModbusUtils.createBaseLocator(1006, DataType.TWO_BYTE_INT_UNSIGNED, master));			//加载电机水冷进水风温1006
-		batch.addLocator(6,MyModbusUtils.createBaseLocator(1008, DataType.TWO_BYTE_INT_UNSIGNED, master));			//加载电机水冷出水风温1008
-		batch.addLocator(7,MyModbusUtils.createBaseLocator(1096, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机电流		1096
-		batch.addLocator(8,MyModbusUtils.createBaseLocator(1099, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机功率		1099
-		batch.addLocator(9,MyModbusUtils.createBaseLocator(1101, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机转速		1101
-		batch.addLocator(10,MyModbusUtils.createBaseLocator(1103, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机电压		1103
-//		batch.addLocator(11,MyModbusUtils.createBaseLocator(1119, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机绕组温度1	1119
-//		batch.addLocator(12,MyModbusUtils.createBaseLocator(1120, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机绕组温度2	1120
-//		batch.addLocator(13,MyModbusUtils.createBaseLocator(1121, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机绕组温度3	1121
-//		batch.addLocator(14,MyModbusUtils.createBaseLocator(1122, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机轴承温度1	1122
-//		batch.addLocator(15,MyModbusUtils.createBaseLocator(1123, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机轴承温度2	1123
-//		batch.addLocator(16,MyModbusUtils.createBaseLocator(1250, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机出口温度	1250
-//		batch.addLocator(17,MyModbusUtils.createBaseLocator(1124, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机进口温度	1124
-		batch.addLocator(18,MyModbusUtils.createBaseLocator(1251, DataType.TWO_BYTE_INT_SIGNED, master));			//加载电机转矩		1251
-		batch.addLocator(19,MyModbusUtils.createBaseLocator(5680, master));											//加载电机启动		5680
-		batch.addLocator(20,MyModbusUtils.createBaseLocator(5681, master));											//加载电机停机		5681
-		batch.addLocator(21,MyModbusUtils.createBaseLocator(8000, master));											//加载			8000
-		batch.addLocator(22,MyModbusUtils.createBaseLocator(8001, master));											//减载			8001
-		batch.addLocator(23,MyModbusUtils.createBaseLocator(8040, master));											//手动加载			8040
-		batch.addLocator(24,MyModbusUtils.createBaseLocator(16005, master));										//加载电机紧停		16005
-		batch.addLocator(25,MyModbusUtils.createBaseLocator(17082, master));										//加载电机风机状态	17082
-		BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
-		System.out.println(res.getValue(0));
 	}
 }

--
Gitblit v1.9.1