whyclj
2020-09-19 a12d2836a6c08cb457afb0abdd89b734e0cbb03d
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
   
@@ -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));
   }
}