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