From 831953352ea4df0ebaa2f47fb6b82b082883d6b5 Mon Sep 17 00:00:00 2001 From: DELL <1525436766@qq.com> Date: 星期六, 27 七月 2024 14:04:57 +0800 Subject: [PATCH] 兼容锂电BTS设备读取 --- iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java | 179 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 124 insertions(+), 55 deletions(-) diff --git a/iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java b/iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java index 4585710..4753802 100644 --- a/iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java +++ b/iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java @@ -27,6 +27,7 @@ import org.openmuc.openiec61850.FcModelNode; import org.openmuc.openiec61850.ModelNode; import org.openmuc.openiec61850.ServerModel; +import org.openmuc.openiec61850.ServerSap; import org.openmuc.openiec61850.ServiceError; import org.openmuc.openiec61850.clientgui.BasicDataBind; import org.openmuc.openiec61850.clientgui.databind.Float32DataBind; @@ -145,7 +146,7 @@ Set_AppAliveState(true); while (true == Get_AppAliveState()) { - logger.error("IP:" + FBSDeviceIp + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ..."); + logger.error("IP:" + FBSDeviceIp + " ID:" + m_FBSDevId + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ..."); // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool); try { Thread.sleep(5000); @@ -157,8 +158,6 @@ m_ClientSap = new ClientSap(); m_Association = m_ClientSap.associate(InetAddress.getByName(FBSDeviceIp), 102, null, null); - - // if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) { // System.err.println("SSSSSSSSSSS"); // //涓庨鍔犺浇鐨勬ā鍨嬫枃浠朵笉涓�鑷存椂 @@ -168,9 +167,24 @@ } catch (Exception e) { - logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp); + logger.error(e.toString(), e); + } + if(null == m_ServerModel && FBSDeviceName.contains("ZJDY")) { + //绱櫠鍗忚浆鑻ョ洿杩炶繛鎺ヤ笉涓婃椂瑙f瀽icd鏂囦欢 + try { + List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("zjdy_bts_LiBatt.icd"); + m_ServerModel = serverSaps.get(0).serverModel; + } catch (Exception e) { + logger.error(e.toString(), e); + } + } + + if(null == m_ServerModel) { + logger.info("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp +" ID:"+m_FBSDevId); continue; } + //System.out.println(m_ServerModel); + if(this.FBSDeviceName.indexOf("BTSE2")>0) { //閫傞厤鍚勪釜涓嶅悓鍗忚鍚嶇О鐨�61850璁惧閫氫俊[璇诲彇鏀剧數鍙傛暟鏃剁敤鍒癩 ZJDYCPSS = this.FBSDeviceName.replace("BTSE2", "CPSS"); @@ -401,8 +415,8 @@ numberDevState = 0; } +// System.err.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); @@ -807,12 +821,33 @@ //---------------------------------Log Level.TRACE-------------------------------------// logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYc)", FBSDeviceName); //-------------------------------------------------------------------------------------// + DataSet ds = null; + DataSet ds_tmp; + int BattMonCount = 24; + if(null != m_RTData[0]) { + if(m_RTData[0].MonCount > 24) { + BattMonCount = m_RTData[0].MonCount; + } + } + if(FBSDeviceName.contains("ZJDY")) { + //绱櫠鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure"); + //System.out.println(m_ServerModel.getDataSet(FBSDeviceName)+"@@"); + }else { + //鍏辨祹鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); + } + //System.out.println(ds_tmp); + if(null == ds_tmp) { + return false; + } + ds = ds_tmp.copy(); ///-------------------------------------------------------------------------------------// - DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy(); int size_cnt = ds.getMembers().size(); m_Association.getDataSetValues(ds); int m = 0; boolean isStartReadMonData = true; + for (int n = 0; n<size_cnt; n++) { if(null == ds.getMembers().get(n).getChild("mag")) { continue; @@ -951,21 +986,37 @@ m = n; isStartReadMonData = false; } - //鍗曚綋鏁版嵁 - if ((n >= m) && (n < (m + 24 * 1))) { - m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat(); - } - else if ((n >= (m + 24 * 1)) && (n < (m + 24 * 2))) { - m_FBS_VCData.res[n - (m + 24 * 1)] = ((BdaFloat32) fc_mode).getFloat(); - } - 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(); + + if(FBSDeviceName.contains("ZJDY")) { + //閿傜數鍗曚綋鏁扮洰 + BattMonCount = 80; + //閿傜數BTS + if ((n >= m) && (n < (m + BattMonCount * 1))) { + m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat(); + } + else if ((n >= (m + BattMonCount * 1)) && (n < (m + BattMonCount * 2))) { + m_FBS_VCData.tmp[n - (m + BattMonCount * 1)] = ((BdaFloat32) fc_mode).getFloat(); + } + else if ((n >= (m + BattMonCount * 2)) && (n < (m + BattMonCount * 3))) { + m_FBS_VCData.mon_restcap[n - (m + BattMonCount * 2)] = ((BdaFloat32) fc_mode).getFloat(); + } + }else { + //鍗曚綋鏁版嵁[鍗楃憺鍗忚浆] + if ((n >= m) && (n < (m + 24 * 1))) { + m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat(); + } + else if ((n >= (m + 24 * 1)) && (n < (m + 24 * 2))) { + m_FBS_VCData.res[n - (m + 24 * 1)] = ((BdaFloat32) fc_mode).getFloat(); + } + 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 * 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(); + } } } @@ -995,18 +1046,30 @@ } //m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX); //鏍稿鍚姩澶辫触鍘熷洜 - + //System.err.println("############"); m_FBS_VCData.m_SysState.setCommCountInc(); - ds = null; + ds = null;ds_tmp = null; } //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.dsBtseYx)", FBSDeviceName); //-------------------------------------------------------------------------------------// - String c[] = null; - DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy(); - int size_cnt_stat = ds_stat.getMembers().size(); + DataSet ds_stat = null; + DataSet ds_tmp = null; + + if(FBSDeviceName.contains("ZJDY")) { + //绱櫠鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm"); + }else { + //鍏辨祹鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy(); + } + if(null == ds_tmp) { + return false; + } + ds_stat = ds_tmp.copy(); + boolean[] alm = new boolean[] {false,false,false,false,false}; int size_cnt = ds_stat.getMembers().size(); //System.out.println(FBSDeviceName + "/LLN0.dsDevState 鑺傜偣鏁�:"+size_cnt); @@ -1038,24 +1101,6 @@ } } -// 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; @@ -1063,7 +1108,7 @@ checkEventChange(); // 璁板綍褰撳墠鐨勫憡璀� //System.out.println(sb); m_FBS_VCData.m_SysState.setCommCountInc(); - ds_stat = null; + ds_stat = null;ds_tmp = null; //娓呯┖鍐呭瓨鏁版嵁 } if(2 == (numberDevState%3)) { @@ -1071,14 +1116,23 @@ logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevState )", FBSDeviceName); //-------------------------------------------------------------------------------------// comm_res = true; - DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState").copy(); - if(null == ds) { - //鍏煎鑰佺増鏈崗杞暟鎹� - ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); + DataSet ds = null; + DataSet ds_tmp = null; + if(FBSDeviceName.contains("ZJDY")) { + //绱櫠鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); + }else { + //鍏辨祹鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); + if(null == ds_tmp) { + //鍏煎鑰佺増鏈崗杞暟鎹� + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); + } } - if(null == ds) { + if(null == ds_tmp) { return false; } + ds = ds_tmp.copy(); int size_cnt = ds.getMembers().size(); //System.out.println(FBSDeviceName + "/LLN0.dsDevState 鑺傜偣鏁�:"+size_cnt); m_Association.getDataSetValues(ds); @@ -1165,7 +1219,7 @@ m_FBS_VCData.m_SysState.setCommCountInc(); //----------------- 璇诲埌鐘舵�佹暟鎹悗鍐嶆洿鏂版暟鎹簱鏁版嵁 -------------------// getFBS9100MonVolData(m_FBS_VCData); - ds = null; + ds = null;ds_tmp = null; } //m_FBS_VCData.m_SysState.resetErrCommCount(); @@ -1213,13 +1267,27 @@ //-------------------------------------------------------------------------------------// comm_res = true; } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) { - DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy(); + DataSet ds_pm = null; + DataSet ds_tmp = null; + if(FBSDeviceName.contains("ZJDY")) { + //绱櫠鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); + }else { + //鍏辨祹鍗忚浆 + ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); + } + + if(null == ds_tmp) { + return false; + } + ds_pm = ds_tmp.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, "寮�濮嬭鍙栨斁鐢靛弬鏁�"); + logger.printf(Level.DEBUG, "寮�濮嬭鍙栨斁鐢靛弬鏁�"); for (int n = 0; n < size_cnt; n++) { - if(null == ds_pm.getMembers().get(n).getChild("mag")) { + if(null == ds_pm.getMembers().get(n).getChild("mag").getChild("f")) { + System.out.println(ds_pm.getMembers().get(n).getChild("mag").toString()); continue; } @@ -1268,6 +1336,7 @@ //System.out.println(fc_model_str); } } + //System.out.println("m_FBS_DiscParamFromDev.DisTime:"+m_FBS_DiscParamFromDev.DisTime); if(FBSDeviceName.contains("BTSE2")) { //娴嬭瘯鏃堕暱[绗簩濂梋 m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO2.HiTestTmhour.mag.f", Fc.MX)*60); @@ -1280,7 +1349,7 @@ m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX); } - ds_pm = null; + ds_pm = null;ds_tmp = null; }else { m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX); -- Gitblit v1.9.1