From d90be3792d9152efc47eae0e7747aa0fd70faad3 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期六, 13 一月 2024 10:48:49 +0800
Subject: [PATCH] #输送初始化
---
src/main/java/com/zy/core/model/protocol/StaProtocol.java | 2
src/main/java/com/zy/asrs/controller/SiteController.java | 2
src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 36 ++++++------
src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java | 2
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java | 2
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 84 +++++++++++++++++-----------
src/main/resources/application.yml | 34 ++++++++++-
8 files changed, 105 insertions(+), 59 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index bbcb229..9cab390 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -166,7 +166,7 @@
@PostMapping("/detl/update")
@ManagerAuth(memo = "淇敼绔欑偣鏁版嵁")
public R siteDetlUpdate(@RequestParam Integer siteId,
- @RequestParam Short workNo,
+ @RequestParam Integer workNo,
@RequestParam Short staNo,
@RequestParam String pakMk){
for (DevpSlave devp : slaveProperties.getDevp()) {
diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java
index 7cdcf91..68b61ac 100644
--- a/src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java
@@ -13,7 +13,7 @@
private Integer siteId;
// 宸ヤ綔鍙�
- private Short workNo;
+ private Integer workNo;
// 宸ヤ綔鐘舵��
private String wrkSts = "";
diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java
index 2677861..ce27481 100644
--- a/src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java
@@ -14,7 +14,7 @@
private String siteId;
// 宸ヤ綔鍙�
- private Short workNo;
+ private Integer workNo;
// 绔欑偣鐘舵��
private SiteStatusType siteStatus;
diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
index 42b7bc9..8512360 100644
--- a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
@@ -12,7 +12,7 @@
private Integer devNo;
// 宸ヤ綔鍙�
- private Short workNo = 0;
+ private Integer workNo = 0;
// 鑷姩
private String autoing = "-";
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 66df567..3d1ef7e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -137,7 +137,7 @@
if (staProtocol.isAutoing()&& !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9999 && staProtocol.isPakMk() && staProtocol.getStamp()==2){
staProtocol.setStamp(3);
News.info(""+mark+" - 7"+" - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode11, inSta.getStaNo());
- staProtocol.setWorkNo((short) 9989);
+ staProtocol.setWorkNo(9989);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -161,7 +161,7 @@
if(!Cools.isEmpty(barcode)) {
News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
- staProtocol.setWorkNo((short) 9999);
+ staProtocol.setWorkNo( 9999);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -175,7 +175,7 @@
continue;
}
} else {
- staProtocol.setWorkNo((short) 9999);
+ staProtocol.setWorkNo( 9999);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -200,7 +200,7 @@
}
if (wrkMast != null) {
News.error(""+mark+" - 4"+" - 宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
- staProtocol.setWorkNo((short)9999);
+ staProtocol.setWorkNo(9999);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -235,7 +235,7 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
barcodeThread.setBarcode("");
- staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+ staProtocol.setWorkNo(dto.getWorkNo());
staProtocol.setStaNo(dto.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -260,7 +260,7 @@
}
} else {
News.error(""+mark+" - 5"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
- staProtocol.setWorkNo((short)9999);
+ staProtocol.setWorkNo(9999);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -332,7 +332,7 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -422,7 +422,7 @@
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
- staProtocol.setWorkNo((short) 9989);
+ staProtocol.setWorkNo(9989);
staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -477,7 +477,7 @@
}
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -538,7 +538,7 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
@@ -1398,7 +1398,7 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+ staProtocol.setWorkNo(dto.getWorkNo());
staProtocol.setStaNo(dto.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -1422,7 +1422,7 @@
// ledThread.errorReset();
}
} else {
- staProtocol.setWorkNo((short)9999);
+ staProtocol.setWorkNo(9999);
staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -2172,7 +2172,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getId());
continue;
}
@@ -2208,7 +2208,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getId());
continue;
}
@@ -2291,7 +2291,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getId());
continue;
}
@@ -2351,7 +2351,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId());
continue;
}
@@ -2414,7 +2414,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId());
continue;
}
@@ -2484,7 +2484,7 @@
}
BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getId());
continue;
}
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 2e3fb74..0f32c47 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -15,7 +15,7 @@
// ----------------------------------------------------------------
// 宸ヤ綔鍙�
- private Short workNo = 0;
+ private Integer workNo = 0;
// ----------------------------------------------------------------
// 鐩爣绔�
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 5008cf0..a7ba3b2 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -147,7 +147,7 @@
staProtocol.setSiteId(siteId);
station.put(siteId, staProtocol);
}
- staProtocol.setWorkNo((short) 0); // ID
+ staProtocol.setWorkNo(0); // ID
staProtocol.setAutoing(false); // 鑷姩
staProtocol.setLoading(false); // 鏈夌墿
staProtocol.setInEnable(false); // 鍙叆
@@ -191,8 +191,7 @@
// updateIoMode();
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
-// OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB100.2", (short) (staNoSize*2));
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
if (result.IsSuccess) {
for (int i = 0; i < staNoSize; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -202,19 +201,11 @@
staProtocol.setSiteId(siteId);
station.put(siteId, staProtocol);
}
- staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4)); // 宸ヤ綔鍙�
+ staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2)); // 鐩爣绔�
- }
- }
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4)); // 鐩爣绔�
- Thread.sleep(200);
- OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNoSize * 4));
- if (result1.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*4, 1);
- StaProtocol staProtocol = station.get(siteId);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
staProtocol.setAutoing(status[0]); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
staProtocol.setInEnable(status[2]); // 鍙叆
@@ -227,20 +218,12 @@
if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
staProtocol.setPakMk(true);
}
-
- if (staProtocol.getStamp()>=2 && !staProtocol.isLoading()){
- staProtocol.setStamp(0);
- }else if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
- //lfd鍏ュ簱鍗拌 褰搒tamp>=2鏃舵墠鍏ュ簱
- staProtocol.setStamp(staProtocol.getStamp()+1);
- }
}
}
-
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186);
-// if (result0.IsSuccess) {
-// for (int i = 0; i < 93; i++) {
+// OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
+//// OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB100.2", (short) (staNoSize*2));
+// if (result.IsSuccess) {
+// for (int i = 0; i < staNoSize; i++) {
// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
// StaProtocol staProtocol = station.get(siteId);
// if (null == staProtocol) {
@@ -248,9 +231,41 @@
// staProtocol.setSiteId(siteId);
// station.put(siteId, staProtocol);
// }
-// staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2)); // 鐩爣绔�
+// staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4)); // 宸ヤ綔鍙�
+//
+// staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2)); // 鐩爣绔�
// }
// }
+//
+// Thread.sleep(200);
+// OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNoSize * 4));
+// if (result1.IsSuccess) {
+// for (int i = 0; i < staNoSize; i++) {
+// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+// boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*4, 1);
+// StaProtocol staProtocol = station.get(siteId);
+// staProtocol.setAutoing(status[0]); // 鑷姩
+// staProtocol.setLoading(status[1]); // 鏈夌墿
+// staProtocol.setInEnable(status[2]); // 鍙叆
+// staProtocol.setOutEnable(status[3]);// 鍙嚭
+// staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
+// staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
+// staProtocol.setHigh(status[6]); // 楂樺簱浣�
+// staProtocol.setLow(status[7]); // 浣庡簱浣�
+//
+// if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+// staProtocol.setPakMk(true);
+// }
+//
+// if (staProtocol.getStamp()>=2 && !staProtocol.isLoading()){
+// staProtocol.setStamp(0);
+// }else if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
+// //lfd鍏ュ簱鍗拌 褰搒tamp>=2鏃舵墠鍏ュ簱
+// staProtocol.setStamp(staProtocol.getStamp()+1);
+// }
+// }
+// }
+
//鏉$爜鎵弿鍣�
Thread.sleep(200);
OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0",(short)(barcodeSize*8));
@@ -265,7 +280,7 @@
}
}
- if (result.IsSuccess && result1.IsSuccess) {
+ if (result.IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -303,20 +318,23 @@
}
ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
- short[] array = new short[2];
- array[0] = staProtocol.getWorkNo();
- array[1] = staProtocol.getStaNo();
+// short[] array = new short[2];
+// array[0] = staProtocol.getWorkNo();
+// array[1] = staProtocol.getStaNo();
// OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
OperateResult write = null;
+ OperateResult write1 = null;
//浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
// write = siemensS7Net.Write("DB100.0" + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
// Thread.sleep(500);
// write1 = siemensS7Net.Write("DB100.0" + index*2+2, staProtocol.getStaNo()); // 鐩爣绔�
- write = siemensS7Net.Write("DB100." + index*4, array);
- if(write.IsSuccess){
+ write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ Thread.sleep(500);
+ write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
+ if(write.IsSuccess && write1.IsSuccess){
Thread.sleep(200);
OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100.0" + index*2, (short) 2);
OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100.0" + index*2+2, (short) 2);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 1e7f52c..23af70c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -144,7 +144,7 @@
# RGV绌挎杞�1
rgv[0]:
id: 1
- ip: 192.168.4.250
+ ip: 10.10.10.60
port: 502
rack: 0
slot: 0
@@ -172,7 +172,35 @@
# RGV绌挎杞�2
rgv[1]:
id: 2
- ip: 192.168.4.250
+ ip: 10.10.10.63
+ port: 502
+ rack: 0
+ slot: 0
+ #RGV鍏ュ簱婧愮珯鐐�
+ rgvInSStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 100
+ rgvInSStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 101
+ #RGV鍑哄簱婧愮珯鐐�
+ rgvOutSStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 110
+ rgvOutSStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 112
+ #RGV鐩爣绔欑偣
+ rgvDestStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 102
+ rgvDestStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 103
+ # RGV绌挎杞�2
+ rgv[2]:
+ id: 3
+ ip: 10.10.10.66
port: 502
rack: 0
slot: 0
@@ -200,7 +228,7 @@
# 杈撻�佺嚎1
devp[0]:
id: 1
- ip: 192.168.4.250
+ ip: 10.10.10.50
port: 102
rack: 0
slot: 0
--
Gitblit v1.9.1