#
zwl
2026-02-09 ad79ba405b2d1ac96423f88f4e8a76c584b9d38a
src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
@@ -58,43 +58,33 @@
    @Override
    public ZyDualCrnStatusEntity getStatus() {
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
            if (result.IsSuccess) {
                ZyDualCrnStatusEntity crnStatus = new ZyDualCrnStatusEntity();
                crnStatus.setCrnNo(deviceConfig.getDeviceNo());
                crnStatus.setMode((int) siemensNet.getByteTransform().TransInt16(result.Content, 0));
                //工位1
                crnStatus.setMode((int)siemensNet.getByteTransform().TransInt16(result.Content, 0));
                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));
                //工位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.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.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.setLiftPos((int)siemensNet.getByteTransform().TransInt16(result.Content, 12));
                crnStatus.setWalkPos((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
                crnStatus.setLoaded((int)siemensNet.getByteTransform().TransInt16(result.Content, 16));
                crnStatus.setAlarm((int)siemensNet.getByteTransform().TransInt16(result.Content, 18));
                crnStatus.setTemp1((int)siemensNet.getByteTransform().TransInt16(result.Content, 20));
                crnStatus.setTemp2((int)siemensNet.getByteTransform().TransInt16(result.Content, 22));
                crnStatus.setTemp3((int)siemensNet.getByteTransform().TransInt16(result.Content, 24));
                crnStatus.setTemp4((int)siemensNet.getByteTransform().TransInt16(result.Content, 26));
                crnStatus.setXSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 28));
                crnStatus.setYSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 32));
                crnStatus.setZSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 36));
                crnStatus.setXDistance((int) siemensNet.getByteTransform().TransSingle(result.Content, 40));
                crnStatus.setYDistance((int) siemensNet.getByteTransform().TransSingle(result.Content, 44));
                crnStatus.setXDuration((int) siemensNet.getByteTransform().TransSingle(result.Content, 48));
                crnStatus.setYDuration((int) siemensNet.getByteTransform().TransSingle(result.Content, 52));
                crnStatus.setWeight(siemensNet.getByteTransform().TransSingle(result.Content, 56));
                String barcode = siemensNet.getByteTransform().TransString(result.Content, 58, 8, "UTF-8");
                crnStatus.setBarcode(barcode);
@@ -121,34 +111,37 @@
                 return response;
             }
             int writeAck = 0;
             do {
                 OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
                 if (resultAck.IsSuccess){
                     Thread.sleep(200);
                     OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
                     short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
                     if (ack != 0) {
                         writeAck++;
                     }else {
//                         News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), "ack复位完成");
                         break;
                     }
                 }
             }while (writeAck <5);
             String address = "DB100.0";
             if (command.getStation() == 1) {
                 //工位1
                 address = "DB100.0";
             }else {
                 //工位2
                 address = "DB100.18";
             }
             String confirmAddress = "DB100.16";
             if (command.getStation() == 1) {
                 //工位1
                 confirmAddress = "DB100.16";
             }else {
                 //工位2
                 confirmAddress = "DB100.34";
             }
             String confirmAddress = "DB100.18";
             short[] array = new short[9];
             array[0] = command.getTaskNo().shortValue();
             array[1] = command.getTaskMode().shortValue();
             array[2] = command.getSourcePosX().shortValue();
             array[3] = command.getSourcePosY().shortValue();
             array[4] = command.getSourcePosZ().shortValue();
             array[5] = command.getDestinationPosX().shortValue();
             array[6] = command.getDestinationPosY().shortValue();
             array[7] = command.getDestinationPosZ().shortValue();
             array[8] = (short) 0;
             short[] array = new short[10];
             array[0] = 0;
             array[1] = command.getTaskNo().shortValue();
             array[2] = command.getTaskMode().shortValue();
             array[3] = command.getSourcePosX().shortValue();
             array[4] = command.getSourcePosY().shortValue();
             array[5] = command.getSourcePosZ().shortValue();
             array[6] = command.getDestinationPosX().shortValue();
             array[7] = command.getDestinationPosY().shortValue();
             array[8] = command.getDestinationPosZ().shortValue();
             array[9] = (short) 0;
             OperateResult result = siemensNet.Write(address, array);
             if (!result.IsSuccess) {
@@ -159,7 +152,7 @@
             int idx = 0;
             do {
                 OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 18);
                 OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 20);
                 if (resultRead.IsSuccess) {
                    short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
                    short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);