whyclj
2020-09-24 49bd565d760ea2c8726258e37ddaadf03e2c1980
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
package com.motor.conn;
 
import java.util.Date;
 
import com.base.Com;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.motor.data.Load_motor_state;
import com.motor.data.Motor_control;
import com.motor.data.Motor_inf;
import com.motor.data.Subject_motor_state;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.code.DataType;
import com.sql.MysqlConnPool;
 
public class Motor_SocketClient_Thread implements Runnable{
    public MysqlConnPool conn_pool;
    public Motor_inf motor;
    
    public Motor_control control;
    public Load_motor_state load_state;
    public Subject_motor_state subject_state;
    
    public MyModbusMaster master;
    
    public static final int MAX_READALARM_COUNT = 20;        //Ò»´Î¶ÁÈ¡¸æ¾¯½ÚµãµÄ×î´óÊýÁ¿
    public int read_alarm_index = 0;                        //¶ÁÈ¡¸æ¾¯Ë÷Òý
    
    public Motor_SocketClient_Thread(Motor_inf motor,MysqlConnPool conn_pool) {
        this.conn_pool = conn_pool;
        this.motor = motor;
        
        load_state = new Load_motor_state(motor.motor_id);
        subject_state = new Subject_motor_state(motor.motor_id);
        control = new Motor_control(motor.motor_id);
        
        motor.load_state = load_state;
        motor.subject_state = subject_state;
        
        master = new MyModbusMaster(motor.motor_ip, MyModbusMaster.SLAVEID_DEFAULT);
    }
        
    @Override
    public void run() {    
        int runCount = 0;
        while(true) {
            try {
                /*Motor_Task_SQL.queryMotor_ControlTable(conn_pool, control);
                //System.out.println(control.isControl_en()+"################33");
                
                if(control.isControl_en()) {
                    *//************************** ¿ØÖÆÊä³ö *******************************//*
                    writeControlSignal(master,control);
                    Motor_Task_SQL.updateMotor_Control(conn_pool, control);
                }*/
                
                Date t1 = new Date();
                Date t2 = new Date();
                if(runCount %2 == 0) {
                    /*************************** ¸üмÓÔØµç»úÊý¾Ý ******************************/
                    //readLoadMotorSingnal(master,load_state);
                    readMutilLoadMotorSingnal(master,load_state);
                    Motor_Task_SQL.updateLoadMotor_State(conn_pool, load_state);
                    
                    
                }
                if(runCount %3 == 0) {
                    /**************************** ¶ÁÈ¡ÊÜÊÔµç»úÊý¾Ý *****************************/
                    //readSubjectMotorSingnal(master,subject_state);
                    readMutilSubjectMotorSingnal(master,subject_state);
                    //t2 = new Date();
                    Motor_Task_SQL.updateSubjectMotor_State(conn_pool, subject_state);
                    //System.out.println((new Date().getTime()-t2.getTime()));
                }
                //System.out.println((new Date().getTime()-t1.getTime())+"==="+(t2.getTime()-t1.getTime()));
                if(runCount %5 == 0) {
                    /*************************** ¶ÁÈ¡¹ÊÕÏ״̬ÐÅÏ¢ ******************************/
                    //Date start = new Date();                    
                    //readMotorAlarmData(master,motor);
                    readMutilMotorAlarmData(master,motor);
                    //Date end = new Date();
                    //System.err.println((end.getTime()-start.getTime()));
                }
                //System.err.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                
                Motor_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, motor.motor_id, master);
                if(runCount%10 == 0) {
                    //¸üе±Ç°É豸ip
                    master.setTarget_ip(motor.motor_ip);
                }
                if(runCount > 999900) {
                    runCount = 0;
                }
                runCount ++;                
                Thread.sleep(50);                
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    //e1.printStackTrace();
                }
                e.printStackTrace();
            }
        }        
    }
 
    /**
     *     ¶ÁÈ¡É豸±¨¾¯ÐÅÏ¢
     * @param master2
     * @param motor2
     */
    private void readMotorAlarmData(MyModbusMaster master2, Motor_inf motor2) {
        for(int i=read_alarm_index ; i< motor2.alarms.size() && i< (read_alarm_index+MAX_READALARM_COUNT);i++) {
            //Date start = new Date();
            motor2.alarms.get(i).checkAlarm((int)master2.checkNullData(MyModbusUtils.readCoilStatus(12000+i*4, master2), motor2.alarms.get(i).alarm_state));
            //Date end = new Date();
            //System.err.println((end.getTime()-start.getTime())+"===="+i);
        }
        read_alarm_index += MAX_READALARM_COUNT;
        if(read_alarm_index >= motor2.alarms.size()) {
            read_alarm_index = 0;
        }
    }
    
    /**
     *     ÅúÁ¿É豸±¨¾¯ÐÅÏ¢
     * @param master2
     * @param motor2
     */
    private void readMutilMotorAlarmData(MyModbusMaster master2, Motor_inf motor2) {
        BatchRead<Integer> batch = motor2.createBatchRead(master2);        
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master2);
        motor2.putBatchResult(res);
        
    }
 
    /**
     * ¶ÁÈ¡ÊÜÊÔµç»úÐÅÏ¢
     * @param master2
     * @param subject_state2
     */
    private void readSubjectMotorSingnal(MyModbusMaster master2, Subject_motor_state subject_state2) {
        subject_state2.sensor_torque = (float) master2.checkNullData(MyModbusUtils.readHoldingRegister(330, DataType.TWO_BYTE_INT_SIGNED, master2), subject_state2.sensor_torque);;             //´«¸ÐÆ÷ת¾Ø        330
        subject_state2.sensor_power = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(514, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.sensor_power);                //´«¸ÐÆ÷¹¦ÂÊ        514
        subject_state2.fault_confirm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(801, master2), subject_state2.fault_confirm);                                                    //¹ÊÕÏÈ·ÈÏ            801
        subject_state2.gear_box_power = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(853, DataType.TWO_BYTE_INT_SIGNED, master2), subject_state2.gear_box_power);                //³ÝÂÖÏäÖṦÂÊ        853
        subject_state2.advance_power = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(854, DataType.TWO_BYTE_INT_SIGNED, master2), subject_state2.advance_power);                //ÍÆ½øÖṦÂÊ        854
        subject_state2.gear_box_tmp1 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1010, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp1);            //³ÝÂÖÏäÖá³ÐζÈ1    1010
        subject_state2.gear_box_tmp2 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1011, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp2);            //³ÝÂÖÏäÖá³ÐζÈ2    1011
        subject_state2.gear_box_tmp3 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1012, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp3);            //³ÝÂÖÏäÖá³ÐζÈ3    1012
        subject_state2.gear_box_tmp4 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1013, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp4);            //³ÝÂÖÏäÖá³ÐζÈ4    1013
        subject_state2.gear_box_tmp5 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1014, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp5);            //³ÝÂÖÏäÖá³ÐζÈ5    1014
        subject_state2.gear_box_tmp6 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1015, DataType.TWO_BYTE_INT_UNSIGNED, master2), subject_state2.gear_box_tmp6);            //³ÝÂÖÏäÖá³ÐζÈ6    1015
        subject_state2.gas_station_start = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(4480, master2), subject_state2.gas_station_start);                                            //ÓÍÕ¾Æô¶¯            4480
        subject_state2.gas_station_stop = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(4481, master2), subject_state2.gas_station_stop);                                                //ÓÍվͣ»ú            4481
        subject_state2.pow_control = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(5683, master2), subject_state2.pow_control);                                                        //¹¦ÂÊ¿ØÖÆ            5683
        subject_state2.torque_control = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(5684, master2), subject_state2.torque_control);                                                    //ת¾Ø¿ØÖÆ            5684
        subject_state2.transformer_hightmp_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16000, master2), subject_state2.transformer_hightmp_alarm);                            //±äѹÆ÷¸ßα¨¾¯    16000
        subject_state2.transformer_hightmp_fault = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16001, master2), subject_state2.transformer_hightmp_fault);                            //±äѹÆ÷¸ßιÊÕÏ    16001
        subject_state2.transformer_lackphase_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16007, master2), subject_state2.transformer_lackphase_alarm);                        //±äѹÆ÷ȱÏ౨¾¯    16007
        subject_state2.lubrication_pump1_start = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16008, master2), subject_state2.lubrication_pump1_start);                                //È󻬱Ã1ÔËÐР       16008
        subject_state2.lubrication_pump2_start = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16009, master2), subject_state2.lubrication_pump2_start);                                //È󻬱Ã2ÔËÐР       16009
        subject_state2.lubrication_remote_start_allow = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16011, master2), subject_state2.lubrication_remote_start_allow);                //Èó»¬ÔÊÐíÔ¶³ÌÆô¶¯    16011    
        subject_state2.remote_control = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17056, master2), subject_state2.remote_control);                                                //Ò£¿Ø/¾ÍµØ        17056
        subject_state2.inverter_ready = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17065, master2), subject_state2.inverter_ready);                                                //±äƵÆ÷¾ÍÐ÷        17065
        subject_state2.inverter_running = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17066, master2), subject_state2.inverter_running);                                            //±äƵÆ÷ÔËÐР       17066
        subject_state2.inverter_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17067, master2), subject_state2.inverter_alarm);                                                //±äƵÆ÷±¨¾¯        17067
        subject_state2.inverter_fault = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17068, master2), subject_state2.inverter_fault);                                                //±äƵÆ÷¹ÊÕÏ        17068
        subject_state2.lubrication_host_running_allow = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17069, master2), subject_state2.lubrication_host_running_allow);                //Èó»¬ÔÊÐíÖ÷»úÔËÐР   17069
        subject_state2.main_switch_state = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17084, master2), subject_state2.main_switch_state);                                            //Ö÷¿ª¹Ø×´Ì¬        17084
        subject_state2.subject_motor_running = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17091, master2), subject_state2.subject_motor_running);                                    //ÊÜÊÔµç»úÔËÐР       17091
        subject_state2.subject_motor_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17136, master2), subject_state2.subject_motor_alarm);                                        //ÊÜÊÔµç»ú±¨¾¯        17136
        subject_state2.subject_motor_fault = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17346, master2), subject_state2.subject_motor_fault);                                        //ÊÜÊÔµç»ú¹ÊÕÏ        17346
        subject_state2.subject_motor_stop = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17347, master2), subject_state2.subject_motor_stop);                                        //ÊÜÊÔµç»ú½ôÍ£        17347
        subject_state2.lubrication_falut = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17348, master2), subject_state2.lubrication_falut);                                            //È󻬹ÊÕÏ            17348
        subject_state2.lubrication_alarm = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17349, master2), subject_state2.lubrication_alarm);                                            //È󻬱¨¾¯            17349
        subject_state2.record_time = new Date();
    }
    
    /**
     * ÅúÁ¿¶ÁÈ¡ÊÜÊÔµç»úÐÅÏ¢
     * @param master2
     * @param subject_state2
     */
    private void readMutilSubjectMotorSingnal(MyModbusMaster master2, Subject_motor_state subject_state2) {
        BatchRead<Integer> batch = subject_state2.createBatchRead(master2);        
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master2);
        subject_state2.putBatchResult(res);
    }
 
    /**
     *     ¶ÁÈ¡¼ÓÔØµç»úÐÅÏ¢
     * @param master2
     * @param load_state2
     */
    private void readLoadMotorSingnal(MyModbusMaster master2, Load_motor_state load_state2) {
        load_state2.load_power = (float) master2.checkNullData(MyModbusUtils.readHoldingRegister(58, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_power);                                        //¼ÓÔØ¹¦Âʸø¶¨                58    
        load_state2.load_torque = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(364, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_torque);                                        //¼ÓÔØ×ª¾Ø¸ø¶¨                364            
        load_state2.load_motor_speed_limit = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(366, DataType.TWO_BYTE_INT_UNSIGNED_SWAPPED, master2), load_state2.load_motor_speed_limit);        //¼ÓÔØµç»úתËÙÏÞÖÆ            366
        load_state2.load_motor_torque_limit = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(367, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_torque_limit);                //¼ÓÔØµç»úת¾ØÏÞÖÆ            367
        load_state2.load_step_length = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(505, DataType.TWO_BYTE_INT_UNSIGNED, master2), load_state2.load_step_length);                            //¼ÓÔØ²½³¤                    505    
        load_state2.load_motor_inwater_tmp = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1006, DataType.TWO_BYTE_INT_UNSIGNED, master2), load_state2.load_motor_inwater_tmp);            //¼ÓÔØµç»úË®Àä½øË®·çΠ       1006
        load_state2.load_motor_outwater_tmp = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1008, DataType.TWO_BYTE_INT_UNSIGNED, master2), load_state2.load_motor_outwater_tmp);            //¼ÓÔØµç»úË®Àä³öË®·çΠ       1008
        load_state2.load_motor_curr = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1096, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_curr);                            //¼ÓÔØµç»úµçÁ÷                1096
        load_state2.load_motor_power = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1099, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_power);                            //¼ÓÔØµç»ú¹¦ÂÊ                1099
        load_state2.load_motor_speed = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1101, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_speed);                            //¼ÓÔØµç»úתËÙ                1101
        load_state2.load_motor_vol = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1103, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_vol);                                //¼ÓÔØµç»úµçѹ                    1103
        load_state2.load_motor_wind_tmp1 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1119, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_wind_tmp1);                    //¼ÓÔØµç»úÈÆ×éζÈ1            1119
        load_state2.load_motor_wind_tmp2 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1120, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_wind_tmp2);                    //¼ÓÔØµç»úÈÆ×éζÈ2            1120
        load_state2.load_motor_wind_tmp3 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1121, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_wind_tmp3);                    //¼ÓÔØµç»úÈÆ×éζÈ3            1121
        load_state2.load_motor_bear_tmp1 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1122, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_bear_tmp1);                    //¼ÓÔØµç»úÖá³ÐζÈ1            1122
        load_state2.load_motor_bear_tmp2 = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1123, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_bear_tmp2);                    //¼ÓÔØµç»úÖá³ÐζÈ2            1123
        load_state2.load_motor_out_tmp = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1250, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_out_tmp);                        //¼ÓÔØµç»ú³ö¿ÚζȠ           1250
        load_state2.load_motor_into_tmp = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1124, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_into_tmp);                    //¼ÓÔØµç»ú½ø¿ÚζȠ           1124
        load_state2.load_motor_torque = (float)master2.checkNullData(MyModbusUtils.readHoldingRegister(1251, DataType.TWO_BYTE_INT_SIGNED, master2), load_state2.load_motor_torque);                        //¼ÓÔØµç»úת¾Ø                1251
        load_state2.load_motor_start = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(5680, master2), load_state2.load_motor_start);                                                                //¼ÓÔØµç»úÆô¶¯                5680
        load_state2.load_motor_downtime = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(5681, master2), load_state2.load_motor_downtime);                                                        //¼ÓÔØµç»úÍ£»ú                5681
        load_state2.load_add = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(8000, master2),load_state2.load_add);                                                                                //¼ÓÔØ                        8000
        load_state2.load_reduct = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(8001, master2), load_state2.load_reduct);                                                                        //¼õÔØ                        8001
        load_state2.load_manual = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(8040, master2), load_state2.load_manual);                                                                        //ÊÖ¶¯¼ÓÔØ                    8040
        load_state2.load_motor_stop = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(16005, master2), load_state2.load_motor_stop);                                                                //¼ÓÔØµç»ú½ôÍ£                16005
        load_state2.load_motor_fan_state = (int)master2.checkNullData(MyModbusUtils.readCoilStatus(17082, master2), load_state2.load_motor_fan_state);                                                    //¼ÓÔØµç»ú·ç»ú״̬    17082                                                                                                                            
        load_state2.record_time = new Date();    
    }
    
    /**
     *     ÅúÁ¿¶ÁÈ¡¼ÓÔØµç»úÐÅÏ¢
     * @param master2
     * @param load_state2
     */
    private void readMutilLoadMotorSingnal(MyModbusMaster master2, Load_motor_state load_state2) {
        //BatchRead<Integer> batch = load_state2.createBatchRead(master2);        
        //BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master2);
        //load_state2.putBatchResult(res);
        
        BatchRead<Integer> batch = load_state2.createHeadBatchRead(master2);        
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master2);
        load_state2.putHeadBatchResult(res);
        
        batch = load_state2.createBodyBatchRead(master2);        
        res = MyModbusUtils.readMutilRegisters(batch, master2);
        load_state2.putBodyBatchResult(res);
            
    }
    
    /**
     *     Ð´Èë¿ØÖÆÁ¿ÐźÅ
     * @param master2
     * @param control2
     */
    private void writeControlSignal(MyModbusMaster master2, Motor_control control2) {
        System.out.println(control2);
        if(control2.load_power >0) {
            MyModbusUtils.writeHoldingRegister(58, control.load_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.sensor_torque >0) {
            MyModbusUtils.writeHoldingRegister(330, control.sensor_torque, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.load_torque >0) {
            MyModbusUtils.writeHoldingRegister(364, control.load_torque, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.load_motor_speed_limit >0) {
            MyModbusUtils.writeHoldingRegister(366, control.load_motor_speed_limit, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.load_motor_torque_limit >0) {
            MyModbusUtils.writeHoldingRegister(367, control.load_motor_torque_limit, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.load_step_length >0) {
            MyModbusUtils.writeHoldingRegister(505, control.load_step_length, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.sensor_power >0) {
            MyModbusUtils.writeHoldingRegister(514, control.sensor_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.gear_box_power >0) {
            MyModbusUtils.writeHoldingRegister(853, control.gear_box_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        if(control2.advance_power >0) {
            MyModbusUtils.writeHoldingRegister(854, control.advance_power, DataType.TWO_BYTE_INT_UNSIGNED, master2);
        }
        control2.clear();
    }
    
}