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