ZengTao
2023-11-28 af5edce322ff326356a32011e140182846c5dbed
测试后调整理片逻辑
11个文件已修改
246 ■■■■■ 已修改文件
.vscode/settings.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/settings.json
@@ -1,3 +1,4 @@
{
    "java.configuration.updateBuildConfiguration": "interactive"
    "java.configuration.updateBuildConfiguration": "interactive",
    "java.debug.settings.onBuildFailureProceed": true
}
CanadaMes-ui/src/lang/locales/en-US.json
@@ -254,7 +254,7 @@
  "endTime":"endTime",
  "The Side":"The Side",
  "barcode":"barcode",
  "Barcode":"Barcode",
  "Order No":"Order No",
  "List No":"List No",
  "Box No":"Box No",
CanadaMes-ui/src/views/home/index.vue
@@ -341,10 +341,10 @@
                    <el-input v-model="form.glassheight" readonly autocomplete="off" />
                </el-form-item>
                <el-form-item :label="$t('Length')">
                    <el-input v-model="form.glasslengthMm" readonly autocomplete="off" />
                    <el-input v-model="form.glasslengthmm" readonly autocomplete="off" />
                </el-form-item>
                <el-form-item :label="$t('Width')">
                    <el-input v-model="form.glassheightMm" readonly autocomplete="off" />
                    <el-input v-model="form.glassheightmm" readonly autocomplete="off" />
                </el-form-item>
            </el-form>
@@ -771,9 +771,11 @@
                    } else {
                        this.form2 = {};
                    }
                    console.log(obj.form3);
                    if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) {
                        this.form3 = obj.form3[0];
                    } else {
                        this.form3 = {};
@@ -1276,8 +1278,8 @@
                dats2_[1]=item.isCheck;
                dats2_[2]=item.Flip;
                dats2_[3]=item.FrameNo;
                dats2_[4]=item.glasslengthMm;
                dats2_[5]=item.glassheightMm;
                dats2_[4]=item.glasslengthmm;
                dats2_[5]=item.glassheightmm;
                dats_[dats_.length]=dats2_;
            });
            console.log(dats_);
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -2,6 +2,7 @@
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import org.apache.ibatis.javassist.compiler.ast.Symbol;
@@ -39,12 +40,12 @@
      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
      String str = "Hello";
      char[] charArray = new char[str.length()];
      for (int i = 0; i < str.length(); i++) {
        charArray[i] = str.charAt(i);
      }
      System.out.println(charArray);
      // String str = "Hello";
      // char[] charArray = new char[str.length()];
      // for (int i = 0; i < str.length(); i++) {
      // charArray[i] = str.charAt(i);
      // }
      // System.out.println(charArray);
      // spianService.selectout("1145");
      // spianService.selectAll("11");
      // spianService.selectAll2();
@@ -95,7 +96,8 @@
          // 当进片车空闲时
          if (exist1 == true) {
            // 获取已下发的进片id 与plc请求的id作比较
            byte[] writedglassidbytes = S7control.getinstance().ReadByte("DB105.16", 13);
            byte[] writedglassidbytes = S7control.getinstance().ReadByte("DB105.16", 14);
            String teststr1=new String(writedglassidbytes);
            if (writedglassidbytes != null) { //
              // 获取玻璃id
              for (byte iditem : writedglassidbytes) {
@@ -103,21 +105,23 @@
              }
            }
            // 获取进片id
            byte[] datas1ListID = S7control.getinstance().ReadByte("DB106.26", 13);
            if (datas1ListID != null) {
            byte[] datas1ListID = S7control.getinstance().ReadByte("DB106.26", 14);
            String teststr=new String(datas1ListID);
            if (teststr != null) {
              // 获取玻璃id
              for (byte list1 : datas1ListID) {
                strId.append(list1);
              }
              if (!writedstrId.toString().equals(strId.toString())) // 已经下发的id与plc请求的id不一样时,认为不是重复的任务,才执行下发任务指令
              if (teststr1.equals(teststr)) // 已经下发的id与plc请求的id不一样时,认为不是重复的任务,才执行下发任务指令
              {
                north_glass_buffer1 glass1 = spianMapper.selectGlass(teststr.toString());
                int questate = spianMapper.Selectqueuestate();
                if (questate == 0) {
                  spianMapper.insertqueue(teststr, 1,glass1.getglasslengthmm());
                  //spianService.selectAll(teststr);
                int glasslimit = 1;// 判断是否是多片上片
                if (glasslimit == 1) {
                  spianService.selectAll(strId.toString());
                } else {
                  spianService.selectAll(strId.toString());
                  //spianService.selectAll(teststr);
                }
                S7control.getinstance().WriteByte("DB105.16", datas1ListID);// 派发进片id
@@ -136,29 +140,34 @@
        }
      }
      // 获取DO1数据
      StringBuilder queueid1 = spianService.queGlassid("DB106.DBB26");
      // 获取DO2数据
      StringBuilder queueid2 = spianService.queGlassid("DB103.DBB46");
      int questate = spianMapper.Selectqueuestate();
      //queueid1.toString().isEmpty()
      if (queueid1!=null&& questate == 0) {
        // 写入D01的数据到上片队列表
        north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());
        spianMapper.insertqueue(queueid1.toString(), 1, glass1.getglasslengthmm());
      }
      if (queueid2.toString().isEmpty()) {
        // 写入D02的数据到上片队列表
        north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());
        spianMapper.insertqueue(queueid2.toString(), 2, glass2.getglasslengthmm());
      }
      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.14", 1); // 出片任务是否启动
      StringBuilder writedstrIdOut = new StringBuilder();
      //StringBuilder writedstrIdOut = new StringBuilder();
      // 获取已下发的出片id
      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 13);
      if (writedglassidbytesOut != null) {
        // 获取玻璃id
        for (byte iditem : writedglassidbytesOut) {
          writedstrIdOut.append((char) iditem);
        }
      }
      // 获取BO1数据
      StringBuilder queueid1 = spianService.queGlassid("DB103.DBB32");
      // 获取BO2数据
      StringBuilder queueid2 = spianService.queGlassid("DB103.DBB46");
      if (queueid1 != null) {
        // 写入B01的数据到上片队列表
        spianMapper.insertqueue(queueid1.toString(), 1, 0);
      }
      if (queueid2 != null) {
        // 写入B02的数据到上片队列表
        spianMapper.insertqueue(queueid2.toString(), 2, 0);
      }
      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
      String writedstrIdOut=new String(writedglassidbytesOut);
      // 出片任务////////////////////////////////
      boolean outstate = false;// 出片车空闲判断
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -1,6 +1,8 @@
package com.example.springboot.component;
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.alarmmg;
@@ -54,28 +56,28 @@
            // 查询报警信息
            List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
            jsonObject.append("alarmmg", alarmmg);
            // // 读去Plc进片车与出片车位置W
            // List<String> addressList = new ArrayList<String>();
            // addressList.add("DB106.12");
            // addressList.add("DB106.0");
            // List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
            // if (paramlist != null) {
            // jsonObject.append("params", paramlist);
            // }
            // // 获取进片车状态
            // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
            // 1);// 获取进片车状态
            // boolean exist1 = datas1ListState.contains((short) 0);
            // jsonObject.append("zhuangtai", exist1);
            // 获取进片玻璃信息
            // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
            // if (inglassInfo != null) {
            // if (inglassInfo.size() > 0)
            // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
            // }
            // 伍 获取进是否有待确认的玻璃id
            // 读去Plc进片车与出片车位置W
            List<String> addressList = new ArrayList<String>();
            addressList.add("DB106.12");
            addressList.add("DB106.0");
            List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
            if (paramlist != null) {
            jsonObject.append("params", paramlist);
            }
            // 获取进片车状态
            List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
            1);// 获取进片车状态
            boolean exist1 = datas1ListState.contains((short) 0);
            jsonObject.append("zhuangtai", exist1);
            //获取进片玻璃信息
            List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
            if (inglassInfo != null) {
            if (inglassInfo.size() > 0)
            jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
            }
            //伍 获取进是否有待确认的玻璃id
            String queid = spianMapper.Selectqueueid();
            String state = spianMapper.Selectqueuestate();
            int state = spianMapper.Selectqueuestate();
            jsonObject.append("queid", queid);
            jsonObject.append("state", state);
            // 获取扫码位与上片位玻璃信息
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,7 +17,6 @@
import com.example.springboot.component.PlcPositioning2;
import com.example.springboot.component.PlcParameter2;
import com.example.springboot.component.PlcParameter1;
import com.example.springboot.component.PlcServoManualone;
@Component
@Order(1)
@@ -34,7 +33,7 @@
//  new Plcaction().start();
//
//    new Plchome().start();
   new Plchome().start();
//
//  new PlcParameter().start();
//
@@ -43,10 +42,10 @@
//    new Plcsign().start();
//
//    new Plcstate().start();
 new PlcPositioning1().start();
      new PlcPositioning2().start();
      new PlcParameter2().start();
      new PlcParameter1().start();
      new PlcServoManualone().start();
//  new PlcPositioning1().start();
//       new PlcPositioning2().start();
//       new PlcParameter2().start();
//       new PlcParameter1().start();
      // new PlcServoManualone().start();
  }
}
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -1,19 +1,14 @@
package com.example.springboot.controller;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.util.PropertySource.Comparator;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.springboot.mapper.HomeMapper;
import com.example.springboot.mapper.SpianMapper;
import com.example.springboot.service.HomeService;
import com.example.springboot.service.MultiFieldComparator;
import com.example.springboot.service.SpianService;
import com.example.springboot.common.Result;
import com.example.springboot.component.S7control;
@@ -228,7 +223,7 @@
      map.put("message", "300");
    } else {
      homeMapper.Inglassid(north_glass_buffer1s, cage, cell, tier);
      spianMapper.UpdataAddCage1(north_glass_buffer1s.getglasslengthMm(), cage, cell);
      spianMapper.UpdataAddCage1(north_glass_buffer1s.getglasslengthmm(), cage, cell);
    }
    return Result.success(map);
  }
@@ -252,7 +247,7 @@
    } else {
      homeMapper.InsertQueueGlassId(glassid, id);
    //调用伍存储过程
    spianMapper.selectAll(glassid);
    spianService.selectAll(glassid);
      map.put("message", "200");
    }
    return Result.success(map);
springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
@@ -20,6 +20,26 @@
    private String datecreated;//
    private String FrameBarcode;//
    private StorageCage storageCage;
    public void setstorageCage(StorageCage storageCage) {
        this.storageCage = storageCage;
    }
    public StorageCage getstorageCage() {
        return storageCage;
    }
    private Out_slice out_slice;
    public void setOut_slice(Out_slice out_slice) {
        this.out_slice = out_slice;
    }
    public Out_slice getOut_slice() {
        return out_slice;
    }
    public Integer id() {
        return id;
    }
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -7,7 +7,6 @@
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.alarmmg;
import com.example.springboot.entity.north_glass_buffer1;
import com.example.springboot.entity.north_glass_buffer1_frames;
import com.example.springboot.entity.Out_slice;
import java.util.List;
@@ -99,7 +98,7 @@
  void Disabled(short cage, short cell, short disabled);
  //理片笼新增玻璃
  @Update("update storage_cage set state=1,glass_id=#{glass.barcode},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthMm},glassheight=#{glass.glassheightMm} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
  @Update("update storage_cage set state=1,glass_id=#{glass.barcode},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthmm},glassheight=#{glass.glassheightmm} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
  void Inglassid(north_glass_buffer1 glass, short cage, short cell, short tier);
  //查询理片笼中是否有此玻璃
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -36,7 +36,7 @@
    @Update("update longzi set glass_id =123, width =1600, state =1 where cell =24")
     void  update();
     //获取玻璃信息
     @Select("select orderid as ordernumber,width as glasslengthmm from glass where glassid=#{glassid}")
     @Select("select ordernumber as ordernumber,glasslength_mm as glasslengthmm,barcode from north_glass_buffer1 where barcode=#{glassid}")
     north_glass_buffer1 selectGlass(String glassid);
    
    @Insert("insert into storage_task(task_type,task_state,shelf_rack,load_rack)values(#{storage_task},#{task_state},#{shelf_rack},#{load_rack})")
@@ -52,7 +52,7 @@
     StorageCage selectOut2(String  glassid);
    //判断出片为1时,是否可直接出片
    @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell}")
    @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell} and state=1")
     int selectGlassState(int  cage,int cell);
     //判断该调拨的笼子
@@ -113,7 +113,7 @@
     Integer Selectoutstate();
     //添加任务序列
     //获取进片队列id
     @Insert("INSERT INTO `canadames`.`queue`(`glassid`, `type`, `state`,width) VALUES (#{glassid},#{type},0,#{width});")
     @Insert("update queue set glassid=#{glassid},width=#{width} where type=#{type};")
     void insertqueue(String glassid,int type,double width);
     //获取任务序列
     @Select("select glassid,orderid,width,type from queue where state=#{state}")
@@ -139,14 +139,15 @@
     //获取进片队列id
     @Select("select glassid from queue where type=1")
     String Selectqueueid();
     //获取进片队列id
     //获取进片队列是否有待出库
     @Select("select state from queue where type=1")
     String Selectqueuestate();
     int Selectqueuestate();
     //判断铝框出片表是否有玻璃需要出
     @Select("SELECT * FROM `out_slice` where state=0 or state=0 order by id limit 1;")
     @Select("SELECT glassid FROM `out_slice` where state=0  order by id limit 1;")
     String SelectOutSlice();
     //判断铝框出片表是否有玻璃正在出片中
     @Select("SELECT count(*) FROM `out_slice` where state=1 or state=0 order by id limit 1;")
     @Select("SELECT count(*) FROM `out_slice` where state=1;")
     int SelectOutSliceshu();
}   
    
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -45,8 +45,10 @@
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.0");// 进片车起始位置
        adddresslist.add("DB105.2");// 进片车目标位置
        adddresslist.add("DB105.4");// 进片笼玻璃数
        adddresslist.add("DB105.12");// 进片车启动 1为启动
        adddresslist.add("DB105.4");// 进片玻璃宽
        adddresslist.add("DB105.8");//进片笼内已有玻璃数
        adddresslist.add("DB105.16");// 进片车启动 1为启动
        List<Short> datas = new ArrayList<>();
        // String orderid="A001";
@@ -79,10 +81,11 @@
                widths = glasslist.getglasslengthmm();
                // 执行进片
                datas.add((short) 1000);
                datas.add((short) prcid);
                datas.add((short) prctier);
                datas.add((short) 1);
                datas.add((short) 1000);//起始位置
                datas.add((short) prcid);//目标位置
                datas.add((short) widths);//进片玻璃宽
                datas.add((short) prctier); //玻璃数
                datas.add((short) 1);//任务启动
                //获取该格子内是否有玻璃
                int cellint=spianMapper.selectcell(cage1,cells);
                if(cellint==1){
@@ -392,10 +395,12 @@
        // spianMapper.UpdatetaskOut(); //完成上一次出片或者调度任务,改到plchold里,出片或调度任务完成立即改变结束任务;
        // 定义PRC数据传送数组
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.6");// 出片车起始位置
        adddresslist.add("DB105.8");// 出片车目标位置
        adddresslist.add("DB105.10");// 出片笼玻璃数
        adddresslist.add("DB105.14");// 出片车启动 1为启动
        char[] a=glassid.toCharArray();
        adddresslist.add("DB105.10");// 出片车起始位置
        adddresslist.add("DB105.12");// 出片车目标位置
        adddresslist.add("DB105.14");// 出片笼玻璃数
        adddresslist.add("DB105.18");// 出片车启动 1为启动
        List<Short> datas = new ArrayList<>();
        // 获取优先出片的位置
        StorageCage cageout = spianMapper.selectOut2(glassid);
@@ -438,16 +443,16 @@
            // 获取格子的玻璃数量
            int state = spianMapper.selectGlassState(cage, cell);
            // 判断内片是否需要调拨
            if (state == 0) {
            if (state == 1) {
                // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);
                datas.add((short) prcid);
                datas.add((short) 1000);
                datas.add((short) 1);
                datas.add((short) 1);
                outmesid(glassid);// 派发出片ID
                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增任务
                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度
                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 清除格子玻璃信息
                outmesid(glassid);// 派发出片ID
                S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务
                return (200);// 结束
@@ -519,19 +524,20 @@
    }
    //派发调拨任务玻璃id
    public void outmesid(String glassid) {
        System.out.println("outmesid:" + glassid);
        //System.out.println("outmesid:" + glassid);
        List<Byte> glassidlist = new ArrayList();
        for (char iditem : glassid.toCharArray()) {
            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
        char ds[]=glassid.toCharArray();
        for (char iditem : ds) {
            glassidlist.add((byte)iditem);
        }
        byte[] bytes = Bytes.toArray(glassidlist);
        System.out.println("outmesidbytes:" + bytes.length);
        S7control.getinstance().WriteByte("DB105.30", bytes);// 派发出片id
        S7control.getinstance().WriteByte("DB105.34", bytes);// 派发出片id
    }
    //获取地址内的玻璃id转字符串
    public StringBuilder queGlassid(String address) {
        StringBuilder writedstrIdOut = new StringBuilder();
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, 13);
        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, 14);
      if (writedglassidbytesOut != null) {
        // 获取玻璃id
        for (byte iditem : writedglassidbytesOut) {