| | |
| | | package com.zy.core.model.protocol; |
| | | |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.BasDevpErrorLog; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | |
| | | * Created by vincent on 2020/8/6 |
| | | */ |
| | | @Data |
| | | public class StaProtocol { |
| | | public class StaProtocol implements Cloneable { |
| | | |
| | | // 站点编号 |
| | | private Integer siteId; |
| | | |
| | | // ---------------------------------------------------------------- |
| | | // 工作号 |
| | | private Short workNo = 0; |
| | | private Integer workNo = 0; |
| | | |
| | | // ---------------------------------------------------------------- |
| | | // 目标站 |
| | | private Short staNo; |
| | | |
| | | private String barcode; |
| | | |
| | | // ---------------------------------------------------------------- |
| | | // 自动 |
| | |
| | | // 空板信号 |
| | | private boolean emptyMk; |
| | | |
| | | // 需求1 |
| | | private boolean inreq1; |
| | | // 满托盘 |
| | | 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()); |
| | | // 站点 todo:luxiaotao |
| | | basDevp.setBarcode(barcode); |
| | | basDevp.setAutoing(autoing?"Y":"N"); |
| | | basDevp.setLoading(loading?"Y":"N"); |
| | | basDevp.setInEnable(inEnable?"Y":"N"); |
| | | basDevp.setOutEnable(outEnable?"Y":"N"); |
| | | basDevp.setInreq1(inreq1?"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; // 没匹配到站点 |
| | | // } |
| | | |
| | | } |