whyclxw
2020-08-20 0a6d2dd97665ee556b48a185b5a9291dcf2a5c77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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);
    }
}