1
3 天以前 82374fe4b32d58956810f445b7889f1a370f1ab9
src/main/java/com/zy/core/thread/RgvThread.java
@@ -10,14 +10,8 @@
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvMap;
import com.zy.asrs.entity.BasRgvOpt;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.BasRgvMapService;
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.common.utils.News;
import com.zy.core.RgvThread2;
import com.zy.core.ThreadHandler;
@@ -280,7 +274,7 @@
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 38);
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 42);
            if (result.IsSuccess) {
                if (null == rgvProtocol) {
                    rgvProtocol = new RgvProtocol();
@@ -312,6 +306,53 @@
                rgvProtocol.setErr10(status3[1]);
                rgvProtocol.setErr11(status3[2]);
                rgvProtocol.setErr12(status3[3]);
                boolean[] statusErr = siemensNet.getByteTransform().TransBool(result.Content, 36, 6);
                rgvProtocol.setEmergencyStop(statusErr[0]);       // 急停触发
                rgvProtocol.setSlot1EmptyNoData(statusErr[1]);   // 1号位有物无资料
                rgvProtocol.setSlot2EmptyNoData(statusErr[2]);   // 2号位有物无资料
                rgvProtocol.setCommandErrorChainConflict(statusErr[3]); // 命令错误走链条冲突
                rgvProtocol.setTargetPositionIssue(statusErr[4]); // 目标位下发错误
                rgvProtocol.setTravelInverterError(statusErr[5]); // 走行变频器异常
                rgvProtocol.setPhotoelectric1Error(statusErr[6]); // 1号光电异常
                rgvProtocol.setPhotoelectric2Error(statusErr[7]); // 2号光电异常
                rgvProtocol.setTimeoutConnectionWithLine(statusErr[8]); // 与输线时接超时
                rgvProtocol.setLeftRollerTimeout(statusErr[9]);    // 左侧滚筒运行超时
                rgvProtocol.setRightRollerTimeout(statusErr[10]);   // 右侧滚筒运行超时
                rgvProtocol.setRgvRunTimeout(statusErr[11]);        // rgv运行超时
                rgvProtocol.setPosition1ChainInverterError(statusErr[12]); // 1号工位链条变频器异常
                rgvProtocol.setPosition2ChainInverterError(statusErr[13]); // 2号工位链条变频器异常
                rgvProtocol.setFrontRearLimit(statusErr[14]);      // 前后极限位
                rgvProtocol.setEmergencyButton(statusErr[15]);     // 急停按钮
                rgvProtocol.setForwardButton(statusErr[16]);       // 前进按钮
                rgvProtocol.setReverseButton(statusErr[17]);       // 后退按钮
                rgvProtocol.setLocalRemote(statusErr[18]);         // 本地/远程
                rgvProtocol.setReset(statusErr[19]);               // 复位
                rgvProtocol.setTravelBrakeSwitch(statusErr[20]);   // 走行抱闸开关钮
                rgvProtocol.setTravelSpeedLimitPhotoelectric(statusErr[21]); // 走行强制减速光电
                rgvProtocol.setLeftOverlimit1(statusErr[22]);      // 左超限 1
                rgvProtocol.setRightOverlimit1(statusErr[23]);     // 右超限 1
                rgvProtocol.setLeftAtPosition1(statusErr[24]);     // 左到位 1
                rgvProtocol.setRightAtPosition1(statusErr[25]);    // 右到位 1
                rgvProtocol.setChainForward1(statusErr[26]);       // 链条前进 1
                rgvProtocol.setChainReverse1(statusErr[27]);       // 链条后退 1
                rgvProtocol.setInverterAlarm(statusErr[28]);       // 变频器报警
                rgvProtocol.setLeftOverlimit2(statusErr[29]);      // 左超限 2
                rgvProtocol.setRightOverlimit2(statusErr[30]);     // 右超限 2
                rgvProtocol.setLeftAtPosition2(statusErr[31]);     // 左到位 2
                rgvProtocol.setRightAtPosition2(statusErr[32]);    // 右到位 2
                rgvProtocol.setCargoSpeedReduction(statusErr[33]); // 货物减速
                rgvProtocol.setConveyorInverterAlarm2(statusErr[34]); // 输送变频器报警 2
                rgvProtocol.setRightConveyor2(statusErr[35]);      // 右输送 2
                rgvProtocol.setLeftConveyor2(statusErr[36]);       // 左输送 2
                if(rgvProtocol.getStatus() == 99){
                    rgvProtocol.setErrorMk(true);//若存在异常触发写入
                }else{
                    rgvProtocol.setWriteMk(true);//无异常后才能继续写入
                    rgvProtocol.setErrorMk(false);
                }
//                BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
                try {
@@ -320,6 +361,18 @@
                    BasRgv basRgv = new BasRgv();
                    basRgv.setRgvNo(slave.getId());
                    basRgv.setRgvSts((int)rgvProtocol.getMode());
                    if(rgvProtocol.isWriteMk() && rgvProtocol.isErrorMk()){
                        try {
                            // 日志记录异常情况
                            BasRgvErrorLog basRgvErrorLogs;
                            basRgvErrorLogs = rgvProtocol.toSqlModelError();
                            BasRgvErrorLogService basRgvErrorLogService = SpringUtils.getBean(BasRgvErrorLogService.class);
                            basRgvErrorLogService.insert(basRgvErrorLogs);
                            rgvProtocol.setWriteMk(false);
                        } catch (Exception ignore) {
                            log.error(ignore.getMessage());
                        }
                    }
                    if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
                        log.error("RGV plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                    }