From 5c3ba107b6fe756c5eab6cc83bb18ad0c8c5d9ec Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 07 五月 2024 21:10:52 +0800
Subject: [PATCH] 实现王江海制定的协议实现到3.30节(功能码0x87)

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java  |  101 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java     |   86 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd16Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd30Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java       |   72 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd56Vo.java     |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java       |  120 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd93_A3Vo.java |   11 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java     |  112 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd15Vo.java    |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd16Vo.java    |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java     |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java       |   93 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java     |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java     |  118 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java     |   68 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java       |   81 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java |  108 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java     |   76 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java       |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java     |   76 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java  |   40 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd68Vo.java     |   33 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd99Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java     |   56 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd21Vo.java    |   12 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd30Vo.java    |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd86Vo.java     |   37 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java     |   85 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java  |  107 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd9AVo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java    |   64 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd92_A2Vo.java |   15 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd23Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java     |   44 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java     |   75 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd26Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd26Vo.java    |   11 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd21Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd86Vo.java    |   10 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd87Vo.java    |   10 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java       |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Down.java     |   68 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd22Vo.java     |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java    |   81 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd23Vo.java    |   12 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java       |   73 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd22Vo.java    |   12 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java  |  203 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java     |  122 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java       |  133 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java     |   85 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java       |   82 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java       |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java     |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9AVo.java    |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd99Vo.java    |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java     |   56 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd87Vo.java     |   37 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Down.java     |   69 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java       |   74 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd68Vo.java    |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java     |  125 ++
 77 files changed, 3,681 insertions(+), 31 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd15Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd15Vo.java
index e453294..54f2c5c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd15Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd15Vo.java
@@ -7,7 +7,7 @@
     public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
     public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
     public String icCardAddr ;//IC鍗″湴鍧�(8浣嶆暟瀛楁垨瀛楁瘝)
-    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�16浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
     public Double chargeMoney ;//鍗曚綅:鍏�  2浣嶅皬鏁扮偣(鏈�澶у�� 99999999.99)
     public Double chargeWater ;//鍗曚綅:m3  2浣嶅皬鏁扮偣(鏈�澶у�� 99999999.99)
     public String flowNo ;//娴佹按鍙凤紙12浣嶆暟瀛楋級
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd16Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd16Vo.java
index 325814f..a7105c2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd16Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd16Vo.java
@@ -6,6 +6,6 @@
 public class ComCd16Vo {
     public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
     public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
-    public Integer waterAlarm ;//鍓╀綑姘撮噺鎶ヨ鍊�,鍗曚綅:m3銆傛暣鏁帮紝鍙栧�艰寖鍥�0~65535
-    public Integer moneyAlarm ;//鍓╀綑閲戦鎶ヨ鍊�,鍗曚綅:鍏冦�傛暣鏁帮紝鍙栧�艰寖鍥�0~65535
+    public Integer waterAlarm ;//鍓╀綑姘撮噺鎶ヨ鍊�,鍗曚綅:m3銆傛暣鏁帮紝鍙栧�艰寖鍥�0~9999
+    public Integer moneyAlarm ;//鍓╀綑閲戦鎶ヨ鍊�,鍗曚綅:鍏冦�傛暣鏁帮紝鍙栧�艰寖鍥�0~9999
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd21Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd21Vo.java
new file mode 100644
index 0000000..015fe88
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd21Vo.java
@@ -0,0 +1,12 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd21Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2).
+    public String ip ;//IP锛堜緥濡� 125.235.35.89锛�
+    public Integer port ;//绔彛鍙凤紙0~65536锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd22Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd22Vo.java
new file mode 100644
index 0000000..ff1e0d5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd22Vo.java
@@ -0,0 +1,12 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd22Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer maxAmountYear ;//鏈轰簳骞存渶澶х敤姘撮噺鍗曚綅锛歮3 鏁存暟锛屽彇鍊艰寖鍥�0~99999999
+    public Double limitLevel ;//姘翠綅涓嬮檺 鍗曚綅锛歮 鍙栧�艰寖鍥�:0~9999.99
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd23Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd23Vo.java
new file mode 100644
index 0000000..3c6c962
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd23Vo.java
@@ -0,0 +1,12 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd23Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2).
+    public String domain ;//鍩熷悕锛堜緥濡� dayuyanjiuyuan.to锛夛紝鏈�澶ч暱搴�42瀛楃
+    public Integer port ;//绔彛鍙凤紙0~65536锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd26Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd26Vo.java
new file mode 100644
index 0000000..6662a05
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd26Vo.java
@@ -0,0 +1,11 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd26Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer ipChannel ;//IP閫氶亾鍙� 0x01:1閫氶亾 0x02:2閫氶亾.
+    public Integer maxAmountYear ;//璁惧缁堢骞寸敤姘撮噺 鍗曚綅锛歮3 鏁存暟锛屽彇鍊艰寖鍥�0~99999999
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd30Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd30Vo.java
new file mode 100644
index 0000000..588e9b1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd30Vo.java
@@ -0,0 +1,9 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd30Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd68Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd68Vo.java
new file mode 100644
index 0000000..efee8e1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd68Vo.java
@@ -0,0 +1,9 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd68Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd86Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd86Vo.java
new file mode 100644
index 0000000..e6dc649
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd86Vo.java
@@ -0,0 +1,10 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd86Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2).
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd87Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd87Vo.java
new file mode 100644
index 0000000..dbd0dff
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd87Vo.java
@@ -0,0 +1,10 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd87Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2).
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd92_A2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd92_A2Vo.java
new file mode 100644
index 0000000..fd7c258
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd92_A2Vo.java
@@ -0,0 +1,15 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd92_A2Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+    public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+    public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+    public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd93_A3Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd93_A3Vo.java
new file mode 100644
index 0000000..d1d6369
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd93_A3Vo.java
@@ -0,0 +1,11 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd93_A3Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd99Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd99Vo.java
new file mode 100644
index 0000000..fe36263
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd99Vo.java
@@ -0,0 +1,9 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd99Vo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9AVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9AVo.java
new file mode 100644
index 0000000..39d5dfc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9AVo.java
@@ -0,0 +1,9 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd9AVo {
+    public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+    public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java
index 8cd9aa2..0837b57 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java
@@ -64,7 +64,7 @@
             index += 8 ;
             GlCreate.createPw(bs, index);
 
-            index ++ ;
+            index += 2 ;
             GlCreate.createS2D(bs, index) ;
 
             index += 4 ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
index c3158a6..b584926 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
@@ -60,7 +60,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         cdData.rtuNewAddr = new CommonV202404().parseRtuAddr(bs, index) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java
index a853664..b1054dd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java
@@ -122,7 +122,7 @@
             index += 6 ;
             GlCreate.createPw(bs, index);
 
-            index ++ ;
+            index += 2 ;
             GlCreate.createS2D(bs, index) ;
 
             index += 4 ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
index 0ff2a95..6843b57 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
@@ -61,7 +61,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
 
         index++ ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java
index 4dc4781..9d08509 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java
@@ -53,13 +53,12 @@
             if(cvo == null){
                 throw new Exception("json杞珻omCd16Vo涓簄ull") ;
             }
-            if(cvo.moneyAlarm < 0 || cvo.moneyAlarm > 65535){
-                throw new Exception("鍓╀綑閲戦鎶ヨ鍊煎繀椤绘槸0~65535鑼冨洿鍐呯殑鏁存暟") ;
+            if(cvo.moneyAlarm < 0 || cvo.moneyAlarm > 9999){
+                throw new Exception("鍓╀綑閲戦鎶ヨ鍊煎繀椤绘槸0~9999鑼冨洿鍐呯殑鏁存暟") ;
             }
-            if(cvo.waterAlarm < 0 || cvo.waterAlarm > 65535){
-                throw new Exception("鍓╀綑姘撮噺鎶ヨ鍊煎繀椤绘槸0~65535鑼冨洿鍐呯殑鏁存暟") ;
+            if(cvo.waterAlarm < 0 || cvo.waterAlarm > 9999){
+                throw new Exception("鍓╀綑姘撮噺鎶ヨ鍊煎繀椤绘槸0~9999鑼冨洿鍐呯殑鏁存暟") ;
             }
-
 
             byte[] bs = new byte[13] ;
             int index = 0 ;
@@ -68,16 +67,43 @@
             index ++ ;
             bs[index] = cvo.projectNo.byteValue() ;
 
-            index ++ ;
-            ByteUtilUnsigned.short2Bytes_BE(bs, cvo.waterAlarm, index);
 
             index ++ ;
-            ByteUtilUnsigned.short2Bytes_BE(bs, cvo.moneyAlarm, index);
+            String strTemp = "" + cvo.waterAlarm ;
+            byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            int bTempLen = bTemp.length ;
+            int count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 2){
+                    break ;
+                }
+            }
+            for(; count < 2; count++){
+                bs[index++] = 0 ;
+            }
+
+            index += 4 ;
+            strTemp = "" + cvo.moneyAlarm ;
+            bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            bTempLen = bTemp.length ;
+            count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 2){
+                    break ;
+                }
+            }
+            for(; count < 2; count++){
+                bs[index++] = 0 ;
+            }
 
             index ++ ;
             GlCreate.createPw(bs, index);
 
-            index ++ ;
+            index += 2 ;
             GlCreate.createS2D(bs, index) ;
 
             index += 4 ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
new file mode 100644
index 0000000..9f1be21
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd16Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd99Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_16
+})
+@SuppressWarnings("unused")
+public class Cd_16_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_16_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd16Vo cdData = new DataCd16Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java
new file mode 100644
index 0000000..9e72ed9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java
@@ -0,0 +1,118 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+import java.nio.charset.StandardCharsets;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_21
+})
+public class Cd_21_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd21Vo cvo = JSON.parseObject(json, ComCd21Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd21Vo涓簄ull") ;
+            }
+            if(cvo.channel == null){
+                throw new Exception("IP閫氶亾鍙蜂笉鑳戒负绌�") ;
+            }
+            if(cvo.channel != 1 && cvo.channel != 2){
+                throw new Exception("IP閫氶亾鍙峰彧鑳芥槸1鎴�2") ;
+            }
+            if(cvo.ip == null || cvo.ip.equals("")){
+                throw new Exception("IP涓嶈兘涓虹┖") ;
+            }
+            if(cvo.ip.length() > 15){
+                throw new Exception("IP鏈�澶ч暱搴︽槸15涓瓧绗�") ;
+            }
+            if(cvo.port < 0 || cvo.port > 65535){
+                throw new Exception("绔彛鍙峰繀椤绘槸0~65535鑼冨洿鍐呯殑鏁存暟") ;
+            }
+
+            byte[] ipBs = cvo.ip.getBytes(StandardCharsets.UTF_8) ;
+            byte[] portBs = ("" + cvo.port).getBytes(StandardCharsets.UTF_8) ;
+
+            byte[] bs = new byte[4] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            bs[index] = cvo.channel.byteValue() ;
+
+            index ++ ;
+            bs[index] = (byte)((ipBs.length << 4) + portBs.length) ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+            bytes = ByteUtil.bytesMerge(bytes, ipBs) ;
+            bytes = ByteUtil.bytesMerge(bytes, portBs) ;
+
+
+            byte[] bs1 = new byte[7] ;
+            index ++ ;
+            GlCreate.createPw(bs1, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs1, index) ;
+
+            index += 4 ;
+            bs1[index] = 0 ; //鏃跺欢
+            bytes = ByteUtil.bytesMerge(bytes, bs1) ;
+
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_21_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
new file mode 100644
index 0000000..ecf2a7d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd22Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_21
+})
+@SuppressWarnings("unused")
+public class Cd_21_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_21_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd21Vo cdData = new DataCd21Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java
new file mode 100644
index 0000000..84fa421
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java
@@ -0,0 +1,125 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd16Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_22
+})
+public class Cd_22_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd22Vo cvo = JSON.parseObject(json, ComCd22Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd22Vo涓簄ull") ;
+            }
+            if(cvo.maxAmountYear < 0 || cvo.maxAmountYear > 99999999){
+                throw new Exception("鏈轰簳骞存渶澶х敤姘撮噺蹇呴』鏄�0~99999999鑼冨洿鍐呯殑鏁存暟") ;
+            }
+            if(cvo.limitLevel < 0 || cvo.limitLevel > 9999.99){
+                throw new Exception("姘翠綅涓嬮檺鍊煎繀椤绘槸0~9999.99鑼冨洿鍐呯殑鏁存暟") ;
+            }
+
+            byte[] bs = new byte[17] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            String strTemp = "" + cvo.maxAmountYear ;
+            byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            int bTempLen = bTemp.length ;
+            int count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 4){
+                    break ;
+                }
+            }
+            for(; count < 4; count++){
+                bs[index++] = 0 ;
+            }
+
+            index += 4 ;
+            strTemp = "" + (Double.valueOf(cvo.limitLevel * 100)).longValue() ;
+            bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            bTempLen = bTemp.length ;
+            count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 3){
+                    break ;
+                }
+            }
+            for(; count < 3; count++){
+                bs[index++] = 0 ;
+            }
+
+            index ++ ;
+            GlCreate.createPw(bs, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs, index) ;
+
+            index += 4 ;
+            bs[index] = 0 ; //鏃跺欢
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_22_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
new file mode 100644
index 0000000..240bb44
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd16Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd22Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_22
+})
+@SuppressWarnings("unused")
+public class Cd_22_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_22_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd22Vo cdData = new DataCd22Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java
new file mode 100644
index 0000000..2f858eb
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java
@@ -0,0 +1,122 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd23Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+import java.nio.charset.StandardCharsets;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_23
+})
+public class Cd_23_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd23Vo cvo = JSON.parseObject(json, ComCd23Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd21Vo涓簄ull") ;
+            }
+            if(cvo.channel == null){
+                throw new Exception("IP閫氶亾鍙蜂笉鑳戒负绌�") ;
+            }
+            if(cvo.channel != 1 && cvo.channel != 2){
+                throw new Exception("IP閫氶亾鍙峰彧鑳芥槸1鎴�2") ;
+            }
+            if(cvo.domain == null || cvo.domain.equals("")){
+                throw new Exception("鍩熷悕涓嶈兘涓虹┖") ;
+            }
+            if(cvo.domain.length() > 42){
+                throw new Exception("鍩熷悕鏈�澶ч暱搴︽槸42涓瓧绗�") ;
+            }
+            if(cvo.port < 0 || cvo.port > 65535){
+                throw new Exception("绔彛鍙峰繀椤绘槸0~65535鑼冨洿鍐呯殑鏁存暟") ;
+            }
+
+            byte[] domainBs = cvo.domain.getBytes(StandardCharsets.UTF_8) ;
+            byte[] portBs = ("" + cvo.port).getBytes(StandardCharsets.UTF_8) ;
+
+            byte[] bs = new byte[5] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            bs[index] = cvo.channel.byteValue() ;
+
+            index ++ ;
+            bs[index] = (byte)(domainBs.length) ;
+
+            index ++ ;
+            bs[index] = (byte)(portBs.length) ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+            bytes = ByteUtil.bytesMerge(bytes, domainBs) ;
+            bytes = ByteUtil.bytesMerge(bytes, portBs) ;
+
+
+            byte[] bs1 = new byte[7] ;
+            index ++ ;
+            GlCreate.createPw(bs1, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs1, index) ;
+
+            index += 4 ;
+            bs1[index] = 0 ; //鏃跺欢
+            bytes = ByteUtil.bytesMerge(bytes, bs1) ;
+
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_23_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
new file mode 100644
index 0000000..bc55aa7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd23Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_23
+})
+@SuppressWarnings("unused")
+public class Cd_23_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_23_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd23Vo cdData = new DataCd23Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
new file mode 100644
index 0000000..18cc778
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
@@ -0,0 +1,112 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd26Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_26
+})
+public class Cd_26_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd26Vo cvo = JSON.parseObject(json, ComCd26Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd22Vo涓簄ull") ;
+            }
+            if(cvo.ipChannel != 1 && cvo.ipChannel !=2){
+                throw new Exception("IP閫氶亾鍙峰彧鑳芥槸1鎴�2") ;
+            }
+
+            if(cvo.maxAmountYear < 0 || cvo.maxAmountYear > 99999999){
+                throw new Exception("璁惧缁堢骞寸敤姘撮噺蹇呴』鏄�0~99999999鑼冨洿鍐呯殑鏁存暟") ;
+            }
+
+            byte[] bs = new byte[15] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            bs[index] = cvo.ipChannel.byteValue() ;
+
+            index ++ ;
+            String strTemp = "" + cvo.maxAmountYear ;
+            byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            int bTempLen = bTemp.length ;
+            int count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 4){
+                    break ;
+                }
+            }
+            for(; count < 4; count++){
+                bs[index++] = 0 ;
+            }
+
+            index ++ ;
+            GlCreate.createPw(bs, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs, index) ;
+
+            index += 4 ;
+            bs[index] = 0 ; //鏃跺欢
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_26_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
new file mode 100644
index 0000000..e523f34
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd26Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_26
+})
+@SuppressWarnings("unused")
+public class Cd_26_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_26_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd26Vo cdData = new DataCd26Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java
new file mode 100644
index 0000000..aeca6dc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java
@@ -0,0 +1,85 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd30Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_16
+})
+public class Cd_30_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd30Vo cvo = JSON.parseObject(json, ComCd30Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd30Vo涓簄ull") ;
+            }
+            byte[] bs = new byte[9] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            GlCreate.createPw(bs, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs, index) ;
+
+            index += 4 ;
+            bs[index] = 0 ; //鏃跺欢
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_30_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
new file mode 100644
index 0000000..fc39ba9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd30Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_30
+})
+@SuppressWarnings("unused")
+public class Cd_30_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_30_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd30Vo cdData = new DataCd30Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
index dc88816..096cf4c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
@@ -60,7 +60,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         cdData.rtuAddr = new CommonV202404().parseRtuAddr(bs, index) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
index 19a8adb..cd0a99b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
@@ -63,7 +63,7 @@
         String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        Integer projectNo = 0 + bs[index];
+        Integer projectNo = (int)bs[index];
 
         index++ ;
         byte hasRecord = bs[index];
@@ -72,7 +72,7 @@
             List<DataCd55Vo> list = new ArrayList<>() ;
             DataCd55Vo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ;
             while(vo != null){
-                index += 39 ;
+                index += 35 ;
                 list.add(vo) ;
                 vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ;
             }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
index 7054446..0117757 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
@@ -62,13 +62,13 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
-        cdData.waterAlarm = ByteUtilUnsigned.bytes2Short_BE(bs, index) ;
+        cdData.waterAlarm = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
 
         index += 2 ;
-        cdData.moneyAlarm = ByteUtilUnsigned.bytes2Short_BE(bs, index) ;
+        cdData.moneyAlarm = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
 
     }
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
index 8f0dfc1..359696b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
@@ -63,7 +63,7 @@
         String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        Integer projectNo = 0 + bs[index];
+        Integer projectNo = (int)bs[index];
 
         index++ ;
         byte hasRecord = bs[index];
@@ -72,7 +72,7 @@
             List<DataCd5CVo> list = new ArrayList<>() ;
             DataCd5CVo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ;
             while(vo != null){
-                index += 39 ;
+                index += 16 ;
                 list.add(vo) ;
                 vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ;
             }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
index b0ca292..1f5f933 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
@@ -64,7 +64,7 @@
         String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        Integer projectNo = 0 + bs[index];
+        Integer projectNo = (int)bs[index];
 
         index++ ;
         byte hasRecord = bs[index];
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java
new file mode 100644
index 0000000..89554ef
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java
@@ -0,0 +1,76 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd56Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd68Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_68
+})
+public class Cd_68_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd68Vo cvo = JSON.parseObject(json, ComCd68Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd68Vo涓簄ull") ;
+            }
+            byte[] bs = new byte[2] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_68_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
new file mode 100644
index 0000000..190f7fa
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
@@ -0,0 +1,72 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd68Vo;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_68
+})
+@SuppressWarnings("unused")
+public class Cd_68_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_68_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;//涓诲姩涓婃姤
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd68Vo cdData = new DataCd68Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        cdData.maxAmountYear = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
+
+        index += 4 ;
+        cdData.limitLevel = ByteUtil.BCD2Int_LE(bs, index, index + 2)/100.0D ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
index 7fe4dd2..458f204 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
@@ -92,7 +92,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         GlParse.parseAlarmAndState(bs, index, cdData) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Down.java
new file mode 100644
index 0000000..79ecfb0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Down.java
@@ -0,0 +1,69 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_83
+})
+public class Cd_83_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_02_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = true ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            DataCd83Vo cdData = (DataCd83Vo)para.param ;
+            byte[] bs = new byte[3] ;
+            bs[0] = (byte)(Integer.parseInt(cdData.controllerType, 16));
+            bs[1] = cdData.projectNo.byteValue() ;
+            bs[2] = 0x01 ;
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
new file mode 100644
index 0000000..b966bca
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
@@ -0,0 +1,120 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.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 {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = para.upCode ;
+        ParseParamsForDownV202404 downCpParams  = new ParseParamsForDownV202404() ;
+        downCpParams.setValue(
+                null,
+                ProtocolConstantV206V202404.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                para.data.subData==null?null:(((DataV202404)para.data.subData).subData),
+                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.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            confirmCommand.isQuickSend = true ;
+        }
+        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 {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd83Vo cdData = new DataCd83Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index ++ ;
+        cdData.waterTotalAmountYear = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.waterTotalAmountMeter = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.eleTotalAmountYear = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.eleTotalAmountMeter = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.waterTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.waterUserTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.lossTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.batteryVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1)/100.0D ;
+
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Down.java
new file mode 100644
index 0000000..ab2b970
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Down.java
@@ -0,0 +1,68 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_84
+})
+public class Cd_84_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_02_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = true ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            DataCd84Vo cdData = (DataCd84Vo)para.param ;
+            byte[] bs = new byte[2] ;
+            bs[0] = (byte)(Integer.parseInt(cdData.controllerType, 16));
+            bs[1] = cdData.projectNo.byteValue() ;
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
new file mode 100644
index 0000000..e58fbf9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -0,0 +1,133 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_84
+})
+@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 {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = para.upCode ;
+        ParseParamsForDownV202404 downCpParams  = new ParseParamsForDownV202404() ;
+        downCpParams.setValue(
+                null,
+                ProtocolConstantV206V202404.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                para.data.subData==null?null:(((DataV202404)para.data.subData).subData),
+                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.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            confirmCommand.isQuickSend = true ;
+        }
+        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 {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd84Vo cdData = new DataCd84Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index ++ ;//姘存车/闃�	0xf0:闃�闂� 0x00:姘存车
+
+        index ++ ;//褰撳墠鐢ㄦ按鏂瑰紡	1涓狧EX 0x00:姝e父鍒峰崱寮�娉�/闃�鐢ㄦ按
+
+        index++ ;
+        cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ;
+
+        index += 8 ;
+        cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
+
+        index += 8 ;
+        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
+
+        index ++ ;
+        String mm = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String HH = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String dd = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String MM = ByteUtil.BCD2String_LE(bs, index, index) ;
+        cdData.opDt = MM + "鏈�" + dd + "鏃�" + HH + "鏃�" + mm + "鍒�" ;
+
+        index ++ ;
+        cdData.waterTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.eleTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.moneyRemainUser = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.waterRemainUser = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java
new file mode 100644
index 0000000..a19ddae
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java
@@ -0,0 +1,68 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_85
+})
+public class Cd_85_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_02_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = true ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            DataCd85Vo cdData = (DataCd85Vo)para.param ;
+            byte[] bs = new byte[2] ;
+            bs[0] = (byte)(Integer.parseInt(cdData.controllerType, 16));
+            bs[1] = cdData.projectNo.byteValue() ;
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_85_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
new file mode 100644
index 0000000..b041c07
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
@@ -0,0 +1,93 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_85
+})
+@SuppressWarnings("unused")
+public class Cd_85_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_85_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = para.upCode ;
+        ParseParamsForDownV202404 downCpParams  = new ParseParamsForDownV202404() ;
+        downCpParams.setValue(
+                null,
+                ProtocolConstantV206V202404.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                para.data.subData==null?null:(((DataV202404)para.data.subData).subData),
+                null);
+        //鏋勯�犲簲绛�
+        byte[] data = new Cd_85_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.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            confirmCommand.isQuickSend = true ;
+        }
+        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 {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd85Vo cdData = new DataCd85Vo() ;
+        dV1.subData = cdData ;
+
+        GlParse.parseCd93A3And85(bs, cdData) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java
new file mode 100644
index 0000000..d688c82
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java
@@ -0,0 +1,86 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd86Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_86
+})
+public class Cd_86_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd86Vo cvo = JSON.parseObject(json, ComCd86Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd21Vo涓簄ull") ;
+            }
+            if(cvo.channel == null){
+                throw new Exception("IP閫氶亾鍙蜂笉鑳戒负绌�") ;
+            }
+            if(cvo.channel != 1 && cvo.channel != 2){
+                throw new Exception("IP閫氶亾鍙峰彧鑳芥槸1鎴�2") ;
+            }
+
+            byte[] bs = new byte[3] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            bs[index] = cvo.channel.byteValue() ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_86_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
new file mode 100644
index 0000000..f97cfb3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
@@ -0,0 +1,81 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd21Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd86Vo;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_86
+})
+@SuppressWarnings("unused")
+public class Cd_86_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_86_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd86Vo cdData = new DataCd86Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        cdData.channel = (int)bs[index];
+
+        index++ ;
+        short totalLen = ByteUtilUnsigned.byte2Byte(bs, index) ;
+        int ipLen = (totalLen & 0xF0) >> 4 ;
+        int portLen = totalLen & 0x0F ;
+
+        index++ ;
+        cdData.ip = ByteUtil.bytes2String_BE(bs, index, index + ipLen - 1) ;
+
+        index += ipLen ;
+        cdData.port = Integer.parseInt(ByteUtil.bytes2String_BE(bs, index, index + portLen - 1)) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java
new file mode 100644
index 0000000..69f68c2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java
@@ -0,0 +1,85 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd87Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_87
+})
+public class Cd_87_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd87Vo cvo = JSON.parseObject(json, ComCd87Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd21Vo涓簄ull") ;
+            }
+            if(cvo.channel == null){
+                throw new Exception("IP閫氶亾鍙蜂笉鑳戒负绌�") ;
+            }
+            if(cvo.channel != 1 && cvo.channel != 2){
+                throw new Exception("IP閫氶亾鍙峰彧鑳芥槸1鎴�2") ;
+            }
+
+            byte[] bs = new byte[3] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            bs[index] = cvo.channel.byteValue() ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_87_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
new file mode 100644
index 0000000..055966a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
@@ -0,0 +1,82 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd86Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd87Vo;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_87
+})
+@SuppressWarnings("unused")
+public class Cd_87_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_87_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd87Vo cdData = new DataCd87Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        cdData.channel = (int)bs[index];
+
+        index++ ;
+        short domainLen = ByteUtilUnsigned.byte2Byte(bs, index) ;
+
+        index++ ;
+        short portLen = ByteUtilUnsigned.byte2Byte(bs, index) ;
+
+        index++ ;
+        cdData.domain = ByteUtil.bytes2String_BE(bs, index, index + domainLen - 1) ;
+
+        index += domainLen ;
+        cdData.port = Integer.parseInt(ByteUtil.bytes2String_BE(bs, index, index + portLen - 1)) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
index e3196a5..4f5c820 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
@@ -89,7 +89,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         int lng = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java
new file mode 100644
index 0000000..d6051ea
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java
@@ -0,0 +1,203 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_92,
+        CodeV202404.cd_A2
+})
+public class Cd_92_A2_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd92_A2Vo cvo = JSON.parseObject(json, ComCd92_A2Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd92_A2Vo涓簄ull") ;
+            }
+            if(cvo.waterRemain != null){
+                if(cvo.waterRemain < 0 || cvo.waterRemain > 99999999.99){
+                    throw new Exception("鐢ㄦ埛鍓╀綑姘撮噺蹇呴』鏄�0~99999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+                }
+            }
+            if(cvo.moneyRemain != null){
+                if(cvo.moneyRemain < 0 || cvo.moneyRemain > 999999.99){
+                    throw new Exception("鐢ㄦ埛鍓╀綑閲戦蹇呴』鏄�0~999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+                }
+            }
+            if(cvo.waterPrice != null){
+                if(cvo.waterPrice < 0 || cvo.waterPrice > 99.99){
+                    throw new Exception("姘撮噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+                }
+            }
+            if(cvo.elePrice != null){
+                if(cvo.elePrice < 0 || cvo.elePrice > 99.99){
+                    throw new Exception("鐢甸噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+                }
+            }
+            if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+                throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+            }
+            if(cvo.orderNo.length() != 12){
+                throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+            }
+
+
+            byte[] bs = new byte[39] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            if(cvo.controllerType.equals("01")){
+                bs[index] = (byte)0xF0 ;
+            }else{
+                bs[index] = (byte)0x00 ;
+            }
+
+            index ++ ;
+            GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+            index += 8 ;
+            if(cvo.waterRemain != null){
+                cvo.waterRemain = 0.0 ;
+            }
+            String strTemp = "" + Double.valueOf(cvo.waterRemain * 100).intValue() ;
+            byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            int bTempLen = bTemp.length ;
+            int count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 4){
+                    break ;
+                }
+            }
+            for(; count < 4; count++){
+                bs[index++] = 0 ;
+            }
+
+            if(cvo.moneyRemain != null){
+                cvo.moneyRemain = 0.0 ;
+            }
+            strTemp = "" + (Double.valueOf(cvo.moneyRemain * 100)).intValue() ;
+            bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            bTempLen = bTemp.length ;
+            count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 4){
+                    break ;
+                }
+            }
+            for(; count < 4; count++){
+                bs[index++] = 0 ;
+            }
+
+
+            if(cvo.waterPrice != null){
+                cvo.waterPrice = 0.0 ;
+            }
+            strTemp = "" + (Double.valueOf(cvo.waterPrice * 100)).intValue() ;
+            bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            bTempLen = bTemp.length ;
+            count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 2){
+                    break ;
+                }
+            }
+            for(; count < 2; count++){
+                bs[index++] = 0 ;
+            }
+
+
+            if(cvo.elePrice != null){
+                cvo.elePrice = 0.0 ;
+            }
+            strTemp = "" + (Double.valueOf(cvo.elePrice * 100)).intValue() ;
+            bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+            bTempLen = bTemp.length ;
+            count = 0 ;
+            for(int i = 0 ; i < bTempLen; i++){
+                bs[index++] = bTemp[i] ;
+                count ++ ;
+                if(count >= 2){
+                    break ;
+                }
+            }
+            for(; count < 2; count++){
+                bs[index++] = 0 ;
+            }
+
+
+            ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+            index += 8 ;
+            GlCreate.createPw(bs, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs, index) ;
+
+            index += 4 ;
+            bs[index] = 0 ; //鏃跺欢
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_92_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
new file mode 100644
index 0000000..ba6fd38
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
@@ -0,0 +1,81 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_92,
+        CodeV202404.cd_A2
+})
+@SuppressWarnings("unused")
+public class Cd_92_A2_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_92_A2_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd92_A2Vo cdData = new DataCd92_A2Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
+
+        index += 8 ;
+        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
+
+        index += 8 ;
+        cdData.opType = bs[index];
+
+        index ++ ;
+        cdData.opResult = bs[index];
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java
new file mode 100644
index 0000000..e7ef090
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java
@@ -0,0 +1,107 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd93_A3Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_93,
+        CodeV202404.cd_A3
+})
+public class Cd_93_A3_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd93_A3Vo cvo = JSON.parseObject(json, ComCd93_A3Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd93_A3Vo涓簄ull") ;
+            }
+            if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+                throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+            }
+            if(cvo.orderNo.length() != 12){
+                throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+            }
+
+            byte[] bs = new byte[26] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            index ++ ;
+            if(cvo.controllerType.equals("01")){
+                bs[index] = (byte)0xF0 ;
+            }else{
+                bs[index] = (byte)0x00 ;
+            }
+
+            index ++ ;
+            GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+            index += 8 ;
+            ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+            index += 8 ;
+            GlCreate.createPw(bs, index);
+
+            index += 2 ;
+            GlCreate.createS2D(bs, index) ;
+
+            index += 4 ;
+            bs[index] = 0 ; //鏃跺欢
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_93_A3_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
new file mode 100644
index 0000000..04d371d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
@@ -0,0 +1,64 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_93,
+        CodeV202404.cd_A3
+})
+@SuppressWarnings("unused")
+public class Cd_93_A3_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_93_A3_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd93_A3Vo cdData = new DataCd93_A3Vo() ;
+        dV1.subData = cdData ;
+
+        GlParse.parseCd93A3And85(bs, cdData) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
index 9f276fb..219570a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
@@ -66,7 +66,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         byte result = bs[index];
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
index eae5f1a..17201a5 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
@@ -60,7 +60,7 @@
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         byte result = bs[index];
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java
new file mode 100644
index 0000000..abcc0b4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java
@@ -0,0 +1,75 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd99Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_99
+})
+public class Cd_99_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd99Vo cvo = JSON.parseObject(json, ComCd99Vo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd99Vo涓簄ull") ;
+            }
+            byte[] bs = new byte[2] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_99_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
new file mode 100644
index 0000000..50e6d66
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
@@ -0,0 +1,73 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd99Vo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_99
+})
+@SuppressWarnings("unused")
+public class Cd_99_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_99_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd99Vo cdData = new DataCd99Vo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java
new file mode 100644
index 0000000..b846185
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java
@@ -0,0 +1,76 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd99Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd9AVo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV202404.cd_9A
+})
+public class Cd_9A_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+        if(para.param != null){
+            String json = (String)para.param;
+            ComCd9AVo cvo = JSON.parseObject(json, ComCd9AVo.class) ;
+            if(cvo == null){
+                throw new Exception("json杞珻omCd99Vo涓簄ull") ;
+            }
+            byte[] bs = new byte[2] ;
+            int index = 0 ;
+            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+            index ++ ;
+            bs[index] = cvo.projectNo.byteValue() ;
+
+            bytes = ByteUtil.bytesMerge(bytes, bs) ;
+        }else{
+            throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+        }
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        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/p206V202404/parse/Cd_9A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
new file mode 100644
index 0000000..ef4a701
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
@@ -0,0 +1,74 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd99Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd9AVo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV202404.cd_9A
+})
+@SuppressWarnings("unused")
+public class Cd_9A_Up implements CodeParse{
+
+    private static final Logger log = LogManager.getLogger(Cd_9A_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+        int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV202404.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 = false ;
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV202404 dV1 = (DataV202404)data.getSubData() ;
+        DataCd9AVo cdData = new DataCd9AVo() ;
+        dV1.subData = cdData ;
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index++ ;
+        byte result = bs[index];
+        if(result == 1){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
index 982ed69..c5f6360 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -3,6 +3,7 @@
 import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
 import com.dy.common.util.ByteUtil;
 import com.dy.common.util.ByteUtilUnsigned;
 import org.apache.logging.log4j.LogManager;
@@ -105,6 +106,33 @@
         vo.alarmEleLowVolt = (byte)(b & 0x20) ;
         vo.stateIcEnable = (byte)(b & 0x40) ;
     }
+    /**
+     * 鍒嗘瀽鐘舵�佷笌鎶ヨ
+     * @param bs
+     * @param index
+     * @return
+     */
+    public static void parseAlarmAndState(byte[] bs, int index, DataCd93_A3Vo vo){
+        byte b = bs[index] ;
+        vo.statePump = (byte)(b & 0x1) ;
+        vo.alarmWaterRemain = (byte)(b & 0x2) ;
+        vo.alarm0WaterRemain = (byte)(b & 0x4) ;
+        vo.alarmExceedYear = (byte)(b & 0x8) ;
+        vo.alarmWaterMeterFault = (byte)(b & 0x10) ;
+        vo.alarmSteal = (byte)(b & 0x20) ;
+        vo.alarmWaterMeterBreak = (byte)(b & 0x40) ;
+        vo.alarmEleMeterFault = (byte)(b & 0x80) ;
+
+        index++ ;
+        b = bs[index] ;
+        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
+        vo.alarmInnerDoor = (byte)(b & 0x2) ;
+        vo.alarmOuterDoor = (byte)(b & 0x4) ;
+        vo.alarmEleMiss = (byte)(b & 0x8) ;
+        vo.alarmEleExceed = (byte)(b & 0x10) ;
+        vo.alarmEleLowVolt = (byte)(b & 0x20) ;
+        vo.stateIcEnable = (byte)(b & 0x40) ;
+    }
 
     public static String parseTp(byte[] bs, short index){
         String dt = "" ;
@@ -134,12 +162,11 @@
      * @throws Exception
      */
     public static void parseCd80And5B(byte[] bs, DataCd80Vo cdData) throws Exception{
-
         int index = ProtocolConstantV206V202404.dataIndex ;
         cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
 
         index++ ;
-        cdData.projectNo = 0 + bs[index];
+        cdData.projectNo = (int)bs[index];
 
         index++ ;
         cdData.useWaterType = bs[index];
@@ -250,4 +277,81 @@
         cdData.csq = ByteUtil.BCD2Int_BE(bs, index, index) ;
 
     }
+
+
+    /**
+     * 鍒嗘瀽鍔熻兘93銆丄3鍜�85鏁版嵁
+     * @param bs
+     * @param cdData
+     * @throws Exception
+     */
+    public static void parseCd93A3And85(byte[] bs, DataCd93_A3Vo cdData) throws Exception {
+        int index = ProtocolConstantV206V202404.dataIndex ;
+        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+        index++ ;
+        cdData.projectNo = (int)bs[index];
+
+        index ++ ;
+        cdData.opResult = bs[index];
+
+        index ++ ;
+        cdData.opType = bs[index];
+
+        index++ ;
+        cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ;
+
+        index += 8 ;
+        cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
+
+        index += 8 ;
+        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
+
+        index ++ ;
+        String mm = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String HH = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String dd = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        String MM = ByteUtil.BCD2String_LE(bs, index, index) ;
+        cdData.startDt = MM + "鏈�" + dd + "鏃�" + HH + "鏃�" + mm + "鍒�" ;
+
+        index ++ ;
+        mm = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        HH = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        dd = ByteUtil.BCD2String_LE(bs, index, index) ;
+        index ++ ;
+        MM = ByteUtil.BCD2String_LE(bs, index, index) ;
+        cdData.endDt = MM + "鏈�" + dd + "鏃�" + HH + "鏃�" + mm + "鍒�" ;
+
+        index ++ ;
+        cdData.waterTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.eleTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
+
+        index += 5 ;
+        cdData.thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.thisMoney = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
+
+        index += 4 ;
+        cdData.thisDuration = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
+
+        index += 2 ;
+        GlParse.parseAlarmAndState(bs, index, cdData) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd16Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd16Vo.java
new file mode 100644
index 0000000..787e4b0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd16Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆璁惧缁堢鍓╀綑姘撮噺鍜屽墿浣欓噾棰濇姤璀﹀��
+@Data
+public class DataCd16Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆璁惧缁堢鍓╀綑姘撮噺鍜屽墿浣欓噾棰濇姤璀﹀�� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd21Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd21Vo.java
new file mode 100644
index 0000000..93f2bb5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd21Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆IP鍦板潃
+@Data
+public class DataCd21Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆IP鍦板潃 : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd22Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd22Vo.java
new file mode 100644
index 0000000..4e76549
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd22Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆鏈轰簳骞存渶澶у紑閲囬噺鍜屾按浣嶄笅闄�
+@Data
+public class DataCd22Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆鏈轰簳骞存渶澶у紑閲囬噺鍜屾按浣嶄笅闄� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd23Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd23Vo.java
new file mode 100644
index 0000000..4bba03d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd23Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆鍩熷悕
+@Data
+public class DataCd23Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆鍩熷悕 : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd26Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd26Vo.java
new file mode 100644
index 0000000..93314ff
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd26Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆璁惧缁堢骞寸敤姘撮噺
+@Data
+public class DataCd26Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆璁惧缁堢骞寸敤姘撮噺 : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd30Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd30Vo.java
new file mode 100644
index 0000000..a6298e4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd30Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//璁剧疆璁惧缁堢鐢ㄦ按鏈夋晥
+@Data
+public class DataCd30Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      璁剧疆璁惧缁堢鐢ㄦ按鏈夋晥 : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd56Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd56Vo.java
index 6ee2945..0173230 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd56Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd56Vo.java
@@ -24,6 +24,9 @@
 		sb.append("      鍓╀綑姘撮噺鎶ヨ鍊� : ") ;
 		sb.append(moneyAlarm == null?"鏈煡":moneyAlarm) ;
 		sb.append("\n") ;
+		sb.append("      鍓╀綑姘撮噺鎶ヨ鍊� : ") ;
+		sb.append(waterAlarm == null?"鏈煡":waterAlarm) ;
+		sb.append("\n") ;
 		return sb.toString() ;
 	}
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd68Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd68Vo.java
new file mode 100644
index 0000000..3362b7b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd68Vo.java
@@ -0,0 +1,33 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//鏌ヨ鏈轰簳骞存渶澶у紑閲囬噺鍜屾按浣嶄笅闄�
+@Data
+public class DataCd68Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+	public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+	public Integer maxAmountYear ;//鏈轰簳骞存渶澶х敤姘撮噺  鍗曚綅锛歮3 鏁存暟锛屽彇鍊艰寖鍥�0~99999999
+	public Double limitLevel ;//姘翠綅涓嬮檺 鍗曚綅锛歮 鍙栧�艰寖鍥�:0~9999.99
+
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      鏌ヨ鏈轰簳骞存渶澶у紑閲囬噺鍜屾按浣嶄笅闄� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鏈轰簳骞存渶澶х敤姘撮噺 : ") ;
+		sb.append(maxAmountYear == null?"鏈煡":maxAmountYear) ;
+		sb.append("\n") ;
+		sb.append("      姘翠綅涓嬮檺 : ") ;
+		sb.append(limitLevel == null?"鏈煡":limitLevel) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java
new file mode 100644
index 0000000..4b52f90
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java
@@ -0,0 +1,56 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//鏈轰簳瀹氱偣涓婃姤, 姣忓ぉ12鐐逛笂鎶ユ暟鎹�
+@Data
+public class DataCd83Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+	public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+	public Double waterTotalAmountYear ;//鏈勾绱娴侀噺
+	public Double waterTotalAmountMeter ;//姘磋〃绱娴侀噺
+	public Double eleTotalAmountYear ;//鏈勾绱鐢甸噺
+	public Double eleTotalAmountMeter ;//鐢佃〃绱鐢甸噺
+	public Double waterTotalAmountDay ;//褰撴棩姘磋〃鍑�娴侀噺
+	public Double waterUserTotalAmountDay ;// 褰撴棩鐢ㄦ埛鐢ㄦ按閲�
+	public Double lossTotalAmountDay ;// 婕忔崯姘撮噺
+	public Double batteryVolt ;//鍚庡鐢垫睜鐢靛帇
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      鏈轰簳瀹氱偣涓婃姤(姣忓ぉ12鐐逛笂鎶�) : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鏈勾绱娴侀噺 : ") ;
+		sb.append(waterTotalAmountYear == null?"鏈煡":waterTotalAmountYear) ;
+		sb.append("\n") ;
+		sb.append("      姘磋〃绱娴侀噺 : ") ;
+		sb.append(waterTotalAmountMeter == null?"鏈煡":waterTotalAmountMeter) ;
+		sb.append("\n") ;
+		sb.append("      鏈勾绱鐢甸噺 : ") ;
+		sb.append(eleTotalAmountYear == null?"鏈煡":eleTotalAmountYear) ;
+		sb.append("\n") ;
+		sb.append("      鐢佃〃绱鐢甸噺 : ") ;
+		sb.append(eleTotalAmountMeter == null?"鏈煡":eleTotalAmountMeter) ;
+		sb.append("\n") ;
+		sb.append("      褰撴棩姘磋〃鍑�娴侀噺 : ") ;
+		sb.append(waterTotalAmountDay == null?"鏈煡":waterTotalAmountDay) ;
+		sb.append("\n") ;
+		sb.append("      褰撴棩鐢ㄦ埛鐢ㄦ按閲� : ") ;
+		sb.append(waterUserTotalAmountDay == null?"鏈煡":waterUserTotalAmountDay) ;
+		sb.append("\n") ;
+		sb.append("      婕忔崯姘撮噺 : ") ;
+		sb.append(lossTotalAmountDay == null?"鏈煡":lossTotalAmountDay) ;
+		sb.append("\n") ;
+		sb.append("      鍚庡鐢垫睜鐢靛帇 : ") ;
+		sb.append(batteryVolt == null?"鏈煡":batteryVolt) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
new file mode 100644
index 0000000..551f49d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
@@ -0,0 +1,56 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//鍒峰崱寮�娉�/闃�涓婃姤
+@Data
+public class DataCd84Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+	public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+	public String icCardAddr ;//IC鍗″湴鍧�锛堣繙绋嬪叧闂椂涓�0锛�
+	public String icCardNo ;//IC鍗$紪鍙凤紙17浣嶆暟瀛楋級
+	public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+	public String opDt ;//寮�娉�/闃�鏃堕棿(鍒嗘椂鏃ユ湀)
+	public Double waterTotalAmount ;//姘磋〃绱姘撮噺锛屽崟浣�0.01绔嬫柟绫�
+	public Double eleTotalAmount ;//鐢佃〃绱鐢甸噺锛屽崟浣�0.01搴�
+	public Double moneyRemainUser ;//鐢ㄦ埛鍓╀綑閲戦锛� 鍗曚綅0.01鍏�
+	public Double waterRemainUser ;//鐢ㄦ埛鍓╀綑姘撮噺锛� 鍗曚綅0.01m3
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      鏈轰簳瀹氱偣涓婃姤(姣忓ぉ12鐐逛笂鎶�) : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      IC鍗″湴鍧� : ") ;
+		sb.append(icCardAddr == null?"鏈煡":icCardAddr) ;
+		sb.append("\n") ;
+		sb.append("      IC鍗$紪鍙� : ") ;
+		sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+		sb.append("\n") ;
+		sb.append("      璁㈠崟鍙� : ") ;
+		sb.append(orderNo == null?"鏈煡":orderNo) ;
+		sb.append("\n") ;
+		sb.append("      寮�娉�/闃�鏃堕棿 : ") ;
+		sb.append(opDt == null?"鏈煡":opDt) ;
+		sb.append("\n") ;
+		sb.append("      姘磋〃绱姘撮噺 : ") ;
+		sb.append(waterTotalAmount == null?"鏈煡":waterTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("      鐢佃〃绱鐢甸噺 : ") ;
+		sb.append(eleTotalAmount == null?"鏈煡":eleTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("      鐢ㄦ埛鍓╀綑閲戦 : ") ;
+		sb.append(moneyRemainUser == null?"鏈煡":moneyRemainUser) ;
+		sb.append("\n") ;
+		sb.append("      鐢ㄦ埛鍓╀綑姘撮噺 : ") ;
+		sb.append(waterRemainUser == null?"鏈煡":waterRemainUser) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java
new file mode 100644
index 0000000..5c4589c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java
@@ -0,0 +1,4 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+public class DataCd85Vo extends DataCd93_A3Vo{
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd86Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd86Vo.java
new file mode 100644
index 0000000..a5ec86c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd86Vo.java
@@ -0,0 +1,37 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//鏌ヨ鎺у埗鍣↖P鍦板潃
+@Data
+public class DataCd86Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Integer channel ;//IP閫氶亾鍙�
+	public String ip ;//IP
+	public Integer port ;//绔彛鍙�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      鏌ヨ鎺у埗鍣↖P鍦板潃 : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      IP閫氶亾鍙� : ") ;
+		sb.append(channel == null?"鏈煡":channel) ;
+		sb.append("\n") ;
+		sb.append("      ip : ") ;
+		sb.append(ip == null?"鏈煡":ip) ;
+		sb.append("\n") ;
+		sb.append("      绔彛鍙� : ") ;
+		sb.append(port == null?"鏈煡":port) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd87Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd87Vo.java
new file mode 100644
index 0000000..f0b07e7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd87Vo.java
@@ -0,0 +1,37 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//鏌ヨ鎺у埗鍣ㄥ煙鍚�
+@Data
+public class DataCd87Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Integer channel ;//IP閫氶亾鍙�
+	public String domain ;//鍩熷悕
+	public Integer port ;//绔彛鍙�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      鏌ヨ鎺у埗鍣ㄥ煙鍚� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      IP閫氶亾鍙� : ") ;
+		sb.append(channel == null?"鏈煡":channel) ;
+		sb.append("\n") ;
+		sb.append("      鍩熷悕 : ") ;
+		sb.append(domain == null?"鏈煡":domain) ;
+		sb.append("\n") ;
+		sb.append("      绔彛鍙� : ") ;
+		sb.append(port == null?"鏈煡":port) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java
new file mode 100644
index 0000000..0877502
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java
@@ -0,0 +1,40 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂�
+@Data
+public class DataCd92_A2Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+	public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+	public String icCardNo ;//IC鍗$紪鍙凤紙17浣嶆暟瀛楋級
+	public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+	public Byte opType ;//寮�闃�绫诲瀷: 01:骞冲彴寮�娉�/闃� 02:鐢ㄦ埛寮�娉�/闃�
+	public Byte opResult ;//寮�鍚车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      IC鍗$紪鍙� : ") ;
+		sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+		sb.append("\n") ;
+		sb.append("      璁㈠崟鍙� : ") ;
+		sb.append(orderNo == null?"鏈煡":orderNo) ;
+		sb.append("\n") ;
+		sb.append("      寮�鍚车/闃�绫诲瀷 : ") ;
+		sb.append(opType == null?"鏈煡":(opType.byteValue() == 0x01 ? "骞冲彴":"鐢ㄦ埛")) ;
+		sb.append("\n") ;
+		sb.append("      寮�鍚车/闃�缁撴灉 : ") ;
+		sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x00 ? "鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
new file mode 100644
index 0000000..a6ede90
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
@@ -0,0 +1,101 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂�
+@Data
+public class DataCd93_A3Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�57(0x57):浜曠數鎺у埗鍣�
+	public Integer projectNo ;//鎺у埗鍣ㄧ被鍨� 0x01:娴嬫帶涓�浣撻榾锛�0x57:浜曠數鎺у埗鍣�
+	public Byte opResult ;//鍏虫车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
+	public Byte opType ;//鍏虫车/闃�鏂瑰紡:  0x00:鍒峰崱闂� 0x01:骞冲彴鍏� 0x02:APP鍏�  0x03:闈炴硶鍗″叧 0x04:姘磋〃寮傚父鍏� 0x05:鐢佃〃寮傚父鍏� 0x06:鍓╀綑姘撮噺涓嶈冻鍏� 0x07:鍓╀綑閲戦涓嶈冻鍏� 0x08:寮�娉�/闃�鍚庣閬撴病鏈夋祦閲忓叧 0x09:鎺夌數鍐嶄笂鐢点��
+	public String icCardAddr ;//IC鍗″湴鍧�锛堣繙绋嬪叧闂椂涓�0锛�
+	public String icCardNo ;//IC鍗$紪鍙凤紙17浣嶆暟瀛楋級
+	public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+	public String startDt ;//寮�濮嬫椂闂�(鍒嗘椂鏃ユ湀)
+	public String endDt ;//缁撴潫鏃堕棿(鍒嗘椂鏃ユ湀)
+	public Double waterTotalAmount ;//姘磋〃绱娴侀噺
+	public Double eleTotalAmount ;//鐢佃〃绱鐢甸噺
+	public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦锛屽崟浣�0.01鍏�
+	public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺锛屼繚鐣� 榛樿 00 00 00 00 00
+	public Double thisEle ;//鏈浣跨敤鐢甸噺, 鍗曚綅0.01搴�
+	public Double thisWater ;//鏈浣跨敤姘撮噺, 鍗曚綅0.01绔嬫柟绫�
+	public Double thisMoney ;//鏈浣跨敤閲戦, 鍗曚綅0.01鍏�
+	public Integer thisDuration;//鏈浣跨敤鏃堕棿闀�, 鍗曚綅锛氬垎閽�
+
+
+	public Byte statePump ; //娉�/闃�鐘舵��	(1锛氬紑娉�/闃�锛�0锛氬叧娉�/闃�)
+	public Byte alarmWaterRemain ; //鍓╀綑姘撮噺鎶ヨ	(1锛氬皬浜庢姤璀︿笂闄愭姤璀� 0锛氭甯�)
+	public Byte alarm0WaterRemain ; //鍓╀綑姘撮噺涓�0鍏虫车/闃�	(1锛氬墿浣欐按閲忎负0鍏虫车  0锛氭甯�)
+	public Byte alarmExceedYear ; //骞村害瓒呴噰鎶ヨ	(1锛氬勾鐢ㄦ按閲忓ぇ浜庨檺鍒舵按閲忔姤璀� 0锛氭甯�)
+	public Byte alarmWaterMeterFault ; //澶栭儴娴侀噺璁℃晠闅�	(1锛氭祦閲忚鏁呴殰鎶ヨ 0锛氭甯�)
+	public Byte alarmSteal ; //鍋锋按鎶ヨ	(1锛氱粫寮�鎺у埗鍣ㄧ敤姘存姤璀� 0锛氭甯�)
+	public Byte alarmWaterMeterBreak ; //娴侀噺璁℃崯鍧忔姤璀�	(1锛氭甯搁�氳浣嗙灛鏃朵负0鎶ヨ 0锛氭甯�)
+	public Byte alarmEleMeterFault ; //鐢佃〃鏁呴殰鎶ヨ	(1锛氬拰鐢佃〃閫氳鏂垨鏁版嵁涓嶆甯� 0锛氭甯�)
+	public Byte alarm0MoneyRemain ; //鍓╀綑閲戦涓�0鍏虫车/闃�	(1锛氬墿浣欓噾棰濅负0鎶ヨ  0锛氭甯�)
+	public Byte alarmInnerDoor ; //鎺у埗鍣ㄥ唴闂ㄦ姤璀�	(1锛氬唴闂ㄦ墦寮�鎶ヨ    0锛氭甯�)
+	public Byte alarmOuterDoor ; //鎺у埗鍣ㄥ闂ㄦ姤璀�	(1锛氬闂ㄦ墦寮�鎶ヨ    0锛氭甯�)
+	public Byte alarmEleMiss ; //浜ゆ祦缂洪」鎶ヨ	(1锛氫笁鐩哥己椤规姤璀�    0锛氭甯�)
+	public Byte alarmEleExceed ; //浜ゆ祦杩囨祦鎶ヨ	(1锛氫氦娴佽繃娴佹姤璀�    0锛氭甯�)
+	public Byte alarmEleLowVolt ; //涓夌浉鐢垫瑺鍘嬫姤璀�	(1锛氭瑺鍘嬫姤璀�        0锛氭甯�)
+	public Byte stateIcEnable ; //IC鍗′娇鑳�	(1銆両C鏈夊埛鍗℃敮鎸�    0锛氫笉鏀寔)
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍏虫车/闃�绫诲瀷 : ") ;
+		sb.append(opType == null?"鏈煡":(opType.byteValue() == 0x00 ? "鍒峰崱":(opType.byteValue() == 0x01 ? "骞冲彴":(opType.byteValue() == 0x02 ? "APP":(opType.byteValue() == 0x03 ? "闈炴硶鍗�":(opType.byteValue() == 0x04 ? "姘磋〃寮傚父":(opType.byteValue() == 0x05 ? "鐢佃〃寮傚父":(opType.byteValue() == 0x06 ? "鍓╀綑姘撮噺涓嶈冻":(opType.byteValue() == 0x07 ? "鍓╀綑閲戦涓嶈冻":(opType.byteValue() == 0x08 ? "鏃犳祦閲�":(opType.byteValue() == 0x09 ? "鎺夌數鍐嶄笂鐢�":"鏈煡"))))))))))) ;
+		sb.append("\n") ;
+		sb.append("      鍏冲惎娉�/闃�缁撴灉 : ") ;
+		sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x00 ? "鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+		sb.append("      IC鍗″湴鍧� : ") ;
+		sb.append(icCardAddr == null?"鏈煡":icCardAddr) ;
+		sb.append("\n") ;
+		sb.append("      IC鍗$紪鍙� : ") ;
+		sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+		sb.append("\n") ;
+		sb.append("      璁㈠崟鍙� : ") ;
+		sb.append(orderNo == null?"鏈煡":orderNo) ;
+		sb.append("\n") ;
+		sb.append("      寮�濮嬫椂闂� : ") ;
+		sb.append(startDt == null?"鏈煡":startDt) ;
+		sb.append("\n") ;
+		sb.append("      缁撴潫鏃堕棿 : ") ;
+		sb.append(endDt == null?"鏈煡":endDt) ;
+		sb.append("\n") ;
+		sb.append("      姘磋〃绱娴侀噺 : ") ;
+		sb.append(waterTotalAmount == null?"鏈煡":waterTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("      鐢佃〃绱鐢甸噺 : ") ;
+		sb.append(eleTotalAmount == null?"鏈煡":eleTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("      鐢ㄦ埛鍓╀綑閲戦 : ") ;
+		sb.append(moneyRemain == null?"鏈煡":moneyRemain) ;
+		sb.append("\n") ;
+		sb.append("      鐢ㄦ埛鍓╀綑姘撮噺 : ") ;
+		sb.append(waterRemain == null?"鏈煡":waterRemain) ;
+		sb.append("\n") ;
+		sb.append("      鏈浣跨敤鐢甸噺 : ") ;
+		sb.append(thisEle == null?"鏈煡":thisEle) ;
+		sb.append("\n") ;
+		sb.append("      鏈浣跨敤姘撮噺 : ") ;
+		sb.append(thisWater == null?"鏈煡":thisWater) ;
+		sb.append("\n") ;
+		sb.append("      鏈浣跨敤閲戦 : ") ;
+		sb.append(thisMoney == null?"鏈煡":thisMoney) ;
+		sb.append("\n") ;
+		sb.append("      鏈浣跨敤鏃堕棿闀� : ") ;
+		sb.append(thisDuration == null?"鏈煡": thisDuration) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd99Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd99Vo.java
new file mode 100644
index 0000000..5a2060b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd99Vo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//娓呯┖璁惧缁堢鏃ヨ褰�
+@Data
+public class DataCd99Vo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      娓呯┖璁惧缁堢鏃ヨ褰� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd9AVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd9AVo.java
new file mode 100644
index 0000000..9c4b06d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd9AVo.java
@@ -0,0 +1,29 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import lombok.Data;
+
+//娓呯┖璁惧缁堢鏃ヨ褰�
+@Data
+public class DataCd9AVo {
+
+	public String controllerType;//鎺у埗鍣ㄧ被鍨�:   01:娴嬫帶涓�浣撻榾锛�57:浜曠數鎺у埗鍣�
+	public Integer projectNo ;//椤圭洰缂栧彿:
+	public Boolean success ;//鍛戒护缁撴灉锛坱rue鎴愬姛, false澶辫触锛�
+
+	public String toString(){
+		StringBuffer sb = new StringBuffer() ;
+		sb.append("      娓呯┖璁惧缁堢鏃ヨ褰� : \n") ;
+		sb.append("      鎺у埗鍣ㄧ被鍨� : ") ;
+		sb.append(controllerType == null?"鏈煡":(controllerType.equals("01")?"娴嬫帶涓�浣撻榾":(controllerType.equals("57")?"浜曠數鎺у埗鍣�":"鏈煡"))) ;
+		sb.append("\n") ;
+		sb.append("      椤圭洰缂栧彿 : ") ;
+		sb.append(projectNo == null?"鏈煡":projectNo) ;
+		sb.append("\n") ;
+		sb.append("      鍛戒护缁撴灉 : ") ;
+		sb.append(success == null?"鏈煡":(success?"鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+
+		return sb.toString() ;
+	}
+
+}

--
Gitblit v1.8.0