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 | 122 +++++++++++++++++++---------------------
1 files changed, 59 insertions(+), 63 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 d3924bf..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;
@@ -22,46 +22,50 @@
private S7objectMachine s7objectMachine;
public static int thinness = 40;
public static int edgSpeed = 40;
- public static Long machineId = 6L;
+ //public static Long machineId = 6L;
public List<Map> sendRecords = new ArrayList<>();
+ public Machine thisMachine;
- public MachineMarking(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(machineId);
- if (s7objectMachine==null){
- s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", 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);
@@ -70,69 +74,61 @@
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(lengthOutOfService.getAddress(), tasking.getLength().intValue());
- s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());
+ s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y
+ s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());//x
s7objectMachine.plccontrol.writeWord(isMark.getAddress(), isMark_);
s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_);
s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1);
-
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String sendRecord=df.format(new Date())+" "+
- tasking.getScanId()+"-"+
- tasking.getProgramId()+"-"+
- tasking.getLength()+"-"+
- tasking.getWidth()+"-"+
- isMark_+"-"+
- isMarkingMode_;
- if (sendRecords.size()>7){
- sendRecords.remove(0);
- }
- Map sendContentMap=new HashMap();
- sendContentMap.put("sendContent",sendRecord);
- sendRecords.add(sendContentMap);
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