自动化立体仓库 - WCS系统
#
luxiaotao1123
2021-01-11 16787b096c6aec16195a85f0a1c4666679e8f32f
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -114,7 +114,7 @@
     * 读取状态
     */
    private void readStatus(){
        OperateResultExOne<byte[]> result = siemensNet.Read("DB11.2", (short) 90);
        OperateResultExOne<byte[]> result = siemensNet.Read("DB11.2", (short) 104);
        if (result.IsSuccess) {
            if (null == crnProtocol) {
                crnProtocol = new CrnProtocol();
@@ -160,6 +160,19 @@
            crnProtocol.setDoubleLow(bool3[5]);
            crnProtocol.setPlatformHigh(bool3[6]);
            crnProtocol.setPlatformLow(bool3[7]);
            boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1);    // 66
            crnProtocol.setLoaded((short) (bool4[4]?1:0));  // 有物
            // 速度
            crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22));    // 24
            crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24));    // 26
            crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26));    // 28
            // 累计里程、时长
            crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 88));    // 90
            crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92));    // 94
            crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96));    // 98
            crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100));    // 102
            // 增强
            if (crnProtocol.getForkHome()) {
                crnProtocol.setForkPos(CrnForkPosType.HOME);
@@ -230,6 +243,66 @@
            log.error("堆垛机写入命令为空");
            return false;
        }
        if (command.getTaskNo() == 0) {
            command.setTaskNo((short) 9999);
        }
        // 代理
        switch (command.getSourcePosX()) {
            case 1:
                command.setSourcePosX((short) 4);
                break;
            case 2:
                command.setSourcePosX((short) 3);
                break;
            case 3:
                command.setSourcePosX((short) 2);
                break;
            case 4:
                command.setSourcePosX((short) 1);
                break;
            case 5:
                command.setSourcePosX((short) 4);
                break;
            case 6:
                command.setSourcePosX((short) 3);
                break;
            case 7:
                command.setSourcePosX((short) 2);
                break;
            case 8:
                command.setSourcePosX((short) 1);
                break;
            default:
                log.info("{}号堆垛机下方命令错误,源排:{}", command.getCrnNo(), command.getSourcePosX());
        }
        switch (command.getDestinationPosX()) {
            case 1:
                command.setDestinationPosX((short) 4);
                break;
            case 2:
                command.setDestinationPosX((short) 3);
                break;
            case 3:
                command.setDestinationPosX((short) 2);
                break;
            case 4:
                command.setDestinationPosX((short) 1);
                break;
            case 5:
                command.setDestinationPosX((short) 4);
                break;
            case 6:
                command.setDestinationPosX((short) 3);
                break;
            case 7:
                command.setDestinationPosX((short) 2);
                break;
            case 8:
                command.setDestinationPosX((short) 1);
                break;
            default:
                log.info("{}号堆垛机下方命令错误,目标排:{}", command.getCrnNo(), command.getSourcePosX());
        }
        command.setCrnNo(slave.getId());
        short[] array = new short[9];
        if (!command.getTaskModeType().equals(CrnTaskModeType.CLEAR)) {