package com.mes.common; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.mes.device.PlcParameterInfo; import com.mes.device.PlcParameterObject; import com.mes.service.ModbusTcp; import com.mes.tools.InitUtil; import com.mes.tools.S7control; import lombok.extern.slf4j.Slf4j; import java.util.LinkedHashMap; /** * @Author : yanzhixin * @Date: 2024/4/9 15:13 * @Description: */ @Slf4j public class S7objectMachine extends Thread { public S7control plccontrol; // PLC通讯类实例 private EPlcType plcType = EPlcType.S1200; // 西门子PLC类型 private String ip = ""; // plc ip地址 private int port = 102; // plc 端口号 private String plcFileName=""; // json名称 public PlcParameterObject PlcMesObject; public S7objectMachine(String ip,int port,String plcFileName,EPlcType plcType) { initialize(ip,port,plcFileName,plcType); if (plccontrol == null) { plccontrol = new S7control(this.plcType, this.ip, this.port, 0, 0); //String plcFileUrl = System.getProperty("user.dir") + "D:/HangZhouMes/JsonFile/"+this.plcFileName+".json"; String plcFileUrl = "D:/mes/JsonFile/"+this.plcFileName+".json"; PlcMesObject = InitUtil.initword(plcFileUrl); } } public void initialize(String ip,int port,String plcFileName,EPlcType plcType){ this.ip = ip; this.port = port; this.plcFileName = plcFileName; this.plcType= plcType; } /** * 打印参数值 */ public void consoleLogInfo(){ String logInfo=this.plcFileName+" "; LinkedHashMap thisPlcParameterInfo=PlcMesObject.getPlcParameterMap(); for (String key:thisPlcParameterInfo.keySet()) { logInfo+=key+":"+thisPlcParameterInfo.get(key).getValue()+","; } log.info(logInfo); } @Override public void run() { while (this != null) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } try { 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