#
zzgtfwq
2 天以前 29d5f847ca4d1f084d8170d5bf2235cd6b7dde14
src/main/java/com/zy/core/thread/RgvThread.java
@@ -169,18 +169,20 @@
                    }
                    continue;
                }
                if (delRgvTask){
                    writeDelRgvTask();
                    delRgvTask = false;
                    continue;
                }
//                if (delRgvTask){
//                    writeDelRgvTask();
//                    delRgvTask = false;
//                    continue;
//                }
                Thread.sleep(50L);
                OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1);
                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1);
                if (status[0]){
                    Thread.sleep(500L);
                    OperateResult result4 = siemensNet.Write("DB100.12.0", false);
                // 构建设备状态对象
                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
                if (rgvProtocol == null) {
                    rgvProtocol = new RgvProtocol();
                }
                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)){
                    OperateResult result4 = siemensNet.Write("DB100.0", (short) 1);
                }
            } catch (Exception e) {
                log.error("RGV数据任务下发复位线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -666,7 +668,7 @@
                    RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
                    return false;
                }
            } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
            } else if (!rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
                if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
                        - (targetPosition + rgvProtocol.getCarBodyKunPeng())
                        > avoidDistance - 50) {//无需避让
@@ -874,7 +876,7 @@
                    return false;
                }
            } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
            } else if (!rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
                if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
                        - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
                        > avoidDistance-50) {//无需避让
@@ -1010,7 +1012,8 @@
     */
    private void readStatus() {
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 20);
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 36);
            OperateResultExOne<byte[]> result100 = siemensNet.Read("DB100.0", (short) 18);
            if (result.IsSuccess) {
                // 构建设备状态对象
                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
@@ -1021,14 +1024,16 @@
                rgvProtocol.setCarBodyJiaoMing(slave.getCarBodyJiaoMing());
                rgvProtocol.setCarBodyKunPeng(slave.getCarBodyKunPeng());
                rgvProtocol.setRgvPos((long)siemensNet.getByteTransform().TransInt32(result.Content, 0));
                rgvProtocol.setRgvPosDestination((long)siemensNet.getByteTransform().TransInt32(result.Content, 4));
                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
//                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
                rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 4));
                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                rgvProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 10));
                rgvProtocol.setRgvPos((long)siemensNet.getByteTransform().TransInt32(result.Content, 32));
                rgvProtocol.setRgvPosDestination((long)siemensNet.getByteTransform().TransInt32(result100.Content, 14));
                if (rgvProtocol.getRgvPosDestination()==0L){
                    rgvProtocol.setRgvPosDestination(rgvProtocol.getRgvPos());
                }
                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
//                rgvProtocol.setStatus((short)1);
                //作业启动中  解决任务下发后小车状态未更新,小车状态不及时
                if (this.wrkSign == 1 && rgvProtocol.getStatus()!=(short)1){
@@ -1038,26 +1043,22 @@
                    rgvProtocol.setStatus((short)110);
                }
                rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
                rgvProtocol.setRgvNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 16));
//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
//                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
//                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
//                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 16));
//                OperateResultExOne<byte[]> result11 = siemensNet.Read("DB100.12", (short) 1);
                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2);
                rgvProtocol.setLoaded(status[0]? (short)1:(short)0);
                rgvProtocol.setErr1(status[8]);
                rgvProtocol.setErr2(status[9]);
                rgvProtocol.setErr3(status[10]);
                rgvProtocol.setErr4(status[11]);
                rgvProtocol.setErr5(status[12]);
                rgvProtocol.setErr6(status[13]);
                rgvProtocol.setErr7(status[14]);
                rgvProtocol.setErr8(status[15]);
//                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2);
//                rgvProtocol.setLoaded(status[0]? (short)1:(short)0);
//                rgvProtocol.setErr1(status[8]);
//                rgvProtocol.setErr2(status[9]);
//                rgvProtocol.setErr3(status[10]);
//                rgvProtocol.setErr4(status[11]);
//                rgvProtocol.setErr5(status[12]);
//                rgvProtocol.setErr6(status[13]);
//                rgvProtocol.setErr7(status[14]);
//                rgvProtocol.setErr8(status[15]);
//                System.out.println("读线程"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
//                System.out.println("读线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis()+"小车数据:"+JSON.toJSONString(rgvProtocol));
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
@@ -1072,9 +1073,9 @@
//                        }
//                    }
//                }
                if (rgvProtocol.getAlarm$()!=0){
                    RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
                }
//                if (rgvProtocol.getAlarm$()!=0){
//                    RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
//                }
                try {
                    // 根据实时信息更新数据库
@@ -1152,21 +1153,26 @@
//        convertRow(command);
//        taskProtocol.setRgvNo(slave.getId());
//        Long[] array = new Long[11];
        OperateResult result41 = siemensNet.Write("DB100.12.0", false);
        OperateResult result41 = siemensNet.Write("DB100.0", (short) 0);
//        array[0] = taskProtocol.getAckFinish1();
//        array[1] = taskProtocol.getTaskNo();
//        array[2] = taskProtocol.getTaskMode();
//        array[4] = command.getDestinationStaNo();
//        array[10] = taskProtocol.getCommand();
        int taskStatus = taskProtocol.getTaskStatus();
        int taskStatus = taskProtocol.getTaskStatus$();
        int targetPositionStaNo = taskProtocol.getTargetPositionStaNo();
        int targetPositionStaNoEnd = taskProtocol.getTargetPositionStaNoEnd();
        OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTargetPosition().intValue());
        OperateResult result1 = siemensNet.Write("DB100.4", (short) taskStatus);
        OperateResult result2 = siemensNet.Write("DB100.6", taskProtocol.getTaskNo().intValue());
        OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 :  (short) 2); // 执行方向(面朝轨道 定位值左小右大)    true:左   false:右
        Thread.sleep(20L);
        OperateResult result2 = siemensNet.Write("DB100.2", taskProtocol.getTaskNo().intValue());
        OperateResult result1 = siemensNet.Write("DB100.6", (short) taskStatus);
        OperateResult result11 = siemensNet.Write("DB100.8", (short) targetPositionStaNo);
        OperateResult result12 = siemensNet.Write("DB100.10", (short) targetPositionStaNo);
        OperateResult result = siemensNet.Write("DB100.14", taskProtocol.getTargetPosition().intValue());
        OperateResult result13 = siemensNet.Write("DB100.18", (short) targetPositionStaNoEnd);
//        OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 :  (short) 2); // 执行方向(面朝轨道 定位值左小右大)    true:左   false:右
        Thread.sleep(10L);
        OperateResult result4 = siemensNet.Write("DB100.12.0", true);
        OperateResult result4 = siemensNet.Write("DB100.12", (short) 1);
        this.wrkSign = 1;
//        log.info("任务下发线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis());