package com.dev.base.data;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import com.data.PowerArk_Task_SQL;
|
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;
|
|
public class Dynamicload_SocketClient_Thread implements Runnable {
|
public MysqlConnPool conn_pool;
|
public Dynamicload_inf dinf;
|
|
public Dynamicload_button dbutton;
|
public Dynamicload_control dcontrol;
|
public Dynamicload_state dstate;
|
|
public MyModbusMaster master;
|
|
public Dynamicload_SocketClient_Thread(Dynamicload_inf dinf, MysqlConnPool conn_pool) {
|
this.conn_pool = conn_pool;
|
this.dinf = dinf;
|
|
dbutton = new Dynamicload_button(dinf.getDev_id());
|
dcontrol = new Dynamicload_control(dinf.getDev_id(),dinf.getFZ_button_num());
|
dstate = new Dynamicload_state(dinf.getDev_id(),dinf.getFZ_button_num());
|
master = new MyModbusMaster(dinf.getDev_ip(), MyModbusMaster.SLAVEID_DEFAULT);
|
//System.out.println("master: "+master);
|
}
|
|
@Override
|
public void run() {
|
// TODO Auto-generated method stub
|
int runCount = 0;
|
Date last = new Date();
|
while (true) {
|
try {
|
/*PowerArk_Task_SQL.queryDynamicload_Control(conn_pool, dcontrol);
|
if(dcontrol.isControl_en()) {
|
//************************** ¿ØÖÆÊä³ö *******************************//*
|
writeDynamicload_Control(master,dcontrol);
|
PowerArk_Task_SQL.update_Dynamicload_Control(conn_pool, dcontrol);
|
}*/
|
//¿ØÖÆÒ³Ãæ
|
PowerArk_Task_SQL.queryDynamicload_Control(conn_pool, dcontrol);
|
{
|
|
}
|
|
if (runCount % 2 == 0) {
|
// *************************** ¸üиºÔذ´Å¥ÐÅÏ¢******************************//*
|
|
// Date t1 = new Date();
|
//readElectrical_button(master, dbutton);
|
readMutilElectrical_button(master, dbutton);
|
PowerArk_Task_SQL.updateDynamicload_ButtonTable(conn_pool, dbutton);
|
// System.out.println("RT:"+(new Date().getTime() - t1.getTime()));
|
|
// Date t2 = new Date();
|
// **************************** ¸üиºÔØ×´Ì¬ÐÅÏ¢ *****************************//*
|
//readElectrical_state(master, dstate);
|
readMutilElectrical_state(master, dstate);
|
PowerArk_Task_SQL.updateDynamicload_StateTable(conn_pool, dstate);
|
// System.out.println("State:"+(new Date().getTime() - t2.getTime()));
|
}
|
|
//System.err.println(dinf.dev_id + "=====" + ((new Date()).getTime() - last.getTime()));
|
last = new Date();
|
PowerArk_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, dinf.dev_id, master);
|
if (runCount % 10 == 0) {
|
// ¸üе±Ç°É豸ip
|
master.setTarget_ip(dinf.dev_ip);
|
}
|
if (runCount > 999900) {
|
runCount = 0;
|
}
|
runCount++;
|
Thread.sleep(50);
|
} catch (Exception e) {
|
try {
|
Thread.sleep(1000);
|
} catch (InterruptedException e1) {
|
// e1.printStackTrace();
|
}
|
e.printStackTrace();
|
}
|
|
}
|
|
}
|
//¿ØÖÆÊä³ö
|
private void writeDynamicload_Control(MyModbusMaster master, Dynamicload_control dcontrol) {
|
if(dcontrol.FZ_b1>0) {
|
if(dcontrol.FZ_b1==1) {
|
MyModbusUtils.writeCoil(80, true, master);
|
}else {
|
MyModbusUtils.writeCoil(80, false, master);
|
}
|
}
|
if(dcontrol.FZ_b2>0) {
|
if(dcontrol.FZ_b2==1) {
|
MyModbusUtils.writeCoil(81, true, master);
|
}else {
|
MyModbusUtils.writeCoil(81, false, master);
|
}
|
}
|
if(dcontrol.FZ_b3>0) {
|
if(dcontrol.FZ_b3==1) {
|
MyModbusUtils.writeCoil(82, true, master);
|
}else {
|
MyModbusUtils.writeCoil(82, false, master);
|
}
|
}
|
if(dcontrol.FZ_b4>0) {
|
if(dcontrol.FZ_b4==1) {
|
MyModbusUtils.writeCoil(83, true, master);
|
}else {
|
MyModbusUtils.writeCoil(83, false, master);
|
}
|
}
|
if(dcontrol.FZ_b5>0) {
|
if(dcontrol.FZ_b5==1) {
|
MyModbusUtils.writeCoil(84, true, master);
|
}else {
|
MyModbusUtils.writeCoil(84, false, master);
|
}
|
}
|
if(dcontrol.FZ_b6>0) {
|
if(dcontrol.FZ_b6==1) {
|
MyModbusUtils.writeCoil(85, true, master);
|
}else {
|
MyModbusUtils.writeCoil(85, false, master);
|
}
|
}
|
if(dcontrol.FZ_b7>0) {
|
if(dcontrol.FZ_b7==1) {
|
MyModbusUtils.writeCoil(86, true, master);
|
}else {
|
MyModbusUtils.writeCoil(86, false, master);
|
}
|
}
|
if(dcontrol.FZ_b8>0) {
|
if(dcontrol.FZ_b8==1) {
|
MyModbusUtils.writeCoil(87, true, master);
|
}else {
|
MyModbusUtils.writeCoil(87, false, master);
|
}
|
}
|
if(dcontrol.FZ_b9>0) {
|
if(dcontrol.FZ_b9==1) {
|
MyModbusUtils.writeCoil(88, true, master);
|
}else {
|
MyModbusUtils.writeCoil(88, false, master);
|
}
|
}
|
if(dcontrol.FZ_b10>0) {
|
if(dcontrol.FZ_b10==1) {
|
MyModbusUtils.writeCoil(89, true, master);
|
}else {
|
MyModbusUtils.writeCoil(89, false, master);
|
}
|
}
|
if(dcontrol.FZ_b11>0) {
|
if(dcontrol.FZ_b11==1) {
|
MyModbusUtils.writeCoil(90, true, master);
|
}else {
|
MyModbusUtils.writeCoil(90, false, master);
|
}
|
}
|
if(dcontrol.start_auto>0) {
|
MyModbusUtils.writeCoil(8, true, master);
|
}
|
if(dcontrol.stop_auto>0) {
|
MyModbusUtils.writeCoil(9, true, master);
|
}
|
if(dcontrol.sudden_crease>0) {
|
MyModbusUtils.writeCoil(10, true, master);
|
}
|
if(dcontrol.all_open>0) {
|
MyModbusUtils.writeCoil(11, true, master);
|
}
|
/*if(dcontrol.FZ_autostate1>0) {
|
MyModbusUtils.writeCoil(1, true, master);
|
}
|
if(dcontrol.FZ_autostate2>0) {
|
MyModbusUtils.writeCoil(2, true, master);
|
}
|
if(dcontrol.FZ_autostate3>0) {
|
MyModbusUtils.writeCoil(3, true, master);
|
}
|
if(dcontrol.FZ_autostate4>0) {
|
MyModbusUtils.writeCoil(4, true, master);
|
}
|
if(dcontrol.FZ_autostate5>0) {
|
MyModbusUtils.writeCoil(5, true, master);
|
}*/
|
/*if(dcontrol.local_control>0) {
|
MyModbusUtils.writeCoil(40, true, master);
|
}
|
if(dcontrol.back_control>0) {
|
MyModbusUtils.writeCoil(41, true, master);
|
}
|
if(dcontrol.central_control>0) {
|
MyModbusUtils.writeCoil(42, true, master);
|
}
|
if(dcontrol.inter_volume_M200>0) {
|
MyModbusUtils.writeCoil(160, true, master);
|
}
|
if(dcontrol.fan_button>0) {
|
MyModbusUtils.writeCoil(12, true, master);
|
}*/
|
if(dcontrol.set_power>0) {
|
if(dcontrol.button_num==11) {
|
MyModbusUtils.writeHoldingRegister(4, dcontrol.set_power, DataType.TWO_BYTE_INT_UNSIGNED, master);
|
}else {
|
MyModbusUtils.writeHoldingRegister(8, dcontrol.set_power, DataType.TWO_BYTE_INT_UNSIGNED, master);
|
}
|
}
|
if(dcontrol.interval_time>0) {
|
if(dcontrol.button_num==11) {
|
MyModbusUtils.writeHoldingRegister(6, dcontrol.interval_time, DataType.TWO_BYTE_INT_UNSIGNED, master);
|
}else {
|
MyModbusUtils.writeHoldingRegister(16, dcontrol.interval_time, DataType.TWO_BYTE_INT_UNSIGNED, master);
|
}
|
}
|
dcontrol.clear();
|
}
|
|
/**
|
* ¶àµã¶ÁÈ¡¸ºÔذ´Å¥×´Ì¬
|
* @param master
|
* @param dbutton
|
*/
|
public void readMutilElectrical_button(MyModbusMaster master, Dynamicload_button dbutton) {
|
BatchRead<Integer> batch = dbutton.createBatchRead(master);
|
//System.out.println("ip"+dinf.getDev_ip()+" dbutton: "+batch.toString());
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
//System.out.println("ip"+dinf.getDev_ip()+" "+res.toString());
|
dbutton.putBatchResult(res);
|
}
|
/**
|
* ¶ÁÈ¡¸ºÔذ´Å¥×´Ì¬
|
* @param master
|
* @param dbutton
|
*/
|
private void readElectrical_button(MyModbusMaster master,Dynamicload_button dbutton) {
|
dbutton.FZ_b1 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(80, master), dbutton.FZ_b1);
|
dbutton.FZ_b2 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(81, master), dbutton.FZ_b2);
|
dbutton.FZ_b3 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(82, master), dbutton.FZ_b3);
|
dbutton.FZ_b4 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(83, master), dbutton.FZ_b4);
|
dbutton.FZ_b5 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(84, master), dbutton.FZ_b5);
|
dbutton.FZ_b6 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(85, master), dbutton.FZ_b6);
|
dbutton.FZ_b7 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(86, master), dbutton.FZ_b7);
|
dbutton.FZ_b8 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(87, master), dbutton.FZ_b8);
|
dbutton.FZ_b9 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(88, master), dbutton.FZ_b9);
|
dbutton.FZ_b10 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(89, master), dbutton.FZ_b10);
|
dbutton.FZ_b11 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(90, master), dbutton.FZ_b11);
|
|
dbutton.FZ_fw1 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4020, master), dbutton.FZ_fw1);
|
dbutton.FZ_fw2 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4021, master), dbutton.FZ_fw2);
|
dbutton.FZ_fw3 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4022, master), dbutton.FZ_fw3);
|
dbutton.FZ_fw4 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4023, master), dbutton.FZ_fw4);
|
dbutton.FZ_fw5 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4024, master), dbutton.FZ_fw5);
|
dbutton.FZ_fw6 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4025, master), dbutton.FZ_fw6);
|
dbutton.FZ_fw7 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4026, master), dbutton.FZ_fw7);
|
dbutton.FZ_fw8 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4027, master), dbutton.FZ_fw8);
|
dbutton.FZ_fw9 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4028, master), dbutton.FZ_fw9);
|
dbutton.FZ_fw10 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4029, master), dbutton.FZ_fw10);
|
dbutton.FZ_fw11 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4030, master), dbutton.FZ_fw11);
|
|
dbutton.FZ_ex1 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8000, master), dbutton.FZ_ex1);
|
dbutton.FZ_ex2 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8001, master), dbutton.FZ_ex2);
|
dbutton.FZ_ex3 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8002, master), dbutton.FZ_ex3);
|
dbutton.FZ_ex4 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8003, master), dbutton.FZ_ex4);
|
dbutton.FZ_ex5 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8004, master), dbutton.FZ_ex5);
|
dbutton.FZ_ex6 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8005, master), dbutton.FZ_ex6);
|
dbutton.FZ_ex7 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8006, master), dbutton.FZ_ex7);
|
dbutton.FZ_ex8 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8007, master), dbutton.FZ_ex8);
|
dbutton.FZ_ex9 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8008, master), dbutton.FZ_ex9);
|
dbutton.FZ_ex10 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8009, master), dbutton.FZ_ex10);
|
dbutton.FZ_ex11 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8010, master), dbutton.FZ_ex11);
|
|
|
}
|
/**
|
* ¸üиºÔØ×´Ì¬ÐÅÏ¢
|
* @param master
|
* @param dstate
|
*/
|
public void readMutilElectrical_state(MyModbusMaster master, Dynamicload_state dstate) {
|
BatchRead<Integer> batch = dstate.createBatchRead(master,dstate.fz_button_num);
|
//System.out.println("id"+dinf.getDev_id()+" button_num"+dstate.fz_button_num);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
dstate.putBatchResult(res,dstate.fz_button_num);
|
}
|
|
/**
|
* ¸üиºÔØ×´Ì¬ÐÅÏ¢
|
* @param master
|
* @param dstate
|
*/
|
public void readElectrical_state(MyModbusMaster master, Dynamicload_state dstate) {
|
dstate.start_auto = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8, master),dstate.start_auto);
|
dstate.stop_auto = (int) master.checkNullData(MyModbusUtils.readCoilStatus(9, master),dstate.stop_auto);
|
dstate.sudden_crease = (int) master.checkNullData(MyModbusUtils.readCoilStatus(10, master),dstate.sudden_crease);
|
dstate.all_open = (int) master.checkNullData(MyModbusUtils.readCoilStatus(11, master),dstate.all_open);
|
if(dstate.fz_button_num==11) {
|
dstate.actual_set_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(1, DataType.TWO_BYTE_INT_SIGNED, master),dstate.actual_set_power);
|
dstate.output_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(2, DataType.TWO_BYTE_INT_SIGNED, master), dstate.output_power);
|
dstate.set_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(4, DataType.TWO_BYTE_INT_SIGNED, master),dstate.set_power );
|
dstate.interval_time = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(6, DataType.TWO_BYTE_INT_SIGNED, master),dstate.interval_time);
|
dstate.actual_curr = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(7, DataType.TWO_BYTE_INT_SIGNED, master), dstate.actual_curr);
|
dstate.actual_mov = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(8, DataType.TWO_BYTE_INT_SIGNED, master), dstate.actual_mov );
|
|
}else {
|
dstate.actual_set_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(2, DataType.TWO_BYTE_INT_SIGNED, master),dstate.actual_set_power);
|
dstate.output_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(4, DataType.TWO_BYTE_INT_SIGNED, master), dstate.output_power);
|
dstate.set_power = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(8, DataType.TWO_BYTE_INT_SIGNED, master),dstate.set_power );
|
dstate.interval_time = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(16, DataType.TWO_BYTE_INT_SIGNED, master),dstate.interval_time);
|
dstate.actual_curr = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(17, DataType.TWO_BYTE_INT_SIGNED, master), dstate.actual_curr);
|
dstate.actual_mov = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(18, DataType.TWO_BYTE_INT_SIGNED, master), dstate.actual_mov );
|
}
|
dstate.allow_close = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8011, master),dstate.allow_close);
|
dstate.FZ_autostate1 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(1, master),dstate.FZ_autostate1);
|
dstate.FZ_autostate2 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(2, master),dstate.FZ_autostate2);
|
dstate.FZ_autostate3 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(3, master),dstate.FZ_autostate3);
|
dstate.FZ_autostate4 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4, master),dstate.FZ_autostate4);
|
dstate.FZ_autostate5 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(5, master),dstate.FZ_autostate5);
|
|
dstate.react_overtem = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4013, master),dstate.react_overtem);
|
dstate.water_overtem = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4014, master),dstate.water_overtem);
|
dstate.water_level_low = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4015, master),dstate.water_level_low);
|
dstate.water_pressure_high = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4016, master),dstate.water_pressure_high);
|
dstate.local_control = (int) master.checkNullData(MyModbusUtils.readCoilStatus(40, master),dstate.local_control);
|
dstate.back_control = (int) master.checkNullData(MyModbusUtils.readCoilStatus(41, master),dstate.back_control);
|
dstate.central_control = (int) master.checkNullData(MyModbusUtils.readCoilStatus(42, master),dstate.central_control);
|
dstate.switch_state = (int) master.checkNullData(MyModbusUtils.readCoilStatus(4018, master),dstate.switch_state);
|
dstate.inter_volume_M200 = (int) master.checkNullData(MyModbusUtils.readCoilStatus(160, master),dstate.inter_volume_M200);
|
dstate.fan_button = (int) master.checkNullData(MyModbusUtils.readCoilStatus(12, master),dstate.fan_button);
|
dstate.fan_output = (int) master.checkNullData(MyModbusUtils.readCoilStatus(8013, master),dstate.fan_output);
|
}
|
}
|