whycq
2022-03-16 4dd1de806329aee03af0cf9f63521af1da81d2df
src/main/java/com/zy/core/thread/SteThread.java
@@ -126,7 +126,7 @@
     */
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB4", (short) 70);
            OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70);
            if (result.IsSuccess) {
                if (null == steProtocol) {
                    steProtocol = new SteProtocol();
@@ -134,36 +134,42 @@
                steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
                steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
                steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
//                steProtocol.setExecute();
//                steProtocol.setWaiting();
                OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0");
                if (executeRes.IsSuccess) {
                    steProtocol.setExecute(executeRes.Content);
                }
                OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("V2001.1");
                if (waitingRes.IsSuccess) {
                    steProtocol.setWaiting(waitingRes.Content);
                }
                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt32(result.Content, 6));
                steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt32(result.Content, 10));
                steProtocol.setCharge(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
                steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt32(result.Content, 8));
                steProtocol.setCharge(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
//                steProtocol.setFullCharge();
//                steProtocol.setLowCharge();
                steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
                steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
                steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
                steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
//                steProtocol.setCloser();
//                steProtocol.setSpeed();
                steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 28));
                steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 30));
                steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 32));
                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 38));
                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 44));
                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 46));
                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 48));
                steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
                steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20));
                steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22));
                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 24));
                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28));
                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30));
                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32));
                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 34));
                steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58));
                steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62));
                steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64));
                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 66));
                steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68));
//                steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58));
//                steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62));
//                steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64));
                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 36));
//                steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68));
                steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72));
                steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 74));
                steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 76));
                steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 78));
//                steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72));
                steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38));
                steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40));
                steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -218,25 +224,25 @@
            // 作业
            if (command.getTaskMode() != 0) {
                // 1.任务号
                OperateResult result0 = siemensS7Net.Write("DB3.0", command.getTaskNo());
                OperateResult result0 = siemensS7Net.Write("V1000", command.getTaskNo());
                // 2.作业
                OperateResult result1 = siemensS7Net.Write("DB3.4", command.getTaskMode());
                OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode());     // todo
                // 3.确认开始任务
                if (result0.IsSuccess && result1.IsSuccess) {
                    result = siemensS7Net.Write("D0", true);
                    result = siemensS7Net.Write("V2000.0", true);
                }
            // 其他指令
            } else {
                // 控制模式
                if (command.getControlMode() != null) {
                    result =  siemensS7Net.Write("DB3.20", command.getControlMode());
                    result =  siemensS7Net.Write("V1010", command.getControlMode());
                // 复位信号
                } else if (command.getReset() != null) {
                    result =  siemensS7Net.Write("DB3.26", command.getReset());
                    result =  siemensS7Net.Write("V2000.2", command.getReset());
                // 删除指令
                } else if (command.getDelete() != null) {
                    result =  siemensS7Net.Write("DB3.28", command.getDelete());
                    result =  siemensS7Net.Write("V2000.3", command.getDelete());
                // 无效指令
                } else {
                    return false;
@@ -252,6 +258,7 @@
            // 日志记录
            if (!command.getComplete() && command.getTaskMode() != 0) {
                BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class);
                if (null != bean) {
                BasSteOpt basSteOpt = new BasSteOpt(
                        command.getTaskNo(),    // 任务号
                        command.getSteNo(),    // 穿梭车
@@ -271,6 +278,7 @@
                        null    // 备注
                );
                bean.insert(basSteOpt);
                }
            }
        } catch (Exception ignore) {}
@@ -308,7 +316,7 @@
                    if (basSte != null) {
                        // 更新plc数据块
                        short[] arr = new short[] {this.lastRow.shortValue(), this.lastBay.shortValue(), this.lastLev.shortValue()};
                        OperateResult result = siemensS7Net.Write("D0", arr);
                        OperateResult result = siemensS7Net.Write("V1002", arr);
                        if (result.IsSuccess) {
                            // 更新数据库
                            if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) {