| New file |
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | |
| | | import java.io.IOException; |
| | | import java.sql.SQLException; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.example.springboot.service.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import com.example.springboot.entity.Glass; |
| | | import com.example.springboot.entity.Out_slice; |
| | | import com.example.springboot.entity.Queue; |
| | | 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.device.PlcBitObject; |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | import com.example.springboot.mapper.HomeMapper; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | |
| | | public class PlchomeNew extends Thread { |
| | | |
| | | @Autowired |
| | | private HomeMapper homeMapper; |
| | | private OutSliceServive outSliceServive; |
| | | private SpianMapper spianMapper; |
| | | private SpianService spianService; |
| | | private North_Glass_Buffer1Service north_Glass_Buffer1Service; |
| | | private JdbcConnections dbserve; |
| | | // 出片队列是否允许出片 |
| | | public static Boolean isAllowQueue = true; |
| | | public static Boolean isAllowReordering = true; |
| | | // 出片队列警告 |
| | | public static Boolean isQueueWarning = false; |
| | | // 铝框id |
| | | public static String FrameNo = ""; |
| | | // 是否需要手动确认玻璃 |
| | | public static Boolean isConfirm = false; |
| | | // 待确认的出片队列 |
| | | public static List<north_glass_buffer1> AluminumFrame; |
| | | |
| | | // private Configuration config; |
| | | |
| | | private StorageCageService storageCageService; |
| | | |
| | | public static Boolean FeedState = false; |
| | | |
| | | // public Plchome() throws IOException { |
| | | // config = new Configuration("config.properties"); |
| | | // } |
| | | |
| | | // public static Map b=new HashMap<>(); |
| | | // b.put() |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | try { |
| | | Thread.sleep(1000); |
| | | // 注入mapper |
| | | |
| | | homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); |
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class); |
| | | outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class); |
| | | north_Glass_Buffer1Service = WebSocketServer.applicationContext |
| | | .getBean(North_Glass_Buffer1Service.class); |
| | | storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class); |
| | | dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | |
| | | // 笼子使用情况 |
| | | List<StorageCage> tableData = homeMapper.selectAll(); |
| | | jsonObject.append("tableData", tableData); |
| | | // 格理片笼格子状态 |
| | | List<StorageCage> cagelist1 = homeMapper.selectRack1(); |
| | | List<StorageCage> cagelist2 = homeMapper.selectRack2(); |
| | | List<StorageCage> cagelist3 = homeMapper.selectRack3(); |
| | | List<StorageCage> cagelist4 = homeMapper.selectRack4(); |
| | | jsonObject.append("cagelist1", cagelist1); |
| | | jsonObject.append("cagelist2", cagelist2); |
| | | jsonObject.append("cagelist3", cagelist3); |
| | | jsonObject.append("cagelist4", cagelist4); |
| | | // 进出片任务 |
| | | List<StorageCage> tasklist1 = homeMapper.selectinout(3); |
| | | List<StorageCage> tasklist2 = homeMapper.selectinout(2); |
| | | jsonObject.append("tasklist1", tasklist1); |
| | | jsonObject.append("tasklist2", tasklist2); |
| | | // 查询报警信息 |
| | | List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo(); |
| | | jsonObject.append("alarmmg", alarmmg); |
| | | |
| | | // 伍 获取进是否有待确认的玻璃id |
| | | String queid = spianMapper.Selectqueueid(); |
| | | int state = spianMapper.Selectqueuestate(); |
| | | jsonObject.append("queid", queid); |
| | | jsonObject.append("state", state); |
| | | // 获取扫码位与上片位玻璃信息 |
| | | Queue form2 = homeMapper.GetQueueInfo(2); |
| | | Queue form3 = homeMapper.GetQueueInfo(1); |
| | | if (form2.getglassId() != null && form2.getglassId() != "") { |
| | | jsonObject.append("form2", form2); |
| | | } |
| | | if (form3.getglassId() != null && form3.getglassId() != "") { |
| | | jsonObject.append("form3", form3); |
| | | } |
| | | // 获取出片队列信息 |
| | | List<Out_slice> listoutslice = outSliceServive.SelectProductionqueue(); |
| | | jsonObject.append("listoutslice", listoutslice); |
| | | // 获取当前出片队列出片状态 |
| | | jsonObject.append("isAllowQueue", PlchomeNew.isAllowQueue); |
| | | // 获取出片队列警告状态 |
| | | jsonObject.append("isQueueWarning", PlchomeNew.isQueueWarning); |
| | | // 获取当前出片队列调序状态 |
| | | jsonObject.append("isAllowReordering", PlchomeNew.isAllowReordering); |
| | | // 是否需要人工确认上片玻璃 |
| | | jsonObject.append("isConfirm", isConfirm); |
| | | // 查询当前铝框信息 |
| | | Out_slice CurrentFrame = outSliceServive.SelectCurrentFrame(); |
| | | jsonObject.append("CurrentFrame", CurrentFrame); |
| | | |
| | | // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16)); |
| | | // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14)); |
| | | |
| | | // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter); |
| | | // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest); |
| | | // public static PlcBitObject plcBitObject = initUtil.initbit(PlcSign); |
| | | // public static PlcParameterObject plcStateObject = initUtil.initword(PlcState); |
| | | // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm); |
| | | // public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes); |
| | | // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead); |
| | | // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe); |
| | | |
| | | PlcParameterObject PlcParameter = PLCAutoMes.plcParameterObject;// plc参数地址DB100 |
| | | PlcBitObject PlcTest = PLCAutoMes.plcPlcTest;// plc标识地址DB101 |
| | | PlcBitObject PlcSign = PLCAutoMes.plcBitObject;// plc设备状态地址DB102 |
| | | PlcParameterObject PlcState = PLCAutoMes.plcStateObject;// plc状态地址DB103 |
| | | PlcBitObject PlcAlarm = PLCAutoMes.plcPlcAlarm;// plc报警地址DB104 |
| | | PlcParameterObject MesMission = PLCAutoMes.PlcMesObject;// mes任MES务地址DB105 |
| | | PlcParameterObject PLCMission = PLCAutoMes.PlcReadObject;// plc任务地址DB106 |
| | | PlcParameterObject Plcframe = PLCAutoMes.PlcframeObject;// plc铝框地址DB17 |
| | | |
| | | // if (S7control.getinstance().CheckConnected() == true) { |
| | | |
| | | // 铝框线交互 |
| | | if (S7controlLK.getinstance().CheckConnected() == true) { |
| | | if (CurrentFrame != null) { |
| | | S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), |
| | | Plcframe.getPlcParameter("E01id") |
| | | .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex())); |
| | | } |
| | | String E01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("E01id") |
| | | .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex())); |
| | | String J01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("J01id") |
| | | .getAddress(Plcframe.getPlcParameter("J01id").getAddressIndex())); |
| | | |
| | | String framerequest = Plcframe.getPlcParameter("J01Quest").getValue(); |
| | | // List<Short> liststates = S7controlLK.getinstance().ReadWord("DB17.38", 1); |
| | | // List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1); |
| | | // Short framerequest = liststate.get(0); |
| | | if (framerequest.equals("1")) { |
| | | // 铝框id |
| | | String position; |
| | | try { |
| | | position = dbserve.SelectPositionByFrameBarcode(J01id); |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | position = "0"; |
| | | e.printStackTrace(); |
| | | } |
| | | Short send; |
| | | if (position.equals("0")) { |
| | | send = 0; |
| | | } else { |
| | | send = 1; |
| | | } |
| | | S7controlLK.getinstance().WriteWord(Plcframe.getPlcParameter("J01Quest") |
| | | .getAddress(Plcframe.getPlcParameter("J01Quest").getAddressIndex()), (short) send); |
| | | } |
| | | } |
| | | |
| | | // 获取当前扫码方式 |
| | | // List<Boolean> Scanningmethods = |
| | | // S7control.getinstance().ReadBits("DB101.11.4", 1); |
| | | // if (Scanningmethods != null) { |
| | | // for (Boolean Scanningmethod : Scanningmethods) { |
| | | // jsonObject.append("Scanningmethod", Scanningmethod); |
| | | // } |
| | | // } |
| | | // |
| | | Boolean Scanningmethod = PlcTest.getPlcBit("Scanningmethod").getValue(); |
| | | if (Scanningmethod != null) { |
| | | jsonObject.append("Scanningmethod", Scanningmethod); |
| | | } |
| | | |
| | | // 获取当前扫码枪玻璃id |
| | | String CurrrentGlassId=PlcState.getPlcParameter("Scanningguns").getValue(); |
| | | |
| | | // String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString(); |
| | | jsonObject.append("CurrrentGlassId", CurrrentGlassId); |
| | | |
| | | // 获取D01-D06,A01,A02,B01,B02状态 |
| | | // List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10); |
| | | List<String> DeviceStateList=new ArrayList<String>(); |
| | | DeviceStateList.add("D01.State"); |
| | | DeviceStateList.add("D02.State"); |
| | | DeviceStateList.add("B01.State"); |
| | | DeviceStateList.add("B02.State"); |
| | | DeviceStateList.add("A01.State"); |
| | | DeviceStateList.add("A02.State"); |
| | | DeviceStateList.add("D03.State"); |
| | | DeviceStateList.add("D04.State"); |
| | | DeviceStateList.add("D05.State"); |
| | | DeviceStateList.add("D06.State"); |
| | | List<String> DeviceList=PlcState.getPlcParameterValues(DeviceStateList); |
| | | jsonObject.append("DeviceList", DeviceList); |
| | | |
| | | // 获取D01-D06,A01,A02,B01,B02玻璃id |
| | | List<String> GlassStateList=new ArrayList<String>(); |
| | | GlassStateList.add("D01ID"); |
| | | GlassStateList.add("D02ID"); |
| | | GlassStateList.add("B01ID1"); |
| | | GlassStateList.add("B02ID1"); |
| | | GlassStateList.add("A01ID1"); |
| | | GlassStateList.add("A01ID2"); |
| | | GlassStateList.add("A02ID1"); |
| | | GlassStateList.add("D03ID"); |
| | | GlassStateList.add("D04ID"); |
| | | GlassStateList.add("D05ID"); |
| | | GlassStateList.add("D06ID"); |
| | | List<String> GlassIdList = PlcState.getPlcParameterValues(GlassStateList); |
| | | // List<String> GlassIdList = new ArrayList<String>(); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString()); |
| | | |
| | | // GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString()); |
| | | |
| | | // GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString()); |
| | | |
| | | // GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString()); |
| | | // GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString()); |
| | | jsonObject.append("GlassIdList", GlassIdList); |
| | | |
| | | // 获取Plc进片车与出片车位置 |
| | | List<String> addressList = new ArrayList<String>(); |
| | | addressList.add("A02Position"); |
| | | addressList.add("A01Position"); |
| | | List<String> paramlist=PLCMission.getPlcParameterValues(addressList); |
| | | // 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);// 获取进片车状态 |
| | | // if (datas1ListState != null) { |
| | | // 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); |
| | | // } |
| | | // } |
| | | // // 获取铝框idDB106.DBW64,添加到出片队列 |
| | | // String frameno="X21763329601FB"; |
| | | |
| | | String frameno=PlcState.getPlcParameter("Frameid").getValue();//待电气更新地址表格 |
| | | // String frameno = spianService.queGlassid("DB103.270", 14).toString(); |
| | | if (!frameno.equals(PlchomeNew.FrameNo)) { |
| | | PlchomeNew.FrameNo = frameno; |
| | | try { |
| | | Short num = 0; |
| | | List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service |
| | | .SelectAluminumFrameInfoById(PlchomeNew.FrameNo); |
| | | for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { |
| | | if (north_glass_buffer1.getstorageCage() == null) { |
| | | break; |
| | | } |
| | | num++; |
| | | } |
| | | if (num == north_glass_buffer1s.size()) { |
| | | north_Glass_Buffer1Service.AddOutSliceS(PlchomeNew.FrameNo); |
| | | } else { |
| | | PlchomeNew.AluminumFrame = north_glass_buffer1s; |
| | | } |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | if (AluminumFrame != null) { |
| | | jsonObject.append("AluminumFrame", AluminumFrame); |
| | | } |
| | | |
| | | // 复位倒计时 |
| | | // 地址104.9.6 |
| | | Boolean countdown=PlcAlarm.getPlcBit("resetDelay").getValue(); |
| | | jsonObject.append("countdown", countdown); |
| | | // List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); |
| | | // for (Boolean countdowns : countdown) { |
| | | // jsonObject.append("countdown", countdowns); |
| | | // } |
| | | // jsonObject.append("countdown", true); |
| | | // 复位完成信号 |
| | | String reset=PlcState.getPlcParameter("resetDelay").getValue(); |
| | | jsonObject.append("reset", reset); |
| | | // List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1); |
| | | // for (Boolean reset : resetss) { |
| | | // jsonObject.append("reset", reset); |
| | | // } |
| | | |
| | | // 是否急停 |
| | | Boolean emergencystop=PlcAlarm.getPlcBit("emergencystopalarm").getValue(); |
| | | jsonObject.append("emergencystop", emergencystop); |
| | | |
| | | // List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); |
| | | // for (Boolean emergencystop : emergencystops) { |
| | | // jsonObject.append("emergencystop", emergencystop); |
| | | // } |
| | | // 获取进片请求状态 |
| | | String D01Request=PLCMission.getPlcParameter("FeedRequest").getValue(); |
| | | |
| | | // List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); |
| | | Boolean D01RequestState = D01Request.contains("1"); |
| | | jsonObject.append("D01RequestState", D01RequestState); |
| | | |
| | | // 获取进片发送状态 |
| | | String D01respnse=PLCMission.getPlcParameter("A02QuestStartPosition").getValue(); |
| | | // List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1); |
| | | boolean D01ResponseState = D01respnse.contains("1"); |
| | | // jsonObject.append("D01RequestState", D01RequestState); |
| | | // 自动进片 |
| | | isConfirm = true; |
| | | if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") { |
| | | if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390 || form3.getglassheight() > 1810 |
| | | || form3.getglasswidth() > 2760) |
| | | || (form3.getglassheight() < 390 || form3.getglasswidth() < 380 |
| | | || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) { |
| | | FeedState = true; |
| | | jsonObject.append("FeedState", FeedState); |
| | | FeedState = false; |
| | | } else { |
| | | if (D01RequestState == true && D01ResponseState != true) { |
| | | storageCageService.InsertQueueGlassId((short) 1, form3); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // } |
| | | |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | boolean dbconnected = false; |
| | | try { |
| | | dbserve.getConn(); |
| | | dbconnected = true; |
| | | } catch (Exception e) { |
| | | // TODO: handle exception |
| | | dbconnected = false; |
| | | } |
| | | jsonObject.append("dbconnected", dbconnected); |
| | | // jsonObject.append("params", new short[] { 30, 40, }); |
| | | 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(); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |