package com.mes.util; import com.github.s7connector.api.DaveArea; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.mes.ui.MesClient; import com.mes.ui.S7Util; import java.math.BigInteger; import java.util.HashMap; import java.util.Map; public class Test { public static S7PLC s7PLC = new S7PLC(EPlcType.SINUMERIK_828D, "192.168.88.99"); public static void main(String[] args) { // Integer switchEnable = getSwitchEnable(); // System.out.println(switchEnable); // Map stringBooleanMap = readBits(); // System.out.println(stringBooleanMap); // writeBit(9015, 0, 1, true); // writeBit(9015, 0, 0, false); // writeBit(9015, 0, 1, false); // writeBit(9000, 3, 2, false); // Map stringBooleanMap2 = readBits(); // System.out.println(stringBooleanMap2); // System.out.println("读取主轴转速:"+S7Util.readActSpindleSpeed(s7PLC)); // System.out.println("读取进给速度:"+S7Util.readFeedRate(s7PLC)); // System.out.println("读取X位移:"+S7Util.readXPosition(s7PLC)); // System.out.println("读取y位移:"+S7Util.readYPosition(s7PLC)); } public static Map readBits() { Map result = new HashMap<>(); try { MesClient.initS7(); // 读取 DB9015.DBB0(1字节,包含 DBX0.0~DBX0.7) byte[] data9015 = MesClient.s7Connector.read(DaveArea.DB, 9015, 1, 0); byte b9015 = data9015[0]; result.put("DB9015.DBX0.0", (b9015 & (1 << 0)) != 0); result.put("DB9015.DBX0.1", (b9015 & (1 << 1)) != 0); result.put("DB9015.DBX0.2", (b9015 & (1 << 2)) != 0); // 读取 DB9000.DBB3(1字节,包含 DBX3.0~DBX3.7) // byte[] data9000 = MesClient.s7Connector.read(DaveArea.DB, 9000, 1, 3); // byte b9000 = data9000[0]; // // result.put("DB9000.DBX3.2", (b9000 & (1 << 2)) != 0); } catch (Exception e) { e.printStackTrace(); } return result; } public static boolean writeBit(int dbNumber, int byteIndex, int bitIndex, boolean value) { try { MesClient.initS7(); // 先读出对应字节 byte[] data = MesClient.s7Connector.read(DaveArea.DB, dbNumber, 1, byteIndex); byte b = data[0]; // 修改指定位 if (value) { b = (byte)(b | (1 << bitIndex)); // 置1 } else { b = (byte)(b & ~(1 << bitIndex)); // 清0 } // 写回去 byte[] toWrite = new byte[]{b}; MesClient.s7Connector.write(DaveArea.DB, dbNumber, byteIndex, toWrite); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public static Integer getSwitchEnable(){ try{ MesClient.initS7(); //DB9052.DBB0 Integer ss = new BigInteger(xtob(MesClient.s7Connector.read(DaveArea.DB, 9015, 1, 0))).intValue(); return ss; }catch (Exception e){ e.printStackTrace(); return 0; } } private static byte[] xtob( byte[] bytes){ // 创建新的byte数组并复制原始数据 byte[] reversedBytes = new byte[bytes.length]; System.arraycopy(bytes, 0, reversedBytes, 0, bytes.length); // 反转byte数组元素的位置 for (int i = 0; i < bytes.length / 2; i++) { byte temp = reversedBytes[i]; reversedBytes[i] = reversedBytes[reversedBytes.length - 1 - i]; reversedBytes[reversedBytes.length - 1 - i] = temp; } return reversedBytes; } }