ZengTao
2025-10-13 1bcf1bbb327a3baf494dd8a7b624983e3294a015
1、通讯配置修改
1个文件已添加
2个文件已修改
1个文件已删除
216 ■■■■■ 已修改文件
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7Data.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java
@@ -13,9 +13,17 @@
 */
@Configuration
public class S7Config {
    @Bean
    public S7Serializer s7Serializer() {
        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "10.153.19.192");
    @Bean(name = "s7SerializerSPOne")
    public S7Serializer s7SerializerSPOne() {
        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.86");
//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
        return S7Serializer.newInstance(s7PLC);
    }
    @Bean(name = "s7SerializerSPTwo")
    public S7Serializer s7SerializerSPTwo() {
        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.86");
//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
        return S7Serializer.newInstance(s7PLC);
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -15,13 +15,14 @@
import com.mes.pp.service.OptimizeProjectService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.s7.entity.S7Data;
import com.mes.s7.entity.S7DataSP;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -56,8 +57,13 @@
    @Resource
    private OptimizeProjectService optimizeProjectService;
    @Autowired(required = false)
    S7Serializer s7Serializer;
    @Autowired
    @Qualifier("s7SerializerSP1")
    private S7Serializer s7SerializerSPOne;
    @Autowired
    @Qualifier("s7SerializerSP1")
    private S7Serializer s7SerializerSPTwo;
    private static final List<Integer> LOAD_STATION_01 = Arrays.asList(101, 102);
    private static final List<Integer> LOAD_STATION_02 = Arrays.asList(103, 104);
@@ -80,7 +86,7 @@
        opcLoadGlassChild(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE);
    }
    //    @Scheduled(fixedDelay = 5000)
//    @Scheduled(fixedDelay = 5000)
    public void opcLoadGlassTwo() {
        opcLoadGlassChild(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE);
    }
@@ -90,7 +96,7 @@
        opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE);
    }
    //    @Scheduled(fixedDelay = 5000)
//    @Scheduled(fixedDelay = 5000)
    public void opcLoadGlassTwoFinish() {
        opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE);
    }
@@ -105,7 +111,10 @@
        for (Engineering engineering : engineerings) {
            Integer count = upPattenUsageMapper.selectCount(new LambdaQueryWrapper<UpPattenUsage>()
                    .eq(UpPattenUsage::getEngineeringId, engineering.getEngineerId()).ne(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS));
            if (count == 0) {
            OptimizeProject project = optimizeProjectService.getOne(new LambdaUpdateWrapper<OptimizeProject>()
                    .eq(OptimizeProject::getProjectNo, 200)
                    .eq(OptimizeProject::getState, engineering.getEngineerId()));
            if (count == 0 && project != null) {
                engineeringMapper.update(null, new LambdaUpdateWrapper<Engineering>().set(Engineering::getState, Const.ENGINEERING_SUCCESS)
                        .eq(Engineering::getEngineerId, engineering.getEngineerId()));
                optimizeProjectService.update(null, new LambdaUpdateWrapper<OptimizeProject>().set(OptimizeProject::getState, 300)
@@ -115,7 +124,13 @@
    }
    private void opcLoadGlassChild(String tableName, Integer deviceId) {
        S7Data S7DataSP1 = s7Serializer.read(S7Data.class);
        S7DataSP s7DataSP = new S7DataSP();
        if (tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)) {
            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
        } else {
            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
        }
        log.info("{}上片线,当前上片位信息:{}", deviceId, s7DataSP);
        Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>()
                .eq(Engineering::getState, Const.ENGINEERING_RUNNING).eq(Engineering::getStationCell, deviceId));
        if (null == engineering) {
@@ -123,15 +138,12 @@
            return;
        }
        //任务暂停
        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
        ;
        if ("0".equals(S7DataSP1.getInkageState().toString())) {
//        if (0 == task.getInkageState()) {
            log.info("{}上片线,处于离线状态:{},结束本地上片请求", deviceId, task.getInkageState());
        S7DataSP task = new S7DataSP();
        if ("0".equals(s7DataSP.getInkageState().toString())) {
            log.info("{}上片线,处于离线状态:{},结束本地上片请求", deviceId, s7DataSP.getInkageState().toString());
            return;
        }
        if (S7DataSP1.getTaskRunning().toString().equals(Const.ENGINEERING_RUNNING)) {
//        if (task.getTaskRunning().equals(Const.ENGINEERING_RUNNING)) {
        if (s7DataSP.getTaskRunning()) {
            log.info("{}上片线,有正在执行的任务,结束本地上片请求", deviceId);
            return;
        }
@@ -166,11 +178,21 @@
            int number = Math.min(twoLoadStation.getRemainQuantity(), usageVOS.size());
            //生成上片任务
            task.setTotalCount(number);
            task.setTaskRunning(Const.ENGINEERING_RUNNING);
            task.setTaskRunning(Boolean.TRUE);
            task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
            task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
            task.setSlot(loadStation.get(1));
            loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
            S7DataSP s7DataSPWrite = new S7DataSP();
            s7DataSPWrite.setTotalCount(number);
            s7DataSPWrite.setTaskRunning(Boolean.TRUE);
            s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
            s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
            s7DataSPWrite.setSlot(loadStation.get(1));
            if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
                s7SerializerSPOne.write(s7DataSPWrite);
            } else {
                s7SerializerSPTwo.write(s7DataSPWrite);
            }
            saveHistoryTask(task, deviceId);
            return;
        }
@@ -182,38 +204,51 @@
        //生成上片任务
        int number = Math.min(oneLoadStation.getRemainQuantity(), usageVOS.size());
        task.setTotalCount(number);
        task.setTaskRunning(Const.ENGINEERING_RUNNING);
        task.setTaskRunning(Boolean.TRUE);
        task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
        task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
        task.setSlot(loadStation.get(0));
        loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
        S7DataSP s7DataSPWrite = new S7DataSP();
        s7DataSPWrite.setTotalCount(number);
        s7DataSPWrite.setTaskRunning(Boolean.TRUE);
        s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
        s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
        s7DataSPWrite.setSlot(loadStation.get(0));
        if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
            s7SerializerSPOne.write(s7DataSPWrite);
        } else {
            s7SerializerSPTwo.write(s7DataSPWrite);
        }
        saveHistoryTask(task, deviceId);
    }
    private void opcLoadGlassFinishChid(String tableName, Integer deviceId) {
        S7Data S7DataSP1 = s7Serializer.read(S7Data.class);
        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
        if (S7DataSP1.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) {
//        if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) {
        S7DataSP s7DataSP = new S7DataSP();
        if (tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)) {
            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
        } else {
            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
        }
        log.info("{}上片线,当前上片位信息:{}", deviceId, s7DataSP);
        if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) {
            log.info("无任务,结束");
            return;
        }
        if (Integer.parseInt(S7DataSP1.getTaskState().toString()) <= 1) {
//        if (task.getTaskState() <= 1) {
        if (Integer.parseInt(s7DataSP.getTaskState().toString()) <= 1) {
            log.info("任务正在执行,结束");
            return;
        }
        //获取任务完成情况
//         已完成数量  破损数量
        Integer finishCount = Integer.parseInt(S7DataSP1.getFinishCount().toString());
        Integer damageCount = Integer.parseInt(S7DataSP1.getDamageCount().toString());
//        Integer finishCount = task.getFinishCount();
//        Integer damageCount = task.getDamageCount();
        Integer finishCount = Integer.parseInt(s7DataSP.getFinishCount().toString());
        Integer damageCount = Integer.parseInt(s7DataSP.getDamageCount().toString());
        Integer slot = Integer.parseInt(s7DataSP.getSlot().toString());
        //更新当前架子上的原片剩余情况
        rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>()
                .inSql("slot", "select slot from raw_glass_storage_station where enable_state = 1")
                .eq("slot", task.getSlot())
//                .eq("slot", task.getSlot())
                .eq("slot", slot)
                .eq("state", Const.RAW_GLASS_STATE_IN)
                .setSql("remain_quantity = remain_quantity - " + (finishCount + damageCount)));
        //更新工程下的原片数量 todo:sql待优化
@@ -225,12 +260,17 @@
                    .set(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS));
        }
        //任务表数据情况
        task.setTaskRunning(0);
        task.setTotalCount(0);
        task.setRawGlassWidth(0);
        task.setRawGlassHeight(0);
        task.setSlot(0);
        loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
        S7DataSP s7DataSPWrite = new S7DataSP();
        s7DataSPWrite.setTaskRunning(Boolean.FALSE);
        s7DataSPWrite.setTotalCount(0);
        s7DataSPWrite.setRawGlassWidth(0);
        s7DataSPWrite.setRawGlassHeight(0);
        s7DataSPWrite.setSlot(0);
        if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
            s7SerializerSPOne.write(s7DataSPWrite);
        } else {
            s7SerializerSPTwo.write(s7DataSPWrite);
        }
        loadGlassDeviceTaskHistoryService.update(new LambdaUpdateWrapper<LoadGlassDeviceTaskHistory>()
                .set(LoadGlassDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_SUCCESS)
                .eq(LoadGlassDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
@@ -238,7 +278,7 @@
        );
    }
    private boolean saveHistoryTask(LoadGlassDeviceTask task, Integer deviceId) {
    private boolean saveHistoryTask(S7DataSP task, Integer deviceId) {
        LoadGlassDeviceTaskHistory taskHistory = new LoadGlassDeviceTaskHistory();
        BeanUtils.copyProperties(task, taskHistory);
        taskHistory.setStation(deviceId);
@@ -261,4 +301,4 @@
        return flag && details.getRemainQuantity() > 0;
    }
}
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7Data.java
File was deleted
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java
New file
@@ -0,0 +1,44 @@
package com.mes.s7.entity;
import com.github.xingshuangs.iot.common.enums.EDataType;
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
import lombok.Data;
/**
 * @Author : zhoush
 * @Date: 2025/4/30 14:19
 * @Description:
 */
@Data
public class S7DataSP {
    @S7Variable(address = "DB19.14", type = EDataType.UINT16)
    private Integer taskState;
    @S7Variable(address = "DB19.18", type = EDataType.UINT16)
    private Integer damageCount;
    @S7Variable(address = "DB19.20", type = EDataType.UINT16)
    private Integer rawGlassWidth;
    @S7Variable(address = "DB19.22", type = EDataType.UINT16)
    private Integer rawGlassHeight;
    @S7Variable(address = "DB19.24", type = EDataType.UINT16)
    private Integer slot;
    @S7Variable(address = "DB19.26", type = EDataType.UINT16)
    private Integer totalCount;
    @S7Variable(address = "DB19.28", type = EDataType.UINT16)
    private Integer finishCount;
    @S7Variable(address = "DB19.16.0", type = EDataType.BOOL)
    private Boolean taskRunning;
    @S7Variable(address = "DB19.30", type = EDataType.UINT16)
    private Integer inkageState;
}