| package com.zy.core.model.protocol; | 
|   | 
| import com.zy.asrs.entity.BasDevp; | 
| import com.zy.asrs.entity.BasDevpErrorLog; | 
| import lombok.Data; | 
|   | 
| /** | 
|  * 输送线plc单个站点详细信息 | 
|  * Created by vincent on 2020/8/6 | 
|  */ | 
| @Data | 
| public class StaProtocol implements Cloneable { | 
|   | 
|     // 站点编号 | 
|     private Integer siteId; | 
|   | 
|     // ---------------------------------------------------------------- | 
|     // 工作号 | 
|     private Integer workNo = 0; | 
|   | 
|     // ---------------------------------------------------------------- | 
|     // 目标站 | 
|     private Short staNo; | 
|   | 
|     private String barcode; | 
|   | 
|     // ---------------------------------------------------------------- | 
|     // 自动 | 
|     private boolean autoing; | 
|   | 
|     // 有物 | 
|     private boolean loading; | 
|   | 
|     // 可入 | 
|     private boolean inEnable; | 
|   | 
|     // 可出 | 
|     private boolean outEnable; | 
|   | 
|     // 空板信号 | 
|     private boolean emptyMk; | 
|   | 
|     // 满托盘 | 
|     private boolean fullPlt; | 
|   | 
|     // 高 | 
|     private boolean high; | 
|   | 
|     // 低 | 
|     private boolean low; | 
|   | 
|     // 叠盘叠满 | 
|     private boolean full; | 
|   | 
|     // 锁定标记 | 
|     private boolean pakMk = true; | 
|   | 
|     // 入库暂存数 | 
|     private Short inQty; | 
|   | 
|     // 隔壁站点(台车位置) | 
|     private String nearbySta; | 
|   | 
|     //lfd入库印记  当stamp>=2时才入库 | 
|     private Integer stamp = 0; | 
|   | 
|     private boolean err = false; | 
|   | 
|   | 
|   | 
|     // 外形检测 ------------------------------------------------------------------------ | 
|   | 
|     // 前超限 | 
|     private boolean frontErr = false; | 
|   | 
|     // 后超限 | 
|     private boolean backErr = false; | 
|   | 
|     // 高超限 | 
|     private boolean highErr = false; | 
|   | 
|     // 左超限 | 
|     private boolean leftErr = false; | 
|   | 
|     // 右超限 | 
|     private boolean rightErr = false; | 
|   | 
|     // 超重 | 
|     private boolean weightErr = false; | 
|   | 
|     // 扫码失败 | 
|     private boolean barcodeErr = false; | 
|   | 
|     //故障----------------------------------------------------------------------- | 
|     private Boolean breakerErr = false; //断路器故障 | 
|   | 
|     private Boolean infraredErr = false; //光电异常 | 
|   | 
|     private Boolean outTimeErr = false; //运行超时 | 
|   | 
|     private Boolean seizeSeatErr = false; //占位超时 | 
|   | 
|     private Boolean wrkYgoodsN = false;//有任务无货故障 | 
|   | 
|     private Boolean inverterErr = false; //变频器故障 | 
|   | 
|     private Boolean contactErr = false; //电机接触器故障 | 
|   | 
|     private Boolean upcontactErr = false; //顶升电机接触器故障 | 
|   | 
|     //故障信号-------------------------------------------------------- | 
|   | 
|     // 故障读取锁定标记 | 
|     private boolean errorMk = false; | 
|     //写入标记 | 
|     private boolean writeMk = true; | 
|     private Boolean passTimeOut = false; //物体进出超时 | 
|     private Boolean objectNoIdError = false; //有物体无数据 | 
|     private Boolean idNoObjectError = false; //有数据无物体 | 
|     private Boolean lmfrError = false; //线体电机热继报警 | 
|     private Boolean liftError = false; //顶升报警 | 
|     private Boolean dlfrError = false; //顶升电机热继报警 | 
|     private Boolean dmfrError = false; //顶升横移电机热继报警 | 
|     private Boolean vfdError = false; //变频故障 | 
|     private Boolean srvError = false; //伺服故障 | 
|     private Boolean res1 = false; //预留1 | 
|     private Boolean res2 = false; //预留2 | 
|     private Boolean res3 = false; //预留3 | 
|     private Boolean communicationTimeOut = false; //与上位机通讯超时 | 
|     private Boolean parameterIncompleteError = false; //信息参数不全 | 
|     private Boolean dataNotClear = false; //信息数据未清除 | 
|     private Boolean setParameterError = false; //参数设置报警 | 
|     private Boolean res4 = false; //预留4 | 
|     private Boolean res5 = false; //预留5 | 
|     private Boolean dataError = false; //数据错误 | 
|     //配置信号 | 
|     private Boolean sensorGArrive = false; //直线光电 | 
|     private Boolean sensorGDec = false; //减速光电 | 
|     private Boolean sensorGArrive2 = false; //直线凸出 | 
|     private Boolean sensorLimit = false; //限位保护光电 | 
|     private Boolean emergency = false; //急停 | 
|     private Boolean sensorGLeave = false; //光电离开1 | 
|     private Boolean sensorGLeave2 = false; //光电离开2 | 
|     private Boolean sensorCUp = false; //顶升上升 | 
|     private Boolean sensorCDown = false; //顶升下降 | 
|     private Boolean liftMotorFr = false; //顶升热继 | 
|     private Boolean lineMotorFr = false; //直线热继 | 
|     private Boolean tranMotorFr = false; //移栽热继 | 
|     private Boolean rst1 = false; //备用1 | 
|     private Boolean rst2 = false; //备用2 | 
|     private Boolean rst3 = false; //备用3 | 
|     private Boolean rst4 = false; //备用4 | 
|     private Boolean sensorArriveD = false; //直行方向到位 | 
|     private Boolean sensorDecD = false; //直行方向减速 | 
|     private Boolean sensorArriveL = false; //左移方向到位 | 
|     private Boolean sensorDecL = false; //左移方向减速 | 
|     private Boolean sensorArriveR = false; //右移方向到位 | 
|     private Boolean sensorDecR = false; //右移方向减速 | 
|   | 
|   | 
|     public BasDevpErrorLog toSqlModelError(){ | 
|         BasDevpErrorLog basDevpErrorLog = new BasDevpErrorLog(); | 
|         basDevpErrorLog.setDevNo(siteId); // 设备号(假设有定义 siteId) | 
|         basDevpErrorLog.setPassTimeOut(passTimeOut ? "Y" : "N"); | 
|         basDevpErrorLog.setObjectNoIdError(objectNoIdError ? "Y" : "N"); | 
|         basDevpErrorLog.setIdNoObjectError(idNoObjectError ? "Y" : "N"); | 
|         basDevpErrorLog.setLmfrError(lmfrError ? "Y" : "N"); | 
|         basDevpErrorLog.setLiftError(liftError ? "Y" : "N"); | 
|         basDevpErrorLog.setDlfrError(dlfrError ? "Y" : "N"); | 
|         basDevpErrorLog.setDmfrError(dmfrError ? "Y" : "N"); | 
|         basDevpErrorLog.setVfdError(vfdError ? "Y" : "N"); | 
|         basDevpErrorLog.setSrvError(srvError ? "Y" : "N"); | 
|         basDevpErrorLog.setRes1(res1 ? "Y" : "N"); | 
|         basDevpErrorLog.setRes2(res2 ? "Y" : "N"); | 
|         basDevpErrorLog.setRes3(res3 ? "Y" : "N"); | 
|         basDevpErrorLog.setCommunicationTimeOut(communicationTimeOut ? "Y" : "N"); | 
|         basDevpErrorLog.setParameterIncompleteError(parameterIncompleteError ? "Y" : "N"); | 
|         basDevpErrorLog.setDataNotClear(dataNotClear ? "Y" : "N"); | 
|         basDevpErrorLog.setSetParameterError(setParameterError ? "Y" : "N"); | 
|         basDevpErrorLog.setInEnable(res4 ? "Y" : "N"); | 
|         basDevpErrorLog.setOutEnable(res5 ? "Y" : "N"); | 
|         basDevpErrorLog.setDataError(dataError ? "Y" : "N"); | 
|         // 配置信号 | 
|         basDevpErrorLog.setSensorGArrive(sensorGArrive ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorGDec(sensorGDec ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorGArrive2(sensorGArrive2 ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorLimit(sensorLimit ? "Y" : "N"); | 
|         basDevpErrorLog.setEmergency(emergency ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorGLeave(sensorGLeave ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorGLeave2(sensorGLeave2 ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorCUp(sensorCUp ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorCDown(sensorCDown ? "Y" : "N"); | 
|         basDevpErrorLog.setLiftMotorFr(liftMotorFr ? "Y" : "N"); | 
|         basDevpErrorLog.setLineMotorFr(lineMotorFr ? "Y" : "N"); | 
|         basDevpErrorLog.setTranMotorFr(tranMotorFr ? "Y" : "N"); | 
|         basDevpErrorLog.setRst1(rst1 ? "Y" : "N"); | 
|         basDevpErrorLog.setRst2(rst2 ? "Y" : "N"); | 
|         basDevpErrorLog.setRst3(rst3 ? "Y" : "N"); | 
|         basDevpErrorLog.setRst4(rst4 ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorArriveD(sensorArriveD ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorDecD(sensorDecD ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorArriveL(sensorArriveL ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorDecL(sensorDecL ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorArriveR(sensorArriveR ? "Y" : "N"); | 
|         basDevpErrorLog.setSensorDecR(sensorDecR ? "Y" : "N"); | 
|   | 
|         return basDevpErrorLog; | 
|     } | 
|   | 
|   | 
|   | 
|     public Boolean isErr(){ | 
|         if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){ | 
|             return true; | 
|         }else { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     public BasDevp toSqlModel(){ | 
|         BasDevp basDevp = new BasDevp(); | 
|         basDevp.setDevNo(siteId); | 
|         basDevp.setWrkNo(workNo.intValue()); | 
|         basDevp.setBarcode(barcode); | 
|         basDevp.setAutoing(autoing?"Y":"N"); | 
|         basDevp.setLoading(loading?"Y":"N"); | 
|         basDevp.setInEnable(inEnable?"Y":"N"); | 
|         basDevp.setOutEnable(outEnable?"Y":"N"); | 
|         basDevp.setLocType1((short) 0);  // 高低类型{0:未知,1:低库位,2:高库位} | 
|         basDevp.setLocType2((short) 0);  // 宽窄类型{0:未知,1:窄库位,2:宽库位} | 
|         basDevp.setLocType3((short) 0);  // 轻重类型{0:未知,1:轻库位,2:重库位} | 
|         basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2); | 
|         basDevp.setInQty(inQty !=null ?(int)inQty : 0); | 
|         basDevp.setBarcode(this.getBarcode()); | 
|         return basDevp; | 
|     } | 
|   | 
|     @Override | 
|     public StaProtocol clone() { | 
|         try { | 
|             return (StaProtocol) super.clone(); | 
|         } catch (CloneNotSupportedException e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return null; | 
|     } | 
| //    public Integer getNearbySta() { | 
| //        if (getNearbySta == null) return 0; | 
| // | 
| //        // key: 站点号  value: 基准物理位置 | 
| //        Map<Integer, Integer> posMap = new HashMap<>(); | 
| //        posMap.put(1004, 6534); | 
| //        posMap.put(1007, 33634); | 
| //        posMap.put(1010, 75174); | 
| //        posMap.put(1014, 102124); | 
| //        posMap.put(1018, 138224); | 
| //        posMap.put(1021, 178034); | 
| //        posMap.put(1024, 219684); | 
| //        posMap.put(1028, 246724); | 
| //        posMap.put(1031, 288194); | 
| //        posMap.put(1035, 315204); | 
| //        int tolerance = 50; // 允许误差范围 | 
| // | 
| //        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { | 
| //            int site = entry.getKey(); | 
| //            int basePos = entry.getValue(); | 
| //            if (Math.abs(getNearbySta - basePos) <= tolerance) { | 
| //                return site; | 
| //            } | 
| //        } | 
| // | 
| //        return 0; // 没匹配到站点 | 
| //    } | 
|   | 
| } |