From ad2f0021e67b296b2f6df0cefc624b4482f6a401 Mon Sep 17 00:00:00 2001 From: quowingwang Date: Sat, 24 Jan 2026 10:29:47 +0800 Subject: [PATCH] =?UTF-8?q?PLC=E8=8E=B7=E5=8F=96=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RIZO.Admin.WebApi/PLC/Service/PlcService.cs | 50 ++++++++++----------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/RIZO.Admin.WebApi/PLC/Service/PlcService.cs b/RIZO.Admin.WebApi/PLC/Service/PlcService.cs index 8f3c2f9..eb4c0b0 100644 --- a/RIZO.Admin.WebApi/PLC/Service/PlcService.cs +++ b/RIZO.Admin.WebApi/PLC/Service/PlcService.cs @@ -300,11 +300,6 @@ namespace RIZO.Admin.WebApi.PLC.Service if (slot < 0 || slot > 4) return (false, null, $"PLC槽位号{slot}无效(有效值0-4)"); - // 仅放行指定工位,防止非法请求 - var supportedPlcs = new HashSet { "OP070-1", "OP080" }; - if (!supportedPlcs.Contains(plcName)) - return (false, null, $"仅支持OP070-1/OP080,当前工位:{plcName}"); - Plc plc = null; bool isConnReused = false; var poolKey = $"{ip}_{rack}_{slot}_{cpuType}"; @@ -361,39 +356,40 @@ namespace RIZO.Admin.WebApi.PLC.Service return (false, null, $""); } + //给PLC返回数据 if (iQueryRequest == 1) { } - // 5. 多工位专属数据读取(预留扩展,逻辑隔离) - if (plcName == "OP070-1") + if (iSaveRequest == 1) { - if (iSaveRequest == 1) + // 5. 多工位专属数据读取(预留扩展,逻辑隔离) + if (plcName == "OP070-1" || plcName == "OP070-2" || plcName == "OP070-3" || plcName == "OP075") { prodData = await ReadOP070_1DataAsync(plc, ip, plcName); } - } - else if (plcName == "OP080") - { - //prodData = await ReadOP080DataAsync(plc, ip); - } + else if (plcName == "OP080") + { + //prodData = await ReadOP080DataAsync(plc, ip); + } - // 6. 统一空值兜底(避免空引用) - if (prodData != null) - { - prodData.QualificationFlag ??= "0"; - prodData.ReworkFlag ??= "0"; - prodData.ProductionCycle ??= 0; + // 6. 统一空值兜底(避免空引用) + if (prodData != null) + { + prodData.QualificationFlag ??= "0"; + prodData.ReworkFlag ??= "0"; + prodData.ProductionCycle ??= 0; - // 7. 异步保存数据(日志补充PLC名称,便于定位) - _ = Task.Run(() => _plcProductionDataService.AddPlcProductionData(prodData)) - .ContinueWith(t => - { - if (t.IsFaulted) + // 7. 异步保存数据(日志补充PLC名称,便于定位) + _ = Task.Run(() => _plcProductionDataService.AddPlcProductionData(prodData)) + .ContinueWith(t => { - Console.WriteLine($"{plcName}({ip})数据保存失败:{t.Exception?.InnerException?.Message}"); - } - }); + if (t.IsFaulted) + { + Console.WriteLine($"{plcName}({ip})数据保存失败:{t.Exception?.InnerException?.Message}"); + } + }); + } } // 8. 个性化返回消息(区分工位和连接类型)