package com.zy.core.model.protocol; import com.zy.asrs.entity.BasDevp; import lombok.Data; import java.util.ArrayList; import java.util.List; /** * 输送线plc单个站点详细信息 * Created by vincent on 2020/8/6 */ @Data public class StaProtocol implements Cloneable { // 站点编号 private Integer siteId; // ---------------------------------------------------------------- // 工作号 private Short workNo = 0; // ---------------------------------------------------------------- // 目标站 private Short staNo; // ---------------------------------------------------------------- // 自动 private boolean autoing; // 有物 private boolean loading; // 可入 private boolean inEnable; // 可出 private boolean outEnable; // 空板信号 private boolean emptyMk; // 满托盘 private boolean fullPlt; // 高 private boolean high = false; // 低 private boolean low; //agv private boolean car; // 锁定标记 private boolean pakMk = true; // 入库暂存数 private Short inQty; // 隔壁站点(台车位置) private String nearbySta; //指令ID private Integer commandId; // 物料号列表 private List matIdList; // 高度 private String height; // 外形检测 ------------------------------------------------------------------------ // 前超限 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 pushTheEnvelopeErr = false; // 提升上极限 private Boolean raiseTheLowerLimitErr = false; // 提升下极限 private Boolean leftProtectionTriggersErr = false; // 左保护触发 private Boolean rightProtectionTriggersErr = false; // 右保护触发 private Boolean gratingBlockingErr = false; // 光栅阻挡 private Short agvStartPick; //允许取货 private Short agvStartPlace; //允许放货 private Short agvTypeSign; //允许放货 private Short agvTargetPick; //取货完成 private Short agvTargetPlace; //放货完成 private Short agvTypeSignEnd; //放货完成 private List alarm; // 获取故障描述 public String getFaultDescription(){ String faultDescription = ""; if (breakerErr) { faultDescription = "电路保护器断开"; } else if(infraredErr) { faultDescription = "光电异常(检查托盘是否卡住)"; }else if(outTimeErr) { faultDescription = "运行超时(检查托盘是否卡住)"; }else if(seizeSeatErr) { faultDescription = "占位超时(检查AGV是否长时间阻挡光电且无交互信号)"; }else if(wrkYgoodsN) { faultDescription = "有任务无货故障(AGV取货离开后长时间没有收到AGV离开信号)"; }else if(inverterErr) { faultDescription = "变频器故障:"; }else if(contactErr) { faultDescription = "接触器故障"; }else if(upcontactErr) { faultDescription = "顶升电机接触器故障"; } else if(pushTheEnvelopeErr) { faultDescription = "提升上极限"; } else if(raiseTheLowerLimitErr) { faultDescription = "提升下极限"; } else if(leftProtectionTriggersErr) { faultDescription = "保护光电触发(检查AGV放货位置)"; } else if(rightProtectionTriggersErr) { faultDescription = "右保护触发"; } else if(gratingBlockingErr) { faultDescription = "光栅阻挡"; } return faultDescription; } public List getAlarm() { List alarm = new ArrayList<>(); if (breakerErr) { alarm.add(1); } if (infraredErr) { alarm.add(2); } if (outTimeErr) { alarm.add(3); } if (seizeSeatErr) { alarm.add(4); } if (wrkYgoodsN) { alarm.add(5); } if (inverterErr) { alarm.add(6); } if (contactErr) { alarm.add(7); } if (upcontactErr) { alarm.add(8); } return alarm; } public BasDevp toSqlModel() { BasDevp basDevp = new BasDevp(); basDevp.setDevNo(siteId); basDevp.setWrkNo(workNo.intValue()); basDevp.setAutoing(autoing ? "Y" : "N"); basDevp.setLoading(loading ? "Y" : "N"); if (frontErr) { basDevp.setStaErr(11); } else if (backErr) { basDevp.setStaErr(12); } else if (highErr) { basDevp.setStaErr(13); } else if (leftErr) { basDevp.setStaErr(14); } else if (rightErr) { basDevp.setStaErr(15); } else if (weightErr) { basDevp.setStaErr(16); } else if (barcodeErr) { basDevp.setStaErr(17); } else if (breakerErr) { basDevp.setStaErr(18); } else if (infraredErr) { basDevp.setStaErr(19); } else if (outTimeErr) { basDevp.setStaErr(110); } else if (seizeSeatErr) { basDevp.setStaErr(111); } else if (wrkYgoodsN) { basDevp.setStaErr(112); } else if (inverterErr) { basDevp.setStaErr(113); } else if (contactErr) { basDevp.setStaErr(114); } else if (upcontactErr) { basDevp.setStaErr(115); } else { if (!loading) { basDevp.setStaErr(0); } } 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.setAgvStartPick(agvStartPick.intValue()); // basDevp.setAgvStartPlace(agvStartPlace.intValue()); return basDevp; } @Override public StaProtocol clone() { try { return (StaProtocol) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return null; } }