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/MachineMarking.java |  102 +++++++++++++++++++++++++++-----------------------
 1 files changed, 55 insertions(+), 47 deletions(-)

diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
index 50af765..80482aa 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineMarking.java
@@ -14,7 +14,7 @@
 import java.util.*;
 
 @Slf4j
-public class MachineMarking extends Thread{
+public class MachineMarking extends Thread {
 
 
     private MachineMapper machineMapper;
@@ -25,46 +25,47 @@
     //public static Long machineId = 6L;
     public List<Map> sendRecords = new ArrayList<>();
     public Machine thisMachine;
-    public MachineMarking(Machine machine,MachineMapper machineMapper, TaskingService taskingService){
+
+    public MachineMarking(Machine machine, MachineMapper machineMapper, TaskingService taskingService) {
         this.thisMachine = machine;
         this.machineMapper = machineMapper;
         this.taskingService = taskingService;
     }
 
-    public void plcStart() {
-            //Long machineId=12L;
-            Machine machine=machineMapper.selectById(thisMachine.getId());
-//            S7objectMachine s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500);
-//            s7objectMachine.start();
-            if (s7objectMachine==null){
-                s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1500);
-                s7objectMachine.start();
-            }
-            PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
-            PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
-            PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
-            PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
-            PlcParameterInfo isMark =plcParameterObject.getPlcParameter("isMark");//鍙戦�両D銆�0 涓嶆墦鏍囷紝1鏍囧噯妯″紡锛�2瀹氬埗妯″紡銆�
-            PlcParameterInfo drawingMark =plcParameterObject.getPlcParameter("drawingMark");//鎵撴爣鍥剧焊鍦板潃
-            PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length(OutOfService)");//闀�
-            PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width(OutOfService)");//瀹�
-            PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("markingMode");//
+    public void plcStart()throws Exception {
+        Machine machine = machineMapper.selectById(thisMachine.getId());
+        S7objectMachine s7objectMachine = new S7objectMachine(machine.getIp(), machine.getPort(), machine.getFileName(), EPlcType.S1500);
+        s7objectMachine.readData();//鎸夌収json鏂囦欢璇诲彇鍐呭
+        PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject;
+        if (plcParameterObject == null) {
+            s7objectMachine.plccontrol.closeS7client();
+            return;
+        }
+        try {
+            PlcParameterInfo plcRequest = plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛�
+            PlcParameterInfo plcRequestID = plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID
+            PlcParameterInfo mesSend = plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧
+            PlcParameterInfo isMark = plcParameterObject.getPlcParameter("isMark");//鍙戦�両D銆�0 涓嶆墦鏍囷紝1鏍囧噯妯″紡锛�2瀹氬埗妯″紡銆�
+            PlcParameterInfo drawingMark = plcParameterObject.getPlcParameter("drawingMark");//鎵撴爣鍥剧焊鍦板潃
+            PlcParameterInfo lengthOutOfService = plcParameterObject.getPlcParameter("length(OutOfService)");//闀�
+            PlcParameterInfo widthOutOfService = plcParameterObject.getPlcParameter("width(OutOfService)");//瀹�
+            PlcParameterInfo markingMode = plcParameterObject.getPlcParameter("markingMode");//
 
-            PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
-            PlcParameterInfo plcReportID =plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID
-            PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
-            PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
-            if (machine.getIsLog()>0){
+            PlcParameterInfo plcReport = plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛�
+            PlcParameterInfo plcReportID = plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID
+            PlcParameterInfo mesConfirm = plcParameterObject.getPlcParameter("mesConfirm");//纭瀛�
+            PlcParameterInfo mesConfirmID = plcParameterObject.getPlcParameter("mesConfirmID");//纭ID
+            if (machine.getIsLog() > 0) {
                 s7objectMachine.consoleLogInfo();
             }
-            if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) {
+            if ("0".equals(plcRequest.getValue()) && "1".equals(mesSend.getValue())) {
                 //鍙戦�佸瓧缃�0
                 log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}"
-                        ,markingMode.getValue()
-                        ,isMark.getValue()
-                        ,lengthOutOfService.getValue()
-                        ,widthOutOfService.getValue()
-                        ,mesSend.getValue());
+                        , markingMode.getValue()
+                        , isMark.getValue()
+                        , lengthOutOfService.getValue()
+                        , widthOutOfService.getValue()
+                        , mesSend.getValue());
                 //S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(),"");
                 s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), 0);
                 s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), 0);
@@ -73,34 +74,34 @@
                 s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0);
                 return;
             }
-            if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) {
+            if ("0".equals(plcReport.getValue()) && "1".equals(mesConfirm.getValue())) {
                 log.info("2.纭瀛楃疆闆�");
                 //鍙戦�佸瓧缃�0
                 s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 0);
                 return;
             }
-            if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){
-                int finishCount=taskingService.finishMachineTask(machine);
+            if ("1".equals(plcReport.getValue()) && "0".equals(mesConfirm.getValue())) {
+                int finishCount = taskingService.finishMachineTask(machine);
                 log.info("3銆佷换鍔″畬鎴�");
-                if(finishCount>0){//鏈変换鍔�
+                if (finishCount > 0) {//鏈変换鍔�
                     s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 1);
                     return;
                 }
                 return;
             }
-            List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔");
-            if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty()
-                    &&"寮�宸�".equals(machine.getState())
-                    &&taskingCount.size()<machine.getMaxTaskCount()){
-                Tasking tasking=taskingService.startMachineTask(machine);
-                if(tasking!=null){
+            List<Tasking> taskingCount = taskingService.findMachineWorkStateTask(machine, "姝e湪宸ヤ綔");
+            if ("1".equals(plcRequest.getValue()) && "0".equals(mesSend.getValue()) && !plcRequestID.getValue().isEmpty()
+                    && "寮�宸�".equals(machine.getState())
+                    && taskingCount.size() < machine.getMaxTaskCount()) {
+                Tasking tasking = taskingService.startMachineTask(machine);
+                if (tasking != null) {
                     //妯″紡锛�1瀹氬埗  0 鎵归噺      鏄惁鎵撴爣锛�0涓嶆墦鏍�   1鎵撴爣
-                    int isMark_=(tasking.getDrawingMarking()==null||tasking.getDrawingMarking().isEmpty())?0:1;
-                    int isMarkingMode_="瀹氬埗".equals(tasking.getTaskType()) ?1:0;
+                    int isMark_ = (tasking.getDrawingMarking() == null || tasking.getDrawingMarking().isEmpty()) ? 0 : 1;
+                    int isMarkingMode_ = "瀹氬埗".equals(tasking.getTaskType()) ? 1 : 0;
                     log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{},{}"
-                            ,tasking.getProgramId()
-                            ,tasking.getLength().intValue(),tasking.getWidth().intValue(),isMark_,isMarkingMode_,1);
-                    if(isMark_==1){
+                            , tasking.getProgramId()
+                            , tasking.getLength().intValue(), tasking.getWidth().intValue(), isMark_, isMarkingMode_, 1);
+                    if (isMark_ == 1) {
                         s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId());
                     }
                     s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y
@@ -111,16 +112,23 @@
                     return;
                 }
             }
+        } catch (Exception e) {
+            s7objectMachine.plccontrol.closeS7client();
+            log.info("閫昏緫澶勭悊寮傚父锛氳澶噄d銆恵}銆�", machine.getId());
         }
+
+    }
 
     @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