From d1099b48aecf383fcefbe7b5a7ac3c2de0f0793f Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 06 十一月 2024 23:22:03 +0800 Subject: [PATCH] 1、卧理进出片功能已完成开发,与电气调试中,新增磨边队列表 2、卧理新增历史任务表,记录卧理两台设备执行过的历史数据 3、大理片笼opc任务,新增玻璃进笼计算方式:在笼内存储同炉的多片玻璃,笼内玻璃顺序可不按照固定的顺序进笼 4、上片任务初步完成开发,新增历史任务表记录上片的历史信息 --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 95 insertions(+), 4 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java index 4bab88f..5d92126 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java @@ -1,14 +1,23 @@ package com.mes.job; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.kangaroohy.milo.service.MiloService; +import com.mes.common.config.Const; +import com.mes.edgglasstaskqueueinfo.entity.EdgGlassTaskQueueInfo; +import com.mes.edgglasstaskqueueinfo.service.EdgGlassTaskQueueInfoService; +import com.mes.opctask.entity.EdgStorageDeviceTask; +import com.mes.opctask.service.EdgStorageDeviceTaskService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; /** * @Author : zhoush @@ -19,16 +28,98 @@ @Slf4j public class OpcCacheGlassTask { + private static final String EDG_STORAGE_DEVICE_ONE_TASK = "edg_storage_device_one_task"; + + private static final String EDG_STORAGE_DEVICE_TWO_TASK = "edg_storage_device_two_task"; + @Autowired(required = false) MiloService miloService; + @Resource(name = "cacheGlassStartCallback") SubscriptionCallback cacheGlassStartCallback; - @Scheduled(fixedDelay = Long.MAX_VALUE) + @Resource(name = "cacheGlassTestCallback") + SubscriptionCallback cacheGlassTestCallback; + + @Resource + EdgStorageDeviceTaskService edgStorageDeviceTaskService; + @Resource + EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService; + private int sum = 0; + + @Scheduled(fixedDelay = 10) public void startOpcTask() throws Exception { // miloService.subscriptionFromOpcUa(Arrays.asList("C101-WL.S7-1200.plc_task_state", "D101-WL.S7-1200.plc_task_state"), cacheGlassStartCallback); - miloService.subscriptionFromOpcUa(Arrays.asList("mes.dec.edg_storage_device_one_task[1].task_state", "D101-WL.S7-1200.plc_task_state"), cacheGlassStartCallback); - log.info("--------------------s---------------------------"); +// miloService.subscriptionFromOpcUa(Arrays.asList("mes.dec.edg_storage_device_one_task[1].task_state", "D101-WL.S7-1200.plc_task_state"), cacheGlassTestCallback); +// log.info("--------------------s---------------------------"); + EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage("edg_storage_device_one_task"); + try { + if (task == null) { + log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�"); + return; + } + if (task.getTaskState() == sum) { + return; + } + sum = task.getTaskState(); + task.setTaskRunning(sum); + log.info("褰撳墠绗瑊}娆℃墽琛�", task.getTaskRunning()); +// task.setTaskState(task.getTaskRunning()); + edgStorageDeviceTaskService.updateTaskMessage("edg_storage_device_one_task", task); + } catch (Exception e) { + log.info("{}", e.getMessage()); + } + } + +// mesControlWord glassId +// width height +// thickness filmRemove +// deviceControlWord deviceWarnState + + // @Scheduled(fixedDelay = 1000) + public void edgOpcTask() throws Exception { + ReadWriteEntity controlEntity = miloService.readFromOpcUa("A001-MB1.dev.deviceControlWord"); + String deviceControlWord = (String) controlEntity.getValue(); + if ("0".equals(deviceControlWord)) { + ReadWriteEntity messageEntity = miloService.readFromOpcUa("A001-MB1.dev.mesControlWord"); + String messageValue = (String) messageEntity.getValue(); + if ("1".equals(messageValue)) { + List<ReadWriteEntity> list = new ArrayList<>(); + list.add(generateReadWriteEntity("A001-MB1.dev.mesControlWord", 0)); + miloService.writeToOpcWord(list); + } + log.info("褰撳墠鏈敹鍒扮(杈规満鐨勮姹備换鍔�"); + return; + } + EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK); + String glassId = task.getGlassId(); + if (StringUtils.isBlank(glassId)) { + log.info("纾ㄨ竟鍓嶇殑鏋跺瓙娌℃湁鐜荤拑淇℃伅"); + return; + } + //鑾峰彇纾ㄨ竟瀵瑰垪 + EdgGlassTaskQueueInfo edgInfo = edgGlassTaskQueueInfoService.getOne(new LambdaQueryWrapper<EdgGlassTaskQueueInfo>() + .eq(EdgGlassTaskQueueInfo::getGlassId, glassId) + .eq(EdgGlassTaskQueueInfo::getState, Const.GLASS_STATE_NEW)); + if (edgInfo == null) { + log.info("瀵瑰垪琛ㄤ腑鐨勭幓鐠僫d閿欒锛岃妫�鏌ユ暟鎹紝鐜荤拑id锛歿}", glassId); + return; + } + List<ReadWriteEntity> list = new ArrayList<>(); + list.add(generateReadWriteEntity("A001-MB1.dev.mesControlWord", 1)); + list.add(generateReadWriteEntity("A001-MB1.dev.glassId", glassId)); + list.add(generateReadWriteEntity("A001-MB1.dev.width", edgInfo.getWidth())); + list.add(generateReadWriteEntity("A001-MB1.dev.height", edgInfo.getHeight())); + list.add(generateReadWriteEntity("A001-MB1.dev.thickness", edgInfo.getThickness())); + list.add(generateReadWriteEntity("A001-MB1.dev.filmRemove", 0)); + miloService.writeToOpcWord(list); + } + + private ReadWriteEntity generateReadWriteEntity(String identifier, Object value) { + ReadWriteEntity readWriteEntity = new ReadWriteEntity(); + readWriteEntity.setIdentifier(identifier); + readWriteEntity.setValue(value); + return readWriteEntity; } } -- Gitblit v1.8.0