DELL
2024-04-19 065b39de59eb4488592a59d53a1812fcc4b4d630
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java
@@ -15,6 +15,7 @@
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.openmuc.openiec61850.BdaBitString;
import org.openmuc.openiec61850.BdaBoolean;
import org.openmuc.openiec61850.BdaFloat32;
import org.openmuc.openiec61850.BdaInt64;
@@ -32,6 +33,7 @@
import org.openmuc.openiec61850.clientgui.databind.Int64DataBind;
import org.openmuc.openiec61850.clientgui.databind.VisibleStringDataBind;
import com.base.AppConfig;
import com.base.Com;
import com.battdata_rt.BattData_RT;
import com.battdata_rt.BattData_RT_Array;
@@ -39,6 +41,9 @@
/****************************************************************************************************/
public class BTS_61850_SocketClient extends Thread {
   public static final int Sign_Type_Default = 0;
   public static final int Sign_Type_InTow   = 1;      //正常1托2
   private boolean m_App_IsAlive = true;
   private FBS9100_VCData m_FBS_VCData = null;
   private FBS9100_ParamDischarge m_FBS_DiscParam = null;
@@ -140,7 +145,7 @@
      Set_AppAliveState(true);
      
      while (true == Get_AppAliveState()) {
         logger.error("IP:" + FBSDeviceIp + " - BTS_IEC61850_ClientThread Started ...");
         logger.error("IP:" + FBSDeviceIp + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ...");
         // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
         try {
            Thread.sleep(5000);
@@ -152,18 +157,24 @@
            m_ClientSap = new ClientSap();
            m_Association = m_ClientSap.associate(InetAddress.getByName(FBSDeviceIp), 102, null, null);
            
            if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) {
               //与预加载的模型文件不一致时
//            if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) {
//               System.err.println("SSSSSSSSSSS");
//               //与预加载的模型文件不一致时
               m_ServerModel = m_Association.retrieveModel();
            }
            //System.err.println("Dev_BASE:"+m_ServerModel.getBaseDevName());;
//            }
            System.err.println("Dev_BASE:"+m_ServerModel.getBaseDevName());;
            
              
         } catch (Exception e) {
            logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp);
            continue;
         }
         if(this.FBSDeviceName.indexOf("BTSE")>0) {
         if(this.FBSDeviceName.indexOf("BTSE2")>0) {
            //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
            ZJDYCPSS = this.FBSDeviceName.replace("BTSE2", "CPSS");
         }else if(this.FBSDeviceName.indexOf("BTSE")>0) {
            //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
            ZJDYCPSS = this.FBSDeviceName.replace("BTSE", "CPSS");
         }
@@ -647,7 +658,7 @@
      FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc);
      if (null == fcModelNode) {
         logger.error("readFloatNodeData error, no modenode was found.....");
         logger.error(reference+"readFloatNodeData error, no modenode was found.....");
         return 0;
      }
      try {
@@ -767,20 +778,9 @@
           m_Association.getDataValues(fcModelNode);  
           m_FBS_VCData.m_SysState.resetErrCommCount();
           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];
           resul = String.format("%s,%s", result);
           if(fc_mode instanceof BdaVisibleString) {
              resul = new String(((BdaVisibleString)fc_mode).getValue());
           }
        } catch (ServiceError e) {
            System.out.println("Service error: " + e.getMessage());
            m_FBS_VCData.m_SysState.addErrCommCount();
@@ -804,12 +804,11 @@
            events.clear();
            
            if(0 == (numberDevState%3)) {
               System.out.println();
               //---------------------------------Log Level.TRACE-------------------------------------//
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsMeasure)", FBSDeviceName);
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYc)", FBSDeviceName);
               //-------------------------------------------------------------------------------------//
               //-------------------------------------------------------------------------------------//
               DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure").copy();
               ///-------------------------------------------------------------------------------------//
               DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy();
               int size_cnt = ds.getMembers().size();
               m_Association.getDataSetValues(ds);
               int m = 0;
@@ -942,7 +941,11 @@
                        fbs9100_jhpowerState.setDev_temp(((BdaFloat32) fc_mode).getFloat() - 10);
                        //fbs9100_jhpowerState.setDev_temp(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn27.mag.f", Fc.MX));                  //均衡模块温度
                     }
                     if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn28.mag.f")) {
                        //南瑞当前点位值为float格式
                        m_FBS_VCData.m_SysState.AlarmState = Math.round(((BdaFloat32)fc_mode).getFloat());
                        //m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX);
                     }
                     else if(fc_model_str.contains(FBSDeviceName + "/celGGIO1.AnIn")) {
                        if(isStartReadMonData) {
                           m = n;
@@ -958,7 +961,9 @@
                        else if ((n >= (m + 24 * 2)) && (n < (m + 24 * 3))) {
                           m_FBS_VCData.tmp[n - (m + 24 * 2)] = ((BdaFloat32) fc_mode).getFloat();
                        }
                        //跳过剩余剩余容量
                        else if ((n >= (m + 24 * 3)) && (n < (m + 24 * 4))) {
                           m_FBS_VCData.mon_restcap[n - (m + 24 * 2)] = ((BdaFloat32) fc_mode).getFloat();
                        }
                        else if ((n >= (m + 24 * 4)) && (n < (m + 24 * 5))) {
                           m_FBS_VCData.mon_JH[n - (m + 24 * 4)] = ((BdaFloat32) fc_mode).getFloat();
                        }
@@ -997,29 +1002,61 @@
            //System.err.println(m_FBS_VCData.m_SysState.ErrCommCount);
            if(1 == (numberDevState%3)) {
               //---------------------------------Log Level.TRACE-------------------------------------//
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm)", FBSDeviceName);
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYx)", FBSDeviceName);
               //-------------------------------------------------------------------------------------//
               String c[] = null;
               DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm");
               DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy();
               int size_cnt_stat = ds_stat.getMembers().size();
               c = new String[size_cnt_stat];
               String[] split = null;
               split = new String[2];
               boolean[] alm  = new boolean[] {false,false,false,false,false};
               int size_cnt = ds_stat.getMembers().size();
               //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
               m_Association.getDataSetValues(ds_stat);
               String sb = null;
               String temp = "%s";
               //限制当前告警个数
               size_cnt_stat = 5;
               for (int n = 0; n < size_cnt_stat; n++) {
                  //System.err.println(ds_stat.getMembers().get(n).getName());
                  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";
               // 屏蔽当前根节点下新添加的ukey内容
               for (int n = 0; n < size_cnt; n++) {
                  if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                     //System.err.println(ds.getMembers().get(n).getChild("mag").toString1());
                     continue;
                  }
               }
               sb = String.format(temp, (Object[])c);
                  FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                  if(fc_mode instanceof BdaBoolean) {
                     //JTextField tf_t = (JTextField) data.getValueField();
                     //System.out.println("n:"+n+" "+fc_mode.toString1());
                     String fc_mode_str = fc_mode.toString1();
                     if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm1")){
                        alm[0] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm2")){
                        alm[1] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm3")){
                        alm[2] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm4")){
                        alm[3] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm5")){
                        alm[4] = ((BdaBoolean)fc_mode).getValue();
                     }
                  }else{
                  }
               }
//               c = new String[size_cnt_stat];
//               String[] split = null;
//               split = new String[2];
//               m_Association.getDataSetValues(ds_stat);
//               String sb = null;
//               String temp = "%s";
//               //限制当前告警个数
//               size_cnt_stat = 5;
//               for (int n = 0; n < size_cnt_stat; n++) {
//                  //System.err.println(ds_stat.getMembers().get(n).getName());
//                  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, (Object[])c);
               String sb = String.format("%b,%b,%b,%b,%b",alm[0],alm[1],alm[2],alm[3],alm[4]);
               m_FBS_VCData.m_SysState.last_dev_61850alam = m_FBS_VCData.m_SysState.dev_61850alam; // 记录上一次告警状态
               m_FBS_VCData.m_SysState.dev_61850alam = sb;
   
@@ -1034,12 +1071,19 @@
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevState )", FBSDeviceName);
               //-------------------------------------------------------------------------------------//
               comm_res = true;
               DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
               DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState").copy();
               if(null == ds) {
                  //兼容老版本协转数据
                  ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
               }
               if(null == ds) {
                  return false;
               }
               int size_cnt = ds.getMembers().size();
               //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
               m_Association.getDataSetValues(ds);
               // 屏蔽当前根节点下新添加的ukey内容
               for (int n = 0; n < size_cnt && n < 120; n++) {
               for (int n = 0; n < size_cnt; n++) {
                  if(null == ds.getMembers().get(n).getChild("mag") || null == ds.getMembers().get(n).getChild("mag").getChild("f")) {
                     //System.err.println(ds.getMembers().get(n).getChild("mag").toString1());
                     continue;
@@ -1047,7 +1091,7 @@
                  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:"+n+" "+fc_mode.toString1());
                  //System.out.println("n:"+n+" "+fc_mode.toString1()+"==="+((BdaFloat32) fc_mode).getFloat().intValue());
                  String fc_mode_str = fc_mode.toString1();
                  if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.StaNum.mag.f")){
                     int st = ((BdaFloat32) fc_mode).getFloat().intValue();
@@ -1169,12 +1213,12 @@
            //-------------------------------------------------------------------------------------//
            comm_res = true;
         } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) {
            DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
            DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy();
            if(null != ds_pm && null !=  ds_pm.getMembers()) {
               int size_cnt = ds_pm.getMembers().size();
               m_Association.getDataSetValues(ds_pm);
               //logger.printf(Level.DEBUG, "开始读取放电参数");
               for (int n = 0; n < size_cnt && n < 10; n++) {
//               logger.printf(Level.DEBUG, "开始读取放电参数");
               for (int n = 0; n < size_cnt; n++) {
                  if(null == ds_pm.getMembers().get(n).getChild("mag")) {
                     continue;
                  }
@@ -1183,11 +1227,17 @@
                  BasicDataBind<?> data = new Float32DataBind((BdaFloat32) fc_mode);
                  JTextField tf_t = (JTextField) data.getValueField();
                  String fc_model_str = fc_mode.toString1();
                  //logger.error(fc_model_str+"==:"+tf_t.getText());
                  if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f")) {
                     m_FBS_DiscParamFromDev.DisCurr = Float.parseFloat(tf_t.getText());
                     //m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX);
                  ///*/*兼容点集中的组2参数为组1*/*/}else if (fc_model_str.contains(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f")) {
                  }else if (fc_model_str.contains("/cheGGIO1.HiTestTmhour.mag.f")) {
                     float dis_hour_t = Float.parseFloat(tf_t.getText());
                     dis_hour_t = dis_hour_t * 60;
                     m_FBS_DiscParamFromDev.DisTime = (int) dis_hour_t;
                     //m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60);
                  }else if (fc_model_str.contains("/cheGGIO2.HiTestTmhour.mag.f")) {
                     float dis_hour_t = Float.parseFloat(tf_t.getText());
                     dis_hour_t = dis_hour_t * 60;
                     m_FBS_DiscParamFromDev.DisTime = (int) dis_hour_t;
@@ -1202,6 +1252,9 @@
                  }else if (fc_model_str.contains("/cheGGIO1.LoBatVal.mag.f")) {
                     m_FBS_DiscParamFromDev.GroupVol_LOW = Float.parseFloat(tf_t.getText());
                     //m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX);
                  }else if (fc_model_str.contains("/cheGGIO2.LoBatVal.mag.f")) {
                     m_FBS_DiscParamFromDev.GroupVol_LOW = Float.parseFloat(tf_t.getText());
                     //m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX);
                  }else if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.LoCelVol.mag.f")) {
                     m_FBS_DiscParamFromDev.MonomerVol_LOW = Float.parseFloat(tf_t.getText());
                     //m_FBS_DiscParamFromDev.MonomerVol_LOW= readFloatNodeData(FBSDeviceName + "/ncdGGIO1.LoCelVol.mag.f", Fc.MX);
@@ -1212,11 +1265,24 @@
                     m_FBS_DiscParamFromDev.ChargeCurrSet = Float.parseFloat(tf_t.getText());
                     //m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.ChargeCurr.mag.f", Fc.MX);
                  }else {
                     System.out.println(fc_model_str);
                     //System.out.println(fc_model_str);
                  }
               }
               if(FBSDeviceName.contains("BTSE2")) {
                  //测试时长[第二套]
                  m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO2.HiTestTmhour.mag.f", Fc.MX)*60);
                  //组端下限
                  m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO2.LoBatVal.mag.f", Fc.MX);
               }else{
                  //测试时长[第一套]
                  m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60);
                  //组端下限
                  m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX);
               }
               ds_pm = null;
            }else {
               m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX);
               m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60);
               m_FBS_DiscParamFromDev.DisCap = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiTestBatAh.mag.f", Fc.MX);
@@ -1242,28 +1308,28 @@
            } else if (m_FBS_VCData.m_SysState.WorkState == 5) {
               count = 8;
            }
            comm_res = checkMakeSuccess(count);
            //comm_res = checkMakeSuccess(count);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Stop, res:%b", FBSDeviceIp, comm_res);
            //-------------------------------------------------------------------------------------//
         } else if (FBS9100_ComBase.CMD_StartDischarge == cmd) {
            if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO1")) return false;
            comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO1.Oper", true);
            comm_res = checkMakeSuccess(0);
            //comm_res = checkMakeSuccess(0);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s DevId:%d operate FBS9100_ComBase.CMD_StartDischarge, res:%b", FBSDeviceIp,m_FBSDevId, comm_res);
            //-------------------------------------------------------------------------------------//
         } else if (FBS9100_ComBase.CMD_StartResDischarge == cmd) {
            if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO2")) return false;
            comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO2.Oper", true);
            comm_res = checkMakeSuccess(2);
            //comm_res = checkMakeSuccess(2);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartResDischarge, res:%b", FBSDeviceIp, comm_res);
            //-------------------------------------------------------------------------------------//
         } else if (FBS9100_ComBase.CMD_StartKIDI == cmd) {
            if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO3")) return false;
            comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO3.Oper", true);
            comm_res = checkMakeSuccess(1);
            //comm_res = checkMakeSuccess(1);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartKIDI, res:%b", FBSDeviceIp, comm_res);
            //-------------------------------------------------------------------------------------//
@@ -1523,7 +1589,7 @@
               comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO9.Oper", true); // 模块41除硫
            }break;
            }
            comm_res = checkMakeSuccess(3);
            //comm_res = checkMakeSuccess(3);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Start_FODCL_test, "
                        + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res);
@@ -1556,7 +1622,7 @@
                  comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", false);
               }break;
            }
            comm_res = checkMakeSuccess(9);
            //comm_res = checkMakeSuccess(9);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Stop_FOD_test, "
                        + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res);
@@ -1580,7 +1646,7 @@
               comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", true);
            }break;
            }
            comm_res = checkMakeSuccess(4);
            //comm_res = checkMakeSuccess(4);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Start_FODYH_test, "
                        + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res);
@@ -1638,14 +1704,14 @@
         } else if (FBS9100_ComBase.CMD_StartOffLineYH == cmd) {
            if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO14")) return false;
            comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO14.Oper", true);
            comm_res = checkMakeSuccess(5);
            //comm_res = checkMakeSuccess(5);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartOffLineYH, res:%b", FBSDeviceIp, comm_res);
            //------------------------------------------------------------------------------------//
         } else if (FBS9100_ComBase.CMD_StopOffLineYH == cmd) {
            if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO14")) return false;
            comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO14.Oper", false);
            comm_res = checkMakeSuccess(10);
            //comm_res = checkMakeSuccess(10);
            //---------------------------------Log Level.WARN-------------------------------------//
            logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StopOffLineYH, res:%b", FBSDeviceIp, comm_res);
            //------------------------------------------------------------------------------------//
@@ -1767,6 +1833,7 @@
      }
      int okcount = 0;
      for (int i = 0; i < 85; i++) {
         //南瑞中间协转无当前点位注释调用
         //System.out.println("验签校验返回signOpRes:" + readInt64NodeData(FBSDeviceName + "/btgGGIO1.signOpRes.mag.i", Fc.MX));
         int value = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn119.mag.i", Fc.MX));
         if ((value & MyUtil.power(2, count)) == MyUtil.power(2, count)) {
@@ -1835,7 +1902,7 @@
            logger.info("写入签名:"+signature);
            writeNodeDataString(FBSDeviceName+"/btgGGIO1.sign.setVal", "SP",signature);
            //writeNodeDataString(FBSDeviceName+"/ncdGGIO1.sign.setVal", "SP",signature);
            Thread.sleep(900);
            Thread.sleep(1500);
            return true;
         }
         //writeNodeDataString(FBSDeviceName+"/ncdGGIO1.sign.setVal", "SP",m_StatAndParam.publicKeyY);
@@ -2053,6 +2120,7 @@
                  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];
                  m_RTData[n].al_MonVol.get(index).mon_rest_cap = (float) vc_data.mon_restcap[mon_index];
                  mon_index++;
               }
@@ -2153,7 +2221,7 @@
    * @param agree
    * @return
    */
   public static String getUKEYRootDomStr(String agree) {
   public String getUKEYRootDomStr(String agree) {
      String str1=agree.substring(0, agree.indexOf("BTSE"));
      /**
       * @lijun 兼容佛山三期版本,签名中的BTSE路径一拖一和一拖二均为BTSE
@@ -2161,15 +2229,45 @@
//      if(str1.length() > 0) {
//         return "BTSE";
//      }
       return agree.substring(str1.length(), agree.length());
      //兼容正常1托2
      if((null != m_RTData[0]) && (m_RTData[0].sign_type == Sign_Type_InTow)) {
         return agree.substring(str1.length(), agree.length());
      }else {
         return "BTSE";
      }
   }
   
   public static void main(String[] args) {
      System.out.println(getUKEYRootDomStr("ZJDYBTSE2"));
      //System.out.println(getUKEYRootDomStr("ZJDYBTSE2"));
      String btsid = "1234567890BTSE/ncdGGIO1.SPCSO2";
      String keyid = "37395256AD72043037395256AD720430";
      System.out.println(createSignature(btsid, keyid));
      MysqlConnPool pool = new MysqlConnPool("127.0.0.1", 3360, 10);
      BTS_61850_SocketClient ce = new BTS_61850_SocketClient(pool, new FBS9100_StatAndParam("127.0.01", 618500001), new BattData_RT_Array(new AppConfig(), new AppParam(), pool) , null);
      ce.m_RTData[0] = new BattData_RT(new AppConfig(), new AppParam(), pool);
      ce.m_RTData[0].sign_type = 0;
      System.out.println(ce.getUKEYRootDomStr("ZJDYBTSE2"));
      boolean[] a  = new boolean[] {false,true,false};
      String format1 = String.format("%b,%b,%b",a[0],a[1],a[2] );
      System.out.println(format1);
      String ZJDYCPSS = "";
      String FBSDeviceName = "ZJDYBTSE2";
      if(FBSDeviceName.indexOf("BTSE2")>0) {
         //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
         ZJDYCPSS = FBSDeviceName.replace("BTSE2", "CPSS");
      }else if(FBSDeviceName.indexOf("BTSE")>0) {
         //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
         ZJDYCPSS = FBSDeviceName.replace("BTSE", "CPSS");
      }
      System.out.println(ZJDYCPSS);
   }
   /*********************************************************************************************/