wuyouming666
2024-06-18 ef2f5051979a188b0922e3c30908bedca1cc7c74
绑定架子流程卡号选择显示,和出片优化
6个文件已修改
626 ■■■■ 已修改文件
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json 476 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -24,7 +24,7 @@
// 表单数据
const workstationId = ref('');
const flowCardId = ref('');
const flowCardOptions = ref([]);
const flowCardOptions = ref('[]');
const tableData = reactive([]);
// 方法
const handleSelectionChange = () => {
@@ -44,9 +44,9 @@
    const response = await request.get('unLoadGlass/downWorkStation/getflowCardId');
    console.log(response)
    if (response.code === 200) {
  flowCardOptions.value = response.data
    .filter(item => item !== null)
    .map(item => ({ flowcard_id: item.flow_card_Id }));
  flowCardOptions.value = response.data.filter(item => item !== null)
.map(item => ({ flowcard_id: item.flow_card_id }));
  console.log(flowCardOptions.value);
}
 else {
@@ -225,7 +225,7 @@
          <el-form-item label="架号:" :required="true" style="width: 18vw">
            <el-input v-model="workstationId" autocomplete="off"/>
          </el-form-item>
          <el-form-item label="流程卡号:" :required="true" style="width: 18vw;">
          <el-form-item label="流程卡号:" :required="false" style="width: 18vw;">
          <el-select v-model="flowCardId" placeholder="请选择流程卡号">
            <el-option v-for="item in flowCardOptions" :key="item.flowcard_id" :label="item.flowcard_id" :value="item.flowcard_id" />
          </el-select>
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -8,6 +8,7 @@
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.mapper.DownGlassTaskMapper;
import com.mes.downglassinfo.service.DownGlassTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -22,14 +23,16 @@
 * @author zhoush
 * @since 2024-04-07
 */
@Slf4j
@Service
public class DownGlassTaskServiceImpl extends ServiceImpl<DownGlassTaskMapper, DownGlassTask> implements DownGlassTaskService {
    @Override
    public List<DownGlassTask> getUnloadingTaskState() {
        log.info("出片或直通任务状态为1 的任务");
        QueryWrapper<DownGlassTask> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("task_stauts", 0).eq("task_type", 2).or().eq("task_stauts", 3);
        queryWrapper.eq("task_stauts", 1).eq("task_type", 2).or().eq("task_type", 3);
        return baseMapper.selectList(queryWrapper);
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -9,6 +9,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.mes.common.config.Const;
import com.mes.downstorage.entity.DownStorageCage;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
@@ -110,6 +111,7 @@
        return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 使用 JoinWrappers.lambda 创建联合查询
                .selectAll(DownStorageCageDetails.class) // 选择所有字段
                .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 设置关联条件
                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)
                .orderByAsc(DownStorageCage::getSlot) // 按 slot 字段升序排序
        );
    }
@@ -207,6 +209,7 @@
            anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId);
            anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence);
            anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
            anotherQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN);
            anotherQueryWrapper.last("LIMIT 1");
            return downStorageCageDetailsMapper.selectList(anotherQueryWrapper);
        } else {
@@ -246,6 +249,7 @@
            LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery();
            cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds);
            cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
            cageDetailsQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN);
            log.info("按照流程卡的版图id 版图片序出");
            // Step 4: 查询 down_storage_cage_details 表并返回结果
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -7,6 +7,7 @@
//import com.mes.device.PlcParameterObject;
import com.google.common.base.Functions;
import com.mes.common.config.Const;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassTaskService;
import com.mes.downstorage.entity.DownStorageCage;
@@ -87,7 +88,9 @@
                        .select(DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getGlassId)
                        .leftJoin(DownStorageCageDetails.class, on -> on
                                .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)
                        )
                        .isNull(DownStorageCageDetails::getSlot)
        );
    }
@@ -100,7 +103,8 @@
                        .select(DownStorageCageDetails::getFlowCardId)
                        .leftJoin(DownStorageCageDetails.class, on -> on
                                .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                        .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
                        .isNull(DownStorageCageDetails::getSlot)
                        .eq(DownStorageCage::getEnableState, 1)
                        .groupBy(DownStorageCageDetails::getFlowCardId) // 根据 flowCardId 分组
@@ -125,7 +129,8 @@
                .select(DownStorageCageDetails::getGlassId, DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getId)
                .leftJoin(DownStorageCageDetails.class, on -> on
                        .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                        .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
        );
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -1,6 +1,7 @@
package com.mes.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mes.common.config.Const;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassInfoService;
@@ -80,7 +81,7 @@
//        String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
//        String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
//        String outGlassstate = plcParameterObject.getPlcParameter("A09_glass_status").getValue();
//        String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
//        String MESSendingWord = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
        // String G06RobotTaskRequestWord = plcParameterObject.getPlcParameter("G06RobotTaskRequestWord").getAddress();
@@ -88,7 +89,7 @@
        String glassIdeValue = "NG24041101C002-2-6-1-6";
        String confirmationWrodValue = "1";
        String outGlassstate = "1";
        String confirmationWrodAddress = "1";
        String MESSendingWord = "1";
        String G11RobotTaskRequestWord = "0";
        String G06RobotTaskRequestWord = "0";
        String G13RobotTaskRequestWord = "0";
@@ -102,27 +103,27 @@
//                return;
//            }
//            log.info("2、获取到的请求字为0,将确认字改为0");
//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
//            S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 0);
//            return;
//        }
//        if (!"0".equals(confirmationWrodValue)) {
//            log.info("2、获取到的请求字不为0,将确认字改为0");
//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
//            S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 0);
//            return;
//        }
        if ("1".equals(taskRequestTypeValue)) {
            log.info("3、进片请求,且确认字为0,执行进片任务");
            inTo(glassIdeValue, confirmationWrodAddress);
            inTo(glassIdeValue, MESSendingWord);
        } else if ("2".equals(taskRequestTypeValue)) {
            log.info("3、出片请求,且确认字为0,执行进片任务");
            outTo(confirmationWrodAddress);
            outTo(MESSendingWord);
        } else if ("3".equals(taskRequestTypeValue)) {
            log.info("3、进片和出片都空闲,执行出片任务");
            if (outTo(confirmationWrodAddress)) {
                inTo(glassIdeValue, confirmationWrodAddress);
            if (outTo(MESSendingWord)) {
                inTo(glassIdeValue, MESSendingWord);
            }
@@ -142,10 +143,10 @@
     * 进片任务
     *
     * @param glassId
     * @param confirmationWrodAddress
     * @param MESSendingWord
     * @param
     */
    private void inTo(String glassId, String confirmationWrodAddress) {
    private void inTo(String glassId, String MESSendingWord) {
        log.info("1、按照玻璃id:{}获取玻璃小片信息", glassId);
        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
        if (glassInfo == null) {
@@ -175,7 +176,7 @@
                log.info("6、将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo);
                DownStorageCageDetails details = new DownStorageCageDetails();
                BeanUtils.copyProperties(glassInfo, details);
                details.setState(1);
                details.setState(Const.GLASS_STATE_IN);
                details.setGlassId(glassInfo.getGlassId());
                details.setSlot(item.getSlot());
                details.setDeviceId(item.getDeviceId());
@@ -191,77 +192,71 @@
        }
        log.info("9、发送确认字完成");
        //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
        //S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 1);
    }
    /**
     * 出片任务
     *
     * @param confirmationWrodAddress
     * @param MESSendingWord
     */
    private Boolean outTo(String confirmationWrodAddress) {
    private Boolean outTo(String MESSendingWord) {
        log.info("单片情况根据传入的料架号 查询符合按照版图id和片序出片,并且优先出满架的小片");
        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut1(1, 3);
        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut1(4, 6);
        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
        List<DownStorageCageDetails> list4to6 = downStorageCageDetailsService.CacheOut1(4, 6);
        List<DownStorageCageDetails> list1to6 = downStorageCageDetailsService.CacheOut1(1, 6);
        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut1(1, 6);
        DownStorageCageDetails selectedItem = null;
        String endCell = "";
        // 优先 超出尺寸优先人工出片 人工处理
        if (!list3.isEmpty()) {
            DownStorageCageDetails item3 = list3.get(0);
        if (!list1to6.isEmpty()) {
            DownStorageCageDetails item3 = list1to6.get(0);
            if (item3.getHeight() >= 2500 && item3.getWidth() >= 2660) {
                log.info("人工处理");
                String endcell = "7";
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item3, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
            } else if (!list2.isEmpty() && !list3.isEmpty()) {
                selectedItem = item3;
                endCell = "7";
            } else if (!list4to6.isEmpty() && !list1to6.isEmpty()) {
                log.info("前后端都空闲 优先后端出片并且优先满架");
                DownStorageCageDetails item4 = list2.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item4.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item4, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
                selectedItem = list4to6.get(0);
            }
        }
            // 按照版图id和片序符合前端出片
            else if (!list.isEmpty()) {
        if (selectedItem == null && !list1to3.isEmpty()) {
                log.info("前端出片");
                DownStorageCageDetails item = list.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                // 出到 G06
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
            selectedItem = list1to3.get(0);
        }
                return true;
                // 按照版图id和片序符合后端出片
            } else if (!list2.isEmpty()) {
        if (selectedItem == null && !list4to6.isEmpty()) {
                log.info("后端出片");
                DownStorageCageDetails item2 = list2.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item2.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                // 出到 G11
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item2, "9", endcell, "2");
            selectedItem = list4to6.get(0);
        }
        if (selectedItem != null) {
            DownWorkstation downWorkstation = downWorkstationService.getOne(
                    new LambdaQueryWrapper<DownWorkstation>()
                            .eq(DownWorkstation::getFlowCardId, selectedItem.getFlowCardId())
            );
            endCell = String.valueOf(downWorkstation.getWorkstationId());
            if (endCell.isEmpty()) {
                endCell = "7";
            }
            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(selectedItem, "9", endCell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                //  S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
            LambdaQueryWrapper<DownStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(DownStorageCageDetails::getGlassId, selectedItem.getGlassId());
            DownStorageCageDetails updateDetail = new DownStorageCageDetails();
            updateDetail.setState(Const.GLASS_STATE_OUT);
            downStorageCageDetailsService.update(updateDetail, wrapper);
            log.info("更新出片玻璃的状态为{}", Const.GLASS_STATE_OUT);
            // S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 2);
                return true;
            }
        }
        //如果同时前后端都空闲 优先后端出片并且优先满架
        // 返回结果
        return false;
@@ -291,6 +286,11 @@
                    DownWorkstation downWorkstation1 = downWorkstationService.selectByFlowCardId(downGlassInfo.getFlowCardId());
                    downWorkstationService.updateracksnumber(downGlassInfo.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
                    log.info("更新落架数量");
                    LambdaQueryWrapper<DownGlassTask> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(DownGlassTask::getGlassId, newdownGlassInfo.getGlassId());
                    DownGlassTask updateDetail = new DownGlassTask();
                    updateDetail.setTaskStauts(2);
                    downGlassTaskService.update(updateDetail, wrapper);
                    sequence++; // 递增顺序字段值
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
@@ -1,6 +1,6 @@
{
  "plcAddressBegin": "DB100.0",
  "plcAddressLenght": "142",
  "plcAddressLenght": "230",
  "dataType": "word",
  "parameteInfor": [
    {
@@ -10,238 +10,28 @@
    },
    {
      "codeId": "G04ID",
      "addressIndex": "2",
      "addressLenght": "2"
      "addressIndex": "30",
      "addressLenght": "30"
    },
    {
      "codeId": "G06RobotTaskRequestWord",
      "addressIndex": "4",
      "addressLenght": "2"
    },
    {
      "codeId": "G06ID",
      "addressIndex": "6",
      "addressLenght": "2"
    },
    {
      "codeId": "G11RobotTaskRequestWord",
      "addressIndex": "8",
      "addressLenght": "2"
    },
    {
      "codeId": "G011ID",
      "addressIndex": "10",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "12",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "14",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "16",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "18",
      "addressLenght": "2"
    },
    {
      "codeId": "MESSendingWord",
      "addressIndex": "20",
      "addressLenght": "2"
    },
    {
      "codeId": "InputGrid",
      "addressIndex": "22",
      "addressLenght": "2"
    },
    {
      "codeId": "OutputGrid",
      "addressIndex": "24",
      "addressLenght": "2"
    },
    {
      "codeId": "OutputID",
      "addressIndex": "26",
      "addressLenght": "2"
    },
    {
      "codeId": "FrontOrRearLowerSlice",
      "addressIndex": "28",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "30",
      "addressLenght": "2"
    },
    {
      "codeId": "G06RobotTaskReply",
      "addressIndex": "32",
      "addressLenght": "2"
    },
    {
      "codeId": "G06Rack",
      "addressIndex": "34",
      "addressLenght": "2"
    },
    {
      "codeId": "G11RobotTaskReply",
      "addressIndex": "36",
      "addressLenght": "2"
    },
    {
      "codeId": "G11Rack",
      "addressIndex": "38",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "40",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "42",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "44",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "46",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "48",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "50",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "52",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "54",
      "addressLenght": "2"
    },
    {
      "codeId": "MESTaskState",
      "addressIndex": "56",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "58",
      "addressLenght": "2"
    },
    {
      "codeId": "AlarmState",
      "addressIndex": "60",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm1",
      "codeId": "G06ID",
      "addressIndex": "62",
      "addressLenght": "2"
      "addressLenght": "30"
    },
    {
      "codeId": "Alarm2",
      "codeId": "G11RobotTaskRequestWord",
      "addressIndex": "64",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm3",
      "addressIndex": "66",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm4",
      "addressIndex": "68",
      "addressLenght": "2"
    },
    {
      "codeId": "neirong",
      "addressIndex": "70",
      "addressLenght": "2"
    },
    {
      "codeId": "device",
      "addressIndex": "72",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "74",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "76",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut1",
      "addressIndex": "78",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut2",
      "addressIndex": "80",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut3",
      "addressIndex": "82",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut4",
      "addressIndex": "84",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut5",
      "addressIndex": "86",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut6",
      "addressIndex": "88",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut7",
      "addressIndex": "90",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "92",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "codeId": "G011ID",
      "addressIndex": "94",
      "addressLenght": "2"
      "addressLenght": "30"
    },
    {
      "codeId": "spare",
@@ -259,104 +49,314 @@
      "addressLenght": "2"
    },
    {
      "codeId": "G04ActionState",
      "codeId": "spare",
      "addressIndex": "102",
      "addressLenght": "2"
    },
    {
      "codeId": "G05ActionState",
      "codeId": "MESSendingWord",
      "addressIndex": "104",
      "addressLenght": "2"
    },
    {
      "codeId": "G06ActionState",
      "codeId": "InputGrid",
      "addressIndex": "106",
      "addressLenght": "2"
    },
    {
      "codeId": "G07ActionState",
      "codeId": "OutputGrid",
      "addressIndex": "108",
      "addressLenght": "2"
    },
    {
      "codeId": "G08ActionState",
      "codeId": "OutputID",
      "addressIndex": "110",
      "addressLenght": "2"
    },
    {
      "codeId": "G09ActionState",
      "codeId": "FrontOrRearLowerSlice",
      "addressIndex": "112",
      "addressLenght": "2"
    },
    {
      "codeId": "G10ActionState",
      "codeId": "spare",
      "addressIndex": "114",
      "addressLenght": "2"
    },
    {
      "codeId": "G11ActionState",
      "codeId": "G06RobotTaskReply",
      "addressIndex": "116",
      "addressLenght": "2"
    },
    {
      "codeId": "G12ActionState",
      "codeId": "G06Rack",
      "addressIndex": "118",
      "addressLenght": "2"
    },
    {
      "codeId": "G13ActionState",
      "codeId": "G11RobotTaskReply",
      "addressIndex": "120",
      "addressLenght": "2"
    },
    {
      "codeId": "G04IDS",
      "codeId": "G11Rack",
      "addressIndex": "122",
      "addressLenght": "2"
    },
    {
      "codeId": "G05IDS",
      "codeId": "spare",
      "addressIndex": "124",
      "addressLenght": "2"
    },
    {
      "codeId": "G06IDS",
      "codeId": "spare",
      "addressIndex": "126",
      "addressLenght": "2"
    },
    {
      "codeId": "G07IDS",
      "codeId": "spare",
      "addressIndex": "128",
      "addressLenght": "2"
    },
    {
      "codeId": "G08IDS",
      "codeId": "spare",
      "addressIndex": "130",
      "addressLenght": "2"
    },
    {
      "codeId": "G09IDS",
      "codeId": "spare",
      "addressIndex": "132",
      "addressLenght": "2"
    },
    {
      "codeId": "G10IDS",
      "codeId": "spare",
      "addressIndex": "134",
      "addressLenght": "2"
    },
    {
      "codeId": "G11IDS",
      "codeId": "spare",
      "addressIndex": "136",
      "addressLenght": "2"
    },
    {
      "codeId": "G12IDS",
      "codeId": "spare",
      "addressIndex": "138",
      "addressLenght": "2"
    },
    {
      "codeId": "G13ID",
      "codeId": "MESTaskState",
      "addressIndex": "140",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "142",
      "addressLenght": "2"
    },
    {
      "codeId": "AlarmState",
      "addressIndex": "144",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm1",
      "addressIndex": "146",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm2",
      "addressIndex": "148",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm3",
      "addressIndex": "150",
      "addressLenght": "2"
    },
    {
      "codeId": "Alarm4",
      "addressIndex": "152",
      "addressLenght": "2"
    },
    {
      "codeId": "neirong",
      "addressIndex": "154",
      "addressLenght": "2"
    },
    {
      "codeId": "device",
      "addressIndex": "156",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "158",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "160",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut1",
      "addressIndex": "162",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut2",
      "addressIndex": "164",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut3",
      "addressIndex": "166",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut4",
      "addressIndex": "168",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut5",
      "addressIndex": "170",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut6",
      "addressIndex": "172",
      "addressLenght": "2"
    },
    {
      "codeId": "InOut7",
      "addressIndex": "174",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "176",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "178",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "180",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "182",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "184",
      "addressLenght": "2"
    },
    {
      "codeId": "G04ActionState",
      "addressIndex": "186",
      "addressLenght": "2"
    },
    {
      "codeId": "G05ActionState",
      "addressIndex": "190",
      "addressLenght": "2"
    },
    {
      "codeId": "G06ActionState",
      "addressIndex": "192",
      "addressLenght": "2"
    },
    {
      "codeId": "G07ActionState",
      "addressIndex": "194",
      "addressLenght": "2"
    },
    {
      "codeId": "G08ActionState",
      "addressIndex": "196",
      "addressLenght": "2"
    },
    {
      "codeId": "G09ActionState",
      "addressIndex": "200",
      "addressLenght": "2"
    },
    {
      "codeId": "G10ActionState",
      "addressIndex": "202",
      "addressLenght": "2"
    },
    {
      "codeId": "G11ActionState",
      "addressIndex": "204",
      "addressLenght": "2"
    },
    {
      "codeId": "G12ActionState",
      "addressIndex": "206",
      "addressLenght": "2"
    },
    {
      "codeId": "G13ActionState",
      "addressIndex": "208",
      "addressLenght": "2"
    },
    {
      "codeId": "G04IDS",
      "addressIndex": "210",
      "addressLenght": "2"
    },
    {
      "codeId": "G05IDS",
      "addressIndex": "212",
      "addressLenght": "2"
    },
    {
      "codeId": "G06IDS",
      "addressIndex": "214",
      "addressLenght": "2"
    },
    {
      "codeId": "G07IDS",
      "addressIndex": "216",
      "addressLenght": "2"
    },
    {
      "codeId": "G08IDS",
      "addressIndex": "218",
      "addressLenght": "2"
    },
    {
      "codeId": "G09IDS",
      "addressIndex": "220",
      "addressLenght": "2"
    },
    {
      "codeId": "G10IDS",
      "addressIndex": "222",
      "addressLenght": "2"
    },
    {
      "codeId": "G11IDS",
      "addressIndex": "224",
      "addressLenght": "2"
    },
    {
      "codeId": "G12IDS",
      "addressIndex": "226",
      "addressLenght": "2"
    },
    {
      "codeId": "G13ID",
      "addressIndex": "230",
      "addressLenght": "2"
    }
  ]
}