From d53c03f383ecd50b62dd1e069c339b57ded8702b Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 01 十二月 2023 14:52:25 +0800
Subject: [PATCH] 1、RTU模拟测试系统开发; 2、RTU模拟测试系统管控系统开发; 3、联合测试中发现的协议bug修改; 4、联合测试中发现通信中间件的bug修改。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java            |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java                    |   52 +-
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java                |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java                |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java            |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java              |   14 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml                                     |   16 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkReceive.java                   |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml                                               |   95 +++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java                |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeConfig.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml                                                                    |  120 ++++++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/RmiRequestVo.java               |   13 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/RtuSv.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/AdapterImp_RtuDataUnit.java              |   19 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/PipIrrMwAcceptApplication.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java                   |    3 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java                    |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java      |    5 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java               |  142 ++++++-
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java                        |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskConfig.java                  |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java                |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiRequestVo.java            |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java                    |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java                 |   10 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java               |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java     |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java                      |   15 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java             |  118 +++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java           |   30 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/pom.xml                                                                |   15 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java                   |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/说明.txt                      |    0 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataCache.java                |   12 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java     |    5 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java       |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java                |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnit.java                 |   47 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java                      |   12 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java                                     |   60 +-
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java                    |    4 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeParse.java                   |    7 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitConfigVo.java         |    5 
 /dev/null                                                                                                             |   95 -----
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java                |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java           |   21 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitAdapter.java          |   10 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java |    4 
 49 files changed, 750 insertions(+), 278 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
index 9ab7b11..c1b8d7f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -2,6 +2,7 @@
 
 import com.dy.common.util.ByteUtil;
 import com.dy.common.util.ByteUtilUnsigned;
+import com.dy.common.util.CRC8_for_2_0;
 
 
 public class CommonV1_0_1 {
@@ -49,13 +50,26 @@
 
 
 	/**
-	 * 鍒嗘瀽鏁版嵁瀛楄妭鏁�
+	 * 鍒嗘瀽甯ч暱搴�
+	 * @param bs 涓婅瀛楄妭鏁扮粍
+	 * @return 鏁版嵁闀垮害
+	 * @throws Exception 寮傚父
+	 */
+	public int parseFrameLen(byte[] bs)throws Exception{
+		int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		return len + ProtocolConstantV206V1_0_0.lenHead2ctrl + ProtocolConstantV206V1_0_0.lenTail ;
+	}
+
+
+	/**
+	 * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟
 	 * @param bs 涓婅瀛楄妭鏁扮粍
 	 * @return 鏁版嵁闀垮害
 	 * @throws Exception 寮傚父
 	 */
 	public int parseDataLen(byte[] bs)throws Exception{
-		return ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		return len + ProtocolConstantV206V1_0_0.lenHead2ctrl + ProtocolConstantV206V1_0_0.lenTail ;
 	}
 
 
@@ -68,7 +82,7 @@
 	public String parseRtuAddr(byte[] bs)throws Exception{
 		String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr1Index_start, ProtocolConstantV206V1_0_0.rtuAddr1Index_end) ;
 		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ;
-		while(rtuAddrStr.length() < 6){
+		while(rtuAddrStr.length() < 4){
 			rtuAddrStr = "0" + rtuAddrStr ;
 		}
 		return rtuAddrBCD + rtuAddrStr ;
@@ -83,20 +97,6 @@
 		return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1_0_0.codeIndex, 1) ;
 	}
 
-
-	/**
-	 * 鏍¢獙鍜屾鏌�
-	 * @param bs 涓婅瀛楄妭鏁扮粍
-	 * @return 閫氳繃true,鏈�氳繃false
-	 */
-	public boolean checkCrc(byte[] bs) {
-		byte he = 0 ;
-		for(int i = 0 ; i <= bs.length - 3 ; i++){
-			he = (byte)(he + bs[i]) ;
-		}
-		return bs[bs.length - 2] == he ;
-	}
-
 	/**
 	 * 鏍¢獙鍜屾鏌�
 	 * @param bs  涓婅瀛楄妭鏁扮粍
@@ -104,16 +104,12 @@
 	 * @throws Exception 寮傚父
 	 */
 	public String checkCrc_str(byte[] bs) throws Exception {
-		byte[] he = new byte[1] ;
-		for(int i = 0 ; i <= bs.length - 3 ; i++){
-			he[0] = (byte)(he[0] + bs[i]) ;
-		}
-		short hes = ByteUtilUnsigned.byte2Byte(he, 0);
-		short heOrg = ByteUtilUnsigned.byte2Byte(bs, bs.length - 2);
-		if(hes == heOrg){
+		byte crcCompute = (byte)new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1_0_0.ctrlIndex, bs.length - 3) ;
+		byte crcInBs = bs[bs.length - 2] ;
+		if(crcCompute == crcInBs){
 			return null ;
 		}else{
-			return "璁$畻鏍¢獙鍜屾槸:" + hes + "锛屼笂浼犳牎楠屽拰鏄�" + heOrg ;
+			return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
 		}
 	}
 
@@ -123,11 +119,11 @@
 	D7                  D6                  D5锝濪4            D3锝濪0
 	浼犺緭鏂瑰悜浣� DIR        鎷嗗垎鏍囧織浣� DIV       甯ц鏁颁綅 FCB       鍔熻兘鐮�
 	*/
-	public byte createCtrl(byte funcCode){
-		byte b = 0 ;
+	public byte createCtrl(byte dir, byte funcCode){
+		byte b = dir;//(byte)0x80//鎺у埗鍩燂細DIR=1锛岃〃绀烘甯ф姤鏂囨槸鐢辩粓绔彂鍑虹殑涓婅鎶ユ枃锛�
 		b = (byte)(b | funcCode) ;
 		//FCB == 3
-		b = (byte)(b | (byte)60) ;
+		b = (byte)(b | (byte)0x18) ;
 		//DIV = 0
 		//DIR = 0
 		return b ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
index 997792e..79a731d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
@@ -41,10 +41,14 @@
         sb.append("      鎺у埗鍣ㄦ椂閽燂細");
         sb.append(rtuDt==null?"":rtuDt);
         sb.append("\n");
-        sb.append(alarmVo==null?"":alarmVo.toString());
-        sb.append("\n");
-        sb.append(stateVo==null?"":stateVo.toString());
-        sb.append("\n");
+        if(alarmVo != null){
+            sb.append(alarmVo.toString());
+            sb.append("\n");
+        }
+        if(stateVo != null){
+            sb.append(stateVo.toString());
+            sb.append("\n");
+        }
 
         return sb.toString() ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
index 78675d2..c8c3116 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
@@ -25,6 +25,21 @@
 		if(dataCd02Vo != null){
 			sb.append(dataCd02Vo.toString()) ;
 		}
+		if(dataCdC0Vo != null){
+			sb.append(dataCdC0Vo.toString()) ;
+		}
+		if(dataCd83OpenVo != null){
+			sb.append(dataCd83OpenVo.toString()) ;
+		}
+		if(dataCd83CloseVo != null){
+			sb.append(dataCd83CloseVo.toString()) ;
+		}
+		if(dataCd84Vo != null){
+			sb.append(dataCd84Vo.toString()) ;
+		}
+		if(dataCd71Vo != null){
+			sb.append(dataCd71Vo.toString()) ;
+		}
 		return sb.toString() ;
 	}
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java
index 6ddc78e..38aac6a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java
@@ -9,7 +9,7 @@
 @AnnotationDriver(name= ProtocolConstantV206V1_0_0.protocolName)
 public class DriverV1_0_1 extends Driver {
 	
-	private static String scanRootPackage = "" ;
+	private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1_0_0." ;
 	
 	//鍦―river涓槸鍗曚緥锛岄殢Driver鐨勫崟渚嬪璞″湪鍗曠嚎绋嬩腑杩愯
 	private ParseParamsForUpV1_0_1 upCpParams ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java
index e53f268..b991de9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java
@@ -100,7 +100,7 @@
 			return null ;
 		}
 
-		Integer dataLen = parseCommon.parseDataLen(preByte) ;
+		Integer dataLen = parseCommon.parseFrameLen(preByte) ;
 
 		if(dataLen == null){
 			String headHex = ByteUtil.bytes2Hex(preByte, true) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
index e520aee..3ff2c20 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
@@ -14,7 +14,7 @@
      * RTU涓婄嚎鏁版嵁锛堜笂绾垮悗绗竴鍖呮暟鎹級鏈�灏忛暱搴︼紝璁剧疆璇ュ睘鎬т互澶囪繘琛屽畬鏁存�ф鏌ワ紝
      * 鍗虫柇鍖呮鏌ワ紝浣垮敖鍙兘鏀跺叏涓婄嚎鏁版嵁锛堝彇鍊艰寖鍥�1-100锛�
      */
-    public static final int onLineDataMinLength = 30 ;//閲囩敤闃�鎺у洖鎵э紙鍏堕暱搴︽渶鐭級鐨勫瓧鑺傛暟
+    public static final int onLineDataMinLength = 13 ;//閲囩敤蹇冭烦涓婅鏁版嵁闀垮害
 
     /**
      * RTU涓婃姤鏁版嵁鐨勫ご閮ㄦ渶灏忛暱搴︼紝涓婃姤鏁版嵁涓紝鍙栬繖涓渶灏忛暱搴︾殑閮ㄥ垎鏁版嵁涓紝
@@ -33,7 +33,8 @@
     public static final String P_Head_Hex = "68" ;
     public static final String P_Tail_Hex = "16" ;
 
-    public static final byte lenHead2Code = 10 ; //浠庡ご鍒板姛鑳界爜瀛楄妭鏁扮粍闀垮害
+    public static final byte lenHead2ctrl = 3 ; //浠庡ご鍒版帶鍒跺煙锛堜笉鍖呮嫭锛夊瓧鑺傛暟缁勯暱搴�
+    public static final byte lenHead2Code = 10 ; //浠庡ご鍒板姛鑳界爜锛堝寘鎷級瀛楄妭鏁扮粍闀垮害
     public static final byte lenTail = 2 ; //甯у熬閮ㄥ瓧鑺傛暟缁勯暱搴�
     /**
      * 鎵�鍦ㄥ瓧鑺傛暟缁勭殑浣嶇疆锛堜笅鏍囷級
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java
index 5a6cb09..a045719 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java
@@ -56,7 +56,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
 
         index++ ;
         GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
@@ -72,7 +72,9 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java
index dc4a95a..4b269b6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java
@@ -59,7 +59,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
 
         index++ ;
         GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
@@ -77,7 +77,9 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java
index 600aedb..57be9e7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java
@@ -60,7 +60,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
 
         index++ ;
         GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
@@ -79,7 +79,9 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java
index 9aa0f96..394c7e7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java
@@ -60,7 +60,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
 
         index++ ;
         GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
@@ -79,7 +79,9 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java
index f4926b9..f324ea9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java
@@ -60,7 +60,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
 
         index++ ;
         GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
@@ -79,7 +79,9 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java
index 4f13733..2567d99 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java
@@ -12,7 +12,6 @@
         String rtuAddr1 = rtuAddr.substring(0, 6) ;
         String rtuAddr2 = rtuAddr.substring(6) ;
 
-        index++ ;
         ByteUtil.string2BCD_BE(bs, rtuAddr1, index) ;
         index += 3 ;
 
@@ -21,19 +20,19 @@
     }
 
     public static void createTp(byte[] bs, int index) throws Exception {
-        ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), index) ;
+        ByteUtil.string2BCD_LE(bs, DateTime.yyMMddhhmmss(), index) ;
     }
 
-    public static void createLen(byte[] bs) throws Exception {
-        int len = bs.length + ProtocolConstantV206V1_0_0.lenTail;
-        bs[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ;
+    public static void createLen(byte[] bsNoTail) throws Exception {
+        int len = bsNoTail.length - ProtocolConstantV206V1_0_0.lenHead2ctrl;
+        bsNoTail[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ;
     }
 
-    public static byte[] createCrcTail(byte[] bs) throws Exception {
-        int crc = new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1_0_0.ctrlIndex, bs.length -1) ;
-        bs = new byte[ProtocolConstantV206V1_0_0.lenTail] ;
-        bs[0] = (byte)crc ;
-        bs[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ;
-        return ByteUtil.bytesMerge(bs, bs) ;
+    public static byte[] createCrcTail(byte[] bsNoTail) throws Exception {
+        int crc = new CRC8_for_2_0().CRC8(bsNoTail, ProtocolConstantV206V1_0_0.ctrlIndex, bsNoTail.length -1) ;
+        byte[] bytes = new byte[ProtocolConstantV206V1_0_0.lenTail] ;
+        bytes[0] = (byte)crc ;
+        bytes[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ;
+        return bytes ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
index 43785ec..a41e004 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
@@ -40,9 +40,9 @@
             index++ ;
             dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//鍒�
             index++ ;
-            dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//鏃�
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//鏃�
             index++ ;
-            dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏃�
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//鏃�
             index++ ;
             bs[index] = (byte)(bs[index] & 0x10);
             dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏈�
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml
index bcbec20..acf0fa5 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/pom.xml
@@ -132,4 +132,124 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
+            <plugin>
+                !- spring boot鎻愪緵鐨刴aven鎵撳寘鎻掍欢 -
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        !-
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                        -
+                        <configuration>
+                            !- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar  -
+                            <classifier>execute</classifier>
+                            !- 涓嶆寚瀹氱敓鎴愯矾寰勭殑璇�, 榛樿淇濆瓨鍦� ${build.directory} 涓� -
+                            <outputDirectory>${project.build.directory}/execute</outputDirectory>
+                            <finalName>${artifactId}-${version}</finalName>
+                            <layout>ZIP</layout>
+                            <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
+                            <includes>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-common</artifactId>
+                                </include>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-global</artifactId>
+                                </include>
+                            </includes>
+                            <excludes>
+                                <exclude>
+                                    <groupId>org.projectlombok</groupId>
+                                    <artifactId>lombok</artifactId>
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+
+            </plugin>
+            -->
+            <!-- 鎷疯礉渚濊禆鐨刯ar鍖呭埌lib鐩綍-->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <configuration>
+                            <!-- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar
+                            <classifier>execute</classifier>
+                            -->
+                            <!-- ${project.build.directory}鏄痬aven鍙橀噺锛屽唴缃殑锛岃〃绀簍arget鐩綍,濡傛灉涓嶅啓锛屽皢鍦ㄦ牴鐩綍涓嬪垱寤�/lib -->
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                            <!-- excludeTransitive:鏄惁涓嶅寘鍚棿鎺ヤ緷璧栧寘锛屾瘮濡傛垜浠緷璧朅锛屼絾鏄疉鍙堜緷璧栦簡B锛屾垜浠槸鍚︿篃瑕佹妸B鎵撹繘鍘� 榛樿涓嶆墦-->
+                            <excludeTransitive>false</excludeTransitive>
+                            <!-- 澶嶅埗鐨刯ar鏂囦欢鍘绘帀鐗堟湰淇℃伅 -->
+                            <stripVersion>false</stripVersion>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
+                            <layout>ZIP</layout>
+                            <mainClass>com.dy.aceMw.PipIrrMwAcceptApplication</mainClass>
+                            <includes>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-common</artifactId>
+                                </include>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-global</artifactId>
+                                </include>
+                            </includes>
+                            <excludes>
+                                <exclude>
+                                    <groupId>org.projectlombok</groupId>
+                                    <artifactId>lombok</artifactId>
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <!-- 璁剧疆java缂栬瘧鐗堟湰锛岃繍琛岀幆澧冪増鏈� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <!-- source锛� 婧愪唬鐮佺紪璇戠増鏈紱target锛� 鐩爣骞冲彴缂栬瘧鐗堟湰锛沞ncoding锛� 瀛楃闆嗙紪鐮併�� -->
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 瑙e喅璧勬簮鏂囦欢鐨勭紪鐮侀棶棰� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- maven閲屾墽琛屾祴璇曠敤渚嬬殑鎻掍欢 -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 涓嬮潰瑙e喅锛氬綋杩涜Maven Lifecycle package鏃舵姤閿欙細Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)-->
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/PipIrrMwAcceptApplication.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/PipIrrMwAcceptApplication.java
index f69af6f..4b4ec0c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/PipIrrMwAcceptApplication.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/PipIrrMwAcceptApplication.java
@@ -13,7 +13,7 @@
 @EnableAspectJAutoProxy
 @EnableMultiDataSource
 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.aceMw"})
-@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
+@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoRm"})
 public class PipIrrMwAcceptApplication implements CommandLineRunner {
 
     public static void main(String[] args) {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java
index 6829b00..a368845 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java
@@ -3,7 +3,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import com.dy.aceMw.server.tasks.BusiConstantTask;
+import com.dy.aceMw.server.*;
+import com.dy.aceMw.server.rtuData.RtuDataUnit;
+import com.dy.aceMw.server.rtuData.RtuDataUnitConfigVo;
+import com.dy.aceMw.server.tasks.FromRtuConstantTask;
 import com.dy.common.mw.UnitInterface;
 import com.dy.common.mw.UnitStartedCallbackInterface;
 import com.dy.common.mw.channel.rmi.RmiConfigVo;
@@ -16,16 +19,9 @@
 import com.dy.common.mw.protocol.ProtocolUnit;
 import com.dy.common.mw.support.SupportUnit;
 import com.dy.common.mw.support.SupportUnitConfigVo;
-import com.dy.aceMw.server.AdapterImp_CoreUnit;
-import com.dy.aceMw.server.AdapterImp_ProtocolUnit;
-import com.dy.aceMw.server.AdapterImp_RmiUnit;
-import com.dy.aceMw.server.AdapterImp_TcpUnit;
-import com.dy.aceMw.server.ServerProperties;
 import com.dy.aceMw.server.tasks.ToRtuConstantTask;
-import com.dy.aceMw.server.AdapterImp_SupportUnit;
 import com.dy.aceMw.resource.ResourceUnit;
 import com.dy.aceMw.resource.ResourceUnitConfigVo;
-import com.dy.aceMw.server.AdapterImp_ResourceUnit;
 import com.dy.common.springUtil.SpringContextUtil;
 import com.dy.common.util.ConfigXml;
 import com.dy.common.util.IDLongGenerator;
@@ -147,7 +143,7 @@
 			//TCP涓婅鏁版嵁鏃跺埢缂撳瓨鏃堕暱锛屽綋杈惧埌鏃堕暱鏃讹紝TCP涓婅鏁版嵁鏃跺埢琚竻绌猴紝閲囩敤TCP涓婅鏁版嵁鏃跺埢鐩殑鏄紝闃绘涓婃暟鎹悓鏃朵笅鍙戞暟鎹紝鍥犱负RTU澶勭悊涓嶈繃鏉�
 			ServerProperties.lastUpDataTimeLive = conf.getSetAttrPlusInt(doc, "config.base", "lastUpDataTimeLive", null, 0, 5, null) * 1000L ;
 			//鏁版嵁搴撴暟鎹甶d鐢熸垚鍣ㄧ殑id鍚庣紑锛�0鏄粯璁ょ殑鍚庣紑锛屼竴鑸瑆eb绯荤粺搴旂敤锛屾暟鎹腑闂翠欢id鍚庣紑澶т簬绛変簬1
-			ServerProperties.dbDataIdSuffix = conf.getSetAttrInt(doc, "config.base", "dbDataIdSuffix", null, 1, 9, null);
+			ServerProperties.dbDataIdSuffix = conf.getSetAttrInt(doc, "config.base", "dbDataIdSuffix", null, 0, 99, null);
 			//涓婁笅琛屾暟鎹紦瀛橀槦鍒椾腑缂撳瓨鏁版嵁涓暟鐨勬姤璀﹂噺锛岃繖涓笌鐜板疄椤圭洰鎵�鎺ユ按琛ㄦ暟鐩稿叧
 			ServerProperties.cacheUpDownDataWarnCount = conf.getSetAttrPlusInt(doc, "config.base", "cacheUpDownDataWarnCount", null, 1, null, null) ;
 			//涓婁笅琛屾暟鎹紦瀛橀槦鍒椾腑缂撳瓨鏁版嵁涓暟鐨勬渶澶у�硷紝杩欎釜涓庣幇瀹為」鐩墍鎺ユ按琛ㄦ暟鐩稿叧
@@ -172,10 +168,7 @@
 			protoAdap.setConfig(protoVo);
 			ProtocolUnit protoUnit = ProtocolUnit.getInstance();
 			protoUnit.setAdapter(protoAdap);
-			protoUnit.start(new UnitStartedCallbackInterface(){
-				@Override
-				public void call(Object obj) {
-				}
+			protoUnit.start(obj -> {
 			});
 			units.add(protoUnit) ;
 			
@@ -225,10 +218,7 @@
 			supAdap.setConfig(supVo);
 			SupportUnit supUnit = SupportUnit.getInstance() ;
 			supUnit.setAdapter(supAdap);
-			supUnit.start(new UnitStartedCallbackInterface(){
-				@Override
-				public void call(Object obj) {
-				}
+			supUnit.start(obj -> {
 			});
 			units.add(supUnit) ;
 			
@@ -257,10 +247,7 @@
 			//褰撳墠鏀寔spring + hibernate
 			resUnit.setSpringContext(SpringContextUtil.getApplicationContext());
 
-			resUnit.start(new UnitStartedCallbackInterface(){
-				@Override
-				public void call(Object obj) {
-				}
+			resUnit.start(obj -> {
 			});
 			units.add(resUnit) ;
 
@@ -277,14 +264,25 @@
 				rmiAdap.setConfig(rmiVo);
 				RmiUnit rmiUnit = RmiUnit.getInstance();
 				rmiUnit.setAdapter(rmiAdap);
-				rmiUnit.start(new UnitStartedCallbackInterface(){
-					@Override
-					public void call(Object obj) {
-					}
+				rmiUnit.start(obj -> {
 				});
 				RmiSvUrl = "[ip]:" + rmiVo.port + "/" + rmiVo.context ;
 				units.add(rmiUnit) ;
 			}
+
+
+			/////////////////
+			//RTU涓婅鏁版嵁澶勭悊妯″潡
+			RtuDataUnitConfigVo rducVo = new RtuDataUnitConfigVo();
+			AdapterImp_RtuDataUnit rducAdap = new AdapterImp_RtuDataUnit();
+			rducAdap.setConfig(rducVo);
+			RtuDataUnit rducUnit = RtuDataUnit.getInstance();
+			rducUnit.setAdapter(rducAdap);
+			rducUnit.start(obj -> {
+			});
+			units.add(rducUnit) ;
+
+
 
 			// ///////////////
 			// 鏍稿績
@@ -299,11 +297,8 @@
 			CoreUnit coreUnit = CoreUnit.getInstance();
 			coreUnit.setAdapter(coreAdap);
 			CoreUnit.addConstantTask(new ToRtuConstantTask());
-			CoreUnit.addConstantTask(new BusiConstantTask());
-			coreUnit.start(new UnitStartedCallbackInterface(){
-				@Override
-				public void call(Object obj) {
-				}
+			CoreUnit.addConstantTask(new FromRtuConstantTask());
+			coreUnit.start(obj -> {
 			});
 			units.add(coreUnit) ;
 
@@ -321,10 +316,7 @@
 				tcpAdap.setConfig(tcpVo);
 				TcpUnit tcpUnit = TcpUnit.getInstance();
 				tcpUnit.setAdapter(tcpAdap);
-				tcpUnit.start(new UnitStartedCallbackInterface(){
-					@Override
-					public void call(Object obj) {
-					}
+				tcpUnit.start(obj -> {
 				});
 				TcpSvUrl = "[ip]:" + tcpVo.port ;
 				units.add(tcpUnit) ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/AdapterImp_RtuDataUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/AdapterImp_RtuDataUnit.java
new file mode 100644
index 0000000..ec4fe82
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/AdapterImp_RtuDataUnit.java
@@ -0,0 +1,19 @@
+package com.dy.aceMw.server;
+
+
+import com.dy.aceMw.server.rtuData.RtuDataUnitAdapter;
+import com.dy.aceMw.server.rtuData.RtuDataUnitConfigVo;
+
+public class AdapterImp_RtuDataUnit implements RtuDataUnitAdapter {
+	
+	private RtuDataUnitConfigVo configVo ;
+
+	public RtuDataUnitConfigVo getConfig() {
+		return configVo;
+	}
+	
+	public void setConfig(RtuDataUnitConfigVo configVo){
+		this.configVo = configVo ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Tree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Tree.xml
deleted file mode 100644
index 51172bc..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Tree.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE project>
-<config>
-	<!-- 
-	id:涓庡搴旂被涓殑闈欐�佹垚鍛樺彉閲弔askId涓�鑷� 
-	enable:鏍囪瘑鏈妭鐐规槸鍚︽墽琛岋紝鑻ユ湰鑺傜偣涓嶆墽琛岋紝鍒欑洿鎺ヨ繘鍏ュ叾瀛愯妭鐐�
-	-->
-	<task id="TkReceive" name="鎺ユ敹鏁版嵁" enable="true" class="com.dy.aceMw.server.busi.deal.TkReceive">
-		<task id="TkRtuData" name="鎺ユ敹RTU鏁版嵁" enable="true" class="com.dy.aceMw.server.busi.deal.TkRtuData">
-			<task id="TkFindP206V1_0_0" name="璇嗗埆P206V1_0_0鏁版嵁" enable="true" class="com.dy.aceMw.server.busi.deal.p206V1_0_0.TkFindP206V1_0_0">
-				<task id="TkPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.aceMw.server.busi.deal.p206V1_0_0.TkPreGenObjs">
-					<!-- 璇嗗埆娴佹氮鑰匯TU锛屾暟鎹簱涓病鏈夋垨鏁版嵁搴撳瓨鍦ㄤ絾鏈垎閰嶇疆渚涙按鏈烘瀯 -->
-					<task id="TkDealRtuTramp" name="璇嗗埆娴佹氮鑰匯TU" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.TkDealRtuTramp" />
-					<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealRtuTramp鍚庨潰 -->
-					<task id="TkDealNoRtuTramp" name="闈炴祦娴�匯TU" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.TkDealNoRtuTramp">
-						<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
-						<task id="TkFindAutoReport" name="璇嗗埆涓诲姩涓婃姤鍙婅Е鍙戜笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.TkFindAutoReport">
-							<!-- 妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁 -->
-							<task id="TkCheckAutoReport" name="妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkCheckAutoReport">
-								<!-- 妫�鏌ラ噸澶嶄笂鎶ユ暟鎹� -->
-								<task id="TkCheckRepeatReport" name="妫�鏌ラ噸澶嶄笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkCheckRepeatReport">
-									<!-- Mn杩愮淮绯荤粺 -->
-									<task id="TkMnRtuDealAutoReportLastAlarm" name="杩愮淮RTU涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkMnRtuDealAutoReportLastAlarm" /> 
-									<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkMnRtuDealAutoReportLastData" name="杩愮淮RTU涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkMnRtuDealAutoReportLastData" /> 
-									<!-- RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkMnRtuDealRealReportLastData" name="杩愮淮RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkMnRtuDealRealReportLastData" /> 
-									<!-- Org渚涙按鏈烘瀯绯荤粺 -->
-									<task id="TkOrgRtuDealAutoReportLastAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealAutoReportLastAlarm">
-										<task id="TkOrgRtuDealAutoReportAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鎶ヨ" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealAutoReportAlarm" />
-										<task id="TkOrgRtuDealReportValveOpResult" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤寮�鍏抽榾缁撴灉" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealReportValveOpResult" />
-									</task> 
-									<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkOrgRtuDealDayAmountAlarm" name="渚涙按鏈烘瀯RTU鏃ョ粨绱娴侀噺鎶ヨ" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealDayAmountAlarm" >
-										<task id="TkOrgRtuDeal48HourNoAmount" name="渚涙按鏈烘瀯RTU48灏忔椂鏈敤姘�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDeal48HourNoAmount" >
-											<task id="TkOrgRtuDealAutoReportLastData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealAutoReportLastData">
-												<task id="TkOrgRtuDealAutoReportData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealAutoReportData" />
-												<task id="TkOrgRtuDealCycleData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鍛ㄦ湡閲囬泦鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealCycleData">
-													<task id="TkOrgRtuDealCycleLongSmallAmountAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鍛ㄦ湡閲囬泦鏁版嵁闀挎祦姘村垎鏋�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealCycleLongSmallAmountAlarm" />
-												</task>
-												<task id="TkOrgRtuDealAmountCost" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤璁$畻鏃ユ按閲忋�佹湀姘撮噺銆佸強姘磋垂" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealAmountCost" >
-													<task id="TkOrgRtuDealPayCost" name="渚涙按鏈烘瀯鐢ㄦ按鎴锋按琛ㄧ數瀛愰挶鍖呮敮浠樻按璐�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealPayCost" />
-												</task>
-											</task> 
-										</task>
-									</task>
-									<!-- RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkOrgRtuDealRealReportLastData" name="渚涙按鏈烘瀯RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealRealReportLastData">
-										<task id="TkOrgRtuDealRealReportData" name="渚涙按鏈烘瀯RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.autoReport.TkOrgRtuDealRealReportData" />
-									</task> 
-								</task>	
-							</task> 
-						</task> 
-						<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
-						<task id="TkFindComResponse" name="璇嗗埆鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.TkFindComResponse">
-							<task id="TkRtuDealCommandResponse" name="RTU鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.comResponse.TkRtuDealCommandResponse" >
-								<task id="TkRtuDealSetParamComResponse" name="RTU鍝嶅簲璁剧疆鍙傛暟鍛戒护鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.meterV1_0.comResponse.TkRtuDealSetParamComResponse" />
-							</task>
-						</task>  
-					</task>
-				</task> 
-			</task>
-			<task id="TkFindHAC_NBhV2_5" name="璇嗗埆HAC_NBhV2_5鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkFindHAC_NBhV2_5"> 
-				<task id="TkPipPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipPreGenObjs"> 
-					<!-- 璇嗗埆娴佹氮鑰呯缃戞按琛紝鏁版嵁搴撲腑娌℃湁鎴栨暟鎹簱瀛樺湪浣嗘湭鍒嗛厤缃緵姘存満鏋� -->
-					<task id="TkPipDealRtuTramp" name="璇嗗埆娴佹氮鑰呯缃戞按琛�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealRtuTramp" />
-					<!-- 闈炴祦娴�呯缃戞按琛紝蹇呴』鏀惧湪TkDealRtuTramp鍚庨潰 -->
-					<task id="TkPipDealNoRtuTramp" name="闈炴祦娴�呯缃戞按琛�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealNoRtuTramp">
-						<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
-						<task id="TkPipFindAutoReport" name="璇嗗埆涓诲姩涓婃姤鍙婅Е鍙戜笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipFindAutoReport">
-							<!-- 妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁 -->
-							<task id="TkPipCheckAutoReport" name="妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckAutoReport">
-								<task id="TkPipCheckRepeatAutoReport" name="妫�鏌ラ噸澶嶄笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckRepeatAutoReport">
-									<!-- Mn杩愮淮绯荤粺 -->
-									<task id="TkPipMnRtuDealAutoReportLastAlarm" name="杩愮淮绠$綉姘磋〃涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastAlarm" /> 
-									<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkPipMnRtuDealAutoReportLastData" name="杩愮淮绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastData" /> 
-									<!-- Org渚涙按鏈烘瀯绯荤粺 -->
-									<task id="TkPipOrgRtuDealAutoReportLastAlarm" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastAlarm">
-										<task id="TkPipOrgRtuDealAutoReportAlarm" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鎶ヨ" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportAlarm" />
-									</task> 
-									<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
-									<task id="TkPipOrgRtuDealAutoReportLastData" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastData">
-										<task id="TkPipOrgRtuDealAutoReportData" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportData" />
-										<task id="TkPipOrgRtuDealAmount" name="渚涙按鏈烘瀯绠$綉姘磋〃鏈堟祦閲忕粺璁�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAmount" />
-									</task> 
-								</task> 
-							</task> 
-						</task> 
-					</task>
-				</task> 
-			</task>
-		</task>
-	</task>
-</config>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java
index fa580b0..40747c2 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java
@@ -1,7 +1,7 @@
 package com.dy.aceMw.server.forTcp;
 
-import com.dy.aceMw.server.busi.AboutRtuNode;
-import com.dy.aceMw.server.busi.TcpUpDataCache;
+import com.dy.aceMw.server.rtuData.RtuDataNode;
+import com.dy.aceMw.server.rtuData.RtuDataCache;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -49,7 +49,7 @@
 	 */
 	private void nextDeal(boolean reportOrResponse_trueOrFalse, MidResultFromRtu resFromRtu){
 		try{
-			TcpUpDataCache.cacheRtuUpData(reportOrResponse_trueOrFalse, new AboutRtuNode(resFromRtu.data));
+			RtuDataCache.cacheRtuUpData(reportOrResponse_trueOrFalse, new RtuDataNode(resFromRtu.data));
 		}catch(Exception e){
 			log.error(e.getMessage(), e);
 		}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/TcpUpDataCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataCache.java
similarity index 84%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/TcpUpDataCache.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataCache.java
index 3da1fb8..a6de4e1 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/TcpUpDataCache.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataCache.java
@@ -1,21 +1,21 @@
-package com.dy.aceMw.server.busi;
+package com.dy.aceMw.server.rtuData;
 
 import com.dy.aceMw.server.ServerProperties;
 import com.dy.common.queue.Node;
 import com.dy.common.queue.Queue;
 
-public class TcpUpDataCache {
+public class RtuDataCache {
 
     //TCP涓嬭鍛戒护缂撳瓨闃熷垪
     private static Queue cacheQueue = new Queue("tcpUpDataQueue") ;
 
-    private static TcpUpDataCache instance = new TcpUpDataCache() ;
+    private static RtuDataCache instance = new RtuDataCache() ;
 
-    private TcpUpDataCache(){
+    private RtuDataCache(){
         cacheQueue.setLimit(ServerProperties.cacheUpDownDataWarnCount, ServerProperties.cacheUpDownDataMaxCount);
     }
 
-    public static TcpUpDataCache getInstance(){
+    public static RtuDataCache getInstance(){
         return instance ;
     }
 
@@ -25,7 +25,7 @@
      * @param node node
      * @throws Exception 寮傚父
      */
-    public static void cacheRtuUpData(boolean reportOrResponse_trueOrFalse, AboutRtuNode node) throws Exception{
+    public static void cacheRtuUpData(boolean reportOrResponse_trueOrFalse, RtuDataNode node) throws Exception{
         if(node != null && node.obj != null){
             if(reportOrResponse_trueOrFalse){
                 cacheQueue.pushHead(node);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/AboutRtuNode.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java
similarity index 84%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/AboutRtuNode.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java
index 6bcf088..d007230 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/AboutRtuNode.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java
@@ -1,20 +1,18 @@
-package com.dy.aceMw.server.busi;
+package com.dy.aceMw.server.rtuData;
 
-import com.dy.aceMw.server.busi.deal.TaskPool;
-import com.dy.aceMw.server.busi.deal.TaskSurpport;
 import com.dy.common.queue.NodeObj;
 import com.dy.common.threadPool.ThreadPool;
 import com.dy.common.threadPool.TreadPoolFactory;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-public class AboutRtuNode implements NodeObj {
+public class RtuDataNode implements NodeObj {
 
-    private static final Logger log = LogManager.getLogger(AboutRtuNode.class.getName());
+    private static final Logger log = LogManager.getLogger(RtuDataNode.class.getName());
 
     public Object obj ;//鏁版嵁
 
-    public AboutRtuNode(Object obj){
+    public RtuDataNode(Object obj){
         this.obj = obj ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnit.java
new file mode 100644
index 0000000..269b85c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnit.java
@@ -0,0 +1,47 @@
+package com.dy.aceMw.server.rtuData;
+
+import com.dy.common.mw.UnitAdapterInterface;
+import com.dy.common.mw.UnitInterface;
+import com.dy.common.mw.UnitStartedCallbackInterface;
+
+public class RtuDataUnit  implements UnitInterface {
+
+	private static RtuDataUnit instance = new RtuDataUnit() ;
+	
+	public static RtuDataUnitAdapter adapter ;
+	public static RtuDataUnitConfigVo confVo ;
+
+	private RtuDataUnit(){} ;
+	
+	public static RtuDataUnit getInstance(){
+		return instance ;
+	}
+	
+	@Override
+	public void setAdapter(UnitAdapterInterface adapter) throws Exception {
+		if(adapter == null){
+			throw new Exception("RTU鏁版嵁澶勭悊妯″潡閫傞厤鍣ㄥ璞′笉鑳戒负绌猴紒") ;
+		}
+		RtuDataUnit.adapter = (RtuDataUnitAdapter)adapter ; 
+		RtuDataUnit.confVo = RtuDataUnit.adapter.getConfig() ;
+		if(RtuDataUnit.confVo == null){
+			throw new Exception("RTU鏁版嵁澶勭悊妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
+		}
+	}
+
+	/**
+	 * 鍒濆鍖栦笂琛屾暟鎹鐞嗕换鍔℃睜
+	 */
+	@Override
+	public void start(UnitStartedCallbackInterface callback) throws Exception {
+		TaskPool.setTaskTreeCofig(new TreeParse().parseConfig());
+		callback.call(null) ;
+		System.out.println("RTU鏁版嵁澶勭悊妯″潡鎴愬姛鍚姩");
+	}
+
+	@Override
+	public void stop(UnitStartedCallbackInterface callback) throws Exception {
+	}
+
+}
+
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitAdapter.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitAdapter.java
new file mode 100644
index 0000000..a9b756f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitAdapter.java
@@ -0,0 +1,10 @@
+package com.dy.aceMw.server.rtuData;
+
+
+import com.dy.common.mw.UnitAdapterInterface;
+
+public interface RtuDataUnitAdapter extends UnitAdapterInterface {
+
+	public RtuDataUnitConfigVo getConfig() ;
+	
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitConfigVo.java
new file mode 100644
index 0000000..89b0ddd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataUnitConfigVo.java
@@ -0,0 +1,5 @@
+package com.dy.aceMw.server.rtuData;
+
+public class RtuDataUnitConfigVo {
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Task.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
similarity index 96%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Task.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
index 9c615ee..66f221b 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/Task.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 public interface Task {
 	
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskConfig.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskConfig.java
similarity index 80%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskConfig.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskConfig.java
index 7817954..b80df4f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskConfig.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskConfig.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 
 public class TaskConfig {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskPool.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
similarity index 94%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskPool.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
index 8dcd7fc..78ec7a6 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskPool.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -108,7 +108,8 @@
 		if (c == null) {
 			throw new Exception("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞℃爲澶辫触锛佷换鍔$被涓�" + clazz + "锛�");
 		}else{
-			return (TaskSurpport)c.newInstance();
+			return (TaskSurpport)c.getDeclaredConstructor().newInstance();
+			//return (TaskSurpport)c.newInstance();
 		}
 	}
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskSurpport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
similarity index 98%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskSurpport.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
index c120db6..f1e5b28 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TaskSurpport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkReceive.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkReceive.java
similarity index 94%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkReceive.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkReceive.java
index f932998..80604c5 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkReceive.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkReceive.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 import com.dy.common.mw.protocol.Data;
 import org.apache.logging.log4j.LogManager;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkRtuData.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
similarity index 94%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkRtuData.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
index 1b403ca..23f334c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TkRtuData.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 import com.dy.common.mw.protocol.Data;
 import org.apache.logging.log4j.LogManager;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeConfig.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeConfig.java
similarity index 74%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeConfig.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeConfig.java
index ce4bf6a..06bc2cc 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeConfig.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeConfig.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 public class TreeConfig {
 	public TaskConfig taskConf ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeParse.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeParse.java
similarity index 95%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeParse.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeParse.java
index fb4e224..c9182f1 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/TreeParse.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TreeParse.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal;
+package com.dy.aceMw.server.rtuData;
 
 
 import java.net.URL;
@@ -29,7 +29,8 @@
 	 */
 	protected TreeConfig parseConfig() {
 		try {
-			URL configFileURL = TreeParse.class.getResource("Tree.xml");
+			ClassLoader classLoader = ClassLoader.getSystemClassLoader();
+			URL configFileURL = classLoader.getResource("RtuDataDealTree.xml");
 			return this.parse(this.createDom(configFileURL)) ;
 		} catch (Exception e) {
 			System.out.println("绯荤粺鍚姩鏃讹紝鍒濆涓婅鏁版嵁澶勭悊浠诲姟閰嶇疆鍑洪敊 !");
@@ -68,7 +69,7 @@
 	private TreeConfig parse(Document doc) throws Exception {
 		Element root = doc.getRootElement();
 		if (root == null) {
-			throw new Exception("鏈緱鍒颁笂琛屾暟鎹鐞嗕换鍔¢厤缃枃浠舵牴鍏冪礌config!");
+			throw new Exception("鏈緱鍒颁笂琛屾暟鎹鐞嗕换鍔¢厤缃枃浠舵牴鍏冪礌project!");
 		}
 
 		List<Element> rootTasks = root.getChildren("task") ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/RtuSv.java
similarity index 64%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/RtuSv.java
index ddd1aec..271001a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/RtuSv.java
@@ -1,4 +1,4 @@
-package com.dy.aceMw.server.busi.deal.dbSv;
+package com.dy.aceMw.server.rtuData.dbSv;
 
 import org.springframework.stereotype.Service;
 
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/\350\257\264\346\230\216.txt"
similarity index 100%
rename from "pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt"
rename to "pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/\350\257\264\346\230\216.txt"
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkFindP206V1_0_0.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java
similarity index 85%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkFindP206V1_0_0.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java
index 62f9780..91fda1b 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkFindP206V1_0_0.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java
@@ -1,7 +1,7 @@
-package com.dy.aceMw.server.busi.deal.p206V1_0_0;
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
 
 
-import com.dy.aceMw.server.busi.deal.TaskSurpport;
+import com.dy.aceMw.server.rtuData.TaskSurpport;
 import com.dy.common.mw.protocol.Data;
 import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
similarity index 93%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
index 8ef9515..4e13d52 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -1,6 +1,6 @@
-package com.dy.aceMw.server.busi.deal.p206V1_0_0;
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
 
-import com.dy.aceMw.server.busi.deal.TaskSurpport;
+import com.dy.aceMw.server.rtuData.TaskSurpport;
 import com.dy.common.mw.protocol.Data;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -20,6 +20,7 @@
 	public void execute(Object data) {
 		Data d = (Data)data ;
 		String rtuAddr = d.getRtuAddr() ;
+		log.info("RTU" + rtuAddr + "鏁版嵁鍒版锛岃繕鏈疄鐜板鐞�:" + data.toString());
 		//寰楀埌鏈湴RTU 鏁版嵁锛屼互澶囧悗闈㈣妭鐐瑰簲鐢�
 		/*
 		BuziInterface baseBusi = BuziGeter.getBaseBusi() ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/BusiConstantTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java
similarity index 63%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/BusiConstantTask.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java
index f710dda..266d88f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/BusiConstantTask.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java
@@ -1,7 +1,7 @@
 package com.dy.aceMw.server.tasks;
 
-import com.dy.aceMw.server.busi.AboutRtuNode;
-import com.dy.aceMw.server.busi.TcpUpDataCache;
+import com.dy.aceMw.server.rtuData.RtuDataNode;
+import com.dy.aceMw.server.rtuData.RtuDataCache;
 import com.dy.common.mw.core.CoreTask;
 import com.dy.common.queue.Node;
 import org.apache.logging.log4j.LogManager;
@@ -10,8 +10,8 @@
 /**
  * 瀵筊TU涓婅鏁版嵁杩涜涓氬姟澶勭悊
  */
-public class BusiConstantTask  extends CoreTask {
-    private static final Logger log = LogManager.getLogger(BusiConstantTask.class.getName());
+public class FromRtuConstantTask extends CoreTask {
+    private static final Logger log = LogManager.getLogger(FromRtuConstantTask.class.getName());
 
     /**
      * 鍦ㄥ崟绾跨▼鐜涓繍琛�
@@ -19,7 +19,7 @@
     @Override
     public Integer excute() {
         try{
-            return dealRtuUpdata() ;
+            return dealRtuUpData() ;
         }catch(Exception e){
             log.error(e);
         }
@@ -29,12 +29,12 @@
     /**
      * 澶勭悊涓婅鏁版嵁
      */
-    public Integer dealRtuUpdata() {
-        Node first = TcpUpDataCache.getFirstQueueNode() ;
+    public Integer dealRtuUpData() {
+        Node first = RtuDataCache.getFirstQueueNode() ;
         if(first != null){
-            Integer count = TcpUpDataCache.size() ;
-            Node last = TcpUpDataCache.getLastQueueNode() ;
-            this.doDealRtuUpdata(first, last);
+            Integer count = RtuDataCache.size() ;
+            Node last = RtuDataCache.getLastQueueNode() ;
+            this.doDealRtuUpData(first, last);
             return count ;
         }
         return null ;
@@ -45,18 +45,18 @@
      * @param first 绗竴涓妭鐐�
      * @param last 鏈�鍚庝竴涓妭鐐�
      */
-    private void doDealRtuUpdata(Node first, Node last){
+    private void doDealRtuUpData(Node first, Node last){
         if(last != null){
             //鍦╠ealNode鏂规硶涓紝鍙兘瑕佹妸last浠庨槦鍒椾腑绉婚櫎锛岃繖鏃秎ast.pre涓虹┖锛屾墍浠ユ彁鍓嶆妸last.pre鍙栧嚭鏉�
             Node pre = last.pre ;
             dealNode(last) ;
             if(first != null && first != last){
-                doDealRtuUpdata(first, pre) ;
+                doDealRtuUpData(first, pre) ;
             }else if(first != null && first == last){
                 //鍋滄
             }else if(first == null){
                 //杩欑鎯呭喌涓嶄細瀛樺湪
-                doDealRtuUpdata(null, pre) ;
+                doDealRtuUpData(null, pre) ;
             }
         }
     }
@@ -66,9 +66,9 @@
      * @param node 鑺傜偣
      */
     private void dealNode(Node node){
-        AboutRtuNode obj = (AboutRtuNode)node.obj ;
+        RtuDataNode obj = (RtuDataNode)node.obj ;
         obj.dealSelf() ;
-        TcpUpDataCache.removeNode(node);
+        RtuDataCache.removeNode(node);
     }
 
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
new file mode 100644
index 0000000..8a89412
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE project>
+<project>
+	<!--
+	id:涓庡搴旂被涓殑闈欐�佹垚鍛樺彉閲弔askId涓�鑷�
+	enable:鏍囪瘑鏈妭鐐规槸鍚︽墽琛岋紝鑻ユ湰鑺傜偣涓嶆墽琛岋紝鍒欑洿鎺ヨ繘鍏ュ叾瀛愯妭鐐�
+	-->
+	<task id="TkReceive" name="鎺ユ敹鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkReceive">
+		<task id="TkRtuData" name="鎺ユ敹RTU鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkRtuData">
+			<task id="TkFindP206V1_0_0" name="璇嗗埆P206V1_0_0鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindP206V1_0_0">
+				<task id="TkPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkPreGenObjs">
+				</task>
+			</task>
+		</task>
+	</task>
+</project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml
new file mode 100644
index 0000000..8931838
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE project>
+<project>
+<!--
+id:涓庡搴旂被涓殑闈欐�佹垚鍛樺彉閲弔askId涓�鑷�
+enable:鏍囪瘑鏈妭鐐规槸鍚︽墽琛岋紝鑻ユ湰鑺傜偣涓嶆墽琛岋紝鍒欑洿鎺ヨ繘鍏ュ叾瀛愯妭鐐�
+-->
+<task id="TkReceive" name="鎺ユ敹鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkReceive">
+	<task id="TkRtuData" name="鎺ユ敹RTU鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkRtuData">
+		<task id="TkFindP206V1_0_0" name="璇嗗埆P206V1_0_0鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindP206V1_0_0">
+			<task id="TkPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkPreGenObjs">
+				<!-- 璇嗗埆娴佹氮鑰匯TU锛屾暟鎹簱涓病鏈夋垨鏁版嵁搴撳瓨鍦ㄤ絾鏈垎閰嶇疆渚涙按鏈烘瀯 -->
+				<task id="TkDealRtuTramp" name="璇嗗埆娴佹氮鑰匯TU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealRtuTramp" />
+				<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealRtuTramp鍚庨潰 -->
+				<task id="TkDealNoRtuTramp" name="闈炴祦娴�匯TU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealNoRtuTramp">
+					<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
+					<task id="TkFindAutoReport" name="璇嗗埆涓诲姩涓婃姤鍙婅Е鍙戜笂鎶ユ暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindAutoReport">
+						<!-- 妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁 -->
+						<task id="TkCheckAutoReport" name="妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkCheckAutoReport">
+							<!-- 妫�鏌ラ噸澶嶄笂鎶ユ暟鎹� -->
+							<task id="TkCheckRepeatReport" name="妫�鏌ラ噸澶嶄笂鎶ユ暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkCheckRepeatReport">
+								<!-- Mn杩愮淮绯荤粺 -->
+								<task id="TkMnRtuDealAutoReportLastAlarm" name="杩愮淮RTU涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkMnRtuDealAutoReportLastAlarm" />
+								<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkMnRtuDealAutoReportLastData" name="杩愮淮RTU涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkMnRtuDealAutoReportLastData" />
+								<!-- RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkMnRtuDealRealReportLastData" name="杩愮淮RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkMnRtuDealRealReportLastData" />
+								<!-- Org渚涙按鏈烘瀯绯荤粺 -->
+								<task id="TkOrgRtuDealAutoReportLastAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealAutoReportLastAlarm">
+									<task id="TkOrgRtuDealAutoReportAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鎶ヨ" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealAutoReportAlarm" />
+									<task id="TkOrgRtuDealReportValveOpResult" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤寮�鍏抽榾缁撴灉" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealReportValveOpResult" />
+								</task>
+								<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkOrgRtuDealDayAmountAlarm" name="渚涙按鏈烘瀯RTU鏃ョ粨绱娴侀噺鎶ヨ" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealDayAmountAlarm" >
+									<task id="TkOrgRtuDeal48HourNoAmount" name="渚涙按鏈烘瀯RTU48灏忔椂鏈敤姘�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDeal48HourNoAmount" >
+										<task id="TkOrgRtuDealAutoReportLastData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealAutoReportLastData">
+											<task id="TkOrgRtuDealAutoReportData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealAutoReportData" />
+											<task id="TkOrgRtuDealCycleData" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鍛ㄦ湡閲囬泦鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealCycleData">
+												<task id="TkOrgRtuDealCycleLongSmallAmountAlarm" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤鍛ㄦ湡閲囬泦鏁版嵁闀挎祦姘村垎鏋�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealCycleLongSmallAmountAlarm" />
+											</task>
+											<task id="TkOrgRtuDealAmountCost" name="渚涙按鏈烘瀯RTU涓诲姩涓婃姤璁$畻鏃ユ按閲忋�佹湀姘撮噺銆佸強姘磋垂" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealAmountCost" >
+												<task id="TkOrgRtuDealPayCost" name="渚涙按鏈烘瀯鐢ㄦ按鎴锋按琛ㄧ數瀛愰挶鍖呮敮浠樻按璐�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealPayCost" />
+											</task>
+										</task>
+									</task>
+								</task>
+								<!-- RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkOrgRtuDealRealReportLastData" name="渚涙按鏈烘瀯RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealRealReportLastData">
+									<task id="TkOrgRtuDealRealReportData" name="渚涙按鏈烘瀯RTU瀹炴椂锛堣Е鍙戯級涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.autoReport.TkOrgRtuDealRealReportData" />
+								</task>
+							</task>
+						</task>
+					</task>
+					<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
+					<task id="TkFindComResponse" name="璇嗗埆鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindComResponse">
+						<task id="TkRtuDealCommandResponse" name="RTU鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.comResponse.TkRtuDealCommandResponse" >
+							<task id="TkRtuDealSetParamComResponse" name="RTU鍝嶅簲璁剧疆鍙傛暟鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.comResponse.TkRtuDealSetParamComResponse" />
+						</task>
+					</task>
+				</task>
+			</task>
+		</task>
+		<task id="TkFindHAC_NBhV2_5" name="璇嗗埆HAC_NBhV2_5鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkFindHAC_NBhV2_5">
+			<task id="TkPipPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipPreGenObjs">
+				<!-- 璇嗗埆娴佹氮鑰呯缃戞按琛紝鏁版嵁搴撲腑娌℃湁鎴栨暟鎹簱瀛樺湪浣嗘湭鍒嗛厤缃緵姘存満鏋� -->
+				<task id="TkPipDealRtuTramp" name="璇嗗埆娴佹氮鑰呯缃戞按琛�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealRtuTramp" />
+				<!-- 闈炴祦娴�呯缃戞按琛紝蹇呴』鏀惧湪TkDealRtuTramp鍚庨潰 -->
+				<task id="TkPipDealNoRtuTramp" name="闈炴祦娴�呯缃戞按琛�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealNoRtuTramp">
+					<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
+					<task id="TkPipFindAutoReport" name="璇嗗埆涓诲姩涓婃姤鍙婅Е鍙戜笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipFindAutoReport">
+						<!-- 妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁 -->
+						<task id="TkPipCheckAutoReport" name="妫�鏌ユ椂闂寸瓑涓嶆纭殑涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckAutoReport">
+							<task id="TkPipCheckRepeatAutoReport" name="妫�鏌ラ噸澶嶄笂鎶ユ暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckRepeatAutoReport">
+								<!-- Mn杩愮淮绯荤粺 -->
+								<task id="TkPipMnRtuDealAutoReportLastAlarm" name="杩愮淮绠$綉姘磋〃涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastAlarm" />
+								<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkPipMnRtuDealAutoReportLastData" name="杩愮淮绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastData" />
+								<!-- Org渚涙按鏈烘瀯绯荤粺 -->
+								<task id="TkPipOrgRtuDealAutoReportLastAlarm" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版姤璀�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastAlarm">
+									<task id="TkPipOrgRtuDealAutoReportAlarm" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鎶ヨ" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportAlarm" />
+								</task>
+								<!-- RTU涓诲姩涓婃姤鏁版嵁蹇呴』鍦≧TU涓诲姩涓婃姤鎶ヨ浠诲姟鐨勪笅闈紝浠ュ涓诲姩涓婃姤鏁版嵁涓褰曟槸鍚︽湁鎶ヨ-->
+								<task id="TkPipOrgRtuDealAutoReportLastData" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏈�鏂版暟鎹�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastData">
+									<task id="TkPipOrgRtuDealAutoReportData" name="渚涙按鏈烘瀯绠$綉姘磋〃涓诲姩涓婃姤鏁版嵁" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportData" />
+									<task id="TkPipOrgRtuDealAmount" name="渚涙按鏈烘瀯绠$綉姘磋〃鏈堟祦閲忕粺璁�" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAmount" />
+								</task>
+							</task>
+						</task>
+					</task>
+				</task>
+			</task>
+		</task>
+	</task>
+</task>
+</project>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/pom.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/pom.xml
index 6e14d6b..9a3404c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/pom.xml
@@ -37,6 +37,21 @@
     </dependencies>
 
     <build>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                    <include>**/*.yml</include>
+                </includes>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <!-- 璇ユ彃浠朵笉浼氬皢椤圭洰涓紩鍏ョ殑渚濊禆鎵撹繘鏈�缁堢殑 Jar 鏂囦欢 -->
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
index 008ed2a..c8d961c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
@@ -101,7 +101,7 @@
 			rqVo.id = id ;
 			rqVo.token = token ;
 			rqVo.code = Code.cd5 ;
-			rqVo.count = count ;
+			rqVo.overCount = count ;
 			String json = rqVo.toJson() ;
 			frmWork.syncRequest(json) ;
 		} catch (Exception e) {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiRequestVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiRequestVo.java
index c21c432..99d80ae 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiRequestVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiRequestVo.java
@@ -9,9 +9,11 @@
 	public String token ;
 	
 	public String code ;
-	
+
 	public Integer count;//aepTest涓婃姤鏁版嵁鏁伴噺
-	
+
+	public Integer overCount;//aepTest缁撴潫涓婃姤鏁版嵁鏁伴噺
+
 	public Boolean over ;//aepTest涓婃姤鏁版嵁缁撴潫
 	
 	public Long seconds ;//aepTest涓婃姤鏁版嵁鐢ㄦ椂(绉�)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java
index 16ea1df..610257f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java
@@ -1,5 +1,8 @@
 package com.dy.testClient.tcpClient;
 
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
@@ -8,6 +11,8 @@
 import java.io.IOException;
 
 public class LocalDecoder extends CumulativeProtocolDecoder {
+
+    private static final Logger log = LogManager.getLogger(LocalDecoder.class) ;
 
     private static final String DECODER_STATE_KEY = LocalDecoder.class.getName() + ".STATE";
 
@@ -23,6 +28,7 @@
             byte[] preByte = new byte[remain];
             in.get(preByte) ;
             in.position(0) ;
+            log.info("鏀跺埌涓績搴旂瓟鏁版嵁锛�" + ByteUtil.bytes2Hex(preByte, true));
         }
         return true;
     }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
index 0a07ff7..e50537f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
@@ -6,16 +6,20 @@
 import com.dy.common.threadPool.ThreadPool;
 import com.dy.common.util.ByteUtil;
 import com.dy.testClient.ServerProperties;
-import org.apache.mina.core.future.CloseFuture;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.mina.core.session.IoSession;
 
 public class MyThreadJob  implements ThreadPool.Job {
+
+    private static final Logger log = LogManager.getLogger(MyThreadJob.class) ;
 
     public String rtuAddr;
     public String serverIp;
     public Integer serverPort;
 
     public IoSession session ;
+    public boolean exceptionOnConnect = false ;
 
     public static final int connectTimeout = 3000 ;
 
@@ -34,12 +38,9 @@
 
     @Override
     public void execute() throws Exception {
-        if(session == null){
-            IoSession se = new TcpConnect().createSession(this.rtuAddr, this, this.serverIp, this.serverPort, connectTimeout, new TcpHandler()) ;
-            if(se != null){
-                this.session = se ;
-            }
-        }else{
+        log.info("RTU" + rtuAddr + "寮�濮嬩换鍔�");
+        if(session != null){
+            log.info("RTU" + rtuAddr + "灏嗚鎵ц" + ServerProperties.sendTimes + "杞浠诲姟锛屽綋鍓嶈疆娆℃槸" + sendTimes);
             if(sendTimes <= ServerProperties.sendTimes){
                 sendDataOfP206V1_0_0() ;
             }else{
@@ -53,9 +54,11 @@
             if(heartbeatTimes >= ServerProperties.heartbeatTimes){
                 heartbeatTimes = 0 ;
                 this.sendReportData() ;
+                TcpClUnit.clientSendData();
                 sendTimes++ ;
             }else{
                 this.sendHeartbeat() ;
+                TcpClUnit.clientSendData();
                 heartbeatTimes++ ;
             }
         }catch(Exception e){
@@ -66,23 +69,30 @@
         try{
             byte[] bs = this.createHeartbeat() ;
             this.session.write(bs) ;
+            log.info("RTU" + rtuAddr + "鍙戦�佷簡蹇冭烦鏁版嵁锛�" + ByteUtil.bytes2Hex(bs, false));
         }catch (Exception e){
             e.printStackTrace();
         }
     }
 
     private void sendReportData(){
-        TcpClUnit.clientSendData();
+        try{
+            byte[] bs = this.createReport() ;
+            this.session.write(bs) ;
+            log.info("RTU" + rtuAddr + "鍙戦�佷簡涓婃姤鏁版嵁锛�" + ByteUtil.bytes2Hex(bs, false));
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     private void jobOver(){
-        CloseFuture closeFuture = session.closeOnFlush() ;
+        session.closeOnFlush() ;
         this.isOver = true ;
         TcpClUnit.clientOver() ;
     }
 
     /**
-     * 鏋勯�犱笅琛屾暟鎹�
+     * 鏋勯�犲績璺虫暟鎹�
      * @return 瀛楄妭鏁扮粍
      * @throws Exception 寮傚父
      */
@@ -100,7 +110,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0x80, (byte)0) ;//鎺у埗鍩熷姛鑳界爜锛氱‘璁� 璁ゅ彲
 
         index++ ;
         GlCreate.createRtuAddr(this.rtuAddr, bsHead, index);
@@ -115,7 +125,91 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+        return bytes ;
+    }
+
+    /**
+     * 鏋勯�犱笂鎶ユ暟鎹�
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] createReport( ) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0x80, (byte)3) ;//鎺у埗鍩熷姛鑳界爜3锛氳嚜鎶ュ抚锛屾祦閲忥紙姘撮噺锛夊弬鏁�
+
+        index++ ;
+        GlCreate.createRtuAddr(this.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes("C0", bsHead, index) ;
+
+        byte[] bs = new byte[2] ;
+        bs[0] = (byte)0x04 ;//鏈夋祦閲忔暟鎹�
+        bs[1] = (byte)0xE0 ;//鏈夋按鍘嬨�佺數姹犵數鍘嬨�佷俊鍙峰己搴�
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        bs = new byte[5] ;//鐬椂娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (43)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (65)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//绱娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (43)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (65)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE (87)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鎹熷け娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (54)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//姘村帇
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (4)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鐢垫睜鐢靛帇
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE (32)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[1] ;//淇″彿寮哄害
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[6] ;//鏃堕挓
+        GlCreate.createTp(bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
index 167adde..78a8b90 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
@@ -5,10 +5,12 @@
 import com.dy.common.mw.UnitStartedCallbackInterface;
 import com.dy.common.threadPool.ThreadPool;
 import com.dy.common.threadPool.TreadPoolFactory;
+import com.dy.common.util.Callback;
 import com.dy.testClient.ServerProperties;
 import com.dy.testClient.rmiClient.RmiClUnit;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.mina.core.session.IoSession;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -26,7 +28,7 @@
     private static ThreadPool.Pool pool ;
     private static Map<String, MyThreadJob> jobMap = new HashMap<>() ;
 
-    private static Integer totalRunedClientCount = 0;
+    private static Integer totalRtuClientCount = 0;
     private static Integer totalSendDataCount = 0;
     private static Integer totalOverClientCount = 0;
 
@@ -72,23 +74,46 @@
                         if(!ServerProperties.startWork){
                             Thread.sleep(100L);
                         }else{
-                            startTime = System.currentTimeMillis() ;
-                            for(Long addr = ServerProperties.rtuAddrStart; addr <= ServerProperties.rtuAddrEnd; addr++){
-                                totalRunedClientCount++ ;
-                                createImitate(addr) ;
-                            }
-                            startJob() ;
-                            while(true){
-                                if(totalOverClientCount.longValue() >= totalRunedClientCount.longValue()){
-                                    Long seconds = (System.currentTimeMillis() - startTime)/1000 ;
-                                    RmiClUnit.getInstance().allOver(seconds) ;
-                                    System.out.println("鍏辩敤鏃�" + seconds + "绉�");
-                                    break ;
-                                }else{
-                                    Thread.sleep(100L);
+                            try{
+                                startTime = System.currentTimeMillis() ;
+                                for(Long addr = ServerProperties.rtuAddrStart; addr <= ServerProperties.rtuAddrEnd; addr++){
+                                    totalRtuClientCount++ ;
+                                    createImitate(addr) ;
                                 }
+                                log.info("鍏辨ā鎷熶簡" + totalRtuClientCount + "鍙癛TU");
+
+                                Collection<MyThreadJob> collection = jobMap.values() ;
+                                for(MyThreadJob job : collection){
+                                    connectServer(job) ;
+                                }
+                                log.info("鍚姩鎵�鏈塕TU杩炴帴閫氫俊涓棿浠�");
+
+                                while (true){
+                                    int noConnectedCount = checkConnected() ;
+                                    if(noConnectedCount > 0){
+                                        log.info("绛夊緟" + noConnectedCount + "鍙癛TU杩炴帴缃戠粶");
+                                        Thread.sleep(100L);
+                                    }else{
+                                        break ;
+                                    }
+                                }
+
+                                startJob() ;
+                                while(true){
+                                    if(totalOverClientCount.longValue() >= totalRtuClientCount.longValue()){
+                                        Long seconds = (System.currentTimeMillis() - startTime)/1000 ;
+                                        RmiClUnit.getInstance().allOver(seconds) ;
+                                        log.info("鍏辩敤鏃�" + seconds + "绉�");
+                                        break ;
+                                    }else{
+                                        Thread.sleep(100L);
+                                    }
+                                }
+                            }catch (Exception e){
+                                e.printStackTrace();
+                            }finally {
+                                break ;
                             }
-                            break;
                         }
                     }
                 } catch (Exception e) {
@@ -106,18 +131,71 @@
         jobMap.put("" + rtuAddr, new MyThreadJob("" + rtuAddr, ServerProperties.tcpServerIp, ServerProperties.tcpServerPort)) ;
     }
 
+
+    private void connectServer(MyThreadJob job){
+        if(job.session == null){
+            try{
+                new TcpConnect().createSession(job.rtuAddr,
+                        job,
+                        job.serverIp,
+                        job.serverPort,
+                        job.connectTimeout,
+                        new TcpHandler(),
+                        new Callback() {
+                            @Override
+                            public void call(Object obj) {
+                                if(obj == null){
+                                    log.error("鍒涘缓缃戠粶浼氳瘽杩斿洖涓簄ull");
+                                }else{
+                                    job.session = (IoSession)obj ;
+                                }
+                            }
+                            @Override
+                            public void call(Object... objs) {
+                            }
+                            @Override
+                            public void exception(Exception e) {
+                            }
+                        }) ;
+            }catch (Exception e){
+                job.exceptionOnConnect = true ;
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private int checkConnected(){
+        int noConnectedCount = 0 ;
+        Collection<MyThreadJob> collection = jobMap.values() ;
+        for(MyThreadJob job : collection){
+            if(job.session == null && !job.exceptionOnConnect){
+                noConnectedCount++ ;
+            }
+        }
+        return noConnectedCount;
+    }
+
     private void startJob(){
         new Thread(new Runnable(){
             @Override
             public void run() {
                 try {
-                    Thread.sleep(1000L);
+                    int notOverCount;
                     while(true){
+                        notOverCount = 0 ;
                         Collection<MyThreadJob> collection = jobMap.values() ;
                         for(MyThreadJob job : collection){
-                            pool.putJob(job);
+                            if(!job.isOver){
+                                notOverCount++ ;
+                                pool.putJob(job);
+                            }
                         }
-                        Thread.sleep(ServerProperties.sendInterval * 1000);
+                        if(notOverCount > 0){
+                            log.info("褰撳墠杩樻湁" + notOverCount + "鍙癛TU鏈畬鎴愪换鍔�");
+                            Thread.sleep(ServerProperties.sendInterval * 1000);
+                        }else{
+                            break ;
+                        }
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -129,17 +207,37 @@
 
     public static synchronized void clientSendData(){
         totalSendDataCount++;
-        if(totalSendDataCount % 100 == 0){
+        if(totalOverClientCount.longValue() >= totalRtuClientCount.longValue()){
             RmiClUnit.getInstance().reportHadReportCount(totalSendDataCount);
             System.out.println("宸茬粡鍙戦��" + totalSendDataCount + "鏉℃暟鎹�");
+        }else{
+            if(totalRtuClientCount > 100){
+                if(totalSendDataCount % 100 == 0){
+                    RmiClUnit.getInstance().reportHadReportCount(totalSendDataCount);
+                    System.out.println("宸茬粡鍙戦��" + totalSendDataCount + "鏉℃暟鎹�");
+                }
+            }else{
+                RmiClUnit.getInstance().reportHadReportCount(totalSendDataCount);
+                System.out.println("宸茬粡鍙戦��" + totalSendDataCount + "鏉℃暟鎹�");
+            }
         }
     }
 
     public static synchronized void clientOver(){
         totalOverClientCount++;
-        if(totalOverClientCount % 100 == 0){
+        if(totalOverClientCount.longValue() >= totalRtuClientCount.longValue()){
             RmiClUnit.getInstance().reportHadReportOver(totalOverClientCount);
-            System.out.println("宸叉湁" + totalOverClientCount + "瀹屾垚浜嗕换鍔�");
+            System.out.println("宸叉湁" + totalOverClientCount + "涓猂TU瀹屾垚浜嗕换鍔�");
+        }else{
+            if(totalRtuClientCount > 100) {
+                if (totalOverClientCount % 100 == 0) {
+                    RmiClUnit.getInstance().reportHadReportOver(totalOverClientCount);
+                    System.out.println("宸叉湁" + totalOverClientCount + "涓猂TU瀹屾垚浜嗕换鍔�");
+                }
+            }else{
+                RmiClUnit.getInstance().reportHadReportOver(totalOverClientCount);
+                System.out.println("宸叉湁" + totalOverClientCount + "涓猂TU瀹屾垚浜嗕换鍔�");
+            }
         }
     }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
index cdf2c8e..a4dae41 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
@@ -1,5 +1,6 @@
 package com.dy.testClient.tcpClient;
 
+import com.dy.common.util.Callback;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
@@ -28,9 +29,18 @@
      * @param job rtu宸ヤ綔绫�
      * @param host 鏈嶅姟鍣║RI
      * @param port 鏈嶅姟鍣ㄧ鍙�
+     * @param connectTimeout 杩炴帴瓒呮椂鏃堕暱
+     * @param handler 鏁版嵁澶勭悊鑰�
+     * @param callback 鍥炶皟
      * @return 缃戠粶浼氳瘽
      */
-    public IoSession createSession(String rtuAddr, MyThreadJob job, String host , int port , int connectTimeout , TcpHandler handler) throws Exception{
+    public void createSession(String rtuAddr,
+                                   MyThreadJob job,
+                                   String host ,
+                                   int port ,
+                                   int connectTimeout ,
+                                   TcpHandler handler,
+                                   Callback callback) throws Exception{
         SocketConnector connector = new NioSocketConnector();
         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new LocalCodecFactory()));
         connector.setHandler(handler);
@@ -39,7 +49,7 @@
         IoSession se = connectFuture.getSession();
         se.setAttribute(rtuAddrKey, rtuAddr) ;
         se.setAttribute(threadJobKey, job) ;
-        return se ;
+        callback.call(se) ;
     }
 
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
index e002217..263786c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
@@ -108,6 +108,9 @@
 					if(sta.count != null){
 						prtWrt.println("    宸茬粡涓婃姤鏁版嵁锛�" + sta.count + "鏉�");
 					}
+					if(sta.overCount != null){
+						prtWrt.println("    宸茬粡瀹屾垚涓婃姤鏁版嵁锛�" + sta.overCount + "鍙癛TU");
+					}
 					if(sta.over != null && sta.over){
 						prtWrt.println("    涓婃姤鏁版嵁宸茬粡瀹屾垚锛屽叡鐢ㄦ椂锛�" + sta.seconds + "绉�");
 					}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java
index ca88a20..cf45570 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java
@@ -161,10 +161,10 @@
 		MwTestClientStatus sta = token2ClientMap.get("" + token);
 		if(sta == null){
 			sta = new MwTestClientStatus() ;
-			sta.overCount = rqVo.count ;
+			sta.overCount = rqVo.overCount ;
 			token2ClientMap.put("" + token, sta);
 		}else{
-			sta.count = rqVo.count ;
+			sta.overCount = rqVo.overCount ;
 		}
 	}
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/RmiRequestVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/RmiRequestVo.java
index 59e9e6c..b7e3ba5 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/RmiRequestVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/RmiRequestVo.java
@@ -11,7 +11,9 @@
 	public String code ;
 	
 	public Integer count;//mwTest涓婃姤鏁版嵁鏁伴噺
-	
+
+	public Integer overCount;//aepTest缁撴潫涓婃姤鏁版嵁鏁伴噺
+
 	public Boolean over ;//mwTest涓婃姤鏁版嵁缁撴潫
 	
 	public Long seconds ;//mwTest涓婃姤鏁版嵁鐢ㄦ椂(绉�)
@@ -83,5 +85,12 @@
 	public void setSeconds(Long seconds) {
 		this.seconds = seconds;
 	}
-	
+
+	public Integer getOverCount() {
+		return overCount;
+	}
+
+	public void setOverCount(Integer overCount) {
+		this.overCount = overCount;
+	}
 }

--
Gitblit v1.8.0