From 52952d6feed8a9df738c652cda6c7d1ca50d2921 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 23 十一月 2023 17:20:23 +0800
Subject: [PATCH] 1、修改rtuAddr注释 2、实现开关阀自报协议 3、实现开阀工作报 4、《编码设计》

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java              |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java                        |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java       |   56 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java            |   61 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java                                |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java               |   22 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java           |   89 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java                 |   33 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java           |   89 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java                                  |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java               |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java             |  144 ++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java                               |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java                |   28 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java                 |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java           |   39 -
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/说明.txt               |    1 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java                 |   45 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java           |    7 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java                        |    2 
 pipIrr-platform/文档/编码设计.docx                                                                                     |    0 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java                 |   14 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java             |   46 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java                |   24 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java             |  220 +++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java                                     |   28 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java                      |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java           |   89 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java             |  248 ++++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java      |   39 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java                          |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java        |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java             |    6 
 34 files changed, 1,308 insertions(+), 51 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
index 3bd48c5..0d3eb64 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
@@ -7,5 +7,5 @@
  */
 public class TcpIoSessionAttrIdIsRtuAddr {
 
-	public static final String sessionArrIdKey = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸IMEI鍙�
+	public static final String sessionArrIdKey = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍦板潃
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
index 0638c78..7bb4162 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
@@ -62,7 +62,7 @@
 	public String toString(){
 		String s = "鍛戒护id=" + id + "\n" ;
 		s += (protocol == null ? "" : ("鍗忚=" + protocol + "\n"));
-		s += (rtuAddr == null ? "" : ("IMEI鍙�=" + rtuAddr + "\n"));
+		s += (rtuAddr == null ? "" : ("Rtu鍦板潃=" + rtuAddr + "\n"));
 		s += "鍛戒护绫诲瀷=" + (type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":"缁堢鍛戒护") + "\n" ;
 		s += (code == null ? "" : ("鍔熻兘鐮�=" + code + "\n")) ;
 		s += "杩斿洖涓棿浠跺鍛戒护澶勭悊缁撴灉=" + (noRtMwDealRes == null?"杩斿洖":(noRtMwDealRes?"涓嶈繑鍥�":"杩斿洖") + "\n") ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
index 3b9f364..58b5ede 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
@@ -22,7 +22,7 @@
 	public String toString() {
 		StringBuilder sb = new StringBuilder() ;
 		sb.append("涓婅鎶ユ枃(鍗佸叚杩涘埗): ").append((hex == null?"":hex)).append("\n") ; //
-		sb.append("IMEI鍙� : ").append((rtuAddr==null?"":rtuAddr)).append("\n") ;
+		sb.append("Rtu鍦板潃 : ").append((rtuAddr==null?"":rtuAddr)).append("\n") ;
 		if(commandId != null){
 			sb.append("鍛戒护ID : ").append(commandId).append("\n") ; //鍛戒护ID
 		}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
index fb552c1..30f219a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
@@ -9,9 +9,9 @@
 	 * @param upHex 涓婅鏁版嵁
 	 * @param reportOrResponse_trueOrFalse 涓婅鏁版嵁鏄富鍔ㄤ笂鎶ヨ繕鏄懡浠ょ粨鏋�
 	 * @param parseFail 涓婅鏁版嵁瑙f瀽鏄惁澶辫触
-	 * @param rtuAddrInData 涓婅鏁版嵁涓湪鍗忚鏁版嵁涓殑IMEI鍙凤紝
-	 * 	鈥滀慨鏀筊TU缁堢绠$悊閰嶇疆鍙傛暟鈥濆懡浠ょ殑杩斿洖鏁版嵁锛屽叾鍗忚澶翠腑鐨処MEI鍙蜂笌鏁版嵁涓殑IMEI鍙蜂笉涓�鏍凤紝
-	 *  濡傛灉RTU涓嶈兘鍏抽棴缃戠粶锛岄偅涔坰essionCach涓殑IMEI鍙锋�绘槸鐢ㄤ慨鏀瑰墠鐨処MEI鍙凤紝浣垮緱浠ュ悗涓婅鏁版嵁鐨勪笉鑳芥壘鍒扮紦瀛樹腑鐨凷ession
+	 * @param rtuAddrInData 涓婅鏁版嵁涓湪鍗忚鏁版嵁涓殑Rtu鍦板潃锛�
+	 * 	鈥滀慨鏀筊TU缁堢绠$悊閰嶇疆鍙傛暟鈥濆懡浠ょ殑杩斿洖鏁版嵁锛屽叾鍗忚澶翠腑鐨凴tu鍦板潃涓庢暟鎹腑鐨凴tu鍦板潃涓嶄竴鏍凤紝
+	 *  濡傛灉RTU涓嶈兘鍏抽棴缃戠粶锛岄偅涔坰essionCach涓殑Rtu鍦板潃鎬绘槸鐢ㄤ慨鏀瑰墠鐨凴tu鍦板潃锛屼娇寰椾互鍚庝笂琛屾暟鎹殑涓嶈兘鎵惧埌缂撳瓨涓殑Session
 	 */
 	void callback(String rtuAddr,
 			String code,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java
index 628037b..bdbb7a0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java
@@ -11,7 +11,7 @@
 	}
 
 	public String protocolName ;//鍗忚鍚嶇О
-	public String rtuAddr ;//IMEI鍙凤紝娉ㄦ剰rtuAddr鍙兘涓簄ull
+	public String rtuAddr ;//Rtu鍦板潃锛屾敞鎰弐tuAddr鍙兘涓簄ull
 	public String message ;//鍑洪敊娑堟伅
 	public Exception e ;//寮傚父
 	
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java
index e6efa2e..4813115 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java
@@ -13,7 +13,7 @@
 	public String commandId ;//鍙戦�佸懡浠ょ殑ID锛屽鏋滄槸鍛戒护缁撴灉锛屽苟涓斿尮閰嶄簡涓嬪彂鍛戒护锛屾鍊间笉涓虹┖
 	
 	public String protocolName ;//鍗忚鍚嶇О
-	public String rtuAddr ;//IMEI鍙�
+	public String rtuAddr ;//Rtu鍦板潃
 	public String upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
 	public String upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
 	public byte[] upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
index 7b3a643..087aa53 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
@@ -11,7 +11,7 @@
 	}
 
 	public String protocolName ;//鍗忚鍚嶇О
-	public String rtuAddr ;//IMEI鍙�(鐢典俊骞冲彴IMEI)
+	public String rtuAddr ;//Rtu鍦板潃
 	public String commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
 	public String downCode ;//涓嬭鍛戒护鍔熻兘鐮�;
 	public byte[] downBuffer ;//涓嬭鍛戒护鏁版嵁
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java
index d11f570..746e926 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java
@@ -16,7 +16,7 @@
 	class OnLineResult{
 		public int result ;//鍒嗘瀽缁撴灉
 		public String protocolName ;//鍗忚鍚嶇О
-		public String rtuAddr ;//IMEI鍙�
+		public String rtuAddr ;//Rtu鍦板潃
 		public byte[] remoteData;//闇�瑕佸悜Rtu鍥炲啓鐨勬暟鎹�
 		public OnLineResult(){
 			result = OnLineAction_fail ;
@@ -26,7 +26,7 @@
 	}
 	
 	int OnLineAction_fail = 0; //鍒嗘瀽涓婄嚎鏁版嵁澶辫触锛屽鎻愪緵鐨勬暟鎹负null绛夊師鍥�
-	int OnLineAction_success = 1; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟鑳藉緱鍒癐MEI鍙�
+	int OnLineAction_success = 1; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟鑳藉緱鍒癛tu鍦板潃
 	int OnLineAction_success_noMe = 2; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛岃瘑鍒嚭涓嶆槸鏈崗璁暟鎹�
 	int OnLineAction_success_response = 3; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟闇�瑕佸悜Rtu鍥炲啓鏁版嵁
 	
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
index f5b6613..61ac4bd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
@@ -47,7 +47,7 @@
 			}
 		}
 		if(rs == null){
-			throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篒MEI鍙凤紒") ;
+			throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篟tu鍦板潃锛�") ;
 		}
 		return rs ;
 	}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
index 87ee9cf..d976064 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -2,17 +2,17 @@
 
 public class CodeV1_0_1 {
 	//鍔熻兘鐮佷负瀛楃涓诧紝鍗佸叚杩涘埗鏁版嵁
-	public static final String cd_02 = "02" ;//閾捐矾妫�娴�
-	public static final String cd_03 = "03" ;//浜嬩欢涓婃姤
-	public static final String cd_04 = "04" ;//寮�闃�
-	public static final String cd_05 = "05" ;//鍏抽榾
+	public static final String cd_02 = "02" ;//閬ユ祴绔欓摼璺娴�
+	public static final String cd_C0 = "C0" ;//閬ユ祴绔欒嚜鎶ュ疄鏃舵暟鎹�
+	public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤
+	public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶�
 	public static final String cd_06 = "06" ;//闃�闂ㄥ姩浣滅粨鏋�
 
 	public static String getCodeName(String code) {
 		String name = (code.equals(cd_02) ? "閾捐矾妫�娴�" :
-			(code.equals(cd_03) ? "浜嬩欢涓婃姤" :
-			(code.equals(cd_04) ? "寮�闃�" : 
-			(code.equals(cd_05) ? "鍏抽榾" : 
+			(code.equals(cd_C0) ? "鑷姤瀹炴椂鏁版嵁" :
+			(code.equals(cd_83) ? "寮�鍏抽榾鑷姤" :
+			(code.equals(cd_84) ? "寮�闃�宸ヤ綔鎶�" :
 			(code.equals(cd_06) ? "闃�闂ㄥ姩浣滅粨鏋�" : 
 			""))))) ;
 		return name ;
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 e8616b0..9ab7b11 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
@@ -60,7 +60,7 @@
 
 
 	/**
-	 * 鍒嗘瀽IMEI鍙�
+	 * 鍒嗘瀽Rtu鍦板潃
 	 * @param bs 涓婅瀛楄妭鏁扮粍
 	 * @return 鎺у埗鍣ㄥ湴鍧�
 	 * @throws Exception 寮傚父
@@ -132,6 +132,26 @@
 		//DIR = 0
 		return b ;
 	}
+
+	/**
+	 * 寰楀埌鍏冲紑闃�绫诲瀷鍚嶇О
+	 * @param type 瀛楄妭
+	 * @return 鍚嶇О
+	 */
+	public static String openCloseValveType(byte type){
+		return switch (type) {
+			case 1 -> "鍒峰崱寮�闃�";
+			case 2 -> "鍒峰崱鍏抽榾";
+			case 3 -> "涓績绔欏紑闃�";
+			case 4 -> "涓績绔欏叧闃�";
+			case 5 -> "娆犺垂鍏抽榾";
+			case 6 -> "娴侀噺璁℃晠闅滃叧闃�";
+			case 7 -> "绱ф�ュ叧闃�";
+			case 8 -> "鐢ㄦ埛杩滅▼寮�闃�";
+			case 9 -> "鐢ㄦ埛杩滅▼鍏抽榾";
+			default -> "鏈煡";
+		};
+	}
 	
 	/*
 	 * 鍒嗘瀽鐗堟湰鍙�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java
new file mode 100644
index 0000000..3accdc0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java
@@ -0,0 +1,28 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataAlarmVo {
+    public Byte batteryVolt ;// 钃勭數姹犵數鍘�
+    public Byte loss ;//婕忔崯
+    public Byte meter ;//浠〃
+    public Byte valve ;//闃�闂�
+
+    public String toString(){
+        StringBuilder str = new StringBuilder() ;
+        str.append("      鎶ヨ:\n");
+        str.append("         钃勭數姹犵數鍘嬶細");
+        str.append(batteryVolt==null?"":(batteryVolt==1?"鎶ヨ":"姝e父"));
+        str.append("\n");
+        str.append("         婕忔崯锛�");
+        str.append(loss==null?"":(loss==1?"鎶ヨ":"姝e父"));
+        str.append("\n");
+        str.append("         浠〃锛�");
+        str.append(meter==null?"":(meter==1?"鎶ヨ":"姝e父"));
+        str.append("\n");
+        str.append("         闃�闂細");
+        str.append(valve==null?"":(valve==1?"鎶ヨ":"姝e父"));
+        return str.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
new file mode 100644
index 0000000..5d93ebd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -0,0 +1,61 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataCd83CloseVo {
+    // 寮�鍏抽榾绫诲瀷锛�
+    // 1銆佸埛鍗″紑闃�锛�2鍒峰崱鍏抽榾锛�3銆佷腑蹇冪珯寮�闃�锛�4銆佷腑蹇冪珯鍏抽榾锛�5銆佹瑺璐瑰叧闃�锛�
+    // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛�
+    public Byte type ;
+    public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public String clientNum ;//鍐滄埛缂栧彿
+    public String icAddr ;//ic鍗″湴鍧�
+    public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
+    public String openDt ;//鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+    public String closeDt ;//鐢ㄦ按鎴风敤姘寸粨鏉熸椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+    public Double thisAmount ;//鐢ㄦ按鎴锋湰娆$敤姘撮噺锛氱疮璁℃祦閲�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public Double thisMoney ;//鐢ㄦ按鎴锋湰娆℃秷璐归噾棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
+    public Integer thisTime ;//鐢ㄦ按鎴锋湰娆$敤姘存椂闀匡細鐢ㄦ按鏃堕暱2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999锛屽崟浣嶄负鍒嗛挓銆�
+    public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   缁堢鍏抽榾鑷姤:\n");
+        sb.append("      鍏抽榾绫诲瀷锛�");
+        sb.append(CommonV1_0_1.openCloseValveType(type)) ;
+        sb.append("\n");
+        sb.append("      绱娴侀噺锛�");
+        sb.append(totalAmount==null?"":totalAmount);
+        sb.append("\n");
+        sb.append("      鍐滄埛缂栧彿锛�");
+        sb.append(clientNum);
+        sb.append("\n");
+        sb.append("      ic鍗″湴鍧�锛�");
+        sb.append(icAddr);
+        sb.append("\n");
+        sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
+        sb.append(remainMoney ==null?"": remainMoney);
+        sb.append("\n");
+        sb.append("      寮�闃�鏃堕棿锛�");
+        sb.append(openDt);
+        sb.append("\n");
+        sb.append("      鍏抽榾鏃堕棿锛�");
+        sb.append(closeDt);
+        sb.append("\n");
+        sb.append("      鏈鐢ㄦ按閲忥細");
+        sb.append(thisAmount==null?"":thisAmount);
+        sb.append("\n");
+        sb.append("      鏈鑺辫垂閲戦锛堝厓锛夛細");
+        sb.append(thisMoney==null?"":thisMoney);
+        sb.append("\n");
+        sb.append("      鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級锛�");
+        sb.append(thisTime==null?"":thisTime);
+        sb.append("\n");
+        sb.append("      鎺у埗鍣ㄦ椂閽燂細");
+        sb.append(rtuDt==null?"":rtuDt);
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
new file mode 100644
index 0000000..6b8da04
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
@@ -0,0 +1,46 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+
+import lombok.Data;
+
+@Data
+public class DataCd83OpenVo {
+    // 寮�鍏抽榾绫诲瀷锛�
+    // 1銆佸埛鍗″紑闃�锛�2鍒峰崱鍏抽榾锛�3銆佷腑蹇冪珯寮�闃�锛�4銆佷腑蹇冪珯鍏抽榾锛�5銆佹瑺璐瑰叧闃�锛�
+    // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛�
+    public Byte type ;
+    public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public String clientNum ;//鍐滄埛缂栧彿
+    public String icAddr ;//ic鍗″湴鍧�
+    public Double remainMoney;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
+    public String openDt ;//鐢ㄦ按鎴峰紑闃�鏃堕棿锛�6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+    public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   缁堢寮�闃�鑷姤:\n");
+        sb.append("      寮�闃�绫诲瀷锛�");
+        sb.append(CommonV1_0_1.openCloseValveType(type)) ;
+        sb.append("\n");
+        sb.append("      绱娴侀噺锛�");
+        sb.append(totalAmount==null?"":totalAmount);
+        sb.append("\n");
+        sb.append("      鍐滄埛缂栧彿锛�");
+        sb.append(clientNum);
+        sb.append("\n");
+        sb.append("      ic鍗″湴鍧�锛�");
+        sb.append(icAddr);
+        sb.append("\n");
+        sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
+        sb.append(remainMoney ==null?"": remainMoney);
+        sb.append("\n");
+        sb.append("      寮�闃�鏃堕棿锛�");
+        sb.append(openDt);
+        sb.append("\n");
+        sb.append("      鎺у埗鍣ㄦ椂閽燂細");
+        sb.append(rtuDt==null?"":rtuDt);
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
new file mode 100644
index 0000000..789350f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
@@ -0,0 +1,33 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataCd84Vo {
+    public String clientNum ;//鍐滄埛缂栧彿
+    public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
+    public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public Double instantAmount; //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆�
+    public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   缁堢寮�闃�宸ヤ綔鎶�:\n");
+        sb.append("      鍐滄埛缂栧彿锛�");
+        sb.append(clientNum);
+        sb.append("\n");
+        sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
+        sb.append(remainMoney==null?"":remainMoney);
+        sb.append("\n");
+        sb.append("      绱娴侀噺锛�");
+        sb.append(totalAmount==null?"":totalAmount);
+        sb.append("\n");
+        sb.append("      鐬椂娴侀噺锛�");
+        sb.append(instantAmount==null?"":instantAmount);
+        sb.append("\n");
+        sb.append("      鎺у埗鍣ㄦ椂閽燂細");
+        sb.append(rtuDt==null?"":rtuDt);
+        sb.append("\n");
+        return sb.toString() ;
+    }
+}
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 531d4b7..997792e 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
@@ -4,4 +4,49 @@
 
 @Data
 public class DataCdC0Vo {
+    public Double instantAmount; //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆�
+    public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public Double lossAmount; //鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+    public Double waterPress; //姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa銆�
+    public Double batteryVolt;//钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
+    public Double sunVolt ;//澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
+    public Integer signal; //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆�
+    public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
+    public DataAlarmVo alarmVo ;//鎶ヨ
+    public DataStateVo stateVo ;//鐘舵��
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   缁堢鑷姤瀹炴椂鏁版嵁:\n");
+        sb.append("      鐬椂娴侀噺锛�");
+        sb.append(instantAmount==null?"":instantAmount);
+        sb.append("\n");
+        sb.append("      绱娴侀噺锛�");
+        sb.append(totalAmount==null?"":totalAmount);
+        sb.append("\n");
+        sb.append("      鎹熷け娴侀噺锛�");
+        sb.append(lossAmount==null?"":lossAmount);
+        sb.append("\n");
+        sb.append("      姘村帇锛�");
+        sb.append(waterPress==null?"":waterPress);
+        sb.append("\n");
+        sb.append("      钃勭數姹犵數鍘嬶細");
+        sb.append(batteryVolt==null?"":batteryVolt);
+        sb.append("\n");
+        sb.append("      澶槼鑳界數鍘嬶細");
+        sb.append(sunVolt==null?"":sunVolt);
+        sb.append("\n");
+        sb.append("      淇″彿寮哄害锛�");
+        sb.append(signal==null?"":signal);
+        sb.append("\n");
+        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");
+
+        return sb.toString() ;
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
new file mode 100644
index 0000000..08bfef9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
@@ -0,0 +1,24 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataStateVo  {
+    public Byte idCard ;// 钃勭數姹犵數鍘�
+    public Byte work;//宸ヤ綔鐘舵��
+    public Byte valve ;//闃�闂�
+
+    public String toString(){
+        StringBuilder str = new StringBuilder() ;
+        str.append("      鐘舵��:\n");
+        str.append("         IC 鍗″姛鑳斤細");
+        str.append(idCard==null?"":(idCard==1?"鏈夋晥":"鏃犳晥"));
+        str.append("\n");
+        str.append("         宸ヤ綔鐘舵�侊細");
+        str.append(work ==null?"":(work==1?"鍚姩":"鍋滄"));
+        str.append("\n");
+        str.append("         闃�闂細");
+        str.append(valve==null?"":(valve==1?"鎵撳紑":"鍏抽棴"));
+        return str.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 e7d9d72..5fb7201 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
@@ -11,6 +11,9 @@
 
 	public DataCd02Vo dataCd02Vo;//閾捐矾妫�娴�
 	public DataCdC0Vo dataCdC0Vo;//缁堢鑷姤瀹炴椂鏁版嵁
+	public DataCd83OpenVo dataCd83OpenVo;//寮�闃�鑷姤
+	public DataCd83CloseVo dataCd83CloseVo;//鍏抽榾鑷姤
+	public DataCd84Vo dataCd84Vo;//寮�闃�宸ヤ綔鎶�
 
 	public String dt ;//閫氫俊涓棿浠朵骇鐢熷彂鎶ユ椂闂�(yyyy-MM-dd hh:mm:ss)
 
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 2a8a6e6..6ddc78e 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
@@ -116,7 +116,7 @@
 	public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) {
 		String rtuAddr = command.getRtuAddr() ;
 		if(rtuAddr == null){
-			return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑IMEI鍙蜂负绌猴紝涓嶈兘鏋勫缓浠讳綍鍛戒护锛�", null))} ;
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ;
 		}
 		try {
 			String commandCode = command.getCode() ;
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 fdec425..e520aee 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
@@ -28,6 +28,8 @@
     public static final byte P_Head_Byte = (byte)0x68 ;
     public static final byte P_Tail_Byte = (byte)0x16 ;
 
+    public static final byte P_Default_mode = (byte)0x0F ;//榛樿宸ヤ綔妯″紡
+
     public static final String P_Head_Hex = "68" ;
     public static final String P_Tail_Hex = "16" ;
 
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 9a28b35..c314b69 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
@@ -2,17 +2,15 @@
 
 import com.dy.common.mw.protocol.*;
 import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
 import com.dy.common.util.ByteUtil;
-import com.dy.common.util.ByteUtilUnsigned;
-import com.dy.common.util.CRC8_for_2_0;
-import com.dy.common.util.DateTime;
 
 @AnnotationCodeDown(ifAny={
         CodeV1_0_1.cd_06
 })
 public class Cd_02_Down  implements CodeParse {
 
-    //private static Logger log = LogManager.getLogger(Cd_XY_Down.class);
+    //private static Logger log = LogManager.getLogger(Cd_02_Down.class);
 
     @Override
     public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
@@ -21,7 +19,7 @@
 
         MidResultToRtu midRs = new MidResultToRtu() ;
         midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
-        midRs.rtuAddr = para.rtuAddr ;//IMEI鍙凤紙鐢典俊骞冲彴璁惧IMEI锛�
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
         midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
         midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
         midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
@@ -42,9 +40,9 @@
     }
     /**
      * 鏋勯�犱笅琛屾暟鎹�
-     * @param para
-     * @return
-     * @throws Exception
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
      */
     public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
         CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
@@ -62,34 +60,21 @@
         index++ ;
         bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
 
-        String rtuAddr = para.rtuAddr ;
-        String rtuAddr1 = rtuAddr.substring(0, 6) ;
-        String rtuAddr2 = rtuAddr.substring(6) ;
-
         index++ ;
-        ByteUtil.string2BCD_BE(bsHead, rtuAddr1, index) ;
-        index += 3 ;
-
-        Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ;
-        ByteUtilUnsigned.short2Bytes_BE(bsHead, rtuAddr2Int.shortValue(), index);
-        index += 2 ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
 
         ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
 
         byte[] bs = new byte[7] ;
-        bs[0] = (byte)0xF2 ;
-        ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), 1) ;
+        bs[0] = (byte)0xF2 ;//鏁版嵁鍩燂細 1 涓瓧鑺傦紝F0 鐧诲綍锛� F1 閫�鍑虹櫥褰曪紝F2 鍦ㄧ嚎淇濇寔銆�
+        GlCreate.createTp(bs, 1);
 
         bytes = ByteUtil.bytesMerge(bsHead, bs) ;
 
-        int len = bytes.length + ProtocolConstantV206V1_0_0.lenTail;
-        bytes[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ;
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        int crc = new CRC8_for_2_0().CRC8(bytes, ProtocolConstantV206V1_0_0.ctrlIndex, bytes.length -1) ;
-        bs = new byte[ProtocolConstantV206V1_0_0.lenTail] ;
-        bs[0] = (byte)crc ;
-        bs[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ;
-        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java
index b227d63..c5f4015 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java
@@ -14,7 +14,7 @@
 @SuppressWarnings("unused")
 public class Cd_02_Up implements CodeParse{
 
-    private static Logger log = LogManager.getLogger(Cd_02_Up.class);
+    private static final Logger log = LogManager.getLogger(Cd_02_Up.class);
 
     /**
      * 鍒嗘瀽涓婅鏁版嵁
@@ -33,7 +33,7 @@
 
         MidResultFromRtu midRs = new MidResultFromRtu() ;
         midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
-        midRs.rtuAddr = para.rtuAddr ;//IMEI鍙�
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
         midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
         midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
         midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
@@ -55,7 +55,7 @@
 
         MidResultToRtu confirmCommand = new MidResultToRtu() ;
         confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
-        confirmCommand.rtuAddr = para.rtuAddr ;//IMEI鍙�
+        confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
         confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
         confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�;
         confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁
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
new file mode 100644
index 0000000..5f4b15e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java
@@ -0,0 +1,89 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_83
+})
+public class Cd_83_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_C0_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        //瀵筊TU涓婅鏁版嵁鐨勫簲绛�
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) 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)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        byte[] bs = new byte[7] ;
+        //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓
+        //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔
+        //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併��
+        bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩�
+        GlCreate.createTp(bs, 1);
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        return bytes ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
new file mode 100644
index 0000000..296dc3c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -0,0 +1,248 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_83
+})
+@SuppressWarnings("unused")
+public class Cd_83_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_83_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+        midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+        midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+        midRs.reportOrResponse_trueOrFalse = true ;//涓诲姩涓婃姤
+
+        String confirmComCode = CodeV1_0_1.cd_C0 ;
+        ParseParamsForDownV1_0_1 downCpParams  = new ParseParamsForDownV1_0_1() ;
+        downCpParams.setValue(
+                ProtocolConstantV206V1_0_0.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                null,
+                null);
+        //鏋勯�犲簲绛�
+        byte[] data = new Cd_83_Down().doParse(downCpParams) ;
+
+        MidResultToRtu confirmCommand = new MidResultToRtu() ;
+        confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁
+        confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛�
+        confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs, confirmCommand} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        short index = ProtocolConstantV206V1_0_0.dataIndex ;
+        byte opType = bs[ProtocolConstantV206V1_0_0.dataIndex];
+        if(opType == 1 || opType == 3 || opType == 8){
+            this.doParseOpen(opType, bs, bsLen, dataCode, data);
+        }else{
+            this.doParseClose(opType, bs, bsLen, dataCode, data);
+        }
+    }
+    private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd83OpenVo cdData = new DataCd83OpenVo() ;
+        dV1.dataCd83OpenVo = cdData ;
+
+        cdData.type = opType ;
+
+        short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ;
+        //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+        cdData.totalAmount = 0.0D ;
+        int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 10000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 1000000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100000000.0 ;
+
+        //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
+        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        index += 5 ;
+
+        //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
+        cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        index += 4 ;
+
+        //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
+        cdData.remainMoney = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt/100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 10000.0 ;
+
+        //鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+        cdData.openDt = GlParse.parseTp(bs, index) ;
+        index += 6 ;
+
+        //鎺у埗鍣ㄦ椂閽�
+        cdData.rtuDt = GlParse.parseTp(bs, index) ;
+        //index += 6 ;
+    }
+
+    private void doParseClose(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd83CloseVo cdData = new DataCd83CloseVo() ;
+        dV1.dataCd83CloseVo = cdData ;
+
+        cdData.type = opType ;
+
+        short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ;
+        //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+        cdData.totalAmount = 0.0D ;
+        int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 10000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 1000000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100000000.0 ;
+
+        //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
+        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        index += 5 ;
+
+        //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
+        cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        index += 4 ;
+
+        //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
+        cdData.remainMoney = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt/100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 10000.0 ;
+
+        //鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+        cdData.openDt = GlParse.parseTp(bs, index) ;
+        index += 6 ;
+
+        //鐢ㄦ按鎴风敤姘寸粨鏉熸椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
+        cdData.closeDt = GlParse.parseTp(bs, index) ;
+        index += 6 ;
+
+        //鐢ㄦ按鎴锋湰娆$敤姘撮噺锛氱疮璁℃祦閲�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+        cdData.thisAmount = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisAmount += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisAmount += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisAmount += tpInt * 10000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisAmount += tpInt * 1000000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisAmount += tpInt * 100000000.0 ;
+
+        //鐢ㄦ按鎴锋湰娆℃秷璐归噾棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
+        cdData.thisMoney = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisMoney += tpInt/100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisMoney += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisMoney += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisMoney += tpInt * 10000.0 ;
+
+        //鐢ㄦ按鎴锋湰娆$敤姘存椂闀匡細鐢ㄦ按鏃堕暱2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999锛屽崟浣嶄负鍒嗛挓銆�
+        cdData.thisTime = 0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisTime += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.thisTime += tpInt * 100 ;
+
+        //鎺у埗鍣ㄦ椂閽�
+        cdData.rtuDt = GlParse.parseTp(bs, index) ;
+        //index += 6 ;
+    }
+}
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
new file mode 100644
index 0000000..257b109
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java
@@ -0,0 +1,89 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_83
+})
+public class Cd_84_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_C0_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        //瀵筊TU涓婅鏁版嵁鐨勫簲绛�
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) 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)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        byte[] bs = new byte[7] ;
+        //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓
+        //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔
+        //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併��
+        bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩�
+        GlCreate.createTp(bs, 1);
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        return bytes ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
new file mode 100644
index 0000000..ad0b1b9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
@@ -0,0 +1,144 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_83
+})
+@SuppressWarnings("unused")
+public class Cd_84_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_84_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+        midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+        midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+        midRs.reportOrResponse_trueOrFalse = true ;//涓诲姩涓婃姤
+
+        String confirmComCode = CodeV1_0_1.cd_C0 ;
+        ParseParamsForDownV1_0_1 downCpParams  = new ParseParamsForDownV1_0_1() ;
+        downCpParams.setValue(
+                ProtocolConstantV206V1_0_0.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                null,
+                null);
+        //鏋勯�犲簲绛�
+        byte[] data = new Cd_84_Down().doParse(downCpParams) ;
+
+        MidResultToRtu confirmCommand = new MidResultToRtu() ;
+        confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁
+        confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛�
+        confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs, confirmCommand} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd84Vo cdData = new DataCd84Vo() ;
+        dV1.dataCd84Vo = cdData ;
+
+        short index = ProtocolConstantV206V1_0_0.dataIndex ;
+        //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
+        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        index += 5 ;
+
+        //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
+        cdData.remainMoney = 0.0D ;
+        int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt/100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.remainMoney += tpInt * 10000.0 ;
+
+        //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+        cdData.totalAmount = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 10000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 1000000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.totalAmount += tpInt * 100000000.0 ;
+
+        //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆�
+        cdData.instantAmount = 0.0D ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.instantAmount += tpInt/1000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.instantAmount += tpInt/10.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.instantAmount += tpInt * 10.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.instantAmount += tpInt * 1000.0 ;
+        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+        index++ ;
+        cdData.instantAmount += tpInt * 100000.0 ;
+
+        //鎺у埗鍣ㄦ椂閽�
+        cdData.rtuDt = GlParse.parseTp(bs, index) ;
+        //index += 6 ;
+    }
+
+}
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
new file mode 100644
index 0000000..019790d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java
@@ -0,0 +1,89 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_C0
+})
+public class Cd_C0_Down  implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_C0_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        //瀵筊TU涓婅鏁版嵁鐨勫簲绛�
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) 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)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        byte[] bs = new byte[7] ;
+        //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓
+        //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔
+        //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併��
+        bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩�
+        GlCreate.createTp(bs, 1);
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        return bytes ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
new file mode 100644
index 0000000..392d9ba
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
@@ -0,0 +1,220 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_C0
+})
+@SuppressWarnings("unused")
+public class Cd_C0_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_C0_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+        midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+        midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+        midRs.reportOrResponse_trueOrFalse = true ;//涓诲姩涓婃姤
+
+        String confirmComCode = CodeV1_0_1.cd_C0 ;
+        ParseParamsForDownV1_0_1 downCpParams  = new ParseParamsForDownV1_0_1() ;
+        downCpParams.setValue(
+                ProtocolConstantV206V1_0_0.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                null,
+                null);
+        //鏋勯�犲簲绛�
+        byte[] data = new Cd_02_Down().doParse(downCpParams) ;
+
+        MidResultToRtu confirmCommand = new MidResultToRtu() ;
+        confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁
+        confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛�
+        confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs, confirmCommand} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCdC0Vo cdData = new DataCdC0Vo() ;
+        dV1.dataCdC0Vo = cdData ;
+
+        boolean hasWaterAmount = false ;//鏄惁鏈夋祦閲忔暟鎹�
+        boolean hasWaterPress = false ;//鏄惁鏈夋按鍘嬫暟鎹�
+        boolean hasEleVolt = false ;//鏄惁鏈夌數鍘嬫暟鎹�
+        boolean hasSignal = false ;//鏄惁鏈変俊鍙峰己搴︽暟鎹�
+        boolean hasAlarmStatus = false ;//鏄惁鏈夋暟鎹�
+
+        short index = ProtocolConstantV206V1_0_0.dataIndex ;
+
+        byte tmpBt1 = bs[index] ;
+        index++ ;
+        if(((tmpBt1 & 4) >> 2) == 1){
+            hasWaterAmount = true ;
+        }
+
+        byte tmpBt2 = bs[index] ;
+        index++ ;
+        if(((tmpBt2 & 0x10) >> 4) == 1){
+            hasAlarmStatus = true ;
+        }
+        if(((tmpBt2 & 0x20) >> 5) == 1){
+            hasWaterPress = true ;
+        }
+        if(((tmpBt2 & 0x40) >> 6) == 1){
+            hasEleVolt = true ;
+        }
+        if(((tmpBt2 & 0x80) >> 7) == 1){
+            hasSignal = true ;
+        }
+
+        if(hasWaterAmount){
+            //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆�
+            cdData.instantAmount = 0.0D ;
+            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.instantAmount += tpInt/1000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.instantAmount += tpInt/10.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.instantAmount += tpInt * 10.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.instantAmount += tpInt * 1000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.instantAmount += tpInt * 100000.0 ;
+
+            //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+            cdData.totalAmount = 0.0D ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.totalAmount += tpInt;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.totalAmount += tpInt * 100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.totalAmount += tpInt * 10000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.totalAmount += tpInt * 1000000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.totalAmount += tpInt * 100000000.0 ;
+
+            //鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
+            cdData.lossAmount = 0.0D ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.lossAmount += tpInt;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.lossAmount += tpInt * 100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.lossAmount += tpInt * 10000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.lossAmount += tpInt * 1000000.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.lossAmount += tpInt * 100000000.0 ;
+        }
+        if(hasWaterPress){
+            //姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa銆�
+            cdData.waterPress = 0.0D ;
+            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.waterPress += tpInt/100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.waterPress += tpInt;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.waterPress += tpInt * 100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.waterPress += tpInt * 10000.0 ;
+        }
+        if(hasEleVolt){
+            //鐢垫睜鐢靛帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
+            cdData.batteryVolt = 0.0D ;//钃勭數姹犵數鍘�
+            cdData.sunVolt = 0.0D ;//澶槼鑳界數鍘�
+            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.batteryVolt += tpInt/100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.batteryVolt += tpInt;
+            //澶槼鑳界數鍘嬶細4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.sunVolt += tpInt/100.0 ;
+            tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.sunVolt += tpInt;
+        }
+        if(hasSignal){
+            //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆�
+            cdData.signal = 0 ;
+            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
+            index++ ;
+            cdData.signal += tpInt  ;
+        }
+        if(hasAlarmStatus){
+            //鎶ヨ鏁版嵁
+            cdData.alarmVo = GlParse.parseAlarm(bs, index) ;
+            index += 2 ;
+            //鐘舵�佹暟鎹�
+            cdData.stateVo = GlParse.parseState(bs, index) ;
+            index += 2 ;
+        }
+        cdData.rtuDt = GlParse.parseTp(bs, index) ;
+
+    }
+}
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
new file mode 100644
index 0000000..4f13733
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java
@@ -0,0 +1,39 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse.global;
+
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+import com.dy.common.util.CRC8_for_2_0;
+import com.dy.common.util.DateTime;
+
+public class GlCreate {
+
+    public static void createRtuAddr(String rtuAddr, byte[] bs, int index) throws Exception {
+        String rtuAddr1 = rtuAddr.substring(0, 6) ;
+        String rtuAddr2 = rtuAddr.substring(6) ;
+
+        index++ ;
+        ByteUtil.string2BCD_BE(bs, rtuAddr1, index) ;
+        index += 3 ;
+
+        Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ;
+        ByteUtilUnsigned.short2Bytes_BE(bs, rtuAddr2Int.shortValue(), index);
+    }
+
+    public static void createTp(byte[] bs, int index) throws Exception {
+        ByteUtil.string2BCD_BE(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 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) ;
+    }
+}
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
new file mode 100644
index 0000000..43785ec
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
@@ -0,0 +1,56 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse.global;
+
+import com.dy.common.mw.protocol.p206V1_0_0.DataAlarmVo;
+import com.dy.common.mw.protocol.p206V1_0_0.DataStateVo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class GlParse {
+
+    private static final Logger log = LogManager.getLogger(GlParse.class);
+
+    public static DataAlarmVo parseAlarm(byte[] bs, short index){
+        DataAlarmVo avo = new DataAlarmVo() ;
+        byte b = bs[index] ;
+        index++ ;
+        avo.batteryVolt = (byte)(b & 0x2) ;
+        avo.loss = (byte)(b & 0x8) ;
+        avo.meter = (byte)(b & 0x20) ;
+
+        b = bs[index] ;
+        avo.valve = (byte)(b & 0x20) ;
+        return avo ;
+    }
+
+    public static DataStateVo parseState(byte[] bs, short index){
+        DataStateVo avo = new DataStateVo() ;
+        byte b = bs[index] ;
+        index++ ;
+        avo.idCard = (byte)(b & 0x4) ;
+        avo.work = (byte)(b & 0x8) ;
+        avo.valve = (byte)(b & 0x20) ;
+        return avo ;
+    }
+
+    public static String parseTp(byte[] bs, short index){
+        String dt = "" ;
+        try{
+            dt = dt + ByteUtil.BCD2String_BE(bs, index, index) ;//绉�
+            index++ ;
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//鍒�
+            index++ ;
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//鏃�
+            index++ ;
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏃�
+            index++ ;
+            bs[index] = (byte)(bs[index] & 0x10);
+            dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏈�
+            index++ ;
+            dt = "20" + ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//骞�
+        }catch (Exception e){
+            log.error("瑙f瀽鎺у埗鍣ㄦ椂閽熸椂寮傚父锛�" + e.getMessage(), e);
+        }
+        return dt ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java
index c782aa6..7f561f1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java
@@ -1027,6 +1027,34 @@
 		}
 		return new String(buf);
 	}
+	/**
+	 * 灏哹yte[]杞崲涓�16杩涘埗瀛楃涓�
+	 *
+	 * @param bytes 寰呰浆鎹yte[]
+	 * @return 杩斿洖 杞崲鍚庣殑瀛楃涓�
+	 */
+	public static String bytesToHex(byte[] bytes, int startIndex, int endIndex) {
+		byte[] bs = new byte[endIndex - startIndex + 1] ;
+		byte j = 0 ;
+		for(int i = startIndex; i <= endIndex; i++){
+			bs[j++] = bytes[i] ;
+		}
+		//涓�涓猙yte涓�8浣嶏紝鍙敤涓や釜鍗佸叚杩涘埗浣嶆爣璇�
+		char[] buf = new char[bs.length * 2];
+		int a = 0;
+		int index = 0;
+		for (byte b : bs) { // 浣跨敤闄や笌鍙栦綑杩涜杞崲
+			if (b < 0) {
+				a = 256 + b;
+			} else {
+				a = b;
+			}
+
+			buf[index++] = HEX_CHAR[a / 16];
+			buf[index++] = HEX_CHAR[a % 16];
+		}
+		return new String(buf);
+	}
 
 	/**
 	 * 灏�16杩涘埗瀛楃涓茶浆鎹负byte[]
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/busi/deal/dbSv/RtuSv.java
new file mode 100644
index 0000000..ddd1aec
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java
@@ -0,0 +1,7 @@
+package com.dy.aceMw.server.busi.deal.dbSv;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class RtuSv {
+}
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/busi/deal/dbSv/\350\257\264\346\230\216.txt"
new file mode 100644
index 0000000..9429677
--- /dev/null
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt"
@@ -0,0 +1 @@
+springboot瀹瑰櫒涓殑Server bean
\ No newline at end of file
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx" "b/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx"
new file mode 100644
index 0000000..a42ca3a
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx"
Binary files differ

--
Gitblit v1.8.0