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<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; // 没匹配到站点
|
// }
|
|
}
|