package com.watersystem.monitor;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.modbus.data.MyModbusMaster;
|
import com.modbus.data.MyModbusUtils;
|
import com.serotonin.modbus4j.code.DataType;
|
import com.sql.MysqlConnPool;
|
|
public class Watersystem_SocketClient_Thread implements Runnable{
|
public MysqlConnPool conn_pool;
|
public Water_inf winf;
|
|
public Water_rt wrt;
|
public Water_brach wbrach;
|
public Water_state wstate;
|
|
public MyModbusMaster master;
|
|
//public static final int MAX_READALARM_COUNT = 20; //Ò»´Î¶ÁÈ¡¸æ¾¯½ÚµãµÄ×î´óÊýÁ¿
|
//public int read_alarm_index = 0; //¶ÁÈ¡¸æ¾¯Ë÷Òý
|
|
public Watersystem_SocketClient_Thread(Water_inf winf,MysqlConnPool conn_pool) {
|
this.conn_pool = conn_pool;
|
this.winf = winf;
|
|
wrt = new Water_rt(winf.getWater_id());
|
wstate = new Water_state(winf.getWater_id());
|
wbrach = new Water_brach(winf.getWater_id());
|
master = new MyModbusMaster(winf.getWater_ip(), MyModbusMaster.SLAVEID_DEFAULT);
|
}
|
|
|
|
|
|
@Override
|
public void run() {
|
int runCount = 0;
|
while(true) {
|
try {
|
|
if(runCount %2 == 0) {
|
//*************************** ¸üÐÂË®ÀäϵͳʵʱÐÅÏ¢******************************//*
|
readWater_rt(master,wrt);
|
Water_Task_SQL.replace_water_rt(conn_pool, wrt);
|
|
//**************************** ¸üÐÂË®Àäϵͳ·Ö֧ʵʱÐÅÏ¢ *****************************//*
|
readWater_brach(master,wbrach);
|
Water_Task_SQL.replace_water_brach(conn_pool, wbrach);
|
|
//**************************** ¸üÐÂË®Àäϵͳ״̬ÐÅÏ¢ *****************************//*
|
readWater_state(master,wstate);
|
Water_Task_SQL.replace_water_state(conn_pool, wstate);
|
|
}
|
|
if(runCount %4 == 0) {
|
//*************************** ¶ÁȡˮÀäÐÅÏ¢¹ÊÕÏ ******************************//*
|
/*readElectricalAlarmData(master,eAlarm);
|
Electrical_Task_SQL.inswrtOrUpdateElectrical_alarmTable(conn_pool, listAlarm);*/
|
}
|
|
if(runCount%10 == 0) {
|
//¸üе±Ç°É豸ip
|
master.setTarget_ip(winf.water_ip);
|
}
|
if(runCount > 999900) {
|
runCount = 0;
|
}
|
runCount ++;
|
Thread.sleep(200);
|
} catch (Exception e) {
|
try {
|
Thread.sleep(1000);
|
} catch (InterruptedException e1) {
|
//e1.printStackTrace();
|
}
|
e.printStackTrace();
|
}
|
}
|
}
|
/**
|
* ¸üÐÂË®ÀäϵͳʵʱÐÅÏ¢
|
* @param master
|
* @param load_state
|
*/
|
private void readWater_rt(MyModbusMaster master, Water_rt wrt) {
|
wrt.cooling_flow = (float) master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Cooling_flow, DataType.TWO_BYTE_INT_SIGNED, master), wrt.cooling_flow); //'ÀäÈ´Ë®Á÷Á¿',
|
wrt.supply_tmp = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Supply_tmp, DataType.TWO_BYTE_INT_SIGNED, master), wrt.supply_tmp); //'¹©Ë®Î¶È',
|
wrt.Supply_pre = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Supply_pre, DataType.TWO_BYTE_INT_SIGNED,master), wrt.Supply_pre); //'¹©Ë®Ñ¹Á¦',
|
wrt.back_tem = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.back_tem, DataType.TWO_BYTE_INT_SIGNED,master), wrt.back_tem); //'»ØË®Î¶È',
|
wrt.back_pre = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.back_pre, DataType.TWO_BYTE_INT_SIGNED,master), wrt.back_pre); //'»ØË®Ñ¹Á¦',
|
wrt.Cooling_ser = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Cooling_ser,DataType.TWO_BYTE_INT_SIGNED,master), wrt.Cooling_ser); //'ÀäÈ´Ë®µçµ¼ÂÊ',
|
wrt.Buffer_tank_level = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Buffer_tank_level,DataType.TWO_BYTE_INT_SIGNED,master), wrt.Buffer_tank_level);//'»º³å¹ÞҺλ'
|
wrt.Buffer_tank_pre = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Buffer_tank_pre, DataType.TWO_BYTE_INT_SIGNED,master), wrt.Buffer_tank_pre); //'»º³å¹ÞѹÁ¦',
|
wrt.Humidity_chamber = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Humidity_chamber, DataType.TWO_BYTE_INT_SIGNED,master), wrt.Humidity_chamber);//'·§Ìüʪ¶È',
|
wrt.Tem_chamber = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Tem_chamber,DataType.TWO_BYTE_INT_SIGNED, master), wrt.Tem_chamber); //'·§ÌüζÈ',
|
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
|
*/
|
private void readWater_brach(MyModbusMaster master, Water_brach wbrach) {
|
wbrach.Branch_flow_1 = (float) master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_flow_1, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_flow_1); //'1#֧·Á÷Á¿',
|
wbrach.Branch_flow_2 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_2, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_flow_2); //'2#֧·Á÷Á¿',
|
wbrach.Branch_flow_3 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_flow_3, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_flow_3); //'3#֧·Á÷Á¿',
|
wbrach.Branch_flow_4 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_flow_4, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_flow_4); //'4#֧·Á÷Á¿',
|
wbrach.Branch_flow_5 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_5, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_flow_5); //'5#֧·Á÷Á¿',
|
wbrach.Branch_flow_6= (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_6, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_flow_6); //'6#֧·Á÷Á¿',
|
wbrach.Branch_flow_7 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_7, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_flow_7); //'7#֧·Á÷Á¿',
|
wbrach.Branch_flow_8 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_8, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_flow_8); //'8#֧·Á÷Á¿',
|
wbrach.Branch_flow_9 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_flow_9, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_flow_9); //'9#֧·Á÷Á¿',
|
|
wbrach.Branch_tmp_1 = (float) master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_tmp_1, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_tmp_1); //'1#֧·Î¶È',
|
wbrach.Branch_tmp_2 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_2, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_tmp_2); //'2#֧·Î¶È',
|
wbrach.Branch_tmp_3 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_tmp_3, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_tmp_3); //'3#֧·Î¶È',
|
wbrach.Branch_tmp_4 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_tmp_4, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_tmp_4); //'4#֧·Î¶È',
|
wbrach.Branch_tmp_5 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_5, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_tmp_5); //'5#֧·Î¶È',
|
wbrach.Branch_tmp_6= (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_6, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_tmp_6); //'6#֧·Î¶È',
|
wbrach.Branch_tmp_7 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_7, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_tmp_7); //'7#֧·Î¶È',
|
wbrach.Branch_tmp_8 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_8, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_tmp_8); //'8#֧·Î¶È',
|
wbrach.Branch_tmp_9 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_tmp_9, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_tmp_9); //'9#֧·Î¶È',
|
|
wbrach.Branch_pre_1 = (float) master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_pre_1, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_pre_1); //'1#֧·ѹÁ¦',
|
wbrach.Branch_pre_2 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_2, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_pre_2); //'2#֧·ѹÁ¦',
|
wbrach.Branch_pre_3 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_pre_3, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_pre_3); //'3#֧·ѹÁ¦',
|
wbrach.Branch_pre_4 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress. Branch_pre_4, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_pre_4); //'4#֧·ѹÁ¦',
|
wbrach.Branch_pre_5 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_5, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_pre_5);//'5#֧·ѹÁ¦',
|
wbrach.Branch_pre_6= (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_6, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_pre_6); //'6#֧·ѹÁ¦',
|
wbrach.Branch_pre_7 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_7, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_pre_7); //'7#֧·ѹÁ¦',
|
wbrach.Branch_pre_8 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_8, DataType.TWO_BYTE_INT_SIGNED, master), wbrach.Branch_pre_8); //'8#֧·ѹÁ¦',
|
wbrach.Branch_pre_9 = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Watersystem_ModbusAddress.Branch_pre_9, DataType.TWO_BYTE_INT_SIGNED,master), wbrach.Branch_pre_9); //'9#֧·ѹÁ¦',
|
|
}
|
/**
|
* ¸üÐÂË®Àäϵͳʵʱ״̬ÐÅÏ¢
|
* @param master
|
* @param load_state
|
*/
|
private void readWater_state(MyModbusMaster master, Water_state wstate) {
|
int Watersystem_All_Operation= (int) master.checkNullData(MyModbusUtils.readCoilStatus(Watersystem_ModbusAddress.Watersystem_All_Operation, master), 0);//Ë®Àäϵͳ¸÷²¿¼þÔËÐÐÇé¿ö
|
wstate.P01_main_pump=(Watersystem_All_Operation>>8&1);
|
wstate.P11_replenish_pump=(Watersystem_All_Operation>>9&1);
|
wstate.P12_pretest_pump=(Watersystem_All_Operation>>10&1);
|
wstate.P13_replenish_pump=(Watersystem_All_Operation>>11&1);
|
wstate.H01_electric_heater=(Watersystem_All_Operation>>12&1);
|
wstate.H02_electric_heater=(Watersystem_All_Operation>>13&1);
|
wstate.Solenoid_openflag=(Watersystem_All_Operation>>14&1);
|
wstate.Solenoid_shutflag=(Watersystem_All_Operation>>15&1);
|
wstate.valve_start=(Watersystem_All_Operation>>0&1);
|
wstate.Exhaust_start=(Watersystem_All_Operation>>8&1);
|
wstate.remote_start=(Watersystem_All_Operation>>8&5);
|
wstate.remote_stop=(Watersystem_All_Operation>>8&6);
|
wstate.Operation_ooled_devices=(Watersystem_All_Operation>>8&7);
|
|
int Watersystem_All_State= (int)master.checkNullData(MyModbusUtils.readCoilStatus(Watersystem_ModbusAddress.Watersystem_All_State, master), 0);//¹ÊÕϸ´Î»ÐźÅ
|
wstate.Auto_control_state=(Watersystem_All_State>>8&1);
|
wstate.Manual_control_state=(Watersystem_All_State>>9&1);
|
wstate.remote_control_state=(Watersystem_All_State>>10&1);
|
wstate.Water_system_function=(Watersystem_All_State>>11&1);
|
|
}
|
public static void main(String[] args) {
|
int b=13;
|
String a=Integer.toBinaryString(b>>0&1);
|
System.out.println(a);
|
}
|
}
|