package com.zy.core.model.protocol; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.BasDevpErrorLog; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * 输送线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; //数据错误 public BasDevpErrorLog toSqlModelError(){ BasDevpErrorLog basDevpErrorLog = new BasDevpErrorLog(); basDevpErrorLog.setDevNo(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"); 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 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 entry : posMap.entrySet()) { // int site = entry.getKey(); // int basePos = entry.getValue(); // if (Math.abs(getNearbySta - basePos) <= tolerance) { // return site; // } // } // // return 0; // 没匹配到站点 // } }