| | |
| | | import HslCommunication.Profinet.Siemens.SiemensPLCS; |
| | | import HslCommunication.Profinet.Siemens.SiemensS7Net; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SpringUtils; |
| | |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.sql.Wrapper; |
| | | import java.text.MessageFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | |
| | | //锁定标记 |
| | | private boolean PakMk = true; |
| | | //入库标记 |
| | | private boolean PakIn = true; |
| | | //出库标记 |
| | | private boolean PakOut = true; |
| | | //根据距离跳过取货 |
| | | private boolean PakRgv = true; |
| | | //接驳标记 |
| | | private boolean PakToCrn = true; |
| | | // private boolean PakIn = true; |
| | | // //出库标记 |
| | | // private boolean PakOut = true; |
| | | // //根据距离跳过取货 |
| | | // private boolean PakRgv = true; |
| | | // //接驳标记 |
| | | // private boolean PakToCrn = true; |
| | | // 任务锁定 |
| | | private boolean Paking = true; |
| | | private boolean Paking = true; |
| | | // //连续任务下发 |
| | | // private boolean PakAll = true; |
| | | |
| | | public RgvThread(RgvSlave slave) { |
| | | this.slave = slave; |
| | |
| | | } |
| | | } |
| | | private static final Set<Integer> specialSites = new HashSet<>( |
| | | Arrays.asList(1004,1014,1018,1028,1035)); |
| | | Arrays.asList(1004,1014,1018,1028,1035,2006,2012,2018,2024,2030)); |
| | | public static final Map<Integer, Integer> StaPosition = new HashMap<Integer, Integer>() {{ |
| | | put(1004, 1001);put(1014, 1011);put(1018, 1015);put(1028, 1025);put(1035, 1032); |
| | | put(2006, 2004);put(2012, 2010);put(2018, 2016);put(2024, 2022);put(2030, 2028); |
| | | |
| | | }}; |
| | | public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ |
| | |
| | | buffer[byteIndex] &= ~(1 << bitIndex); // 清零 |
| | | } |
| | | } |
| | | private void updateFlagInDb(String field, boolean value) { |
| | | try { |
| | | BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class); |
| | | |
| | | EntityWrapper<BasRgv> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("rgv_no", slave.getId()); |
| | | |
| | | BasRgv entity = new BasRgv(); |
| | | switch (field) { |
| | | case "pak_mk": entity.setPakMk(value ? "1" : "0"); break; |
| | | case "pak_in": entity.setPakIn(value ? "1" : "0"); break; |
| | | case "pak_out": entity.setPakOut(value ? "1" : "0"); break; |
| | | case "pak_rgv": entity.setPakRgv(value ? "1" : "0"); break; |
| | | case "pak_to_crn":entity.setPakToCrn(value ? "1" : "0"); break; |
| | | case "paking":entity.setPaking(value ? "1" : "0"); break; |
| | | case "pak_all":entity.setPakAll(value ? "1" : "0"); break; |
| | | default: |
| | | log.warn("未知标志位字段: {}", field); |
| | | return; |
| | | } |
| | | |
| | | basRgvService.update(entity, wrapper); |
| | | // log.info("RGV标志位更新成功 [rgv_no:{}] {}={}", slave.getId(), field, value ? "1" : "0"); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("更新RGV标志位异常 [rgv_no:{}] {}={} 错误:{}", slave.getId(), field, value, e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void setPakMk(boolean pakMk) { |
| | | this.PakMk = pakMk; |
| | | updateFlagInDb("pak_mk", pakMk); |
| | | } |
| | | |
| | | /** |
| | | * 读取状态 |
| | | */ |
| | | private void readStatus(){ |
| | | try { |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 38); |
| | | if (result.IsSuccess) { |
| | |
| | | rgvProtocol.setErr10(status3[1]); |
| | | rgvProtocol.setErr11(status3[2]); |
| | | rgvProtocol.setErr12(status3[3]); |
| | | BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); |
| | | |
| | | // BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); |
| | | try { |
| | | // 根据实时信息更新数据库 |