From 8d58c40af40493bd5f066cbfdb1ffd9f113c22fc Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期三, 03 九月 2025 16:37:21 +0800
Subject: [PATCH] 1.前端推数据使用了最新的webSokect客户现场总是掉线,修改为接口方式 2.设备交互整体增加异常处理以及PLC连接方式改为短连接
---
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java | 195 +++++++++++++++++++++++++-----------------------
1 files changed, 103 insertions(+), 92 deletions(-)
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
index d93d27d..68abf6d 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineRotate.java
@@ -14,7 +14,7 @@
import java.util.*;
@Slf4j
-public class MachineRotate extends Thread{
+public class MachineRotate extends Thread {
private MachineMapper machineMapper;
@@ -24,112 +24,121 @@
public List<Map> sendRecords = new ArrayList<>();
public Machine thisMachine;
- public MachineRotate(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+ public MachineRotate(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
this.thisMachine = machine;
this.machineMapper = machineMapper;
this.taskingService = taskingService;
}
- public void plcStart() {
+
+ public void plcStart() throws Exception {
//鏃嬭浆鍙�
- //Long machineId=20L;
- Machine machine=machineMapper.selectById(thisMachine.getId());
- if (s7objectMachine==null){
- s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200);
- s7objectMachine.start();
- }
+ Machine machine = machineMapper.selectById(thisMachine.getId());
+ S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1200);
+ s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
- PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
- PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
- PlcParameterInfo plcRequestType =plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
-
- PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
- PlcParameterInfo mesSendId =plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
- PlcParameterInfo length =plcParameterObject.getPlcParameter("length");//闀�
- PlcParameterInfo width =plcParameterObject.getPlcParameter("width");//瀹�
- PlcParameterInfo rotateType =plcParameterObject.getPlcParameter("rotateType");//鏃嬭浆绫诲瀷
-
- PlcParameterInfo mesSendType =plcParameterObject.getPlcParameter("mesSendType");// 鎵爜1 涓嶆壂鐮�2
- String scan_id="";
- if (machine.getIsLog()>0){
- s7objectMachine.consoleLogInfo();
- }
- if ("0".equals(plcRequestType.getValue())&&!"0".equals(mesSendType.getValue())) {
- //鍙戦�佸瓧缃�0
- log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0",mesSendType.getValue());
- s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
+ if (plcParameterObject == null) {
+ s7objectMachine.plccontrol.closeS7client();
return;
}
- if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) {
- //鍙戦�佸瓧缃�0
- int finishCount=taskingService.finishMachineTask(machine);
- nullMachine(machine);
- log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
- ,finishCount
- ,length.getValue()
- ,width.getValue()
- ,mesSendId.getValue()
- ,mesSend.getValue());
- s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
- s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
- s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
- s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 0);
- s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+ try {
- return;
- }
- if ("1".equals(plcRequestType.getValue())&&"0".equals(mesSendType.getValue())) {
- //鍙戦�佺被鍨� 1鎵爜 2涓嶆壂鐮�
- int type=machine.getMode()==1?2:1;
- log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}",mesSendType.getValue());
- s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
- return;
- }
- List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
- if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())
- &&"寮�宸�".equals(machine.getState())
- &&taskingCount.size()<machine.getMaxTaskCount()){
- Tasking tasking;
- if(machine.getMode()==1){
- //鏍囧噯妯″紡
- tasking=taskingService.startMachineTask(machine);
- }else{
- //瀹氬埗妯″紡
- String PlcRequestID_=plcRequestID.getValue();
- scan_id= PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",")+1);
- //鏍囪褰撳墠宸ュ簭 浠ュ墠鐨勭幓鐠� 鐩存帴鍒板綋鍓嶅伐搴�
- tasking=taskingService.startScanIdMachineTask(machine,scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣炕鐗囧彴鎵爜鍚庡埌鏃嬭浆鍙扮殑鏁版嵁
+ PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+ PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
+ PlcParameterInfo plcRequestType = plcParameterObject.getPlcParameter("plcRequestType");//PLC璇锋眰
+
+ PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+ PlcParameterInfo mesSendId = plcParameterObject.getPlcParameter("mesSendID");//鍙戦�両D
+ PlcParameterInfo length = plcParameterObject.getPlcParameter("length");//闀�
+ PlcParameterInfo width = plcParameterObject.getPlcParameter("width");//瀹�
+ PlcParameterInfo rotateType = plcParameterObject.getPlcParameter("rotateType");//鏃嬭浆绫诲瀷
+
+ PlcParameterInfo mesSendType = plcParameterObject.getPlcParameter("mesSendType");// 鎵爜1 涓嶆壂鐮�2
+ String scan_id = "";
+ if (machine.getIsLog() > 0) {
+ s7objectMachine.consoleLogInfo();
}
- if(tasking!=null){
- log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
- ,tasking.getGlassId(),tasking.getProgramId()
- ,tasking.getLength().intValue(),tasking.getWidth().intValue(),1);
- s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
- s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
- s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
- s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), machine.getRotateMode());
- s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String sendRecord=df.format(new Date())+" "+
- tasking.getGlassId()+"-"+
- tasking.getLength()+"-"+
- tasking.getWidth();
- if (sendRecords.size()>7){
- sendRecords.remove(0);
- }
+ if ("0".equals(plcRequestType.getValue()) && !"0".equals(mesSendType.getValue())) {
+ //鍙戦�佸瓧缃�0
+ log.info("1.鍙戦�佺被鍨嬪瓧缃浂,娓呴櫎涓婃鍙戦�佺殑绫诲瀷鏁版嵁{}->0", mesSendType.getValue());
+ s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0);
+ return;
+ }
+ if ("0".equals(plcRequest.getValue()) && !"0".equals(mesSend.getValue())) {
+ //鍙戦�佸瓧缃�0
+ int finishCount = taskingService.finishMachineTask(machine);
nullMachine(machine);
- Map sendContentMap=new HashMap();
- sendContentMap.put("sendContent",sendRecord);
- sendRecords.add(sendContentMap);
- }else if(!scan_id.isEmpty()){
- taskingService.scanMachineAdd(machine,scan_id);
+ log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
+ , finishCount
+ , length.getValue()
+ , width.getValue()
+ , mesSendId.getValue()
+ , mesSend.getValue());
+ s7objectMachine.plccontrol.writeWord(length.getAddress(), 0);
+ s7objectMachine.plccontrol.writeWord(width.getAddress(), 0);
+ s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0);
+ s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 0);
+ s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
+
+ return;
}
- }else if("0".equals(plcRequest.getValue())){
- nullMachine(machine);
+ if ("1".equals(plcRequestType.getValue()) && "0".equals(mesSendType.getValue())) {
+ //鍙戦�佺被鍨� 1鎵爜 2涓嶆壂鐮�
+ int type = machine.getMode() == 1 ? 2 : 1;
+ log.info("3.鍙戦�佺被鍨嬫暟鎹�0->{}", mesSendType.getValue());
+ s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type);
+ return;
+ }
+ List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+ if ("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue())
+ && "寮�宸�".equals(machine.getState())
+ && taskingCount.size() < machine.getMaxTaskCount()) {
+ Tasking tasking;
+ if (machine.getMode() == 1) {
+ //鏍囧噯妯″紡
+ tasking = taskingService.startMachineTask(machine);
+ } else {
+ //瀹氬埗妯″紡
+ String PlcRequestID_ = plcRequestID.getValue();
+ scan_id = PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",") + 1);
+ //鏍囪褰撳墠宸ュ簭 浠ュ墠鐨勭幓鐠� 鐩存帴鍒板綋鍓嶅伐搴�
+ tasking = taskingService.startScanIdMachineTask(machine, scan_id);//涓嶇椤哄簭锛岀洿鎺ユ壘浠庣炕鐗囧彴鎵爜鍚庡埌鏃嬭浆鍙扮殑鏁版嵁
+ }
+ if (tasking != null) {
+ log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{}"
+ , tasking.getGlassId(), tasking.getProgramId()
+ , tasking.getLength().intValue(), tasking.getWidth().intValue(), 1);
+ s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue());
+ s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue());
+ s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString());
+ s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), machine.getRotateMode());
+ s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String sendRecord = df.format(new Date()) + " " +
+ tasking.getGlassId() + "-" +
+ tasking.getLength() + "-" +
+ tasking.getWidth();
+ if (sendRecords.size() > 7) {
+ sendRecords.remove(0);
+ }
+ nullMachine(machine);
+ Map sendContentMap = new HashMap();
+ sendContentMap.put("sendContent", sendRecord);
+ sendRecords.add(sendContentMap);
+ } else if (!scan_id.isEmpty()) {
+ taskingService.scanMachineAdd(machine, scan_id);
+ }
+ } else if ("0".equals(plcRequest.getValue())) {
+ nullMachine(machine);
+ }
+ } catch (Exception e) {
+ s7objectMachine.plccontrol.closeS7client();
+ log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
}
}
+
public void nullMachine(Machine machine) {
- if (!"".equals(machine.getRemark())){
+ if (!"".equals(machine.getRemark())) {
machine.setRemark("");
machineMapper.updateById(machine);
}
@@ -137,12 +146,14 @@
@Override
public void run() {
- while (this != null) {
+ while (true) {
try {
Thread.sleep(1000);
plcStart();
} catch (InterruptedException e) {
e.printStackTrace();
+ }catch (Exception e) {
+ log.info("{}", e.getMessage());
}
}
}
--
Gitblit v1.8.0