From cedb12de87ac799582eed01f66c2f6b698585a69 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 02 四月 2025 09:30:20 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 32 +++++++++++----
zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java | 33 ++++++++++++++++
zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java | 33 ++++++++++++++++
zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java | 7 ++-
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 4 +-
5 files changed, 96 insertions(+), 13 deletions(-)
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java
new file mode 100644
index 0000000..b43b712
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java
@@ -0,0 +1,33 @@
+package com.zy.acs.common.domain.protocol.action;
+
+import com.zy.acs.common.domain.protocol.IActionBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鍑嗗寰�杈撻�佺嚎鏀捐揣
+ * 灞炴�у�硷細鏂瑰悜锛屽乏1 鍙�2
+ * Created by vincent on 2023/3/23
+ */
+@Data
+public class ReadyReleaseToConveyorSta implements IActionBody, Serializable {
+
+ private static final long serialVersionUID = 6496283344148393737L;
+
+ @Override
+ public byte[] writeToBytes() {
+ return Utils.reverse(RadixTools.shortToByte(this.height));
+ }
+
+ @Override
+ public void readFromBytes(byte[] messageBodyBytes) {
+
+ }
+
+ // 鍙栬揣楂樺害
+ private Short height;
+
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java
new file mode 100644
index 0000000..30c5611
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java
@@ -0,0 +1,33 @@
+package com.zy.acs.common.domain.protocol.action;
+
+import com.zy.acs.common.domain.protocol.IActionBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鍑嗗浠庤緭閫佺嚎鍙栬揣
+ * 灞炴�у�硷細鏂瑰悜锛屽乏1 鍙�2
+ * Created by vincent on 2023/3/23
+ */
+@Data
+public class ReadyTakeFromConveyorSta implements IActionBody, Serializable {
+
+ private static final long serialVersionUID = 2178106700498872411L;
+
+ @Override
+ public byte[] writeToBytes() {
+ return Utils.reverse(RadixTools.shortToByte(this.height));
+ }
+
+ @Override
+ public void readFromBytes(byte[] messageBodyBytes) {
+
+ }
+
+ // 鍙栬揣楂樺害
+ private Short height;
+
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
index 36e4707..b549ff8 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
@@ -4,8 +4,7 @@
import com.zy.acs.common.domain.protocol.action.*;
/**
- * 鐩磋鍚庨��鍒嗗贩閬�
- *
+ * 鍔ㄤ綔鐮佹灇涓�
*
*/
public enum AgvActionCmdType {
@@ -30,6 +29,10 @@
READY_RELEASE_FROM_SHELVES_LOC(0x78, "鍑嗗寰�璐ф灦鏀捐揣", ReadyReleaseToShelvesLoc.class),
+ READY_TAKE_FROM_CONVEYOR_STA(0x79, "鍑嗗浠庤緭閫佺嚎鍙栬揣", ReadyTakeFromConveyorSta.class),
+
+ READY_RELEASE_FROM_CONVEYOR_STA(0x7A, "鍑嗗寰�杈撻�佺嚎鏀捐揣", ReadyReleaseToConveyorSta.class),
+
FINISH_PATH(0xFF, "鏁翠釜璺緞缁撴潫", FinishPathAction.class),
;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 7a4edd4..7825f26 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -859,6 +859,7 @@
// 浣滀笟鐐瑰姩浣�
AgvDirectionType agvDirectionType;
+ Double staWorkDirection;
AgvBackpackType backpackType = AgvBackpackType.query(segment.getBackpack());
switch (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))) {
case ORI_LOC:
@@ -974,18 +975,18 @@
lastDirection = oriStaWorkDirection;
}
// 璁$畻璐у弶宸ヤ綔鏂瑰悜
- agvDirectionType = mapService.calculateAgvWorkDirectionByStation(oriSta, lastCode);
+ staWorkDirection = mapService.calculateAgvWorkDirectionByStation(oriStaWorkDirection, lastDirection);
actionList.add(new Action(
null, // 缂栧彿
task.getBusId(), // 鎬荤嚎
task.getId(), // 浠诲姟
null, // 鍔ㄤ綔鍙�
null, // 浼樺厛绾�
- ActionTypeType.ReadyTakeFromShelvesLoc.desc, // 鍚嶇О
- (double) agvDirectionType.val, // 灞炴�у��
+ ActionTypeType.ReadyTakeFromConveyorSta.desc, // 鍚嶇О
+ staWorkDirection, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
String.valueOf(oriSta.getOffset()), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.ReadyTakeFromShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷
+ ActionTypeType.ReadyTakeFromConveyorSta.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
@@ -1053,18 +1054,18 @@
now // 宸ヤ綔鏃堕棿
));
// 璁$畻璐у弶宸ヤ綔鏂瑰悜
- agvDirectionType = mapService.calculateAgvWorkDirectionByStation(destSta, lastCode);
+ staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection);
actionList.add(new Action(
null, // 缂栧彿
task.getBusId(), // 鎬荤嚎
task.getId(), // 浠诲姟
null, // 鍔ㄤ綔鍙�
null, // 浼樺厛绾�
- ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 鍚嶇О
- (double) agvDirectionType.val, // 灞炴�у��
+ ActionTypeType.ReadyReleaseToConveyorSta.desc, // 鍚嶇О
+ staWorkDirection, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
String.valueOf(destSta.getOffset()), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.ReadyReleaseToShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷
+ ActionTypeType.ReadyReleaseToConveyorSta.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
@@ -1241,7 +1242,6 @@
String agvNo = agvService.getAgvNo(actionList.get(0).getAgvId());
AgvAction agvAction = new AgvAction(agvNo, actionGroupId);
for (Action action : actionList) {
-
switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) {
case TurnCorner:
agvAction.add(new AgvActionItem<>(TurnCornerAction.class)
@@ -1275,6 +1275,13 @@
.bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
);
break;
+ case ReadyTakeFromConveyorSta:
+ agvAction.add(new AgvActionItem<>(ReadyTakeFromConveyorSta.class)
+ .setVal(action.getVal().intValue())
+ .setQrCode(action.getCode())
+ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+ );
+ break;
case ReadyTakeFromAgvSite:
agvAction.add(new AgvActionItem<>(ReadyTakeFromAgvSite.class)
.setVal(action.getVal().intValue())
@@ -1289,6 +1296,13 @@
.bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
);
break;
+ case ReadyReleaseToConveyorSta:
+ agvAction.add(new AgvActionItem<>(ReadyReleaseToConveyorSta.class)
+ .setVal(action.getVal().intValue())
+ .setQrCode(action.getCode())
+ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+ );
+ break;
case ReadyReleaseToAgvSite:
agvAction.add(new AgvActionItem<>(ReadyReleaseToAgvSite.class)
.setVal(action.getVal().intValue())
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index 1da3a4f..5f4df21 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -177,8 +177,8 @@
return Double.parseDouble(sta.getAngle());
}
- public AgvDirectionType calculateAgvWorkDirectionByStation(Sta sta, Code code) {
- return AgvDirectionType.FORWARD;
+ public Double calculateAgvWorkDirectionByStation(Double staWorkDirection, Double lastDirection) {
+ return Math.abs(staWorkDirection - lastDirection) + 90.0D;
}
public double calculateDistance(double x1, double y1, double x2, double y2) {
--
Gitblit v1.9.1