DELL
2024-06-26 4d6520c20a22475b72dd969381ea71dee4c1c9cd
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java
@@ -154,16 +154,17 @@
         try {
            m_ClientSap = new ClientSap();
            m_Association = m_ClientSap.associate(InetAddress.getByName(FBSDeviceIp), 102, null, null);
            if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) {
            System.out.println(m_ServerModel);
            if(null == m_ServerModel || !FBSDeviceName.contains(m_ServerModel.getBaseDevName())) {
               //与预加载的模型文件不一致时
               System.out.println(99999);
               m_ServerModel = m_Association.retrieveModel();
            }
            //System.err.println("Dev_BASE:"+m_ServerModel.getBaseDevName());;
            
              
         } catch (Exception e) {
            logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp);
            logger.error("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp);
            continue;
         }
         if(this.FBSDeviceName.indexOf("BTSE")>0) {
@@ -992,7 +993,12 @@
                        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_rest_cap[n - (m + 24 * 3)] = ((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();
                        }
@@ -1033,31 +1039,66 @@
               //---------------------------------Log Level.TRACE-------------------------------------//
               logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm)", FBSDeviceName);
               //-------------------------------------------------------------------------------------//
               String c[] = null;
               DataSet tmp_ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm");
               if(null == tmp_ds_stat) {
                  return false;
               }
               DataSet ds_stat = tmp_ds_stat.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_stat = tmp_ds_stat.getMembers().size();
               m_Association.getDataSetValues(ds_stat);
               String sb = null;
               String temp = "%s";
               //限制当前告警个数
               size_cnt_stat = 5;
               int mon_alm_idx = 0;
               for (int n = 0; n < size_cnt_stat; n++) {
                  //System.err.println(ds_stat.getMembers().get(n).getName());
                  if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                     System.err.println(ds_stat.getMembers().get(n).getChild("mag").toString1());
                     continue;
                  }
                  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";
                  if(fc_mode instanceof BdaBoolean) {
                     //JTextField tf_t = (JTextField) data.getValueField();
                     String fc_mode_str = fc_mode.toString1();
                     System.out.println("n:"+n+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                     if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm1")){
                        //通信蓄电池远程核容装置常闭接触器K1告警
                        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")){
                        //通信蓄电池远程核容装置二极管D1告警
                        alm[3] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO") && fc_mode_str.contains(".Alm5")){
                        //干接点输入故障-10个干接点点位有一个告警即触发干接点告警
                        alm[4] = (alm[4] || ((BdaBoolean)fc_mode).getValue());
                     }else if(fc_mode_str.contains(FBSDeviceName + "/btgGGIO1.Alm1")) {
                        //电池组端电压告警
                        m_FBS_VCData.groupvolalm[0] = ((BdaBoolean)fc_mode).getValue();
                     }else if(fc_mode_str.contains(FBSDeviceName + "/celGGIO1.Alm")) {
                        //电池组单体告警
                        if(0 <= mon_alm_idx && mon_alm_idx < 24) {
                           //单体电压告警
                           m_FBS_VCData.monvol_alm[mon_alm_idx] = ((BdaBoolean)fc_mode).getValue();
                        }else if(24 <= mon_alm_idx && mon_alm_idx < 48) {
                           //单体内阻告警
                           m_FBS_VCData.monres_alm[mon_alm_idx-24] = ((BdaBoolean)fc_mode).getValue();
                        }else if(48 <= mon_alm_idx && mon_alm_idx < 72) {
                           //单体温度告警
                           m_FBS_VCData.montmp_alm[mon_alm_idx-48] = ((BdaBoolean)fc_mode).getValue();
                        }else if(72 <= mon_alm_idx && mon_alm_idx < 96) {
                           //单体剩余容量告警
                           m_FBS_VCData.moncap_alm[mon_alm_idx-72] = ((BdaBoolean)fc_mode).getValue();
                        }
                        mon_alm_idx ++;
                     }
                  }
               }
               sb = String.format(temp, (Object[])c);
               getFBS9100MonAlmData(m_FBS_VCData);
               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;
   
@@ -1082,7 +1123,7 @@
               //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;
@@ -1158,6 +1199,16 @@
                  }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn110.mag.f")) {
                     fod_state.RestTime_four = ((BdaFloat32) fc_mode).getFloat();
                     //fod_state.RestTime_four = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn110.mag.f", Fc.MX);
                  }else if(fc_mode_str.contains(ZJDYCPSS + "/cheGGIO1.LoBatAh.mag.f")) {
                     //核容终止时剩余容量
                     m_FBS_VCData.test_end_cap[0] = ((BdaFloat32) fc_mode).getFloat();
                  }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn4.mag.f")) {
                     //核容终止时组端电压
                     m_FBS_VCData.test_end_vol[0] = ((BdaFloat32) fc_mode).getFloat();
                  }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn3.mag.f")) {
                     //核容终止时间
                     m_FBS_VCData.test_timelong[0] = ((BdaFloat32) fc_mode).getFloat()*60*60;
                     //System.out.println("test_timelong:" + ((BdaFloat32) fc_mode).getFloat());
                  }
               
               }
@@ -2130,6 +2181,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_rest_cap[mon_index];
                  mon_index++;
               }
@@ -2251,7 +2303,36 @@
      
      System.out.println(createSignature(btsid, keyid));
   }
   /**
    *    更新电池组数据
    *
    * @param vc_data
    */
   private void getFBS9100MonAlmData(FBS9100_VCData vc_data) {
      {
         int mon_index = 0;
         for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
            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_alm =  vc_data.monvol_alm[mon_index];
                  m_RTData[n].al_MonVol.get(index).monres_alm =  vc_data.monres_alm[mon_index];
                  m_RTData[n].al_MonVol.get(index).montmp_alm =  vc_data.montmp_alm[mon_index];
                  m_RTData[n].al_MonVol.get(index).monrestcap_alm = vc_data.moncap_alm[mon_index];
                  mon_index++;
               }
               m_RTData[n].updata_BattRtAlARM_To_RamDb();
               BTS61850_Task_Thread_SQL.updateBattRtState_Table(m_ConnPool,vc_data,m_RTData);
               // ---------------------------------------------------------------------------//
            }
         }
      }
   }
   /*********************************************************************************************/
}
/*********************************