| | |
| | | { |
| | | "button": { |
| | | "name": "D01手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "D02手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "D03手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "D04手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "D05手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "D06手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "A01手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "ID2", |
| | | "read": 33, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | |
| | | ], |
| | |
| | | { |
| | | "button": { |
| | | "name": "A02手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": "ID28", |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "B01手动状态", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": "ID29", |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | | { |
| | | "button": { |
| | | "name": "B02手动状态", |
| | | "value": 0, |
| | | "value": 0, |
| | | "value2": 0, |
| | | "address": "DB10.0" |
| | | }, |
| | | "type": "4" |
| | |
| | | { |
| | | "button": { |
| | | "name": "清除ID", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | |
| | | }, |
| | | "type": "3" |
| | |
| | | "read": "ID210", |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | |
| | | "read": 0, |
| | | "sending": 0, |
| | | |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "ID1", |
| | | "read": 66, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | |
| | | "read": 0, |
| | | "sending": 0, |
| | | |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "ID2", |
| | | "read": 666, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ], |
| | | [ |
| | |
| | | "read": 333, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "A02所在格子", |
| | | "read": 333, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "B01所在格子", |
| | | "read": 333, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | }, |
| | | { |
| | | "name": "B02所在格子", |
| | | "read": 333, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | ] |
| | | , |
| | |
| | | "read": 666, |
| | | "sending": 0, |
| | | "type": "0", |
| | | "value": 0 |
| | | "value": 0, |
| | | "value2": 0 |
| | | } |
| | | |
| | | |
| | |
| | | {
|
| | | "ip": "192.168.10.113",
|
| | | "ip": "localhost",
|
| | | "systemTitle": "登录系统",
|
| | | "usernamePlaceholder": "请输入用户名",
|
| | | "passwordPlaceholder": "请输入密码",
|
| | |
| | | });
|
| | | }
|
| | | ,
|
| | | cellStyle({ row, column, rowIndex, columnIndex }) {
|
| | | cellStyle({ column, rowIndex, columnIndex }) {
|
| | | // console.log(row, column, "ss");
|
| | | column = rowIndex;
|
| | | rowIndex = column;
|
| | |
| | | System.err.println("An error occurred while writing string to PLC: " + e.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | public void writeBitandrenwuToPLC(JSONArray messageArray, List<String> addresses, int index) {
|
| | | try {
|
| | | // 检查索引是否有效
|
| | | if (messageArray.getJSONArray(index).size() > 0) {
|
| | | // 获取消息数组
|
| | | JSONArray jsonArray = messageArray.getJSONArray(index);
|
| | | // 创建一个布尔值列表
|
| | | List<Boolean> sValue = new ArrayList<>();
|
| | | // 遍历消息数组
|
| | | for (int i = 0; i < jsonArray.size(); i++) {
|
| | | // 获取消息数组中的值
|
| | | Object value = jsonArray.get(i);
|
| | | // 检查值是否有效
|
| | | if (value != null && !value.toString().equals("null")) {
|
| | | try {
|
| | | // 移除非数字和数字字符
|
| | | String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
|
| | | // 解析为布尔值
|
| | | boolean val = "1".equals(cleanedValue.trim());
|
| | | // 将布尔值添加到布尔值列表中
|
| | | sValue.add(val);
|
| | | System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
|
| | | if(sValue.get(1)){
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | } catch (NumberFormatException e) {
|
| | | // 如果无法解析为 boolean 类型,则忽略该部分
|
| | | System.err.println("Could not parse value: " + value);
|
| | | }
|
| | | }
|
| | | }
|
| | | // 检查布尔值列表是否为空
|
| | | if (!sValue.isEmpty()) {
|
| | |
|
| | | // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
|
| | | S7control.getinstance().WriteBit(addresses, sValue);
|
| | | System.out.println("Values " + sValue + " written to PLC at address " + addresses);
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | }
|
| | |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import com.example.springboot.controller.HomeController; |
| | | import org.apache.commons.io.FileUtils; |
| | | |
| | | import java.io.*; |
| | |
| | | // System.out.println("lastMessage:" + lastMessage); |
| | | JSONArray messageArray = new JSONArray(lastMessage); |
| | | //清除ID |
| | | customS7Control.writeBitToPLC(messageArray, addressList0, 0); |
| | | // customS7Control.writeBitToPLC(messageArray, addressList0, 0); |
| | | |
| | | |
| | | try { |
| | | // 检查索引是否有效 |
| | | if (messageArray.getJSONArray(0).size() > 0) { |
| | | // 获取消息数组 |
| | | JSONArray jsonArray = messageArray.getJSONArray(0); |
| | | // 创建一个布尔值列表 |
| | | List<Boolean> sValue = new ArrayList<>(); |
| | | // 遍历消息数组 |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | // 获取消息数组中的值 |
| | | Object value = jsonArray.get(i); |
| | | // 检查值是否有效 |
| | | if (value != null && !value.toString().equals("null")) { |
| | | try { |
| | | // 移除非数字和数字字符 |
| | | String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); |
| | | // 解析为布尔值 |
| | | boolean val = "1".equals(cleanedValue.trim()); |
| | | // 将布尔值添加到布尔值列表中 |
| | | sValue.add(val); |
| | | System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } catch (NumberFormatException e) { |
| | | // 如果无法解析为 boolean 类型,则忽略该部分 |
| | | System.err.println("Could not parse value: " + value); |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (int i = 1; i <= 5; i++) { |
| | | boolean value = sValue.get(i); |
| | | if (value) { |
| | | switch (i) { |
| | | case 1: |
| | | HomeController.UpdateTask(0, 0, paramlist.get(i)); |
| | | break; |
| | | case 2: |
| | | case 3: |
| | | case 4: |
| | | case 5: |
| | | HomeController.UpdateTask(1, 0, paramlist.get(i)); |
| | | break; |
| | | default: |
| | | // 处理索引值不在范围内的情况 |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 检查布尔值列表是否为空 |
| | | if (!sValue.isEmpty()) { |
| | | |
| | | // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 |
| | | S7control.getinstance().WriteBit(addressList0, sValue); |
| | | System.out.println("Values " + sValue + " written to PLC at address " + addressList0); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("An error occurred while writing bit to PLC: " + e.getMessage()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //急停 |
| | | customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1); |
| | | // customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1); |
| | | |
| | | try { |
| | | // 检查索引是否有效 |
| | | if (messageArray.getJSONArray(1).size() > 0) { |
| | | // 获取消息数组 |
| | | JSONArray jsonArray = messageArray.getJSONArray(1); |
| | | // 创建一个布尔值列表 |
| | | List<Boolean> sValue = new ArrayList<>(); |
| | | // 遍历消息数组 |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | // 获取消息数组中的值 |
| | | Object value = jsonArray.get(i); |
| | | // 检查值是否有效 |
| | | if (value != null && !value.toString().equals("null")) { |
| | | try { |
| | | // 移除非数字和数字字符 |
| | | String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); |
| | | // 解析为布尔值 |
| | | boolean val = "1".equals(cleanedValue.trim()); |
| | | // 将布尔值添加到布尔值列表中 |
| | | sValue.add(val); |
| | | System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); |
| | | |
| | | |
| | | } catch (NumberFormatException e) { |
| | | // 如果无法解析为 boolean 类型,则忽略该部分 |
| | | System.err.println("Could not parse value: " + value); |
| | | } |
| | | } |
| | | } |
| | | |
| | | boolean Value1 = sValue.get(0); |
| | | boolean Value2 = sValue.get(1); |
| | | |
| | | if (Value1) { |
| | | HomeController.EndTask(0); |
| | | |
| | | } |
| | | if (Value2) { |
| | | HomeController.EndTask(0); |
| | | |
| | | } |
| | | // 检查布尔值列表是否为空 |
| | | if (!sValue.isEmpty()) { |
| | | |
| | | // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 |
| | | S7control.getinstance().WriteBit(addressList0, sValue); |
| | | System.out.println("Values " + sValue + " written to PLC at address " + addressList0); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("An error occurred while writing bit to PLC: " + e.getMessage()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //存片等待延迟 |
| | | customS7Control.Writetime(messageArray, timeout2, 2); |
| | | |
| | |
| | | } |
| | | |
| | | //读取时间 |
| | | public Long readtime(String address) { |
| | | if (s7PLC==null) |
| | | return null; |
| | | public Long readtime(String address) { |
| | | if (s7PLC == null) |
| | | return null; |
| | | try { |
| | | return s7PLC.readTime(address); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | public void writetime(String address, long datas) { |
| | | if (s7PLC == null) |
| | |
| | | // |
| | | System.out.println("启动完成"); |
| | | |
| | | // new PlcHold().start(); |
| | | new PlcHold().start(); |
| | | |
| | | new Plchome().start(); |
| | | |
| | | // new Plcalarm().start(); |
| | | new Plcalarm().start(); |
| | | |
| | | // new Plcsign().start(); |
| | | new Plcsign().start(); |
| | | |
| | | |
| | | // new Plcstate().start(); |
| | | // new PlcPositioning1().start(); |
| | | new Plcstate().start(); |
| | | new PlcPositioning1().start(); |
| | | |
| | | // new PlcParameter2().start(); |
| | | new PlcParameter2().start(); |
| | | |
| | | // new PLCAutomaticParameterSetting().start(); |
| | | new PLCAutomaticParameterSetting().start(); |
| | | |
| | | // new PlcManualonePosition().start(); |
| | | // new PlcManualonePosition2().start(); |
| | | // new PlcServoManualone().start(); |
| | | // new PLCManualJog().start(); |
| | | new PlcManualonePosition().start(); |
| | | new PlcManualonePosition2().start(); |
| | | new PlcServoManualone().start(); |
| | | new PLCManualJog().start(); |
| | | } |
| | | } |
| | |
| | | @RequestMapping("/home") |
| | | public class HomeController { |
| | | @Autowired |
| | | static |
| | | HomeMapper homeMapper; |
| | | |
| | | @Autowired |
| | | HomeService storageRackService; |
| | | |
| | | @Autowired |
| | | static |
| | | SpianService spianService; |
| | | |
| | | @Autowired |
| | | SpianMapper spianMapper; |
| | | |
| | | @Autowired |
| | | static |
| | | OutSliceServive outSliceServive; |
| | | |
| | | @Autowired |
| | |
| | | |
| | | // 手动完成进/出片任务 终止进片/出片任务 |
| | | @GetMapping("/UpdateTask") |
| | | public Result UpdateTask(Integer types, Integer shelfrack, String glassid) { |
| | | public static Result UpdateTask(Integer types, Integer shelfrack, String glassid) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (types == 0) {// 完成进片 |
| | | spianService.overtask(glassid); |
| | |
| | | |
| | | //终止进片/出片任务 |
| | | @GetMapping("/EndTask") |
| | | public Result EndTask(int types) { |
| | | public static Result EndTask(int types) { |
| | | if (types == 0) {// 终止进片任务 |
| | | List<StorageTask> cageList = homeMapper.SelectTaskByState(types); |
| | | for (StorageTask storageTask : cageList) { |
| | |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.springboot.mapper.device.DeviceMapper"> |
| | | |
| | | <resultMap id="myResultMap" type="com.example.springboot.entity.device.DeviceEntity"> |
| | | <!-- 根据你的实际情况定义结果映射 --> |
| | | <!-- 示例中将结果映射到实体类的属性 --> |
| | | <id property="id" column="id"/> |
| | | <result property="name" column="device_name"/> |
| | | <!-- 其他属性映射 --> |
| | | </resultMap> |
| | | <!-- <resultMap id="myResultMap" type="com.example.springboot.entity.device.DeviceEntity">--> |
| | | <!-- <!– 根据你的实际情况定义结果映射 –>--> |
| | | <!-- <!– 示例中将结果映射到实体类的属性 –>--> |
| | | <!-- <id property="id" column="id"/>--> |
| | | <!-- <result property="name" column="device_name"/>--> |
| | | <!-- <!– 其他属性映射 –>--> |
| | | <!-- </resultMap>--> |
| | | |
| | | <select id="selectAllDevices" resultMap="myResultMap"> |
| | | SELECT * |
| | | FROM device |
| | | </select> |
| | | <!-- <select id="selectAllDevices" resultMap="myResultMap">--> |
| | | <!-- SELECT *--> |
| | | <!-- FROM device--> |
| | | <!-- </select>--> |
| | | |
| | | <select id="callStoredProc" statementType="CALLABLE" resultMap="myResultMap"> |
| | | { call Your_Stored_Procedure( |
| | | #{id, mode=IN, jdbcType=VARCHAR}, |
| | | #{name, mode=IN, jdbcType=VARCHAR} |
| | | <!-- <select id="callStoredProc" statementType="CALLABLE" resultMap="myResultMap">--> |
| | | <!-- { call Your_Stored_Procedure(--> |
| | | <!-- #{id, mode=IN, jdbcType=VARCHAR},--> |
| | | <!-- #{name, mode=IN, jdbcType=VARCHAR}--> |
| | | |
| | | ) } |
| | | </select> |
| | | <!-- ) }--> |
| | | <!-- </select>--> |
| | | |
| | | <update id="updateDeviceName"> |
| | | UPDATE device SET |
| | | device_name = #{deviceName}, |
| | | address = #{address} |
| | | WHERE id = #{id} |
| | | </update> |
| | | <update id="updateMultipleDevices" parameterType="java.util.List"> |
| | | <foreach collection="list" item="device" separator=";"> |
| | | UPDATE device SET |
| | | device_name = #{device.deviceName}, |
| | | address = #{device.address} |
| | | WHERE id = #{device.id} |
| | | </foreach> |
| | | </update> |
| | | <!-- <update id="updateDeviceName">--> |
| | | <!-- UPDATE device SET--> |
| | | <!-- device_name = #{deviceName},--> |
| | | <!-- address = #{address}--> |
| | | <!-- WHERE id = #{id}--> |
| | | <!-- </update>--> |
| | | <!-- <update id="updateMultipleDevices" parameterType="java.util.List">--> |
| | | <!-- <foreach collection="list" item="device" separator=";">--> |
| | | <!-- UPDATE device SET--> |
| | | <!-- device_name = #{device.deviceName},--> |
| | | <!-- address = #{device.address}--> |
| | | <!-- WHERE id = #{device.id}--> |
| | | <!-- </foreach>--> |
| | | <!-- </update>--> |
| | | </mapper> |