From eb38174bb11f3076902aeb9812df08c2ac9aabeb Mon Sep 17 00:00:00 2001
From: DELL <1525436766@qq.com>
Date: 星期四, 28 十一月 2024 14:26:03 +0800
Subject: [PATCH] V1.109  2024-11-27 lijun 	1.新增紫晶DCDC电源数据解析[界面展示为直流配电柜和高频开关柜] 		第一套电源协议名称:  	ZJDYDDPS 		第一套电源协议名称:   	ZJDYDDPS2

---
 IEC61850_ForPowerSupply_ForNW/src/com/power/alarm/PwrDeviceAlarm_Thread.java   |    2 
 IEC61850_ForPowerSupply_ForNW/src/com/power/comm/Power_61850_SocketClient.java |  209 ++++++++++++++++++++++++++++++++-------------------
 IEC61850_ForPowerSupply_ForNW/src/com/version_inf/version_inf.txt              |    4 
 3 files changed, 134 insertions(+), 81 deletions(-)

diff --git a/IEC61850_ForPowerSupply_ForNW/src/com/power/alarm/PwrDeviceAlarm_Thread.java b/IEC61850_ForPowerSupply_ForNW/src/com/power/alarm/PwrDeviceAlarm_Thread.java
index b305eaa..0aaa0e5 100644
--- a/IEC61850_ForPowerSupply_ForNW/src/com/power/alarm/PwrDeviceAlarm_Thread.java
+++ b/IEC61850_ForPowerSupply_ForNW/src/com/power/alarm/PwrDeviceAlarm_Thread.java
@@ -258,7 +258,7 @@
 	
 	public void run() {	
 		
-		int waittime = PwrDeviceAlarm_Data.COMM_ERR_TIME_INTERVAL+15;
+		int waittime = PwrDeviceAlarm_Data.COMM_ERR_TIME_INTERVAL + 30;
 		
 		logger.info("PwrDeviceAlarm_Thread start After " + waittime + " Seconds...");
 		
diff --git a/IEC61850_ForPowerSupply_ForNW/src/com/power/comm/Power_61850_SocketClient.java b/IEC61850_ForPowerSupply_ForNW/src/com/power/comm/Power_61850_SocketClient.java
index c480f04..bef7962 100644
--- a/IEC61850_ForPowerSupply_ForNW/src/com/power/comm/Power_61850_SocketClient.java
+++ b/IEC61850_ForPowerSupply_ForNW/src/com/power/comm/Power_61850_SocketClient.java
@@ -226,7 +226,7 @@
 		rand_index++;
 		*/
 		if(pwrDev_rtData.PowerDevProtocolName.contains("DDPS")) {			
-			//DCDC电源数据
+			//紫晶DCDC电源数据
 			if(devIndex%3 == 0) {
 				if(PowerData_RT.PowerCabinet_EXIST == this.pwrDev_rtData.is_highfreq_cabinet) {
 					read_DCDC_Power();
@@ -282,9 +282,9 @@
 			DataSet ds = null;
 			//************ 遥测量 **************
 			//---------------------------------Log Level.TRACE-------------------------------------//
-			logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dscV)", dcdcDeviceName);
+			logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsMeasure1)", dcdcDeviceName);
 			///-------------------------------------------------------------------------------------//
-			ds = m_ServerModel.getDataSet(dcdcDeviceName + "/LLN0.dscV");
+			ds = m_ServerModel.getDataSet(dcdcDeviceName + "/LLN0.dsMeasure1");
 			if(null == ds) {
 				setErrCommCountInc(0);
 				return;
@@ -380,9 +380,9 @@
 			DataSet ds = null;
 			//************ 遥信量 **************
 			//---------------------------------Log Level.TRACE-------------------------------------//
-			logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dscAla)", dcdcDeviceName);
+			logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsState1)", dcdcDeviceName);
 			//-------------------------------------------------------------------------------------//
-			ds = m_ServerModel.getDataSet(dcdcDeviceName + "/LLN0.dscAla");
+			ds = m_ServerModel.getDataSet(dcdcDeviceName + "/LLN0.dsState1");
 			if(null == ds) {
 				setErrCommCountInc(0);
 				return;
@@ -446,66 +446,6 @@
 							
 							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout2_UnderV_ID, 0, timeout_tag,dt);
 						}
-					}else if(fc_model_str.contains("/gswGGIO1.Alm.stVal")) {	//第1路输入开关跳闸
-						origin_val = pwrDev_rtData.m_dcData.is_in1_swtrip;
-						pwrDev_rtData.m_dcData.is_in1_swtrip = ((BdaBoolean)fc_mode).getValue();
-//						pwrDev_rtData.m_dcData.is_in1_swtrip = readBooleanNodeData(dcDeviceName + "/gswGGIO1.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_in1_swtrip);
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_in1_swtrip==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-//							Date dt = readNodeTimeStamp(dcDeviceName + "/gswGGIO1.Alm.t", Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DcIn1_Trip_ID, 0, timeout_tag,dt);
-						}
-					}else if(fc_model_str.contains("/gswGGIO2.Alm.stVal")) {	//第2路输入开关跳闸
-						origin_val = pwrDev_rtData.m_dcData.is_in2_swtrip;
-						pwrDev_rtData.m_dcData.is_in2_swtrip = ((BdaBoolean)fc_mode).getValue();
-//						pwrDev_rtData.m_dcData.is_in2_swtrip = readBooleanNodeData(dcDeviceName + "/gswGGIO2.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_in2_swtrip);		
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_in2_swtrip==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-//							Date dt = readNodeTimeStamp(dcDeviceName + "/gswGGIO2.Alm.t", Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DcIn2_Trip_ID, 0, timeout_tag,dt);
-						}
-					}else if(fc_model_str.contains("/fsw1GGIO") && fc_model_str.contains("Alm.stVal")) {
-						//System.out.println(fc_model_str + "===" + fsw1_Trip_idx);		
-						
-						origin_val = pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx];
-						pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx] = ((BdaBoolean)fc_mode).getValue();
-						//pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx] = readBooleanNodeData(dcDeviceName + ref, Fc.ST, pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx]);	
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx]==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-							//Date dt = readNodeTimeStamp(dcDeviceName + reft, Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DC1_SW_N_Trip_ID, (fsw1_Trip_idx+1), timeout_tag,dt);
-						}
-						fsw1_Trip_idx ++;
-					}else if(fc_model_str.contains("/fsw2GGIO") && fc_model_str.contains("Alm.stVal")) {
-						//System.out.println(fc_model_str + "===" + fsw2_Trip_idx);						
-						origin_val = pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx];
-						pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx] = ((BdaBoolean)fc_mode).getValue();
-//						pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[i] = readBooleanNodeData(dcDeviceName + ref, Fc.ST, pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[i]);	
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx]==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-							//Date dt = readNodeTimeStamp(dcDeviceName + reft, Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DC2_SW_N_Trip_ID, (fsw2_Trip_idx+1), timeout_tag,dt);
-						}
-						fsw2_Trip_idx ++;
-					}else if(fc_model_str.contains("/etmGGIO1.Alm.stVal")) {
-						origin_val = pwrDev_rtData.m_dcData.is_tempalarm;
-						pwrDev_rtData.m_dcData.is_tempalarm = ((BdaBoolean)fc_mode).getValue();
-//						pwrDev_rtData.m_dcData.is_tempalarm = readBooleanNodeData(dcDeviceName + "/etmGGIO.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_tempalarm);		
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_tempalarm==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-//							Date dt = readNodeTimeStamp(dcDeviceName + "/etmGGIO.Alm.t", Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TempAlarm_ID, 0, timeout_tag,dt);
-						}
 					}else if(fc_model_str.contains("/dbmGGIO.Ind3.stVal")) {
 						origin_val = pwrDev_rtData.m_dcData.is_dc_monitorerr;
 						pwrDev_rtData.m_dcData.is_dc_monitorerr = ((BdaBoolean)fc_mode).getValue();
@@ -517,19 +457,7 @@
 							
 							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_MonitorErr_ID, 0, timeout_tag,dt);
 						}
-					}else if(fc_model_str.contains("/calmGGIO1.Alm.stVal")) {
-						origin_val = pwrDev_rtData.m_dcData.is_total_alarm;
-						pwrDev_rtData.m_dcData.is_total_alarm = ((BdaBoolean)fc_mode).getValue();
-//						pwrDev_rtData.m_dcData.is_total_alarm = readBooleanNodeData(dcDeviceName + "/calmGGIO.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_total_alarm);
-						if(origin_val==false && pwrDev_rtData.m_dcData.is_total_alarm==true) {
-							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
-//							Date dt = readNodeTimeStamp(dcDeviceName + "/calmGGIO.Alm.t", Fc.ST);
-							timeout_tag = checkIfBoolNodeTimeOut(dt);
-							
-							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TolalAlarm_ID, 0, timeout_tag,dt);
-						}
-					}
-					
+					}					
 					else if(fc_model_str.contains("/chmGGIO1.Ind2.stVal")) {//模块1关机
 						origin_val = pwrDev_rtData.m_acdcData.is_acdcMod_off[0];
 						pwrDev_rtData.m_acdcData.is_acdcMod_off[0] = ((BdaBoolean)fc_mode).getValue();	
@@ -845,6 +773,131 @@
 			logger.error(e.toString(), e);
 		}
 		
+		
+		try {
+			
+			DataSet ds = null;
+			//************ 告警量 **************
+			//---------------------------------Log Level.TRACE-------------------------------------//
+			logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsAlm1)", dcdcDeviceName);
+			//-------------------------------------------------------------------------------------//
+			ds = m_ServerModel.getDataSet(dcdcDeviceName + "/LLN0.dsAlm1");
+			if(null == ds) {
+				setErrCommCountInc(0);
+				return;
+			}
+			ds = ds.copy();
+			int size_cnt = ds.getMembers().size();			
+			m_Association.getDataSetValues(ds);
+			int m = 0;
+			int fsw1_Trip_idx = 0;
+			int fsw2_Trip_idx = 0;
+			
+			for (int n = 0; n<size_cnt; n++) {
+				if(null == ds.getMembers().get(n).getChild("stVal")) {
+					continue;
+				}						
+				FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("stVal");
+				
+				FcModelNode fc_mode_t = (FcModelNode) ds.getMembers().get(n).getChild("t");
+				
+				if(null != fc_mode){							
+					String fc_model_str = fc_mode.toString1();					
+					if(fc_model_str.contains("/gswGGIO1.Alm.stVal")) {	//第1路输入开关跳闸
+						origin_val = pwrDev_rtData.m_dcData.is_in1_swtrip;
+						pwrDev_rtData.m_dcData.is_in1_swtrip = ((BdaBoolean)fc_mode).getValue();
+//						pwrDev_rtData.m_dcData.is_in1_swtrip = readBooleanNodeData(dcDeviceName + "/gswGGIO1.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_in1_swtrip);
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_in1_swtrip==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+//							Date dt = readNodeTimeStamp(dcDeviceName + "/gswGGIO1.Alm.t", Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DcIn1_Trip_ID, 0, timeout_tag,dt);
+						}
+					}else if(fc_model_str.contains("/gswGGIO2.Alm.stVal")) {	//第2路输入开关跳闸
+						origin_val = pwrDev_rtData.m_dcData.is_in2_swtrip;
+						pwrDev_rtData.m_dcData.is_in2_swtrip = ((BdaBoolean)fc_mode).getValue();
+//						pwrDev_rtData.m_dcData.is_in2_swtrip = readBooleanNodeData(dcDeviceName + "/gswGGIO2.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_in2_swtrip);		
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_in2_swtrip==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+//							Date dt = readNodeTimeStamp(dcDeviceName + "/gswGGIO2.Alm.t", Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DcIn2_Trip_ID, 0, timeout_tag,dt);
+						}
+					}else if(fc_model_str.contains("/fsw1GGIO") && fc_model_str.contains("Alm.stVal")) {
+						//System.out.println(fc_model_str + "===" + fsw1_Trip_idx);		
+						
+						origin_val = pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx];
+						pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx] = ((BdaBoolean)fc_mode).getValue();
+						//pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx] = readBooleanNodeData(dcDeviceName + ref, Fc.ST, pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx]);	
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_fsw1_Trip_SW[fsw1_Trip_idx]==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+							//Date dt = readNodeTimeStamp(dcDeviceName + reft, Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DC1_SW_N_Trip_ID, (fsw1_Trip_idx+1), timeout_tag,dt);
+						}
+						fsw1_Trip_idx ++;
+					}else if(fc_model_str.contains("/fsw2GGIO") && fc_model_str.contains("Alm.stVal")) {
+						//System.out.println(fc_model_str + "===" + fsw2_Trip_idx);						
+						origin_val = pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx];
+						pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx] = ((BdaBoolean)fc_mode).getValue();
+//						pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[i] = readBooleanNodeData(dcDeviceName + ref, Fc.ST, pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[i]);	
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_fsw2_Trip_SW[fsw2_Trip_idx]==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+							//Date dt = readNodeTimeStamp(dcDeviceName + reft, Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DC2_SW_N_Trip_ID, (fsw2_Trip_idx+1), timeout_tag,dt);
+						}
+						fsw2_Trip_idx ++;
+					}else if(fc_model_str.contains("/etmGGIO1.Alm.stVal")) {
+						origin_val = pwrDev_rtData.m_dcData.is_tempalarm;
+						pwrDev_rtData.m_dcData.is_tempalarm = ((BdaBoolean)fc_mode).getValue();
+//						pwrDev_rtData.m_dcData.is_tempalarm = readBooleanNodeData(dcDeviceName + "/etmGGIO.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_tempalarm);		
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_tempalarm==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+//							Date dt = readNodeTimeStamp(dcDeviceName + "/etmGGIO.Alm.t", Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TempAlarm_ID, 0, timeout_tag,dt);
+						}
+					}else if(fc_model_str.contains("/calmGGIO1.Alm.stVal")) {
+						origin_val = pwrDev_rtData.m_dcData.is_total_alarm;
+						pwrDev_rtData.m_dcData.is_total_alarm = ((BdaBoolean)fc_mode).getValue();
+//						pwrDev_rtData.m_dcData.is_total_alarm = readBooleanNodeData(dcDeviceName + "/calmGGIO.Alm.stVal", Fc.ST, pwrDev_rtData.m_dcData.is_total_alarm);
+						if(origin_val==false && pwrDev_rtData.m_dcData.is_total_alarm==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+//							Date dt = readNodeTimeStamp(dcDeviceName + "/calmGGIO.Alm.t", Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TolalAlarm_ID, 0, timeout_tag,dt);
+						}
+					}else if(fc_model_str.contains("/commGGIO1.Ind1.stVal")) {
+						//协转与高频开关柜通信故障
+						origin_val = pwrDev_rtData.m_acdcData.is_comm_err;
+						pwrDev_rtData.m_acdcData.is_comm_err = ((BdaBoolean)fc_mode).getValue();
+						//System.out.println("is_comm_err:"+pwrDev_rtData.m_acdcData.is_comm_err);
+						if(origin_val==false && pwrDev_rtData.m_acdcData.is_battgroup1_fuse==true) {
+							Date dt = ((BdaTimestamp)fc_mode_t).getDate();
+							//Date dt = readNodeTimeStamp(acdcDeviceName + "/gswGGIO4.Alm.t", Fc.ST);
+							timeout_tag = checkIfBoolNodeTimeOut(dt);
+							
+							PowerData_RT_SQL.make_TimeOutTag(m_ConnPool, pwrDev_rtData.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_PWRDEV_CommErr_ID, 0, timeout_tag,dt);
+						}
+					}
+					
+				}
+			}
+			pwrDev_rtData.setCommSuccessCountInc();
+			pwrDev_rtData.SetPwrDeviceCommErrState(false);
+			resetErrCommCount("read_DC_LD.dsDcswibYx");
+		} catch (Exception e) {
+			setErrCommCountInc(0);
+			logger.error(e.toString(), e);
+		}
+		
 	}
 
 	private void read_ACDC_LD() {
diff --git a/IEC61850_ForPowerSupply_ForNW/src/com/version_inf/version_inf.txt b/IEC61850_ForPowerSupply_ForNW/src/com/version_inf/version_inf.txt
index a5e6b50..08f1660 100644
--- a/IEC61850_ForPowerSupply_ForNW/src/com/version_inf/version_inf.txt
+++ b/IEC61850_ForPowerSupply_ForNW/src/com/version_inf/version_inf.txt
@@ -12,8 +12,8 @@
 		
 V1.109  2024-11-27 lijun
 	1.新增紫晶DCDC电源数据解析[界面展示为直流配电柜和高频开关柜]	  
-		第一套电源协议名称:   WATTGY01DDPS
-		第一套电源协议名称:   WATTGY01DDPS1
+		第一套电源协议名称:  	ZJDYDDPS
+		第一套电源协议名称:   	ZJDYDDPS2
 
 V1.108  2024-10-23 lijun
 	1.添加"协转与电源通信故障告警",方便排查现场问题

--
Gitblit v1.9.1