WaterSystem_MonitorServer/src/com/modbus/data/MyModbusUtils.java
@@ -1,286 +1,342 @@ package com.modbus.data; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusTransportException; import com.serotonin.modbus4j.locator.BaseLocator; import com.serotonin.modbus4j.msg.ModbusResponse; import com.serotonin.modbus4j.msg.WriteCoilRequest; import com.serotonin.modbus4j.msg.WriteCoilResponse; import com.serotonin.modbus4j.msg.WriteCoilsRequest; import com.serotonin.modbus4j.msg.WriteCoilsResponse; import com.serotonin.modbus4j.msg.WriteRegisterRequest; import com.serotonin.modbus4j.msg.WriteRegisterResponse; import com.serotonin.modbus4j.msg.WriteRegistersRequest; public class MyModbusUtils { /** * 读取[01 Coil Status 0x]类型 开关数据 * * @param slaveId * slaveId * @param offset * 位置 * @return 读取值 */ public static Boolean readCoilStatus(int offset,MyModbusMaster master){ // 01 Coil Status BaseLocator<Boolean> loc = BaseLocator.coilStatus(master.getSlaveId(), offset); Boolean value = null;; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { master.addErrorCount(); //e.printStackTrace(); } return value; } /** * 读取[02 Input Status 1x]类型 开关数据 * * @param slaveId * @param offset * @return */ public static Boolean readInputStatus(int offset,MyModbusMaster master){ // 02 Input Status BaseLocator<Boolean> loc = BaseLocator.inputStatus(master.getSlaveId(), offset); Boolean value = null;; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { master.addErrorCount(); //e.printStackTrace(); } return value; } /** * 读取[03 Holding Register类型 2x]模拟量数据 * * @param slaveId * slave Id * @param offset * 位置 * @param dataType * 数据类型,来自com.serotonin.modbus4j.code.DataType * @return */ public static Number readHoldingRegister(int offset, int dataType,MyModbusMaster master){ // 03 Holding Register类型数据读取 BaseLocator<Number> loc = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType); Number value = null; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { //e.printStackTrace(); master.addErrorCount(); } return value; } /** * 读取[04 Input Registers 3x]类型 模拟量数据 * * @param slaveId * slaveId * @param offset * 位置 * @param dataType * 数据类型,来自com.serotonin.modbus4j.code.DataType * @return 返回结果 * @throws ModbusTransportException * 异常 * @throws ErrorResponseException * 异常 * @throws ModbusInitException * 异常 */ public static Number readInputRegisters(int offset, int dataType,MyModbusMaster master){ // 04 Input Registers类型数据读取 BaseLocator<Number> loc = BaseLocator.inputRegister(master.getSlaveId(), offset, dataType); Number value = null; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { //e.printStackTrace(); master.addErrorCount(); } return value; } /** * 批量读取使用方法 * * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static void batchRead() { // BatchRead<Integer> batch = new BatchRead<Integer>(); // // batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT)); // batch.addLocator(1, BaseLocator.inputStatus(1, 0)); // // ModbusMaster master = getMaster(); // // batch.setContiguousRequests(false); // BatchResults<Integer> results = master.send(batch); // System.out.println(results.getValue(0)); // System.out.println(results.getValue(1)); } /** * 写 [01 Coil Status(0x)]写一个 function ID = 5 * * @param slaveId * slave的ID * @param writeOffset * 位置 * @param writeValue * ֵ * @return 是否写入成功 */ public static boolean writeCoil(int writeOffset, boolean writeValue,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求 // 发送请求并获取响应对象 WriteCoilResponse response = null; try { WriteCoilRequest request = new WriteCoilRequest(master.getSlaveId(), writeOffset, writeValue); response = (WriteCoilResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /** * 写[01 Coil Status(0x)] 写多个 function ID = 15 * * @param slaveId * slaveId * @param startOffset * 开始位置 * @param bdata * 写入的数据 * @return 是否写入成功 */ public static boolean writeCoils(int startOffset, boolean[] bdata,MyModbusMaster master) { // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求 WriteCoilsRequest request; WriteCoilsResponse response = null; try { request = new WriteCoilsRequest(master.getSlaveId(), startOffset, bdata); response = (WriteCoilsResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } // 发送请求并获取响应对象 if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /*** * 写[03 Holding Register(4x)] 写一个 function ID = 6 * * @param slaveId * @param writeOffset * @param writeValue * @return */ public static boolean writeRegister(int writeOffset, short writeValue,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求对象 WriteRegisterRequest request; WriteRegisterResponse response = null; try { request = new WriteRegisterRequest(master.getSlaveId(), writeOffset, writeValue); response = (WriteRegisterResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /** * * 写入[03 Holding Register(4x)]写多个 function ID=16 * * @param slaveId * modbus的slaveID * @param startOffset * 起始位置偏移量值 * @param sdata * 写入的数据 * @return 返回是否写入成功 */ public static boolean writeRegisters(int startOffset, short[] sdata,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求对象 WriteRegistersRequest request; // 发送请求并获取响应对象 ModbusResponse response = null; try { request = new WriteRegistersRequest(master.getSlaveId(), startOffset, sdata); response = tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response.isException()) { //log.error(response.getExceptionMessage()); master.addErrorCount(); return false; } else { return true; } } /** * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) * * @param slaveId * @param offset * @param value * 写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long * @param registerCount * ,com.serotonin.modbus4j.code.DataType */ public static void writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 类型 BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType); try { tcpMaster.setValue(locator, value); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); } } } package com.modbus.data; import com.base.ComBase; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusTransportException; import com.serotonin.modbus4j.locator.BaseLocator; import com.serotonin.modbus4j.msg.ModbusResponse; import com.serotonin.modbus4j.msg.WriteCoilRequest; import com.serotonin.modbus4j.msg.WriteCoilResponse; import com.serotonin.modbus4j.msg.WriteCoilsRequest; import com.serotonin.modbus4j.msg.WriteCoilsResponse; import com.serotonin.modbus4j.msg.WriteRegisterRequest; import com.serotonin.modbus4j.msg.WriteRegisterResponse; import com.serotonin.modbus4j.msg.WriteRegistersRequest; public class MyModbusUtils { /** * 读取[01 Coil Status 0x]类型 开关数据 * * @param slaveId * slaveId * @param offset * 位置 * @return 读取值 */ public static Boolean readCoilStatus(int offset,MyModbusMaster master){ // 01 Coil Status BaseLocator<Boolean> loc = BaseLocator.coilStatus(master.getSlaveId(), offset); Boolean value = null;; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { master.addErrorCount(); //e.printStackTrace(); } return value; } /** * 读取[02 Input Status 1x]类型 开关数据 * * @param slaveId * @param offset * @return */ public static Boolean readInputStatus(int offset,MyModbusMaster master){ // 02 Input Status BaseLocator<Boolean> loc = BaseLocator.inputStatus(master.getSlaveId(), offset); Boolean value = null;; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { master.addErrorCount(); //e.printStackTrace(); } return value; } /** * 读取[03 Holding Register类型 2x]模拟量数据 * * @param slaveId * slave Id * @param offset * 位置 * @param dataType * 数据类型,来自com.serotonin.modbus4j.code.DataType * @return */ public static Number readHoldingRegister(int offset, int dataType,MyModbusMaster master){ // 03 Holding Register类型数据读取 BaseLocator<Number> loc = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType); Number value = null; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { //e.printStackTrace(); master.addErrorCount(); } return value; } /** * 读取[04 Input Registers 3x]类型 模拟量数据 * * @param slaveId * slaveId * @param offset * 位置 * @param dataType * 数据类型,来自com.serotonin.modbus4j.code.DataType * @return 返回结果 * @throws ModbusTransportException * 异常 * @throws ErrorResponseException * 异常 * @throws ModbusInitException * 异常 */ public static Number readInputRegisters(int offset, int dataType,MyModbusMaster master){ // 04 Input Registers类型数据读取 BaseLocator<Number> loc = BaseLocator.inputRegister(master.getSlaveId(), offset, dataType); Number value = null; try { value = master.getMaster().getValue(loc); } catch (ModbusTransportException | ErrorResponseException e) { //e.printStackTrace(); master.addErrorCount(); } return value; } /** * 批量读取使用方法 * * @throws ModbusTransportException * @throws ErrorResponseException * @throws ModbusInitException */ public static void batchRead() { // BatchRead<Integer> batch = new BatchRead<Integer>(); // // batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT)); // batch.addLocator(1, BaseLocator.inputStatus(1, 0)); // // ModbusMaster master = getMaster(); // // batch.setContiguousRequests(false); // BatchResults<Integer> results = master.send(batch); // System.out.println(results.getValue(0)); // System.out.println(results.getValue(1)); } /** * 写 [01 Coil Status(0x)]写一个 function ID = 5 * * @param slaveId * slave的ID * @param writeOffset * 位置 * @param writeValue * ֵ * @return 是否写入成功 */ public static boolean writeCoil(int writeOffset, boolean writeValue,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求 // 发送请求并获取响应对象 WriteCoilResponse response = null; try { WriteCoilRequest request = new WriteCoilRequest(master.getSlaveId(), writeOffset, writeValue); response = (WriteCoilResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /** * 写[01 Coil Status(0x)] 写多个 function ID = 15 * * @param slaveId * slaveId * @param startOffset * 开始位置 * @param bdata * 写入的数据 * @return 是否写入成功 */ public static boolean writeCoils(int startOffset, boolean[] bdata,MyModbusMaster master) { // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求 WriteCoilsRequest request; WriteCoilsResponse response = null; try { request = new WriteCoilsRequest(master.getSlaveId(), startOffset, bdata); response = (WriteCoilsResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } // 发送请求并获取响应对象 if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /*** * 写[03 Holding Register(4x)] 写一个 function ID = 6 * * @param slaveId * @param writeOffset * @param writeValue * @return */ public static boolean writeRegister(int writeOffset, short writeValue,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求对象 WriteRegisterRequest request; WriteRegisterResponse response = null; try { request = new WriteRegisterRequest(master.getSlaveId(), writeOffset, writeValue); response = (WriteRegisterResponse) tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response == null || response.isException()) { master.addErrorCount(); return false; } else { return true; } } /** * * 写入[03 Holding Register(4x)]写多个 function ID=16 * * @param slaveId * modbus的slaveID * @param startOffset * 起始位置偏移量值 * @param sdata * 写入的数据 * @return 返回是否写入成功 */ public static boolean writeRegisters(int startOffset, short[] sdata,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 创建请求对象 WriteRegistersRequest request; // 发送请求并获取响应对象 ModbusResponse response = null; try { request = new WriteRegistersRequest(master.getSlaveId(), startOffset, sdata); response = tcpMaster.send(request); } catch (ModbusTransportException e) { e.printStackTrace(); } if (response.isException()) { //log.error(response.getExceptionMessage()); master.addErrorCount(); return false; } else { return true; } } /** * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) * * @param slaveId * @param offset * @param value * 写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long * @param registerCount * ,com.serotonin.modbus4j.code.DataType */ public static void writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){ // 获取master ModbusMaster tcpMaster = master.getMaster(); // 类型 BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType); try { tcpMaster.setValue(locator, value); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); } } public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){ batch.setContiguousRequests(false); try { return master.getMaster().send(batch); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); } return null; } /** * 构造线圈读取节点 * @param offset * @param master * @return */ public static BaseLocator<?> createBaseLocator(int offset,MyModbusMaster master) { return BaseLocator.coilStatus(master.getSlaveId(), offset); } /** * 构造读取节点 * @param offset * @param master * @return */ public static BaseLocator<?> createBaseLocator(int offset,int datatype,MyModbusMaster master) { return BaseLocator.holdingRegister(master.getSlaveId(), offset, datatype); } /** * 读取float类型数据 * @param obj Short类型 * @return */ public static float readShortToFloat(Object obj) { return (float)ComBase.changeShortToInt((Short)obj); } /** * 读取int类型数据 * @param obj Short类型 * @return */ public static int readShortToInt(Object obj) { return ComBase.changeShortToInt((Short)obj); } /** * 读取Boolean类型数据 * @param obj Boolean类型 * @return */ public static int readBooleanToInt(Object obj) { return ((Boolean)obj?1:0); } } WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_alarm.java
@@ -3,6 +3,11 @@ import java.io.Serializable; import java.util.Date; import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; public class Water_alarm implements Serializable{ public int num; public int water_id; @@ -92,5 +97,36 @@ return water_alarm; } /** * 创建读取数据集合 * @param master * @return */ public BatchRead<Integer> createBatchRead(MyModbusMaster master){ BatchRead<Integer> batch = new BatchRead<Integer>(); batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_Fault ,master));//冷却系统各部件故障信息 batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault ,master));//冷却系统支路流量/温度故障信息 batch.addLocator(2,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Pre_Fault , master));//冷却水压力故障 batch.addLocator(3,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Operation_highorlow, master));//冷却系统各部件低/高 batch.addLocator(4,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow, master));//冷却系统温度高/超高 batch.addLocator(5,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, master));//冷却系统支路温度/流量低/超低 batch.addLocator(6,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_Flow_ighorlow, master));//冷却水部分支路流量低/超低 return batch; } /** * 解析返回请求 * @param res */ public void putBatchResult(BatchResults<Integer> res) { if(res != null) { this.Watersystem_Operation_Fault = MyModbusUtils.readShortToInt(res.getValue(0)); this.Watersystem_BranchFlowTmp_Fault = MyModbusUtils.readShortToInt(res.getValue(1)); this.Watersystem_Pre_Fault = MyModbusUtils.readShortToInt(res.getValue(2)); this.Watersystem_Operation_highorlow = MyModbusUtils.readShortToInt(res.getValue(3)); this.Watersystem_Tmp_highorlow = MyModbusUtils.readShortToInt(res.getValue(4)); this.Watersystem_TmpFlow_highorlow = MyModbusUtils.readShortToInt(res.getValue(5)); this.Watersystem_Flow_ighorlow = MyModbusUtils.readShortToInt(res.getValue(6)); } } } WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_brach.java
@@ -2,6 +2,11 @@ import java.io.Serializable; import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; public class Water_brach implements Serializable{ public int num;//'主键', public int water_id;//'水冷系统id', @@ -299,5 +304,80 @@ + ", Branch_pre_9=" + Branch_pre_9 + ", note=" + note + "]"; } /** * 创建读取数据集合 * @param master * @return */ public BatchRead<Integer> createBatchRead(MyModbusMaster master){ BatchRead<Integer> batch = new BatchRead<Integer>(); batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_1 ,master));//'1#支路流量', batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_2,master)); batch.addLocator(2,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_3, master)); batch.addLocator(3,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_4, master)); batch.addLocator(4,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_5, master)); batch.addLocator(5,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_6, master)); batch.addLocator(6,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_7, master)); batch.addLocator(7,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_8, master)); batch.addLocator(8,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_flow_9, master));//'9#支路流量', batch.addLocator(9,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_1, master));//'1#支路温度', batch.addLocator(10,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_2 ,master)); batch.addLocator(11,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_3 ,master)); batch.addLocator(12,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_4, master)); batch.addLocator(13,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_5, master)); batch.addLocator(14,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_6, master)); batch.addLocator(15,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_7, master)); batch.addLocator(16,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_8, master)); batch.addLocator(17,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_tmp_9, master));//'9#支路温度', batch.addLocator(18,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_1, master));//'1#支路压力', batch.addLocator(19,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_2, master)); batch.addLocator(20,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_3, master)); batch.addLocator(21,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_4, master)); batch.addLocator(22,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_5, master)); batch.addLocator(23,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_6, master)); batch.addLocator(24,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_7, master)); batch.addLocator(25,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_8, master)); batch.addLocator(26,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Branch_pre_9, master));//'9#支路压力', return batch; } /** * 解析返回请求 * @param res */ public void putBatchResult(BatchResults<Integer> res) { if(res != null) { this.Branch_flow_1 = MyModbusUtils.readShortToFloat(res.getValue(0)); this.Branch_flow_2 = MyModbusUtils.readShortToFloat(res.getValue(1)); this.Branch_flow_3 = MyModbusUtils.readShortToFloat(res.getValue(2)); this.Branch_flow_4 = MyModbusUtils.readShortToFloat(res.getValue(3)); this.Branch_flow_5 = MyModbusUtils.readShortToFloat(res.getValue(4)); this.Branch_flow_6 = MyModbusUtils.readShortToFloat(res.getValue(5)); this.Branch_flow_7 = MyModbusUtils.readShortToFloat(res.getValue(6)); this.Branch_flow_8 = MyModbusUtils.readShortToFloat(res.getValue(7)); this.Branch_flow_9 = MyModbusUtils.readShortToFloat(res.getValue(8)); this.Branch_tmp_1 = MyModbusUtils.readShortToFloat(res.getValue(9)); this.Branch_tmp_2 = MyModbusUtils.readShortToFloat(res.getValue(10)); this.Branch_tmp_3 = MyModbusUtils.readShortToFloat(res.getValue(11)); this.Branch_tmp_4 = MyModbusUtils.readShortToFloat(res.getValue(12)); this.Branch_tmp_5 = MyModbusUtils.readShortToFloat(res.getValue(13)); this.Branch_tmp_6 = MyModbusUtils.readShortToFloat(res.getValue(14)); this.Branch_tmp_7 = MyModbusUtils.readShortToFloat(res.getValue(15)); this.Branch_tmp_8 = MyModbusUtils.readShortToFloat(res.getValue(16)); this.Branch_tmp_9 = MyModbusUtils.readShortToFloat(res.getValue(17)); this.Branch_pre_1 = MyModbusUtils.readShortToFloat(res.getValue(18)); this.Branch_pre_2 = MyModbusUtils.readShortToFloat(res.getValue(19)); this.Branch_pre_3 = MyModbusUtils.readShortToFloat(res.getValue(20)); this.Branch_pre_4 = MyModbusUtils.readShortToFloat(res.getValue(21)); this.Branch_pre_5 = MyModbusUtils.readShortToFloat(res.getValue(22)); this.Branch_pre_6 = MyModbusUtils.readShortToFloat(res.getValue(23)); this.Branch_pre_7 = MyModbusUtils.readShortToFloat(res.getValue(24)); this.Branch_pre_8 = MyModbusUtils.readShortToFloat(res.getValue(25)); this.Branch_pre_9 = MyModbusUtils.readShortToFloat(res.getValue(26)); } } } WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_rt.java
@@ -2,6 +2,11 @@ import java.io.Serializable; import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; public class Water_rt implements Serializable{ public int num;//'主键', public int water_id ;//'水冷系统id', @@ -122,5 +127,46 @@ + ", External_tmp=" + External_tmp + ", External_pre=" + External_pre + ", note=" + note + "]"; } /** * 创建读取数据集合 * @param master * @return */ public BatchRead<Integer> createBatchRead(MyModbusMaster master){ BatchRead<Integer> batch = new BatchRead<Integer>(); batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Cooling_flow ,master));//'冷却水流量', batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Supply_tmp ,master));//'供水温度', batch.addLocator(2,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Supply_pre , master));//'供水压力', batch.addLocator(3,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.back_tem, master));//'回水温度', batch.addLocator(4,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.back_pre, master));//'回水压力', batch.addLocator(5,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Cooling_ser, master));//'冷却水电导率', batch.addLocator(6,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Buffer_tank_level, master));//'缓冲罐液位' batch.addLocator(7,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Buffer_tank_pre, master)); //'缓冲罐压力', batch.addLocator(8,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Humidity_chamber, master));//'阀厅湿度', batch.addLocator(9,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Tem_chamber, master)); //'阀厅温度', batch.addLocator(10,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.External_tmp, master));//'外水温度', batch.addLocator(11,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.External_pre,master));//'外水压力', return batch; } /** * 解析返回请求 * @param res */ public void putBatchResult(BatchResults<Integer> res) { if(res != null) { this.cooling_flow = MyModbusUtils.readShortToFloat(res.getValue(0)); this.supply_tmp = MyModbusUtils.readShortToFloat(res.getValue(1)); this.Supply_pre = MyModbusUtils.readShortToFloat(res.getValue(2)); this.back_tem = MyModbusUtils.readShortToFloat(res.getValue(3)); this.back_pre = MyModbusUtils.readShortToFloat(res.getValue(4)); this.Cooling_ser = MyModbusUtils.readShortToFloat(res.getValue(5)); this.Buffer_tank_level = MyModbusUtils.readShortToFloat(res.getValue(6)); this.Buffer_tank_pre = MyModbusUtils.readShortToFloat(res.getValue(7)); this.Humidity_chamber = MyModbusUtils.readShortToFloat(res.getValue(8)); this.Tem_chamber= MyModbusUtils.readShortToFloat(res.getValue(9)); this.External_tmp= MyModbusUtils.readShortToFloat(res.getValue(10)); this.External_pre = MyModbusUtils.readShortToFloat(res.getValue(11)); } } } WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_state.java
@@ -2,6 +2,11 @@ import java.io.Serializable; import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; public class Water_state implements Serializable{ public int num;//'主键', public int water_id;//'水冷系统id', @@ -164,5 +169,42 @@ + ", Water_system_function=" + Water_system_function + ", note=" + note + "]"; } /** * 创建读取数据集合 * @param master * @return */ public BatchRead<Integer> createBatchRead(MyModbusMaster master){ BatchRead<Integer> batch = new BatchRead<Integer>(); batch.addLocator(0,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_All_Operation ,master));//水冷系统各部件运行情况 batch.addLocator(1,MyModbusUtils.createBaseLocator(Watersystem_ModbusAddress.Watersystem_All_State ,master));//故障复位信号 return batch; } /** * 解析返回请求 * @param res */ public void putBatchResult(BatchResults<Integer> res) { if(res != null) { int Watersystem_All_Operation= MyModbusUtils.readShortToInt(res.getValue(0)); this.P01_main_pump=(Watersystem_All_Operation>>8&1); this.P11_replenish_pump=(Watersystem_All_Operation>>9&1); this.P12_pretest_pump=(Watersystem_All_Operation>>10&1); this.P13_replenish_pump=(Watersystem_All_Operation>>11&1); this.H01_electric_heater=(Watersystem_All_Operation>>12&1); this.H02_electric_heater=(Watersystem_All_Operation>>13&1); this.Solenoid_openflag=(Watersystem_All_Operation>>14&1); this.Solenoid_shutflag=(Watersystem_All_Operation>>15&1); this.valve_start=(Watersystem_All_Operation>>0&1); this.Exhaust_start=(Watersystem_All_Operation>>8&1); this.remote_start=(Watersystem_All_Operation>>8&5); this.remote_stop=(Watersystem_All_Operation>>8&6); this.Operation_ooled_devices=(Watersystem_All_Operation>>8&7); int Watersystem_All_State = MyModbusUtils.readShortToInt(res.getValue(1)); this.Auto_control_state=(Watersystem_All_State>>8&1); this.Manual_control_state=(Watersystem_All_State>>9&1); this.remote_control_state=(Watersystem_All_State>>10&1); this.Water_system_function=(Watersystem_All_State>>11&1); } } } WaterSystem_MonitorServer/src/com/watersystem/monitor/Watersystem_SocketClient_Thread.java
@@ -8,6 +8,8 @@ import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; import com.serotonin.modbus4j.code.DataType; import com.sql.MysqlConnPool; @@ -48,21 +50,25 @@ if(runCount %2 == 0) { //*************************** 更新水冷系统实时信息******************************//* readWater_rt(master,wrt); //readWater_rt(master,wrt); readMutilWater_rt(master, wrt); Water_Task_SQL.replace_water_rt(conn_pool, wrt); //**************************** 更新水冷系统分支实时信息 *****************************//* readWater_brach(master,wbrach); //readWater_brach(master,wbrach); readMutilWater_brach(master, wbrach); Water_Task_SQL.replace_water_brach(conn_pool, wbrach); //**************************** 更新水冷系统状态信息 *****************************//* readWater_state(master,wstate); //readWater_state(master,wstate); readMutilWater_state(master, wstate); Water_Task_SQL.replace_water_state(conn_pool, wstate); } if(runCount %4 == 0) { //*************************** 读取水冷信息故障 ******************************//* readWaterAlarmData(master,walarm); //readWaterAlarmData(master,walarm); readMutilWaterAlarmData(master, walarm); Water_Task_SQL.insertOrUpdateWater_alarmTable(conn_pool, listAlarm); } @@ -104,7 +110,7 @@ wrt.External_tmp = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.External_tmp,DataType.TWO_BYTE_INT_SIGNED, master), wrt.External_tmp); //'外水温度', wrt.External_pre = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.External_pre, DataType.TWO_BYTE_INT_SIGNED, master), wrt.External_pre);//'外水压力', } /* 更新电源实时信息 /* 更新电源实时分支信息 * @param master * @param load_state */ @@ -529,7 +535,406 @@ } } } /** * 多点读取水冷系统实时信息 * @param master * @param dbutton */ public void readMutilWater_rt(MyModbusMaster master, Water_rt wrt) { BatchRead<Integer> batch = wrt.createBatchRead(master); BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master); wrt.putBatchResult(res); } /** * 更新水冷系统实时状态信息 * @param master * @param dstate */ public void readMutilWater_state(MyModbusMaster master, Water_state wstate) { BatchRead<Integer> batch = wstate.createBatchRead(master); BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master); wstate.putBatchResult(res); } /** * 更新电源实时分支信息 * @param master * @param dstate */ public void readMutilWater_brach(MyModbusMaster master, Water_brach wbrach) { BatchRead<Integer> batch = wbrach.createBatchRead(master); BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master); wbrach.putBatchResult(res); } /** * 更新电源实时分支信息 * @param master * @param dstate */ public void readMutilWaterAlarmData(MyModbusMaster master, Water_alarm walarm) { BatchRead<Integer> batch = walarm.createBatchRead(master); BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master); walarm.putBatchResult(res); listAlarm=new ArrayList<Water_alarm>(); if(res!=null) { if(walarm.Watersystem_Operation_Fault>0) { if((walarm.Watersystem_Operation_Fault>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129300);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129301);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129302);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129303);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129304);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129305);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129306);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129307);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129308);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129309);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129310);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129311);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129312);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129313);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129314);listAlarm.add(w); } if((walarm.Watersystem_Operation_Fault>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129315);listAlarm.add(w); } } walarm.Watersystem_BranchFlowTmp_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_BranchFlowTmp_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_BranchFlowTmp_Fault);//冷却系统支路流量/温度故障信息 if(walarm.Watersystem_BranchFlowTmp_Fault>0) { if((walarm.Watersystem_BranchFlowTmp_Fault>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129400);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129401);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129402);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129403);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129404);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129405);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129406);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129407);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129408);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129409);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129410);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129411);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129412);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129413);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129414);listAlarm.add(w); } if((walarm.Watersystem_BranchFlowTmp_Fault>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129415);listAlarm.add(w); } } walarm.Watersystem_Pre_Fault = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Pre_Fault, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Pre_Fault);//冷却水压力故障 if(walarm.Watersystem_Pre_Fault>0) { if((walarm.Watersystem_Pre_Fault>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129500);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129501);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129502);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129503);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129504);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129505);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129506);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129507);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129508);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129509);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129510);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129511);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129512);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129513);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129514);listAlarm.add(w); } if((walarm.Watersystem_Pre_Fault>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129515);listAlarm.add(w); } } walarm.Watersystem_Operation_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Operation_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Operation_highorlow);//冷却系统各部件低/高 if(walarm.Watersystem_Operation_highorlow>0) { if((walarm.Watersystem_Operation_highorlow>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129600);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129601);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129602);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129603);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129604);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129605);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129606);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129607);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129608);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129609);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129610);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129611);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129612);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129613);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129614);listAlarm.add(w); } if((walarm.Watersystem_Operation_highorlow>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129615);listAlarm.add(w); } } walarm.Watersystem_Tmp_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_Tmp_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_Tmp_highorlow);//冷却系统温度高/超高 if(walarm.Watersystem_Tmp_highorlow>0) { if((walarm.Watersystem_Tmp_highorlow>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129700);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129701);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129702);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129703);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129704);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129705);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129706);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129707);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129708);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129708);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129710);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129711);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129712);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129713);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129714);listAlarm.add(w); } if((walarm.Watersystem_Tmp_highorlow>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129715);listAlarm.add(w); } } walarm.Watersystem_TmpFlow_highorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却系统支路温度/流量低/超低 if(walarm.Watersystem_TmpFlow_highorlow>0) { if((walarm.Watersystem_TmpFlow_highorlow>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129800);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129801);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129802);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129803);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129804);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129805);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129806);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129807);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129808);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129809);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129810);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129811);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129812);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129813);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129814);listAlarm.add(w); } if((walarm.Watersystem_TmpFlow_highorlow>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129815);listAlarm.add(w); } } walarm.Watersystem_Flow_ighorlow = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Watersystem_TmpFlow_highorlow, DataType.TWO_BYTE_INT_SIGNED, master), walarm.Watersystem_TmpFlow_highorlow);//冷却水部分支路流量低/超低 if(walarm.Watersystem_Flow_ighorlow>0) { if((walarm.Watersystem_Flow_ighorlow>>8&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129900);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>9&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129901);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>10&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129902);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>11&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129903);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>12&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129904);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>13&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129905);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>14&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129906);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>15&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129907);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>0&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129908);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>1&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129909);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>2&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129910);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>3&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129911);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>4&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129912);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>5&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129913);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>6&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129914);listAlarm.add(w); } if((walarm.Watersystem_Flow_ighorlow>>7&1)==1) { Water_alarm w=walarm.createWalarm(walarm.getWater_id(), 129915);listAlarm.add(w); } } } } public static void main(String[] args) { int b=13; String a=Integer.toBinaryString(b>>0&1);