| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- 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<String, Boolean> 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<String, Boolean> 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<String, Boolean> readBits() {
- Map<String, Boolean> 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;
- }
- }
|