whyclxw
2020-08-13 8f98a6c2fae798bff09608682b8d60bac01acb74
4MW第一次完成提交
5个文件已添加
7个文件已修改
2577 ■■■■ 已修改文件
ElectricalSystem_MonitorServer_4KW/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_4KW_ModbusAddress.java 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_4Kw_ServerSocket_Thread.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_All_ServerSocket_Thread.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Control_Single.java 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Power.java 191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Switch.java 269 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_inf.java 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_4KW_SocketClient_Thread.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_ALL_SocketClient_Thread.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_Task_SQL.java 724 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/src/main/main_ElectricalSystem_MonitorServer_4KW.java 214 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_4KW/config.xml
@@ -2,7 +2,7 @@
<root>
  <mysql_ramdb_recreate_en>false</mysql_ramdb_recreate_en>
  <mysql_server_ip>127.0.0.1</mysql_server_ip>
  <mysql_server_ip>118.89.139.230</mysql_server_ip>
  <!--SOURCE_BATTDATA_TYPE_FBSDEV = 0-->
  <!--SOURCE_BATTDATA_TYPE_SQLSERVER = 1-->
  <!--SOURCE_BATTDATA_TYPE_C_INTERFACE = 2-->
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_4KW_ModbusAddress.java
New file
@@ -0,0 +1,345 @@
package com.electrical.FourKW;
public class Electric_4KW_ModbusAddress {
    //ABCD套获取地址
    public static int getAddress(int electric_id,String addressName) {
        int address=0;
        if(addressName.equals("upsetcurr")) {//上位机设定电流
            switch (electric_id) {
            case 4001:address=25;break;
            case 4002:address=45;break;
            case 4003:address=65;break;
            case 4004:address=85;break;
            default:break;
            }
        }
        if(addressName.equals("upsetvol")) {//上位机设定电压
            switch (electric_id) {
            case 4001:address=26;break;
            case 4002:address=46;break;
            case 4003:address=66;break;
            case 4004:address=86;break;
            default:break;
            }
        }
        if(addressName.equals("convolcontrol")) {//恒压控制
            switch (electric_id) {
            case 4001:address=432;break;
            case 4002:address=752;break;
            case 4003:address=1072;break;
            case 4004:address=1392;break;
            default:break;
            }
        }
        if(addressName.equals("concurrcontrol")) {//恒流控制
            switch (electric_id) {
            case 4001:address=433;break;
            case 4002:address=753;break;
            case 4003:address=1073;break;
            case 4004:address=1393;break;
            default:break;
            }
        }
        if(addressName.equals("othermodes")) {//其他模式运行
            switch (electric_id) {
            case 4001:address=434;break;
            case 4002:address=754;break;
            case 4003:address=1074;break;
            case 4004:address=1394;break;
            default:break;
            }
        }
        if(addressName.equals("parallelmodes")) {//并联稳压运行
            switch (electric_id) {
            case 4001:address=435;break;
            case 4002:address=755;break;
            case 4003:address=1075;break;
            case 4004:address=1395;break;
            default:break;
            }
        }
        if(addressName.equals("startposition")) {//启动位
            switch (electric_id) {
            case 4001:address=436;break;
            case 4002:address=756;break;
            case 4003:address=1076;break;
            case 4004:address=1396;break;
            default:break;
            }
        }
        if(addressName.equals("stopposition")) {//ֹͣλ
            switch (electric_id) {
            case 4001:address=437;break;
            case 4002:address=757;break;
            case 4003:address=1077;break;
            case 4004:address=1397;break;
            default:break;
            }
        }
        if(addressName.equals("resetposition")) {//复位
            switch (electric_id) {
            case 4001:address=438;break;
            case 4002:address=758;break;
            case 4003:address=1078;break;
            case 4004:address=1398;break;
            default:break;
            }
        }
        if(addressName.equals("fanstart")) {//风机启动
            switch (electric_id) {
            case 4001:address=440;break;
            case 4002:address=760;break;
            case 4003:address=1080;break;
            case 4004:address=1400;break;
            default:break;
            }
        }
        if(addressName.equals("fanstop")) {//风机停止
            switch (electric_id) {
            case 4001:address=441;break;
            case 4002:address=761;break;
            case 4003:address=1081;break;
            case 4004:address=1401;break;
            default:break;
            }
        }
        if(addressName.equals("dcvol")) {//直流电压
            switch (electric_id) {
            case 4001:address=35;break;
            case 4002:address=55;break;
            case 4003:address=75;break;
            case 4004:address=95;break;
            default:break;
            }
        }if(addressName.equals("dccurr")) {//直流电流
            switch (electric_id) {
            case 4001:address=36;break;
            case 4002:address=56;break;
            case 4003:address=76;break;
            case 4004:address=96;break;
            default:break;
            }
        }
        if(addressName.equals("controlangle")) {//控制角
            switch (electric_id) {
            case 4001:address=37;break;
            case 4002:address=57;break;
            case 4003:address=77;break;
            case 4004:address=97;break;
            default:break;
            }
        }
        if(addressName.equals("loopflag")) {//开闭环标志位【0开环;1闭环】
            switch (electric_id) {
            case 4001:address=634;break;
            case 4002:address=954;break;
            case 4003:address=1274;break;
            case 4004:address=1594;break;
            default:break;
            }
        }
        if(addressName.equals("remoteflag")) {//就地远程标志位【0远程;1就地】
            switch (electric_id) {
            case 4001:address=635;break;
            case 4002:address=955;break;
            case 4003:address=1275;break;
            case 4004:address=1595;break;
            default:break;
            }
        }
        if(addressName.equals("orderflag")) {//正序逆序标志位【0正序;1逆序】
            switch (electric_id) {
            case 4001:address=636;break;
            case 4002:address=956;break;
            case 4003:address=1276;break;
            case 4004:address=1596;break;
            default:break;
            }
        }
        if(addressName.equals("consvolcurrflag")) {//恒压横流标志位【0恒压;1恒流】
            switch (electric_id) {
            case 4001:address=639;break;
            case 4002:address=959;break;
            case 4003:address=1279;break;
            case 4004:address=1599;break;
            default:break;
            }
        }
        if(addressName.equals("powerstartflag")) {//电源启动标志位【0停止;1启动】
            switch (electric_id) {
            case 4001:address=624;break;
            case 4002:address=944;break;
            case 4003:address=1264;break;
            case 4004:address=1584;break;
            default:break;
            }
        }
        if(addressName.equals("workmodelflag")) {//工作模式标志位【0其他模式;1并联稳压】
            switch (electric_id) {
            case 4001:address=625;break;
            case 4002:address=945;break;
            case 4003:address=1265;break;
            case 4004:address=1585;break;
            default:break;
            }
        }
        if(addressName.equals("case_trip_output")) {//机箱跳闸输出
            switch (electric_id) {
            case 4001:address=640;break;
            case 4002:address=960;break;
            case 4003:address=1280;break;
            case 4004:address=1600;break;
            default:break;
            }
        }
        if(addressName.equals("fault_reset_signal")) {//故障复位信号
            switch (electric_id) {
            case 4001:address=641;break;
            case 4002:address=961;break;
            case 4003:address=1281;break;
            case 4004:address=1601;break;
            default:break;
            }
        }
        if(addressName.equals("high_vol_switch_status")) {//高压开关状态
            switch (electric_id) {
            case 4001:address=642;break;
            case 4002:address=962;break;
            case 4003:address=1282;break;
            case 4004:address=1602;break;
            default:break;
            }
        }
        if(addressName.equals("stop_button")) {//急停按钮
            switch (electric_id) {
            case 4001:address=643;break;
            case 4002:address=963;break;
            case 4003:address=1283;break;
            case 4004:address=1603;break;
            default:break;
            }
        }
        if(addressName.equals("main_cabinet_fan_status")) {//主柜风机状态
            switch (electric_id) {
            case 4001:address=644;break;
            case 4002:address=964;break;
            case 4003:address=1284;break;
            case 4004:address=1604;break;
            default:break;
            }
        }
        if(addressName.equals("trans_cabinet_door_lock")) {//变压器柜门连锁
            switch (electric_id) {
            case 4001:address=645;break;
            case 4002:address=965;break;
            case 4003:address=1285;break;
            case 4004:address=1605;break;
            default:break;
            }
        }
        if(addressName.equals("trans_cabinet_overtem_alarm")) {//变压器超温报警
            switch (electric_id) {
            case 4001:address=646;break;
            case 4002:address=966;break;
            case 4003:address=1286;break;
            case 4004:address=1606;break;
            default:break;
            }
        }
        if(addressName.equals("trans_cabinet_overtem_trip")) {//变压器超温跳闸
            switch (electric_id) {
            case 4001:address=647;break;
            case 4002:address=967;break;
            case 4003:address=1287;break;
            case 4004:address=1607;break;
            default:break;
            }
        }
        if(addressName.equals("qs1_state")) {//QS1״̬
            switch (electric_id) {
            case 4001:address=648;break;
            case 4002:address=968;break;
            case 4003:address=1288;break;
            case 4004:address=1608;break;
            default:break;
            }
        }
        if(addressName.equals("qs2_state")) {//QS2״̬
            switch (electric_id) {
            case 4001:address=649;break;
            case 4002:address=969;break;
            case 4003:address=1289;break;
            case 4004:address=1609;break;
            default:break;
            }
        }
        if(addressName.equals("switch_cabinet_door_status")) {//转换开关柜门状态
            switch (electric_id) {
            case 4001:address=652;break;
            case 4002:address=972;break;
            case 4003:address=1292;break;
            case 4004:address=1612;break;
            default:break;
            }
        }
        if(addressName.equals("alldcvol")) {//总直流电压
            switch (electric_id) {
            case 4001:address=41;break;
            case 4003:address=81;break;
            default:break;
            }
        }
        if(addressName.equals("alldccurr")) {//总直流电流
            switch (electric_id) {
            case 4001:address=42;break;
            case 4003:address=82;break;
            default:break;
            }
        }
        return address;
    }
    //获取总开关地址和总状态地址
    public static int getAllAdd(String addressName) {
        int address=0;
        switch (addressName) {
        case "km1_switchon_one":address=240;break;//一号转换开关柜KM1合闸指令
        case "km1_switchoff_one":address=241;break;    //一号转换开关柜KM1分闸指令
        case "km2_switchon_one":address=242;break;//一号转换开关柜KM2合闸指令
        case "km2_switchoff_one":address=243;break;    //一号转换开关柜KM2分闸指令
        case "km3_switchon_one":address=244;break;//一号转换开关柜KM3合闸指令
        case "km3_switchoff_one":address=245;break;    //一号转换开关柜KM3分闸指令
        case "km4_switchon_one":address=246;break;//一号转换开关柜KM4合闸指令
        case "km4_switchoff_one":address=247;break;    //一号转换开关柜KM4分闸指令
        case "km1_switchon_two":address=248;break;//二号转换开关柜KM1合闸指令
        case "km1_switchoff_two":address=249;break;//二号转换开关柜KM1分闸指令
        case "km2_switchon_two":address=250;break;//二号转换开关柜KM2合闸指令
        case "km2_switchoff_two":address=251;break;//二号转换开关柜KM2分闸指令
        case "km3_switchon_two":address=252;break;//二号转换开关柜KM3合闸指令
        case "km3_switchoff_two":address=253;break;//二号转换开关柜KM3分闸指令
        case "km4_switchon_two":address=254;break;//二号转换开关柜KM4合闸指令
        case "km4_switchoff_two":address=255;break;//二号转换开关柜KM4分闸指令
        case "start_a":address=272;break;//A套启动
        case "stop_a":address=288;break;//A套停止
        case "start_b":address=273;break;//B套启动
        case "stop_b":address=289;break;//B套停止
        case "start_c":address=274;break;//C套启动
        case "stop_c":address=290;break;//C套停止
        case "start_d":address=275;break;//D套启动
        case "stop_d":address=291;break;//D套停止
        case "abconn_start":address=276;break;//AB套并联运行启动
        case "abconn_stop":address=292;break;//AB套并联运行停止
        case "cdconn_start":address=277;break;//CD套并联运行启动
        case "cdconn_stop":address=293;break;//CD套并联运行停止
        case "allconn_start":address=278;break;//四套并联运行启动
        case "allconn_stop":address=294;break;//四套并联运行停止
        case "abconn_flag":address=312;break;//AB并串联标志位
        case "cdconn_flag":address=313;break;//CD并串联标志位
        case "abconn_volset":address=275;break;//AB并联电压给定
        case "abconn_currset":address=276;break;//AB并联电流给定
        case "cdconn_volset":address=277;break;//CD并联电压给定
        case "cdconn_currset":address=278;break;//CD并联电流给定
        default:break;
        }
        return address;
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_4Kw_ServerSocket_Thread.java
New file
@@ -0,0 +1,63 @@
package com.electrical.FourKW;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.base.Com;
import com.sql.MysqlConnPool;
public class Electric_4Kw_ServerSocket_Thread implements Runnable{
    public List<Electric_inf> einfs;
    public MysqlConnPool conn_pool;
    public Map<Integer, Electrical_4KW_SocketClient_Thread> einfthreads;
    public Electric_4Kw_ServerSocket_Thread(MysqlConnPool conn_pool,List<Electric_inf> einfs) {
        this.einfs = einfs;
        this.conn_pool = conn_pool;
        this.einfthreads = new HashMap<Integer,Electrical_4KW_SocketClient_Thread>();
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(" Electrical_4KW_ServerSocket_Thread Start at " +Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        for(int i = 0;i<einfs.size();i++) {
            //插入或更新电源单表控制
            Electrical_Task_SQL.replace_Electric_Control_Single(conn_pool, new Electric_Control_Single(einfs.get(i).getElectric_id()));
            //插入或更新电源实时信息表和电源实时状态表
            Electrical_Task_SQL.replace_Electric_Rt(conn_pool, new Electric_Rt(einfs.get(i).getElectric_id()));
            //插入或更新电源实时状态表
            Electrical_Task_SQL.replace_Electric_State(conn_pool, new Electric_State(einfs.get(i).getElectric_id()));
            Electrical_4KW_SocketClient_Thread thread = new Electrical_4KW_SocketClient_Thread(einfs.get(i),conn_pool);
            einfthreads.put(einfs.get(i).electric_id, thread);
            new Thread(thread).start();
        }
        /*while(true) {
            try {
                for(int i=0;i<motors.size();i++) {
                    Motor_inf motor = motors.get(i);
                    Motor_inf temp = motorthreads.get(motor.motor_id).motor;
                    if(temp == null) {
                        //尚未启动的设备
                        Motor_SocketClient_Thread thread = new Motor_SocketClient_Thread(motor,conn_pool);
                        motorthreads.put(motor.motor_id, thread);
                        new Thread(thread).start();
                    }
                }
                Thread.sleep(5000);
            } catch (Exception e) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e1) {
                    //e1.printStackTrace();
                }
                e.printStackTrace();
            }
        }*/
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_All_ServerSocket_Thread.java
New file
@@ -0,0 +1,34 @@
package com.electrical.FourKW;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.base.Com;
import com.sql.MysqlConnPool;
public class Electric_All_ServerSocket_Thread implements Runnable{
    public MysqlConnPool conn_pool;
    public String PLC_ip;
    public Electric_All_ServerSocket_Thread(MysqlConnPool conn_pool,String PLC_ip) {
        this.conn_pool = conn_pool;
        this.PLC_ip=PLC_ip;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(" Electrical_ALL_ServerSocket_Thread Start at " +Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        //插入或更新电源总开关状态表
        Electrical_Task_SQL.replace_Electric_Switch(conn_pool, new Electric_Switch(PLC_ip));
        //插入或更新4套电源状态表
        Electrical_Task_SQL.replace_Electric_Power(conn_pool, new Electric_Power(PLC_ip));
        Electrical_ALL_SocketClient_Thread thread = new Electrical_ALL_SocketClient_Thread(PLC_ip,conn_pool);
        new Thread(thread).start();
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Control_Single.java
@@ -1,113 +1,193 @@
package com.electrical.FourKW;
public class Electric_Control_Single {
    public int electric_id;            //电源id
    public float upsetcurr;            //上位机设定电流
    public float upsetvol;            //上位机设定电压
    public int convolcontrol;        //恒压控制
    public int concurrcontrol;        //恒流控制
    public int othermodes;            //其他模式运行
    public int parallelmodes;        //并联稳压运行
    public int startposition;        //启动位
    public int stopposition;        //ֹͣλ
    public int resetposition;        //复位
    public int fanstart;            //风机启动
    public int fanstop;                //风机停止
    public float dcvol;                //直流电压
    public float dccurr;            //直流电流
    public float controlangle;        //控制角
    public Electric_Control_Single(int electric_id) {
        this.electric_id = electric_id;
    }
    public int getElectric_id() {
        return electric_id;
    }
    public float getUpsetcurr() {
        return upsetcurr;
    }
    public float getUpsetvol() {
        return upsetvol;
    }
    public int getConvolcontrol() {
        return convolcontrol;
    }
    public int getConcurrcontrol() {
        return concurrcontrol;
    }
    public int getOthermodes() {
        return othermodes;
    }
    public int getParallelmodes() {
        return parallelmodes;
    }
    public int getStartposition() {
        return startposition;
    }
    public int getStopposition() {
        return stopposition;
    }
    public int getResetposition() {
        return resetposition;
    }
    public int getFanstart() {
        return fanstart;
    }
    public int getFanstop() {
        return fanstop;
    }
    public float getDcvol() {
        return dcvol;
    }
    public float getDccurr() {
        return dccurr;
    }
    public float getControlangle() {
        return controlangle;
    }
    public void setElectric_id(int electric_id) {
        this.electric_id = electric_id;
    }
    public void setUpsetcurr(float upsetcurr) {
        this.upsetcurr = upsetcurr;
    }
    public void setUpsetvol(float upsetvol) {
        this.upsetvol = upsetvol;
    }
    public void setConvolcontrol(int convolcontrol) {
        this.convolcontrol = convolcontrol;
    }
    public void setConcurrcontrol(int concurrcontrol) {
        this.concurrcontrol = concurrcontrol;
    }
    public void setOthermodes(int othermodes) {
        this.othermodes = othermodes;
    }
    public void setParallelmodes(int parallelmodes) {
        this.parallelmodes = parallelmodes;
    }
    public void setStartposition(int startposition) {
        this.startposition = startposition;
    }
    public void setStopposition(int stopposition) {
        this.stopposition = stopposition;
    }
    public void setResetposition(int resetposition) {
        this.resetposition = resetposition;
    }
    public void setFanstart(int fanstart) {
        this.fanstart = fanstart;
    }
    public void setFanstop(int fanstop) {
        this.fanstop = fanstop;
    }
    public void setDcvol(float dcvol) {
        this.dcvol = dcvol;
    }
    public void setDccurr(float dccurr) {
        this.dccurr = dccurr;
    }
    public void setControlangle(float controlangle) {
        this.controlangle = controlangle;
    }
}
package com.electrical.FourKW;
public class Electric_Control_Single {
    public int electric_id;            //电源id
    public float upsetcurr;            //上位机设定电流
    public float upsetvol;            //上位机设定电压
    public int convolcontrol;        //恒压控制
    public int concurrcontrol;        //恒流控制
    public int othermodes;            //其他模式运行
    public int parallelmodes;        //并联稳压运行
    public int startposition;        //启动位
    public int stopposition;        //ֹͣλ
    public int resetposition;        //复位
    public int fanstart;            //风机启动
    public int fanstop;                //风机停止
    public float dcvol;                //直流电压
    public float dccurr;            //直流电流
    public float controlangle;        //控制角
    public boolean control_en = false;
    public void clear() {
        this.control_en = false;
        this.upsetcurr = 0;
        this.upsetvol = 0;
        this.convolcontrol = 0;
        this.concurrcontrol = 0;
        this.othermodes = 0;
        this.parallelmodes = 0;
        this.startposition = 0;
        this.stopposition = 0;
        this.resetposition = 0;
        this.fanstart = 0;
        this.fanstop = 0;
        this.dcvol = 0;
        this.dccurr = 0;
        this.controlangle = 0;
    }
    public Electric_Control_Single(int electric_id) {
        this.electric_id = electric_id;
    }
    public int getElectric_id() {
        return electric_id;
    }
    public float getUpsetcurr() {
        return upsetcurr;
    }
    public float getUpsetvol() {
        return upsetvol;
    }
    public int getConvolcontrol() {
        return convolcontrol;
    }
    public int getConcurrcontrol() {
        return concurrcontrol;
    }
    public int getOthermodes() {
        return othermodes;
    }
    public int getParallelmodes() {
        return parallelmodes;
    }
    public int getStartposition() {
        return startposition;
    }
    public int getStopposition() {
        return stopposition;
    }
    public int getResetposition() {
        return resetposition;
    }
    public int getFanstart() {
        return fanstart;
    }
    public int getFanstop() {
        return fanstop;
    }
    public float getDcvol() {
        return dcvol;
    }
    public float getDccurr() {
        return dccurr;
    }
    public float getControlangle() {
        return controlangle;
    }
    public void setElectric_id(int electric_id) {
        this.electric_id = electric_id;
    }
    public void setUpsetcurr(float upsetcurr) {
        if(upsetcurr > 0) {
            control_en = true;
        }
        this.upsetcurr = upsetcurr;
    }
    public void setUpsetvol(float upsetvol) {
        if(upsetvol > 0) {
            control_en = true;
        }
        this.upsetvol = upsetvol;
    }
    public void setConvolcontrol(int convolcontrol) {
        if(convolcontrol > 0) {
            control_en = true;
        }
        this.convolcontrol = convolcontrol;
    }
    public void setConcurrcontrol(int concurrcontrol) {
        if(concurrcontrol > 0) {
            control_en = true;
        }
        this.concurrcontrol = concurrcontrol;
    }
    public void setOthermodes(int othermodes) {
        if(othermodes > 0) {
            control_en = true;
        }
        this.othermodes = othermodes;
    }
    public void setParallelmodes(int parallelmodes) {
        if(parallelmodes > 0) {
            control_en = true;
        }
        this.parallelmodes = parallelmodes;
    }
    public void setStartposition(int startposition) {
        if(startposition > 0) {
            control_en = true;
        }
        this.startposition = startposition;
    }
    public void setStopposition(int stopposition) {
        if(stopposition > 0) {
            control_en = true;
        }
        this.stopposition = stopposition;
    }
    public void setResetposition(int resetposition) {
        if(resetposition > 0) {
            control_en = true;
        }
        this.resetposition = resetposition;
    }
    public void setFanstart(int fanstart) {
        if(fanstart > 0) {
            control_en = true;
        }
        this.fanstart = fanstart;
    }
    public void setFanstop(int fanstop) {
        if(fanstop > 0) {
            control_en = true;
        }
        this.fanstop = fanstop;
    }
    public void setDcvol(float dcvol) {
        if(dcvol > 0) {
            control_en = true;
        }
        this.dcvol = dcvol;
    }
    public void setDccurr(float dccurr) {
        if(dccurr > 0) {
            control_en = true;
        }
        this.dccurr = dccurr;
    }
    public void setControlangle(float controlangle) {
        if(controlangle > 0) {
            control_en = true;
        }
        this.controlangle = controlangle;
    }
    public boolean isControl_en() {
        return control_en;
    }
    public void setControl_en(boolean control_en) {
        this.control_en = control_en;
    }
    @Override
    public String toString() {
        return "Electric_Control_Single [electric_id=" + electric_id + ", upsetcurr=" + upsetcurr + ", upsetvol="
                + upsetvol + ", convolcontrol=" + convolcontrol + ", concurrcontrol=" + concurrcontrol + ", othermodes="
                + othermodes + ", parallelmodes=" + parallelmodes + ", startposition=" + startposition
                + ", stopposition=" + stopposition + ", resetposition=" + resetposition + ", fanstart=" + fanstart
                + ", fanstop=" + fanstop + ", dcvol=" + dcvol + ", dccurr=" + dccurr + ", controlangle=" + controlangle
                + ", control_en=" + control_en + "]";
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Power.java
@@ -1,26 +1,165 @@
package com.electrical.FourKW;
public class Electric_Power {
    public int start_a;            //A套启动
    public int stop_a;            //A套停止
    public int start_b;            //B套启动
    public int stop_b;            //B套停止
    public int start_c;            //C套启动
    public int stop_c;            //C套停止
    public int start_d;            //D套启动
    public int stop_d;            //D套停止
    public int abconn_start;    //AB套并联运行启动
    public int abconn_stop;        //AB套并联运行停止
    public int cdconn_start;    //CD套并联运行启动
    public int cdconn_stop;        //CD套并联运行停止
    public int allconn_start;    //四套并联运行启动
    public int allconn_stop;    //四套并联运行停止
    public int abconn_flag;        //AB并串联标志位
    public int cdconn_flag;        //CD并串联标志位
    public int abconn_volset;    //AB并联电压给定
    public int abconn_currset;    //AB并联电流给定
    public int cdconn_volset;    //CD并联电压给定
    public int cdconn_currset;    //CD并联电流给定
    public String note;
}
package com.electrical.FourKW;
public class Electric_Power {
    public String PLC_ip;               //plc的ip地址
    public int start_a;            //A套启动
    public int stop_a;            //A套停止
    public int start_b;            //B套启动
    public int stop_b;            //B套停止
    public int start_c;            //C套启动
    public int stop_c;            //C套停止
    public int start_d;            //D套启动
    public int stop_d;            //D套停止
    public int abconn_start;    //AB套并联运行启动
    public int abconn_stop;        //AB套并联运行停止
    public int cdconn_start;    //CD套并联运行启动
    public int cdconn_stop;        //CD套并联运行停止
    public int allconn_start;    //四套并联运行启动
    public int allconn_stop;    //四套并联运行停止
    public int abconn_flag;        //AB并串联标志位
    public int cdconn_flag;        //CD并串联标志位
    public int abconn_volset;    //AB并联电压给定
    public int abconn_currset;    //AB并联电流给定
    public int cdconn_volset;    //CD并联电压给定
    public int cdconn_currset;    //CD并联电流给定
    public String note;
    public Electric_Power(String pLC_ip) {
        super();
        this.PLC_ip = pLC_ip;
    }
    public String getPLC_ip() {
        return PLC_ip;
    }
    public void setPLC_ip(String pLC_ip) {
        PLC_ip = pLC_ip;
    }
    public int getStart_a() {
        return start_a;
    }
    public void setStart_a(int start_a) {
        this.start_a = start_a;
    }
    public int getStop_a() {
        return stop_a;
    }
    public void setStop_a(int stop_a) {
        this.stop_a = stop_a;
    }
    public int getStart_b() {
        return start_b;
    }
    public void setStart_b(int start_b) {
        this.start_b = start_b;
    }
    public int getStop_b() {
        return stop_b;
    }
    public void setStop_b(int stop_b) {
        this.stop_b = stop_b;
    }
    public int getStart_c() {
        return start_c;
    }
    public void setStart_c(int start_c) {
        this.start_c = start_c;
    }
    public int getStop_c() {
        return stop_c;
    }
    public void setStop_c(int stop_c) {
        this.stop_c = stop_c;
    }
    public int getStart_d() {
        return start_d;
    }
    public void setStart_d(int start_d) {
        this.start_d = start_d;
    }
    public int getStop_d() {
        return stop_d;
    }
    public void setStop_d(int stop_d) {
        this.stop_d = stop_d;
    }
    public int getAbconn_start() {
        return abconn_start;
    }
    public void setAbconn_start(int abconn_start) {
        this.abconn_start = abconn_start;
    }
    public int getAbconn_stop() {
        return abconn_stop;
    }
    public void setAbconn_stop(int abconn_stop) {
        this.abconn_stop = abconn_stop;
    }
    public int getCdconn_start() {
        return cdconn_start;
    }
    public void setCdconn_start(int cdconn_start) {
        this.cdconn_start = cdconn_start;
    }
    public int getCdconn_stop() {
        return cdconn_stop;
    }
    public void setCdconn_stop(int cdconn_stop) {
        this.cdconn_stop = cdconn_stop;
    }
    public int getAllconn_start() {
        return allconn_start;
    }
    public void setAllconn_start(int allconn_start) {
        this.allconn_start = allconn_start;
    }
    public int getAllconn_stop() {
        return allconn_stop;
    }
    public void setAllconn_stop(int allconn_stop) {
        this.allconn_stop = allconn_stop;
    }
    public int getAbconn_flag() {
        return abconn_flag;
    }
    public void setAbconn_flag(int abconn_flag) {
        this.abconn_flag = abconn_flag;
    }
    public int getCdconn_flag() {
        return cdconn_flag;
    }
    public void setCdconn_flag(int cdconn_flag) {
        this.cdconn_flag = cdconn_flag;
    }
    public int getAbconn_volset() {
        return abconn_volset;
    }
    public void setAbconn_volset(int abconn_volset) {
        this.abconn_volset = abconn_volset;
    }
    public int getAbconn_currset() {
        return abconn_currset;
    }
    public void setAbconn_currset(int abconn_currset) {
        this.abconn_currset = abconn_currset;
    }
    public int getCdconn_volset() {
        return cdconn_volset;
    }
    public void setCdconn_volset(int cdconn_volset) {
        this.cdconn_volset = cdconn_volset;
    }
    public int getCdconn_currset() {
        return cdconn_currset;
    }
    public void setCdconn_currset(int cdconn_currset) {
        this.cdconn_currset = cdconn_currset;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_Switch.java
@@ -1,128 +1,141 @@
package com.electrical.FourKW;
public class Electric_Switch {
    public int km1_switchon_one;        //一号转换开关柜KM1合闸指令
    public int km1_switchoff_one;        //一号转换开关柜KM1分闸指令
    public int km2_switchon_one;        //一号转换开关柜KM2合闸指令
    public int km2_switchoff_one;        //一号转换开关柜KM2分闸指令
    public int km3_switchon_one;        //一号转换开关柜KM3合闸指令
    public int km3_switchoff_one;        //一号转换开关柜KM3分闸指令
    public int km4_switchon_one;        //一号转换开关柜KM4合闸指令
    public int km4_switchoff_one;        //一号转换开关柜KM4分闸指令
    public int km1_switchon_two;        //二号转换开关柜KM1合闸指令
    public int km1_switchoff_two;        //二号转换开关柜KM1分闸指令
    public int km2_switchon_two;        //二号转换开关柜KM2合闸指令
    public int km2_switchoff_two;        //二号转换开关柜KM2分闸指令
    public int km3_switchon_two;        //二号转换开关柜KM3合闸指令
    public int km3_switchoff_two;        //二号转换开关柜KM3分闸指令
    public int km4_switchon_two;        //二号转换开关柜KM4合闸指令
    public int km4_switchoff_two;        //二号转换开关柜KM4分闸指令
    public String note;                    //备用
    public int getKm1_switchon_one() {
        return km1_switchon_one;
    }
    public int getKm1_switchoff_one() {
        return km1_switchoff_one;
    }
    public int getKm2_switchon_one() {
        return km2_switchon_one;
    }
    public int getKm2_switchoff_one() {
        return km2_switchoff_one;
    }
    public int getKm3_switchon_one() {
        return km3_switchon_one;
    }
    public int getKm3_switchoff_one() {
        return km3_switchoff_one;
    }
    public int getKm4_switchon_one() {
        return km4_switchon_one;
    }
    public int getKm4_switchoff_one() {
        return km4_switchoff_one;
    }
    public int getKm1_switchon_two() {
        return km1_switchon_two;
    }
    public int getKm1_switchoff_two() {
        return km1_switchoff_two;
    }
    public int getKm2_switchon_two() {
        return km2_switchon_two;
    }
    public int getKm2_switchoff_two() {
        return km2_switchoff_two;
    }
    public int getKm3_switchon_two() {
        return km3_switchon_two;
    }
    public int getKm3_switchoff_two() {
        return km3_switchoff_two;
    }
    public int getKm4_switchon_two() {
        return km4_switchon_two;
    }
    public int getKm4_switchoff_two() {
        return km4_switchoff_two;
    }
    public String getNote() {
        return note;
    }
    public void setKm1_switchon_one(int km1_switchon_one) {
        this.km1_switchon_one = km1_switchon_one;
    }
    public void setKm1_switchoff_one(int km1_switchoff_one) {
        this.km1_switchoff_one = km1_switchoff_one;
    }
    public void setKm2_switchon_one(int km2_switchon_one) {
        this.km2_switchon_one = km2_switchon_one;
    }
    public void setKm2_switchoff_one(int km2_switchoff_one) {
        this.km2_switchoff_one = km2_switchoff_one;
    }
    public void setKm3_switchon_one(int km3_switchon_one) {
        this.km3_switchon_one = km3_switchon_one;
    }
    public void setKm3_switchoff_one(int km3_switchoff_one) {
        this.km3_switchoff_one = km3_switchoff_one;
    }
    public void setKm4_switchon_one(int km4_switchon_one) {
        this.km4_switchon_one = km4_switchon_one;
    }
    public void setKm4_switchoff_one(int km4_switchoff_one) {
        this.km4_switchoff_one = km4_switchoff_one;
    }
    public void setKm1_switchon_two(int km1_switchon_two) {
        this.km1_switchon_two = km1_switchon_two;
    }
    public void setKm1_switchoff_two(int km1_switchoff_two) {
        this.km1_switchoff_two = km1_switchoff_two;
    }
    public void setKm2_switchon_two(int km2_switchon_two) {
        this.km2_switchon_two = km2_switchon_two;
    }
    public void setKm2_switchoff_two(int km2_switchoff_two) {
        this.km2_switchoff_two = km2_switchoff_two;
    }
    public void setKm3_switchon_two(int km3_switchon_two) {
        this.km3_switchon_two = km3_switchon_two;
    }
    public void setKm3_switchoff_two(int km3_switchoff_two) {
        this.km3_switchoff_two = km3_switchoff_two;
    }
    public void setKm4_switchon_two(int km4_switchon_two) {
        this.km4_switchon_two = km4_switchon_two;
    }
    public void setKm4_switchoff_two(int km4_switchoff_two) {
        this.km4_switchoff_two = km4_switchoff_two;
    }
    public void setNote(String note) {
        this.note = note;
    }
}
package com.electrical.FourKW;
public class Electric_Switch {
    public String PLC_ip;               //plc的ip地址
    public int km1_switchon_one;        //一号转换开关柜KM1合闸指令
    public int km1_switchoff_one;        //一号转换开关柜KM1分闸指令
    public int km2_switchon_one;        //一号转换开关柜KM2合闸指令
    public int km2_switchoff_one;        //一号转换开关柜KM2分闸指令
    public int km3_switchon_one;        //一号转换开关柜KM3合闸指令
    public int km3_switchoff_one;        //一号转换开关柜KM3分闸指令
    public int km4_switchon_one;        //一号转换开关柜KM4合闸指令
    public int km4_switchoff_one;        //一号转换开关柜KM4分闸指令
    public int km1_switchon_two;        //二号转换开关柜KM1合闸指令
    public int km1_switchoff_two;        //二号转换开关柜KM1分闸指令
    public int km2_switchon_two;        //二号转换开关柜KM2合闸指令
    public int km2_switchoff_two;        //二号转换开关柜KM2分闸指令
    public int km3_switchon_two;        //二号转换开关柜KM3合闸指令
    public int km3_switchoff_two;        //二号转换开关柜KM3分闸指令
    public int km4_switchon_two;        //二号转换开关柜KM4合闸指令
    public int km4_switchoff_two;        //二号转换开关柜KM4分闸指令
    public String note;                    //备用
    public Electric_Switch(String pLC_ip) {
        super();
        this.PLC_ip = pLC_ip;
    }
    public String getPLC_ip() {
        return PLC_ip;
    }
    public void setPLC_ip(String pLC_ip) {
        PLC_ip = pLC_ip;
    }
    public int getKm1_switchon_one() {
        return km1_switchon_one;
    }
    public int getKm1_switchoff_one() {
        return km1_switchoff_one;
    }
    public int getKm2_switchon_one() {
        return km2_switchon_one;
    }
    public int getKm2_switchoff_one() {
        return km2_switchoff_one;
    }
    public int getKm3_switchon_one() {
        return km3_switchon_one;
    }
    public int getKm3_switchoff_one() {
        return km3_switchoff_one;
    }
    public int getKm4_switchon_one() {
        return km4_switchon_one;
    }
    public int getKm4_switchoff_one() {
        return km4_switchoff_one;
    }
    public int getKm1_switchon_two() {
        return km1_switchon_two;
    }
    public int getKm1_switchoff_two() {
        return km1_switchoff_two;
    }
    public int getKm2_switchon_two() {
        return km2_switchon_two;
    }
    public int getKm2_switchoff_two() {
        return km2_switchoff_two;
    }
    public int getKm3_switchon_two() {
        return km3_switchon_two;
    }
    public int getKm3_switchoff_two() {
        return km3_switchoff_two;
    }
    public int getKm4_switchon_two() {
        return km4_switchon_two;
    }
    public int getKm4_switchoff_two() {
        return km4_switchoff_two;
    }
    public String getNote() {
        return note;
    }
    public void setKm1_switchon_one(int km1_switchon_one) {
        this.km1_switchon_one = km1_switchon_one;
    }
    public void setKm1_switchoff_one(int km1_switchoff_one) {
        this.km1_switchoff_one = km1_switchoff_one;
    }
    public void setKm2_switchon_one(int km2_switchon_one) {
        this.km2_switchon_one = km2_switchon_one;
    }
    public void setKm2_switchoff_one(int km2_switchoff_one) {
        this.km2_switchoff_one = km2_switchoff_one;
    }
    public void setKm3_switchon_one(int km3_switchon_one) {
        this.km3_switchon_one = km3_switchon_one;
    }
    public void setKm3_switchoff_one(int km3_switchoff_one) {
        this.km3_switchoff_one = km3_switchoff_one;
    }
    public void setKm4_switchon_one(int km4_switchon_one) {
        this.km4_switchon_one = km4_switchon_one;
    }
    public void setKm4_switchoff_one(int km4_switchoff_one) {
        this.km4_switchoff_one = km4_switchoff_one;
    }
    public void setKm1_switchon_two(int km1_switchon_two) {
        this.km1_switchon_two = km1_switchon_two;
    }
    public void setKm1_switchoff_two(int km1_switchoff_two) {
        this.km1_switchoff_two = km1_switchoff_two;
    }
    public void setKm2_switchon_two(int km2_switchon_two) {
        this.km2_switchon_two = km2_switchon_two;
    }
    public void setKm2_switchoff_two(int km2_switchoff_two) {
        this.km2_switchoff_two = km2_switchoff_two;
    }
    public void setKm3_switchon_two(int km3_switchon_two) {
        this.km3_switchon_two = km3_switchon_two;
    }
    public void setKm3_switchoff_two(int km3_switchoff_two) {
        this.km3_switchoff_two = km3_switchoff_two;
    }
    public void setKm4_switchon_two(int km4_switchon_two) {
        this.km4_switchon_two = km4_switchon_two;
    }
    public void setKm4_switchoff_two(int km4_switchoff_two) {
        this.km4_switchoff_two = km4_switchoff_two;
    }
    public void setNote(String note) {
        this.note = note;
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electric_inf.java
@@ -1,53 +1,60 @@
package com.electrical.FourKW;
public class Electric_inf {
    public int electric_id;
    public String electric_name;
    public int electric_type;
    public String electric_ip;
    public String note;
    public Electric_Rt rt;
    public Electric_State state;
    public Electric_Control_Single control;
    public Electric_Control_Single control_joint;        //联动控制
    public Electric_inf(int electric_id) {
        this.electric_id = electric_id;
        this.rt = new Electric_Rt(electric_id);
        this.state = new Electric_State(electric_id);
        this.control = new Electric_Control_Single(electric_id);
        this.control_joint = new Electric_Control_Single(electric_id);
    }
    public int getElectric_id() {
        return electric_id;
    }
    public String getElectric_name() {
        return electric_name;
    }
    public int getElectric_type() {
        return electric_type;
    }
    public String getElectric_ip() {
        return electric_ip;
    }
    public String getNote() {
        return note;
    }
    public void setElectric_id(int electric_id) {
        this.electric_id = electric_id;
    }
    public void setElectric_name(String electric_name) {
        this.electric_name = electric_name;
    }
    public void setElectric_type(int electric_type) {
        this.electric_type = electric_type;
    }
    public void setElectric_ip(String electric_ip) {
        this.electric_ip = electric_ip;
    }
    public void setNote(String note) {
        this.note = note;
    }
}
package com.electrical.FourKW;
public class Electric_inf {
    public int electric_id;
    public String electric_name;
    public int electric_type;
    public String electric_ip;
    public String note;
    public Electric_Rt rt;
    public Electric_State state;
    public Electric_Control_Single control;
    public Electric_Control_Single control_joint;        //联动控制
    public Electric_inf(int electric_id) {
        this.electric_id = electric_id;
        this.rt = new Electric_Rt(electric_id);
        this.state = new Electric_State(electric_id);
        this.control = new Electric_Control_Single(electric_id);
        this.control_joint = new Electric_Control_Single(electric_id);
    }
    public int getElectric_id() {
        return electric_id;
    }
    public String getElectric_name() {
        return electric_name;
    }
    public int getElectric_type() {
        return electric_type;
    }
    public String getElectric_ip() {
        return electric_ip;
    }
    public String getNote() {
        return note;
    }
    public void setElectric_id(int electric_id) {
        this.electric_id = electric_id;
    }
    public void setElectric_name(String electric_name) {
        this.electric_name = electric_name;
    }
    public void setElectric_type(int electric_type) {
        this.electric_type = electric_type;
    }
    public void setElectric_ip(String electric_ip) {
        this.electric_ip = electric_ip;
    }
    public void setNote(String note) {
        this.note = note;
    }
    @Override
    public String toString() {
        return "Electric_inf [electric_id=" + electric_id + ", electric_name=" + electric_name + ", electric_type="
                + electric_type + ", electric_ip=" + electric_ip + ", note=" + note + "]";
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_4KW_SocketClient_Thread.java
New file
@@ -0,0 +1,200 @@
package com.electrical.FourKW;
import java.util.Date;
import javax.swing.text.html.CSS;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.code.DataType;
import com.sql.MysqlConnPool;
public class Electrical_4KW_SocketClient_Thread implements Runnable{
    public MysqlConnPool conn_pool;
    public Electric_inf einf;
    public Electric_Rt ert;
    public Electric_State estate;
    public Electric_Control_Single ecs;
    public MyModbusMaster master;
    //public static final int MAX_READALARM_COUNT = 20;        //一次读取告警节点的最大数量
    //public int read_alarm_index = 0;                        //读取告警索引
    public Electrical_4KW_SocketClient_Thread(Electric_inf einf,MysqlConnPool conn_pool) {
        this.conn_pool = conn_pool;
        this.einf = einf;
        ert = new Electric_Rt(einf.getElectric_id());
        estate = new Electric_State(einf.getElectric_id());
        ecs = new Electric_Control_Single(einf.getElectric_id());
        master = new MyModbusMaster(einf.getElectric_ip(), MyModbusMaster.SLAVEID_DEFAULT);
    }
    @Override
    public void run() {
        int runCount = 0;
        while(true) {
            try {
                Electrical_Task_SQL.queryElectric_Control_Single(conn_pool, ecs);
                //System.out.println(ecs.isControl_en()+"################33   "+runCount);
                if(ecs.isControl_en()) {
                    /************************** 单点控制输出 *******************************/
                    writeElectricalControlSignal(master,ecs);
                    Electrical_Task_SQL.replace_Electric_Control_Single(conn_pool, ecs);
                }
                if(runCount %2 == 0) {
                    *//*************************** 更新电源实时信息******************************//*
                    readElectrical_rt(master,ert);
                    Electrical_Task_SQL.replace_Electric_Rt(conn_pool, ert);
                    *//**************************** 更新电源状态信息 *****************************//*
                    readElectrical_state(master,estate);
                    Electrical_Task_SQL.replace_Electric_State(conn_pool, estate);
                }
                /*if(runCount %4 == 0) {
                    *//*************************** 读取故障状态信息 ******************************//*
                    //Date start = new Date();
                    //readMotorAlarmData(master,motor);
                    //Date end = new Date();
                    //System.out.println((end.getTime()-start.getTime())/1000);
                }*/
                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(einf.electric_ip);
                }
                if(runCount > 999900) {
                    runCount = 0;
                }
                runCount ++;
                Thread.sleep(20000);
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    //e1.printStackTrace();
                }
                e.printStackTrace();
            }
     }
  }
    /**
     *      单点控制输出
     * @param master
     * @param ecs
     */
    private void writeElectricalControlSignal(MyModbusMaster master, Electric_Control_Single ecs) {
        System.out.println(ecs);
        if(ecs.upsetcurr >0) {
            MyModbusUtils.writeHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "upsetcurr"), ecs.upsetcurr, DataType.TWO_BYTE_INT_UNSIGNED, master);
        }
        if(ecs.upsetvol >0) {
            MyModbusUtils.writeHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "upsetvol"), ecs.upsetvol, DataType.TWO_BYTE_INT_UNSIGNED, master);
        }
        if(ecs.convolcontrol >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "convolcontrol"), true, master);
        }
        if(ecs.concurrcontrol >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "concurrcontrol"),true, master);
        }
        if(ecs.othermodes >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "othermodes"),true, master);
        }
        if(ecs.parallelmodes >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "parallelmodes"),true, master);
        }
        if(ecs.startposition >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "startposition"),true, master);
        }
        if(ecs.stopposition >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "stopposition"),true, master);
        }
        if(ecs.resetposition >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "resetposition"),true,master);
        }
        if(ecs.fanstart >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "fanstart"),true, master);
        }
        if(ecs.fanstop >0) {
            MyModbusUtils.writeCoil(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "fanstop"),true, master);
        }
        if(ecs.dcvol >0) {
            MyModbusUtils.writeHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "dcvol"), ecs.dcvol, DataType.TWO_BYTE_INT_UNSIGNED, master);
        }
        if(ecs.dccurr >0) {
            MyModbusUtils.writeHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "dccurr"), ecs.dccurr, DataType.TWO_BYTE_INT_UNSIGNED, master);
        }
        if(ecs.controlangle >0) {
            MyModbusUtils.writeHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ecs.getElectric_id(), "controlangle"), ecs.controlangle, DataType.TWO_BYTE_INT_UNSIGNED, master);
        }
        ecs.clear();
    }
    /**
     *     更新电源实时信息
     * @param master
     * @param load_state
     */
    private void readElectrical_rt(MyModbusMaster master, Electric_Rt ert) {
        ert.upsetcurr = (float) master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "upsetcurr"), DataType.TWO_BYTE_INT_SIGNED, master), ert.upsetcurr);                                        //上位机设定电流            58
        ert.upsetvol = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "upsetvol"), DataType.TWO_BYTE_INT_SIGNED, master), ert.upsetvol);    //上位机设定电压
        ert.convolcontrol = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "convolcontrol"), master), ert.convolcontrol);        //恒压控制
        ert.concurrcontrol = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "concurrcontrol"), master), ert.concurrcontrol);        //恒流控制
        ert.othermodes = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "othermodes"), master), ert.othermodes);                //其他模式运行
        ert.parallelmodes = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "parallelmodes"),master), ert.parallelmodes);            //并联稳压运行
        ert.startposition = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "startposition"),master), ert.startposition);            //启动位
        ert.stopposition = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "stopposition"), master), ert.stopposition);            //ֹͣλ
        ert.resetposition = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "resetposition"), master), ert.resetposition);        //复位
        ert.fanstart = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "fanstart"), master), ert.fanstart);                    //风机启动
        ert.fanstop = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "fanstop"), master), ert.fanstop);                    //风机停止
        ert.dcvol = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "dcvol"), DataType.TWO_BYTE_INT_SIGNED, master), ert.dcvol);//直流电压
        ert.dccurr = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "dccurr"), DataType.TWO_BYTE_INT_SIGNED, master), ert.dccurr);//直流电流
        ert.controlangle = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "controlangle"), DataType.TWO_BYTE_INT_SIGNED, master), ert.controlangle);//控制角
        ert.loopflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "loopflag"), master), ert.loopflag);    //开闭环标志位【0开环;1闭环】
        ert.remoteflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "remoteflag"), master), ert.remoteflag);//就地远程标志位【0远程;1就地】
        ert.orderflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "orderflag"),master), ert.orderflag);//正序逆序标志位【0正序;1逆序】
        ert.consvolcurrflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "consvolcurrflag"), master), ert.consvolcurrflag);//恒压横流标志位【0恒压;1恒流】
        ert.powerstartflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "powerstartflag"),master), ert.powerstartflag);//电源启动标志位【0停止;1启动】
        ert.workmodelflag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(ert.getElectric_id(), "workmodelflag"), master), ert.workmodelflag); //工作模式标志位【0其他模式;1并联稳压】
    }
    /**
     *     更新电源状态信息
     * @param master
     * @param load_state
     */
    private void readElectrical_state(MyModbusMaster master, Electric_State estate) {
        estate.case_trip_output = (int) master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "case_trip_output"), master), estate.case_trip_output);//机箱跳闸输出
        estate.fault_reset_signal = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "fault_reset_signal"), master), estate.fault_reset_signal);//故障复位信号
        estate.high_vol_switch_status = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "high_vol_switch_status"), master), estate.high_vol_switch_status);//高压开关状态
        estate.stop_button = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "stop_button"), master), estate.stop_button);//急停按钮
        estate.main_cabinet_fan_status = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "main_cabinet_fan_status"), master), estate.main_cabinet_fan_status);//主柜风机状态
        estate.trans_cabinet_door_lock = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "trans_cabinet_door_lock"),  master), estate.trans_cabinet_door_lock);//变压器柜门连锁
        estate.trans_cabinet_overtem_alarm = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "trans_cabinet_overtem_alarm"),  master), estate.trans_cabinet_overtem_alarm);//变压器超温报警
        estate.trans_cabinet_overtem_trip = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "trans_cabinet_overtem_trip"), master), estate.trans_cabinet_overtem_trip);//变压器超温跳闸
        estate.qs1_state = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "qs1_state"),  master), estate.qs1_state);//QS1״̬
        estate.qs2_state = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "qs2_state"), master), estate.qs2_state);//QS2״̬
        estate.switch_cabinet_door_status = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "switch_cabinet_door_status"),  master), estate.switch_cabinet_door_status);//转换开关柜门状态
        if(estate.getElectric_id()==4001||estate.getElectric_id()==4003) {
            estate.alldcvol = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "alldcvol"), DataType.TWO_BYTE_INT_SIGNED, master), estate.alldcvol);//总直流电压
            estate.alldccurr = (float)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAddress(estate.getElectric_id(), "alldccurr"), DataType.TWO_BYTE_INT_SIGNED, master), estate.alldccurr);//总直流电流
        }else {
            estate.alldcvol=0;
            estate.alldccurr = 0;
        }
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_ALL_SocketClient_Thread.java
New file
@@ -0,0 +1,116 @@
package com.electrical.FourKW;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.code.DataType;
import com.sql.MysqlConnPool;
public class Electrical_ALL_SocketClient_Thread implements Runnable{
    public MysqlConnPool conn_pool;
    public Electric_Switch eswitch;
    public Electric_Power epower;
    public MyModbusMaster master;
    //public static final int MAX_READALARM_COUNT = 20;        //一次读取告警节点的最大数量
    //public int read_alarm_index = 0;                        //读取告警索引
    public Electrical_ALL_SocketClient_Thread(String PLC_ip,MysqlConnPool conn_pool) {
        this.conn_pool = conn_pool;
        eswitch=new Electric_Switch(PLC_ip);
        epower=new Electric_Power(PLC_ip);
        master = new MyModbusMaster(PLC_ip, MyModbusMaster.SLAVEID_DEFAULT);
    }
    @Override
    public void run() {
        int runCount = 0;
        while(true) {
            try {
                if(runCount %2 == 0) {
                    /*************************** 更新电源总开关状态表******************************/
                    readElectrical_switch(master,eswitch);
                    Electrical_Task_SQL.replace_Electric_Switch(conn_pool, eswitch);
                    /**************************** 更新4套电源状态表*****************************/
                    readElectrical_power(master,epower);
                    Electrical_Task_SQL.replace_Electric_Power(conn_pool, epower);
                }
/*                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(einf.electric_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 readElectrical_switch(MyModbusMaster master, Electric_Switch eswitch) {
        eswitch.km1_switchon_one = (int) master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km1_switchon_one"),  master), eswitch.km1_switchon_one);    //一号转换开关柜KM1合闸指令
        eswitch.km1_switchoff_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km1_switchoff_one"),  master), eswitch.km1_switchoff_one);    //一号转换开关柜KM1分闸指令
        eswitch.km2_switchon_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km2_switchon_one"), master), eswitch.km2_switchon_one);        //一号转换开关柜KM2合闸指令
        eswitch.km2_switchoff_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km2_switchoff_one"), master), eswitch.km2_switchoff_one);    //一号转换开关柜KM2分闸指令
        eswitch.km3_switchon_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km3_switchon_one"), master), eswitch.km3_switchon_one);            //一号转换开关柜KM3合闸指令
        eswitch.km3_switchoff_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km3_switchoff_one"),master), eswitch.km3_switchoff_one);            //一号转换开关柜KM3分闸指令
        eswitch.km4_switchon_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km4_switchon_one"),master), eswitch.km4_switchon_one);            //一号转换开关柜KM4合闸指令
        eswitch.km4_switchoff_one = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km4_switchoff_one"), master), eswitch.km4_switchoff_one);        //一号转换开关柜KM4分闸指令
        eswitch.km1_switchon_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km1_switchon_two"), master),eswitch.km1_switchon_two);            //二号转换开关柜KM1合闸指令
        eswitch.km1_switchoff_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km1_switchoff_two"), master),eswitch.km1_switchoff_two);        //二号转换开关柜KM1分闸指令
        eswitch.km2_switchon_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km2_switchon_two"), master),eswitch.km2_switchon_two);            //二号转换开关柜KM2合闸指令
        eswitch.km2_switchoff_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km2_switchoff_two"), master), eswitch.km2_switchoff_two);        //二号转换开关柜KM2分闸指令
        eswitch.km3_switchon_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km3_switchon_two"), master),eswitch.km3_switchon_two);            //二号转换开关柜KM3合闸指令
        eswitch.km3_switchoff_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km3_switchoff_two"), master), eswitch.km3_switchoff_two);        //二号转换开关柜KM3分闸指令
        eswitch.km4_switchon_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km4_switchon_two"), master), eswitch.km4_switchon_two);            //二号转换开关柜KM4合闸指令
        eswitch.km4_switchoff_two = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("km4_switchoff_two"), master),eswitch.km4_switchoff_two);            //二号转换开关柜KM4分闸指令
    }
    /**
     *     更新电源总开关状态表
     * @param master
     * @param load_state
     */
    private void readElectrical_power(MyModbusMaster master, Electric_Power epower) {
        epower.start_a = (int) master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("start_a"), master), epower.start_a );    //A套启动
        epower.stop_a = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("stop_a"), master),epower.stop_a );        //A套停止
        epower.start_b = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("start_b"), master), epower.start_b );        //B套启动
        epower.stop_b = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("stop_b"), master), epower.stop_b );        //B套停止
        epower.start_c = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("start_c"), master),epower.start_c);        //C套启动
        epower.stop_c = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("stop_c"),  master), epower.stop_c );        //C套停止
        epower.start_d = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("start_d"),  master), epower.start_d);        //D套启动
        epower.stop_d = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("stop_d"), master), epower.stop_d );        //D套停止
        epower.abconn_start = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("abconn_start"),  master), epower.abconn_start);        //AB套并联运行启动
        epower.abconn_stop = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("abconn_stop"), master), epower.abconn_stop);            //AB套并联运行停止
        epower.cdconn_start = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("cdconn_start"),  master), epower.cdconn_start);        //CD套并联运行启动
        epower.cdconn_stop = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("cdconn_stop"),  master), epower.cdconn_stop);            //CD套并联运行停止
        epower.allconn_start = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("allconn_start"), master), epower.allconn_start);        //四套并联运行启动
        epower.allconn_stop = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("allconn_stop"), master), epower.allconn_stop);        //四套并联运行停止
        epower.abconn_flag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("abconn_flag"),  master), epower.abconn_flag);            //AB并串联标志位
        epower.cdconn_flag = (int)master.checkNullData(MyModbusUtils.readCoilStatus(Electric_4KW_ModbusAddress.getAllAdd("cdconn_flag"), master), epower.cdconn_flag);            //CD并串联标志位
        /*epower.abconn_volset = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAllAdd("abconn_volset"), DataType.TWO_BYTE_INT_SIGNED,   master), epower.abconn_volset);        //AB并联电压给定
        epower.abconn_currset = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAllAdd("abconn_currset"),DataType.TWO_BYTE_INT_SIGNED, master), epower.abconn_currset);    //AB并联电流给定
        epower.cdconn_volset = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAllAdd("cdconn_volset"), DataType.TWO_BYTE_INT_SIGNED,  master), epower.cdconn_volset);        //CD并联电压给定
        epower.cdconn_currset = (int)master.checkNullData(MyModbusUtils.readHoldingRegister(Electric_4KW_ModbusAddress.getAllAdd("cdconn_currset"), DataType.TWO_BYTE_INT_SIGNED,  master), epower.cdconn_currset);        //CD并联电流给定
       */
    }
}
ElectricalSystem_MonitorServer_4KW/src/com/electrical/FourKW/Electrical_Task_SQL.java
@@ -1,304 +1,420 @@
package com.electrical.FourKW;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class Electrical_Task_SQL {
    /**
     * 查询所有的设备记录
     * @param pool
     * @param electric
     */
    public static void queryAllElectric(MysqlConnPool pool,List<Electric_inf> electrics) {
        String sql_str = " select * from " + Sql_Mysql.Tb_Electric_Inf + " order by electric_id;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            Electric_inf elect = null;
            while(res.next()) {
                elect = new Electric_inf(res.getInt("electric_id"));
                elect.setElectric_name(res.getString("electric_name"));
                elect.setElectric_type(res.getInt("electric_type"));
                elect.setElectric_ip(res.getString("electric_ip"));
                electrics.add(elect);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
    /**
     * 初始化数据库表
     * @param pool
     */
    public static void init(MysqlConnPool pool) {
        createDB_ElectricSystem(pool);
        createTb_Electric_inf(pool);
        createTb_Electric_Switch(pool);
        createTb_Electric_State(pool);
        createTb_Electric_State(pool);
        createTb_Electric_Rt(pool);
        createTb_Electric_Power(pool);
        createTb_Electric_Control_Single(pool);
    }
    /**
     * 创建4KW电源数据库
     * @param pool
     */
    public static void createDB_ElectricSystem(MysqlConnPool pool) {
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + Sql_Mysql.DB_ElectricSystem);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源信息表
     * @param pool
     */
    public static void createTb_Electric_inf(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_Electric_Inf+" (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  electric_name varchar(255) NOT NULL DEFAULT '' COMMENT '电源名称'," +
                "  electric_type int(11) NOT NULL DEFAULT '0' COMMENT '电源类型(备用)'," +
                "  electric_ip varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT '电源设备ip(重要)'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  KEY electric_id_key (electric_id)" +
                ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源总开关状态表
     * @param pool
     */
    public static void createTb_Electric_Switch(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Switch + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  km1_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM1合闸指令'," +
                "  km1_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM1分闸指令'," +
                "  km2_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM2合闸指令'," +
                "  km2_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM2分闸指令'," +
                "  km3_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM3合闸指令'," +
                "  km3_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM3分闸指令'," +
                "  km4_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM4合闸指令'," +
                "  km4_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM4分闸指令'," +
                "  km1_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM1合闸指令'," +
                "  km1_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM1分闸指令'," +
                "  km2_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM2合闸指令'," +
                "  km2_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM2分闸指令'," +
                "  km3_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM3合闸指令'," +
                "  km3_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM3分闸指令'," +
                "  km4_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM4合闸指令'," +
                "  km4_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM4分闸指令'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源状态表
     * @param pool
     */
    public static void createTb_Electric_State(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_State + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  case_trip_output int(11) NOT NULL DEFAULT '0' COMMENT '机箱跳闸输出'," +
                "  fault_reset_signal int(11) NOT NULL DEFAULT '0' COMMENT '故障复位信号'," +
                "  high_vol_switch_status int(11) NOT NULL DEFAULT '0' COMMENT '高压开关状态'," +
                "  stop_button int(11) NOT NULL DEFAULT '0' COMMENT '急停按钮'," +
                "  main_cabinet_fan_status int(11) NOT NULL DEFAULT '0' COMMENT '主柜风机状态'," +
                "  trans_cabinet_door_lock int(11) NOT NULL DEFAULT '0' COMMENT '变压器柜门连锁'," +
                "  trans_cabinet_overtem_alarm int(11) NOT NULL DEFAULT '0' COMMENT '变压器超温报警'," +
                "  trans_cabinet_overtem_trip int(11) NOT NULL DEFAULT '0' COMMENT '变压器超温跳闸'," +
                "  qs1_state int(11) NOT NULL DEFAULT '0' COMMENT 'QS1״̬'," +
                "  qs2_state int(11) NOT NULL DEFAULT '0' COMMENT 'QS2״̬'," +
                "  switch_cabinet_door_status int(11) NOT NULL DEFAULT '0' COMMENT '转换开关柜门状态'," +
                "  alldcvol float NOT NULL DEFAULT '0' COMMENT '总直流电压'," +
                "  alldccurr float NOT NULL DEFAULT '0' COMMENT '总直流电流'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  KEY electric_id_key (electric_id)" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源状态表
     * @param pool
     */
    public static void createTb_Electric_Rt(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Rt + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  upsetcurr float NOT NULL DEFAULT '0' COMMENT '上位机设定电流'," +
                "  upsetvol float NOT NULL DEFAULT '0' COMMENT '上位机设定电压'," +
                "  convolcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒压控制'," +
                "  concurrcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒流控制'," +
                "  othermodes int(11) NOT NULL DEFAULT '0' COMMENT '其他模式运行'," +
                "  parallelmodes int(11) NOT NULL DEFAULT '0' COMMENT '并联稳压运行'," +
                "  startposition int(11) NOT NULL DEFAULT '0' COMMENT '启动位'," +
                "  stopposition int(11) NOT NULL DEFAULT '0' COMMENT 'ֹͣλ'," +
                "  resetposition int(11) NOT NULL DEFAULT '0' COMMENT '复位'," +
                "  fanstart int(11) NOT NULL DEFAULT '0' COMMENT '风机启动'," +
                "  fanstop int(11) NOT NULL DEFAULT '0' COMMENT '风机停止'," +
                "  dcvol float NOT NULL DEFAULT '0' COMMENT '直流电压 '," +
                "  dccurr float NOT NULL DEFAULT '0' COMMENT '直流电流'," +
                "  controlangle int(11) NOT NULL DEFAULT '0' COMMENT '控制角'," +
                "  loopflag int(11) NOT NULL DEFAULT '0' COMMENT '开闭环标志位(0开环,1闭环)'," +
                "  remoteflag int(11) NOT NULL DEFAULT '0' COMMENT '就地远程标志位(0远程,1就地)'," +
                "  orderflag int(11) NOT NULL DEFAULT '0' COMMENT '正序逆序标志位(0正序,1逆序)'," +
                "  consvolcurrflag int(11) NOT NULL DEFAULT '0' COMMENT '恒压恒流标志位(0恒压,1恒流)'," +
                "  powerstartflag int(11) NOT NULL DEFAULT '0' COMMENT '电源启动标志位(0停止,1启动) '," +
                "  workmodelflag int(11) NOT NULL DEFAULT '0' COMMENT '工作模式标志位(0其他模式,1并联稳压)'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  KEY electric_id_key (electric_id)" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源控制状态表
     * @param pool
     */
    public static void createTb_Electric_Power(MysqlConnPool pool) {
        String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Power + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  start_a int(11) NOT NULL DEFAULT '0' COMMENT 'A套启动'," +
                "  stop_a int(11) NOT NULL DEFAULT '0' COMMENT 'A套停止'," +
                "  start_b int(11) NOT NULL DEFAULT '0' COMMENT 'B套启动'," +
                "  stop_b int(11) NOT NULL DEFAULT '0' COMMENT 'B套停止'," +
                "  start_c int(11) NOT NULL DEFAULT '0' COMMENT 'C套启动'," +
                "  stop_c int(11) NOT NULL DEFAULT '0' COMMENT 'C套停止'," +
                "  start_d int(11) NOT NULL DEFAULT '0' COMMENT 'D套启动'," +
                "  stop_d int(11) NOT NULL DEFAULT '0' COMMENT 'D套停止'," +
                "  abconn_start int(11) NOT NULL DEFAULT '0' COMMENT 'A套B套并联运行启动'," +
                "  abconn_stop int(11) NOT NULL DEFAULT '0' COMMENT 'A套B套并联运行停止'," +
                "  cdconn_start int(11) NOT NULL DEFAULT '0' COMMENT 'C套D套并联运行启动'," +
                "  cdconn_stop int(11) NOT NULL DEFAULT '0' COMMENT 'C套D套并联运行停止'," +
                "  allconn_start int(11) NOT NULL DEFAULT '0' COMMENT '四套并联运行启动'," +
                "  allconn_stop int(11) NOT NULL DEFAULT '0' COMMENT '四套并联运行停止'," +
                "  abconn_flag int(11) NOT NULL DEFAULT '0' COMMENT 'AB并串联标志位'," +
                "  cdconn_flag int(11) NOT NULL DEFAULT '0' COMMENT 'CD并串联标志位'," +
                "  abconn_volset int(11) NOT NULL DEFAULT '0' COMMENT 'AB并联电压给定'," +
                "  abconn_currset int(11) NOT NULL DEFAULT '0' COMMENT 'AB并联电流给定'," +
                "  cdconn_volset int(11) NOT NULL DEFAULT '0' COMMENT 'CD并联电压给定'," +
                "  cdconn_currset int(11) NOT NULL DEFAULT '0' COMMENT 'CD并联电流给定'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源控制状态表
     * @param pool
     */
    public static void createTb_Electric_Control_Single(MysqlConnPool pool) {
        String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Control_Single + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '电源id'," +
                "  upsetcurr float NOT NULL DEFAULT '0' COMMENT '上位机设定电流'," +
                "  upsetvol float NOT NULL DEFAULT '0' COMMENT '上位机设定电压'," +
                "  convolcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒压控制'," +
                "  concurrcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒流控制'," +
                "  othermodes int(11) NOT NULL DEFAULT '0' COMMENT '其他模式运行'," +
                "  parallelmodes int(11) NOT NULL DEFAULT '0' COMMENT '并联稳压运行'," +
                "  startposition int(11) NOT NULL DEFAULT '0' COMMENT '启动位'," +
                "  stopposition int(11) NOT NULL DEFAULT '0' COMMENT 'ֹͣλ'," +
                "  resetposition int(11) NOT NULL DEFAULT '0' COMMENT '复位'," +
                "  fanstart int(11) NOT NULL DEFAULT '0' COMMENT '风机启动'," +
                "  fanstop int(11) NOT NULL DEFAULT '0' COMMENT '风机停止'," +
                "  dcvol float NOT NULL DEFAULT '0' COMMENT '直流电压'," +
                "  dccurr float NOT NULL DEFAULT '0' COMMENT '直流电流'," +
                "  controlangle float NOT NULL DEFAULT '0' COMMENT '控制角'," +
                "  PRIMARY KEY (num)" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
}
package com.electrical.FourKW;
import java.security.interfaces.RSAKey;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.mysql.jdbc.EscapeTokenizer;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class Electrical_Task_SQL {
    /**
     * 查询所有的设备记录
     * @param pool
     * @param electric
     */
    public static String queryAllElectric(MysqlConnPool pool,List<Electric_inf> electrics) {
        String PLC_ip="";
        String sql_str = " select * from " + Sql_Mysql.Tb_Electric_Inf + " order by electric_id;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            Electric_inf elect = null;
            while(res.next()) {
                elect = new Electric_inf(res.getInt("electric_id"));
                elect.setElectric_name(res.getString("electric_name"));
                elect.setElectric_type(res.getInt("electric_type"));
                elect.setElectric_ip(res.getString("electric_ip"));
                electrics.add(elect);
                 PLC_ip=elect.getElectric_ip();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
        return  PLC_ip;
    }
    /**
     * 初始化数据库表
     * @param pool
     */
    public static void init(MysqlConnPool pool) {
        createDB_ElectricSystem(pool);
        createTb_Electric_inf(pool);
        createTb_Electric_Switch(pool);
        createTb_Electric_State(pool);
        createTb_Electric_State(pool);
        createTb_Electric_Rt(pool);
        createTb_Electric_Power(pool);
        createTb_Electric_Control_Single(pool);
    }
    /**
     * 创建4KW电源数据库
     * @param pool
     */
    public static void createDB_ElectricSystem(MysqlConnPool pool) {
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + Sql_Mysql.DB_ElectricSystem);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源信息表
     * @param pool
     */
    public static void createTb_Electric_inf(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_Electric_Inf+" (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  electric_name varchar(255) NOT NULL DEFAULT '' COMMENT '电源名称'," +
                "  electric_type int(11) NOT NULL DEFAULT '0' COMMENT '电源类型(备用)'," +
                "  electric_ip varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT '电源设备ip(重要)'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  KEY electric_id_key (electric_id)" +
                ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源总开关状态表
     * @param pool
     */
    public static void createTb_Electric_Switch(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Switch + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  PLC_ip varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT 'PLC_ip', "+
                "  km1_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM1合闸指令'," +
                "  km1_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM1分闸指令'," +
                "  km2_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM2合闸指令'," +
                "  km2_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM2分闸指令'," +
                "  km3_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM3合闸指令'," +
                "  km3_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM3分闸指令'," +
                "  km4_switchon_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM4合闸指令'," +
                "  km4_switchoff_one int(11) NOT NULL DEFAULT '0' COMMENT '一号转换开关柜KM4分闸指令'," +
                "  km1_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM1合闸指令'," +
                "  km1_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM1分闸指令'," +
                "  km2_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM2合闸指令'," +
                "  km2_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM2分闸指令'," +
                "  km3_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM3合闸指令'," +
                "  km3_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM3分闸指令'," +
                "  km4_switchon_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM4合闸指令'," +
                "  km4_switchoff_two int(11) NOT NULL DEFAULT '0' COMMENT '二号转换开关柜KM4分闸指令'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num),"+
                "  UNIQUE KEY PLC_ip_key (PLC_ip) USING BTREE " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源状态表
     * @param pool
     */
    public static void createTb_Electric_State(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_State + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  case_trip_output int(11) NOT NULL DEFAULT '0' COMMENT '机箱跳闸输出'," +
                "  fault_reset_signal int(11) NOT NULL DEFAULT '0' COMMENT '故障复位信号'," +
                "  high_vol_switch_status int(11) NOT NULL DEFAULT '0' COMMENT '高压开关状态'," +
                "  stop_button int(11) NOT NULL DEFAULT '0' COMMENT '急停按钮'," +
                "  main_cabinet_fan_status int(11) NOT NULL DEFAULT '0' COMMENT '主柜风机状态'," +
                "  trans_cabinet_door_lock int(11) NOT NULL DEFAULT '0' COMMENT '变压器柜门连锁'," +
                "  trans_cabinet_overtem_alarm int(11) NOT NULL DEFAULT '0' COMMENT '变压器超温报警'," +
                "  trans_cabinet_overtem_trip int(11) NOT NULL DEFAULT '0' COMMENT '变压器超温跳闸'," +
                "  qs1_state int(11) NOT NULL DEFAULT '0' COMMENT 'QS1״̬'," +
                "  qs2_state int(11) NOT NULL DEFAULT '0' COMMENT 'QS2״̬'," +
                "  switch_cabinet_door_status int(11) NOT NULL DEFAULT '0' COMMENT '转换开关柜门状态'," +
                "  alldcvol float NOT NULL DEFAULT '0' COMMENT '总直流电压'," +
                "  alldccurr float NOT NULL DEFAULT '0' COMMENT '总直流电流'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY electric_id_key (electric_id) USING BTREE" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源状态表
     * @param pool
     */
    public static void createTb_Electric_Rt(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Rt + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '设备id'," +
                "  upsetcurr float NOT NULL DEFAULT '0' COMMENT '上位机设定电流'," +
                "  upsetvol float NOT NULL DEFAULT '0' COMMENT '上位机设定电压'," +
                "  convolcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒压控制'," +
                "  concurrcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒流控制'," +
                "  othermodes int(11) NOT NULL DEFAULT '0' COMMENT '其他模式运行'," +
                "  parallelmodes int(11) NOT NULL DEFAULT '0' COMMENT '并联稳压运行'," +
                "  startposition int(11) NOT NULL DEFAULT '0' COMMENT '启动位'," +
                "  stopposition int(11) NOT NULL DEFAULT '0' COMMENT 'ֹͣλ'," +
                "  resetposition int(11) NOT NULL DEFAULT '0' COMMENT '复位'," +
                "  fanstart int(11) NOT NULL DEFAULT '0' COMMENT '风机启动'," +
                "  fanstop int(11) NOT NULL DEFAULT '0' COMMENT '风机停止'," +
                "  dcvol float NOT NULL DEFAULT '0' COMMENT '直流电压 '," +
                "  dccurr float NOT NULL DEFAULT '0' COMMENT '直流电流'," +
                "  controlangle int(11) NOT NULL DEFAULT '0' COMMENT '控制角'," +
                "  loopflag int(11) NOT NULL DEFAULT '0' COMMENT '开闭环标志位(0开环,1闭环)'," +
                "  remoteflag int(11) NOT NULL DEFAULT '0' COMMENT '就地远程标志位(0远程,1就地)'," +
                "  orderflag int(11) NOT NULL DEFAULT '0' COMMENT '正序逆序标志位(0正序,1逆序)'," +
                "  consvolcurrflag int(11) NOT NULL DEFAULT '0' COMMENT '恒压恒流标志位(0恒压,1恒流)'," +
                "  powerstartflag int(11) NOT NULL DEFAULT '0' COMMENT '电源启动标志位(0停止,1启动) '," +
                "  workmodelflag int(11) NOT NULL DEFAULT '0' COMMENT '工作模式标志位(0其他模式,1并联稳压)'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY electric_id_key (electric_id) USING BTREE " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建4套电源状态表
     * @param pool
     */
    public static void createTb_Electric_Power(MysqlConnPool pool) {
        String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Power + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  PLC_ip varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT 'PLC_ip', "+
                "  start_a int(11) NOT NULL DEFAULT '0' COMMENT 'A套启动'," +
                "  stop_a int(11) NOT NULL DEFAULT '0' COMMENT 'A套停止'," +
                "  start_b int(11) NOT NULL DEFAULT '0' COMMENT 'B套启动'," +
                "  stop_b int(11) NOT NULL DEFAULT '0' COMMENT 'B套停止'," +
                "  start_c int(11) NOT NULL DEFAULT '0' COMMENT 'C套启动'," +
                "  stop_c int(11) NOT NULL DEFAULT '0' COMMENT 'C套停止'," +
                "  start_d int(11) NOT NULL DEFAULT '0' COMMENT 'D套启动'," +
                "  stop_d int(11) NOT NULL DEFAULT '0' COMMENT 'D套停止'," +
                "  abconn_start int(11) NOT NULL DEFAULT '0' COMMENT 'A套B套并联运行启动'," +
                "  abconn_stop int(11) NOT NULL DEFAULT '0' COMMENT 'A套B套并联运行停止'," +
                "  cdconn_start int(11) NOT NULL DEFAULT '0' COMMENT 'C套D套并联运行启动'," +
                "  cdconn_stop int(11) NOT NULL DEFAULT '0' COMMENT 'C套D套并联运行停止'," +
                "  allconn_start int(11) NOT NULL DEFAULT '0' COMMENT '四套并联运行启动'," +
                "  allconn_stop int(11) NOT NULL DEFAULT '0' COMMENT '四套并联运行停止'," +
                "  abconn_flag int(11) NOT NULL DEFAULT '0' COMMENT 'AB并串联标志位'," +
                "  cdconn_flag int(11) NOT NULL DEFAULT '0' COMMENT 'CD并串联标志位'," +
                "  abconn_volset int(11) NOT NULL DEFAULT '0' COMMENT 'AB并联电压给定'," +
                "  abconn_currset int(11) NOT NULL DEFAULT '0' COMMENT 'AB并联电流给定'," +
                "  cdconn_volset int(11) NOT NULL DEFAULT '0' COMMENT 'CD并联电压给定'," +
                "  cdconn_currset int(11) NOT NULL DEFAULT '0' COMMENT 'CD并联电流给定'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY PLC_ip_key (PLC_ip) USING BTREE " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建电源单点控制状态表
     * @param pool
     */
    public static void createTb_Electric_Control_Single(MysqlConnPool pool) {
        String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Electric_Control_Single + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric_id int(11) NOT NULL DEFAULT '3001' COMMENT '电源id'," +
                "  upsetcurr float NOT NULL DEFAULT '0' COMMENT '上位机设定电流'," +
                "  upsetvol float NOT NULL DEFAULT '0' COMMENT '上位机设定电压'," +
                "  convolcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒压控制'," +
                "  concurrcontrol int(11) NOT NULL DEFAULT '0' COMMENT '恒流控制'," +
                "  othermodes int(11) NOT NULL DEFAULT '0' COMMENT '其他模式运行'," +
                "  parallelmodes int(11) NOT NULL DEFAULT '0' COMMENT '并联稳压运行'," +
                "  startposition int(11) NOT NULL DEFAULT '0' COMMENT '启动位'," +
                "  stopposition int(11) NOT NULL DEFAULT '0' COMMENT 'ֹͣλ'," +
                "  resetposition int(11) NOT NULL DEFAULT '0' COMMENT '复位'," +
                "  fanstart int(11) NOT NULL DEFAULT '0' COMMENT '风机启动'," +
                "  fanstop int(11) NOT NULL DEFAULT '0' COMMENT '风机停止'," +
                "  dcvol float NOT NULL DEFAULT '0' COMMENT '直流电压'," +
                "  dccurr float NOT NULL DEFAULT '0' COMMENT '直流电流'," +
                "  controlangle float NOT NULL DEFAULT '0' COMMENT '控制角'," +
                "  PRIMARY KEY (num),"+
                "  UNIQUE KEY electric_id_key (electric_id) USING BTREE " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
   //插入或更新电源单点控制表
    public static void replace_Electric_Control_Single(MysqlConnPool pool,Electric_Control_Single ecs) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_Electric_Control_Single +"(electric_id,upsetcurr,upsetvol,convolcontrol,concurrcontrol,othermodes,parallelmodes,startposition,stopposition,resetposition,fanstart,fanstop,dcvol,dccurr,controlangle)  "
                + "  values("+ecs.electric_id+","+ecs.upsetcurr+","+ecs.upsetvol+","+ecs.convolcontrol+","+ecs.concurrcontrol+","+ecs.othermodes+","+ecs.parallelmodes+","+ecs.startposition+","+ecs.stopposition+","+ecs.resetposition+","+ecs.fanstart+","+ecs.fanstop+","+ecs.dcvol+","+ecs.dccurr+","+ecs.controlangle+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新电源实时信息表
    public static void replace_Electric_Rt(MysqlConnPool pool,Electric_Rt ert) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_Electric_Rt  +"(electric_id,upsetcurr,upsetvol,convolcontrol,concurrcontrol,othermodes,parallelmodes,startposition,stopposition,resetposition,fanstart,fanstop,dcvol,dccurr,controlangle,loopflag,remoteflag,orderflag,consvolcurrflag,powerstartflag,workmodelflag)  "
                + "  values("+ert.electric_id+","+ert.upsetcurr+","+ert.upsetvol+","+ert.convolcontrol+","+ert.concurrcontrol+","+ert.othermodes+","+ert.parallelmodes+","+ert.startposition+","+ert.stopposition+","+ert.resetposition+","+ert.fanstart+","+ert.fanstop+","+ert.dcvol+","+ert.dccurr+","+ert.controlangle+","+ert.loopflag+","+ert.remoteflag+","+ert.orderflag+","+ert.consvolcurrflag+","+ert.powerstartflag+","+ert.workmodelflag+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新电源实时状态表
    public static void replace_Electric_State(MysqlConnPool pool,Electric_State estate) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_Electric_State  +"(electric_id,case_trip_output,fault_reset_signal,high_vol_switch_status,stop_button,main_cabinet_fan_status,trans_cabinet_door_lock,trans_cabinet_overtem_alarm,trans_cabinet_overtem_trip,qs1_state,qs2_state,switch_cabinet_door_status,alldcvol,alldccurr)  "
                + "  values("+estate.electric_id+","+estate.case_trip_output+","+estate.fault_reset_signal+","+estate.high_vol_switch_status+","+estate.stop_button+","+estate.main_cabinet_fan_status+","+estate.trans_cabinet_door_lock+","+estate.trans_cabinet_overtem_alarm+","+estate.trans_cabinet_overtem_trip+","+estate.qs1_state+","+estate.qs2_state+","+estate.switch_cabinet_door_status+","+estate.alldcvol+","+estate.alldccurr+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新电源总开关状态表
    public static void replace_Electric_Switch(MysqlConnPool pool,Electric_Switch eswitch) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_Electric_Switch  +"(PLC_ip,km1_switchon_one,km1_switchoff_one,km2_switchon_one,km2_switchoff_one,km3_switchon_one,km3_switchoff_one,km4_switchon_one,km4_switchoff_one,km1_switchon_two,km1_switchoff_two,km2_switchon_two,km2_switchoff_two,km3_switchon_two,km3_switchoff_two,km4_switchon_two,km4_switchoff_two)  "
                + "  values('"+eswitch.PLC_ip+"',"+eswitch.km1_switchon_one+","+eswitch.km1_switchoff_one+","+eswitch.km2_switchon_one+","+eswitch.km2_switchoff_one+","+eswitch.km3_switchon_one+","+eswitch.km3_switchoff_one+","+eswitch.km4_switchon_one+","+eswitch.km4_switchoff_one+","+eswitch.km1_switchon_two+","+eswitch.km1_switchoff_two+","+eswitch.km2_switchon_two+","+eswitch.km2_switchoff_two+","+eswitch.km3_switchon_two+","+eswitch.km3_switchoff_two+","+eswitch.km4_switchon_two+","+eswitch.km4_switchoff_two+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新4套电源状态表
    public static void replace_Electric_Power(MysqlConnPool pool,Electric_Power epower) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_Electric_Power  +"(PLC_ip,start_a,stop_a,start_b,stop_b,start_c,stop_c,start_d,stop_d,abconn_start,abconn_stop,cdconn_start,cdconn_stop,allconn_start,allconn_stop,abconn_flag,cdconn_flag,abconn_volset,abconn_currset,cdconn_volset,cdconn_currset)  "
                + "  values('"+epower.PLC_ip+"',"+epower.start_a+","+epower.stop_a+","+epower.start_b+","+epower.stop_b+","+epower.start_c+","+epower.stop_c+","+epower.start_d+","+epower.stop_d+","+epower.abconn_start+","+epower.abconn_stop+","+epower.cdconn_start+","+epower.cdconn_stop
                +","+epower.allconn_start+","+epower.allconn_stop+","+epower.abconn_flag+","+epower.cdconn_flag+","+epower.abconn_volset+","+epower.abconn_currset+","+epower.cdconn_volset+","+epower.abconn_currset+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //查询电源单点控制表中数据
    public static void queryElectric_Control_Single(MysqlConnPool conn_pool,Electric_Control_Single ecs) {
        String sql_str = " select * from " + Sql_Mysql.Tb_Electric_Control_Single+" Where electric_id = " +ecs.getElectric_id();
        ResultSet res = null;
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        try {
            res = sql.sqlMysqlQuery(sql_str);
            if(res.next()) {
                ecs.setElectric_id(res.getInt("electric_id"));
                ecs.setUpsetcurr(res.getFloat("upsetcurr"));
                ecs.setUpsetvol(res.getFloat("upsetvol"));
                ecs.setConvolcontrol(res.getInt("convolcontrol"));
                ecs.setConcurrcontrol(res.getInt("concurrcontrol"));
                ecs.setOthermodes(res.getInt("othermodes"));
                ecs.setParallelmodes(res.getInt("parallelmodes"));
                ecs.setStartposition(res.getInt("startposition"));
                ecs.setStopposition(res.getInt("stopposition"));
                ecs.setResetposition(res.getInt("resetposition"));
                ecs.setFanstart(res.getInt("fanstart"));
                ecs.setFanstop(res.getInt("fanstop"));
                ecs.setDcvol(res.getFloat("dcvol"));
                ecs.setDccurr(res.getFloat("dccurr"));
                ecs.setControlangle(res.getFloat("controlangle"));
                System.out.println(ecs.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
}
ElectricalSystem_MonitorServer_4KW/src/main/main_ElectricalSystem_MonitorServer_4KW.java
@@ -1,101 +1,113 @@
package main;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import com.base.Com;
import com.config.AppConfig;
import com.config.AppParam;
import com.electrical.FourKW.Electric_inf;
import com.electrical.FourKW.Electrical_Task_SQL;
import com.sql.MysqlConnPool;
public class main_ElectricalSystem_MonitorServer_4KW {
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.102;
    public final static String m_Version = "Welcome To Use main_ElectricalSystem_MonitorServer_4KW V"
                                            + m_VersionNum ;
    /**************************************************************************/
    /**************************************************************************/
    public static final int MysqlServer_Port = 3360;
    private static AppConfig m_AppConfig;
    private static MysqlConnPool GB_MysqlConnPool;
    public static AppParam GB_App_Param;
     /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        String ver = m_Version;
        System.out.println("main_MonitorServer_Motor Server Started At DateTime: " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        System.out.println("SQLserver IP:" + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        //初始化连接池中的各种参数信息
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port,100);
        //创建tb_app_param表,并且设置表中的数据
        GB_App_Param = new AppParam(GB_MysqlConnPool);
        checkingMySQLServerStart();                //检测数据库服务是否启动
        /*********************************************************************************/
        /*********************************************************************************/
        //初始化数据库
        Electrical_Task_SQL.init(GB_MysqlConnPool);
        while(true) {
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /*********************************************************************************/
    }
    public static void checkingMySQLServerStart(){
        int MysqlServer_Port = 3360;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port, 5);
        while(true){
            Connection conn = null;
            try {
                System.out.println(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    System.out.println("检测数据库连接成功");
                    break;
                }
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                System.out.println(" MySQL_FBSDEV not Start ... ");
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
package main;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.config.AppConfig;
import com.config.AppParam;
import com.electrical.FourKW.Electric_4Kw_ServerSocket_Thread;
import com.electrical.FourKW.Electric_All_ServerSocket_Thread;
import com.electrical.FourKW.Electric_inf;
import com.electrical.FourKW.Electrical_Task_SQL;
import com.sql.MysqlConnPool;
public class main_ElectricalSystem_MonitorServer_4KW {
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.102;
    public final static String m_Version = "Welcome To Use main_ElectricalSystem_MonitorServer_4KW V"
                                            + m_VersionNum ;
    /**************************************************************************/
    /**************************************************************************/
    public static final int MysqlServer_Port = 3360;
    private static AppConfig m_AppConfig;
    private static MysqlConnPool GB_MysqlConnPool;
    public static AppParam GB_App_Param;
    public static List<Electric_inf> einfs=new ArrayList();
    public static String PLC_ip="";
     /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        String ver = m_Version;
        System.out.println("main_MonitorServer_Motor Server Started At DateTime: " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        System.out.println("SQLserver IP:" + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        //初始化连接池中的各种参数信息
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port,100);
        //创建tb_app_param表,并且设置表中的数据
        GB_App_Param = new AppParam(GB_MysqlConnPool);
        checkingMySQLServerStart();                //检测数据库服务是否启动
        /*********************************************************************************/
        /*********************************************************************************/
        //初始化数据库
        Electrical_Task_SQL.init(GB_MysqlConnPool);
        //查询所有的电源系统
        PLC_ip=Electrical_Task_SQL.queryAllElectric(GB_MysqlConnPool,einfs);
        //读取每套电源系统的信息
        Electric_4Kw_ServerSocket_Thread server = new Electric_4Kw_ServerSocket_Thread(GB_MysqlConnPool,einfs);
        new Thread(server).start();
        //System.out.println("PLC_ip:"+PLC_ip);
        //读取4套电源总信息和开关信息//读取每套电源系统的信息
        Electric_All_ServerSocket_Thread serverALL = new Electric_All_ServerSocket_Thread(GB_MysqlConnPool,PLC_ip);
        new Thread(serverALL).start();
        /*while(true) {
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }*/
        /*********************************************************************************/
    }
    public static void checkingMySQLServerStart(){
        int MysqlServer_Port = 3360;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port, 5);
        while(true){
            Connection conn = null;
            try {
                System.out.println(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    System.out.println("检测数据库连接成功");
                    break;
                }
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                System.out.println(" MySQL_FBSDEV not Start ... ");
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}