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