package com.mes.common; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.mes.device.PlcParameterObject; import com.mes.tools.InitUtil; import com.mes.tools.S7control; import java.util.List; /** * @Author : yanzhixin * @Date: 2024/4/9 15:13 * @Description: */ public class S7objectMarking extends Thread { public S7control plccontrol; // PLC通讯类实例 private EPlcType plcType = EPlcType.S1500; // 西门子PLC类型 private String ip = "10.36.164.40"; // plc ip地址 private int port = 102; // plc 端口号 public PlcParameterObject PlcMesObject; private static volatile S7objectMarking instance = null; private S7objectMarking() { if (plccontrol == null) { plccontrol = new S7control(plcType, ip, port, 0, 0); String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcMarking.json"; // String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath(); System.out.println("Load Glass File: " + PlcLoadGlass); PlcMesObject = InitUtil.initword(PlcLoadGlass); } } // 单例模式 获取类的唯一实例 public static S7objectMarking getinstance() { if (instance == null) { synchronized (S7objectMarking.class) { if (instance == null) { instance = new S7objectMarking(); } } } return instance; } @Override public void run() { while (this != null) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()]; int maxRead=1092; int size=PlcMesObject.getPlcAddressLength()%maxRead==0? (PlcMesObject.getPlcAddressLength()/maxRead): (PlcMesObject.getPlcAddressLength()/maxRead+1); for (int i = 0; i