From d074cb16f7b3ba11363766dd78802da60f4ec07d Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期四, 23 四月 2026 09:39:47 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/thread/RgvThread.java | 141 ++++++++++++++++++++++++++++++++--------------
1 files changed, 98 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 3d1e4f3..0f879e2 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,17 +5,22 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasCircularShuttle;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvErrLog;
import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.service.BasCircularShuttleService;
import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.utils.NumUtils;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvTaskModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.RgvSlave;
@@ -52,6 +57,7 @@
private boolean resetFlag2 = false;
private boolean connectRgv = false;
private boolean alarmChangeSign = false;
+ private boolean csSign = true;//娴嬭瘯鏍囪
public RgvThread(RgvSlave slave) {
this.slave = slave;
@@ -61,14 +67,6 @@
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
connectRgv = this.connect();
- while(!connectRgv){
- try {
- connectRgv = this.connect();
- Thread.sleep(100);
- } catch (Exception e){
-
- }
- }
// 鍚姩绾跨▼鑷姩閲嶈繛
new Thread(this::rgvConnect).start();
@@ -157,6 +155,16 @@
Thread.sleep(1000);
if(!connectRgv){
try {
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ BasCircularShuttleService basCircularShuttleService = SpringUtils.getBean(BasCircularShuttleService.class);
+ BasCircularShuttle basCircularShuttle = basCircularShuttleService.getOne(new QueryWrapper<BasCircularShuttle>().eq("rgv_no", slave.getId()));
+ if (basCircularShuttle.getStatus() != 0){
+ continue;
+ }
+ } catch (Exception ignore) {
+
+ }
+ try {
connectRgv = this.connect();
Thread.sleep(100);
} catch (Exception e){
@@ -185,8 +193,8 @@
continue;
}
Thread.sleep(40);
- readStatus();
-
+// readStatus();
+ initRgv();
} catch (Exception e) {
log.error("RGV璇荤嚎绋嬪紓甯�"+e.getMessage());
@@ -203,6 +211,17 @@
* 鍒濆鍖朢GV鐘舵��
*/
private void initRgv() {
+ if (csSign){
+ initRgvCS();
+ } else {
+ initRgvT();
+ }
+ }
+
+ /**
+ * 鍒濆鍖朢GV鐘舵��
+ */
+ private void initRgvT() {
if (null == rgvProtocol) {
rgvProtocol = new RgvProtocol();
}
@@ -221,31 +240,61 @@
rgvProtocol.setxSpeed((short) 0);
rgvProtocol.setxDistance((short) 0);
rgvProtocol.setxDuration((short) 0);
+ log.error("杩炴帴涓柇锛歊GV鍙凤細"+slave.getId());
+ try {
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv basRgv = new BasRgv();
+ basRgv.setRgvNo(slave.getId());
+ basRgv.setRgvSts((int)rgvProtocol.getMode());
+ basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
+ if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
+ log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ } catch (Exception ignore) {
+ }
}
-// /**
-// * 鍒濆鍖朢GV鐘舵��
-// */
-// private void initRgv() {
-// if (null == rgvProtocol) {
-// rgvProtocol = new RgvProtocol();
-// }
-// rgvProtocol.setRgvNo(slave.getId());
-// rgvProtocol.setMode((short) 3);
-// rgvProtocol.setStatus((short)0);
-// rgvProtocol.setTaskNo1((short)0);
-// rgvProtocol.setStatus1((short)0);
-// rgvProtocol.setLoaded1((short)0);
-// rgvProtocol.setWalkPos((short)0);
-// rgvProtocol.setRgvPos(slave.getId()*100000L);
-// rgvProtocol.setTaskNo2((short)0);
-// rgvProtocol.setStatus2((short)0);
-// rgvProtocol.setLoaded2((short)0);
-// rgvProtocol.setAlarm((short)0);
-// rgvProtocol.setxSpeed((short) 0);
-// rgvProtocol.setxDistance((short) 0);
-// rgvProtocol.setxDuration((short) 0);
-// }
+ /**
+ * 鍒濆鍖朢GV鐘舵��
+ */
+ private void initRgvCS() {
+ if (null == rgvProtocol) {
+ rgvProtocol = new RgvProtocol();
+ rgvProtocol.setRgvNo(slave.getId());
+ rgvProtocol.setMode((short) 3);
+ rgvProtocol.setStatus((short)0);
+ rgvProtocol.setTaskNo1((short)0);
+ rgvProtocol.setStatus1((short)0);
+ rgvProtocol.setLoaded1((short)0);
+ rgvProtocol.setWalkPos((short)0);
+ if (rgvProtocol.getRgvPos()==null || rgvProtocol.getRgvPos()==0){
+ rgvProtocol.setRgvPos(1L+rgvProtocol.getRgvNo()*10000);
+ }
+// rgvProtocol.setRgvPos(rgvProtocol.getRgvPos()+1000);
+ rgvProtocol.setRgvPos(rgvProtocol.getRgvPos());
+ rgvProtocol.setTaskNo2((short)0);
+ rgvProtocol.setStatus2((short)-1);
+ rgvProtocol.setLoaded2((short)0);
+ rgvProtocol.setAlarm((short)0);
+ rgvProtocol.setxSpeed((short) 0);
+ rgvProtocol.setxDistance((short) 0);
+ rgvProtocol.setxDuration((short) 0);
+ }
+// log.error("杩炴帴涓柇锛歊GV鍙凤細"+slave.getId());
+ try {
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv basRgv = new BasRgv();
+ basRgv.setRgvNo(slave.getId());
+ basRgv.setRgvSts((int)rgvProtocol.getMode());
+ basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
+ if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
+ log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ } catch (Exception ignore) {
+ }
+ }
@Override
public boolean connect() {
@@ -289,7 +338,12 @@
rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 10));
rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 12));
rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 14));
- rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransUInt32(result.Content, 16));
+ int poi = siemensNet.getByteTransform().TransInt32(result.Content, 16);
+ if (poi>0){
+ rgvProtocol.setRgvPos((long)poi);
+ rgvProtocol.setRgvPosInt(poi);
+ }
+ log.info(rgvProtocol.getRgvNo()+"鍙峰皬杞﹁鍙栧畾浣嶅�硷細"+poi);
rgvProtocol.setInstantaneousSpeed(Double.valueOf(siemensNet.getByteTransform().TransInt16(resultV.Content, 0)));
rgvProtocol.setEndStaM(siemensNet.getByteTransform().TransInt16(resultE.Content, 0));
boolean[] statusAlarmList = siemensNet.getByteTransform().TransBool(resultError.Content, 0, 13);
@@ -304,7 +358,7 @@
alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList()));
rgvProtocol.setAlarmList(alarmList);
-// rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000));
+// rgvProtocol.setRgvPos((long) NumUtils.GetRandomIntInRange(1737000));
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -322,7 +376,7 @@
if (!alarmChangeSign && !alarmList.isEmpty()){
BasRgvErrLogService basRgvErrLogService = SpringUtils.getBean(BasRgvErrLogService.class);
BasRgvErrLog basRgvErrLog = new BasRgvErrLog(rgvProtocol.getAlarmList(), rgvProtocol.getTaskNo1(), rgvProtocol.getRgvNo());
- basRgvErrLogService.insert(basRgvErrLog);
+ basRgvErrLogService.save(basRgvErrLog);
}
} catch (Exception e){
log.error("RGV寮傚父淇℃伅淇濆瓨澶辫触锛侊紒");
@@ -351,8 +405,9 @@
private void rgvOpt(RgvCommand command) {
try{
BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
- BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol, command);
- basRgvOptService.insert(basRgvOpt);
+ BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosInt(), command);
+ log.info(rgvProtocol.getRgvNo()+"鍙峰皬杞﹀啓鍏ュ懡浠ゅ畾浣嶅�硷細"+rgvProtocol.getRgvPosInt());
+ basRgvOptService.save(basRgvOpt);
}catch (Exception e){
log.error("RGV鍐欏叆鍛戒护淇濆瓨澶辫触锛侊紒");
}
@@ -360,8 +415,8 @@
private void rgvOpt(Long command) {
try{
BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
- BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol, command);
- basRgvOptService.insert(basRgvOpt);
+ BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosI(), command);
+ basRgvOptService.save(basRgvOpt);
}catch (Exception e){
log.error("RGV鍐欏叆鍛戒护淇濆瓨澶辫触锛侊紒");
}
@@ -413,7 +468,7 @@
new Date(),
null
);
- bean.insert(basRgvOpt);
+ bean.save(basRgvOpt);
} catch (Exception ignore) {}
if (result != null && result.IsSuccess) {
@@ -475,7 +530,7 @@
new Date(),
null
);
- bean.insert(basRgvOpt);
+ bean.save(basRgvOpt);
} catch (Exception ignore) {}
if (result != null && result.IsSuccess) {
@@ -560,7 +615,7 @@
new Date(),
null
);
- bean.insert(basRgvOpt);
+ bean.save(basRgvOpt);
} catch (Exception ignore) {}
if (result != null && result.IsSuccess) {
--
Gitblit v1.9.1