diff --git a/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java b/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java index 210912a..f38ed45 100644 --- a/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java +++ b/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java @@ -1,15 +1,22 @@ package com.fizz.business.comm.OPC; +import com.fizz.business.constants.enums.ExitCutTypeEnum; +import com.fizz.business.domain.msg.OpcMessage; import com.fizz.business.domain.msg.PdiSetup; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; import lombok.extern.log4j.Log4j2; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.Map; + +import static com.fizz.business.service.manager.OpcMessageIdsManager.pdiSetupIds; //@Service @Log4j2 @@ -18,15 +25,40 @@ public class OpcMessageSend { @Resource private MiloService miloService; - private void sendPdiSetup(PdiSetup pdiSetup) throws Exception { + private void sendPdiSetup(PdiSetup pdiSetup) { try { - List entities = new ArrayList<>(); + List entities = getWriteEntities(pdiSetup, pdiSetupIds); miloService.writeToOpcUa(entities); - - } catch (Exception e) { log.error("发送设定失败:{0}",e.getMessage()); } } + + private List getWriteEntities(OpcMessage msg, Map msgIds) { + List entities = new ArrayList<>(); + for (String key : msgIds.keySet()) { + String fieldName = msgIds.get(key); + Object value = null; + try { + // 获取OpcMessage类中对应字段的Field对象 + Field field = msg.getClass().getDeclaredField(fieldName); + // 设置可访问以处理私有字段 + field.setAccessible(true); + // 获取msg对象中该字段的值 + value = field.get(msg); + } catch (NoSuchFieldException | IllegalAccessException e) { + // 处理字段不存在或访问异常,可记录日志或设置默认值 + e.printStackTrace(); + return new ArrayList<>(); + } + + ReadWriteEntity entity = ReadWriteEntity.builder() + .identifier(key) + .value(value) + .build(); + entities.add(entity); + } + return entities; + } } diff --git a/business/src/main/java/com/fizz/business/domain/msg/PdiSetup.java b/business/src/main/java/com/fizz/business/domain/msg/PdiSetup.java index 5f28210..ea1baa2 100644 --- a/business/src/main/java/com/fizz/business/domain/msg/PdiSetup.java +++ b/business/src/main/java/com/fizz/business/domain/msg/PdiSetup.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Data @Schema(description = "设定电文") -public class PdiSetup { +public class PdiSetup extends OpcMessage{ @Schema(description = "钢卷号") private String coilId; diff --git a/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java index 252783f..ce6df0e 100644 --- a/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java +++ b/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java @@ -145,8 +145,4 @@ public class ModSetupResultServiceImpl extends ServiceImpl exitMoveIds = Maps.newHashMap(); public static Map exitMeasureIds = Maps.newHashMap(); + public static Map pdiSetupIds = Maps.newHashMap(); + public static String DEVICE_NAME = "ns=2;s=通道 1."; @PostConstruct @@ -45,6 +47,7 @@ public class OpcMessageIdsManager { loadProcLineMeasureIds(); loadFurLineMeasureIds(); loadExitLineMeasureIds(); + loadPdiSetupIds(); } @@ -329,6 +332,61 @@ public class OpcMessageIdsManager { exitLineMeasureIds.put("ns=2;s=通道 1.PLCLine.ExitLineMeasure.coilLength", "coilLength"); } + public static void loadPdiSetupIds(){ + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.coilId", "coilId"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.PORFlag", "PORFlag"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.counter", "counter"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilWeight", "entryCoilWeight"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilLength", "entryCoilLength"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilWidth", "entryCoilWidth"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilThick", "entryCoilThick"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilInnerDia", "entryCoilInnerDia"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.entryCoilOuterDia", "entryCoilOuterDia"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.alloyCode", "alloyCode"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.steelGrade", "steelGrade"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.splitNum", "splitNum"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength1", "exitLength1"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength2", "exitLength2"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength3", "exitLength3"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength4", "exitLength4"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength5", "exitLength5"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.exitLength6", "exitLength6"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionPorBR1", "tensionPorBR1"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR1BR2", "tensionBR1BR2"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR2BR3", "tensionBR2BR3"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR3", "tensionBR3"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionFur1", "tensionFur1"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionFur2", "tensionFur2"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR4BR5", "tensionBR4BR5"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.aimCoatingWeightTop", "aimCoatingWeightTop"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.aimCoatingWeightBottom", "aimCoatingWeightBottom"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMFlag", "TMFlag"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMType", "TMType"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMMode", "TMMode"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR5BR6", "tensionBR5BR6"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR5TM", "tensionBR5TM"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionTMBR6", "tensionTMBR6"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMElongation", "TMElongation"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMRollforce", "TMRollforce"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TMBendforce", "TMBendforce"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.ACRMesh", "ACRMesh"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.BRMesh", "BRMesh"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TLFlag", "TLFlag"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.TLElongation", "TLElongation"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR6BR7", "tensionBR6BR7"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionTLBR7","tensionTLBR7"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.LevelingMesh1","LevelingMesh1"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.LevelingMesh2","LevelingMesh2"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.AntiCrossBowUnitMesh","AntiCrossBowUnitMesh"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR7BR8","tensionBR7BR8"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.chromatingFlag","chromatingFlag"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.chromatingCode","chromatingCode"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR8BR9","tensionBR8BR9"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.tensionBR9TR","tensionBR9TR"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.oilingFlag","oilingFlag"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.oilingAmountTop","oilingAmountTop"); + pdiSetupIds.put("ns=2;s=通道 1.PLCLine.L2Setup.oilingAmountBottom","oilingAmountBottom"); + } public static void loadMsgTriggers(){ msgTriggers.add(DEVICE_NAME+entryMoveIds.get("trigger"));