#
cpT
9 天以前 e96fdab4d2a7f7aa86dec7047a3874af28ebe9de
#
1个文件已添加
11个文件已修改
278 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CrnController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/DualCrnController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/DualCrnStatusType.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/DualCrnTaskModeType.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/map/小松地图.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -74,13 +74,13 @@
            vo.setForkOffset(crnProtocol.getForkPosType().desc);    // è´§å‰ä½ç½®
            vo.setLiftPos(crnProtocol.getLiftPosType().desc);
            vo.setWalkPos(crnProtocol.getWalkPos() == 1 ? "不在定位" : "在定位");
            vo.setXspeed(crnProtocol.getXSpeed());  //  èµ°è¡Œé€Ÿåº¦ï¼ˆm/min)
            vo.setYspeed(crnProtocol.getYSpeed());  //  å‡é™é€Ÿåº¦ï¼ˆm/min)
            vo.setZspeed(crnProtocol.getZSpeed());  //  å‰ç‰™é€Ÿåº¦ï¼ˆm/min)
            vo.setXdistance(crnProtocol.getXDistance());  //  èµ°è¡Œè·ç¦»(Km)
            vo.setYdistance(crnProtocol.getYDistance());  //  å‡é™è·ç¦»(Km)
            vo.setXduration(crnProtocol.getXDuration());    //  èµ°è¡Œæ—¶é•¿(H)
            vo.setYduration(crnProtocol.getYDuration());    //  å‡é™æ—¶é•¿(H)
            vo.setXspeed(String.format("%.2f", crnProtocol.getXSpeed()));  //  èµ°è¡Œé€Ÿåº¦ï¼ˆm/min)
            vo.setYspeed(String.format("%.2f", crnProtocol.getYSpeed()));  //  å‡é™é€Ÿåº¦ï¼ˆm/min)
            vo.setZspeed(String.format("%.2f", crnProtocol.getZSpeed()));  //  å‰ç‰™é€Ÿåº¦ï¼ˆm/min)
            vo.setXdistance(String.format("%.2f", crnProtocol.getXDistance()));  //  èµ°è¡Œè·ç¦»(Km)
            vo.setYdistance(String.format("%.2f", crnProtocol.getYDistance()));  //  å‡é™è·ç¦»(Km)
            vo.setXduration(String.format("%.2f", crnProtocol.getXDuration()));    //  èµ°è¡Œæ—¶é•¿(H)
            vo.setYduration(String.format("%.2f", crnProtocol.getYDuration()));    //  å‡é™æ—¶é•¿(H)
            vo.setTaskReceive(crnProtocol.getTaskReceive());
            if (crnProtocol.getModeType().equals(CrnModeType.AUTO)) {
src/main/java/com/zy/asrs/controller/DualCrnController.java
@@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
@@ -63,13 +64,14 @@
            vo.setWalkPos(p.getWalkPos() != null && p.getWalkPos() == 0 ? "在定位" : "不在定位");
            vo.setTaskReceive(p.getTaskReceive() != null && p.getTaskReceive() == 1 ? "接收" : "无任务");
            vo.setTaskReceiveTwo(p.getTaskReceiveTwo() != null && p.getTaskReceiveTwo() == 1 ? "接收" : "无任务");
            vo.setXspeed(p.getXSpeed());
            vo.setYspeed(p.getYSpeed());
            vo.setZspeed(p.getZSpeed());
            vo.setXdistance(p.getXDistance());
            vo.setYdistance(p.getYDistance());
            vo.setXduration(p.getXDuration());
            vo.setYduration(p.getYDuration());
            vo.setXspeed(String.format("%.2f", p.getXSpeed()));
            vo.setYspeed(String.format("%.2f", p.getYSpeed()));
            vo.setZspeed(String.format("%.2f", p.getZSpeed()));
            vo.setXdistance(String.format("%.2f", p.getXDistance()));
            vo.setYdistance(String.format("%.2f", p.getYDistance()));
            vo.setXduration(String.format("%.2f", p.getXDuration()));
            vo.setYduration(String.format("%.2f", p.getYDuration()));
            vo.setWarnCode(p.getAlarm() == null ? "-" : String.valueOf(p.getAlarm()));
            if (p.getAlarm() != null && p.getAlarm() > 0) {
                vo.setDeviceStatus("ERROR");
src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java
@@ -84,25 +84,25 @@
    private String command = "";
    // èµ°è¡Œé€Ÿåº¦ï¼ˆm/min)
    private Double xspeed = 0D;
    private String xspeed = "-";
    // å‡é™é€Ÿåº¦ï¼ˆm/min)
    private Double yspeed = 0D;
    private String yspeed = "-";
    // å‰ç‰™é€Ÿåº¦ï¼ˆm/min)
    private Double zspeed = 0D;
    private String zspeed = "-";
    // èµ°è¡Œè·ç¦»(Km)
    private Double xdistance = 0D;
    private String xdistance = "-";
    // å‡é™è·ç¦»(Km)
    private Double ydistance = 0D;
    private String ydistance = "-";
    // èµ°è¡Œæ—¶é•¿(H)
    private Double xduration = 0D;
    private String xduration = "-";
    // å‡é™æ—¶é•¿(H)
    private Double yduration = 0D;
    private String yduration = "-";
    private Integer taskReceive;
src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java
@@ -39,19 +39,19 @@
    private String walkPos = "-";
    private Integer xspeed = 0;
    private String xspeed = "-";
    private Integer yspeed = 0;
    private String yspeed = "-";
    private Integer zspeed = 0;
    private String zspeed = "-";
    private Integer xdistance = 0;
    private String xdistance = "-";
    private Integer ydistance = 0;
    private String ydistance = "-";
    private Integer xduration = 0;
    private String xduration = "-";
    private Integer yduration = 0;
    private String yduration = "-";
    private String deviceStatus = "OFFLINE";
}
src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
@@ -5,10 +5,7 @@
import com.alibaba.fastjson.JSONObject;
import com.core.common.R;
import com.core.common.SpringUtils;
import com.zy.asrs.controller.CrnController;
import com.zy.asrs.controller.RgvController;
import com.zy.asrs.controller.BasMapController;
import com.zy.asrs.controller.ConsoleController;
import com.zy.asrs.controller.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -111,7 +108,7 @@
            } else if ("/rgv/table/rgv/state".equals(url)) {
                resObj = SpringUtils.getBean(RgvController.class).rgvStateTable();
            } else if ("/dualcrn/table/crn/state".equals(url)) {
                resObj = SpringUtils.getBean(com.zy.asrs.controller.DualCrnController.class).dualCrnStateTable();
                resObj = SpringUtils.getBean(DualCrnController.class).dualCrnStateTable();
            }
        } catch (Exception e) {
            R err = R.error(e.getMessage());
src/main/java/com/zy/core/enums/DualCrnStatusType.java
@@ -13,9 +13,8 @@
    ORIGIN_GO(7, "回原点"),
    ORIGIN_BACK(8, "回反原点"),
    MOVING(9, "走行中"),
    WAITING(90, "任务完成等待WCS确认"),
    PAUSE(11, "任务暂停"),
    SOS(99, "报警"),
    WAITING(99, "任务完成等待WCS确认"),
    SOS(98, "报警"),
    UNKNOW(100, "其他"),
    ;
src/main/java/com/zy/core/enums/DualCrnTaskModeType.java
@@ -3,11 +3,11 @@
public enum DualCrnTaskModeType {
    NONE(0),    // æ— 
    PICK(1),    // å–è´§
    PUT(2),    // æ”¾è´§
    PICK(11),    // å–è´§
    PUT(12),    // æ”¾è´§
    TRANSFER(3),    // å–放货
    MOVE(4),    // ç§»åЍ
    CONFIRM(5),    // ç¡®è®¤
    CONFIRM(13),    // ç¡®è®¤
    ;
    public Integer id;
src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java
@@ -157,37 +157,37 @@
    /**
     * X行走线速度m/min
     */
    private Integer xSpeed;
    private Double xSpeed;
    /**
     * Y行走线速度m/min
     */
    private Integer ySpeed;
    private Double ySpeed;
    /**
     * Z行走线速度m/min
     */
    private Integer zSpeed;
    private Double zSpeed;
    /**
     * å †åž›æœºç´¯è®¡èµ°è¡Œè·ç¦»km
     */
    public Integer xDistance;
    public Double xDistance;
    /**
     * å †åž›æœºç´¯è®¡å‡é™è·ç¦»km
     */
    public Integer yDistance;
    public Double yDistance;
    /**
     * å †åž›æœºç´¯è®¡èµ°è¡Œæ—¶é•¿h
     */
    public Integer xDuration;
    public Double xDuration;
    /**
     * å †åž›æœºç´¯è®¡å‡é™æ—¶é•¿h
     */
    public Integer yDuration;
    public Double yDuration;
    //货物类型
    private Integer goodsType;
src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
@@ -78,9 +78,19 @@
    public Integer bay;
    /**
     * å †åž›æœºå½“前列号
     */
    public Integer bayTwo;
    /**
     * å †åž›æœºå½“前层号
     */
    public Integer level;
    /**
     * å †åž›æœºå½“前层号
     */
    public Integer levelTwo;
    /**
     * å½“前载货台位置
@@ -97,39 +107,51 @@
    public Integer walkPos;
    /**
     * èµ°è¡Œåœ¨å®šä½
     * 0 = åœ¨å®šä½
     * 1 = ä¸åœ¨å®šä½
     */
    public Integer walkPosTwo;
    /**
     * X行走线速度m/min
     */
    private Integer xSpeed;
    private Double xSpeed;
    /**
     * Y行走线速度m/min
     */
    private Integer ySpeed;
    private Double ySpeed;
    /**
     * Z行走线速度m/min
     */
    private Integer zSpeed;
    private Double zSpeed;
    /**
     * Z行走线速度m/min
     */
    private Double zSpeedTwo;
    /**
     * å †åž›æœºç´¯è®¡èµ°è¡Œè·ç¦»km
     */
    public Integer xDistance;
    public Double xDistance;
    /**
     * å †åž›æœºç´¯è®¡å‡é™è·ç¦»km
     */
    public Integer yDistance;
    public Double yDistance;
    /**
     * å †åž›æœºç´¯è®¡èµ°è¡Œæ—¶é•¿h
     */
    public Integer xDuration;
    public Double xDuration;
    /**
     * å †åž›æœºç´¯è®¡å‡é™æ—¶é•¿h
     */
    public Integer yDuration;
    public Double yDuration;
    private Integer temp1;
src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
@@ -58,7 +58,7 @@
    @Override
    public ZyDualCrnStatusEntity getStatus() {
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 70);
            if (result.IsSuccess) {
                ZyDualCrnStatusEntity crnStatus = new ZyDualCrnStatusEntity();
                crnStatus.setCrnNo(deviceConfig.getDeviceNo());
@@ -67,37 +67,94 @@
                //工位1
                crnStatus.setTaskNo((int) siemensNet.getByteTransform().TransInt16(result.Content, 2));
                crnStatus.setStatus((int) siemensNet.getByteTransform().TransInt16(result.Content, 4));
                crnStatus.setForkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
                crnStatus.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
                crnStatus.setTaskReceive((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
                crnStatus.setBay((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
                crnStatus.setLevel((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
                crnStatus.setForkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
                crnStatus.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
                crnStatus.setTaskReceive((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
                //工位2
                crnStatus.setTaskNoTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
                crnStatus.setStatusTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
                crnStatus.setForkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 16));
                crnStatus.setLoadedTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 18));
                crnStatus.setTaskReceiveTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 20));
                crnStatus.setTaskNoTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 16));
                crnStatus.setStatusTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 18));
                crnStatus.setBayTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 20));
                crnStatus.setLevelTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 22));
                crnStatus.setForkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 24));
                crnStatus.setLoadedTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 26));
                crnStatus.setTaskReceiveTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 28));
                crnStatus.setBay((int) siemensNet.getByteTransform().TransInt16(result.Content, 22));
                crnStatus.setLevel((int) siemensNet.getByteTransform().TransInt16(result.Content, 24));
                crnStatus.setLiftPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 26));
                crnStatus.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 28));
                crnStatus.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 30));
                crnStatus.setTemp1((int) siemensNet.getByteTransform().TransInt16(result.Content, 34));
                crnStatus.setTemp2((int) siemensNet.getByteTransform().TransInt16(result.Content, 36));
                crnStatus.setTemp3((int) siemensNet.getByteTransform().TransInt16(result.Content, 38));
                crnStatus.setTemp4((int) siemensNet.getByteTransform().TransInt16(result.Content, 40));
                crnStatus.setXSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 42));
                crnStatus.setYSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 44));
                crnStatus.setZSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 46));
                crnStatus.setXDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 48));
                crnStatus.setYDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 50));
                crnStatus.setXDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 52));
                crnStatus.setYDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 54));
                crnStatus.setGoodsType((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
                crnStatus.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 30));
                crnStatus.setWalkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 32));
                crnStatus.setLiftPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 34));
                crnStatus.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 36));
                crnStatus.setXSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 38));
                crnStatus.setYSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 42));
                crnStatus.setZSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 46));
                crnStatus.setZSpeedTwo((double) siemensNet.getByteTransform().TransSingle(result.Content, 50));
                crnStatus.setXDistance((double) siemensNet.getByteTransform().TransSingle(result.Content, 54));
                crnStatus.setYDistance((double) siemensNet.getByteTransform().TransSingle(result.Content, 58));
                crnStatus.setXDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 62));
                crnStatus.setYDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 66));
                String barcode = siemensNet.getByteTransform().TransString(result.Content, 58, 8, "UTF-8");
                crnStatus.setBarcode(barcode);
                if (crnStatus.getStatus() == 0 && crnStatus.getTaskReceive() == 0) {
                    OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.0", (short) 18);
                    if (taskResult.IsSuccess) {
                        short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 0);
                        short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
                        short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
                        short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
                        short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
                        short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
                        short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
                        if(taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0 || confirm != 0) {
                            short[] array = new short[10];
                            array[0] = (short) 0;
                            array[1] = (short) 0;
                            array[2] = (short) 0;
                            array[3] = (short) 0;
                            array[4] = (short) 0;
                            array[5] = (short) 0;
                            array[6] = (short) 0;
                            array[7] = (short) 0;
                            array[8] = (short) 0;
                            array[9] = (short) 0;
                            OperateResult taskClearResult = siemensNet.Write("DB100.0", array);
                        }
                    }
                }
                if (crnStatus.getStatusTwo() == 0 && crnStatus.getTaskReceiveTwo() == 0) {
                    OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.18", (short) 18);
                    if (taskResult.IsSuccess) {
                        short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 0);
                        short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
                        short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
                        short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
                        short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
                        short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
                        short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
                        if(taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0 || confirm != 0) {
                            short[] array = new short[10];
                            array[0] = (short) 0;
                            array[1] = (short) 0;
                            array[2] = (short) 0;
                            array[3] = (short) 0;
                            array[4] = (short) 0;
                            array[5] = (short) 0;
                            array[6] = (short) 0;
                            array[7] = (short) 0;
                            array[8] = (short) 0;
                            array[9] = (short) 0;
                            OperateResult taskClearResult = siemensNet.Write("DB100.18", array);
                        }
                    }
                }
                return crnStatus;
            } else {
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取双工位堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
@@ -161,14 +218,14 @@
             do {
                 OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 18);
                 if (resultRead.IsSuccess) {
                    short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
                    short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
                    short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
                    short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
                    short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
                    short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
                    short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
                    short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
                    short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
                    short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
                    short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
                    short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
                    short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
                    short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
                    short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
                    short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
                    if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) {
                        result = siemensNet.Write(address, array);
                    } else {
src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
@@ -251,13 +251,13 @@
        crnProtocol.setLiftPosTwo(0);
        crnProtocol.setAlarm(0);
        crnProtocol.setXSpeed(0);
        crnProtocol.setYSpeed(0);
        crnProtocol.setZSpeed(0);
        crnProtocol.setXDistance(0);
        crnProtocol.setYDistance(0);
        crnProtocol.setXDuration(0);
        crnProtocol.setYDuration(0);
        crnProtocol.setXSpeed(0D);
        crnProtocol.setYSpeed(0D);
        crnProtocol.setZSpeed(0D);
        crnProtocol.setXDistance(0D);
        crnProtocol.setYDistance(0D);
        crnProtocol.setXDuration(0D);
        crnProtocol.setYDuration(0D);
        BasDualCrnpService basDualCrnpService = null;
        try {
@@ -430,6 +430,9 @@
        crnCommand.setCrnNo(crnNo); // å †åž›æœºç¼–号
        crnCommand.setTaskNo(taskNo); // å·¥ä½œå·
        crnCommand.setTaskMode(DualCrnTaskModeType.PICK.id); // ä»»åŠ¡æ¨¡å¼:  å–è´§
        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
@@ -444,6 +447,9 @@
        crnCommand.setCrnNo(crnNo); // å †åž›æœºç¼–号
        crnCommand.setTaskNo(taskNo); // å·¥ä½œå·
        crnCommand.setTaskMode(DualCrnTaskModeType.PUT.id); // ä»»åŠ¡æ¨¡å¼:  æ”¾è´§
        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
@@ -458,6 +464,9 @@
        crnCommand.setCrnNo(crnNo); // å †åž›æœºç¼–号
        crnCommand.setTaskNo(taskNo); // å·¥ä½œå·
        crnCommand.setTaskMode(DualCrnTaskModeType.MOVE.id); // ä»»åŠ¡æ¨¡å¼:  å †åž›æœºç§»åЍ
        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // ç›®æ ‡åº“位排
        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // ç›®æ ‡åº“位列
        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // ç›®æ ‡åº“位层
src/main/resources/map/СËɵØÍ¼.xlsx
Binary files differ