| | |
| | | import com.zy.acs.conveyor.core.constant.StationStatusField; |
| | | import com.zy.acs.conveyor.core.model.StaProtocol; |
| | | import com.zy.acs.conveyor.core.properties.DevpSlave; |
| | | import com.zy.acs.conveyor.core.service.DevpS7Service; |
| | | import com.zy.acs.conveyor.core.service.StationService; |
| | | import com.zy.acs.conveyor.entity.Devp; |
| | | import com.zy.acs.conveyor.service.DevpService; |
| | | import com.zy.acs.conveyor.utils.SpringContextUtil; |
| | |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | */ |
| | | private void read() throws InterruptedException { |
| | | if (siemensS7Net == null) { |
| | | DevpS7Service devpS7Service = SpringContextUtil.getBean(DevpS7Service.class); |
| | | if (devpS7Service != null) { |
| | | siemensS7Net = devpS7Service.get(slave.getId()); |
| | | } |
| | | log.warn("PLC未连接,跳过读取 [id:{}]", slave.getId()); |
| | | return; |
| | | } |
| | | if (station == null) { |
| | | StationService stationService = SpringContextUtil.getBean(StationService.class); |
| | | if (stationService != null) { |
| | | station = stationService.getStationMap(slave.getId()); |
| | | } |
| | | log.warn("站点未连接,跳过读取 [id:{}]", slave.getId()); |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | // 读取条码 |
| | | readBarcodes(); |
| | | |
| | | // 称重 |
| | | readWeight(); |
| | | |
| | | // 读取外形检测错误 |
| | | readDimensionErrors(); |
| | |
| | | |
| | | if (!Cools.isEmpty(barcode)) { |
| | | StaProtocol staProtocol = station.get(barcodeArr.get(i)); |
| | | if (staProtocol == null) { |
| | | log.warn("站点不存在 [id:{}] [staNo:{}]", slave.getId(), barcodeArr.get(i)); |
| | | continue; |
| | | } |
| | | staProtocol.setBarcode(barcode); |
| | | log.info("料箱码:{}", barcode); |
| | | News.info("料箱码:{}", barcode); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取条码信息 |
| | | */ |
| | | private void readWeight() { |
| | | List<Integer> weightArr = slave.getWeightArr(); |
| | | if (weightArr == null || weightArr.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | OperateResultExOne<byte[]> result = siemensS7Net.Read( |
| | | DeviceField.WEIGHT.buildAddress(), |
| | | (short) (weightArr.size() * DeviceField.WEIGHT.getByteLength())); |
| | | |
| | | if (!result.IsSuccess) { |
| | | log.warn("读取重量失败 [id:{}]", slave.getId()); |
| | | return; |
| | | } |
| | | for (int i = 0; i < weightArr.size(); i++) { |
| | | StaProtocol staProtocol = station.get(weightArr.get(i)); |
| | | if (staProtocol == null) { |
| | | log.warn("站点不存在 [id:{}] [staNo:{}]", slave.getId(), weightArr.get(i)); |
| | | continue; |
| | | } |
| | | double weight = siemensS7Net.getByteTransform().TransSingle(result.Content, i * DeviceField.WEIGHT.getByteLength()); |
| | | staProtocol.setWeight(BigDecimal.valueOf(weight).setScale(4, RoundingMode.HALF_UP).doubleValue()); |
| | | } |
| | | } |
| | | |
| | |
| | | for (int i = 0; i < staNosError.size(); i++) { |
| | | Integer siteId = staNosError.get(i); |
| | | StaProtocol staProtocol = station.get(siteId); |
| | | if (staProtocol == null){ |
| | | log.warn("站点不存在 [id:{}] [staNo:{}]", slave.getId(), staNosError.get(i)); |
| | | continue; |
| | | } |
| | | |
| | | boolean[] status = siemensS7Net.getByteTransform().TransBool( |
| | | content, i * DeviceField.DIMENSION_WORD.getByteLength(), |
| | |
| | | Integer siteId = staNos.get(i); |
| | | StaProtocol staProtocol = station.get(siteId); |
| | | if (staProtocol == null) { |
| | | log.warn("站点不存在 [id:{}] [staNo:{}]", slave.getId(), siteId); |
| | | continue; |
| | | } |
| | | |