野心家
2025-04-01 6deef91299e7216963bd4e00766c92ee6f8956d0
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -370,7 +370,7 @@
    /**
     * 写入数据
     */
    private boolean write5(CrnCommand command) throws InterruptedException {
    private synchronized boolean write5(CrnCommand command) throws InterruptedException {
        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
        if (null == command) {
@@ -396,24 +396,19 @@
        OperateResult result = siemensNet.Write("DB100.0", array);
        int i=0;
//        if(result.IsSuccess){
//            log.info("堆垛机命令地址写入成功[id:{}]>>>>写入[{}]", slave.getId(),JSON.toJSON(command));
//        }else{
//            log.error("堆垛机命令地址写入失败!!![id:{}]>>>>写入[{}]", slave.getId(),JSON.toJSON(command));
//        }
        do{
            //堆垛机任务写入后,回读一次,看是否成功
            Thread.sleep(300);
            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
            if (resultRead.IsSuccess) {
                CrnCommand one = new CrnCommand();
            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB101.0", (short) 56);
            if (result.IsSuccess) {
                CrnCommand one=new CrnCommand();
                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
                one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
                one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
                one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
                if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
                        || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
                        || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
                        || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
                if (!command.getTaskNo().equals(one.getTaskNo())
                ){
                    i++;
                    log.error("堆垛机命令地址写入后回读失败[id:{}]>>>>重写[{}] >>>>> 写入[{}],===>>回读[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));