whyclj
2020-06-18 6f1b67b93229e9ecd387cb1b53dafc4782d1b8fe
修复离线养护计划
14个文件已修改
2764 ■■■■ 已修改文件
bin/.gitignore 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$1.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$2.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$3.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientAssociation.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/org/openmuc/openiec61850/ClientSap.class 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dec/fbs9100/BTS61850_OffLineYHPlan.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dec/fbs9100/BTS_61850_SocketClient.java 2699 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dec/fbs9100/FBS9100_SysState.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dec/fbs9100/FBS9100_Task_Thread_SQL.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/version_inf/version_inf.txt 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/org/openmuc/openiec61850/ClientAssociation.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/org/openmuc/openiec61850/ClientSap.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/.gitignore
@@ -1,11 +1,2 @@
/README.md
/c3p0.properties
/config.xml
/hs_err_pid3622.log
/lastconnection.properties
/lib/
/com/
/mchange-commons.properties
/mchange-log.properties
/org/
/.settings/
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$1.class
Binary files differ
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$2.class
Binary files differ
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver$3.class
Binary files differ
bin/org/openmuc/openiec61850/ClientAssociation$ClientReceiver.class
Binary files differ
bin/org/openmuc/openiec61850/ClientAssociation.class
Binary files differ
bin/org/openmuc/openiec61850/ClientSap.class
Binary files differ
src/com/dec/fbs9100/BTS61850_OffLineYHPlan.java
@@ -2,6 +2,8 @@
import java.util.Date;
import com.base.Com;
/**
 *     离线养护计划参数
 * @author LiJun
@@ -41,7 +43,7 @@
    @Override
    public String toString() {
        return " BTS61850_OffLineYHPlan [dev_id=" + dev_id + ", OffLineYH_Cycle=" + OffLineYH_Cycle
                + ", OffLineYHstarttime=" + OffLineYHstarttime + ", OffLineYHTimes=" + OffLineYHTimes
                + ", OffLineYHstarttime=" + Com.getDateTimeFormat(OffLineYHstarttime, Com.DTF_YMDhms) + ", OffLineYHTimes=" + OffLineYHTimes
                + ", OffLineYHOnceCycle=" + OffLineYHOnceCycle + ", note=" + note 
                + ", successCount = " + successCount + "]";
    }
src/com/dec/fbs9100/BTS_61850_SocketClient.java
@@ -1,5 +1,6 @@
/********************************* head of file SocketClient.java ***********************************/
package com.dec.fbs9100;
import java.io.IOException;
import java.net.InetAddress;
import java.text.DecimalFormat;
@@ -35,9 +36,9 @@
import com.battdata_rt.BattStatData;
import com.dec.fbs9100.FBS9100_TestTime;
import com.dec.fbs9100.BTS61850_ResCapData;
/****************************************************************************************************/
public class BTS_61850_SocketClient extends Thread
{
public class BTS_61850_SocketClient extends Thread {
    private FBS9100_VCData m_FBS_VCData = null;
    private FBS9100_ParamDischarge m_FBS_DiscParam = null;
    private FBS9100_ParamDischarge m_FBS_DiscParamFromDev = null;
@@ -55,324 +56,337 @@
    private int DevReadCount = 0;
    private static final String TAG = "SocketClient_Thread";
    private byte test_type;
    private int  CapType_Rest = 0;            //当查询剩余容量时传递
    private int  CapType_Real = 1;            //当查询实际容量时传递
    private double MaxMonomerVol = 0;        //:最大电池电压
    private double MonomerVol = 0;            //:当前电池组的最低单体电压
    private int CapType_Rest = 0; // 当查询剩余容量时传递
    private int CapType_Real = 1; // 当查询实际容量时传递
    private double MaxMonomerVol = 0; // :最大电池电压
    private double MonomerVol = 0; // :当前电池组的最低单体电压
    private int beforeWorkState = 0;
    float MonStdCap = 0 ;
    float MonVolStd = 0 ;
    float MonStdCap = 0;
    float MonVolStd = 0;
    float tmp = 0;
    Date logData = new Date();
    private int numberDevState = 0;
    String FBSDeviceName = null;
    String FBSDeviceIp = null;
    private ArrayList<BattData_RT> Rtdata;
    private List<BTS61850_EventRecord> events;                            //事件记录表
    private List<BTS61850_EventRecord> events; // 事件记录表
    /*********************************************************************************************/
    /********************** IEC61850 partical ****************************************************/
    /**********************
     * IEC61850 partical
     ****************************************************/
    private volatile ClientAssociation m_Association;
    private ServerModel m_ServerModel;
    /*********************************************************************************************/
    private ServerModel m_ServerModel;
    /*********************************************************************************************/
    public BTS_61850_SocketClient(MysqlConnPool m_cp, FBS9100_StatAndParam stat_param, BattData_RT_Array AL_RTdata)
    {
    /*********************************************************************************************/
    public BTS_61850_SocketClient(MysqlConnPool m_cp, FBS9100_StatAndParam stat_param, BattData_RT_Array AL_RTdata) {
        test_type = 1;
        m_ConnPool = m_cp;
        m_StatAndParam = stat_param;
        m_FBS_VCData = m_StatAndParam.m_FBS_VCData;
        m_FBS_DiscParam = m_StatAndParam.m_FBS_DiscParam;
        m_FBS_DiscParamFromDev = m_StatAndParam.m_FBS_DiscParamFromDev;
        fbs9100_jhpowerState =  m_StatAndParam.fbs9100_jhpowerState;
        fbs9100_jhpowerState = m_StatAndParam.fbs9100_jhpowerState;
        cl_param = stat_param.clParam;
        m_FBS_SysParam = stat_param.m_FBS_SysParam;
        fod_state = stat_param.fbs9100s_fod_state;
        mDevIp = m_StatAndParam.dev_ipaddr;
        m_FBSDevId = m_StatAndParam.dev_id;
        events = new ArrayList<BTS61850_EventRecord>();
        //Rtdata = rtdata ;
        //rtdata.toArray();
        //System.out.println(rtdata);
        // Rtdata = rtdata ;
        // rtdata.toArray();
        // System.out.println(rtdata);
        int group_max = FBS9100_ComBase.BattGroupCountMax;
        for(int n=0; n<group_max; n++) {
            m_RTData[n] = null;          //battinf
        }
        for(int n=0; n<AL_RTdata.getItemCount(); n++) {
            if(AL_RTdata.getItem(n).FBSDeviceId == m_FBSDevId) {
                m_RTData[AL_RTdata.getItem(n).GroupIndexInFBSDevice%group_max] = AL_RTdata.getItem(n);
                m_BattMonCount += AL_RTdata.getItem(n).MonCount;
                MonStdCap = AL_RTdata.getItem(n).MonStdCap;
                MonVolStd = AL_RTdata.getItem(n).MonStdVol;
                FBSDeviceName = AL_RTdata.getItem(n).FBSDeviceName;
                FBSDeviceIp = AL_RTdata.getItem(n).FBSDeviceIp;
            }
        }
        if(m_BattMonCount > (FBS9100_ComBase.MonomerCountMax-120)) {
            m_BattMonCount = (FBS9100_ComBase.MonomerCountMax-120);
        }
    }
        for (int n = 0; n < group_max; n++) {
            m_RTData[n] = null; // battinf
        }
        for (int n = 0; n < AL_RTdata.getItemCount(); n++) {
            if (AL_RTdata.getItem(n).FBSDeviceId == m_FBSDevId) {
                m_RTData[AL_RTdata.getItem(n).GroupIndexInFBSDevice % group_max] = AL_RTdata.getItem(n);
                m_BattMonCount += AL_RTdata.getItem(n).MonCount;
                MonStdCap = AL_RTdata.getItem(n).MonStdCap;
                MonVolStd = AL_RTdata.getItem(n).MonStdVol;
                FBSDeviceName = AL_RTdata.getItem(n).FBSDeviceName;
                FBSDeviceIp = AL_RTdata.getItem(n).FBSDeviceIp;
            }
        }
        if (m_BattMonCount > (FBS9100_ComBase.MonomerCountMax - 120)) {
            m_BattMonCount = (FBS9100_ComBase.MonomerCountMax - 120);
        }
    }
    /*********************************************************************************************/
    public void run()
    {
    public void run() {
        this.setName(TAG);
        System.out.println(this.getName() + " - BTS_IEC61850_ClientThread Started ...");
        while(true)
        {
            //FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
            try {
        while (true) {
            // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                //System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
            try {
                // System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                ClientSap clientSap = new ClientSap();
                m_Association = clientSap.associate(InetAddress.getByName(mDevIp), 102, null, null);
            } catch (IOException e) {
                System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client Unable to connect to remote host.");
                continue;
            }
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client successfully connected to ied server"+FBSDeviceIp);
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client retrieving model...");
                ClientSap clientSap = new ClientSap();
                m_Association = clientSap.associate(InetAddress.getByName(mDevIp), 102, null, null);
            } catch (IOException e) {
                System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
                        + " - BTS_IEC61850_Client Unable to connect to remote host.");
                continue;
            }
            try {
                m_ServerModel = m_Association.retrieveModel();
            } catch (ServiceError | IOException e) {
                System.out.println("Service error: " + e.getMessage());
                continue;
            }
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client successfully read model");
            m_FBS_VCData.m_SysState.resetErrCommCount();
            FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,m_StatAndParam.clParam, m_StatAndParam);
            FBS9100_Task_Thread_SQL.queryBTS61850OffLineyhPlanOnRam(m_ConnPool,m_StatAndParam);
            while(true) {
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
                    + " - BTS_IEC61850_Client successfully connected to ied server" + FBSDeviceIp);
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
                    + " - BTS_IEC61850_Client retrieving model...");
            try {
                m_ServerModel = m_Association.retrieveModel();
            } catch (ServiceError | IOException e) {
                System.out.println("**********************************");
                System.out.println("Service error: " + e.getMessage());
                System.out.println("**********************************");
                continue;
            }
            System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
                    + " - BTS_IEC61850_Client successfully read model");
            m_FBS_VCData.m_SysState.resetErrCommCount();
            FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool, m_StatAndParam.clParam, m_StatAndParam);
            FBS9100_Task_Thread_SQL.queryBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam);
            while (true) {
                try {
                    //FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
                    if(m_StatAndParam != null) {
                        FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam);                    //查询放电参数表
                        FBS9100_Task_Thread_SQL.queryFbsCL9100SetParamBydev_id(m_ConnPool, m_StatAndParam);                    //查询离线养护参数
                        FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id(m_ConnPool, m_StatAndParam);                     //查询系统参数
                    // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
                    if (m_StatAndParam != null) {
                        FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam); // 查询放电参数表
                        FBS9100_Task_Thread_SQL.queryFbsCL9100SetParamBydev_id(m_ConnPool, m_StatAndParam); // 查询离线养护参数
                        FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id(m_ConnPool, m_StatAndParam); // 查询系统参数
                    }
                    if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) {
                        if(FBS9100_ComBase.CMD_SetDischargeParm == m_StatAndParam.m_FBS_DiscParam.op_cmd) {
                            //System.out.println(m_StatAndParam);
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetDischargeParm)) {
                    if (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) {
                        if (FBS9100_ComBase.CMD_SetDischargeParm == m_StatAndParam.m_FBS_DiscParam.op_cmd) {
                            // System.out.println(m_StatAndParam);
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetDischargeParm)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetDischargeParmAck;
                            }
                        } else if( FBS9100_ComBase.CMD_Start == m_FBS_DiscParam.op_cmd ) {
                        } else if (FBS9100_ComBase.CMD_Start == m_FBS_DiscParam.op_cmd) {
                            int cmd = m_FBS_DiscParam.test_cmd;
                            if(true == BTS_IEC61850_SocketComm(cmd)) {
                            if (true == BTS_IEC61850_SocketComm(cmd)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StartAck;
                            }else {
                                if(cmd == FBS9100_ComBase.CMD_StartDischarge) {
                                    int errcode = (int) (readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX));
                                    System.out.println("设备"+m_StatAndParam.dev_id+":启动核容测试失败;errcode:" + errcode+" at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                                }
                            }
                        } else if(FBS9100_ComBase.CMD_Stop == m_FBS_DiscParam.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop)) {
                        } else if (FBS9100_ComBase.CMD_Stop == m_FBS_DiscParam.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StopAck;
                            }
                        } else if(FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_DiscParam.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetDischargeParm)) {
                        } else if (FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_DiscParam.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetDischargeParm)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck;
                                FBS9100_Task_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam);
                            }
                        }else if(FBS9100_ComBase.CMD_SetIp == m_FBS_DiscParam.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIp)) {
                        } else if (FBS9100_ComBase.CMD_SetIp == m_FBS_DiscParam.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIp)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetIpAck;
                            }
                        }else if(FBS9100_ComBase.CMD_SetIpNow == m_FBS_DiscParam.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIpNow)) {
                        } else if (FBS9100_ComBase.CMD_SetIpNow == m_FBS_DiscParam.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIpNow)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetIpAck;
                            }
                        }else if(FBS9100_ComBase.CMD_GetOffLineYHParam == m_FBS_DiscParam.op_cmd) {
                            //读取离线养护参数
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetOffLineYHParam)) {
                        } else if (FBS9100_ComBase.CMD_GetOffLineYHParam == m_FBS_DiscParam.op_cmd) {
                            // 读取离线养护参数
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetOffLineYHParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetOffLineYHParam_ACK;
                                FBS9100_Task_Thread_SQL.updateFbs9100SetParamOffLineYHParamBydev_id(m_ConnPool, m_StatAndParam);
                                //更新离线养护参数
                                FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool,m_StatAndParam);
                                FBS9100_Task_Thread_SQL.updateFbs9100SetParamOffLineYHParamBydev_id(m_ConnPool,
                                        m_StatAndParam);
                                // 更新离线养护参数
                                FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam);
                                System.out.println("读取离线养护参数成功");
                            }
                        }else if(FBS9100_ComBase.CMD_SetOffLineYHParam == m_FBS_DiscParam.op_cmd) {
                            //设置离线养护参数
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetOffLineYHParam)) {
                                //获取当前设置的离线养护计划任务的参数
                            }
                        } else if (FBS9100_ComBase.CMD_SetOffLineYHParam == m_FBS_DiscParam.op_cmd) {
                            // 设置离线养护参数
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetOffLineYHParam)) {
                                // 获取当前设置的离线养护计划任务的参数
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetOffLineYHParam_ACK;
                                m_StatAndParam.bts61850_OffLineYHPlan.copyOffLineYHData(m_FBS_DiscParam);
                                m_StatAndParam.bts61850_OffLineYHPlan.successCount = 0;                //重置成功次数
                                FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool,m_StatAndParam);
                            }
                        }else if(FBS9100_ComBase.CMD_StartOffLineYH == m_FBS_DiscParam.op_cmd) {
                            //启动离线养护
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StartOffLineYH)) {
                                m_StatAndParam.bts61850_OffLineYHPlan.successCount = 0; // 重置成功次数
                                FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam);
                            }
                        } else if (FBS9100_ComBase.CMD_StartOffLineYH == m_FBS_DiscParam.op_cmd) {
                            // 启动离线养护
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StartOffLineYH)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StartOffLineYH_ACK;
                            }
                        }else if(FBS9100_ComBase.CMD_StopOffLineYH == m_FBS_DiscParam.op_cmd) {
                            //停止离线养护
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StopOffLineYH)) {
                            }
                        } else if (FBS9100_ComBase.CMD_StopOffLineYH == m_FBS_DiscParam.op_cmd) {
                            // 停止离线养护
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StopOffLineYH)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StopOffLineYH_ACK;
                            }
                        }else if(FBS9100_ComBase.CMD_ResetSystem == m_FBS_DiscParam.op_cmd) {
                            //重启系统
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ResetSystem)) {
                        } else if (FBS9100_ComBase.CMD_ResetSystem == m_FBS_DiscParam.op_cmd) {
                            // 重启系统
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ResetSystem)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ResetSystemAck;
                            }
                        }
                        FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
                    }
                    if(FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) {
                        if(FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_SysParam.op_cmd) {
                            //获取系统参数
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetSYSSetParam)) {
                    if (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) {
                        if (FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_SysParam.op_cmd) {
                            // 获取系统参数
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetSYSSetParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetSYSSetParamAck;
                                FBS9100_Task_Thread_SQL.updateFbs9100SysParamParamBydev_id(m_ConnPool, m_StatAndParam);
                            }
                        }else if(FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_SysParam.op_cmd) {
                            //设置系统参数
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetSYSSetParam)) {
                        } else if (FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_SysParam.op_cmd) {
                            // 设置系统参数
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetSYSSetParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetSYSSetParamAck;
                            }
                        }else if(FBS9100_ComBase.CMD_ClearSysAlarm == m_FBS_SysParam.op_cmd) {
                            //清除告警
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ClearSysAlarm)) {
                        } else if (FBS9100_ComBase.CMD_ClearSysAlarm == m_FBS_SysParam.op_cmd) {
                            // 清除告警
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ClearSysAlarm)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ClearSysAlarm_ACK;
                            }
                        }
                        FBS9100_Task_Thread_SQL.updateFbs9100SysParamCmdBydev_id(m_ConnPool, m_StatAndParam);
                    }
                    if(FBS9100_ComBase.CMD_NULL!=cl_param.op_cmd) {
                        if(FBS9100_ComBase.CMD_ReadFodParam == cl_param.op_cmd) {
                            //System.out.println(cl_param.op_cmd);
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ReadFodParam)){
                                FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,m_StatAndParam.clParam, m_StatAndParam);
                    if (FBS9100_ComBase.CMD_NULL != cl_param.op_cmd) {
                        if (FBS9100_ComBase.CMD_ReadFodParam == cl_param.op_cmd) {
                            // System.out.println(cl_param.op_cmd);
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ReadFodParam)) {
                                FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,
                                        m_StatAndParam.clParam, m_StatAndParam);
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ReadFodParamSus;
                                //System.out.println("doing read");
                                // System.out.println("doing read");
                            }
                        }else if(FBS9100_ComBase.CMD_WriteFodParam == cl_param.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_WriteFodParam)){
                        } else if (FBS9100_ComBase.CMD_WriteFodParam == cl_param.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_WriteFodParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_WriteFodParamSus;
                            }
                        }else if(FBS9100_ComBase.CMD_Start_FODCL_test == cl_param.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODCL_test)){
                        } else if (FBS9100_ComBase.CMD_Start_FODCL_test == cl_param.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODCL_test)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Start_FODCL_testSus;
                            }
                        }else if(FBS9100_ComBase.CMD_Stop_FOD_test == cl_param.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop_FOD_test)){
                        } else if (FBS9100_ComBase.CMD_Stop_FOD_test == cl_param.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop_FOD_test)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Stop_FOD_testSus;
                            }
                        }else if(FBS9100_ComBase.CMD_Start_FODYH_test == cl_param.op_cmd) {
                            if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODYH_test)){
                        } else if (FBS9100_ComBase.CMD_Start_FODYH_test == cl_param.op_cmd) {
                            if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODYH_test)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Start_FODYH_testSus;
                            }
                        }
                        FBS9100_Task_Thread_SQL.updateCL9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
                    }
                    //-----------------------------------------------------------------------------------//
                    //-----------------------------------------------------------------------------------//
                    }
                    // -----------------------------------------------------------------------------------//
                    // -----------------------------------------------------------------------------------//
                    sleep(100);
                    //-----------------------------------------------------------------------------------//
                    // -----------------------------------------------------------------------------------//
                    DevReadCount += 1;
                    numberDevState += 1;
                    //-----------------------------------------------------------------------------------//
                    if(0 == (DevReadCount%3)) {
                    // -----------------------------------------------------------------------------------//
                    if (0 == (DevReadCount % 3)) {
                        BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetVIData);
                        //System.out.println(m_StatAndParam);
                        if(m_StatAndParam != null) {
                            //System.err.println(m_StatAndParam);
                        // System.out.println(m_StatAndParam);
                        if (m_StatAndParam != null) {
                            // System.err.println(m_StatAndParam);
                            FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
                            FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODState(m_ConnPool, m_StatAndParam,m_StatAndParam.fbs9100s_fod_state);
                            FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODState(m_ConnPool, m_StatAndParam,
                                    m_StatAndParam.fbs9100s_fod_state);
                            FBS9100_Task_Thread_SQL.insertOrUpdateJhStateTable(m_ConnPool, m_StatAndParam);
                            FBS9100_Task_Thread_SQL.insertBTSEventRecordTable(m_ConnPool,events);                    //记录历史事件和告警
                            FBS9100_Task_Thread_SQL.insertBTSEventRecordTable(m_ConnPool, events); // 记录历史事件和告警
                            events.clear();
                        }
                    }
                    //---------------------------------------------------------------------------------//
                    // ---------------------------------------------------------------------------------//
                    /*
                    if(0 == (DevReadCount%7)) {
                        BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetState, ByteBuffer.allocate(0));
                        if(m_StatAndParam != null) {
                            FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
                        }
                    }
                    */
                    //---------------------------------------------------------------------------------//
                     //离线养护计划监测-------------------------------------------------------------------------------//
                     * if(0 == (DevReadCount%7)) {
                     * BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetState,
                     * ByteBuffer.allocate(0)); if(m_StatAndParam != null) {
                     * FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool,
                     * m_StatAndParam); } }
                     */
                    // ---------------------------------------------------------------------------------//
                    // 离线养护计划监测-------------------------------------------------------------------------------//
                    RunOffLineYHPlan();
                    //---------------------------------------------------------------------------------//
                    if(DevReadCount >= 19) {
                    // ---------------------------------------------------------------------------------//
                    if (DevReadCount >= 19) {
                        DevReadCount = 0;
                    }
                    if(numberDevState >= 5000) {
                    if (numberDevState >= 5000) {
                        numberDevState = 0;
                    }
                    //---------------------------------------------------------------------------------//
                    // ---------------------------------------------------------------------------------//
                    sleep(100);
                    //---------------------------------------------------------------------------------//
                    if(m_FBS_VCData.m_SysState.ErrCommCount > 20) {
                    // ---------------------------------------------------------------------------------//
                    if (m_FBS_VCData.m_SysState.ErrCommCount > 20) {
                        break;
                    }
                    //---------------------------------------------------------------------------------//
                    // ---------------------------------------------------------------------------------//
                } catch (InterruptedException e) {
                    //e.printStackTrace();
                    try {
                    // e.printStackTrace();
                    try {
                        sleep(2000);
                    } catch (InterruptedException e1) {
                        // TODO Auto-generated catch block
                        //e1.printStackTrace();
                        // e1.printStackTrace();
                    }
                }
            }
        }
    }
    //离线养护计划
                }
            }
        }
    }
    // 离线养护计划
    private void RunOffLineYHPlan() {
        BTS61850_OffLineYHPlan plan = m_StatAndParam.bts61850_OffLineYHPlan;
        long timelong = calculTimelong(plan.OffLineYHstarttime, new Date());
        //执行中的放电计划(包含已经完成的放电放电计划)
        int day_count =(int) timelong / (60*60*24);                //和计划时间开始相差多少天
        int sec_count = (int) timelong%(60*60*24);                //和计划时间相差秒数
        if(plan.OffLineYHTimes > 0 && plan.OffLineYHOnceCycle >0) {
            int circle = day_count / plan.OffLineYHOnceCycle;    //相隔多少周期
            int remain = day_count % plan.OffLineYHOnceCycle;    //和整个周期相隔多少时长
            if(remain == 0 && circle < plan.OffLineYHTimes && sec_count < 120) {
                if(m_FBS_VCData.m_SysState.WorkState == 6) {
                    System.out.println("启动离线养护计划成功"+Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms));
                    //离线养护已启动
                    plan.successCount = circle+1;            //当前成功次数
        long timelong = calculTimelong(plan.OffLineYHstarttime,new Date());
        if (plan.OffLineYHTimes > 0 && plan.OffLineYHOnceCycle > 0 && timelong >= 0) {
            // 执行中的放电计划(包含已经完成的放电放电计划)
            int day_count = (int) timelong / (60 * 60 * 24); // 和计划时间开始相差多少天
            int sec_count = (int) timelong % (60 * 60 * 24); // 和计划时间相差秒数
            int circle = day_count / plan.OffLineYHOnceCycle; // 相隔多少周期
            int remain = day_count % plan.OffLineYHOnceCycle; // 和整个周期相隔多少时长
            if (remain == 0 && circle < plan.OffLineYHTimes && sec_count < 120) {
                if (m_FBS_VCData.m_SysState.WorkState == 6) {
                    // 离线养护已启动
                    plan.successCount = circle + 1; // 当前成功次数
                    return;
                }
                if(plan.successCount == (circle + 1)) {
                if (plan.successCount == (circle + 1)) {
                    return;
                }
                if(m_FBS_VCData.m_SysState.WorkState == 0) {
                    //只有设备在在线监测状态才能启动离线养护任务
                    //启动离线养护
                    BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO13.Oper", true);
                if (m_FBS_VCData.m_SysState.WorkState == 0) {
                    // 只有设备在在线监测状态才能启动离线养护任务
                    // 启动离线养护
                    boolean flag =BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", true);
                    if(flag) {
                        System.out.println("启动离线养护计划成功" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                    }
                }
            }
        }
@@ -381,120 +395,126 @@
    /*********************************************************************************************/
    private boolean BTS_IEC61850_Write_CO_Node(String objectReference, boolean val) {
        boolean res_op = false;
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.CO);
         ModelNode fc_mode = fcModelNode.getChild("ctlVal");
         if(null != fcModelNode) {
            try {
                BasicDataBind<?> data_co = new BooleanDataBind((BdaBoolean)fc_mode);
                JCheckBox tf_co_t = (JCheckBox)data_co.getValueField();
                tf_co_t.setSelected(val);
                   data_co.write();
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(objectReference, Fc.CO);
        ModelNode fc_mode = fcModelNode.getChild("ctlVal");
        if (null != fcModelNode) {
            try {
                BasicDataBind<?> data_co = new BooleanDataBind((BdaBoolean) fc_mode);
                JCheckBox tf_co_t = (JCheckBox) data_co.getValueField();
                tf_co_t.setSelected(val);
                data_co.write();
                m_Association.setDataValues(fcModelNode);
                res_op = true;
            } catch (ServiceError | IOException e) {
                // TODO Auto-generated catch block
                res_op = false;
                e.printStackTrace();
            }
        }
        }
        return res_op;
    }
    /**
     * @throws IOException
     * @throws ServiceError *******************************************************************************************/
     public void writeNodeData(String reference, String fc_str,double disCurr) {
            //String[] a =null;
            //a = new String[2];
             //DataSet ds = serverModel.getDataSet("ZJDYBTSE/ncdGGIO1.Para6.setMag.f");
            FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, Fc.fromString(fc_str));
            if(null == fcModelNode) {
                System.err.println("error, no modenode was found.....");
                return;
            }
            //System.out.println("Sending SetDataValues request...");
            try {
                //System.out.println("model ="+fcModelNode);
                BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fcModelNode);
                JTextField tf_t = (JTextField)data.getValueField();
                String parm = String.valueOf(disCurr);
                tf_t.setText(parm);
                data.write();
                m_Association.setDataValues(fcModelNode);
            } catch (ServiceError e) {
                System.out.println("Service error: " + e.getMessage());
                return;
            } catch (IOException e) {
                System.out.println("Fatal error: " + e.getMessage());
                return;
            }
           // System.out.println("Successfully write data.");
        }
     public void writeNodeDataInt(String reference, String fc_str,long disCurr) {
            //String[] a =null;
            //a = new String[2];
             //DataSet ds = serverModel.getDataSet("ZJDYBTSE/ncdGGIO1.Para6.setMag.f");
         FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, Fc.fromString(fc_str));
            if(null == fcModelNode) {
            System.err.println("error, no modenode was found.....");
            return;
            }
            //System.out.println("Sending SetDataValues request...");
            try {
                //System.out.println("model ="+fcModelNode);
                BasicDataBind<?> data = new Int64DataBind((BdaInt64)fcModelNode);
                JTextField tf_t = (JTextField)data.getValueField();
                String parm = String.valueOf(disCurr);
                tf_t.setText(parm);
                data.write();
                m_Association.setDataValues(fcModelNode);
            } catch (ServiceError e) {
                System.out.println("Service error: " + e.getMessage());
                return;
            } catch (IOException e) {
                System.out.println("Fatal error: " + e.getMessage());
                return;
            }
           // System.out.println("Successfully write data.");
        }
     * @throws IOException
     * @throws ServiceError
     *******************************************************************************************/
    public void writeNodeData(String reference, String fc_str, double disCurr) {
        // String[] a =null;
        // a = new String[2];
        // DataSet ds = serverModel.getDataSet("ZJDYBTSE/ncdGGIO1.Para6.setMag.f");
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str));
        if (null == fcModelNode) {
            System.err.println("error, no modenode was found.....");
            return;
        }
        // System.out.println("Sending SetDataValues request...");
        try {
            // System.out.println("model ="+fcModelNode);
            BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fcModelNode);
            JTextField tf_t = (JTextField) data.getValueField();
            String parm = String.valueOf(disCurr);
            tf_t.setText(parm);
            data.write();
            m_Association.setDataValues(fcModelNode);
        } catch (ServiceError e) {
            System.out.println("Service error: " + e.getMessage());
            return;
        } catch (IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
            return;
        }
        // System.out.println("Successfully write data.");
    }
    public void writeNodeDataInt(String reference, String fc_str, long disCurr) {
        // String[] a =null;
        // a = new String[2];
        // DataSet ds = serverModel.getDataSet("ZJDYBTSE/ncdGGIO1.Para6.setMag.f");
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str));
        if (null == fcModelNode) {
            System.err.println("error, no modenode was found.....");
            return;
        }
        // System.out.println("Sending SetDataValues request...");
        try {
            // System.out.println("model ="+fcModelNode);
            BasicDataBind<?> data = new Int64DataBind((BdaInt64) fcModelNode);
            JTextField tf_t = (JTextField) data.getValueField();
            String parm = String.valueOf(disCurr);
            tf_t.setText(parm);
            data.write();
            m_Association.setDataValues(fcModelNode);
        } catch (ServiceError e) {
            System.out.println("Service error: " + e.getMessage());
            return;
        } catch (IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
            return;
        }
        // System.out.println("Successfully write data.");
    }
    private boolean BTS_IEC61850_Write_Singal_Node(String objectReference) {
        boolean res_op = false;
        //DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName+"/ncdGGIO1");
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.SP);
         //ModelNode fc_mode = fcModelNode.getChild("ctlVal");
         if(null != fcModelNode) {
            try {
               BasicDataBind<?> data_sp = new Float32DataBind((BdaFloat32)fcModelNode);
                JTextField tf_sp_t = (JTextField)data_sp.getValueField();
                tf_sp_t.setText(String.valueOf(m_FBS_DiscParam));
                data_sp.write();
                m_Association.setDataValues(fcModelNode);
                //m_Association.setDataSetValues(tf_sp_t);
        // DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName+"/ncdGGIO1");
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(objectReference, Fc.SP);
        // ModelNode fc_mode = fcModelNode.getChild("ctlVal");
        if (null != fcModelNode) {
            try {
                BasicDataBind<?> data_sp = new Float32DataBind((BdaFloat32) fcModelNode);
                JTextField tf_sp_t = (JTextField) data_sp.getValueField();
                tf_sp_t.setText(String.valueOf(m_FBS_DiscParam));
                data_sp.write();
                m_Association.setDataValues(fcModelNode);
                // m_Association.setDataSetValues(tf_sp_t);
                res_op = true;
            } catch (ServiceError | IOException e) {
                // TODO Auto-generated catch block
                res_op = false;
                e.printStackTrace();
            }
        }
        }
        return res_op;
    }
    private boolean BTS_IEC61850_Write_SetMag_Node(String objectReference, FBS9100_ParamDischarge m_FBS_DiscParam) throws IOException, ServiceError {
    private boolean BTS_IEC61850_Write_SetMag_Node(String objectReference, FBS9100_ParamDischarge m_FBS_DiscParam)
            throws IOException, ServiceError {
        boolean res_op = false;
        DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName+"/ncdGGIO1");
        //FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.SP);
         //ModelNode fc_mode = fcModelNode.getChild("ctlVal");
        DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName + "/ncdGGIO1");
        // FcModelNode fcModelNode =
        // (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.SP);
        // ModelNode fc_mode = fcModelNode.getChild("ctlVal");
//         if(null != ds_pm1) {
//            try {
//                BasicDataBind<?> data_sp = new Float32DataBind((BdaFloat32)fcModelNode);
@@ -510,500 +530,498 @@
//            }
//        }
//         
         DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsParameter");
        int size_cnt = 6;
        for(int n=0; n<size_cnt; n++) {
            FcModelNode fc_mode = (FcModelNode) ds_pm.getMembers().get(n).getChild("setMag").getChild("f");
            BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
            JTextField tf_t = (JTextField)data.getValueField();
            //System.out.println(fc_mode);
            if(0 == n) {
                tf_t.setText(String.valueOf(m_StatAndParam.m_FBS_DiscParam.DisCurr));
                data.write();
            }
            if(1 == n) {
        DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsParameter");
        int size_cnt = 6;
        for (int n = 0; n < size_cnt; n++) {
            FcModelNode fc_mode = (FcModelNode) ds_pm.getMembers().get(n).getChild("setMag").getChild("f");
            BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
            JTextField tf_t = (JTextField) data.getValueField();
            // System.out.println(fc_mode);
            if (0 == n) {
                tf_t.setText(String.valueOf(m_StatAndParam.m_FBS_DiscParam.DisCurr));
                data.write();
            }
            if (1 == n) {
                float dis_hour_t = m_StatAndParam.m_FBS_DiscParam.DisTime;
                dis_hour_t = dis_hour_t / 60;
                tf_t.setText(String.valueOf(dis_hour_t));
                data.write();
            }
            if(2 == n) {
                tf_t.setText(String.valueOf((float)m_StatAndParam.m_FBS_DiscParam.DisCap));
                data.write();
            }
            if(3 == n) {
                tf_t.setText(String.valueOf((float)m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High));
                data.write();
            }
            if(4 == n) {
                tf_t.setText(String.valueOf((float)m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW));
                data.write();
            }
            if(5 == n) {
                tf_t.setText(String.valueOf((float)m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW));
                data.write();
            }
            m_Association.setDataSetValues(ds_pm);
                tf_t.setText(String.valueOf(dis_hour_t));
                data.write();
            }
            if (2 == n) {
                tf_t.setText(String.valueOf((float) m_StatAndParam.m_FBS_DiscParam.DisCap));
                data.write();
            }
            if (3 == n) {
                tf_t.setText(String.valueOf((float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High));
                data.write();
            }
            if (4 == n) {
                tf_t.setText(String.valueOf((float) m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW));
                data.write();
            }
            if (5 == n) {
                tf_t.setText(String.valueOf((float) m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW));
                data.write();
            }
            m_Association.setDataSetValues(ds_pm);
        }
        //m_Association.setDataSetValues(ds_pm);
        // m_Association.setDataSetValues(ds_pm);
        //System.exit(0);
        // System.exit(0);
        return res_op;
    }
    /*********************************************************************************************/
    private float readFloatNodeData(String reference, Fc fc) {
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc);
        if(null == fcModelNode) {
            //System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
            BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fcModelNode);
            JTextField tf_t = (JTextField)data.getValueField();
            res_val = Float.parseFloat(tf_t.getText());
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        m_FBS_VCData.m_SysState.setCommCountInc();
        return res_val;
    }
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc);
        if (null == fcModelNode) {
            // System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
            BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fcModelNode);
            JTextField tf_t = (JTextField) data.getValueField();
            res_val = Float.parseFloat(tf_t.getText());
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        m_FBS_VCData.m_SysState.setCommCountInc();
        return res_val;
    }
    private float readInt64NodeData(String reference, Fc fc) {
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc);
        if(null == fcModelNode) {
            //System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
            BasicDataBind<?> data = new Int64DataBind((BdaInt64)fcModelNode);
            JTextField tf_t = (JTextField)data.getValueField();
            res_val = Float.parseFloat(tf_t.getText());
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        m_FBS_VCData.m_SysState.setCommCountInc();
        return res_val;
    }
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc);
        if (null == fcModelNode) {
            // System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
            BasicDataBind<?> data = new Int64DataBind((BdaInt64) fcModelNode);
            JTextField tf_t = (JTextField) data.getValueField();
            res_val = Float.parseFloat(tf_t.getText());
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        m_FBS_VCData.m_SysState.setCommCountInc();
        return res_val;
    }
    /*********************************************************************************************/
    private float JUDGEreadFloatNodeData(String reference, Fc fc) {
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc);
        if(null == fcModelNode) {
            System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
        float res_val = 0;
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc);
        if (null == fcModelNode) {
            System.err.println("error readNodeData(), no modenode was found.....");
            return 0;
        }
        try {
            m_Association.getDataValues(fcModelNode);
//            BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fcModelNode);
//            JTextField tf_t = (JTextField)data.getValueField();
//            res_val = Float.parseFloat(tf_t.getText());
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        String a[]= null;
        ModelNode fc_mode = fcModelNode;
        a = new String[5];
        a = (fc_mode.toString()).split(":");
        float res = Float.parseFloat(a[1]);
        return res;
    }
        } catch (ServiceError | IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
        }
        String a[] = null;
        ModelNode fc_mode = fcModelNode;
        a = new String[5];
        a = (fc_mode.toString()).split(":");
        float res = Float.parseFloat(a[1]);
        return res;
    }
    /*********************************************************************************************/
    private String readStringNodeData(String reference,Fc fc) {
        String res_val = null;
        FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc);
        if(null == fcModelNode) {
            return null;
        }
        //System.out.println("Sending GetDataValues request...");
        try {
            m_Association.getDataValues(fcModelNode);
        } catch (ServiceError e) {
            System.out.println("Service error: " + e.getMessage());
            return null;
        } catch (IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
            return null;
        }
        //System.out.println("Successfully read data.");
        ModelNode fc_mode = fcModelNode;
        String a[]= null;
        a = new String[5];
        a = (fc_mode.toString()).split(": ");
        res_val = a[2];
        //System.out.println(a[3]);
        String split[]= null;
        split = new String[5];
        split = (res_val.toString()).split(", ");
        String result[]= null;
        result = new String[2];
        result[0] = split[0];
        result[1] = a[3];
        String resul = null;
        resul = String.format("%s,%s", result);
        //System.out.println(resul);
        return resul;  //控制节点TRUE FALSE
    }
    private String readStringNodeData(String reference, Fc fc) {
        String res_val = null;
        FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc);
        if (null == fcModelNode) {
            return null;
        }
        // System.out.println("Sending GetDataValues request...");
        try {
            m_Association.getDataValues(fcModelNode);
        } catch (ServiceError e) {
            System.out.println("Service error: " + e.getMessage());
            return null;
        } catch (IOException e) {
            System.out.println("Fatal error: " + e.getMessage());
            return null;
        }
        // System.out.println("Successfully read data.");
        ModelNode fc_mode = fcModelNode;
        String a[] = null;
        a = new String[5];
        a = (fc_mode.toString()).split(": ");
        res_val = a[2];
        // System.out.println(a[3]);
        String split[] = null;
        split = new String[5];
        split = (res_val.toString()).split(", ");
        String result[] = null;
        result = new String[2];
        result[0] = split[0];
        result[1] = a[3];
        String resul = null;
        resul = String.format("%s,%s", result);
        // System.out.println(resul);
        return resul; // 控制节点TRUE FALSE
    }
    /*********************************************************************************************/
    public boolean BTS_IEC61850_SocketComm(int cmd) throws InterruptedException
    {
    public boolean BTS_IEC61850_SocketComm(int cmd) throws InterruptedException {
        boolean comm_res = false;
        try {
            if(FBS9100_ComBase.CMD_GetVIData == cmd) {
            if (FBS9100_ComBase.CMD_GetVIData == cmd) {
                events.clear();
                DataSet ds = null;
                if(m_FBS_VCData.m_SysState.WorkState == 99) {
                    ds = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsDevState");
                    int size_cnt = ds.getMembers().size();
                    m_Association.getDataSetValues(ds);
                    for(int n=0; n<size_cnt; n++) {
                         FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                         BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                         JTextField tf_t = (JTextField)data.getValueField();
                         //str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                         if(10 == n) {
                             m_FBS_VCData.groupvol[0] = Double.parseDouble(tf_t.getText());
                         }
                         if(11 == n) {
                             m_FBS_VCData.onlinevol[0] = Double.parseDouble(tf_t.getText());
                         }
                         if(12 == n) {
                             m_FBS_VCData.battcurr[0] = Double.parseDouble(tf_t.getText());
                         }
                         if((n >= 13) && (n < (13+24*1))) {
                             m_FBS_VCData.vol[n-13] = Double.parseDouble(tf_t.getText());
                         }
                if (m_FBS_VCData.m_SysState.WorkState == 99) {
                    ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                    int size_cnt = ds.getMembers().size();
                    m_Association.getDataSetValues(ds);
                    for (int n = 0; n < size_cnt; n++) {
                        FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                        BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                        JTextField tf_t = (JTextField) data.getValueField();
                        // str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                        if (10 == n) {
                            m_FBS_VCData.groupvol[0] = Double.parseDouble(tf_t.getText());
                        }
                        if (11 == n) {
                            m_FBS_VCData.onlinevol[0] = Double.parseDouble(tf_t.getText());
                        }
                        if (12 == n) {
                            m_FBS_VCData.battcurr[0] = Double.parseDouble(tf_t.getText());
                        }
                        if ((n >= 13) && (n < (13 + 24 * 1))) {
                            m_FBS_VCData.vol[n - 13] = Double.parseDouble(tf_t.getText());
                        }
//                         if((n >= (13+24*2)) && (13 < (3+24*3))) {
//                             m_FBS_VCData.res[n-(13+24*2)] = Double.parseDouble(tf_t.getText());
//                         }
                         if((n >= (13+24*1)) && (13 < (3+24*2))) {
                             m_FBS_VCData.tmp[n-(13+24*1)] = Double.parseDouble(tf_t.getText());
                         }
                    }
                    ds = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsMeasure");
                    int size_cnt1 = ds.getMembers().size();
                        if ((n >= (13 + 24 * 1)) && (13 < (3 + 24 * 2))) {
                            m_FBS_VCData.tmp[n - (13 + 24 * 1)] = Double.parseDouble(tf_t.getText());
                        }
                    }
                    ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure");
                    int size_cnt1 = ds.getMembers().size();
                    m_Association.getDataSetValues(ds);
                    int m = 11;
                    for(int n=0; n<size_cnt1; n++) {
                         FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                         BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                         JTextField tf_t = (JTextField)data.getValueField();
                         if((n >= (m+24*3)) && (n < (m+24*4))) {
                             m_FBS_VCData.mon_JH[n-(m+24*3)] = Double.parseDouble(tf_t.getText());
                         }
                    }
                }else {
                    ds = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsMeasure");
                    int size_cnt = ds.getMembers().size();
                    for (int n = 0; n < size_cnt1; n++) {
                        FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                        BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                        JTextField tf_t = (JTextField) data.getValueField();
                        if ((n >= (m + 24 * 3)) && (n < (m + 24 * 4))) {
                            m_FBS_VCData.mon_JH[n - (m + 24 * 3)] = Double.parseDouble(tf_t.getText());
                        }
                    }
                } else {
                    ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure");
                    int size_cnt = ds.getMembers().size();
                    m_Association.getDataSetValues(ds);
                    int m = 28;
                    for(int n=0; n<size_cnt; n++) {
                         if(n == 27) {
                             continue;
                         }
                        FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                         BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                         JTextField tf_t = (JTextField)data.getValueField();
                         //str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                         //System.out.println(n);
                         //System.out.println(Double.parseDouble(tf_t.getText()));
                         if(0 == n) {
                             m_FBS_VCData.groupvol[0] = Double.parseDouble(tf_t.getText());
                         }
                         if(1 == n) {
                             m_FBS_VCData.onlinevol[0] = Double.parseDouble(tf_t.getText());
                         }
                         if(2 == n) {
                             m_FBS_VCData.battcurr[0] = Double.parseDouble(tf_t.getText());
                         }
                         /*switch(n) {
                             case 3:
                                 fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
                                 break;
                             case 4:
                                 fod_state.VpeakVol_one = Double.parseDouble(tf_t.getText());
                                 break;
                             case 5:
                                 fod_state.VGroupVol_two = Double.parseDouble(tf_t.getText());
                                 break;
                             case 6:
                                 fod_state.VpeakVol_two = Double.parseDouble(tf_t.getText());
                                 break;
                             case 7:
                                 fod_state.VGroupVol_three = Double.parseDouble(tf_t.getText());
                                 break;
                             case 8:
                                 fod_state.VpeakVol_three = Double.parseDouble(tf_t.getText());
                                 break;
                             case 9 :
                                 fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText());
                                 break;
                             case 10:
                                 fod_state.VpeakVol_four= Double.parseDouble(tf_t.getText());
                                 break;
                             case 103:
                                 fod_state.RestTime_one = Double.parseDouble(tf_t.getText());
                                 //System.out.println(Double.parseDouble(tf_t.getText()));
                                 break;
                         }*/
                         if(3 == n) {
                             fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
                         }
                         if(4==n) {
                             fod_state.VpeakVol_one = Double.parseDouble(tf_t.getText());
                         }
                         if(5==n) {
                             fod_state.VGroupVol_two = Double.parseDouble(tf_t.getText());
                         }
                         if(6 ==n) {
                             fod_state.VpeakVol_two = Double.parseDouble(tf_t.getText());
                         }
                         if(7 ==n) {
                             fod_state.VGroupVol_three = Double.parseDouble(tf_t.getText());
                         }
                         if(8 == n) {
                             fod_state.VpeakVol_three = Double.parseDouble(tf_t.getText());
                         }
                         if(9 ==n) {
                             fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText());
                         }
                         if(10 ==n) {
                             fod_state.VpeakVol_four= Double.parseDouble(tf_t.getText());
                         }
                         /****************************  读取均衡供电模块信息  ****************************************/
                         if(11 == n) {
                             fbs9100_jhpowerState.setDev_version(tf_t.getText());
                         }
                         if(12 == n) {
                             fbs9100_jhpowerState.setInput_vol_total(Double.parseDouble(tf_t.getText()));
                         }
                         if(13 == n) {
                             fbs9100_jhpowerState.setInput_curr_total(Double.parseDouble(tf_t.getText()));
                         }
                         if(14 == n) {
                             fbs9100_jhpowerState.setOutput_vol_total(Double.parseDouble(tf_t.getText()));
                         }
                         if(15 == n) {
                             fbs9100_jhpowerState.setOutput_curr_total(Double.parseDouble(tf_t.getText()));
                         }
                         if(16 == n) {
                             fbs9100_jhpowerState.setOutput_vol_one(Double.parseDouble(tf_t.getText()));
                         }
                         if(17 == n) {
                             fbs9100_jhpowerState.setOutput_vol_two(Double.parseDouble(tf_t.getText()));
                         }
                         if(18 == n) {
                             fbs9100_jhpowerState.setOutput_vol_three(Double.parseDouble(tf_t.getText()));
                         }
                         if(19 == n) {
                             fbs9100_jhpowerState.setOutput_vol_four(Double.parseDouble(tf_t.getText()));
                         }
                         if(20 == n) {
                             fbs9100_jhpowerState.setOutput_vol_five(Double.parseDouble(tf_t.getText()));
                         }
                         if(21 == n) {
                             fbs9100_jhpowerState.setOutput_vol_six(Double.parseDouble(tf_t.getText()));
                         }
                         if(22 == n) {
                             fbs9100_jhpowerState.setOutput_vol_seven(Double.parseDouble(tf_t.getText()));
                         }
                         if(23 == n) {
                             fbs9100_jhpowerState.setOutput_vol_eight(Double.parseDouble(tf_t.getText()));
                         }
                         if(24 == n) {
                             fbs9100_jhpowerState.setOutput_vol_nine(Double.parseDouble(tf_t.getText()));
                         }
                         if(25 == n) {
                             fbs9100_jhpowerState.setOutput_vol_ten(Double.parseDouble(tf_t.getText()));
                         }
                         if(26 == n) {
                             fbs9100_jhpowerState.setDev_temp(Double.parseDouble(tf_t.getText()) - 10);
                         }
                         if((n >= m) && (n < (m+24*1))) {
                             //System.out.println(n);
                             //System.out.println(Double.parseDouble(tf_t.getText()));
                             m_FBS_VCData.vol[n-m] = Double.parseDouble(tf_t.getText());
                         }
                         if((n >= (m+24*1)) && (n < (m+24*2))) {
                             m_FBS_VCData.res[n-(m+24*1)] = Double.parseDouble(tf_t.getText());
                         }
                         if((n >= (m+24*2)) && (n < (m+24*3))) {
                             m_FBS_VCData.tmp[n-(m+24*2)] = Double.parseDouble(tf_t.getText());
                         }
                         if((n >= (m+24*3)) && (n < (m+24*4))) {
                             //System.out.println(n);
                             //System.out.println(Double.parseDouble(tf_t.getText()));
                             m_FBS_VCData.mon_JH[n-(m+24*3)] = Double.parseDouble(tf_t.getText());
                         }
                    }
                }
                String c[]= null;
                DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsDevAlarm");
                int size_cnt_stat = ds_stat.getMembers().size();
                c=new String[size_cnt_stat];
                String[] split = null;
                split =new String[2];
                m_Association.getDataSetValues(ds_stat);
                String sb= null;
                for(int n=0; n<size_cnt_stat; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                    split=fc_mode.toString().split(": ");
                    c[n]=split[1];
                }
                sb =String.format("%s,%s,%s,%s", c);
                m_FBS_VCData.m_SysState.last_dev_61850alam = m_FBS_VCData.m_SysState.dev_61850alam;                        //记录上一次告警状态
                m_FBS_VCData.m_SysState.dev_61850alam = sb;
                checkEventChange();                    //记录当前的告警
                //m_FBS_VCData.m_SysState.CommCount++;
                m_FBS_VCData.m_SysState.setCommCountInc();
                //System.out.println(str_out);
                int WorkState = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.StaNum.mag.f", Fc.MX);
                //System.out.println("WorkState:"+WorkState);
                //System.out.println("m_FBS_VCData.m_SysState.WorkState"+m_FBS_VCData.m_SysState.WorkState);
                if(m_FBS_VCData.m_SysState.WorkState != WorkState) {
                    BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, m_FBS_VCData.m_SysState.WorkState, WorkState, BTS61850_EventRecord.Event_WorkState_Type);
                    events.add(event);
                    m_FBS_VCData.m_SysState.WorkState = WorkState;
                    if(WorkState > 0) {
                        FBS9100_TestTime.starttime();
                    }else if(WorkState == 0) {
                        sleep(3000);
                        FBS9100_TestTime.restarttime();
                    }
                }
               // m_FBS_VCData.m_SysState.CapTestStopType = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.conresist = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn55.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.concurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn56.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.condvoldp = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn57.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.temp = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn59.mag.f", Fc.MX);
                //新添加用于提示告警(不启动核容原因)
                m_FBS_VCData.m_SysState.AlarmState = (int)(readInt64NodeData(FBSDeviceName+"/btgGGIO1.AnIn28.mag.i", Fc.MX));
                //  = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn6.mag.f", Fc.MX);   AnIn6 核容电流
                    for (int n = 0; n < size_cnt; n++) {
                        if (n == 27) {
                            // 跳过新添加的设备不启动原因结果返回
                            continue;
                        }
                        FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                m_FBS_VCData.m_SysState.condcurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn58.mag.f", Fc.MX);
                m_FBS_VCData.battcap[0] = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn2.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.CapTestStopType = (int) readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
                //System.out.println("m_FBS_VCData.m_SysState.captest_stop_type = "+m_FBS_VCData.m_SysState.captest_stop_type);
                m_FBS_VCData.m_SysState.resttest_count = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn60.mag.f", Fc.MX);
                //System.err.println(m_FBS_VCData.m_SysState.resttest_count);
                m_StatAndParam.m_DevVersion = readStringNodeData(FBSDeviceName+"/ncdGGIO1.DevVersion.d",Fc.DC);
                m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimit.mag.f", Fc.MX);
                m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCurr.mag.f", Fc.MX);
                //m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimi.mag.f", Fc.MX);
                // m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCur.mag.f", Fc.MX);
                // System.out.println("m_FBS_DiscParamFromDev.DCVolHighLimit"+m_FBS_DiscParamFromDev.DCVolHighLimit);
                //System.out.println("m_FBS_DiscParamFromDev.ChargeCurrSet"+m_FBS_DiscParamFromDev.ChargeCurrSet);
                switch(m_FBS_VCData.m_SysState.WorkState)
                {
                    case 0:
                        test_type = 1;
                        break;
                    case 1:
                        test_type = 2;
                        break;
                    case 2:
                        test_type = 3;
                        break;
                    case 3:
                        test_type = 3;
                        break;
                    case 4:
                        test_type = 1;
                        break;
                    case 5:
                        test_type = 3;
                        break;
                }
                getFBS9100MonVolData(m_FBS_VCData);
                m_FBS_VCData.m_SysState.resetErrCommCount();
                comm_res = true;
                ds = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsDevState");
                int size_cnt = ds.getMembers().size();
                        BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                        JTextField tf_t = (JTextField) data.getValueField();
                        // str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                        // System.out.println(n);
                        // System.out.println(Double.parseDouble(tf_t.getText()));
                        if (0 == n) {
                            m_FBS_VCData.groupvol[0] = Double.parseDouble(tf_t.getText());
                        }
                        if (1 == n) {
                            m_FBS_VCData.onlinevol[0] = Double.parseDouble(tf_t.getText());
                        }
                        if (2 == n) {
                            m_FBS_VCData.battcurr[0] = Double.parseDouble(tf_t.getText());
                        }
                        /*
                         * switch(n) { case 3: fod_state.VGroupVol_one=
                         * Double.parseDouble(tf_t.getText()); break; case 4: fod_state.VpeakVol_one =
                         * Double.parseDouble(tf_t.getText()); break; case 5: fod_state.VGroupVol_two =
                         * Double.parseDouble(tf_t.getText()); break; case 6: fod_state.VpeakVol_two =
                         * Double.parseDouble(tf_t.getText()); break; case 7: fod_state.VGroupVol_three
                         * = Double.parseDouble(tf_t.getText()); break; case 8: fod_state.VpeakVol_three
                         * = Double.parseDouble(tf_t.getText()); break; case 9 :
                         * fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText()); break; case
                         * 10: fod_state.VpeakVol_four= Double.parseDouble(tf_t.getText()); break; case
                         * 103: fod_state.RestTime_one = Double.parseDouble(tf_t.getText());
                         * //System.out.println(Double.parseDouble(tf_t.getText())); break;
                         *
                         * }
                         */
                        if (3 == n) {
                            fod_state.VGroupVol_one = Double.parseDouble(tf_t.getText());
                        }
                        if (4 == n) {
                            fod_state.VpeakVol_one = Double.parseDouble(tf_t.getText());
                        }
                        if (5 == n) {
                            fod_state.VGroupVol_two = Double.parseDouble(tf_t.getText());
                        }
                        if (6 == n) {
                            fod_state.VpeakVol_two = Double.parseDouble(tf_t.getText());
                        }
                        if (7 == n) {
                            fod_state.VGroupVol_three = Double.parseDouble(tf_t.getText());
                        }
                        if (8 == n) {
                            fod_state.VpeakVol_three = Double.parseDouble(tf_t.getText());
                        }
                        if (9 == n) {
                            fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText());
                        }
                        if (10 == n) {
                            fod_state.VpeakVol_four = Double.parseDouble(tf_t.getText());
                        }
                        /****************************
                         * 读取均衡供电模块信息
                         ****************************************/
                        if (11 == n) {
                            fbs9100_jhpowerState.setDev_version(tf_t.getText());
                        }
                        if (12 == n) {
                            fbs9100_jhpowerState.setInput_vol_total(Double.parseDouble(tf_t.getText()));
                        }
                        if (13 == n) {
                            fbs9100_jhpowerState.setInput_curr_total(Double.parseDouble(tf_t.getText()));
                        }
                        if (14 == n) {
                            fbs9100_jhpowerState.setOutput_vol_total(Double.parseDouble(tf_t.getText()));
                        }
                        if (15 == n) {
                            fbs9100_jhpowerState.setOutput_curr_total(Double.parseDouble(tf_t.getText()));
                        }
                        if (16 == n) {
                            fbs9100_jhpowerState.setOutput_vol_one(Double.parseDouble(tf_t.getText()));
                        }
                        if (17 == n) {
                            fbs9100_jhpowerState.setOutput_vol_two(Double.parseDouble(tf_t.getText()));
                        }
                        if (18 == n) {
                            fbs9100_jhpowerState.setOutput_vol_three(Double.parseDouble(tf_t.getText()));
                        }
                        if (19 == n) {
                            fbs9100_jhpowerState.setOutput_vol_four(Double.parseDouble(tf_t.getText()));
                        }
                        if (20 == n) {
                            fbs9100_jhpowerState.setOutput_vol_five(Double.parseDouble(tf_t.getText()));
                        }
                        if (21 == n) {
                            fbs9100_jhpowerState.setOutput_vol_six(Double.parseDouble(tf_t.getText()));
                        }
                        if (22 == n) {
                            fbs9100_jhpowerState.setOutput_vol_seven(Double.parseDouble(tf_t.getText()));
                        }
                        if (23 == n) {
                            fbs9100_jhpowerState.setOutput_vol_eight(Double.parseDouble(tf_t.getText()));
                        }
                        if (24 == n) {
                            fbs9100_jhpowerState.setOutput_vol_nine(Double.parseDouble(tf_t.getText()));
                        }
                        if (25 == n) {
                            fbs9100_jhpowerState.setOutput_vol_ten(Double.parseDouble(tf_t.getText()));
                        }
                        if (26 == n) {
                            fbs9100_jhpowerState.setDev_temp(Double.parseDouble(tf_t.getText()) - 10);
                        }
                        if ((n >= m) && (n < (m + 24 * 1))) {
                            // System.out.println(n);
                            // System.out.println(Double.parseDouble(tf_t.getText()));
                            m_FBS_VCData.vol[n - m] = Double.parseDouble(tf_t.getText());
                        }
                        if ((n >= (m + 24 * 1)) && (n < (m + 24 * 2))) {
                            m_FBS_VCData.res[n - (m + 24 * 1)] = Double.parseDouble(tf_t.getText());
                        }
                        if ((n >= (m + 24 * 2)) && (n < (m + 24 * 3))) {
                            m_FBS_VCData.tmp[n - (m + 24 * 2)] = Double.parseDouble(tf_t.getText());
                        }
                        if ((n >= (m + 24 * 3)) && (n < (m + 24 * 4))) {
                            // System.out.println(n);
                            // System.out.println(Double.parseDouble(tf_t.getText()));
                            m_FBS_VCData.mon_JH[n - (m + 24 * 3)] = Double.parseDouble(tf_t.getText());
                        }
                    }
                }
                String c[] = null;
                DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm");
                int size_cnt_stat = ds_stat.getMembers().size();
                c = new String[size_cnt_stat];
                String[] split = null;
                split = new String[2];
                m_Association.getDataSetValues(ds_stat);
                String sb = null;
                String temp = "%s";
                for (int n = 0; n < size_cnt_stat; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                    split = fc_mode.toString().split(": ");
                    c[n] = split[1];
                    if(n>0) {
                        temp += ",%s";
                    }
                }
                sb = String.format(temp, c);
                m_FBS_VCData.m_SysState.last_dev_61850alam = m_FBS_VCData.m_SysState.dev_61850alam; // 记录上一次告警状态
                m_FBS_VCData.m_SysState.dev_61850alam = sb;
                checkEventChange(); // 记录当前的告警
                // m_FBS_VCData.m_SysState.CommCount++;
                m_FBS_VCData.m_SysState.setCommCountInc();
                // System.out.println(str_out);
                int WorkState = (int) readFloatNodeData(FBSDeviceName + "/ncdGGIO1.StaNum.mag.f", Fc.MX);
                // System.out.println("WorkState:"+WorkState);
                // System.out.println("m_FBS_VCData.m_SysState.WorkState"+m_FBS_VCData.m_SysState.WorkState);
                if (m_FBS_VCData.m_SysState.WorkState != WorkState) {
                    BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, m_FBS_VCData.m_SysState.WorkState,
                            WorkState, BTS61850_EventRecord.Event_WorkState_Type);
                    events.add(event);
                    m_FBS_VCData.m_SysState.WorkState = WorkState;
                    if (WorkState > 0) {
                        FBS9100_TestTime.starttime();
                    } else if (WorkState == 0) {
                        sleep(3000);
                        FBS9100_TestTime.restarttime();
                    }
                }
                // m_FBS_VCData.m_SysState.CapTestStopType =
                // (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.conresist = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn55.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.concurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn56.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.condvoldp = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn57.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.temp = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn59.mag.f", Fc.MX);
                // 新添加用于提示告警(不启动核容原因)
                m_FBS_VCData.m_SysState.AlarmState = (int) (readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX));
                // = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn6.mag.f", Fc.MX); AnIn6 核容电流
                m_FBS_VCData.m_SysState.condcurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn58.mag.f", Fc.MX);
                m_FBS_VCData.battcap[0] = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn2.mag.f", Fc.MX);
                m_FBS_VCData.m_SysState.CapTestStopType = (int) readFloatNodeData(
                        FBSDeviceName + "/ncdGGIO1.AnIn1.mag.f", Fc.MX);
                // System.out.println("m_FBS_VCData.m_SysState.captest_stop_type =
                // "+m_FBS_VCData.m_SysState.captest_stop_type);
                m_FBS_VCData.m_SysState.resttest_count = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn60.mag.f",
                        Fc.MX);
                // System.err.println(m_FBS_VCData.m_SysState.resttest_count);
                m_StatAndParam.m_DevVersion = readStringNodeData(FBSDeviceName + "/ncdGGIO1.DevVersion.d", Fc.DC);
                m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.DCVolLimit.mag.f",
                        Fc.MX);
                m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.ChargeCurr.mag.f",
                        Fc.MX);
                // m_FBS_DiscParamFromDev.DCVolHighLimit =
                // readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimi.mag.f", Fc.MX);
                // m_FBS_DiscParamFromDev.ChargeCurrSet =
                // readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCur.mag.f", Fc.MX);
                // System.out.println("m_FBS_DiscParamFromDev.DCVolHighLimit"+m_FBS_DiscParamFromDev.DCVolHighLimit);
                // System.out.println("m_FBS_DiscParamFromDev.ChargeCurrSet"+m_FBS_DiscParamFromDev.ChargeCurrSet);
                switch (m_FBS_VCData.m_SysState.WorkState) {
                case 0:
                    test_type = 1;
                    break;
                case 1:
                    test_type = 2;
                    break;
                case 2:
                    test_type = 3;
                    break;
                case 3:
                    test_type = 3;
                    break;
                case 4:
                    test_type = 1;
                    break;
                case 5:
                    test_type = 3;
                    break;
                }
                getFBS9100MonVolData(m_FBS_VCData);
                m_FBS_VCData.m_SysState.resetErrCommCount();
                comm_res = true;
                ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                int size_cnt = ds.getMembers().size();
                m_Association.getDataSetValues(ds);
                //屏蔽当前根节点下新添加的ukey内容
                for(int n=0; n<size_cnt && n<117; n++) {
                     FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                     BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                     JTextField tf_t = (JTextField)data.getValueField();
                     //System.out.println(n);
                     //System.out.println(Double.parseDouble(tf_t.getText()));
                     switch(n) {
                     //case 109:
                         //fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
                     //    break;
                     case 109:
                         fod_state.WorkState_one =  (int) Double.parseDouble(tf_t.getText());
                         break;
                     case 110:
                         fod_state.RestTime_one =  Double.parseDouble(tf_t.getText());
                         break;
                     case 111:
                         fod_state.WorkState_two =  (int) Double.parseDouble(tf_t.getText());
                         break;
                     case 112:
                         fod_state.RestTime_two =  Double.parseDouble(tf_t.getText());
                         break;
                     case 113:
                         fod_state.WorkState_three =  (int) Double.parseDouble(tf_t.getText());
                         break;
                     case 114:
                         fod_state.RestTime_three =  Double.parseDouble(tf_t.getText());
                         break;
                     case 115:
                         fod_state.WorkState_four =  (int) Double.parseDouble(tf_t.getText());
                         break;
                     case 116:
                         fod_state.RestTime_four =  Double.parseDouble(tf_t.getText());
                         break;
                     }
                }
            } else if(FBS9100_ComBase.CMD_SetDischargeParm == cmd) {
                //m_StatAndParam.m_FBS_DiscParam;
                //System.out.println("m_StatAndParam.m_FBS_DiscParam:"+m_StatAndParam.m_FBS_DiscParam);
                // 屏蔽当前根节点下新添加的ukey内容
                for (int n = 0; n < size_cnt && n < 117; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                    BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                    JTextField tf_t = (JTextField) data.getValueField();
                    // System.out.println(n);
                    // System.out.println(Double.parseDouble(tf_t.getText()));
                    switch (n) {
                    // case 109:
                    // fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
                    // break;
                    case 109:
                        fod_state.WorkState_one = (int) Double.parseDouble(tf_t.getText());
                        break;
                    case 110:
                        fod_state.RestTime_one = Double.parseDouble(tf_t.getText());
                        break;
                    case 111:
                        fod_state.WorkState_two = (int) Double.parseDouble(tf_t.getText());
                        break;
                    case 112:
                        fod_state.RestTime_two = Double.parseDouble(tf_t.getText());
                        break;
                    case 113:
                        fod_state.WorkState_three = (int) Double.parseDouble(tf_t.getText());
                        break;
                    case 114:
                        fod_state.RestTime_three = Double.parseDouble(tf_t.getText());
                        break;
                    case 115:
                        fod_state.WorkState_four = (int) Double.parseDouble(tf_t.getText());
                        break;
                    case 116:
                        fod_state.RestTime_four = Double.parseDouble(tf_t.getText());
                        break;
                    }
                }
            } else if (FBS9100_ComBase.CMD_SetDischargeParm == cmd) {
                // m_StatAndParam.m_FBS_DiscParam;
                // System.out.println("m_StatAndParam.m_FBS_DiscParam:"+m_StatAndParam.m_FBS_DiscParam);
                boolean write_res_t = true;
//                
//                if(true == write_res_t) {
@@ -1016,127 +1034,132 @@
//                    }
//                }
//                sleep(1500);
                if(true == write_res_t) {
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para1.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.DisCurr);
                if (true == write_res_t) {
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para1.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.DisCurr);
                    float dis_hour_t = m_StatAndParam.m_FBS_DiscParam.DisTime;
                    dis_hour_t = dis_hour_t / 60;
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para2.setMag.f", "SP",(float)dis_hour_t);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para3.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.DisCap);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para4.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para5.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para6.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW);
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para2.setMag.f", "SP", (float) dis_hour_t);
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para3.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.DisCap);
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para4.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para5.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW);
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para6.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW);
                    sleep(2000);
                }
                comm_res = true;
            } else if(FBS9100_ComBase.CMD_GetDischargeParm == cmd) {
                DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsDevState");
                int size_cnt = ds_pm.getMembers().size();
            } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) {
                DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                int size_cnt = ds_pm.getMembers().size();
                m_Association.getDataSetValues(ds_pm);
                for(int n=0; n<6; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds_pm.getMembers().get(n).getChild("mag").getChild("f");
                    BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                    JTextField tf_t = (JTextField)data.getValueField();
                    //System.out.println(fc_mode);
                    if(3 == n) {
                        m_FBS_DiscParamFromDev.DisCurr= Double.parseDouble(tf_t.getText());
                    }
                    if(2 == n) {
                        float dis_hour_t = Float.parseFloat(tf_t.getText());
                for (int n = 0; n < 6; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds_pm.getMembers().get(n).getChild("mag").getChild("f");
                    BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                    JTextField tf_t = (JTextField) data.getValueField();
                    // System.out.println(fc_mode);
                    if (3 == n) {
                        m_FBS_DiscParamFromDev.DisCurr = Double.parseDouble(tf_t.getText());
                    }
                    if (2 == n) {
                        float dis_hour_t = Float.parseFloat(tf_t.getText());
                        dis_hour_t = dis_hour_t * 60;
                        m_FBS_DiscParamFromDev.DisTime = (int) dis_hour_t;
                    }
                    if(1 == n) {
                        m_FBS_DiscParamFromDev.DisCap= Double.parseDouble(tf_t.getText());
                    }
                    if(5 == n) {
                        m_FBS_DiscParamFromDev.MonomerTmp_High= Double.parseDouble(tf_t.getText());
                    }
                    if(0 == n) {
                        m_FBS_DiscParamFromDev.GroupVol_LOW = Double.parseDouble(tf_t.getText());
                    }
                    if(4 == n) {
                        m_FBS_DiscParamFromDev.MonomerVol_LOW= Double.parseDouble(tf_t.getText());
                    }
                    }
                    if (1 == n) {
                        m_FBS_DiscParamFromDev.DisCap = Double.parseDouble(tf_t.getText());
                    }
                    if (5 == n) {
                        m_FBS_DiscParamFromDev.MonomerTmp_High = Double.parseDouble(tf_t.getText());
                    }
                    if (0 == n) {
                        m_FBS_DiscParamFromDev.GroupVol_LOW = Double.parseDouble(tf_t.getText());
                    }
                    if (4 == n) {
                        m_FBS_DiscParamFromDev.MonomerVol_LOW = Double.parseDouble(tf_t.getText());
                    }
                }
                comm_res = true;
                //System.out.println(m_FBS_DiscParamFromDev);
                // System.out.println(m_FBS_DiscParamFromDev);
            } else if (FBS9100_ComBase.CMD_Stop == cmd) {
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO1.Oper", false);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO1.Oper", false);
                int count = 1;
                if(m_FBS_VCData.m_SysState.WorkState == 2 || m_FBS_VCData.m_SysState.WorkState == 3) {
                if (m_FBS_VCData.m_SysState.WorkState == 2 || m_FBS_VCData.m_SysState.WorkState == 3) {
                    count = 6;
                }else if(m_FBS_VCData.m_SysState.WorkState == 1){
                } else if (m_FBS_VCData.m_SysState.WorkState == 1) {
                    count = 7;
                }else if(m_FBS_VCData.m_SysState.WorkState == 5) {
                } else if (m_FBS_VCData.m_SysState.WorkState == 5) {
                    count = 8;
                }
                comm_res = checkMakeSuccess(count);
            } else if (FBS9100_ComBase.CMD_StartDischarge == cmd) {
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO1.Oper", true);
                //battStatData.setBattFloatCurrLevel(-1);
                //battStatData.updateCurrFrom_FBSDev(0);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO1.Oper", true);
                // battStatData.setBattFloatCurrLevel(-1);
                // battStatData.updateCurrFrom_FBSDev(0);
                comm_res = checkMakeSuccess(0);
                System.out.println(comm_res);
            } else if (FBS9100_ComBase.CMD_StartResDischarge == cmd) {
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO2.Oper", true);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO2.Oper", true);
                comm_res = checkMakeSuccess(2);
            } else if (FBS9100_ComBase.CMD_StartKIDI == cmd) {
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO3.Oper", true);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO3.Oper", true);
                comm_res = checkMakeSuccess(1);
            } else if (FBS9100_ComBase.CMD_SetIp == cmd) {
                setip();
                DecimalFormat df=new DecimalFormat("000");
                DecimalFormat df = new DecimalFormat("000");
                String[] Arrip = m_RTData[0].FBSDeviceIp.split("\\.");
                String[] ArripWG = m_RTData[0].FBSDeviceIp_WG.split("\\.");
                String[] ArripYM = m_RTData[0].FBSDeviceIp_YM.split("\\.");
                StringBuffer Stringip = new StringBuffer();
                StringBuffer StringipWG = new StringBuffer();
                StringBuffer StringipYM = new StringBuffer();
                //System.out.println(Arrip.length);
                for (int i=0;i<Arrip.length;i++) {
                    if (Arrip[i].trim().length()<3) {
                        int length=Arrip[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            Arrip[i]="0"+Arrip[i].trim();
                        }
                    }
                    if (ArripWG[i].trim().length()<3) {
                        int length=ArripWG[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            ArripWG[i]="0"+ArripWG[i].trim();
                        }
                    }
                    if (ArripYM[i].trim().length()<3) {
                        int length=ArripYM[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            ArripYM[i]="0"+ArripYM[i].trim();
                        }
                    }
                }
                for(int i=0;i<Arrip.length;i++) {
                // System.out.println(Arrip.length);
                for (int i = 0; i < Arrip.length; i++) {
                    if (Arrip[i].trim().length() < 3) {
                        int length = Arrip[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            Arrip[i] = "0" + Arrip[i].trim();
                        }
                    }
                    if (ArripWG[i].trim().length() < 3) {
                        int length = ArripWG[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            ArripWG[i] = "0" + ArripWG[i].trim();
                        }
                    }
                    if (ArripYM[i].trim().length() < 3) {
                        int length = ArripYM[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            ArripYM[i] = "0" + ArripYM[i].trim();
                        }
                    }
                }
                for (int i = 0; i < Arrip.length; i++) {
                    Stringip.append(Arrip[i]);
                    StringipWG.append(ArripWG[i]);
                    StringipYM.append(ArripYM[i]);
                }
                String a = Stringip.toString();
                Stringip = new StringBuffer("1"+a);
                long ipYM =  Long.parseLong(StringipYM.toString());
                long ip =  Long.parseLong(Stringip.toString());
                //System.out.println("ip:"+ip);
                long ipWG =  Long.parseLong(StringipWG.toString());
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para7.setMag.i", "SP", ip);
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para8.setMag.i", "SP", ipWG);
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para9.setMag.i", "SP", ipYM);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO4.Oper", true);
                //comm_res = ;
            }else if (FBS9100_ComBase.CMD_SetIpNow == cmd) {
                Stringip = new StringBuffer("1" + a);
                long ipYM = Long.parseLong(StringipYM.toString());
                long ip = Long.parseLong(Stringip.toString());
                // System.out.println("ip:"+ip);
                long ipWG = Long.parseLong(StringipWG.toString());
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para7.setMag.i", "SP", ip);
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para8.setMag.i", "SP", ipWG);
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para9.setMag.i", "SP", ipYM);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO4.Oper", true);
                // comm_res = ;
            } else if (FBS9100_ComBase.CMD_SetIpNow == cmd) {
                setip();
                DecimalFormat df=new DecimalFormat("000");
                //System.out.println(m_RTData[0].FBSDeviceIp_YM);
                DecimalFormat df = new DecimalFormat("000");
                // System.out.println(m_RTData[0].FBSDeviceIp_YM);
                String[] Arrip = m_RTData[0].FBSDeviceIp.split("\\.");
                String[] ArripWG = m_RTData[0].FBSDeviceIp_WG.split("\\.");
@@ -1144,293 +1167,335 @@
                StringBuffer Stringip = new StringBuffer();
                StringBuffer StringipWG = new StringBuffer();
                StringBuffer StringipYM = new StringBuffer();
                //System.out.println(Arrip.length);
                for (int i=0;i<Arrip.length;i++) {
                    if (Arrip[i].trim().length()<3) {
                        int length=Arrip[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            Arrip[i]="0"+Arrip[i].trim();
                        }
                    }
                    if (ArripWG[i].trim().length()<3) {
                        int length=ArripWG[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            ArripWG[i]="0"+ArripWG[i].trim();
                        }
                    }
                    if (ArripYM[i].trim().length()<3) {
                        int length=ArripYM[i].trim().length();
                        for (int j = 1; j <= 3-length; j++) {
                            ArripYM[i]="0"+ArripYM[i].trim();
                        }
                    }
                }
                for(int i=0;i<Arrip.length;i++) {
                // System.out.println(Arrip.length);
                for (int i = 0; i < Arrip.length; i++) {
                    if (Arrip[i].trim().length() < 3) {
                        int length = Arrip[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            Arrip[i] = "0" + Arrip[i].trim();
                        }
                    }
                    if (ArripWG[i].trim().length() < 3) {
                        int length = ArripWG[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            ArripWG[i] = "0" + ArripWG[i].trim();
                        }
                    }
                    if (ArripYM[i].trim().length() < 3) {
                        int length = ArripYM[i].trim().length();
                        for (int j = 1; j <= 3 - length; j++) {
                            ArripYM[i] = "0" + ArripYM[i].trim();
                        }
                    }
                }
                for (int i = 0; i < Arrip.length; i++) {
                    Stringip.append(Arrip[i]);
                    StringipWG.append(ArripWG[i]);
                    StringipYM.append(ArripYM[i]);
                }
                String a = Stringip.toString();
                long     ipYM =  Long.parseLong(StringipYM.toString());
                long     ip =  Long.parseLong(Stringip.toString());
                long     ipWG =  Long.parseLong(StringipWG.toString());
                long ipYM = Long.parseLong(StringipYM.toString());
                long ip = Long.parseLong(Stringip.toString());
                long ipWG = Long.parseLong(StringipWG.toString());
//                System.err.println(ip);
//                System.err.println(ipWG);
//                System.err.println(ipYM);
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para7.setMag.i", "SP", ip);
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para8.setMag.i", "SP", ipWG);
                writeNodeDataInt(FBSDeviceName+"/ncdGGIO1.Para9.setMag.i", "SP", ipYM);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO4.Oper", false);
                //System.out.println("SUCCESS");
                //comm_res = true;
            }else if(FBS9100_ComBase.CMD_ReadFodParam == cmd) {
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para7.setMag.i", "SP", ip);
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para8.setMag.i", "SP", ipWG);
                writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para9.setMag.i", "SP", ipYM);
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO4.Oper", false);
                // System.out.println("SUCCESS");
                // comm_res = true;
            } else if (FBS9100_ComBase.CMD_ReadFodParam == cmd) {
                DataSet ds = null;
                ds = m_ServerModel.getDataSet(FBSDeviceName+"/LLN0.dsDevState");
                int size_cnt = ds.getMembers().size();
                m_Association.getDataSetValues(ds);
                for(int n=86; n<109; n++) {
                     FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                     BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
                     JTextField tf_t = (JTextField)data.getValueField();
                     //str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                      switch(n)
                     {
                         case 86:
                             m_StatAndParam.clParam.STDCap_one=(int) Double.parseDouble(tf_t.getText());//除硫1标称容量
                             break;
                         case 87:
                             m_StatAndParam.clParam.FloatVol_one=Double.parseDouble(tf_t.getText());//浮充电压
                             break;
                         case 88:
                             m_StatAndParam.clParam.Strength_one=Double.parseDouble(tf_t.getText());//除硫强度
                             break;
                         case 89:
                             m_StatAndParam.clParam.YHStrength_one=Double.parseDouble(tf_t.getText());//养护强度
                             break;
                         case 90:
                             m_StatAndParam.clParam.TimeLong_one=Double.parseDouble(tf_t.getText());//除硫时间
                             break;
                         //case 85:
                             //m_StatAndParam.clParam.STDCap_two=Double.parseDouble(tf_t.getText());///除硫2标称容量
                             //break;
                         case 92:
                             m_StatAndParam.clParam.STDCap_two=Double.parseDouble(tf_t.getText());
                             break;
                         case 93:
                             m_StatAndParam.clParam.FloatVol_two=Double.parseDouble(tf_t.getText());
                             break;
                         case 94:
                             m_StatAndParam.clParam.Strength_two=Double.parseDouble(tf_t.getText());
                             break;
                         case 95:
                             m_StatAndParam.clParam.YHStrength_two=Double.parseDouble(tf_t.getText());
                             break;
                         case 96:
                             m_StatAndParam.clParam.TimeLong_two=(int) Double.parseDouble(tf_t.getText());
                             break;
                         //case 91:
                             //Double.parseDouble(tf_t.getText());
                             //break;
                         case 98:
                             m_StatAndParam.clParam.STDCap_three=Double.parseDouble(tf_t.getText());
                             break;
                         case 99:
                             m_StatAndParam.clParam.FloatVol_three=Double.parseDouble(tf_t.getText());
                             break;
                         case 100:
                             m_StatAndParam.clParam.Strength_three=Double.parseDouble(tf_t.getText());
                             break;
                            case 101:
                                m_StatAndParam.clParam.YHStrength_three=Double.parseDouble(tf_t.getText());
                             break;
                         case 102:
                             m_StatAndParam.clParam.TimeLong_three=(int) Double.parseDouble(tf_t.getText());
                             break;
                         //case 97:
                         //    Double.parseDouble(tf_t.getText());
                         //    break;
                         case 104:
                             m_StatAndParam.clParam.STDCap_four=(int) Double.parseDouble(tf_t.getText());
                             break;
                         case 105:
                             m_StatAndParam.clParam.FloatVol_four=Double.parseDouble(tf_t.getText());
                            break;
                        case 106:
                            m_StatAndParam.clParam.Strength_four=Double.parseDouble(tf_t.getText());
                            break;
                        case 107:
                            m_StatAndParam.clParam.YHStrength_four=Double.parseDouble(tf_t.getText());
                            break;
                        case 108:
                            m_StatAndParam.clParam.TimeLong_four=Double.parseDouble(tf_t.getText());
                            break;
                     }
                     comm_res = true;
                }
            }else if(FBS9100_ComBase.CMD_WriteFodParam == cmd) {
                    //System.out.println(m_StatAndParam.clParam.STDCap_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para11.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_one);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para12.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_one);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para13.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_one);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para14.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_one);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para15.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_one);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para17.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para18.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para19.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para20.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para21.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_two);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para23.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_three);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para24.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_three);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para25.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_three);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para26.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_three);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para27.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_three);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para29.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_four);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para30.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_four);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para31.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_four);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para32.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_four);
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para33.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_four);
                ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                int size_cnt = ds.getMembers().size();
                m_Association.getDataSetValues(ds);
                for (int n = 86; n < 109; n++) {
                    FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
                    BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                    JTextField tf_t = (JTextField) data.getValueField();
                    // str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
                    switch (n) {
                    case 86:
                        m_StatAndParam.clParam.STDCap_one = (int) Double.parseDouble(tf_t.getText());// 除硫1标称容量
                        break;
                    case 87:
                        m_StatAndParam.clParam.FloatVol_one = Double.parseDouble(tf_t.getText());// 浮充电压
                        break;
                    case 88:
                        m_StatAndParam.clParam.Strength_one = Double.parseDouble(tf_t.getText());// 除硫强度
                        break;
                    case 89:
                        m_StatAndParam.clParam.YHStrength_one = Double.parseDouble(tf_t.getText());// 养护强度
                        break;
                    case 90:
                        m_StatAndParam.clParam.TimeLong_one = Double.parseDouble(tf_t.getText());// 除硫时间
                        break;
                    // case 85:
                    // m_StatAndParam.clParam.STDCap_two=Double.parseDouble(tf_t.getText());///除硫2标称容量
                    // break;
                    case 92:
                        m_StatAndParam.clParam.STDCap_two = Double.parseDouble(tf_t.getText());
                        break;
                    case 93:
                        m_StatAndParam.clParam.FloatVol_two = Double.parseDouble(tf_t.getText());
                        break;
                    case 94:
                        m_StatAndParam.clParam.Strength_two = Double.parseDouble(tf_t.getText());
                        break;
                    case 95:
                        m_StatAndParam.clParam.YHStrength_two = Double.parseDouble(tf_t.getText());
                        break;
                    case 96:
                        m_StatAndParam.clParam.TimeLong_two = (int) Double.parseDouble(tf_t.getText());
                        break;
                    // case 91:
                    // Double.parseDouble(tf_t.getText());
                    // break;
                    case 98:
                        m_StatAndParam.clParam.STDCap_three = Double.parseDouble(tf_t.getText());
                        break;
                    case 99:
                        m_StatAndParam.clParam.FloatVol_three = Double.parseDouble(tf_t.getText());
                        break;
                    case 100:
                        m_StatAndParam.clParam.Strength_three = Double.parseDouble(tf_t.getText());
                        break;
                    case 101:
                        m_StatAndParam.clParam.YHStrength_three = Double.parseDouble(tf_t.getText());
                        break;
                    case 102:
                        m_StatAndParam.clParam.TimeLong_three = (int) Double.parseDouble(tf_t.getText());
                        break;
                    // case 97:
                    // Double.parseDouble(tf_t.getText());
                    // break;
                    case 104:
                        m_StatAndParam.clParam.STDCap_four = (int) Double.parseDouble(tf_t.getText());
                        break;
                    case 105:
                        m_StatAndParam.clParam.FloatVol_four = Double.parseDouble(tf_t.getText());
                        break;
                    case 106:
                        m_StatAndParam.clParam.Strength_four = Double.parseDouble(tf_t.getText());
                        break;
                    case 107:
                        m_StatAndParam.clParam.YHStrength_four = Double.parseDouble(tf_t.getText());
                        break;
                    case 108:
                        m_StatAndParam.clParam.TimeLong_four = Double.parseDouble(tf_t.getText());
                        break;
                    }
                    comm_res = true;
            }else if(FBS9100_ComBase.CMD_Start_FODCL_test == cmd) {
                //System.out.println(m_StatAndParam.clParam.num);
                //comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper", true);
                //System.out.println(m_StatAndParam.clParam.num);
                switch(m_StatAndParam.clParam.GroupNum) {
                    case 1:
                        comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper", true);                //模块1除硫
                        break;
                    case 2:
                        comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO6.Oper", true);                //模块21除硫
                        break;
                    case 3:
                        comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO7.Oper", true);                //模块31除硫
                        break;
                    case 4:
                        comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO8.Oper", true);                //模块41除硫
                        break;
                }
                comm_res = checkMakeSuccess(3);
            }else if(FBS9100_ComBase.CMD_Stop_FOD_test == cmd) {
                //System.out.println(m_StatAndParam.clParam.GroupNum);
                switch(m_StatAndParam.clParam.GroupNum) {
            } else if (FBS9100_ComBase.CMD_WriteFodParam == cmd) {
                // System.out.println(m_StatAndParam.clParam.STDCap_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para11.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.STDCap_one);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para12.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.FloatVol_one);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para13.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.Strength_one);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para14.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.YHStrength_one);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para15.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.TimeLong_one);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para17.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.STDCap_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para18.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.FloatVol_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para19.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.Strength_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para20.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.YHStrength_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para21.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.TimeLong_two);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para23.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.STDCap_three);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para24.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.FloatVol_three);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para25.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.Strength_three);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para26.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.YHStrength_three);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para27.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.TimeLong_three);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para29.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.STDCap_four);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para30.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.FloatVol_four);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para31.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.Strength_four);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para32.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.YHStrength_four);
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para33.setMag.f", "SP",
                        (float) m_StatAndParam.clParam.TimeLong_four);
                comm_res = true;
            } else if (FBS9100_ComBase.CMD_Start_FODCL_test == cmd) {
                // System.out.println(m_StatAndParam.clParam.num);
                // comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper",
                // true);
                // System.out.println(m_StatAndParam.clParam.num);
                switch (m_StatAndParam.clParam.GroupNum) {
                case 1:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO9.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO5.Oper", true); // 模块1除硫
                    break;
                case 2:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO6.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO10.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO6.Oper", true); // 模块21除硫
                    break;
                case 3:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO7.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCS11.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO7.Oper", true); // 模块31除硫
                    break;
                case 4:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO8.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO12.Oper", false);
                case 4:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO8.Oper", true); // 模块41除硫
                    break;
                }
                comm_res = checkMakeSuccess(3);
            } else if (FBS9100_ComBase.CMD_Stop_FOD_test == cmd) {
                // System.out.println(m_StatAndParam.clParam.GroupNum);
                switch (m_StatAndParam.clParam.GroupNum) {
                case 1:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO5.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO9.Oper", false);
                    break;
                case 2:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO6.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO10.Oper", false);
                    break;
                case 3:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO7.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCS11.Oper", false);
                    break;
                case 4:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO8.Oper", false);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO12.Oper", false);
                    break;
                }
                comm_res = checkMakeSuccess(9);
            }else if(FBS9100_ComBase.CMD_Start_FODYH_test == cmd) {
                switch(m_StatAndParam.clParam.GroupNum) {
            } else if (FBS9100_ComBase.CMD_Start_FODYH_test == cmd) {
                switch (m_StatAndParam.clParam.GroupNum) {
                case 1:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO9.Oper", true);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO9.Oper", true);
                    break;
                case 2:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO10.Oper", true);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO10.Oper", true);
                    break;
                case 3:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO11.Oper", true);
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO11.Oper", true);
                    break;
                case 4:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO12.Oper", true);
                case 4:
                    comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO12.Oper", true);
                    break;
                }
                comm_res = checkMakeSuccess(4);
            }else if(FBS9100_ComBase.CMD_GetOffLineYHParam == cmd) {
                //System.err.println("读取离线养护参数");
                //读取离线养护参数
                //获取单体温度上限阀值
                m_FBS_DiscParamFromDev.MonomerTmp_High    = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.HiCelTemp.mag.f", Fc.MX);
                //获取离线养护周期
                m_StatAndParam.bts61850_OffLineYHPlan.OffLineYH_Cycle = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn111.mag.f", Fc.MX);
            } else if (FBS9100_ComBase.CMD_GetOffLineYHParam == cmd) {
                // System.err.println("读取离线养护参数");
                // 读取离线养护参数
                // 获取单体温度上限阀值
                m_FBS_DiscParamFromDev.MonomerTmp_High = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiCelTemp.mag.f",
                        Fc.MX);
                // 获取离线养护周期
                m_StatAndParam.bts61850_OffLineYHPlan.OffLineYH_Cycle = (int) readFloatNodeData(
                        FBSDeviceName + "/ncdGGIO1.AnIn111.mag.f", Fc.MX);
                m_FBS_DiscParamFromDev.copyOfflineYHData(m_StatAndParam.bts61850_OffLineYHPlan);
                //获取在线电压低阀值
                m_FBS_DiscParamFromDev.OnLineVol_Low = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn112.mag.f", Fc.MX);;
                comm_res = true;
            }else if(FBS9100_ComBase.CMD_SetOffLineYHParam == cmd) {
                //System.err.println("设置离线养护参数" + m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                //设置离线养护参数
                // 获取在线电压低阀值
                m_FBS_DiscParamFromDev.OnLineVol_Low = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn112.mag.f",
                        Fc.MX);
                ;
                comm_res = true;
            } else if (FBS9100_ComBase.CMD_SetOffLineYHParam == cmd) {
                // System.err.println("设置离线养护参数" +
                // m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                // 设置离线养护参数
                boolean write_res_t = true;
                if(true == write_res_t) {
                    //离线养护周期
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para34.setMag.f", "SP", (float)m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle);
                    //在线压低
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para35.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low);
                if (true == write_res_t) {
                    // 离线养护周期
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para34.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle);
                    // 在线压低
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para35.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low);
                    sleep(1500);
                    //单体温度上限
                    writeNodeData(FBSDeviceName+"/ncdGGIO1.Para4.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                    // 单体温度上限
                    writeNodeData(FBSDeviceName + "/ncdGGIO1.Para4.setMag.f", "SP",
                            (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
                }
                comm_res = true;
            }else if(FBS9100_ComBase.CMD_StartOffLineYH == cmd) {
                //启动离线养护
                //System.err.println("启动离线养护");
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO13.Oper", true);
            } else if (FBS9100_ComBase.CMD_StartOffLineYH == cmd) {
                // 启动离线养护
                System.err.println("启动离线养护");
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", true);
                comm_res = checkMakeSuccess(5);
            }else if(FBS9100_ComBase.CMD_StopOffLineYH == cmd) {
                //System.err.println("停止离线养护");
                //停止离线养护
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO13.Oper", false);
            } else if (FBS9100_ComBase.CMD_StopOffLineYH == cmd) {
                // System.err.println("停止离线养护");
                // 停止离线养护
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", false);
                comm_res = checkMakeSuccess(10);
            }else if(FBS9100_ComBase.CMD_ResetSystem == cmd) {
                //System.err.println("重启系统");
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO14.Oper", true);
            }else if(FBS9100_ComBase.CMD_GetSYSSetParam == cmd) {
                //获取系统参数
                m_FBS_SysParam.POF_BG_Boost_VolStart = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn113.mag.f", Fc.MX);                //电压过低阀值
                m_FBS_SysParam.POF_BG_Boost_VolStop = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn114.mag.f", Fc.MX);                //电压过高阀值
                m_FBS_SysParam.PowerBreakChargeCurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn115.mag.f", Fc.MX);                //电流异常阀值
                m_FBS_SysParam.CurrentTyte = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn116.mag.f", Fc.MX)*10);                //浮充电流阀值
                m_FBS_SysParam.GroupVolSorce = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn117.mag.f", Fc.MX)*10);                //在线电压低阀值
                m_FBS_SysParam.MonomerOrder = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn118.mag.f", Fc.MX));                    //设置主从机模式
            } else if (FBS9100_ComBase.CMD_ResetSystem == cmd) {
                // System.err.println("重启系统");
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO14.Oper", true);
            } else if (FBS9100_ComBase.CMD_GetSYSSetParam == cmd) {
                // 获取系统参数
                m_FBS_SysParam.POF_BG_Boost_VolStart = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn113.mag.f",
                        Fc.MX); // 电压过低阀值
                m_FBS_SysParam.POF_BG_Boost_VolStop = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn114.mag.f",
                        Fc.MX); // 电压过高阀值
                m_FBS_SysParam.PowerBreakChargeCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn115.mag.f",
                        Fc.MX); // 电流异常阀值
                m_FBS_SysParam.CurrentTyte = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn116.mag.f", Fc.MX)
                        * 10); // 浮充电流阀值
                m_FBS_SysParam.GroupVolSorce = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn117.mag.f",
                        Fc.MX) * 10); // 在线电压低阀值
                m_FBS_SysParam.MonomerOrder = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn118.mag.f",
                        Fc.MX)); // 设置主从机模式
                //m_FBS_SysParam.LoaderCount = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn120.mag.i",Fc.MX)); // 主从机使能
                //m_FBS_SysParam.DtCardCount = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn121.mag.i",Fc.MX)); // 干接点使能
                comm_res = true;
            }else if(FBS9100_ComBase.CMD_SetSYSSetParam == cmd) {
                //电压过低阀值
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para36.setMag.f", "SP", (float)m_FBS_SysParam.POF_BG_Boost_VolStart);
                //电压过高阀值
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para37.setMag.f", "SP",(float)m_FBS_SysParam.POF_BG_Boost_VolStop);
                //电流异常阀值
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para38.setMag.f", "SP",(float)m_FBS_SysParam.PowerBreakChargeCurr);
            } else if (FBS9100_ComBase.CMD_SetSYSSetParam == cmd) {
                // 电压过低阀值
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para36.setMag.f", "SP",
                        (float) m_FBS_SysParam.POF_BG_Boost_VolStart);
                // 电压过高阀值
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para37.setMag.f", "SP",
                        (float) m_FBS_SysParam.POF_BG_Boost_VolStop);
                // 电流异常阀值
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para38.setMag.f", "SP",
                        (float) m_FBS_SysParam.PowerBreakChargeCurr);
                sleep(1500);
                //浮充电流阀值
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para39.setMag.f", "SP",((float)m_FBS_SysParam.CurrentTyte)/10);
                //在线电压低阀值
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para40.setMag.f", "SP",((float)m_FBS_SysParam.GroupVolSorce)/10);
                // 浮充电流阀值
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para39.setMag.f", "SP",
                        ((float) m_FBS_SysParam.CurrentTyte) / 10);
                // 在线电压低阀值
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para40.setMag.f", "SP",
                        ((float) m_FBS_SysParam.GroupVolSorce) / 10);
                sleep(1500);
                //设置主从机模式
                writeNodeData(FBSDeviceName+"/ncdGGIO1.Para41.setMag.f", "SP",((float)m_FBS_SysParam.MonomerOrder));
                comm_res = true;
            }else if(FBS9100_ComBase.CMD_ClearSysAlarm == cmd) {
                //清除设备告警
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO15.Oper", true);
            }
                // 设置主从机模式
                writeNodeData(FBSDeviceName + "/ncdGGIO1.Para41.setMag.f", "SP", ((float) m_FBS_SysParam.MonomerOrder));
                comm_res = true;
            } else if (FBS9100_ComBase.CMD_ClearSysAlarm == cmd) {
                // 清除设备告警
                comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO15.Oper", true);
            }
            comm_res = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
            // e.printStackTrace();
            m_FBS_VCData.m_SysState.setErrCommCountInc(0);
            comm_res = false;
        }
        }
        return comm_res;
    }
    }
    public boolean checkMakeSuccess(int count) {
        boolean success = false;
        try {
@@ -1439,268 +1504,290 @@
            e1.printStackTrace();
        }
        int okcount = 0;
        for(int i = 0;i<55;i++) {
            int value = (int)(readInt64NodeData(FBSDeviceName+"/ncdGGIO1.AnIn119.mag.i", Fc.MX));
            if((value & MyUtil.power(2, count)) == MyUtil.power(2, count)) {
                //System.out.println("操作结果:" + value+"==="+MyUtil.power(2, count));
                okcount  ++;
                if(okcount >= 8) {
                    //System.out.println("校验成功===="+i);
        for (int i = 0; i < 55; i++) {
            int value = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn119.mag.i", Fc.MX));
            if ((value & MyUtil.power(2, count)) == MyUtil.power(2, count)) {
                // System.out.println("操作结果:" + value+"==="+MyUtil.power(2, count));
                okcount++;
                if (okcount >= 8) {
                    // System.out.println("校验成功===="+i);
                    success = true;
                    break;
                }
            } else {
                okcount = 0;
            }
            try {
            try {
                sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return success;
    }
    //int min = Arrays.stream(m_FBS_VCData.vol).min().getAsInt();
    //System.out.println(min);
    private void checkEventChange() {
        if(m_FBS_VCData.m_SysState.last_dev_61850alam != m_FBS_VCData.m_SysState.dev_61850alam) {
            //告警状态变化
            String[] last_alarm = m_FBS_VCData.m_SysState.last_dev_61850alam.split(",");
            String[] now_alarm = m_FBS_VCData.m_SysState.dev_61850alam.split(",");
            //依次判断每个告警的状态是否相同
            for(int i = 0;i < last_alarm.length && i < now_alarm.length;i++) {
                if(!last_alarm[i].equals(now_alarm[i])) {
                    //System.out.println(last_alarm[i] +"===="+now_alarm[i]);
                    BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, last_alarm[i].equals("true")?1:0, now_alarm[i].equals("true")?1:0, BTS61850_EventRecord.Event_RELAY_Error_Type+i);
                    events.add(event);
                }
            }
        }
        return success;
    }
    //min = Collections.min(Arrays.asList(ArrayUtils.toObject(a)));
    //System.out.println(min);
     //vc_data.vol
//    getResCapData(rtdata.MonStdCap,m_FBS_DiscParamFromDev.HourRate,m_FBS_VCData.battcap[0],m_FBS_VCData.getMaxMonomerVol,
    //        m_FBS_VCData.getMonomerVol(),rtdata.MonStdCap,CapType_Rest);
    /*********************************************************************************************/
    //获取剩余容量    STDAH:标称容量            HourRate:放电小时率    SumAH:测试容量        MaxMonomerVol:最大电池电压        MonomerVol:当前电池组的最低单体电压
    //MonomerVolType:电池标称电压        CapType:容量类型(定值是常量)
    //MaxMonomerVol = m_FBS_VCData.getMonomerVol();
    // 获取放电小时率        stdah:标纯容量              current:当前电流
    private float GetHourRate(float stdah,double current)
    {
        int index = 0;
        double[] value= {5.14, 3.06, 2.50, 2.00, 1.66, 1.46, 1.31, 1.18, 1.08, 1.00, 0.55, 0.40};
        float res;
        current = Math.abs(current);
        res = (float) (current/(stdah/10));
        if(res >= 5.14) return 1;
        else if(res <= 0.55) return 20;
        else
        {
            for(index=0; index<10; index++)
            {
                if((res<=value[index]) && (res>value[index+1]))
                    break;
                else continue;
            }
            if((value[index]-res) < (res-value[index+1]))
            {
                return (index+1);
            }
            else
            {
                if(index+2 > 10) return (20);
                else return (index+2);
            }
        }
    // int min = Arrays.stream(m_FBS_VCData.vol).min().getAsInt();
    // System.out.println(min);
    private void checkEventChange() {
        if (m_FBS_VCData.m_SysState.last_dev_61850alam != m_FBS_VCData.m_SysState.dev_61850alam) {
            // 告警状态变化
            String[] last_alarm = m_FBS_VCData.m_SysState.last_dev_61850alam.split(",");
            String[] now_alarm = m_FBS_VCData.m_SysState.dev_61850alam.split(",");
            // 依次判断每个告警的状态是否相同
            for (int i = 0; i < last_alarm.length && i < now_alarm.length; i++) {
                if (!last_alarm[i].equals(now_alarm[i])) {
                    // System.out.println(last_alarm[i] +"===="+now_alarm[i]);
                    BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId,
                            last_alarm[i].equals("true") ? 1 : 0, now_alarm[i].equals("true") ? 1 : 0,
                            BTS61850_EventRecord.Event_RELAY_Error_Type + i);
                    events.add(event);
                }
            }
        }
    }
    private float getResCapData(float STDAH,int HourRate,double SumAH,double MaxMonomerVol,
            double MonomerVol,float MonomerVolType,int CapType) {
        if((MaxMonomerVol - MonomerVolType*0.9) <= 0)
    // min = Collections.min(Arrays.asList(ArrayUtils.toObject(a)));
    // System.out.println(min);
    // vc_data.vol
//    getResCapData(rtdata.MonStdCap,m_FBS_DiscParamFromDev.HourRate,m_FBS_VCData.battcap[0],m_FBS_VCData.getMaxMonomerVol,
    // m_FBS_VCData.getMonomerVol(),rtdata.MonStdCap,CapType_Rest);
    /*********************************************************************************************/
    // 获取剩余容量 STDAH:标称容量 HourRate:放电小时率 SumAH:测试容量 MaxMonomerVol:最大电池电压
    // MonomerVol:当前电池组的最低单体电压
    // MonomerVolType:电池标称电压 CapType:容量类型(定值是常量)
    // MaxMonomerVol = m_FBS_VCData.getMonomerVol();
    // 获取放电小时率 stdah:标纯容量 current:当前电流
    private float GetHourRate(float stdah, double current) {
        int index = 0;
        double[] value = { 5.14, 3.06, 2.50, 2.00, 1.66, 1.46, 1.31, 1.18, 1.08, 1.00, 0.55, 0.40 };
        float res;
        current = Math.abs(current);
        res = (float) (current / (stdah / 10));
        if (res >= 5.14)
            return 1;
        else if (res <= 0.55)
            return 20;
        else {
            for (index = 0; index < 10; index++) {
                if ((res <= value[index]) && (res > value[index + 1]))
                    break;
                else
                    continue;
            }
            if ((value[index] - res) < (res - value[index + 1])) {
                return (index + 1);
            } else {
                if (index + 2 > 10)
                    return (20);
                else
                    return (index + 2);
            }
        }
    }
    private float getResCapData(float STDAH, int HourRate, double SumAH, double MaxMonomerVol, double MonomerVol,
            float MonomerVolType, int CapType) {
        if ((MaxMonomerVol - MonomerVolType * 0.9) <= 0)
            return 0;
        if(SumAH < 0)
        if (SumAH < 0)
            SumAH *= (-1);
        float tmp_cap;
        tmp_cap = (float) (MonomerVol - MonomerVolType * 0.9);
        tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate));
        float dt_vol = (float) (MaxMonomerVol - MonomerVolType*0.9);
        if(dt_vol < 0.01)
        float dt_vol = (float) (MaxMonomerVol - MonomerVolType * 0.9);
        if (dt_vol < 0.01)
            dt_vol = (float) 0.01;
        tmp_cap = tmp_cap/dt_vol;
        if(tmp_cap < 0)
        tmp_cap = tmp_cap / dt_vol;
        if (tmp_cap < 0)
            tmp_cap = 0;
        if(CapType == CapType_Rest)
        if (CapType == CapType_Rest)
            return tmp_cap;
        else if(CapType == CapType_Real)
        else if (CapType == CapType_Real)
            return (float) (tmp_cap + SumAH * N_TO_10H(HourRate));
        else
            return (float) ((tmp_cap + SumAH * N_TO_10H(HourRate))*100 / STDAH);
            return (float) ((tmp_cap + SumAH * N_TO_10H(HourRate)) * 100 / STDAH);
    }
    private double N_TO_10H(int n_H) {
        // TODO Auto-generated method stub
         switch(n_H)
            {
                case  1 : return(1/0.55);
                case  2 : return(1/0.61);
                case  3 : return(1/0.75);
                case  4 : return(1/0.79);
                case  5 : return(1/0.833);
                case  6 : return(1/0.876);
                case  7 : return(1/0.917);
                case  8 : return(1/0.944);
                case  9 : return(1/0.974);
                case  10: return(1/1);
                case  20: return(1/1.1);
            }
            return 1.0;
        switch (n_H) {
        case 1:
            return (1 / 0.55);
        case 2:
            return (1 / 0.61);
        case 3:
            return (1 / 0.75);
        case 4:
            return (1 / 0.79);
        case 5:
            return (1 / 0.833);
        case 6:
            return (1 / 0.876);
        case 7:
            return (1 / 0.917);
        case 8:
            return (1 / 0.944);
        case 9:
            return (1 / 0.974);
        case 10:
            return (1 / 1);
        case 20:
            return (1 / 1.1);
        }
        return 1.0;
    }
    public double getMonomerVol(double vol[]) {
        //vol[]
        // vol[]
        double min = vol[0];
        int len = 24;//24节电池
        for (int i = 1; i < len; i++) {
            //System.out.println("vol[i]:"+i+vol[i]);
            if(min>vol[i]){
                min = vol[i];
            }else {
            }
        }
        return min;
        int len = 24;// 24节电池
        for (int i = 1; i < len; i++) {
            // System.out.println("vol[i]:"+i+vol[i]);
            if (min > vol[i]) {
                min = vol[i];
            } else {
            }
        }
        return min;
    }
    public double getMaxMonomerVol(double vol[]) {
        //vol[]
        // vol[]
        double max = vol[0];
        int len = 24;
        for (int i = 1; i < len; i++) {
            if(max < vol[i]){
                max = vol[i];
                //System.out.println(vol[i]);
            }else {
            }
        }
        return max;
        int len = 24;
        for (int i = 1; i < len; i++) {
            if (max < vol[i]) {
                max = vol[i];
                // System.out.println(vol[i]);
            } else {
            }
        }
        return max;
    }
    /*********************************************************************************************/
    /**
     * 更新电池组数据
     *
     * @param vc_data
     */
    private void getFBS9100MonVolData(FBS9100_VCData vc_data)
    {
        if(beforeWorkState==2 && vc_data.m_SysState.WorkState!=2) {
            int mon_index = 0;
            for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
                if(null != m_RTData[n]) {
                    m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType,
                                                                    vc_data.m_SysState.WorkState);
                    //m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]);
                    m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],vc_data.m_SysState.WorkState);
                    m_RTData[n].updata_BattRtData_To_RamDb();
                    m_RTData[n].updata_BattRtSate_To_RamDb();
                }
            }
            if(numberDevState>200) {
                for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
                    if(null != m_RTData[n]) {
                        m_RTData[n].mTestData.updataCapTest((float)vc_data.battcap[n]);
                        m_RTData[n].mTestData.upDatebattState(test_type);
                        m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],vc_data.m_SysState.WorkState);
                    }
                }
            }
            if(numberDevState>400) {
                beforeWorkState = vc_data.m_SysState.WorkState;
            }
        }else {
            int mon_index = 0;
            for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
                numberDevState = 0;
                if(null != m_RTData[n]) {
                    for(int index=0; index < m_RTData[n].MonCount; index++) {
                        if(mon_index >= FBS9100_ComBase.MonomerCountMax) {
                            break;
                        }
                        m_RTData[n].al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index];
                        m_RTData[n].al_MonVol.get(index).monRes = (float) vc_data.res[mon_index];
                        m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[mon_index];
                        m_RTData[n].al_MonVol.get(index).mon_JH_curr = (float) vc_data.mon_JH[mon_index];
                        mon_index++;
                    }
                    m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType,
                                                                    vc_data.m_SysState.WorkState);
                    m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float) vc_data.onlinevol[n]);
                    m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float) vc_data.groupvol[n]);
                    m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n], vc_data.m_SysState.WorkState);
                    m_RTData[n].mTestData.updataCapTest((float)vc_data.battcap[n]);
                    m_RTData[n].mTestData.upDatebattState(test_type);
                    m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]);
                    m_RTData[n].mTestData.updateGroupTmp((float)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn6.mag.f", Fc.MX));
                    //m_RTData[n].mTestData.updatetestTimeLong(vc_data.testTime.getSecondCount());
                    //---------------------------------------------------------------------------//
                    /*System.out.println("MonStdCap"+MonStdCap);
                    System.out.println("m_FBS_DiscParamFromDev.HourRate"+m_FBS_DiscParamFromDev.HourRate);
                    System.out.println("vc_data.battcap[n]"+vc_data.battcap[n]);
                    System.out.println("vc_data.getMaxMonomerVol()"+vc_data.getMaxMonomerVol());
                    System.out.println("vc_data.getMonomerVol()"+vc_data.getMonomerVol());
                    System.out.println("MonVolStd"+MonVolStd);
                    System.out.println("CapType_Rest"+CapType_Rest);*/
                    double maxvol = getMaxMonomerVol(vc_data.vol);
                    double minvol = getMonomerVol(vc_data.vol);
                    //System.out.println("maxvol:"+maxvol);
                    //System.out.println("minvol:"+minvol);
                    m_FBS_DiscParamFromDev.HourRate=(int) GetHourRate(MonVolStd,vc_data.battcurr[n]);
                    float restcap = getResCapData(MonStdCap,m_FBS_DiscParamFromDev.HourRate,vc_data.battcap[n],maxvol,
                            minvol,MonVolStd,CapType_Rest);
                    float realcap = getResCapData(MonStdCap,m_FBS_DiscParamFromDev.HourRate,vc_data.battcap[n],maxvol,
                            minvol,MonVolStd,CapType_Real);
                    //System.out.println("restcap"+restcap);
                    //System.out.println("realcap"+realcap);
                    m_RTData[n].mTestData.updatebattRestCap(restcap);
                    m_RTData[n].mTestData.updatebattRealCap(realcap);
                    //System.out.println(mTestData.battRestCap);
    private void getFBS9100MonVolData(FBS9100_VCData vc_data) {
        if (beforeWorkState == 2 && vc_data.m_SysState.WorkState != 2) {
            int mon_index = 0;
            for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
                if (null != m_RTData[n]) {
                    m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType,
                            vc_data.m_SysState.WorkState);
                    // m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float)
                    // vc_data.battcurr[n]);
                    m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
                            vc_data.m_SysState.WorkState);
                    m_RTData[n].updata_BattRtData_To_RamDb();
                    m_RTData[n].updata_BattRtSate_To_RamDb();
                    //---------------------------------------------------------------------------//
                }
            }
            beforeWorkState = vc_data.m_SysState.WorkState;
                }
            }
            if (numberDevState > 200) {
                for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
                    if (null != m_RTData[n]) {
                        m_RTData[n].mTestData.updataCapTest((float) vc_data.battcap[n]);
                        m_RTData[n].mTestData.upDatebattState(test_type);
                        m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
                                vc_data.m_SysState.WorkState);
                    }
                }
            }
            if (numberDevState > 400) {
                beforeWorkState = vc_data.m_SysState.WorkState;
            }
        } else {
            int mon_index = 0;
            for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
                numberDevState = 0;
                if (null != m_RTData[n]) {
                    for (int index = 0; index < m_RTData[n].MonCount; index++) {
                        if (mon_index >= FBS9100_ComBase.MonomerCountMax) {
                            break;
                        }
                        m_RTData[n].al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index];
                        m_RTData[n].al_MonVol.get(index).monRes = (float) vc_data.res[mon_index];
                        m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[mon_index];
                        m_RTData[n].al_MonVol.get(index).mon_JH_curr = (float) vc_data.mon_JH[mon_index];
                        mon_index++;
                    }
                    m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType,
                            vc_data.m_SysState.WorkState);
                    m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float) vc_data.onlinevol[n]);
                    m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float) vc_data.groupvol[n]);
                    m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
                            vc_data.m_SysState.WorkState);
                    m_RTData[n].mTestData.updataCapTest((float) vc_data.battcap[n]);
                    m_RTData[n].mTestData.upDatebattState(test_type);
                    m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]);
                    m_RTData[n].mTestData
                            .updateGroupTmp((float) readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn6.mag.f", Fc.MX));
                    // m_RTData[n].mTestData.updatetestTimeLong(vc_data.testTime.getSecondCount());
                    // ---------------------------------------------------------------------------//
                    /*
                     * System.out.println("MonStdCap"+MonStdCap);
                     * System.out.println("m_FBS_DiscParamFromDev.HourRate"+m_FBS_DiscParamFromDev.
                     * HourRate); System.out.println("vc_data.battcap[n]"+vc_data.battcap[n]);
                     * System.out.println("vc_data.getMaxMonomerVol()"+vc_data.getMaxMonomerVol());
                     * System.out.println("vc_data.getMonomerVol()"+vc_data.getMonomerVol());
                     * System.out.println("MonVolStd"+MonVolStd);
                     * System.out.println("CapType_Rest"+CapType_Rest);
                     */
                    double maxvol = getMaxMonomerVol(vc_data.vol);
                    double minvol = getMonomerVol(vc_data.vol);
                    // System.out.println("maxvol:"+maxvol);
                    // System.out.println("minvol:"+minvol);
                    m_FBS_DiscParamFromDev.HourRate = (int) GetHourRate(MonVolStd, vc_data.battcurr[n]);
                    float restcap = getResCapData(MonStdCap, m_FBS_DiscParamFromDev.HourRate, vc_data.battcap[n],
                            maxvol, minvol, MonVolStd, CapType_Rest);
                    float realcap = getResCapData(MonStdCap, m_FBS_DiscParamFromDev.HourRate, vc_data.battcap[n],
                            maxvol, minvol, MonVolStd, CapType_Real);
                    // System.out.println("restcap"+restcap);
                    // System.out.println("realcap"+realcap);
                    m_RTData[n].mTestData.updatebattRestCap(restcap);
                    m_RTData[n].mTestData.updatebattRealCap(realcap);
                    // System.out.println(mTestData.battRestCap);
                    m_RTData[n].updata_BattRtData_To_RamDb();
                    m_RTData[n].updata_BattRtSate_To_RamDb();
                    // ---------------------------------------------------------------------------//
                }
            }
            beforeWorkState = vc_data.m_SysState.WorkState;
        }
    }
    private BattData_RT[] setip()
    {
        for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
            if(null != m_RTData[n]) {
                //m_RTData[n].updata_SetIp();
                //System.out.println(n+""+m_RTData[n].updata_SetIp());
                m_RTData[n].updata_SetIp(); //取0
                //---------------------------------------------------------------------------//
            }
        }
        return m_RTData;
    }
    //返回指定时间间隔间的秒数
    public static long calculTimelong(Date start,Date end) {
        return (end.getTime() - start.getTime())/1000;
    }
    private BattData_RT[] setip() {
        for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
            if (null != m_RTData[n]) {
                // m_RTData[n].updata_SetIp();
                // System.out.println(n+""+m_RTData[n].updata_SetIp());
                m_RTData[n].updata_SetIp(); // 取0
                // ---------------------------------------------------------------------------//
            }
        }
        return m_RTData;
    }
    // 返回指定时间间隔间的秒数
    public static long calculTimelong(Date start, Date end) {
        return (end.getTime() - start.getTime()) / 1000;
    }
    /*********************************************************************************************/
}
/********************************* end of file SocketClient.java *************************************/
/*********************************
 * end of file SocketClient.java
 *************************************/
src/com/dec/fbs9100/FBS9100_SysState.java
@@ -38,6 +38,9 @@
    public float    condvoldp = 0;
    public float    condcurr = 0;
    
    public int MasterSlave_en = 0;                            //主从机使能
    public int DryContact_en = 0;                            //干接点使能
    //public int      captest_stop_type = -1;
    public int        CommCount = 0;                            //����������������
    public int        ErrCommCount = 0;
src/com/dec/fbs9100/FBS9100_Task_Thread_SQL.java
@@ -452,7 +452,7 @@
    /***********************************************************************************/
    
    /**
     * ������������������id������������  tb_fbs9100_state ������
     *     更新数据库表 tb_fbs9100_state 更新61850设备工作状态
     * @param con_pool
     * @param v_data
     * @param dev_id
@@ -507,7 +507,7 @@
                        + "dev_61850alarms= '" +v_data.m_SysState.dev_61850alam+"'";
        
        
        //String sql_str_update = "UPDATE " + sql_str_base + " WHERE dev_id=" + dev_id;
        String sql_str_update = "UPDATE " + sql_str_base + " WHERE dev_id=" + m_pm.dev_id;
        String sql_str_replace = "REPLACE INTO " + sql_str_base;
        
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
@@ -515,12 +515,16 @@
        
        if(v_data.m_SysState.CapTestStopType>=0 && v_data.m_SysState.CapTestStopType<=256) {
            //System.out.println(sql_str_replace);
            ResultSet res = sql.sqlMysqlQuery("SELECT * FROM db_ram_db.tb_fbs9100_state WHERE dev_id = " + m_pm.dev_id);
            try {
                //System.out.println(sql_str_replace);
                if(res.next()) {
                    sql.sqlMysqlExecute(sql_str_update);
                } else {
                    sql.sqlMysqlExecute(sql_str_replace);
                }
                //System.out.println(sql_str_replace);
                
                sql.sqlMysqlExecute(sql_str_replace);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                sql.close_con();
@@ -528,6 +532,8 @@
        }
    }
    /***********************************************************************************/
    /*
     * 更新指定设备除硫模块的工作状态
     */
@@ -707,6 +713,10 @@
                    
                    param.m_FBS_DiscParam.OffLineYH_Cycle = res.getInt("OffLineYH_Cycle");
                    param.m_FBS_DiscParam.OnLineVol_Low = res.getFloat("OnLineVol_Low");
                    param.m_FBS_DiscParam.OffLineYHstarttime = res.getTimestamp("OffLineYHstarttime");
                    param.m_FBS_DiscParam.OffLineYHTimes = res.getInt("OffLineYHTimes");
                    param.m_FBS_DiscParam.OffLineYHOnceCycle = res.getInt("OffLineYHOnceCycle");
                    
                }
            }
@@ -1274,7 +1284,9 @@
                            + " PowerBreakChargeCurr =" + sysparam.PowerBreakChargeCurr  + ", "        //电流异常阀值
                            + " POF_BG_Boost_VolStop =" + sysparam.POF_BG_Boost_VolStop  + ", "        //电压过高阀值
                            + " POF_BG_Boost_VolStart =" + sysparam.POF_BG_Boost_VolStart  + ", "    //电压过低阀值
                            + " MonomerOrder =" + sysparam.MonomerOrder  + " ";                        //主从机模式
                            + " MonomerOrder =" + sysparam.MonomerOrder  + ", "                        //主从机模式
                            + " LoaderCount =" + sysparam.LoaderCount  + ", "                        //主从机使能
                            + " DtCardCount =" + sysparam.DtCardCount  + " ";                        //干接点使能
                            //+ " where dev_id = " + param.dev_id;
            //String sql_str_update = "UPDATE " + sql_str_base;
            String sql_str_replace = " REPLACE INTO " + sql_str_base;
src/com/version_inf/version_inf.txt
@@ -1,3 +1,14 @@
协转版本    2.00X
佛山版本
    均衡供电(旧版本)
    除硫模块
    均衡电流
韶关版本【无互控/无离线养护】
    均衡供电(旧版本)
    除硫模块
    均衡电流
1.109 edit lijun at 2019-11-19
    该版本的程序包括获取均衡电流,除硫养护,离线养护,重启设备等功能
    
src/org/openmuc/openiec61850/ClientAssociation.java
@@ -139,7 +139,6 @@
                        // Error decoding the OSI headers of the received packet
                        continue;
                    }
                    MMSpdu decodedResponsePdu = new MMSpdu();
                    try {
                         decodedResponsePdu.decode(new ByteArrayInputStream(buffer), null);
@@ -174,7 +173,7 @@
                        }
                    }
                    else if (decodedResponsePdu.getRejectPDU() != null) {
                        synchronized (incomingResponses) {
                        synchronized (incomingResponses) {
                            if (expectedResponseId == null) {
                                // Discarding Reject MMS PDU because no listener for request was found.
                                continue;
@@ -193,14 +192,15 @@
                        }
                    }
                    else if (decodedResponsePdu.getConfirmedErrorPDU() != null) {
                        synchronized (incomingResponses) {
                        synchronized (incomingResponses) {
                            if (expectedResponseId == null) {
                                // Discarding ConfirmedError MMS PDU because no listener for request was found.
                                continue;
                            }
                            else if (decodedResponsePdu.getConfirmedErrorPDU().getInvokeID().value
                                    .intValue() != expectedResponseId) {
                                // Discarding ConfirmedError MMS PDU because no listener with fitting invokeID was
                                // Discarding ConfirmedError MMS PDU because no listener with fitting invokeID was
                                // found.
                                continue;
                            }
@@ -216,13 +216,13 @@
                        synchronized (incomingResponses) {
                            if (expectedResponseId == null) {
                                // Discarding ConfirmedResponse MMS PDU because no listener for request was found.
                                continue;
                                continue;
                            }
                            else if (decodedResponsePdu.getConfirmedResponsePDU().getInvokeID().value
                                    .intValue() != expectedResponseId) {
                                // Discarding ConfirmedResponse MMS PDU because no listener with fitting invokeID was
                                // found.
                                continue;
                                continue;
                            }
                            else {
                                try {
@@ -235,6 +235,7 @@
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
                close(e);
            } catch (Exception e) {
                close(new IOException("unexpected exception while receiving", e));
src/org/openmuc/openiec61850/ClientSap.java
@@ -334,7 +334,6 @@
                authenticationParameter, acseSap, proposedMaxMmsPduSize, proposedMaxServOutstandingCalling,
                proposedMaxServOutstandingCalled, proposedDataStructureNestingLevel, servicesSupportedCalling,
                responseTimeout, messageFragmentTimeout, reportListener);
        return clientAssociation;
    }