Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
# Conflicts:
# springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
# springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
| | |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "A01行走伺服回零", |
| | | "name": "A01原点记忆", |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0", |
| | |
| | | }, |
| | | { |
| | | "button": { |
| | | "name": "A02行走伺服回零", |
| | | "name": "A02原点记忆", |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0", |
| | |
| | | const jsonString = JSON.stringify(jsonObject);
|
| | | console.log('所有Type为0的value:', jsonString);
|
| | | socket?.send(jsonString);
|
| | | setTimeout(() => {
|
| | | const reversedData = data.map(values => values.map(value => {
|
| | | return (!value || value === 1) ? 0 : 0 ;
|
| | | }));
|
| | | // setTimeout(() => {
|
| | | // const reversedData = data.map(values => values.map(value => {
|
| | | // return (!value || value === 1) ? 0 : 0 ;
|
| | | // }));
|
| | |
|
| | | const reversedJsonObject = { data: reversedData };
|
| | | // const reversedJsonObject = { data: reversedData };
|
| | |
|
| | | // 提交数据到后端
|
| | | const reversedJsonString = JSON.stringify(reversedJsonObject);
|
| | | console.log('反转后:', reversedJsonString);
|
| | | socket?.send(reversedJsonString);
|
| | | }, 1000);
|
| | | // const reversedJsonString = JSON.stringify(reversedJsonObject);
|
| | | // console.log('反转后:', reversedJsonString);
|
| | | // socket?.send(reversedJsonString);
|
| | | // }, 1000);
|
| | |
|
| | | }
|
| | |
|
| | |
| | | const jsonString = JSON.stringify(jsonObject);
|
| | | console.log('所有Type为0的value:', jsonString);
|
| | | socket?.send(jsonString);
|
| | | setTimeout(() => {
|
| | | const reversedData = data.map(values => values.map(value => {
|
| | | return (!value || value === 1) ? 0 : 0 ;
|
| | | }));
|
| | | // setTimeout(() => {
|
| | | // const reversedData = data.map(values => values.map(value => {
|
| | | // return (!value || value === 1) ? 0 : 0 ;
|
| | | // }));
|
| | |
|
| | | const reversedJsonObject = { data: reversedData };
|
| | | // const reversedJsonObject = { data: reversedData };
|
| | |
|
| | | // 提交数据到后端
|
| | | const reversedJsonString = JSON.stringify(reversedJsonObject);
|
| | | console.log('反转后:', reversedJsonString);
|
| | | socket?.send(reversedJsonString);
|
| | | }, 1000);
|
| | | // // 提交数据到后端
|
| | | // const reversedJsonString = JSON.stringify(reversedJsonObject);
|
| | | // console.log('反转后:', reversedJsonString);
|
| | | // socket?.send(reversedJsonString);
|
| | | // }, 1000);
|
| | |
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | //根据进片状态出发进片任务
|
| | | if (obj.FeedState != null) {
|
| | | if (obj.FeedState[0] == true) {
|
| | | this.InsertQueueGlass(1);
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | // if (obj.alarmmg[0].length > 0) {
|
| | | // if (this.alarm.length > 0) {
|
| | | // if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) {
|
| | |
| | |
|
| | | //是否需要手动确认上片
|
| | | this.isConfirm = obj.isConfirm[0];
|
| | |
|
| | | //扫码位玻璃信息
|
| | | if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) {
|
| | | this.form3 = obj.form3[0];
|
| | |
| | | package com.example.springboot.component; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | |
| | | import com.example.springboot.entity.device.PlcBitObject; |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import static com.example.springboot.component.InitUtil.readAndUpdateBitValues; |
| | | import static com.example.springboot.component.InitUtil.readAndUpdateWordValues; |
| | | |
| | | public class PLCAutoMes extends Thread { |
| | | |
| | | // 用于存储应用程序的配置信息 |
| | | private Configuration config; |
| | | private static InitUtil initUtil; |
| | | public static PlcParameterObject plcParameterObject; |
| | | // public static PlcParameterObject PlcMesObject; |
| | | // public static PlcParameterObject PlcReadObject; |
| | | // public static PlcParameterObject PlcframeObject; |
| | | |
| | | // 创建一个自定义的 S7 控制器消息处理器对象 |
| | | MessageHandler customS7Control = new MessageHandler(); |
| | | ; |
| | | |
| | | |
| | | // 单例实例 |
| | | private static PLCAutoMes instance; |
| | | private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath(); |
| | | private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath(); |
| | | private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath(); |
| | | private static String PlcParameter = PLCAutomaticParameterSettingReview2.class |
| | | .getResource("/JsonFile/PlcParameter.json").getPath(); |
| | | private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json") |
| | | .getPath(); |
| | | private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json") |
| | | .getPath(); |
| | | private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath(); |
| | | private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath(); |
| | | |
| | | // 调用initword方法 |
| | | |
| | | 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); |
| | | |
| | | // 私有构造函数 |
| | | public PLCAutoMes() throws IOException { |
| | |
| | | public void run() { |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(1000); |
| | | Thread.sleep(100); |
| | | |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String jsonFilePath = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath(); |
| | | // String jsonFilePath2 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath(); |
| | | //String jsonFilePath4 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath(); |
| | | //System.out.println(jsonFilePath4); |
| | | // 调用initword方法 |
| | | plcParameterObject = initUtil.initword(jsonFilePath); |
| | | |
| | | // List<String> addresses = new ArrayList<>(); |
| | | // addresses.add("conveyorVelocity(AutoFAST)"); |
| | | // addresses.add("A02ID"); |
| | | // addresses.add("conveyorVelocity(Manual)"); |
| | | // |
| | | // PlcParameterObject paramObject = PLCAutomaticParameterSettingReview2.plcParameterObject; |
| | | // |
| | | // |
| | | // |
| | | // List<String> address = paramObject.getAddressListByCodeId(addresses); |
| | | // System.out.println(address); |
| | | // System.out.println(jsonFilePath); |
| | | |
| | | readAndUpdateWordValues(PlcReadObject); |
| | | readAndUpdateWordValues(PlcMesObject); |
| | | readAndUpdateWordValues(PlcframeObject); |
| | | // readAndUpdateWordValues(PlcframeObject); |
| | | |
| | | //PLCAutomaticParameterSettingReview2 plc ; |
| | | |
| | | // String jsonFilePath = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath(); |
| | | // |
| | | // String jsonFilePath2 = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath(); |
| | | // // String jsonFilePath3 = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath(); |
| | | // // System.out.println(jsonFilePath); |
| | | // |
| | | // // 调用initword方法 |
| | | // PlcMesObject= initUtil.initword(jsonFilePath); |
| | | // // 调用initbit方法 |
| | | // PlcParameterObject PlcReadObject= initUtil.initword(jsonFilePath2); |
| | | // // 调用initbit方法 |
| | | // PlcParameterObject PlcframeObject= initUtil.initword(jsonFilePath3); |
| | | // readAndUpdateWordValues(PlcReadObject); |
| | | // readAndUpdateWordValues(PlcMesObject); |
| | | // readAndUpdateWordValues(PlcframeObject); |
| | | |
| | | |
| | | |
| | | |
| | | // readAndUpdateWordValues(plcStateObject); |
| | | // int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex(); |
| | | // //System.out.println(index); |
| | | // PlcMesObject.getPlcParameter("AddStart").getAddress(index); |
| | | // //System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index)); |
| | | // List<String> addresses = new ArrayList<>(); |
| | | // addresses.add("FeedID"); |
| | | // addresses.add("AddStart"); |
| | | // //System.out.println(addresses); |
| | | // //System.out.println(PlcMesObject.getPlcParameterValues(addresses)); |
| | | // List<String> addresses2 = new ArrayList<>(); |
| | | // addresses2.add("FeedID"); |
| | | // addresses2.add("FeedCarStatus"); |
| | | int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex(); |
| | | // System.out.println(index); |
| | | PlcMesObject.getPlcParameter("AddStart").getAddress(index); |
| | | // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index)); |
| | | List<String> addresses = new ArrayList<>(); |
| | | addresses.add("FeedID"); |
| | | addresses.add("AddStart"); |
| | | // System.out.println(addresses); |
| | | // System.out.println(PlcMesObject.getPlcParameterValues(addresses)); |
| | | List<String> addresses2 = new ArrayList<>(); |
| | | addresses2.add("FeedID"); |
| | | addresses2.add("FeedCarStatus"); |
| | | |
| | | // System.out.println(PlcReadObject.getPlcParameterValues(addresses2)); |
| | | |
| | | |
| | | |
| | | System.out.println(PlcReadObject.getPlcParameterValues(addresses2)); |
| | | |
| | | } |
| | | } |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import com.example.springboot.service.JdbcConnections; |
| | | import com.example.springboot.service.SpianService; |
| | | import com.example.springboot.service.SpianServiceNew; |
| | | import com.example.springboot.entity.north_glass_buffer1; |
| | | import com.example.springboot.mapper.AlarmMapper; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | |
| | | private JdbcConnections jdbcConnections; |
| | | private SpianMapper spianMapper; |
| | | private SpianService spianService; |
| | | private SpianServiceNew spianServiceNew; |
| | | int aaa; |
| | | |
| | | @Override |
| | |
| | | // if (S7control.getinstance().CheckConnected() == false) { |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class); |
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); |
| | | spianServiceNew = WebSocketServer.applicationContext.getBean(SpianServiceNew.class); |
| | | jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | // 根据玻璃id获取订单号,单独数据源 |
| | | // try { |
| | |
| | | // } |
| | | |
| | | // 出片任务//////////////////////////////// |
| | | spianServiceNew.selectout2("X21942613103GV"); |
| | | |
| | | List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态 |
| | | List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动 |
| | | |
| | |
| | | package com.example.springboot.component; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import com.example.springboot.service.JdbcConnections; |
| | | import com.example.springboot.service.SpianService; |
| | | import com.example.springboot.entity.north_glass_buffer1; |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | import com.example.springboot.mapper.AlarmMapper; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | |
| | |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class); |
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); |
| | | jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | // 根据玻璃id获取订单号,单独数据源 |
| | | // try { |
| | | // north_glass_buffer1 glass = jdbcConnections.selectGlass(112); |
| | | // // System.out.println(glass.getOrderId()); |
| | | // } catch (SQLException e) { |
| | | // // TODO Auto-generated catch block |
| | | // e.printStackTrace(); |
| | | // } |
| | | |
| | | // 出片任务//////////////////////////////// |
| | | List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态 |
| | | List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动 |
| | | |
| | | boolean Plcout = spianService.listbool("DB106.64"); // 出片请求字 |
| | | boolean Plcout2 = spianService.listbool("DB105.18"); // 出片启动 |
| | | if (Plcout == false&&Plcout2==true) { |
| | | S7control.getinstance().WriteWord("DB105.18", (short) 0);// 出片任务启动改为0 |
| | | System.out.println("关闭出片启动" + LocalDateTime.now());// 出片任务发送字改为0 |
| | | } |
| | | boolean Plcadd = spianService.listbool("DB106.24"); // 进片请求字 |
| | | boolean Plcadd2 = spianService.listbool("DB105.16"); // 进片启动 |
| | | if (Plcadd == false&&Plcadd2==true) { |
| | | S7control.getinstance().WriteWord("DB105.16", (short) 0);//进片任务启动改为0 |
| | | System.out.println("关闭进片启动" + LocalDateTime.now());// 进片任务发送字改为0 |
| | | } |
| | | //读取DB105区文件 |
| | | PlcParameterObject plcmes=PLCAutoMes.PlcMesObject; |
| | | //读106 |
| | | PlcParameterObject plcread=PLCAutoMes.PlcReadObject; |
| | | //读103 |
| | | PlcParameterObject plcstate=PLCAutoMes.plcStateObject; |
| | | String OutRequest=plcread.getPlcParameter("OutRequest").getValue();//出片请求 |
| | | String OutActivate=plcmes.getPlcParameter("OutActivate").getValue();//出片启动 |
| | | |
| | | |
| | | |
| | | // StringBuilder writedstrIdOut = new StringBuilder(); |
| | | // 获取已下发的出片id |
| | | byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14); |
| | | String writedstrIdOut = new String(writedglassidbytesOut); |
| | | |
| | | |
| | | S7control.getinstance().WriteWord( plcmes.getPlcParameter("1231").getAddress(plcmes.getPlcParameter("1231").getAddressIndex()), (short) 0); |
| | | // 出片任务 |
| | | |
| | | if (OutActivate.equals("1") == false&&OutRequest.equals("1")==true) { |
| | | S7control.getinstance().WriteWord("DB105.18", (short) 0);// 出片任务启动改为0 |
| | | } |
| | | String FeedRequest=plcread.getPlcParameter("FeedRequest").getValue();// 进片请求字 |
| | | String AddActivate=plcmes.getPlcParameter("AddActivate").getValue();// 进片启动 |
| | | if (FeedRequest.equals("1") == false&&AddActivate.equals("1")==true) { |
| | | S7control.getinstance().WriteWord("DB105.16", (short) 0);//进片任务启动改为0 |
| | | } |
| | | |
| | | if (Plcout == true) { |
| | | if (OutActivate.equals("1") == true) { |
| | | // 判断当前是否有未执行的任务 |
| | | int outnum = spianMapper.SelectOutSliceshu();//是否有正在出片的任务 |
| | | int cageoutsum = spianMapper.Selectcageout(3);//笼子内是否还有在出片的玻璃 |
| | |
| | | |
| | | } |
| | | |
| | | ///////////// 进片任务 |
| | | List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 获取prc进片请求数据 |
| | | List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 |
| | | List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 获取进片车任务是否启动 |
| | | ///////////// 进片任务 |
| | | |
| | | boolean B01backs = spianService.listbool("DB106.60");// b01汇报 |
| | | boolean B02backs = spianService.listbool("DB106.62");// b02汇报 |
| | | StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1的玻璃id |
| | | StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02的玻璃id |
| | | String B01backs = plcread.getPlcParameter("B01CompleteTheReport").getValue();// b01汇报 |
| | | String B02backs = plcread.getPlcParameter("B02CompleteTheReport").getValue();// b02汇报 |
| | | |
| | | String B01glassid = plcstate.getPlcParameter("B01ID1").getValue();// BO1的玻璃id |
| | | String B02glassid = plcstate.getPlcParameter("B02ID1").getValue();// B02的玻璃id |
| | | |
| | | // 当进片小车完成任务时 |
| | | if (B01backs == true) { |
| | | if (B01backs.equals("1") == true) { |
| | | // 判断是否汇报正确的id |
| | | int HB = spianMapper.SelectHB(B01glassid.toString()); |
| | | if (HB > 0) { |
| | | // 当B01小车汇报完成时更改玻璃状态 为1 |
| | | S7control.getinstance().WriteWord("DB105.48", (short) 1);// 恢复B01小车应答改为1 |
| | | boolean yingda = spianService.listbool("DB105.48");// b01汇报 |
| | | if (yingda == true) { |
| | | // 恢复B01小车应答改为1 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 1); |
| | | String yingda =plcmes.getPlcParameter("B01report").getValue();// b01汇报 |
| | | if (yingda.equals("1")) { |
| | | spianService.overtask(B01glassid.toString());// 完成任务 |
| | | } |
| | | System.out.println("汇报时B01|第" + aaa + "次" + B01glassid + "应答" + yingda); |
| | | aaa += 1; |
| | | } |
| | | } |
| | | |
| | | }else{ |
| | | S7control.getinstance().WriteWord("DB105.48", (short) 0);// 恢复B01小车应答改为1 |
| | | // 恢复B01小车应答改为0 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 0); |
| | | } |
| | | |
| | | // 当出片小车完成任务时 |
| | | if (B02backs == true) { |
| | | if (B02backs.equals("1") == true) { |
| | | // 判断是否汇报正确的id |
| | | int HB = spianMapper.SelectHB(B02glassid.toString()); |
| | | System.out.println("汇报时B02|" + B02glassid); |
| | | int HB = spianMapper.SelectHB(B02glassid); |
| | | if (HB > 0) { |
| | | // 当B02小车汇报完成时更改玻璃状态为0 |
| | | |
| | | S7control.getinstance().WriteWord("DB105.50", (short) 1);// 恢复B02小车应答改为1 |
| | | System.out.println("汇报时B02ID|" + B02glassid); |
| | | boolean yingda = spianService.listbool("DB105.50");// b02汇报 |
| | | if (yingda == true) { |
| | | spianService.overtask(B02glassid.toString());// 完成任务 |
| | | } |
| | | System.out.println("汇报时B02|第" + aaa + "次" + B02glassid + "应答" + yingda); |
| | | // 恢复B02小车应答改为1 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("B02report").getAddress(plcmes.getPlcParameter("B02report").getAddressIndex()), (short) 1); |
| | | String yingda =plcmes.getPlcParameter("B01report").getValue();// b02应答 |
| | | if (yingda.equals("1") == true) { |
| | | spianService.overtask(B02glassid);// 完成任务 |
| | | } |
| | | } |
| | | }else{ |
| | | S7control.getinstance().WriteWord("DB105.50", (short) 0);// 恢复B02小车应答改为0 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("B02report").getAddress(plcmes.getPlcParameter("B02report").getAddressIndex()), (short) 0); |
| | | } |
| | | |
| | | |
| | | // 获取DO1数据 |
| | | StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 获取请求的id跟DO1同时清 |
| | | String Do1ID=plcread.getPlcParameter("FeedID").getValue();// 获取请求的id跟DO1同时清 |
| | | // 获取DO2数据 |
| | | StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14); |
| | | String Do2ID=plcread.getPlcParameter("FeedID").getValue();// 获取请求的id跟DO1同时清 |
| | | |
| | | int questate = spianMapper.Selectquecount(queueid1.toString());// 判断扫码位是否有玻璃已确认 |
| | | |
| | | int questate = spianMapper.Selectquecount(Do1ID.toString());// 判断扫码位是否有玻璃已确认 |
| | | // queueid1.toString().isEmpty() |
| | | north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01的玻璃信息 |
| | | north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02玻璃信息 |
| | | north_glass_buffer1 glass1 = spianMapper.selectGlass(Do1ID);// D01的玻璃信息 |
| | | north_glass_buffer1 glass2 = spianMapper.selectGlass(Do2ID);// D02玻璃信息 |
| | | // 当扫码位玻璃id为空时 宽度为0 |
| | | if (queueid1 != null && questate == 0) { |
| | | if (Do1ID != null && questate == 0) { |
| | | // 写入D01的数据到上片队列表 |
| | | if (glass1 == null) { // 当没有值时传空 |
| | | spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1); |
| | | } else { |
| | | |
| | | spianMapper.Updatequeue(queueid1.toString(), glass1.getordernumber(), glass1.getlistnumber(), |
| | | glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(), |
| | | glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1); |
| | | spianMapper.Updatequeue(Do1ID.toString(), glass1.getordernumber(), glass1.getlistnumber(), |
| | | glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(), |
| | | glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (queueid2 != null) { |
| | | if (Do2ID != null) { |
| | | // 写入D02的数据到上片队列表 |
| | | if (glass2 == null) { |
| | | spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2); |
| | | } else { |
| | | spianMapper.Updatequeue(queueid2.toString(), glass2.getordernumber(), glass2.getlistnumber(), |
| | | glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(), |
| | | glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2); |
| | | spianMapper.overqueue2(queueid2.toString(), 0, 1);// 更改扫码位任务表的状态为0 |
| | | spianMapper.Updatequeue(Do2ID.toString(), glass2.getordernumber(), glass2.getlistnumber(), |
| | | glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(), |
| | | glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2); |
| | | spianMapper.overqueue2(Do2ID.toString(), 0, 1);// 更改扫码位任务表的状态为0 |
| | | S7control.getinstance().WriteWord("DB105.16", (short) 0);// 关闭任务启动 |
| | | } |
| | | |
| | |
| | | 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.StorageCage;
|
| | | import com.example.springboot.entity.alarmmg;
|
| | | import com.example.springboot.entity.north_glass_buffer1;
|
| | | import com.example.springboot.entity.device.PlcParameterObject;
|
| | | import com.example.springboot.mapper.HomeMapper;
|
| | | import com.example.springboot.mapper.SpianMapper;
|
| | |
|
| | |
| | | JSONObject jsonObject = new JSONObject();
|
| | | try {
|
| | | Thread.sleep(1000);
|
| | | // 注入mapper
|
| | | // 注入mapper |
| | | homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
|
| | | spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
|
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
|
| | |
| | | // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16));
|
| | | // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14));
|
| | |
|
| | | if (S7control.getinstance().CheckConnected() == true) {
|
| | | // if (S7control.getinstance().CheckConnected() == true) {
|
| | |
|
| | | // 铝框线交互
|
| | | if (S7controlLK.getinstance().CheckConnected() == true) {
|
| | | if (CurrentFrame != null) {
|
| | | S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0");
|
| | | }
|
| | | String E01id = S7controlLK.getinstance().readStrings("DB17.0");
|
| | | String J01id = S7controlLK.getinstance().readStrings("DB17.22");
|
| | | |
| | |
|
| | | 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 == 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("DB17.38", (short) send);
|
| | | }
|
| | | // 铝框线交互
|
| | | if (S7controlLK.getinstance().CheckConnected() == true) {
|
| | | if (CurrentFrame != null) {
|
| | | S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0");
|
| | | }
|
| | | String E01id = S7controlLK.getinstance().readStrings("DB17.0");
|
| | | String J01id = S7controlLK.getinstance().readStrings("DB17.22");
|
| | |
|
| | | // 获取当前扫码方式
|
| | | List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1);
|
| | | if (Scanningmethods != null) {
|
| | | for (Boolean Scanningmethod : Scanningmethods) {
|
| | | jsonObject.append("Scanningmethod", Scanningmethod);
|
| | | }
|
| | | }
|
| | | // 获取当前扫码枪玻璃id
|
| | | 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);
|
| | | jsonObject.append("DeviceList", DeviceList);
|
| | | // 获取D01-D06,A01,A02,B01,B02玻璃id
|
| | | 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进片车与出片车位置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);// 获取进片车状态
|
| | | 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 = spianService.queGlassid("DB103.270", 14).toString();
|
| | | if (!frameno.equals(Plchome.FrameNo)) {
|
| | | Plchome.FrameNo = frameno;
|
| | | 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 == 1) {
|
| | | // 铝框id
|
| | | String position;
|
| | | try {
|
| | | Short num = 0;
|
| | | List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
|
| | | .SelectAluminumFrameInfoById(Plchome.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(Plchome.FrameNo);
|
| | | } else {
|
| | | Plchome.AluminumFrame = north_glass_buffer1s;
|
| | | }
|
| | | 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("DB17.38", (short) send);
|
| | | }
|
| | | if (AluminumFrame != null) {
|
| | | jsonObject.append("AluminumFrame", AluminumFrame);
|
| | | }
|
| | | }
|
| | |
|
| | | // 复位倒计时
|
| | | // 地址104.9.6
|
| | | List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
|
| | | for (Boolean countdowns : countdown) {
|
| | | jsonObject.append("countdown", countdowns);
|
| | | // 获取当前扫码方式
|
| | | List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1);
|
| | | if (Scanningmethods != null) {
|
| | | for (Boolean Scanningmethod : Scanningmethods) {
|
| | | jsonObject.append("Scanningmethod", Scanningmethod);
|
| | | }
|
| | | // jsonObject.append("countdown", true);
|
| | | // 复位完成信号ss
|
| | | List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
|
| | | for (Boolean reset : resetss) {
|
| | | jsonObject.append("reset", reset);
|
| | | }
|
| | | }
|
| | | // 获取当前扫码枪玻璃id
|
| | | String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString();
|
| | | jsonObject.append("CurrrentGlassId", CurrrentGlassId);
|
| | |
|
| | | // 是否急停
|
| | | List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
|
| | | for (Boolean emergencystop : emergencystops) {
|
| | | jsonObject.append("emergencystop", emergencystop);
|
| | | }
|
| | | // 获取进片请求状态
|
| | | List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
|
| | | boolean D01RequestState = D01Request.contains((short) 1);
|
| | | jsonObject.append("D01RequestState", D01RequestState);
|
| | | // 获取D01-D06,A01,A02,B01,B02状态
|
| | | List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
|
| | | jsonObject.append("DeviceList", DeviceList);
|
| | | // 获取D01-D06,A01,A02,B01,B02玻璃id
|
| | | List<String> GlassIdList = new ArrayList<String>();
|
| | | GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString());
|
| | | GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString());
|
| | |
|
| | | // 获取进片发送状态
|
| | | List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1);
|
| | | boolean D01ResponseState = D01respnse.contains((short) 1);
|
| | | // jsonObject.append("D01RequestState", D01RequestState);
|
| | | // 自动进片
|
| | | 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("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 = spianService.queGlassid("DB103.270", 14).toString();
|
| | | if (!frameno.equals(Plchome.FrameNo)) {
|
| | | Plchome.FrameNo = frameno;
|
| | | try {
|
| | | Short num = 0;
|
| | | List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
|
| | | .SelectAluminumFrameInfoById(Plchome.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(Plchome.FrameNo);
|
| | | } else {
|
| | | Plchome.AluminumFrame = north_glass_buffer1s;
|
| | | }
|
| | | } catch (SQLException e) {
|
| | | // TODO Auto-generated catch block
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | if (AluminumFrame != null) {
|
| | | jsonObject.append("AluminumFrame", AluminumFrame);
|
| | | }
|
| | |
|
| | | // 复位倒计时
|
| | | // 地址104.9.6
|
| | | List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
|
| | | for (Boolean countdowns : countdown) {
|
| | | jsonObject.append("countdown", countdowns);
|
| | | }
|
| | | // jsonObject.append("countdown", true);
|
| | | // 复位完成信号
|
| | | List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
|
| | | for (Boolean reset : resetss) {
|
| | | jsonObject.append("reset", reset);
|
| | | }
|
| | |
|
| | | // 是否急停
|
| | | List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
|
| | | for (Boolean emergencystop : emergencystops) {
|
| | | jsonObject.append("emergencystop", emergencystop);
|
| | | }
|
| | | // 获取进片请求状态
|
| | | List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
|
| | | boolean D01RequestState = D01Request.contains((short) 1);
|
| | | jsonObject.append("D01RequestState", D01RequestState);
|
| | |
|
| | | // 获取进片发送状态
|
| | | List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1);
|
| | | boolean D01ResponseState = D01respnse.contains((short) 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)) {
|
| | |
|
| | | if (isConfirm == true && D01RequestState == true && D01ResponseState == false) {
|
| | | FeedState = true;
|
| | | jsonObject.append("FeedState", FeedState);
|
| | | FeedState = false;
|
| | | } else {
|
| | | if (D01RequestState == true && D01ResponseState != true) {
|
| | | storageCageService.InsertQueueGlassId((short) 1, form3);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // }
|
| | |
|
| | | } catch (InterruptedException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| 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(); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.example.springboot.config; |
| | | |
| | | import com.example.springboot.component.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.ApplicationArguments; |
| | | import org.springframework.boot.ApplicationRunner; |
| | | import org.springframework.core.annotation.Order; |
| | |
| | | |
| | | public class AppRunnerConfig implements ApplicationRunner { |
| | | |
| | | private final PlcParameter plcParameter; |
| | | |
| | | public AppRunnerConfig(PlcParameter plcParameter) { |
| | | this.plcParameter = plcParameter; |
| | | } |
| | | @Override |
| | | public void run(ApplicationArguments args) throws Exception { |
| | | // TODO Auto-generated method stub |
| | | // |
| | | System.out.println("启动完成"); |
| | | |
| | | // plcParameter.start(); |
| | | // |
| | | // new PlcHold().start(); |
| | | // |
| | | // new Plchome().start(); |
| | | // new PlcLayout().start(); |
| | | // new Plcalarm().start(); |
| | | // |
| | | // new Plcsign().start(); |
| | | // |
| | | // new Plcstate().start(); |
| | | // new PlcPositioning1().start(); |
| | | // |
| | | // new PlcParameter2().start(); |
| | | // new PLCAutomaticParameterSetting().start(); |
| | | // |
| | | // new PlcManualonePosition().start(); |
| | | // new PlcManualonePosition2().start(); |
| | | // new PlcServoManualone().start(); |
| | | // new PLCManualJog().start(); |
| | | // new Plclog().start(); |
| | | // |
| | | // new PlcInteractionState().start(); |
| | | // new PlcHold().start(); |
| | | // new PLCAutoMes().start(); |
| | | |
| | | // new Plchome().start(); |
| | | // new PlcLayout().start(); |
| | | // new Plcalarm().start(); |
| | | |
| | | // new Plcsign().start(); |
| | | |
| | | // new Plcstate().start(); |
| | | // new PlcPositioning1().start(); |
| | | |
| | | // new PlcParameter2().start(); |
| | | // new PLCAutomaticParameterSetting().start(); |
| | | |
| | | // new PlcManualonePosition().start(); |
| | | // new PlcManualonePosition2().start(); |
| | | // new PlcServoManualone().start(); |
| | | // new PLCManualJog().start(); |
| | | // new Plclog().start(); |
| | | |
| | | // new PlcInteractionState().start(); |
| | | //new PlcParameter1Review().start(); |
| | | //new PLCAutoMes().start(); |
| | | //new PLCAutomaticParameterSettingReview2().start(); |
| | | |
| | | |
| | | // new PLCManualJogReview().start(); |
| | | } |
| | |
| | | void UpdataOutCage1(double width, int cage, int cell); |
| | | |
| | | // 调拨更换笼子信息 |
| | | @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}") |
| | | @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=2,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}") |
| | | void UpdateDBCage(int id1, int cage, int cell, int tier); |
| | | |
| | | // @Insert("insert into user(name, date, address, user_no) values (#{name}, |
| New file |
| | |
| | | package com.example.springboot.service; |
| | | |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import com.example.springboot.component.PLCAutoMes; |
| | | import com.example.springboot.component.S7control; |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.entity.north_glass_buffer1; |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | import com.google.common.primitives.Bytes; |
| | | |
| | | |
| | | @Service |
| | | public class SpianServiceNew { |
| | | @Autowired |
| | | private SpianMapper spianMapper; |
| | | //读取DB105区文件 |
| | | PlcParameterObject plcmes=PLCAutoMes.PlcMesObject; |
| | | //读106 |
| | | PlcParameterObject plcread=PLCAutoMes.PlcReadObject; |
| | | // @GetMapping("/all") |
| | | public Short selectAll(String glassid) { |
| | | |
| | | int cage1 = 0; |
| | | int cells; |
| | | int ids; |
| | | int prcid; |
| | | int tiers; |
| | | int prctier; |
| | | double width; |
| | | double minwidth = 0; |
| | | |
| | | north_glass_buffer1 glasslist = spianMapper.selectGlass(glassid); // 获取玻璃参数 |
| | | // 如果没有此id时 |
| | | if (glasslist == null) { |
| | | return (300); |
| | | } |
| | | |
| | | double widths = glasslist.getglasslengthmm(); |
| | | String orderids = glasslist.getordernumber(); |
| | | String FrameBarcode = glasslist.getFrameBarcode(); |
| | | // 获取铝框相关度最高的笼子排序 |
| | | List<StorageCage> storageCage = spianMapper.selectAllFbarcode(FrameBarcode, widths, 400); |
| | | // 判断铝框指定空格是否需要间隔空间 |
| | | if (storageCage.size() == 0) { |
| | | storageCage = spianMapper.selectAll(orderids, FrameBarcode); |
| | | } |
| | | if (storageCage == null) { |
| | | return (400); |
| | | } |
| | | for (StorageCage storageCage2 : storageCage) { |
| | | // 保存订单优先顺序笼子号 |
| | | cage1 = storageCage2.getCage(); |
| | | // 判断该笼子号相邻最大的空格数 |
| | | int cages = spianMapper.selectCage(cage1); |
| | | |
| | | // 如果相邻笼子没有空格,或者有正在执行的出片任务时返回400 |
| | | if (cages == 0) { |
| | | return (400); |
| | | } |
| | | StorageCage cages1; |
| | | // 判断是否是第二片需要加间隔物 |
| | | prctier = spianMapper.selectsum(cage1, storageCage2.getCell());// 传给prc的格子内玻璃数 |
| | | if (prctier > 0) { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths + 400); |
| | | } else { |
| | | cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths); |
| | | } |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | // 有合适空格时进片 |
| | | if (cages1 != null && cages >= 1 && storageCage2.getDisabled() == 0) { |
| | | ids = cages1.getId();// 数据库ID |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | width = cages1.getWidth();// 格子剩余宽度 |
| | | widths = glasslist.getglasslengthmm(); |
| | | |
| | | // 执行进片 |
| | | |
| | | // 获取该格子内是否有玻璃 |
| | | int cellint = spianMapper.selectcell(cage1, cells); |
| | | if (cellint == 1) { |
| | | // 将外片玻璃的数据更新到内片 |
| | | spianMapper.UpdateDBCage(ids, cage1, cells, 1); |
| | | // 将新入的玻璃存入外片 |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids - 1, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | } else { |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | } |
| | | // 进片车起始位置 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("AddStart").getAddressIndex()), (short) 1000); |
| | | // 进片车目标位置 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Addgoal").getAddressIndex()), (short) prcid); |
| | | // 进片玻璃宽 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddLength").getAddress(plcmes.getPlcParameter("AddLength").getAddressIndex()), (short) widths); |
| | | // 进片笼内已有玻璃数 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("AddCount").getAddressIndex()), (short) prctier); |
| | | // 进片车启动 1为启动 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1); |
| | | String activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | int activate2 = 0; |
| | | if (activate.equals("1")) { |
| | | activate2 = 1; |
| | | }else{ |
| | | while (activate.equals("1")) { |
| | | // 出片任务发送字改为1 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1); |
| | | activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | } |
| | | } |
| | | outmesid(glassid, "FeedID");//派发id |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier,activate2);// 新增任务 |
| | | return (200); |
| | | |
| | | } |
| | | |
| | | } |
| | | return (400); |
| | | |
| | | } |
| | | |
| | | public Short selectout2(String glassid) { |
| | | char[] a = glassid.toCharArray(); |
| | | List<Short> datas = new ArrayList<>(); |
| | | // 获取优先出片的位置 |
| | | StorageCage cageout = spianMapper.selectOut2(glassid); |
| | | if (cageout == null) { |
| | | return (300); |
| | | } |
| | | |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | int state = spianMapper.selectGlassState(cage, cell);// 获取格子数量 |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | |
| | | // 判断玻璃可直接出片时 |
| | | spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassid.toString(), 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state, 3);// 新增任务 |
| | | |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | |
| | | // 判断内片是否需要调拨 |
| | | if (state == 1) { |
| | | spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 更新出片队列任务状态为进行中 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1,3);// 新增任务 |
| | | |
| | | |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | | if (cage < 6) { |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6, cell); |
| | | if (cagecell == null) { |
| | | return (300); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | // 更换玻璃的笼子 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassids, 2, 3);// 新增调度任务 |
| | | |
| | | } else {// 笼子号大于5时 |
| | | StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11, cell); |
| | | if (cagecell == null) { |
| | | return (300); |
| | | } |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages = cagecell.getCage();// 调拨目标位笼子 |
| | | cells = cagecell.getCell();// 调拨目标位格子 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassids, 2, 3);// 新增调度任务 |
| | | spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | |
| | | |
| | | } |
| | | //发送plc任务 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("AddStart").getAddressIndex()), (short) prcid); |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Addgoal").getAddressIndex()), (short) prcid2); |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("AddCount").getAddressIndex()), (short) state); |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1); |
| | | String activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | int activate2 = 0; |
| | | if (activate.equals("1")) { |
| | | activate2 = 1; |
| | | }else{ |
| | | while (activate.equals("1")) { |
| | | // 出片任务发送字改为1 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1); |
| | | activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | } |
| | | } |
| | | outmesid(glassid, "ReleaseID");//派发id |
| | | //发送完倒片结束 |
| | | return (200); // 结束 |
| | | } |
| | | } |
| | | // 出片车起始位置 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("OutStart").getAddressIndex()), (short) prcid); |
| | | // 出片车目标位置 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Outgoal").getAddressIndex()), (short) 1000); |
| | | // 出片笼内已有玻璃数 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("OutCount").getAddressIndex()), (short) state); |
| | | // 出片车启动 1为启动 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("OutActivate").getAddressIndex()), (short) 1); |
| | | String activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | int activate2 = 0; |
| | | if (activate.equals("1")) { |
| | | activate2 = 1; |
| | | }else{ |
| | | while (activate.equals("1")) { |
| | | // 出片任务发送字改为1 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1); |
| | | |
| | | activate =plcmes.getPlcParameter("AddActivate").getValue();// 判断启动是否写入 |
| | | } |
| | | } |
| | | outmesid(glassid, "ReleaseID");//派发id |
| | | //直接出片结束 |
| | | return(200);// 结束 |
| | | } |
| | | |
| | | // 派发任务玻璃id |
| | | public void outmesid(String glassid, String address) { |
| | | // System.out.println("outmesid:" + glassid); |
| | | List<Byte> glassidlist = new ArrayList(); |
| | | 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(plcmes.getPlcParameter(address).getAddress(plcmes.getPlcParameter(address).getAddressIndex()),bytes); |
| | | //S7control.getinstance().WriteByte(address, bytes);// 派发出片id |
| | | |
| | | } |
| | | |
| | | // 获取地址内的玻璃id转字符串 |
| | | public StringBuilder queGlassid(String address, int count) { |
| | | StringBuilder writedstrIdOut = new StringBuilder(); |
| | | byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count); |
| | | if (writedglassidbytesOut != null) { |
| | | // 获取玻璃id |
| | | for (byte iditem : writedglassidbytesOut) { |
| | | writedstrIdOut.append((char) iditem); |
| | | } |
| | | } |
| | | return writedstrIdOut; |
| | | } |
| | | |
| | | // char数组转化成bit数组 |
| | | public static byte[] toBytes(char[] chars) { |
| | | String s = new String(chars); |
| | | return s.getBytes(StandardCharsets.UTF_8); |
| | | } |
| | | |
| | | // bit数组转化成char数组 |
| | | public static char[] toChars(byte[] bytes) { |
| | | String s = new String(bytes, StandardCharsets.UTF_8); |
| | | return s.toCharArray(); |
| | | } |
| | | |
| | | // 判断集合里是否为1 |
| | | public boolean listbool(String address) { |
| | | List<Short> list = S7control.getinstance().ReadWord(address, 1);// 返回为ture时为1 |
| | | boolean listbool = list.contains((short) 1); |
| | | return listbool; |
| | | } |
| | | |
| | | // 根据玻璃id完成在进行中的任务 |
| | | public void overtask(String glassid) { |
| | | |
| | | spianMapper.UpdatetaskOut(glassid.toString());// 完成上一次 出片或者进片任务 |
| | | spianMapper.OverOutSlice(glassid.toString(), 2, 1);// 完成出片队列任务 |
| | | spianMapper.UpdataGlassCage(glassid.toString(), 0);// 清除出片格子玻璃信息 |
| | | spianMapper.UpdateCageOver(glassid.toString(), 0);// 更改笼子表出片状态 |
| | | spianMapper.UpdateCageadd(glassid.toString(), 1);// 更改笼子表进片状态 |
| | | spianMapper.UpdateAddQueue(glassid.toString());// 把进片的玻璃更新到出片队列中 |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | public Result InsertQueueGlassId(Short id, Queue queue) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (Plchome.FeedState == false) { |
| | | Plchome.FeedState = true; |
| | | Short zhi = 200; |
| | | short result = homeMapper.SelectStorageByGlassId(queue.getglassId()); |
| | | if (result > 0) { |
| | | map.put("message", "300"); |
| | | } else { |
| | | if (id == 1) { |
| | | // 调用伍存储过程 |
| | | zhi = spianService.selectAll(queue.getglassId()); |
| | | if (zhi == 200) { |
| | | homeMapper.InsertQueueGlassId(queue, id); |
| | | } |
| | | } |
| | | map.put("message", zhi); |
| | | } |
| | | Plchome.FeedState = false; |
| | | |
| | | Short zhi = 200; |
| | | short result = homeMapper.SelectStorageByGlassId(queue.getglassId()); |
| | | if (result > 0) { |
| | | map.put("message", "300"); |
| | | } else { |
| | | map.put("message", 200); |
| | | if (id == 1) { |
| | | // 调用伍存储过程 |
| | | zhi = spianService.selectAll(queue.getglassId()); |
| | | if (zhi == 200) { |
| | | homeMapper.InsertQueueGlassId(queue, id); |
| | | } |
| | | } |
| | | map.put("message", zhi); |
| | | } |
| | | if (zhi != 200) { |
| | | Plchome.FeedState = true; |
| | | } |
| | | return Result.success(map); |
| | | } |
| | |
| | | "codeId": "space", |
| | | "addressIndex": 111 |
| | | } |
| | | , |
| | | { |
| | | "codeId": "space", |
| | | "addressIndex": 111 |
| | | } |
| | | ] |
| | | } |
| | |
| | | {
|
| | | "plcAddressBegin": "DB103.0",
|
| | | "plcAddressLenght": "256",
|
| | | "plcAddressLenght": "258",
|
| | | "dataType": "word",
|
| | | "parameteInfor": [
|
| | | {
|
| | |
| | | "addressLenght": "2",
|
| | | "unit": ""
|
| | | }
|
| | |
|
| | | ,
|
| | | {
|
| | | "codeId": "Scanningguns",
|
| | | "addressIndex": "256",
|
| | | "addressLenght": "2",
|
| | | "unit": ""
|
| | | }
|
| | | ,
|
| | | {
|
| | | "codeId": "Frameid",
|
| | | "addressIndex": "270",
|
| | | "addressLenght": "2",
|
| | | "unit": ""
|
| | | }
|
| | | ]
|
| | | } |
| | |
| | | {
|
| | | "plcAddressBegin": "DB101.0.0",
|
| | | "plcAddressLenght": "92",
|
| | | "plcAddressLenght": "93",
|
| | | "dataType": "bit",
|
| | | "parameteInfor": [
|
| | | {
|
| | |
| | | {
|
| | | "codeId": "emgHMI",
|
| | | "addressIndex": 91
|
| | | }
|
| | | },
|
| | | {
|
| | | "codeId": "Scanningmethod",
|
| | | "addressIndex": 92
|
| | | ]
|
| | | } |