From 6c9369ab9b7da99687857004470e8d7824eb69ae Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 03 九月 2025 08:02:00 +0800
Subject: [PATCH] 修改plc连接读取失败导致无法重新链接
---
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java | 124 ++++++++++++++++++++++------------------
1 files changed, 68 insertions(+), 56 deletions(-)
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
index 0234a10..c5ae0d7 100644
--- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/plcTaskThread/MachineLoad.java
@@ -20,7 +20,7 @@
import java.util.Map;
@Slf4j
-public class MachineLoad extends Thread{
+public class MachineLoad extends Thread {
TaskingMapper taskingMapper;
@@ -36,7 +36,8 @@
public Machine thisMachine;
//public Long machineId = 2L;
public List<Map> sendRecords = new ArrayList<>();
- public MachineLoad(Machine machine,PrimitiveTaskMapper primitiveTaskMapper,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){
+
+ public MachineLoad(Machine machine, PrimitiveTaskMapper primitiveTaskMapper, TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService) {
this.thisMachine = machine;
this.primitiveTaskMapper = primitiveTaskMapper;
this.taskingMapper = taskingMapper;
@@ -45,70 +46,76 @@
this.primitiveTaskService = primitiveTaskService;
this.lineConfigurationService = lineConfigurationService;
}
+
public void plcStart() {
- Machine machine=machineMapper.selectById(thisMachine.getId());
- ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName());
- modbusTcp1.connect();
- PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement(machine.getFileName());
+ ModbusTcp modbusTcp1 = null;
try {
- if(!modbusTcp1.read(plcAgreement)){
+ Machine machine = machineMapper.selectById(thisMachine.getId());
+ modbusTcp1 = new ModbusTcp(machine.getIp(), machine.getPort(), machine.getFileName());
+ if (!modbusTcp1.connect()) {
+ log.error("杩炴帴PLC澶辫触锛岄��鍑烘湰娆℃搷浣�");
+ return;
+ }
+ PlcAgreement plcAgreement = modbusTcp1.getPlcAgreement(machine.getFileName());
+
+ if (!modbusTcp1.read(plcAgreement)) {
log.info("閫氳璇诲彇鏂版暟鎹け璐�");
- if(!"鍏虫満".equals(machine.getStatePowerOn())){
+ if (!"鍏虫満".equals(machine.getStatePowerOn())) {
machine.setStatePowerOn("鍏虫満");
machineMapper.updateById(machine);
}
modbusTcp1.close();
return;
}
- if(!"寮�鏈�".equals(machine.getStatePowerOn())){
+ if (!"寮�鏈�".equals(machine.getStatePowerOn())) {
machine.setStatePowerOn("寮�鏈�");
machineMapper.updateById(machine);
}
- PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
- PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
- PlcParameter mesSendCount =plcAgreement.getPlcParameter("mesSendCount");//鍙戦�佹暟閲�
+ PlcParameter plcRequest = plcAgreement.getPlcParameter("plcRequest");//璇锋眰瀛�
+ PlcParameter mesSend = plcAgreement.getPlcParameter("mesSend");//鍙戦�佸瓧
+ PlcParameter mesSendCount = plcAgreement.getPlcParameter("mesSendCount");//鍙戦�佹暟閲�
- PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
- PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
- PlcParameter mesConfirm =plcAgreement.getPlcParameter("mesConfirm");//纭瀛�
- PlcParameter mesConfirmID =plcAgreement.getPlcParameter("mesConfirmID");//纭ID
- if (machine.getIsLog()>0){
+ PlcParameter plcReport = plcAgreement.getPlcParameter("plcReport");//姹囨姤瀛�
+ PlcParameter plcReportID = plcAgreement.getPlcParameter("plcReportID");//姹囨姤ID
+ PlcParameter mesConfirm = plcAgreement.getPlcParameter("mesConfirm");//纭瀛�
+ PlcParameter mesConfirmID = plcAgreement.getPlcParameter("mesConfirmID");//纭ID
+ if (machine.getIsLog() > 0) {
modbusTcp1.consoleLogInfo(plcAgreement);
}
- if (0==plcRequest.getValueInt()&&1==mesSend.getValueInt()) {
+ if (0 == plcRequest.getValueInt() && 1 == mesSend.getValueInt()) {
//鍙戦�佸瓧缃�0
- String send= HexUtil.intTo2ByteHex(0);
- modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
- log.info("1.鍙戦�佸瓧缃浂 鍙戦�佸瓧 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
+ String send = HexUtil.intTo2ByteHex(0);
+ modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesSend.getAddressStart() / 2));
+ log.info("1.鍙戦�佸瓧缃浂 鍙戦�佸瓧 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesSend.getAddressStart()));
modbusTcp1.close();
return;
}
- if (0==plcReport.getValueInt()&&0!=mesConfirm.getValueInt()) {
+ if (0 == plcReport.getValueInt() && 0 != mesConfirm.getValueInt()) {
//纭瀛楃疆闆�
- String send=HexUtil.intTo2ByteHex(0);
- modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/2));
- log.info("2.纭瀛楃疆闆� 浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
+ String send = HexUtil.intTo2ByteHex(0);
+ modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
+ log.info("2.纭瀛楃疆闆� 浠诲姟瀹屾垚 娓呯┖鎴愬姛锛涘唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
modbusTcp1.close();
return;
}
- if(1==plcReport.getValueInt()&&0==mesConfirm.getValueInt()){
- int finishCount=plcReportID.getValueInt();
- if(finishCount>0) {//鏈変换鍔�
- if(machine.getMode()==1){
+ if (1 == plcReport.getValueInt() && 0 == mesConfirm.getValueInt()) {
+ int finishCount = plcReportID.getValueInt();
+ if (finishCount > 0) {//鏈変换鍔�
+ if (machine.getMode() == 1) {
//鏍囧噯妯″紡 鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
- LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
- List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
- for(PrimitiveTask primitiveTask:findPrimitiveTasking){
- primitiveTask.setLoadCount(primitiveTask.getLoadCount()+1);
+ LineConfiguration lineConfiguration = lineConfigurationService.machineLineConfiguration(machine);
+ List<PrimitiveTask> findPrimitiveTasking = primitiveTaskService.findPrimitiveTasking(machine, lineConfiguration.getLineId());
+ for (PrimitiveTask primitiveTask : findPrimitiveTasking) {
+ primitiveTask.setLoadCount(primitiveTask.getLoadCount() + 1);
primitiveTaskMapper.updateById(primitiveTask);
break;
}
- }else if(machine.getMode()==3){
- machine.setFinshCount(machine.getFinshCount()+plcReportID.getValueInt());
+ } else if (machine.getMode() == 3) {
+ machine.setFinshCount(machine.getFinshCount() + plcReportID.getValueInt());
machineMapper.updateById(machine);
}
String send = HexUtil.intTo2ByteHex(1);
- modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/ 2));
+ modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2));
log.info("浠诲姟瀹屾垚 鎴愬姛 鍐呭锛歿},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()));
modbusTcp1.close();
return;
@@ -119,41 +126,46 @@
modbusTcp1.close();
return;
}
- if((1==plcRequest.getValueInt()&&0==mesSend.getValueInt())
- &&"寮�宸�".equals(machine.getState())){
- int loadCount=0;
- if(machine.getMode()==1){
+ if ((1 == plcRequest.getValueInt() && 0 == mesSend.getValueInt())
+ && "寮�宸�".equals(machine.getState())) {
+ int loadCount = 0;
+ if (machine.getMode() == 1) {
//鏍囧噯妯″紡 鎵惧凡棰嗗彇鏈畬鎴愮殑绗竴鏉′换鍔�
- LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine);
- List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId());
- for(PrimitiveTask primitiveTask:findPrimitiveTasking){
+ LineConfiguration lineConfiguration = lineConfigurationService.machineLineConfiguration(machine);
+ List<PrimitiveTask> findPrimitiveTasking = primitiveTaskService.findPrimitiveTasking(machine, lineConfiguration.getLineId());
+ for (PrimitiveTask primitiveTask : findPrimitiveTasking) {
//浠诲姟鏁�-宸蹭笂鏁伴噺>0 杩斿洖1
- if((primitiveTask.getTaskQuantity()-primitiveTask.getLoadCount())>0){
- loadCount=1;
+ if ((primitiveTask.getTaskQuantity() - primitiveTask.getLoadCount()) > 0) {
+ loadCount = 1;
}
break;
}
- }else if(machine.getMode()==2){
+ } else if (machine.getMode() == 2) {
//瀹氬埗妯″紡
- loadCount=1;
- }else if (machine.getMode()==3){
- loadCount=machine.getTaskCount()-machine.getFinshCount();
- loadCount=(loadCount>0?1:0);
+ loadCount = 1;
+ } else if (machine.getMode() == 3) {
+ loadCount = machine.getTaskCount() - machine.getFinshCount();
+ loadCount = (loadCount > 0 ? 1 : 0);
}
- if(loadCount>0){
- log.info("4銆佸彂閫佷换鍔� 浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ",loadCount,machine);
- String send=HexUtil.intTo2ByteHex(1)+ HexUtil.intTo2ByteHex(loadCount);
- modbusTcp1.writeString(send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
- log.info("鍙戦�佷换鍔″彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}",send,HexUtil.intTo2ByteHex(mesSend.getAddressStart()/2));
+ if (loadCount > 0) {
+ log.info("4銆佸彂閫佷换鍔� 浠诲姟鏁版嵁锛歿}, 璁惧鐘舵��:{}, ", loadCount, machine);
+ String send = HexUtil.intTo2ByteHex(1) + HexUtil.intTo2ByteHex(loadCount);
+ modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesSend.getAddressStart() / 2));
+ log.info("鍙戦�佷换鍔″彂閫佹姤鏂囧唴瀹癸細{},鍙戦�佽捣濮嬪湴鍧�:{}", send, HexUtil.intTo2ByteHex(mesSend.getAddressStart() / 2));
modbusTcp1.close();
return;
}
}
} catch (Exception e) {
log.info("浜や簰閫昏緫閿欒");
+ } finally {
+ // 纭繚杩炴帴鍏抽棴
+ if (modbusTcp1 != null) {
+ modbusTcp1.close();
+ }
}
- modbusTcp1.close();
}
+
@Override
public void run() {
while (this != null) {
--
Gitblit v1.8.0