Merge remote-tracking branch 'origin/hylywcs' into hylywcs
| | |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.service.BasDevpService; |
| | | import com.zy.core.DevpThread; |
| | |
| | | private SiemensS7Net siemensS7Net; |
| | | private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); |
| | | private short heartBeatVal = 1; |
| | | public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ |
| | | |
| | | public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ |
| | | add(101);add(102);add(103);add(104); |
| | | add(201);add(202);add(203);add(204); |
| | | add(301);add(302);add(303);add(304);add(305);add(306);add(401);add(402); |
| | | add(301);add(302);add(303);add(304);add(305);add(306); |
| | | }}; |
| | | |
| | | public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ |
| | | add(401);add(402); |
| | | }}; |
| | | |
| | | /** |
| | |
| | | |
| | | public SiemensDevpThread(DevpSlave slave) { |
| | | this.slave = slave; |
| | | } |
| | | |
| | | private ArrayList<Integer> getStaNo() { |
| | | switch (slave.getId()) { |
| | | case 1: |
| | | return staNos1; |
| | | case 2: |
| | | return staNos2; |
| | | default: |
| | | throw new CoolException("服务器异常"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化站点状态 |
| | | */ |
| | | private void initSite() { |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | // 站点编号 |
| | | for (Integer siteId : staNos) { |
| | | StaProtocol staProtocol = station.get(siteId); |
| | | if (null == staProtocol) { |
| | | staProtocol = new StaProtocol(); |
| | | staProtocol.setSiteId(siteId); |
| | | station.put(siteId, staProtocol); |
| | | } |
| | | staProtocol.setWorkNo((short) 0); // ID |
| | | staProtocol.setAutoing(false); // 自动 |
| | | staProtocol.setLoading(false); // 有物 |
| | | staProtocol.setInEnable(false); // 可入 |
| | | staProtocol.setOutEnable(false); // 可出 |
| | | staProtocol.setEmptyMk(false); // 空板信号 |
| | | staProtocol.setStaNo((short) 0); // 目标站 |
| | | |
| | | if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { |
| | | staProtocol.setPakMk(true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean connect() { |
| | | boolean result = false; |
| | |
| | | } else { |
| | | OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】输送线plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); |
| | | log.error("输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); |
| | | initSite(); |
| | | } |
| | | siemensS7Net.ConnectClose(); |
| | | return result; |
| | |
| | | private void read() throws InterruptedException { |
| | | // // 更新入出库模式 |
| | | updateIoMode(); |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | int staNoSize = staNos.size(); |
| | | OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4)); |
| | | if (result.IsSuccess) { |
| | |
| | | } |
| | | |
| | | } else { |
| | | initSite(); |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); |
| | | // log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | } |
| | |
| | | if (null == staProtocol) { |
| | | return; |
| | | } |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | int index = staNos.indexOf(staProtocol.getSiteId()); |
| | | short[] array = new short[2]; |
| | | array[0] = staProtocol.getWorkNo(); |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | System.out.println(staNos.indexOf(129)); |
| | | System.out.println(staNos.size()); |
| | | for (int i = 0; i<staNos.size(); i++) { |
| | | System.out.println(staNos1.indexOf(129)); |
| | | System.out.println(staNos1.size()); |
| | | for (int i = 0; i< staNos1.size(); i++) { |
| | | // System.out.println(i*2); |
| | | // System.out.println(i*2 + 200); |
| | | // System.out.println(i); |
| | | } |
| | | int index = staNos.indexOf(128); |
| | | int index = staNos1.indexOf(128); |
| | | System.out.println(index*2); |
| | | System.out.println(index*2 + 200); |
| | | } |
| | |
| | | pickSta[3]: |
| | | staNo: 402 |
| | | barcode: ${wcs-slave.barcode[3].id} |
| | | |
| | | devp[1]: |
| | | id: 1 |
| | | ip: 10.10.10.60 |
| | | port: 102 |
| | | rack: 0 |
| | | slot: 0 |
| | | # 入库口1 |
| | | inSta[0]: |
| | | staNo: 401 |
| | | barcode: ${wcs-slave.barcode[3].id} |
| | | # 空板入库口1 |
| | | emptyInSta[0]: |
| | | staNo: 401 |
| | | # 出库口1 |
| | | outSta[0]: |
| | | staNo: 402 |
| | | # 拣料入库口1 |
| | | pickSta[0]: |
| | | staNo: 402 |
| | | barcode: ${wcs-slave.barcode[3].id} |
| | | |
| | | # 条码扫描仪 |
| | | barcode[0]: |
| | | id: 1 |
| | |
| | | for (let i = 0;i < rackss.length;i++) { |
| | | let bay ='' // 单个库位 |
| | | let bays = '' // 库位集合 |
| | | let bayWidth = rackss[i].width / (rackss[i].maxBayNo / rackss[i].minBayNo) |
| | | let maxBayNo = rackss[i].maxBayNo // 最大库位号 |
| | | let minBayNo = rackss[i].minBayNo // 最小库位号 |
| | | let bLen = maxBayNo / minBayNo // 库位个数 |
| | | let bLen |
| | | let interval // 间隔数 |
| | | |
| | | if (maxBayNo<35) { |
| | | interval = 1 |
| | | bLen = maxBayNo / interval // 库位个数 |
| | | } else { |
| | | interval = 2 |
| | | bLen = maxBayNo / interval // 库位个数 |
| | | } |
| | | let bayWidth // 单个库位宽度 |
| | | let bNum // 库位号码 |
| | | // hpPosition 0 表示货架序号 左->右 1 表示货架序号 右->左 |
| | | |
| | | if (minBayNo % 2 == 0) { // 从2开始 |
| | | if(interval == 1) { |
| | | bLen = bLen - 1 |
| | | } else if (interval == 2) { |
| | | if (maxBayNo % 2 == 0) { // 偶数 |
| | | bLen = bLen |
| | | } else { // 奇数 |
| | | maxBayNo = maxBayNo + 1 |
| | | bLen = maxBayNo / interval // 库位个数 |
| | | } |
| | | } |
| | | } else { // 从1开始 |
| | | if(interval == 1) { |
| | | bLen = bLen |
| | | } else if (interval == 2) { |
| | | if (maxBayNo % 2 == 0) { // 偶数 |
| | | bLen = bLen |
| | | } else { // 奇数 |
| | | bLen = bLen + 1 |
| | | } |
| | | } |
| | | } |
| | | bayWidth = rackss[i].width / bLen |
| | | // hpPosition 0 表示货架序号 左->右 1 表示货架序号 左<-右 |
| | | if (mapInfo.hpPosition == 1) { |
| | | bNum = maxBayNo |
| | | for (let j = bLen; j > 0; j--) { |
| | | bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>" |
| | | bays = bays + bay |
| | | bNum = bNum - minBayNo; |
| | | bNum = bNum - interval; |
| | | } |
| | | }else { |
| | | if (minBayNo % 2 == 0) { |
| | | bNum = minBayNo |
| | | for (let j = 0; j < bLen; j++) { |
| | | bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>" |
| | | bays = bays + bay |
| | | bNum = bNum + minBayNo; |
| | | bNum = bNum + interval; |
| | | } |
| | | } else { |
| | | bNum = minBayNo + 1 |
| | | for (let j = 0; j < bLen; j++) { |
| | | bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>" |
| | | bays = bays + bay |
| | | bNum = bNum + minBayNo; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | rack = "<div class='rack' id='" + rackss[i].id + |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 30 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 31 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 30 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 31 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 30 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 31 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 30 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 31 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1088, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 16 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 17 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1088, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 16 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 17 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1088, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 16 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 17 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1088, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 16 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 17 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 23 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 24 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 23 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 24 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 23 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 24 |
| | | }, |
| | | { |
| | | "type": "rack", |
| | |
| | | "left": 430, |
| | | "width": 1020, |
| | | "height": 24, |
| | | "minBayNo": 1, |
| | | "maxBayNo": 23 |
| | | "minBayNo": 2, |
| | | "maxBayNo": 24 |
| | | }, |
| | | ], |
| | | "rackDescs": [ |