From 8c4a723ff13e34152934b84c52267615c4e0fb8b Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 06 十二月 2024 10:22:34 +0800
Subject: [PATCH] 升级模拟器增加上报81数据,为上报阀门状态,用81数据代替心跳
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java | 1
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/upData/UpHeartBeat.java | 50 +++++++++
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java | 78 +++++++++------
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/TcpClUnit.java | 69 -------------
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/Worker.java | 96 +++++++++++++++++++
5 files changed, 193 insertions(+), 101 deletions(-)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
index 3005508..2e20a49 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
@@ -2,7 +2,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@@ -36,25 +35,32 @@
public static void main(String[] args) {
if(args != null && args.length > 0){
if(args.length == 1){
- getArg0(args) ;
+ getArg0(args, 0) ;
}else if(args.length == 2){
- getArg0(args) ;
- getArg1(args) ;
+ getArg0(args, 0) ;
+ getArg1(args, 1) ;
}else if(args.length == 3){
- getArg0(args) ;
- getArg1(args) ;
- getArg2(args) ;
+ getArg0(args, 0) ;
+ getArg1(args, 1) ;
+ getArg2(args, 2) ;
}else if(args.length == 4){
- getArg0(args) ;
- getArg1(args) ;
- getArg2(args) ;
- getArg3(args) ;
+ getArg0(args, 0) ;
+ getArg1(args, 1) ;
+ getArg2(args, 2) ;
+ getArg3(args, 3) ;
}else if(args.length == 5){
- getArg0(args) ;
- getArg1(args) ;
- getArg2(args) ;
- getArg3(args) ;
- getArg4(args) ;
+ getArg0(args, 0) ;
+ getArg1(args, 1) ;
+ getArg2(args, 2) ;
+ getArg3(args, 3) ;
+ getArg4(args,4) ;
+ }else if(args.length == 6){
+ getArg0(args, 0) ;
+ getArg1(args, 1) ;
+ getArg2(args, 2) ;
+ getArg3(args, 3) ;
+ getArg4(args, 4) ;
+ getArg5(args, 5) ;
}
if(ServerProperties.argOneDie && ServerProperties.argMultiDie){
@@ -65,37 +71,43 @@
.web(WebApplicationType.NONE)//涓嶅惎鍔╳eb鏈嶅姟
.run(args);
}
- private static void getArg0(String[] args){
- if(args[0] instanceof String){
- if(args[0] != null && !args[0].trim().equals("")){
- String rtuAddr = (String)args[0] ;//鏈ā鎷熷櫒妯℃嫙RTU鍦板潃
+ private static void getArg0(String[] args, int index){
+ if(args[index] instanceof String){
+ if(args[index] != null && !args[index].trim().equals("")){
+ String rtuAddr = (String)args[index] ;//鏈ā鎷熷櫒妯℃嫙RTU鍦板潃
ServerProperties.argRtuAddr = rtuAddr ;
}
}
}
- private static void getArg1(String[] args){
- if(args[1] != null && !args[1].trim().equals("")){
- Integer oneDie = Integer.parseInt(args[1]) ;//涓�鍖呮锛�1鏄紝0鍚�
+ private static void getArg1(String[] args, int index){
+ if(args[index] != null && !args[index].trim().equals("")){
+ Integer conf = Integer.parseInt(args[index]) ;//蹇冭烦绫诲瀷锛�1锛氬姛鑳界爜02锛�0:鍔熻兘鐮�81
+ ServerProperties.argHeardBeatBy02True81False = conf == 1?true:false ;
+ }
+ }
+ private static void getArg2(String[] args, int index){
+ if(args[index] != null && !args[index].trim().equals("")){
+ Integer oneDie = Integer.parseInt(args[index]) ;//涓�鍖呮锛�1鏄紝0鍚�
ServerProperties.argOneDie = oneDie == 1?true:false ;
}
}
- private static void getArg2(String[] args){
- if(args[2] != null && !args[2].trim().equals("")){
- Integer multiDie = Integer.parseInt(args[2]) ;//澶氬寘姝伙細1鏄紝0鍚�
+ private static void getArg3(String[] args, int index){
+ if(args[index] != null && !args[index].trim().equals("")){
+ Integer multiDie = Integer.parseInt(args[index]) ;//澶氬寘姝伙細1鏄紝0鍚�
ServerProperties.argMultiDie = multiDie == 1?true:false ;
}
}
- private static void getArg3(String[] args){
- if(args[3] instanceof String){
- if(args[3] != null && !args[3].trim().equals("")){
- String serverIp = (String)args[3] ;//鏈嶅姟绔疘P
+ private static void getArg4(String[] args, int index){
+ if(args[index] instanceof String){
+ if(args[index] != null && !args[index].trim().equals("")){
+ String serverIp = (String)args[index] ;//鏈嶅姟绔疘P
ServerProperties.serverIp = serverIp ;
}
}
}
- private static void getArg4(String[] args){
- if(args[4] != null && !args[4].trim().equals("")){
- Integer serverPort = Integer.parseInt(args[4]) ;//鏈嶅姟绔痯ort
+ private static void getArg5(String[] args, int index){
+ if(args[index] != null && !args[index].trim().equals("")){
+ Integer serverPort = Integer.parseInt(args[index]) ;//鏈嶅姟绔痯ort
ServerProperties.serverPort = serverPort ;
}
}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
index edb849f..36c29b8 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
@@ -12,6 +12,7 @@
//绋嬪簭鍚姩鍙傛暟锛�
public static String argRtuAddr ;
+ public static Boolean argHeardBeatBy02True81False = true ;
public static Boolean argOneDie = false ;
public static Boolean argMultiDie = false ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/TcpClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/TcpClUnit.java
index ae2a3a1..41b0fe6 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/TcpClUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/TcpClUnit.java
@@ -14,14 +14,12 @@
public class TcpClUnit implements UnitInterface {
- private static final Logger log = LogManager.getLogger(TcpClUnit.class) ;
-
private static TcpClUnit instance = new TcpClUnit() ;
public static TcpClUnitAdapter adapter ;
public static TcpClUnitConfigVo confVo ;
- public static IoSession session ;
+ private static Worker worker ;
private TcpClUnit(){} ;
@@ -39,12 +37,13 @@
if(TcpClUnit.confVo == null){
throw new Exception("Tcp Client妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
}
+ TcpClUnit.worker = Worker.getInstance(TcpClUnit.confVo) ;
}
@Override
public void start(UnitCallbackInterface callback) throws Exception {
System.out.println("Tcp Client妯″潡鎴愬姛鍚姩");
- this.doStart();
+ TcpClUnit.worker.doStart();
callback.call(null) ;
}
@@ -53,67 +52,5 @@
callback.call(null);
}
- private void doStart(){
- new Thread(() -> {
- Exception ex ;
- while(true){
- ex = null ;
- try {
- new TcpConnect().createSession(
- confVo.mwServerIp,
- confVo.mwServerPort,
- confVo.connectTimeout,
- new TcpHandler(),
- new Callback() {
- @Override
- public void call(Object obj) {
- if (obj == null) {
- log.error("鍒涘缓缃戠粶浼氳瘽杩斿洖涓簄ull");
- } else {
- TcpClUnit.session = (IoSession) obj;
- log.info("鎴愬姛鍒涘缓涓庨�氫俊涓棿浠剁殑缃戠粶杩炴帴");
- UpData.setSession(TcpClUnit.session);
- heartBeat() ;
- }
- }
- @Override
- public void call(Object... objs) {
- }
- @Override
- public void exception(Exception e) {
- }
- });
- }catch (Exception e){
- ex = e ;
- }
- if(ex == null){
- break ;
- }else{
- try{
- Thread.sleep(100);
- }catch (Exception e){
- }
- }
- }
- }).start();
- }
-
-
- private void heartBeat(){
- new Thread(new Runnable(){
- @Override
- public void run() {
- while(true){
- try {
- UpHeartBeat.upCd02Data(ServerProperties.rtuAddr);
- Thread.sleep(30000L);
- //Thread.sleep(30000000L);
- }catch (Exception e){
- continue;
- }
- }
- }
- }).start();
- }
}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/Worker.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/Worker.java
new file mode 100644
index 0000000..ba73ff4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/Worker.java
@@ -0,0 +1,96 @@
+package com.dy.simRtu.tcpClient;
+
+import com.dy.common.util.Callback;
+import com.dy.simRtu.ServerProperties;
+import com.dy.simRtu.tcpClient.upData.UpData;
+import com.dy.simRtu.tcpClient.upData.UpHeartBeat;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.mina.core.session.IoSession;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/6 8:49
+ * @Description
+ */
+public class Worker {
+
+ private static final Logger log = LogManager.getLogger(TcpClUnit.class) ;
+
+ private static Worker instance = new Worker() ;
+
+ private static TcpClUnitConfigVo confVo ;
+
+ public static IoSession session ;
+
+ private Worker(){
+ }
+
+ public static Worker getInstance(TcpClUnitConfigVo confVo){
+ Worker.confVo = confVo ;
+ return instance ;
+ }
+
+ public void doStart(){
+ new Thread(() -> {
+ Exception ex ;
+ while(true){
+ ex = null ;
+ try {
+ new TcpConnect().createSession(
+ confVo.mwServerIp,
+ confVo.mwServerPort,
+ confVo.connectTimeout,
+ new TcpHandler(),
+ new Callback() {
+ @Override
+ public void call(Object obj) {
+ if (obj == null) {
+ log.error("鍒涘缓缃戠粶浼氳瘽杩斿洖涓簄ull");
+ } else {
+ Worker.session = (IoSession) obj;
+ log.info("鎴愬姛鍒涘缓涓庨�氫俊涓棿浠剁殑缃戠粶杩炴帴");
+ UpData.setSession(Worker.session);
+ heartBeat() ;
+ }
+ }
+ @Override
+ public void call(Object... objs) {
+ }
+ @Override
+ public void exception(Exception e) {
+ }
+ });
+ }catch (Exception e){
+ ex = e ;
+ }
+ if(ex == null){
+ break ;
+ }else{
+ try{
+ Thread.sleep(100);
+ }catch (Exception e){
+ }
+ }
+ }
+ }).start();
+ }
+
+
+ private void heartBeat(){
+ new Thread(new Runnable(){
+ @Override
+ public void run() {
+ while(true){
+ try {
+ UpHeartBeat.upCd02Data(ServerProperties.rtuAddr);
+ Thread.sleep(30000L);
+ //Thread.sleep(30000000L);
+ }catch (Exception e){
+ continue;
+ }
+ }
+ }
+ }).start();
+ }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/upData/UpHeartBeat.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/upData/UpHeartBeat.java
index 8185fd2..6acfbcc 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/upData/UpHeartBeat.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/upData/UpHeartBeat.java
@@ -2,6 +2,8 @@
import com.dy.common.mw.protocol.p206V1.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
+import com.dy.common.util.DateTime;
+import com.dy.simRtu.ServerProperties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -22,7 +24,12 @@
if(upHeartBeat){
try{
if(UpData.session != null && UpData.session.isConnected()){
- byte[] bs = createData(rtuAddr) ;
+ byte[] bs ;
+ if(ServerProperties.argHeardBeatBy02True81False){
+ bs = createCd02Data(rtuAddr) ;
+ }else{
+ bs = createCd81Data(rtuAddr) ;
+ }
UpData.upSend(bs) ;
}else{
log.error("鏈繛鎺ラ�氫俊涓棿浠讹紝涓嶈兘鍙戦�佹暟鎹�");
@@ -39,7 +46,7 @@
* @return 瀛楄妭鏁扮粍
* @throws Exception 寮傚父
*/
- private static byte[] createData(String rtuAddr) throws Exception {
+ private static byte[] createCd02Data(String rtuAddr) throws Exception {
byte[] bytes = creatHead(rtuAddr, "02", (byte)0xB0);
byte[] bs = new byte[1] ;
@@ -60,4 +67,43 @@
return bytes ;
}
+
+
+
+ /**
+ * 鏋勯�犲績璺虫暟鎹�
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ private static byte[] createCd81Data(String rtuAddr) throws Exception {
+ byte[] bytes = creatHead(rtuAddr, "81", (byte)0xB0);
+
+ int index = 0 ;
+ byte[] bs1 = new byte[4] ;
+ bs1[index++] = (byte)0x22 ;
+ bs1[index++] = (byte)0x6 ;
+ bs1[index++] = (byte)0x44 ;
+ bs1[index++] = (byte)0x00 ;
+ bytes = ByteUtil.bytesMerge(bytes, bs1) ;
+
+ int[] ymdhms = DateTime.yyyy_MM_dd_HH_MM_SS_2_ymdhmsGroup(DateTime.yyyy_MM_dd_HH_mm_ss()) ;
+ byte[] bs2 = new byte[6] ;
+ index = 0 ;
+ int index1 = 5 ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--])[0] ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--])[0] ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--])[0] ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--])[0] ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--])[0] ;
+ bs2[index++] = ByteUtil.int2BCD_BE(ymdhms[index1--] - 2000)[0] ;
+ bytes = ByteUtil.bytesMerge(bytes, bs2) ;
+
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail4P206(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
}
--
Gitblit v1.8.0