| | |
| | | stationResponseParam = new StationResponseParam(); |
| | | stationResponseParam.setStaNo(staNo); |
| | | stationResponseParam.setOccupied(staProtocol.isLoading()); |
| | | stationResponseParam.setInEnable((staProtocol.getAllowPut())); |
| | | stationResponseParam.setOutEnable((staProtocol.getAllowTake())); |
| | | stationResponseParam.setInEnable(staProtocol.getAllowPut()); |
| | | stationResponseParam.setOutEnable(staProtocol.getAllowTake()); |
| | | stationResponseParam.setOnline(staProtocol.isAutoing()); |
| | | list.add(stationResponseParam); |
| | | } |
| | |
| | | vo.setWeight(staProtocol.getWeight() == null ? 0D : staProtocol.getWeight()); |
| | | vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() ? (staProtocol.isLow() ? "低" : "高") : "-"); //高低库位 |
| | | vo.setAllow((staProtocol.getAllowPut() ? "可放" : "不可放") + "/" + (staProtocol.getAllowTake() ? "可取" : "不可取")); |
| | | vo.setBarcode(staProtocol.getBarcode()); |
| | | } |
| | | |
| | | return R.ok().add(list); |
| | |
| | | vo.setWeight(staProtocol.getWeight() == null ? 0D : staProtocol.getWeight()); |
| | | vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() ? (staProtocol.isLow() ? "低" : "高") : "-"); //高低库位 |
| | | vo.setAllow((staProtocol.getAllowPut() ? "可放" : "不可放") + "/" + (staProtocol.getAllowTake() ? "可取" : "不可取")); |
| | | vo.setBarcode(staProtocol.getBarcode()); |
| | | return R.ok().add(vo); |
| | | } |
| | | } |
| | |
| | | if (i == -1) { |
| | | return R.error("此站点无需安全信号"); |
| | | } |
| | | staProtocol.setSafeSignal(new SafeSignal(i, (short) 0, flag)); |
| | | staProtocol.setSafeSignal(new SafeSignal(i, true, flag)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol); |
| | | return R.ok(); |
| | | |
| | |
| | | |
| | | //可取 |
| | | private String allow = "-"; |
| | | |
| | | private String barcode = "-"; |
| | | |
| | | } |
| | |
| | | //是数组所在位置,就是第几个出库口或者第几个入库口 |
| | | private Integer index; |
| | | //是写0还是1 |
| | | private short value; |
| | | private Boolean value; |
| | | //代表写在交互1还是2 |
| | | private Boolean flag; |
| | | |
| | | |
| | | public SafeSignal(Integer index, Short value, Boolean flag) { |
| | | public SafeSignal(Integer index, Boolean value, Boolean flag) { |
| | | this.index = index; |
| | | this.value = value; |
| | | this.flag = flag; |
| | |
| | | @Data |
| | | public class StaProtocol implements Cloneable, Serializable { |
| | | |
| | | private boolean startUpFlag = true; |
| | | |
| | | private Integer plcId; |
| | | |
| | | // 站点编号 |
| | |
| | | continue; |
| | | } |
| | | if (ctuMainService.checkComplete(job.getTaskNo())) { |
| | | staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(takeSta), (short) 1, false)); |
| | | staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(takeSta), true, false)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol); |
| | | job.setUpdateTime(new Date()); |
| | | job.setJobSts(ConveyorStateType.CLEARSIGNAL.getStatus()); |
| | |
| | | if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) { |
| | | String seqNum = ctuMainService.checkStationStatus(putSta.getStaNo()); |
| | | if (seqNum != null) { |
| | | staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(putSta), (short) 1, true)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol); |
| | | |
| | | Job job = jobService.getJobByTaskNo(seqNum); |
| | | if (job != null) { |
| | | News.error("{}:站点:{},存在任务,{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(job)); |
| | | continue; |
| | | } |
| | | |
| | | staProtocol.setSafeSignal(new SafeSignal(devp.getPutSta().indexOf(putSta), true, true)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocol); |
| | | |
| | | |
| | | int workNo = wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type); |
| | | staProtocol.setWorkNo(workNo); |
| | | staProtocol.setStaNo(putSta.getTargetSta()); |
| | |
| | | import com.zy.acs.conveyor.core.properties.SlaveProperties; |
| | | import com.zy.acs.conveyor.core.service.StationService; |
| | | import com.zy.acs.conveyor.entity.Job; |
| | | import com.zy.acs.conveyor.enums.WorkNoTypeType; |
| | | import com.zy.acs.conveyor.service.JobService; |
| | | import com.zy.acs.conveyor.service.WrkLastnoService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | |
| | | @Autowired |
| | | private StationService stationService; |
| | | |
| | | |
| | | @Autowired |
| | | private WrkLastnoService wrkLastnoService; |
| | | |
| | | private final RedisSupport redis = RedisSupport.defaultRedisSupport; |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | Job jobByJobNo = jobService.getJobByJobNo(staProtocol.getWorkNo()); |
| | | if (jobByJobNo == null) { |
| | | News.error("{}:站点:{},找不到任务", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | if (jobByJobNo.getJobSts() != ConveyorStateType.OUTBOUND.getStatus()) { |
| | | if (jobByJobNo.getJobSts() == ConveyorStateType.STARTUP.getStatus()) { |
| | | continue; |
| | | } |
| | | News.error("{}:站点:{},任务状态不对,{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(jobByJobNo)); |
| | | continue; |
| | | } |
| | | // Job jobByJobNo = jobService.getJobByJobNo(staProtocol.getWorkNo()); |
| | | // if (jobByJobNo == null) { |
| | | // News.error("{}:站点:{},找不到任务", config.getMark(), staProtocol.getSiteId()); |
| | | // continue; |
| | | // } |
| | | // if (jobByJobNo.getJobSts() != ConveyorStateType.OUTBOUND.getStatus()) { |
| | | // if (jobByJobNo.getJobSts() == ConveyorStateType.STARTUP.getStatus()) { |
| | | // continue; |
| | | // } |
| | | // News.error("{}:站点:{},任务状态不对,{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(jobByJobNo)); |
| | | // continue; |
| | | // } |
| | | if (staProtocol.getWorkNo() == 0) { |
| | | Job job = initJob(getWorkNo(), staProtocol.getSiteId() + ""); |
| | | staProtocol.setWorkNo(job.getJobNo()); |
| | | staProtocol.setStaNo(inSta.getStaNo()); |
| | | staProtocol.setStartUpFlag(false); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol); |
| | | jobByJobNo.setStartTime(new Date()); |
| | | jobByJobNo.setJobSts(ConveyorStateType.STARTUP.getStatus()); |
| | | if (!jobService.updateById(jobByJobNo)) { |
| | | if (!jobService.insert(job)) { |
| | | News.info("{},启动入库:{},{}", config.getMark(), staProtocol.getWorkNo(), staProtocol.getStaNo()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | } |
| | | |
| | | private Job initJob(Integer workNo, String staNo) { |
| | | Job job = new Job(); |
| | | job.setStaNo(staNo); |
| | | job.setJobNo(workNo); |
| | | job.setJobSts(ConveyorStateType.STARTUP.getStatus()); |
| | | job.setStartTime(new Date()); |
| | | return job; |
| | | } |
| | | |
| | | private Integer getWorkNo() { |
| | | return wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type); |
| | | } |
| | | } |
| | |
| | | SafeSignal safeSignal = staProtocol.getSafeSignal(); |
| | | |
| | | int baseOffset = 0; |
| | | short[] array = new short[6]; |
| | | array[0] = (short) 1; |
| | | array[1] = (short) 0; |
| | | array[2] = (short) 0; |
| | | array[5] = (short) 0; |
| | | boolean[] array = new boolean[6]; |
| | | array[0] = true; |
| | | array[1] = false; |
| | | array[2] = false; |
| | | array[5] = false; |
| | | if (safeSignal.getFlag()) { |
| | | array[3] = (short) 0; |
| | | array[3] = false; |
| | | array[4] = safeSignal.getValue(); |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | } else { |
| | | array[3] = safeSignal.getValue(); |
| | | array[4] = (short) 0; |
| | | array[4] = false; |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + 2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | } |
| | | String flagAddr = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | |
| | | staProtocol.setSegApply(status2[2]); |
| | | staProtocol.setApplyErr(status2[3]); |
| | | |
| | | if (!status2[1] && !status[0]) { |
| | | staProtocol.setStartUpFlag(true); |
| | | } |
| | | |
| | | for (int i = 0; i < 8; i++){ |
| | | if (status0[i+8]!=status2[i]){ |
| | | log.info("状态码不一致 [id:{}] [i:{}] [status0:{}] [status2:{}]", slave.getId(), i, status0[i], status2[i]); |
| | |
| | | content, seg[0] + i * DeviceField.BARCODE.getByteLength()); |
| | | String barcode = siemensS7Net.getByteTransform().TransString( |
| | | content, seg[1] + i * DeviceField.BARCODE.getByteLength(), |
| | | DeviceField.BARCODE.getByteLength() - seg[1], "UTF-8"); |
| | | DeviceField.BARCODE.getByteLength()-seg[1] , "UTF-8").trim(); |
| | | |
| | | if (!Cools.isEmpty(barcode) && staNo != 0) { |
| | | if (!Cools.isEmpty(barcode) && !barcode.contains("Default") && staNo != 0) { |
| | | StaProtocol staProtocol = station.get(staNo); |
| | | if (staProtocol == null) { |
| | | log.warn("扫码站点不存在 [id:{}] [staNo:{}]", slave.getId(), staNo); |
| | | continue; |
| | | } |
| | | staProtocol.setBarcode(barcode); |
| | | News.info("料箱码:{}", barcode); |
| | | //News.info("料箱码:{}", barcode); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (!Cools.isEmpty(weight) && staNo != 0) { |
| | | StaProtocol staProtocol = station.get(staNo); |
| | | if (staProtocol == null) { |
| | | log.warn("称重站点不存在 [id:{}] [staNo:{}]", slave.getId(), staNo); |
| | | log.warn(" [id:{}] [staNo:{}]", slave.getId(), staNo); |
| | | continue; |
| | | } |
| | | staProtocol.setWeight(BigDecimal.valueOf(weight).setScale(4, RoundingMode.HALF_UP).doubleValue()); |
| | |
| | | staProtocolTake.setOutComplete(status2[4]); |
| | | // |
| | | if (status[3]) { |
| | | staProtocolPut.setSafeSignal( new SafeSignal(i, (short) 0, true)); |
| | | staProtocolPut.setSafeSignal(new SafeSignal(i, false, true)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocolPut); |
| | | News.info("安全交互信号复位 [id:{}] [staNo:{}]", slave.getId(), staProtocolPut.getSiteId()); |
| | | } |
| | | if (status2[4]) { |
| | | staProtocolTake.setSafeSignal(new SafeSignal(i, (short) 0, false)); |
| | | staProtocolTake.setSafeSignal(new SafeSignal(i, false, false)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, staProtocolTake); |
| | | News.info("安全交互信号复位 [id:{}] [staNo:{}]", slave.getId(), staProtocolPut.getSiteId()); |
| | | } |
| | |
| | | path: /stock/out/cv/logs |
| | | |
| | | wms: |
| | | url: 127.0.0.1:8081 |
| | | url: 127.0.0.1:8082 |
| | | apply: /rsf-open-api/rcs/api/open/location/allocate |
| | | ctu: |
| | | url: 127.0.0.1:8088 |
| | |
| | | <th>重量信号</th> |
| | | <th>空满信号</th> |
| | | <th>目标站</th> |
| | | <th>可放/可取</th> |
| | | <th>条码</th> |
| | | <th>安全信号</th> |
| | | <!-- <th>高低信号</th>--> |
| | | </tr> |
| | | </thead> |
| | |
| | | <td>${site.weight || '--'}</td> |
| | | <td>${site.emptyMk || '--'}</td> |
| | | <td>${site.staNo || '--'}</td> |
| | | <td>${site.barcode || '--'}</td> |
| | | <td>${site.allow || '--'}</td> |
| | | </tr> |
| | | `; |