wu
2024-11-26 fddf1c716af76c2968e08ce11895eaa1c26319a5
增加翻译文件和bug解决
20个文件已修改
1048 ■■■■■ 已修改文件
Albania_Mes-ui/src/api/home.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/configuration/Sign.json 464 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/lang/locales/en-US.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/lang/locales/zh-CN.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/views/home/index.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 109 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/config.properties 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Albania_Mes-ui/src/api/home.js
@@ -354,9 +354,9 @@
    })
}
export function SelectGlassInfo(width,height,thickness,films) {
export function SelectGlassInfo(width,height,thickness,films,tier) {
    return request({
        url: '/home/SelectGlassInfo?width='+width+'&height='+height+'&thickness='+thickness+'&films='+films,
        url: '/home/SelectGlassInfo?width='+width+'&height='+height+'&thickness='+thickness+'&films='+films+'&tier='+tier,
        method: 'post',
        data:""
    })
@@ -447,6 +447,7 @@
//手动界面
export function writeValue(address,value,type) {
    return request({
        url: '/home/writeValue?address='+address+'&value='+value+'&type='+type,
        method: 'get',
        data:""
Albania_Mes-ui/src/configuration/Sign.json
@@ -1,16 +1,7 @@
{
  "sign": [
    {
      "name": "Sr.Dec",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A01减速光电"
    },
    {
      "name": "Sr.LowE",
      "name": "Sr.Low",
      "value": "1",
      "state": "1",
      "type": "1",
@@ -19,139 +10,141 @@
      "name1":"LOW-E检测光电"
    },
    {
      "name": "Sr.OutDec",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"出口减速光电"
    },
    {
      "name": "Sr.OutPos",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A01出口到位光电"
      "name1":"出口到位光电"
    },
    {
      "name": "Sr.InToX",
      "name": "Sr.XCheck",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02X轴入口减速光电"
      "name1":"X轴寻边"
    },
    {
      "name": "Sr.GaToXIn",
      "name": "Sr.XDec",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02X轴入口测量光电"
      "name1":"X轴出口减速"
    },
    {
      "name": "Sr.DecToXOut",
      "name": "Sr.XPos",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02X轴出口减速光电"
      "name1":"X轴出口到位"
    },
    {
      "name": "Sr.DecToXOut",
      "name": "Sr.H1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02X轴出口减速光电"
      "name1":"Y轴高度感应1"
    },
    {
      "name": "Sr.GaToY1",
      "name": "Sr.H2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴粗定位1(最低位)"
      "name1":"Y轴高度感应2"
    },
    {
      "name": "Sr.GaToY2",
      "name": "Sr.H3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴粗定位2"
      "name1":"Y轴高度感应3"
    },
    {
      "name": "Sr.GaToY3",
      "name": "Sr.H4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴粗定位3"
      "name1":"Y轴高度感应4"
    },
    {
      "name": "Sr.GaToY4",
      "name": "Sr.YChecK",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴粗定位4(最高位)"
      "name1":"Y轴寻边"
    },
    {
      "name": "Sr.DecToY",
      "name": "Sr.YDec",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴减速光电"
      "name1":"Y轴高度减速"
    },
    {
      "name": "Sr.GaToY",
      "name": "Sr.travellimitTop",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴测量光电"
      "name1":"上极限"
    },
    {
      "name": "Sr.HomeToY",
      "name": "Sr.travellimitBottom",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴原点"
      "name1":"下极限"
    },
    {
      "name": "SQ.LimitSwitchTop",
      "name": "SQ.YZero",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴上极限"
      "name1":"Y轴原点"
    },
    {
      "name": "SQ.LimitSwitchBottom",
      "name": "SQ.Travellimitleft",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"A02Y轴下极限"
    },
    {
      "name": "Sr.Travellimitleft",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01左极限"
      "name1":"左极限"
    },
    {
      "name": "Sr.PosToLeft",
@@ -160,7 +153,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01左到位"
      "name1":"左到位"
    },
    {
      "name": "Sr.DecToLeft",
@@ -169,7 +162,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01左减速"
      "name1":"左减速"
    },
    {
      "name": "Sr.DecToRight",
@@ -178,7 +171,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01右减速"
      "name1":"右减速"
    },
    {
      "name": "Sr.PosToRight",
@@ -187,7 +180,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01右到位"
      "name1":"右到位"
    },
    {
      "name": "Sr.TravellimitRight",
@@ -196,7 +189,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01右极限"
      "name1":"右极限"
    },
    {
      "name": "SQ.LimitSwitch+",
@@ -205,7 +198,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01大车正极限"
      "name1":"大车正极限"
    },
    {
      "name": "SQ.LimitSwitch-",
@@ -214,7 +207,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01大车负极限"
      "name1":"大车负极限"
    },
    {
      "name": "Sr.HomeToTurn",
@@ -223,7 +216,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01翻转原点"
      "name1":"翻转原点"
    },
    {
      "name": "SQ.LimitSwitchToTurnTop",
@@ -232,7 +225,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01翻转上极限"
      "name1":"翻转上极限"
    },
    {
      "name": "SQ.LimitSwitchToTurnBottom",
@@ -241,7 +234,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01翻转下极限"
      "name1":"翻转下极限"
    },
    {
      "name": "oilPump",
@@ -250,52 +243,34 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"B01油泵输出"
      "name1":"油泵输出"
    },
    {
      "name": "Sr.Travellimitleft",
      "name": "Sr.InOrigin",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01左极限"
      "name1":"小车原点"
    },
    {
      "name": "Sr.TravellimitRight",
      "name": "Sr.LimitSwitch+",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01右极限"
      "name1":"小车正极限"
    },
    {
      "name": "Sr.Home",
      "name": "Sr.LimitSwitch-",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01小车原点"
    },
    {
      "name": "SQ.LimitSwitch+",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01小车正极限"
    },
    {
      "name": "SQ.LimitSwitch-",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01小车负极限"
      "name1":"小车负极限"
    },
    {
      "name": "biBasPosBlowUp1",
@@ -304,7 +279,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点1"
      "name1":"吹气抬起气缸原点1"
    },
    {
      "name": "biBasPosBlowUp2",
@@ -313,7 +288,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点2"
      "name1":"吹气抬起气缸原点2"
    },
    {
      "name": "biBasPosBlowUp3",
@@ -322,7 +297,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点3"
      "name1":"吹气抬起气缸原点3"
    },
    {
      "name": "biBasPosBlowUp4",
@@ -331,7 +306,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点4"
      "name1":"吹气抬起气缸原点4"
    },
    {
      "name": "biBasPosGlassUp1",
@@ -340,7 +315,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01玻璃抬起气缸原点1"
      "name1":"玻璃抬起气缸原点1"
    },
    {
      "name": "biBasPosGlassUp2",
@@ -349,7 +324,43 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01玻璃抬起气缸原点2"
      "name1":"玻璃抬起气缸原点2"
    },
    {
      "name": "biWorkBlowSr1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应1"
    },
    {
      "name": "biWorkBlowSr2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应2"
    },
    {
      "name": "biWorkBlowSr3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应3"
    },
    {
      "name": "biWorkBlowSr4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应4"
    },
    {
      "name": "biWorkPosBlowUp1",
@@ -358,7 +369,43 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点1"
      "name1":"吹气抬起气缸动点1"
    },
    {
      "name": "biWorkBlowSr2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸动点2"
    },
    {
      "name": "biWorkBlowSr3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸动点3"
    },
    {
      "name": "biWorkBlowSr4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸动点4"
    },
    {
      "name": "biWorkPosBlowUp1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸动点1"
    },
    {
      "name": "biWorkPosBlowUp2",
@@ -367,43 +414,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点2"
    },
    {
      "name": "biWorkPosBlowUp3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点3"
    },
    {
      "name": "biWorkPosBlowUp4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起气缸原点4"
    },
    {
      "name": "biWorkPosGlassUp1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01玻璃抬起气缸原点1"
    },
    {
      "name": "biWorkPosGlassUp2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01玻璃抬起气缸原点2"
      "name1":"吹气抬起气缸动点2"
    },
    {
      "name": "boWorkPosBlow",
@@ -412,7 +423,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气输出"
      "name1":"吹气输出"
    },
    {
      "name": "boWorkPosBlowUp",
@@ -421,7 +432,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01吹气抬起输出"
      "name1":"吹气抬起输出"
    },
    {
      "name": "boWorkPosGlassUp",
@@ -430,34 +441,16 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C01玻璃抬起输出"
      "name1":"玻璃抬起输出"
    },
    {
      "name": "Sr.Travellimitleft",
      "name": "Sr.InOrigin",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02左极限"
    },
    {
      "name": "Sr.TravellimitRight",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02右极限"
    },
    {
      "name": "Sr.Home",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02小车原点"
      "name1":"小车原点"
    },
    {
      "name": "SQ.LimitSwitch+",
@@ -466,7 +459,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02小车正极限"
      "name1":"小车正极限"
    },
    {
      "name": "SQ.LimitSwitch-",
@@ -475,43 +468,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02小车负极限"
    },
    {
      "name": "biBasPosBlowUp1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点1"
    },
    {
      "name": "biBasPosBlowUp2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点2"
    },
    {
      "name": "biBasPosBlowUp3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点3"
    },
    {
      "name": "biBasPosBlowUp4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点4"
      "name1":"小车负极限"
    },
    {
      "name": "biBasPosGlassUp1",
@@ -520,17 +477,90 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02玻璃抬起气缸原点1"
      "name1":"吹气抬起气缸原点1"
    },
    {
      "name": "iBasPosGlassUp2",
      "name": "biBasPosBlowUp2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02玻璃抬起气缸原点2"
      "name1":"吹气抬起气缸原点2"
    },
    {
      "name": "biBasPosBlowUp3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸原点3"
    },
    {
      "name": "biBasPosBlowUp4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气抬起气缸原点4"
    },
    {
      "name": "biBasPosGlassUp1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"玻璃抬起气缸原点1"
    },
    {
      "name": "biBasPosGlassUp2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"玻璃抬起气缸原点2"
    },
    {
      "name": "biWorkBlowSr1",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应1"
    },
    {
      "name": "biWorkBlowSr2",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应2"
    },
    {
      "name": "biWorkBlowSr3",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应3"
    },
    {
      "name": "biWorkBlowSr4",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"吹气感应4"
    },
    {
      "name": "biWorkPosBlowUp1",
      "value": "1",
@@ -538,7 +568,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点1"
      "name1":"吹气抬起气缸动点1"
    },
    {
      "name": "biWorkPosBlowUp2",
@@ -547,7 +577,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点2"
      "name1":"吹气抬起气缸动点2"
    },
    {
      "name": "biWorkPosBlowUp3",
@@ -556,7 +586,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点3"
      "name1":"吹气抬起气缸动点3"
    },
    {
      "name": "biWorkPosBlowUp4",
@@ -565,7 +595,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起气缸原点4"
      "name1":"吹气抬起气缸动点4"
    },
    {
      "name": "biWorkPosGlassUp1",
@@ -574,7 +604,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02玻璃抬起气缸原点1"
      "name1":"玻璃抬起气缸动点1"
    },
    {
      "name": "biWorkPosGlassUp2",
@@ -583,7 +613,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02玻璃抬起气缸原点2"
      "name1":"玻璃抬起气缸动点2"
    },
    {
      "name": "boWorkPosBlow",
@@ -592,7 +622,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气输出"
      "name1":"吹气输出"
    },
    {
      "name": "boWorkPosBlowUp",
@@ -601,7 +631,7 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02吹气抬起输出"
      "name1":"吹气抬起输出"
    },
    {
      "name": "boWorkPosGlassUp",
@@ -610,48 +640,12 @@
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"C02玻璃抬起输出"
    },
    {
      "name": "Red",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"红灯"
    },
    {
      "name": "Yellow",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"黄灯"
    },
    {
      "name": "Green",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"绿灯"
    },
    {
      "name": "FootSwitch",
      "value": "1",
      "state": "1",
      "type": "1",
      "page": "1",
      "unit":"I10.0",
      "name1":"脚踏开关"
      "name1":"玻璃抬起输出"
    }
  ],
  "address": [
    {
      "name": "DB101.0.0",
      "name": "DB12.0.0",
      "count": 71
    }
  ]
Albania_Mes-ui/src/lang/locales/en-US.json
@@ -27,7 +27,7 @@
  "'No Of Cage":"'No Of Cage",
  "Finish No":"Finish No",
  "Mate No":"Mate No",
  "Cage GlassNumber":"在笼数量",
  "Cage GlassNumber":"Cage GlassNumber",
  "Order":"Order",
  "Select":"Select",
  "GlassType":"GlassType",
@@ -44,10 +44,12 @@
  "Height":"Height",
  "Thickness":"Thickness",
  "Clear":"Clear",
  "MeasureNumber":"MeasureNumber",
  "MeasureNumber":"NemainingNumber",
  "results":"results",
  "start work":"start work",
  "stop work":"stop work",
  "Start bit":"Start bit",
  "Target bit":"Target bit",
  "Line":"Line",
  "Please select a route":"Please select a route",
  "This route already has a task":"This route already has a task",
Albania_Mes-ui/src/lang/locales/zh-CN.json
@@ -43,11 +43,12 @@
  "Height":"高",
  "Thickness":"厚度",
  "Clear":"清除",
  "MeasureNumber":"测量数量",
  "MeasureNumber":"剩余数量",
  "results":"结果",
  "start work":"开始上片",
  "stop work":"暂停上片",
  "Start bit":"起始位",
  "Target bit":"目标位",
  "Line":"线路",
  "Please select a route":"请选择线路",
  "This route already has a task":"此路线已存在任务",
@@ -55,8 +56,8 @@
  "Save":"保存",
  "Select file":"选择文件",
  "ip2":"192.168.10.2",
  "ip":"localhost",
  "ip":"192.168.10.2",
  "ip2":"localhost",
  "systemTitle": "登录系统",
  "usernamePlaceholder": "请输入用户名",
  "passwordPlaceholder": "请输入密码",
Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue
@@ -181,13 +181,13 @@
                  @keyup.enter.native="writeValue(plcSigns[19])" @focus="refresh()" @blur="writeValue(plcSigns[19])"></el-input>m/min
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[20])">Y轴定位设置1</el-button>
                <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[20])">Y轴定位设置1</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[21].value" @focus="refresh()" @blur="writeValue(plcSigns[21])"
                  @keyup.enter.native="writeValue(plcSigns[21])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[22])">Y轴定位设置2</el-button>
                <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[22])">Y轴定位设置2</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[23].value" @focus="refresh()" @blur="writeValue(plcSigns[23])"
                  @keyup.enter.native="writeValue(plcSigns[23])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
@@ -504,6 +504,8 @@
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[89])">大车原点设定</el-button>
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[90])">油泵自动维护</el-button>
              </div>
              <div>
@@ -635,70 +637,70 @@
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[109])">1#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[109].value" @focus="refresh()" @blur="writeValue(plcSigns[109])"
                  @keyup.enter.native="writeValue(plcSigns[109])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[109])">2#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[1].value" @focus="refresh()" @blur="writeValue(plcSigns[18])"
                  @keyup.enter.native="writeValue(plcSigns[104])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                入片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[1].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[110])"
                <el-input style="width: 30%;" v-model="plcSigns[110].value" @focus="refresh()" @blur="writeValue(plcSigns[110])"
                  @keyup.enter.native="writeValue(plcSigns[110])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[111])">2#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[112].value" @focus="refresh()" @blur="writeValue(plcSigns[112])"
                  @keyup.enter.native="writeValue(plcSigns[1112])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                入片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[113].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[113])"
                  @keyup.enter.native="writeValue(plcSigns[113])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                出片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[1].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[111])"
                  @keyup.enter.native="writeValue(plcSigns[111])"
                出片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[114].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[114])"
                  @keyup.enter.native="writeValue(plcSigns[114])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
            </div>
            <div>
              <div>
                C01行走高速<el-input type="text" style="width: 30%;" v-model="plcSigns[112].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[112])"
                  @keyup.enter.native="writeValue(plcSigns[112])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
              </div>
              <div>
                C01行走手动<el-input style="width: 30%;" v-model="plcSigns[113].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[113])"
                  @keyup.enter.native="writeValue(plcSigns[113])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
              </div>
              <div>
                最大取片格子<el-input style="width: 30%;" v-model="plcSigns[114].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[114])"
                  @keyup.enter.native="writeValue(plcSigns[114])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                最小取片格子<el-input style="width: 30%;" v-model="plcSigns[115].value"
                C01行走高速<el-input type="text" style="width: 30%;" v-model="plcSigns[115].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[115])"
                  @keyup.enter.native="writeValue(plcSigns[115])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
              </div>
              <div>
                C01行走手动<el-input style="width: 30%;" v-model="plcSigns[116].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[116])"
                  @keyup.enter.native="writeValue(plcSigns[116])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
              </div>
              <div>
                最大取片格子<el-input style="width: 30%;" v-model="plcSigns[117].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[117])"
                  @keyup.enter.native="writeValue(plcSigns[117])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[116])" >3#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[117].value" @focus="refresh()" @blur="writeValue(plcSigns[117])"
                  @keyup.enter.native="writeValue(plcSigns[117])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                入片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[118].value"
                最小取片格子<el-input style="width: 30%;" v-model="plcSigns[118].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[118])"
                  @keyup.enter.native="writeValue(plcSigns[118])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                出片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[119].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[119])"
                  @keyup.enter.native="writeValue(plcSigns[119])"
                <el-button type="primary" @click="writeValue(plcSigns[119])" >3#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[120].value" @focus="refresh()" @blur="writeValue(plcSigns[120])"
                  @keyup.enter.native="writeValue(plcSigns[120])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                入片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[121].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[121])"
                  @keyup.enter.native="writeValue(plcSigns[121])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                出片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[122].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[122])"
                  @keyup.enter.native="writeValue(plcSigns[122])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
            </div>
@@ -711,83 +713,83 @@
          <div style="display: flex;">
            <div>
              <div>
                C02输送高速<el-input style="width: 30%;" v-model="plcSigns[120].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[120])"
                  @keyup.enter.native="writeValue(plcSigns[120])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
              </div>
              <div>
                C02输送低速<el-input style="width: 30%;" v-model="plcSigns[121].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[121])"
                  @keyup.enter.native="writeValue(plcSigns[121])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
              </div>
              <div>
                C02输送手动<el-input style="width: 30%;" v-model="plcSigns[122].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[122])"
                  @keyup.enter.native="writeValue(plcSigns[122])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
              </div>
              <div>
                C02最大速度<el-input style="width: 30%;" v-model="plcSigns[123].value"
                C02输送高速<el-input style="width: 30%;" v-model="plcSigns[123].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[123])"
                  @keyup.enter.native="writeValue(plcSigns[123])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
              </div>
              <div>
                C02输送低速<el-input style="width: 30%;" v-model="plcSigns[124].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[124])"
                  @keyup.enter.native="writeValue(plcSigns[124])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
              </div>
              <div>
                C02输送手动<el-input style="width: 30%;" v-model="plcSigns[125].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[125])"
                  @keyup.enter.native="writeValue(plcSigns[125])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[124])">4#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[125].value" @focus="refresh()" @blur="writeValue(plcSigns[125])"
                  @keyup.enter.native="writeValue(plcSigns[125])"
                C02最大速度<el-input style="width: 30%;" v-model="plcSigns[126].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
                  @keyup.enter.native="writeValue(plcSigns[126])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
              </div>
              <div>
                <el-button type="primary" @click="writeValue(plcSigns[127])">4#笼子距离</el-button>
                <el-input style="width: 30%;" v-model="plcSigns[128].value" @focus="refresh()" @blur="writeValue(plcSigns[128])"
                  @keyup.enter.native="writeValue(plcSigns[128])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
              </div>
              <div>
                入片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[126].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
                  @keyup.enter.native="writeValue(plcSigns[126])"
                入片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[129].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[129])"
                  @keyup.enter.native="writeValue(plcSigns[129])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                出片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[1].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
                  @keyup.enter.native="writeValue(plcSigns[126])"
                出片输送启动延时<el-input style="width: 30%;" v-model="plcSigns[130].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[130])"
                  @keyup.enter.native="writeValue(plcSigns[130])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
            </div>
            <div>
              <div>
                C02行走高速<el-input type="text" style="width: 30%;" v-model="plcSigns[127].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[127])"
                  @keyup.enter.native="writeValue(plcSigns[127])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
              </div>
              <div>
                C02行走手动<el-input style="width: 30%;" v-model="plcSigns[128].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[128])"
                  @keyup.enter.native="writeValue(plcSigns[128])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
              </div>
              <div>
                最大取片格子<el-input style="width: 30%;" v-model="plcSigns[129].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[129])"
                  @keyup.enter.native="writeValue(plcSigns[129])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>格
              </div>
              <div>
                最小取片格子<el-input style="width: 30%;" v-model="plcSigns[130].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[130])"
                  @keyup.enter.native="writeValue(plcSigns[130])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>格
              </div>
              <div>
                入片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[131].value"
                C02行走高速<el-input type="text" style="width: 30%;" v-model="plcSigns[131].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[131])"
                  @keyup.enter.native="writeValue(plcSigns[131])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
              </div>
              <div>
                C02行走手动<el-input style="width: 30%;" v-model="plcSigns[132].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[132])"
                  @keyup.enter.native="writeValue(plcSigns[132])"
                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
              </div>
              <div>
                最大取片格子<el-input style="width: 30%;" v-model="plcSigns[133].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[133])"
                  @keyup.enter.native="writeValue(plcSigns[133])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>格
              </div>
              <div>
                最小取片格子<el-input style="width: 30%;" v-model="plcSigns[134].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[134])"
                  @keyup.enter.native="writeValue(plcSigns[134])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>格
              </div>
              <div>
                入片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[135].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[135])"
                  @keyup.enter.native="writeValue(plcSigns[135])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
              <div>
                出片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[132].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[132])"
                  @keyup.enter.native="writeValue(plcSigns[132])"
                出片输送超时时间<el-input style="width: 30%;" v-model="plcSigns[136].value"
                  @focus="refresh()" @blur="writeValue(plcSigns[136])"
                  @keyup.enter.native="writeValue(plcSigns[136])"
                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
              </div>
            </div>
@@ -873,7 +875,8 @@
      socket.close();
    },
    writeValue(plcSign) {
      writeValue(plcSign.addressIndex, plcSign.value, plcSign.ratio).then(res => {
      const value = plcSign.value || 1; // 默认值为1
      writeValue(plcSign.unit, value, plcSign.ratio).then(res => {
        if (res.data.message == 200) {
          this.$message.success(this.$t('Operation successful'));
        }
Albania_Mes-ui/src/views/home/index.vue
@@ -451,12 +451,14 @@
                    </div>
                    <el-table :data="this.tasklist1" border style="width: 700px;">
                        <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
                        <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
                        <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column>
                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
                        <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column>
                        <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column>
                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column>
                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column>
                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column>
                        <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column>
                        <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
                        <el-table-column :min-width="120" :label="$t('Terminate Task')">
                            <template slot-scope='scope'>
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -464,17 +466,17 @@
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                    @click="TerminateTask(scope.row.id)">{{ $t('Terminate') }}</el-button>
                            </template>
                        </el-table-column>
                        </el-table-column>
                    </el-table>
                    <el-table :data="this.tasklist2" border style="width: 100%">
                        <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
                        <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
                        <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column>
                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
                        <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column>
                        <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column>
                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column>
                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column>
                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column>
                        <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column>
                        <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
                        <el-table-column :min-width="120" :label="$t('Terminate Task')">
                            <template slot-scope='scope'>
                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -529,7 +531,7 @@
            <div style="height: 760px;">
                <!--功能-->
                <div>
                    <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state > 0)"
                    <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state > 3)"
                        style="z-index: 999;">{{ $t('Manual matching') }}</el-button>
                    <el-button type="primary" @click="ManualTake()" :disabled="(this.LastQueue.state > 0)"
                        style="z-index: 999;">{{
@@ -611,6 +613,7 @@
                        style="width: 100%;padding:0;">
                        <el-table-column prop="flowcard" :label="$t('Order')"></el-table-column>
                        <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
                        <el-table-column prop="tier" :label="$t('Tier')" width="50"></el-table-column>
                        <el-table-column prop="films" :label="$t('Films')"></el-table-column>
                        <el-table-column prop="width" :label="$t('Width')"></el-table-column>
                        <el-table-column prop="height" :label="$t('Height')"></el-table-column>
@@ -635,6 +638,7 @@
                <el-table-column :min-width="80" prop="thickness" :label="$t('Thickness')"></el-table-column>
                <el-table-column :min-width="80" prop="films" :label="$t('Films')"></el-table-column>
                <el-table-column :min-width="80" prop="number" :label="$t('number')"></el-table-column>
                <el-table-column :min-width="80" prop="tier" :label="$t('Tier')"></el-table-column>
                <el-table-column :min-width="80" prop="mateid" :label="$t('Mateid')"></el-table-column>
                <!-- <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column> -->
                <el-table-column :min-width="250" :label="$t('Operate')">
@@ -816,7 +820,7 @@
                </el-table-column>
                <el-table-column prop="cell" :label="$t('Slot No')" align="center">
                    <template slot-scope="scope">
                        <div :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '', width: '105%', height: '100%', lineHeight: '38px' }">
                        <div :style="{ width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.cell }}
                        </div>
                    </template>
@@ -830,7 +834,7 @@
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                        <div :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '',width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.mateid }}
                        </div>
                    </template>
@@ -898,6 +902,13 @@
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="cell" :label="$t('Slot No')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
                            {{ scope.row.cell }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                    <template slot-scope="scope">
                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
@@ -939,6 +950,8 @@
                <el-input v-model="StorageCageForm.thickness" autocomplete="off" style="width:15%;" />
                <label for="">{{ $t('Films') }}</label>
                <el-input v-model="StorageCageForm.films" autocomplete="off" style="width:15%;" />
                <label for="">{{ $t('Tier') }}</label>
                <el-input v-model="StorageCageForm.tier" autocomplete="off" style="width:15%;" />
                <el-button @click="SelectGlassInfo()" type="primary">
                    {{ $t('Select') }}</el-button>
            </div>
@@ -1032,7 +1045,8 @@
                glasswidthmm: "",
                glassheightmm: "",
                thickness: "",
                films: ""
                films: "",
                tier: ""
            },
            StorageCageAddInfo: [],
            TaskqueueInfo: [],
@@ -1172,6 +1186,8 @@
                    this.tasklist3 = obj.glassInfoFlowCard[0];
                    this.tasklist2 = obj.StoragTaskeTaskFeed[0];
                    this.tasklist1 = obj.StoragTaskeTaskOut[0];
                    // console.log(obj.StoragTaskeTaskOut[0]);
                    this.SelectSetting = obj.SelectSetting[0];
                    this.selectedOption1.films = obj.SelectMeasure[0];
                    this.selectedOption2.thickness = obj.SelectMeasure[0];
@@ -1305,6 +1321,7 @@
                UpdateQueue(this.StorageCageAddInfo[index]).then(res => {
                    if (res.data.message == 200) {
                        this.$message.success(this.$t('Operation successful'));
                        // this.StorageCageAdd = false;
                    } else {
                        this.$message.error(this.$t('Operation failed'));
                    }
@@ -1403,9 +1420,9 @@
        },
        //查询玻璃信息
        SelectGlassInfo() {
            console.log(this.StorageCageForm.glasswidthmm);
            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
            // console.log(this.StorageCageForm.glasswidthmm);
            // console.log(this.StorageCageForm.tier);
            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films,this.StorageCageForm.tier).then(res => {
                this.StorageCageAddInfo = res.data.StorageCageAddInfo;
            })
        },
@@ -1556,6 +1573,7 @@
        //人工匹配
        ManualMatching() {
            this.StorageCageAdd = true;
            this.SelectGlassInfo();
            this.Measuermode = false;
        },
        //人工拿走
springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java
@@ -160,6 +160,7 @@
                plcParameterInfo.setCodeId(codeid);
                // plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
                plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
                // plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
                // plcParameterInfo.setUnit(parameterObj.getStr("unit"));
                plcParameterObject.addPlcParameter(plcParameterInfo);
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
@@ -28,11 +28,11 @@
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
      spianService = WebSocketServer.applicationContext.getBean(SpianServiceNew.class);
      albaniaMapper = WebSocketServer.applicationContext.getBean(AlbaniaMapper.class);
      // spianService.selectout(1);
      // storageCageService.ScanMatch("123",1,1);
      // spianService.mateOut();
      // 读取DB14区文件
      PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
@@ -43,6 +43,7 @@
        String IDStatus1 = plcmes.getPlcParameter("IDStatus1").getValue();// 1号任务完成
        String MESToPLCStatus1 = plcmes.getPlcParameter("MESToPLCStatus1").getValue();// 1号确认字
        String MESToPLC = plcmes.getPlcParameter("MESToPLC").getValue();// 发送任务字
        String GaToMES = plcmes.getPlcParameter("GaToMES").getValue();// 测量成功信号
        
        int taskcont = albaniaMapper.SelectTaskcount(); // 正在进行的任务数量
        int outtask = albaniaMapper.SelectOutTaskCount(); // 等待补发的出片任务数量
@@ -95,14 +96,12 @@
        // 运送车请求和测量完成请求
        GlassInfo glass = albaniaMapper.SelectGlass();
        if (PLCToMES != null && glass != null && MESToPLC != null) {
          if (PLCToMES.equals("1") == true && MESToPLC.equals("0") == true && MESToPLCStatus1.equals("0") == true&&outtask == 0) {
          if (PLCToMES.equals("1")&& MESToPLC.equals("0")&&("1".equals(GaToMES)||"2".equals(GaToMES))) {
            try {
              Thread.sleep(100); // 每100毫秒检查一次
            } catch (InterruptedException e) {
              Thread.currentThread().interrupt(); // 处理线程中断
            }
            // System.out
            //     .println("进片状态:MESToPLC:" + MESToPLC + "PLCToMES:" + PLCToMES + "MESToPLCStatus1:" + MESToPLCStatus1);
            spianService.selectAll(glass);
          }
        }
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -2,6 +2,7 @@
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -140,25 +141,60 @@
                // 匹配
                // System.err.println(PlcRequest+","+MesSend+","+width+","+height);
                if (plcmes.getPlcParameter("GaToMES").getValue() != null) {
                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// 请求
                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// 发送
                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// plc请求字
                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// mes发送字
                    String A01ToMES = plcmes.getPlcParameter("A01ToMES").getValue();// 扫码请求
                    String MESToA01 = plcmes.getPlcParameter("MESToA01").getValue();// 确认扫码
                    String Layer = plcmes.getPlcParameter("Layer").getValue();// 层号
                    String Mateid = plcmes.getPlcParameter("A01MateID").getValue();// 配对号
                    String Order = plcmes.getPlcParameter("A01OrderID").getValue();// 订单号
                    double width = Double.valueOf(plcmes.getPlcParameter("width").getValue());//
                    // 宽
                    double height = Double.valueOf(plcmes.getPlcParameter("Height").getValue());// 高
                    // if ("0".equals(PlcRequest) && "1".equals(MesSend)|| "0".equals(PlcRequest) && "4".equals(MesSend)) {
                    //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
                    // }
                    // if ("2".equals(PlcRequest) && "1".equals(MesSend)) {
                    //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
                    // }
                     if ("4".equals(PlcRequest)) {
                    String celanedOrders = Order.replaceAll("[^a-zA-Z0-9.]", "").trim().split("\\.")[0];
                    String cleanedMateids = Mateid.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; // 移除所有非数字字符
                    String cleanedLayers = Layer.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; //
                    String celanedOrder = celanedOrders.isEmpty() ? "" : celanedOrders;
                    String cleanedMateid = cleanedMateids.isEmpty() ? "" : cleanedMateids;
                    String cleanedLayer = cleanedLayers.isEmpty() ? "" : cleanedLayers;
                    if ("4".equals(PlcRequest)) {
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
                        System.out.println("收四归零");
                    }
                    // System.out.println("PlcRequest:" + PlcRequest+"MesSend:" + MesSend+"width:" +
                    // width+"height:" + height);
                    // 扫码请求时
                    if ("1".equals(A01ToMES) && "0".equals(MESToA01)&&"0".equals(MesSend)&&"0".equals(PlcRequest)) {
                        if(cleanedMateid==""||cleanedLayer==""){
                            cleanedMateid="0";
                            cleanedLayer="0";
                        }
                        int cont = storageCageService.ScanMatch(celanedOrder, Integer.parseInt(cleanedMateid),Integer.parseInt(cleanedLayer));
                        if (cont > 0) {
                            System.out.println("扫码成功");
                            System.out.println(
                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(),
                                    (short) 1);
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 1);
                        } else {
                            // QueueMapper.insertMatchFailure(1000, 1000, -1);
                            System.out.println(
                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
                            System.out.println("扫码添加失败");
                        }
                    }
                    // 请求归零时
                    if ("4".equals(A01ToMES)) {
                        System.out.println("扫码归零成功");
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(), (short) 0);
                    }
                    // 测量请求时
                    if ("1".equals(PlcRequest) && "0".equals(MesSend)) {
                        boolean is = HomeService.Normal(width, height, "1");
                        if (is && istest) {
@@ -166,12 +202,10 @@
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 1);
                        }
                        else if (istest) {
                        } else if (istest) {
                            // 匹配失败
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 4);
                        }
                    }
                }
@@ -214,14 +248,13 @@
                List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
                jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
                 // 查询当前出片队列
                 List<Map> OutTask = storageCageService.SelectOutTask();
                 jsonObject.append("OutTask", OutTask);
                // 查询当前出片队列
                List<Map> OutTask = storageCageService.SelectOutTask();
                jsonObject.append("OutTask", OutTask);
                 // 查询最后6次出片记录
                 List<Map> OutLog = storageCageService.SelectOutLog();
                 jsonObject.append("OutLog", OutLog);
                // 查询最后6次出片记录
                List<Map> OutLog = storageCageService.SelectOutLog();
                jsonObject.append("OutLog", OutLog);
                // 查询所有玻璃厚度和膜系
                List<GlassInfo> SelectMeasure = storageCageService.SelectMeasure();
@@ -239,24 +272,38 @@
                // jsonObject.append("params", new short[] { 30, 40, });
                // System.out.println("jsonObject:" + jsonObject);
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
                        if (webserver != null) {
                    Iterator<WebSocketServer> iterator = sendwServer.iterator();
                    while (iterator.hasNext()) {
                        WebSocketServer webserver = iterator.next();
                        webserver.sendMessage(jsonObject.toString());
                            List<String> messages = webserver.getMessages();
                            if (!messages.isEmpty()) {
                                // // 将最后一个消息转换为整数类型的列表
                                webserver.clearMessages();
                            }
                        }
                            }
                    }
                }
                // ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
                // if (sendwServer != null) {
                //     for (WebSocketServer webserver : sendwServer) {
                //         webserver.sendMessage(jsonObject.toString());
                //         if (webserver != null) {
                //             List<String> messages = webserver.getMessages();
                //             if (!messages.isEmpty()) {
                //                 // // 将最后一个消息转换为整数类型的列表
                //                 webserver.clearMessages();
                //             }
                //         }
                //     }
                // }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -22,7 +22,7 @@
        new PlcHoldNew().start();
        new Plchome().start();
        // new PlcAlbaniaServo().start();
        // new Plcsign().start();
        new Plcsign().start();
        new PlcSigns().start();
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -515,8 +515,8 @@
  // 查询玻璃信息
  @PostMapping("/SelectGlassInfo")
  public Result SelectGlassInfo(String width, String height, String thickness, String films) {
    return storageCageService.SelectGlassInfo(width, height, thickness, films);
  public Result SelectGlassInfo(String width, String height, String thickness, String films, String tier) {
    return storageCageService.SelectGlassInfo(width, height, thickness, films,tier);
  }
  // 添加玻璃信息到笼子
@@ -596,21 +596,27 @@
  public Result writeValue(String address, float value, String type) {
    if ("0".equals(type)) {
      System.err.println("写入word" + address + "+" + value);
      // S7control.getinstance().WriteWord(address, (short) value);
      S7control.getinstance().WriteWord(address, (short) value);
    } else if("1".equals(type)) {
      System.err.println("写入float" + address + "+" + value);
      // S7control.getinstance().writeFloat32(address, value);
    }else{
      S7control.getinstance().writeFloat32(address, value);
    }else if("2".equals(type)) {
      System.err.println("写入bit" + address + "+" + value);
      // S7control.getinstance().WriteBit(address, true);
      S7control.getinstance().WriteBit(address, true);
    }else{
      S7control.getinstance().writetime(address, (long)value);
      System.err.println("写入time" + address + "+" + value);
    }
      try {
        TimeUnit.MILLISECONDS.sleep(300);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      // S7control.getinstance().WriteBit(address, false);
    }
    Map<String, Object> map = new HashMap<>();
    map.put("message", "200");
    return Result.success(map);
springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
@@ -14,6 +14,7 @@
    private Integer glasstype;//玻璃类型
    private String flowcard;//流程卡
    private Integer mateid;//配片id
    private Integer tier;//片序
    private StorageCage storageCage;
springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
@@ -18,7 +18,7 @@
    @Select("select id from storage_cage where glasstype=#{glasstype} and width>=#{width}+#{widths}  and disabled=0 order by id limit 1")
    StorageCage SelectCage(int glasstype,Double width,int widths);
    //判断笼内没有玻璃的空格
    @Select("select id from storage_cage where (number is null or number=0) and cage>#{cage} and cage<#{cage2} and disabled=0 order by id limit 1")
    @Select("select id from storage_cage where (number is null) and cage>#{cage} and cage<#{cage2} and disabled=0 order by id limit 1")
    StorageCage SelectNewCell(int cage,int cage2);
    //增加玻璃数
    @Update("update storage_cage set number=number+1,width=width-glasswidth where id=#{id}")
@@ -33,8 +33,8 @@
    @Insert("INSERT INTO `albania`.`out_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id,glasstype,flowcard,mateid,tier) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid},#{glasstype},#{flowcard},#{mateid},#{tier});")
    void InsertOutTask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid, int glasstype,String flowcard,int mateid,int tier);
    //新增一条笼子数据
    @Update("UPDATE `albania`.`storage_cage` SET `glass_id` =#{glassid}, `width` =width-#{glasswidth}, `glasswidth` =#{glasswidth}, `glassheight` =#{glassheight}, `glasswidthmm` =#{glasswidth}, `glassheightmm` = #{glassheight},  `state` = #{state}, `glasstype` = #{glasstype}, `number` = #{number},thickness=#{thickness},films=#{films},flowcard=#{flowcard},mateid=#{mateid}  WHERE `id` =#{id};")
    void AddCage(int id,String glassid,Double glasswidth,Double glassheight,int state,int glasstype,int number,Double thickness,String films,String flowcard,int mateid);
    @Update("UPDATE `albania`.`storage_cage` SET `glass_id` =#{glassid}, `width` =width-#{glasswidth}, `glasswidth` =#{glasswidth}, `glassheight` =#{glassheight}, `glasswidthmm` =#{glasswidth}, `glassheightmm` = #{glassheight},  `state` = #{state}, `glasstype` = #{glasstype}, `number` = #{number},thickness=#{thickness},films=#{films},flowcard=#{flowcard},mateid=#{mateid},tier=#{tier}  WHERE `id` =#{id};")
    void AddCage(int id,String glassid,Double glasswidth,Double glassheight,int state,int glasstype,int number,Double thickness,String films,String flowcard,int mateid,int tier);
    //获取进片数据
    @Select("select glassid,flowcard,glasswidth as width,glassheight as height,glasswidthmm,glassheightmm,glasstype,thickness  from queue where state=1 limit 1")
    GlassInfo SelectGlass();
springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java
@@ -19,7 +19,8 @@
    // @Select("SELECT COUNT(*) FROM role_permission WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
    // boolean checkExists(@Param("roleId") int roleId, @Param("permissionId") int permissionId);
    @Select("SELECT g.* FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = #{orderstate} and state!=2")
    // @Select("SELECT g.* FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = #{orderstate} and state!=2 and g.number>measurenumber")
    @Select("SELECT g.flowcard,g.mateid,g.tier,g.films,g.width,g.height,g.thickness,g.number,(g.number-g.measurenumber)as measurenumber FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = 1 and state!=2 and g.number>measurenumber")
    List<GlassInfo> selectOrderState(@Param("orderstate") int orderstate);
    @Update("UPDATE glassinfo SET measurenumber = measurenumber+1 WHERE id = #{id}")
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -239,7 +239,7 @@
  List<StorageCage> SelectStorageCageInfo();
  // 删除格子内玻璃信息
  @Update("update storage_cage set films=null,width=4300,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,thickness=null,glasstype=null,number=null,glass_id=null,flowcard=null,mateid=null where cell=#{cell}")
  @Update("update storage_cage set films=null,width=4300,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,thickness=null,glasstype=null,number=null,glass_id=null,flowcard=null,mateid=null,tier=null where cell=#{cell}")
  void DeleteStroageCageByCell(Integer cell);
  // 修改格子玻璃数量
@@ -262,20 +262,20 @@
  @Select("select * from storage_cage where cell=#{cell}")
  StorageCage SelectStorageByCell(String cell);
  //根据玻璃类型查询玻璃信息
  @Select("select a.shelf_rack as cage,a.load_rack as cell,b.mateid,b.width as glasswidth,b.height as glassheight,b.thickness,b.films from storage_task a left join glassinfo b on a.glasstype=b.glasstype where a.id=#{id} limit 1")
  @Select("select a.shelf_rack as cage,a.load_rack as cell,b.mateid,b.width as glasswidth,b.height as glassheight,b.thickness,b.films,a.tier from storage_task a left join glassinfo b on a.glasstype=b.glasstype where a.id=#{id} limit 1")
  StorageCage SelectStorageByCellGlass(Integer id);
  // 手动完成任务
  @Select("update storage_task set task_state=#{state} where id=#{id}")
  void FinishTask(Integer id, int state);
  //人工匹配测量查询
  @Select("select gi.* from glassinfo gi inner join flowcard fc on gi.flowcard=fc.flowcard where fc.state!=2 and fc.orderstate=1 and position(#{width} in gi.width) and position(#{height} in gi.height) and position(#{thickness} in gi.thickness) and position(#{films} in gi.films) group by gi.id")
  List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films);
  @Select("select gi.* from glassinfo gi inner join flowcard fc on gi.flowcard=fc.flowcard where fc.state!=2 and fc.orderstate=1 and position(#{width} in gi.width) and position(#{height} in gi.height) and position(#{thickness} in gi.thickness) and position(#{films} in gi.films) and position(#{tier} in gi.tier) group by gi.id")
  List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films,String tier);
  // @Select("select b.* from flowcard a left join glassinfo b on a.flowcard=b.flowcard INNER JOIN measuresetting c where a.orderstate=1 and a.state!=2 and b.width BETWEEN  #{width} - c.errorwidth AND #{width} + c.errorwidth and b.height BETWEEN  #{height} - c.errorheight AND #{height} + c.errorheight and b.films=#{films} and b.thickness=#{thickness}")
  // List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films);
  @Update("update storage_cage set glasstype=#{glassInfo.glasstype},mateid=#{glassInfo.mateid},glass_id=#{glassInfo.glassid},flowcard=#{glassInfo.flowcard},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0 where cell=#{cell}")
  @Update("update storage_cage set glasstype=#{glassInfo.glasstype},mateid=#{glassInfo.mateid},glass_id=#{glassInfo.glassid},flowcard=#{glassInfo.flowcard},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0,tier=#{glassInfo.tier} where cell=#{cell}")
  void StorageCageAddGlass(String cell, GlassInfo glassInfo);
  @Select("select id,flowcard,Customer,totaltier,line,state,method,starttime,orderstate from flowcard where state!=2")
@@ -319,7 +319,7 @@
  @Update("update queue set glassid=concat(#{flowcard},'-',#{tier}),flowcard=#{flowcard},glasswidth=#{width},glassheight=#{height},glasstype=#{glasstype},thickness=#{thickness},mateid=#{mateid},state=1 where state<=0")
  void UpdateQueue(String flowcard, double width, double height, Integer glasstype, Double thickness, Integer tier,int mateid);
  //人工匹配新增一条
  @Insert("INSERT INTO queue (flowcard,glassid,glasswidth,glassheight,glasstype,thickness,mateid,state) VALUES (#{flowcard},concat(#{flowcard},'-',#{tier}),#{width},#{height},#{glasstype},#{thickness},#{mateid},1)")
  @Insert("INSERT INTO queue (flowcard,glassid,glasswidth,glassheight,glasstype,thickness,mateid,state,time) VALUES (#{flowcard},concat(#{flowcard},'-',#{tier}),#{width},#{height},#{glasstype},#{thickness},#{mateid},1,NOW())")
  int AddQueue(String flowcard, double width, double height, Integer glasstype, Double thickness, Integer tier,int mateid); 
  //判断测量表是否有可更改的数据
  @Select("select count(*) from queue where state<1")
@@ -369,7 +369,7 @@
                    +" select #{flowcard}, 0, #{number}, 0, 0, 0, now(),#{Customer} where 0=( select count(*) from flowcard where flowcard=#{flowcard});")
  void InsertFlowcard(String flowcard, Integer number,String Customer);
    @Delete("DELETE FROM queue WHERE id = (SELECT id FROM ( SELECT id FROM queue WHERE glasstype = #{glassId} ORDER BY time ASC LIMIT 1) AS temp);")
    @Delete("DELETE FROM queue WHERE id = (SELECT id FROM ( SELECT id FROM queue WHERE state = 2 ORDER BY time ASC LIMIT 1) AS temp);")
    void DeletequeueByGlassid(String glassId);
    @Select("select count(*) from flowcard where line=#{line} and state=1 and flowcard!=#{flowcard}")
@@ -378,9 +378,16 @@
    @Update("UPDATE measuresetting SET `films` = #{films}, `thickness` = #{thickness} WHERE `id` = 1;")
    int SaveMeasure(String films, Integer thickness);
    //查询出片队列数据
    @Select("SELECT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state FROM `out_task` a left join glassinfo b on a.glasstype=b.glasstype where task_state!=1 ORDER BY task_state")
    @Select("SELECT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,shelf_rack as cell FROM `out_task` a left join glassinfo b on a.glasstype=b.glasstype where task_state!=1 ORDER BY task_state")
    List<Map>SelectOutTask();
     //查询出片记录数据
     @Select(" select a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,a.shelf_rack as cell from storage_task a left join glassinfo b on a.glasstype=b.glasstype where task_type=1 ORDER BY a.id desc LIMIT 6;")
     @Select(" select DISTINCT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,a.shelf_rack as cell from storage_task a left join glassinfo b on a.glasstype=b.glasstype where task_type=1 ORDER BY a.id desc LIMIT 6;")
     List<Map>SelectOutLog();
     //查询扫码数据
     @Select("select*from glassinfo a where a.flowcard=#{flowcard} and a.mateid=#{mateid} and a.tier=#{tier} LIMIT 1")
     GlassInfo SelectCodeGlass(String flowcard,Integer mateid,Integer tier);
     //查询出片队列的玻璃信息
     @Select("select shelf_rack from out_task where id=#{id}")
     int SelectOutTaskId(Integer id);
}
springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
@@ -1,6 +1,7 @@
package com.example.springboot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springboot.entity.GlassInfo;
import com.example.springboot.entity.Queue;
import com.example.springboot.entity.RolePermission;
@@ -44,7 +45,8 @@
    @Delete("delete from queue where state<=0")
    void DeleteErrorQueue();
    @Delete("delete from queue where state<=3")
    @Delete("delete from queue where state<1")
    void DeleteQueue();
    @Insert("INSERT into queue  (flowcard,glassId,mateid,glasstype,glasswidth,glassheight,thickness,state,time) VALUES (#{flowcard},#{glassId},#{mateid},#{glasstype},#{glasswidth},#{glassheight},#{thickness},1,NOW())")
    int insertQueueCode(String flowcard,String glassId,int mateid,int glasstype,double glasswidth,double glassheight,double thickness);
}
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
@@ -63,7 +63,7 @@
            // 当返回的格子号为空时,返回400笼子已满
            if (cage != null) {
                albaniaMapper.AddCage(cage.getId(), glassid, width, height, 1, glasstype, 0, thickness,
                        glassfilms.getFilms(), glassfilms.getFlowcard(), glassfilms.getMateid());
                        glassfilms.getFilms(), glassfilms.getFlowcard(), glassfilms.getMateid(),glassfilms.getTier());
                Mestast(glassid, 1001, cage.getId(), 1, "MESID1", 1);
                System.out.println("任务发送玻璃id:" + glassid + "起始位置:" + 1001 + "格子号:" + cage.getId() + "启动:" + 1);
                albaniaMapper.UpdateStorage(width, height, cage.getId());
@@ -72,7 +72,7 @@
            }
        }
        // 增加任务记录
        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), 0);
        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), glassfilms.getTier());
        albaniaMapper.UpdateQueueState(glassid);
        return (200);
@@ -92,6 +92,7 @@
                carwidth = carwidth + glass.getWidth() + 300;
                if (carwidth >= 4300&&type!=glassmate.get(i).getTaskType()) {
                    S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 出片任务启动
                    MestoPlc();
                    return (200);
                } else {
                    //增加一条任务记录
@@ -108,6 +109,22 @@
            }
            // 本次配片完成发送启动命令
            // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 出片任务启动
              while (true) {
            String currentValue = plcmes.getPlcParameter("MESToPLC").getValue();
            // 检查 MESToPLC 的值是否为 0
            if (currentValue.equals("1")) {
              System.out.println("发送启动字现在为1,停止循环写入");
              break; // 退出循环
            }
            // 如果不为 1,继续写入
            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(),(short) 1);// 任务发送字
            System.out.println("继续写入 MESToPLC,当前值:" + currentValue);
            try {
                Thread.sleep(100); // 例如每秒检查一次
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
          }
            MestoPlc();
        }
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -316,6 +316,10 @@
                homeMapper.FinishTask(storageTask.getId(), 2);// 完成任务
                homeMapper.DeletequeueByGlassid(storageTask.getGlasstype().toString());
                glassInfoMapper.updateGlassNumber(storageTask.getGlasstype());// 减少扫描次数
                StorageCage storageCage = homeMapper.SelectStorageByCell(storageTask.getLoadrack());
                if (storageCage.getNumber() == null || storageCage.getNumber() == 0) {
                    UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), 0);// 清除格内信息
                }
            } else {
                System.out.println("结束出片任务:" + storageTask.getId());
                homeMapper.FinishTask(storageTask.getId(), 2);// 完成任务
@@ -391,8 +395,8 @@
    }
    // 查询玻璃信息
    public Result SelectGlassInfo(String width, String height, String thickness, String films) {
        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films);
    public Result SelectGlassInfo(String width, String height, String thickness, String films,String tier) {
        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films,tier);
        Map<String, Object> map = new HashMap<>();
        map.put("StorageCageAddInfo", glassInfoList);
        return Result.success(map);
@@ -445,25 +449,49 @@
        map.put("message", "200");
        return Result.success(map);
    }
    //扫码匹配成功
    public int ScanMatch(String Order, Integer Mateid,Integer tier) {
        GlassInfo glass=homeMapper.SelectCodeGlass(Order,Mateid,tier);
        System.out.println("glass:"+glass);
        System.out.println("order"+Order+"mateid"+Mateid+"tier"+tier);
        if(glass==null){
            return 0;
        }else{
        int cont= QueueMapper.insertQueueCode(glass.getFlowcard(),glass.getGlassid(),glass.getMateid(),glass.getGlasstype(),glass.getWidth(),glass.getHeight(),glass.getThickness());
        glassInfoMapper.updatemeasurenumber(glass.getId());
        return cont;
     }
    }
    // 人工匹配修改测量信息
    public Result UpdateQueue(GlassInfo glassInfo) {
        // 删除数据
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        Map<String, Object> map = new HashMap<>();
        QueueMapper.DeleteQueue();
        System.out.println("人工匹配ID:" + glassInfo.getMateid() + "膜系:" + glassInfo.getFilms());
        String mestoplc=plcmes.getPlcParameter("MESToGaStatus").getValue();
        String A02Plc=plcmes.getPlcParameter("GaToMES").getValue();
        System.out.println("人工匹配mestoplc:"+mestoplc);
        // int count = homeMapper.SelectQueue();
        // if (count > 0) {
        if (("0".equals(mestoplc)&&"0".equals(A02Plc))||("1".equals(A02Plc)&&"4".equals(mestoplc))) {
            // homeMapper.UpdateQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
            //         glassInfo.getGlasstype(), glassInfo.getThickness(), glassInfo.getTier(), glassInfo.getMateid());
            homeMapper.AddQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
                    glassInfo.getGlasstype(), glassInfo.getThickness(), glassInfo.getTier(), glassInfo.getMateid());
            PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
            glassInfoMapper.updatemeasurenumber(glassInfo.getId());
           if("0".equals(mestoplc)){
            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(), (short) 1);
            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
            System.out.println("提前匹配");
           }else{
            System.out.println("测量匹配");
            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
           }
            map.put("message", "200");
        // } else {
        //     map.put("message", "300");
        // }
        } else {
            map.put("message", "300");
        }
        return Result.success(map);
    }
@@ -505,6 +533,9 @@
    // 删除出片队列
    public Result DeleteOutTask(Integer id) {
        int cell=homeMapper.SelectOutTaskId(id);
        UpdateStroageCageByCell(cell, 1);// 玻璃数量+1
        homeMapper.DeleteOutTask(id);
        Map<String, Object> map = new HashMap<>();
        map.put("message", "200");
@@ -535,7 +566,10 @@
        // 读取DB105区文件
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        // 重新测量
        String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// plc请求字
        if("1".equals(PlcRequest)){
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 2);
        }
        // 删除数据
        QueueMapper.DeleteErrorQueue();
        // plcmes.getPlcParameter("GaToMES").setValue("2");
@@ -594,8 +628,7 @@
        for (Map map : RemoveErrorData) {
            String key = map.get("base").toString() + "_" + map.get("height").toString() + "_"
                    + map.get("thickness").toString() + "_" + map.get("films").toString() + "_"
                    + map.get("order").toString() + "_" + map.get("matching").toString();
                    + map.get("order").toString() + "_" + map.get("matching").toString()+ map.get("tier").toString();
            String tierkey = map.get("order").toString() + "_" + map.get("matching").toString();
            String value = TypeData.get(key);
springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json
@@ -1,9 +1,9 @@
{
   "plcAddressBegin":"DB14.0",
   "plcAddressLenght":"196",
   "plcAddressLenght":"262",
   "dataType":"word",
   "parameteInfor":[
      {
      {
         "codeId": "PLCToMES",  
         "addressIndex":"0",
         "addressLenght":"2", 
@@ -373,6 +373,36 @@
         "addressLenght":"2",
         "ratio":"1",
         "unit":"mm/S"
      },{
         "codeId": "A01ToMES",
         "addressIndex":"210",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"mm/S"
      },{
         "codeId": "MESToA01",
         "addressIndex":"212",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"mm/S"
      },{
         "codeId": "Layer",
         "addressIndex":"214",
         "addressLenght":"16",
         "ratio":"1",
         "unit":"mm/S"
      },{
         "codeId": "A01MateID",
         "addressIndex":"230",
         "addressLenght":"16",
         "ratio":"1",
         "unit":"mm/S"
      },{
         "codeId": "A01OrderID",
         "addressIndex":"246",
         "addressLenght":"16",
         "ratio":"1",
         "unit":"mm/S"
      }
   ]
}
springboot-vue3/src/main/resources/config.properties
@@ -224,9 +224,12 @@
PlcInteractionState.MEStaskinformation2=DB106.52,DB106.58,DB103.128-141,DB103.142-155,DB103.156-169,DB103.184-197,DB103.212-225
#IO状态
PlcIO.State=DB101.0.0,DB101.0.1,DB101.0.2,DB101.2.1,DB101.2.2,DB101.2.3,DB101.2.4,DB101.2.5,DB101.2.6,DB101.2.7,DB101.3.0,DB101.3.1,DB101.3.2,DB101.3.3,DB101.3.4,DB101.4.0,DB101.4.1,DB101.4.2,DB101.4.3,DB101.4.4,DB101.4.5,DB101.4.6,DB101.4.7,DB101.5.0,DB101.5.1,DB101.5.2,DB101.5.3,DB101.6.0,DB101.6.1,DB101.6.2,DB101.6.3,DB101.6.4,DB101.8.0,DB101.8.1,DB101.8.2,DB101.8.3,DB101.8.4,DB101.8.5,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3,DB101.10.4,DB101.10.5,DB101.12.0,DB101.12.1,DB101.12.2,DB101.14.0,DB101.14.1,DB101.14.2,DB101.14.3,DB101.14.4,DB101.16.0,DB101.16.1,DB101.16.2,DB101.16.3,DB101.16.4,DB101.16.5,DB101.18.0,DB101.18.1,DB101.18.2,DB101.18.3,DB101.18.4,DB101.18.5,DB101.20.0,DB101.20.1,DB101.20.2,DB101.22.0,DB101.22.1,DB101.22.2,DB101.22.3
PlcIO.Name=Sr.Dec,Sr.LowE,Sr.OutPos,Sr.InToX,Sr.GaToXIn,Sr.DecToXOut,Sr.GaToY1,Sr.GaToY2,Sr.GaToY3,Sr.GaToY4,Sr.DecToY,Sr.GaToY,Sr.HomeToY,SQ.LimitSwitchTop,SQ.LimitSwitchBottom,Sr.Travellimitleft,Sr.PosToLeft,Sr.DecToLeft,Sr.DecToRight,Sr.PosToRight,Sr.TravellimitRight,SQ.LimitSwitch+,SQ.LimitSwitch-,Sr.HomeToTurn,SQ.LimitSwitchToTurnTop,SQ.LimitSwitchToTurnBottom,oilPump,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Red,Yellow,Green,FootSwitch
PlcIo.Name1=A01减速光电,LOW-E检测光电,A01出口到位光电,A02X轴入口减速光电,A02X轴入口测量光电,A02X轴出口减速光电,A02Y轴粗定位1(最低位),A02Y轴粗定位2,A02Y轴粗定位3,A02Y轴粗定位4(最高位),A02Y轴减速光电,A02Y轴测量光电,A02Y轴原点,A02Y轴上极限,A02Y轴下极限,B01左极限,B01左到位,B01左减速,B01右减速,B01右到位,B01右极限,B01大车正极限,B01大车负极限,B01翻转原点,B01翻转上极限,B01翻转下极限,B01油泵输出,C01左极限,C01右极限,C01小车原点,C01小车正极限,C01小车负极限,C01吹气抬起气缸原点1,C01吹气抬起气缸原点2,C01吹气抬起气缸原点3,C01吹气抬起气缸原点4,C01玻璃抬起气缸原点1,C01玻璃抬起气缸原点2,C01吹气抬起气缸原点1,C01吹气抬起气缸原点2,C01吹气抬起气缸原点3,C01吹气抬起气缸原点4,C01玻璃抬起气缸原点1,C01玻璃抬起气缸原点2,C01吹气输出,C01吹气抬起输出,C01玻璃抬起输出,C02左极限,C02右极限,C02小车原点,C02小车正极限,C02小车负极限,C02吹气抬起气缸原点1,C02吹气抬起气缸原点2,C02吹气抬起气缸原点3,C02吹气抬起气缸原点4,C02玻璃抬起气缸原点1,C02玻璃抬起气缸原点2,C02吹气抬起气缸原点1,C02吹气抬起气缸原点2,C02吹气抬起气缸原点3,C02吹气抬起气缸原点4,C02玻璃抬起气缸原点1,C02玻璃抬起气缸原点2,C02吹气输出,C02吹气抬起输出,C02玻璃抬起输出,红灯,黄灯,绿灯,脚踏开关
# PlcIO.State=DB101.0.0,DB101.0.1,DB101.0.2,DB101.2.1,DB101.2.2,DB101.2.3,DB101.2.4,DB101.2.5,DB101.2.6,DB101.2.7,DB101.3.0,DB101.3.1,DB101.3.2,DB101.3.3,DB101.3.4,DB101.4.0,DB101.4.1,DB101.4.2,DB101.4.3,DB101.4.4,DB101.4.5,DB101.4.6,DB101.4.7,DB101.5.0,DB101.5.1,DB101.5.2,DB101.5.3,DB101.6.0,DB101.6.1,DB101.6.2,DB101.6.3,DB101.6.4,DB101.8.0,DB101.8.1,DB101.8.2,DB101.8.3,DB101.8.4,DB101.8.5,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3,DB101.10.4,DB101.10.5,DB101.12.0,DB101.12.1,DB101.12.2,DB101.14.0,DB101.14.1,DB101.14.2,DB101.14.3,DB101.14.4,DB101.16.0,DB101.16.1,DB101.16.2,DB101.16.3,DB101.16.4,DB101.16.5,DB101.18.0,DB101.18.1,DB101.18.2,DB101.18.3,DB101.18.4,DB101.18.5,DB101.20.0,DB101.20.1,DB101.20.2,DB101.22.0,DB101.22.1,DB101.22.2,DB101.22.3
PlcIO.state=DB12.2.0,DB12.2.1,DB12.2.2,DB12.4.2,DB12.4.3,DB12.4.4,DB12.4.5,DB12.4.6,DB12.4.7,DB12.5.0,DB12.5.1,DB12.5.2,DB12.5.3,DB12.5.4,DB12.5.5,DB12.8.2,DB12.8.3,DB12.8.4,DB12.8.5,DB12.8.6,DB12.8.7,DB12.9.0,DB12.9.1,DB12.9.2,DB12.9.3,DB12.9.4,DB12.9.7,DB12.10.6,DB12.10.7,DB12.11.0,DB12.12.0,DB12.12.1,DB12.12.2,DB12.12.3,DB12.12.4,DB12.12.5,DB12.14.0,DB12.14.1,DB12.14.2,DB12.14.3,DB12.14.4,DB12.14.5,DB12.14.6,DB12.14.7,DB12.15.0,DB12.15.1,DB12.16.0,DB12.16.1,DB12.16.2,DB12.18.6,DB12.18.7,DB12.19.0,DB12.20.0,DB12.20.1,DB12.20.2,DB12.20.3,DB12.20.4,DB12.20.5,DB12.22.0,DB12.22.1,DB12.22.2,DB12.22.3,DB12.22.4,DB12.22.5,DB12.22.6,DB12.22.7,DB12.23.0,DB12.23.1,DB12.24.0,DB12.24.1,DB12.24.2
# PlcIO.Name=Sr.Dec,Sr.LowE,Sr.OutPos,Sr.InToX,Sr.GaToXIn,Sr.DecToXOut,Sr.GaToY1,Sr.GaToY2,Sr.GaToY3,Sr.GaToY4,Sr.DecToY,Sr.GaToY,Sr.HomeToY,SQ.LimitSwitchTop,SQ.LimitSwitchBottom,Sr.Travellimitleft,Sr.PosToLeft,Sr.DecToLeft,Sr.DecToRight,Sr.PosToRight,Sr.TravellimitRight,SQ.LimitSwitch+,SQ.LimitSwitch-,Sr.HomeToTurn,SQ.LimitSwitchToTurnTop,SQ.LimitSwitchToTurnBottom,oilPump,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Red,Yellow,Green,FootSwitch
PlcIO.Name=Sr.Low, Sr.OutDec, Sr.OutPos, Sr.XCheck, Sr.XDec, Sr.XPos, Sr.H1, Sr.H2, Sr.H3, Sr.H4, Sr.YChecK, Sr.YDec, Sr.travellimitTop, Sr.travellimitBottom, Sr.YZero, Sr.Travellimitleft, Sr.PosToLeft, Sr.DecToLeft, Sr.DecToRight, Sr.PosToRight, Sr.TravellimitRight, SQ.LimitSwitch+, SQ.LimitSwitch-, Sr.HomeToTurn, SQ.LimitSwitchToTurnTop, SQ.LimitSwitchToTurnBottom, oilPump, Sr.InOrigin, SQ.LimitSwitch+, SQ.LimitSwitch-, biBasPosBlowUp1, biBasPosBlowUp2, biBasPosBlowUp3, biBasPosBlowUp4, biBasPosGlassUp1, biBasPosGlassUp2, biWorkBlowSr1, biWorkBlowSr2, biWorkBlowSr3, biWorkBlowSr4, biWorkPosBlowUp1, biWorkPosBlowUp2, biWorkPosBlowUp3, biWorkPosBlowUp4, biWorkPosGlassUp1, biWorkPosGlassUp2, boWorkPosBlow, boWorkPosBlowUp, boWorkPosGlassUp
PlcIo.Name1=LOW-E检测光电, 出口减速光电, 出口到位光电, X轴寻边, X轴出口减速, X轴出口到位, Y轴高度感应1, Y轴高度感应2, Y轴高度感应3, Y轴高度感应4, Y轴寻边, Y轴高度减速, 上极限, 下极限, Y轴原点, 左极限, 左到位, 左减速, 右减速, 右到位, 右极限, 大车正极限, 大车负极限, 翻转原点, 翻转上极限, 翻转下极限, 油泵输出, 小车原点, 小车正极限, 小车负极限, 吹气抬起气缸原点1, 吹气抬起气缸原点2, 吹气抬起气缸原点3, 吹气抬起气缸原点4, 玻璃抬起气缸原点1, 玻璃抬起气缸原点2, 吹气感应1, 吹气感应2, 吹气感应3, 吹气感应4, 吹气抬起气缸动点1, 吹气抬起气缸动点2, 吹气抬起气缸动点3, 吹气抬起气缸动点4, 玻璃抬起气缸动点1, 玻璃抬起气缸动点2, 吹气输出, 吹气抬起输出, 玻璃抬起输出
# PlcIo.Name1=A01减速光电,LOW-E检测光电,A01出口到位光电,A02X轴入口减速光电,A02X轴入口测量光电,A02X轴出口减速光电,A02Y轴粗定位1(最低位),A02Y轴粗定位2,A02Y轴粗定位3,A02Y轴粗定位4(最高位),A02Y轴减速光电,A02Y轴测量光电,A02Y轴原点,A02Y轴上极限,A02Y轴下极限,B01左极限,B01左到位,B01左减速,B01右减速,B01右到位,B01右极限,B01大车正极限,B01大车负极限,B01翻转原点,B01翻转上极限,B01翻转下极限,B01油泵输出,C01左极限,C01右极限,C01小车原点,C01小车正极限,C01小车负极限,C01吹气抬起气缸原点1,C01吹气抬起气缸原点2,C01吹气抬起气缸原点3,C01吹气抬起气缸原点4,C01玻璃抬起气缸原点1,C01玻璃抬起气缸原点2,C01吹气抬起气缸原点1,C01吹气抬起气缸原点2,C01吹气抬起气缸原点3,C01吹气抬起气缸原点4,C01玻璃抬起气缸原点1,C01玻璃抬起气缸原点2,C01吹气输出,C01吹气抬起输出,C01玻璃抬起输出,C02左极限,C02右极限,C02小车原点,C02小车正极限,C02小车负极限,C02吹气抬起气缸原点1,C02吹气抬起气缸原点2,C02吹气抬起气缸原点3,C02吹气抬起气缸原点4,C02玻璃抬起气缸原点1,C02玻璃抬起气缸原点2,C02吹气抬起气缸原点1,C02吹气抬起气缸原点2,C02吹气抬起气缸原点3,C02吹气抬起气缸原点4,C02玻璃抬起气缸原点1,C02玻璃抬起气缸原点2,C02吹气输出,C02吹气抬起输出,C02玻璃抬起输出,红灯,黄灯,绿灯,脚踏开关
#A01参数
PlcA01.param=DB101.44,DB101.48,DB101.52,DB101.56,DB101.60
#A01按钮